Studio suggests as you type, like a code editor: a list at the caret for {{ }} values and code, and AI ghost text (grey text you take with Tab) in code, prompts and long text fields. Both know the node you're on: the items it got in the last run, the nodes before and after it, their Parameters and Settings, its last error, requests and log lines.
In a text field
Every field that takes {{ }} (text, prompts, JSON, a node's Settings like Compare, and campaign option values) has the list.
| You type | The list shows |
|---|---|
{{ | It closes itself ({{ │ }}) and lists the roots: item, nodes, input, option, vars, brand, run, flow, now, today, random: |
item. · nodes.Search.output. | The keys from the last run (or the pinned data), with their kind (abc, 123, list, {}); a node that hasn't run offers its schema's keys. Nodes show by name and insert their id, so renaming a node keeps working |
| | The helpers, each with a short description and an example (truncate:100) |
default: | The helper's arguments |
| A plain word (3 letters on) | Values whose name starts with it: tex → {{ item.text }} |
- ↑ ↓ move, Tab inserts, Enter inserts inside
{{ }}(outside, only after you moved with the arrows, so Enter still makes a new line), Esc closes the list until you leave that word. - The bottom of the list shows what the
{{ }}under the caret gives now (from the last run), or a warning when its path isn't in the last run. - The { } button in the field's corner inserts
{{ }}at the caret.
See Expressions for every root and helper.
In code
Code fields (the Code node, Run script, an AI agent's code tool) and My nodes scripts use a code editor with:
- IntelliSense:
ctx.lists the runtime SDK (page,tabs,log,intervention…), with hover docs and parameter hints;ctx.page.is Patchright's page.item(orctx.item) is typed from the item it got in the last run, soitem.lists its real keys;ctx.nodesfrom every earlier node's output. - Snippets:
return item,ctx.intervention,ctx.tabs.open,ctx.log,fetch json. - Script nodes start as
export default async (ctx: Ctx): Promise<FlowResult> => { … }. A script isn't on the canvas itself: it takes its item and neighbors from the first place it's used in the open flow. - Python code gets its globals (
item,index,items) and the item's keys. - In the Code node,
itemisnullwhen Mode is all (it runs once for every item): useitemsthere.
AI ghost text
When it's on (Settings › Studio), a pause in typing asks the AI what comes next and shows it in grey:
- Tab takes it, Ctrl/Cmd + → one word; keep typing and it follows what you type. In code, Alt + \ asks right away instead of waiting for a pause.
- In code it appears anywhere except mid-word and in comments; in prompts and long text fields at the end of a line.
- Only people who can edit the flow get suggestions.
Turn it on
- Add an AI key in Dataset › AI (DeepSeek fills in the middle natively and is the fastest; OpenAI works through a short chat).
- Open Settings › Studio, switch on Suggest as you type, pick the key and, if you like, a small fast model (
deepseek-chat,gpt-5-mini). Owners and admins change it.
What's sent: the text around the caret and the node's context. Values whose key sounds secret (passwords, tokens, keys, cookies) are masked, long values and lists are cut, and request URLs lose their token parameters. Accounts and credentials are never sent, only their ids.