This catalog is generated from src/types/nodes.ts by npm run docs:llms.
It is the stable AI-readable companion to docs/workflow-authoring-skill.md.
Workflows are authored as one JSON document: {"flow_name", "nodes": [...], "edges": ["node.pin -> node.pin", ...]}. Each document node uses type matching the value shown here; if several visible palette entries share a type, set template to the exact variant label shown in the document node snippet.
A pin marked [type T] shares one type with the other [type T] pins of its node (Compare's a and b): the type comes from what is wired to them. A pin default on such a pin is stored with that type, so give a JSON number (5) where the peer carries a number and a JSON string ("5") only where it carries text; with nothing wired, a typed value is text.
- Node type:
literal_json - Document node:
{"id":"<unique_id>","type":"literal_json","template":"Artifact"} - Utility: Saved artifact reference object for any runtime-owned file or payload. Use this with Read Artifact or artifact-aware media/file nodes.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Artifact"; literal value withliteral - Inputs: none
- Outputs:
valueartifact (artifact) - Default config: none
- Node type:
literal_json - Document node:
{"id":"<unique_id>","type":"literal_json","template":"Image Artifact"} - Utility: Saved artifact reference object for an image artifact. Wire this into Edit Image image_artifact or mask_artifact.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Image Artifact"; literal value withliteral - Inputs: none
- Outputs:
valueartifact_image (image_artifact) - Default config: { "literalValue": { "$artifact": "", "content_type": "image/png", "modality": "image" } }
- Node type:
literal_json - Document node:
{"id":"<unique_id>","type":"literal_json","template":"Music Artifact"} - Utility: Saved artifact reference object for a music/audio artifact.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Music Artifact"; literal value withliteral - Inputs: none
- Outputs:
valueartifact_audio (music_artifact) - Default config: { "literalValue": { "$artifact": "", "content_type": "audio/wav", "modality": "music" } }
- Node type:
literal_json - Document node:
{"id":"<unique_id>","type":"literal_json","template":"Text Artifact"} - Utility: Saved artifact reference object for a text/plain artifact. Paste an uploaded, imported, or generated artifact id into $artifact.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Text Artifact"; literal value withliteral - Inputs: none
- Outputs:
valueartifact_text (text_artifact) - Default config: { "literalValue": { "$artifact": "", "content_type": "text/plain", "modality": "text" } }
- Node type:
literal_json - Document node:
{"id":"<unique_id>","type":"literal_json","template":"Video Artifact"} - Utility: Saved artifact reference object for a video artifact.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Video Artifact"; literal value withliteral - Inputs: none
- Outputs:
valueartifact_video (video_artifact) - Default config: { "literalValue": { "$artifact": "", "content_type": "video/mp4", "modality": "video" } }
- Node type:
literal_json - Document node:
{"id":"<unique_id>","type":"literal_json","template":"Voice Artifact"} - Utility: Saved artifact reference object for a speech/audio artifact.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Voice Artifact"; literal value withliteral - Inputs: none
- Outputs:
valueartifact_audio (voice_artifact) - Default config: { "literalValue": { "$artifact": "", "content_type": "audio/wav", "modality": "voice" } }
- Node type:
and - Document node:
{"id":"<unique_id>","type":"and"} - Utility: Logical AND.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
aboolean;bboolean - Outputs:
resultboolean - Default config: none
- Node type:
compare - Document node:
{"id":"<unique_id>","type":"compare"} - Utility: Compare a and b using operator op (==, !=, <, <=, >, >=); no operator set compares with ==.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
aany [type T];opstring: The operator: ==, !=, >, >=, <, <= (not set: ==).;bany [type T] - Outputs:
resultboolean - Default config: none
- Node type:
for - Document node:
{"id":"<unique_id>","type":"for"} - Utility: Numeric loop from start to end with step. Outputs i and a 0-based index.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;startnumber;endnumber;stepnumber - Outputs:
loopexecution;doneexecution;inumber;indexnumber - Default config: none
- Node type:
if - Document node:
{"id":"<unique_id>","type":"if"} - Utility: Branch execution based on a boolean condition.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;conditionboolean - Outputs:
trueexecution;falseexecution - Default config: none
- Node type:
loop_limit - Document node:
{"id":"<unique_id>","type":"loop_limit"} - Utility: Put it on the path that repeats: lets execution through again at most max times, then takes limit reached. count is the number of passes so far (1, 2, 3...).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;maxnumber: How many passes are allowed. - Outputs:
againexecution;limit_reachedexecution (limit reached);countnumber: Passes so far, this one included. - Default config: { "pinDefaults": { "max": 3 } }
- Node type:
loop - Document node:
{"id":"<unique_id>","type":"loop"} - Utility: Iterate over an array. Outputs current item and 0-based index.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;itemsarray - Outputs:
loopexecution;doneexecution;itemany;indexnumber - Default config: none
- Node type:
not - Document node:
{"id":"<unique_id>","type":"not"} - Utility: Logical NOT.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
valueboolean - Outputs:
resultboolean - Default config: none
- Node type:
or - Document node:
{"id":"<unique_id>","type":"or"} - Utility: Logical OR.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
aboolean;bboolean - Outputs:
resultboolean - Default config: none
- Node type:
parallel - Document node:
{"id":"<unique_id>","type":"parallel"} - Utility: Run multiple branches concurrently and emit Completed when all finish.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults; branch count withbranch_count - Inputs:
exec-inexecution - Outputs:
then:0execution (Then 0);then:1execution (Then 1);completedexecution (Completed) - Default config: none
- Node type:
sequence - Document node:
{"id":"<unique_id>","type":"sequence"} - Utility: Run multiple branches in order (Then 0, Then 1, ...).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults; branch count withbranch_count - Inputs:
exec-inexecution - Outputs:
then:0execution (Then 0);then:1execution (Then 1) - Default config: none
- Node type:
switch - Document node:
{"id":"<unique_id>","type":"switch"} - Utility: Branch execution by matching a string value to configured cases (default branch always exists).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults; cases withswitch_cases - Inputs:
exec-inexecution;valuestring - Outputs:
defaultexecution - Default config: { "switchConfig": { "cases": [] } }
- Node type:
while - Document node:
{"id":"<unique_id>","type":"while"} - Utility: Loop while condition is true. Outputs a pass-through item and a 0-based iteration index.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;conditionboolean - Outputs:
loopexecution;doneexecution;itemany;indexnumber - Default config: none
- Node type:
add_message - Document node:
{"id":"<unique_id>","type":"add_message"} - Utility: Append a canonical message to the run active context (context.messages).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;rolestring: Message role (e.g. user, assistant, system, tool).;contentstring: Message content. - Outputs:
exec-outexecution;messageobject: Message object {role, content, timestamp, metadata.message_id}.;contextobject: Updated active context object (run.vars.context).;taskstring: Convenience output for context.task.;messagesarray: Updated context.messages list. - Default config: none
- Node type:
agent - Document node:
{"id":"<unique_id>","type":"agent"} - Utility: Run an agent (ReAct) that can call tools. Outputs response, success, meta, and a runtime scratchpad.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;use_contextboolean: When true, include this run's active context messages (context.messages) as agent history. If the pin is not connected, the node checkbox is used. Default: false.;contextobject: Optional explicit context object for the agent (e.g. {messages:[...]}). If provided, context.messages overrides the inherited run context messages.;memorymemory: Memory configuration object (KG/span/session controls). If set, overrides this node’s recall/ingest behavior; if unset, runtime defaults apply.;providerprovider_text: Text/LLM provider id (e.g. LMStudio). If unset, uses the node’s configured provider.;modelmodel: Text/LLM model id/name. If unset, uses the node’s configured model.;systemstring: Optional system prompt for this agent instance (high priority instructions).;promptstring: User prompt/task string for the agent to solve.;toolstools: Allowlist of tool names this agent can call (defense-in-depth; runtime still enforces allowlists).;prompt_cache_bindingany: Advanced: durable exact-reuse prompt-cache binding from Gateway blocs. Accepts a binding object or binding_id string; this does not create or load blocs during the run.;max_iterationsnumber: Maximum internal ReAct iterations (safety cap). Higher values allow more tool-use steps.;max_in_tokensnumber: Optional per-agent input token budget (max_input_tokens). When set, overrides the run's default _limits.max_input_tokens for the agent sub-run.;max_output_tokensnumber: Optional output token cap for the agent sub-run (max_output_tokens). When set, bounds each LLM response the agent generates.;temperaturenumber: Sampling temperature (0 = deterministic). If unset, uses the node’s configured temperature.;seednumber: Seed for deterministic sampling (-1 = random/unset). If unset, uses the node’s configured seed.;thinkingstring: Reasoning/thinking control for supported models. If unset, uses the Gateway/runtime default.;speculationany (MTP): Native MTP request: false disables; {mode: "native_mtp", num_draft_tokens: 2, require_acceleration: true} requests depth. Unset inherits.;resp_schemajson_schema: Optional JSON Schema object (type=object) the final answer must conform to. - Outputs:
exec-outexecution;responsestring: Final response text. When resp_schema is provided, the structured object is also exposed on data.;dataobject: Structured response object matching resp_schema. Visible by default when a response schema is configured.;successboolean: True if the Agent node completed successfully.;metaobject: Host-facing meta envelope (schema=abstractcode.agent.v1.meta). Includes provider/model and lightweight execution metadata.;scratchpadobject: Runtime-owned execution trace/scratchpad for observability (LLM/tool steps, timings). Includes best-effort tool_calls/tool_results extracted post-run. - Default config: { "pinDefaults": { "max_iterations": 50 } }
- Node type:
answer_user - Document node:
{"id":"<unique_id>","type":"answer_user"} - Utility: Show a message to the user (level: message, warning or error); the run does not wait.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;messagestring;levelstring: Message level for hosts (message|warning|error). Defaults to 'message' when unset. - Outputs:
exec-outexecution;messagestring - Default config: none
- Node type:
ask_user - Document node:
{"id":"<unique_id>","type":"ask_user"} - Utility: Pause execution and ask the user for input (free text or choices).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;promptstring;choicesarray;questionobject: Optional conversation policy: essential waits for an answer; clarification declares a 120–300 second deadline and fallback. - Outputs:
exec-outexecution;responsestring;timed_outboolean: True when the declared clarification deadline expired without an answer.;fallbackstring: Declared fallback after expiry; never a fabricated user answer.;questionobject: Question identity and resolution metadata. - Default config: none
- Node type:
code - Document node:
{"id":"<unique_id>","type":"code"} - Utility: Run a Python transform body as
transform(_input)in the Runtime sandbox. - Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults; body/function withcode/function_name; permissions must remainsandbox - Inputs:
exec-inexecution;inputany;permissionsstring: Execution policy for this Code node. sandbox is the protected default: Python's standard library is importable, except the modules that reach processes, files, the network or code loading. full_access imports anything; it requires explicit Runtime/Gateway policy and otherwise fails closed. - Outputs:
exec-outexecution;outputany: Value returned by transform(_input).;successboolean: True when the transform ran without error.;executionobject: Execution metrics such as duration_ms, cpu_time_ms, cpu_percent, memory_rss_mb, and memory_rss_delta_mb. - Default config: { "pinDefaults": { "permissions": "sandbox" }, "codeBody": "# Available variables:\n# _input (dict)\n# input (any)\n\nreturn _input", "functionName": "transform" }
- Node type:
decide - Document node:
{"id":"<unique_id>","type":"decide"} - Utility: One question about one text, answered in a single pass by a decision model: a choice among options, a yes/no probability (noul), or a score on ordered levels. The typed output pins follow the question type.
- Gateway capability: decision
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;statestring: The document / text the question is about.;questionstring: The instructions ("Which team should handle this?").;question_typestring: choice | noul (yes/no probability) | score. Default: choice. Changing it rewrites the typed output pins.;optionsarray: Choice only: the option names, typed as "returns, shipping, billing" on the card (or a {name: description} object from the panel). At least one.;levelsarray: Score only: the ordered level labels, lowest first, typed as "Calm, Frustrated, Very angry". At least two.;providerprovider: Optional decision provider (one with a model on the output.decision route: mlx, huggingface, typesafe…). Empty: the provider of a provider/model handle inmodel, else the Gateway default.;modelmodel: Optional decision model: a bare id withproviderset (jaredpalmer/kev-4b), or a provider/model handle on its own (mlx/jaredpalmer/kev-4b, huggingface/ggml-org/Kev-4B-GGUF:Q4_K_M, typesafe/jev-latest). Empty: the Gateway output.decision default.;truncateboolean: Read only the first 65,536 tokens of an over-long state instead of failing.;questionsobject: Advanced: several named questions {name: {type, instructions, criteria}}. When wired or non-empty it REPLACES the single question; every answer lands inanswers. - Outputs:
exec-outexecution;choicestring: The chosen option name.;confidencenumber: Confidence in the choice (0..1).;probabilitiesobject: Probability per option, keyed by option name.;answerobject: The whole typed answer as one object (type, the typed fields, probabilities). Break Object splits it.;modelstring: The provider/model that answered.;successboolean: True when an answer exists.;answersobject: Advanced form: every answer keyed by question name (the single form keys its one answer "answer").;metaobject: Execution metadata (schema, modality, provider/model, token usage). - Default config: { "pinDefaults": { "question_type": "choice" } }
- Node type:
llm_call - Document node:
{"id":"<unique_id>","type":"llm_call"} - Utility: Single LLM call (no autonomous loop). Can optionally request tool calls via the tools allowlist.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;use_contextboolean: When true, include this run's active context messages (context.messages) in the LLM request. If the pin is not connected, the node checkbox is used. Default: false.;contextobject: Optional explicit context object for this call (e.g. {messages:[...]}). If provided, context.messages overrides inherited run context messages.;memorymemory: Memory configuration object (KG/span/session controls). If set, overrides this call’s recall behavior; if unset, runtime defaults apply.;providerprovider_text: Text/LLM provider id (e.g. LMStudio). If unset, uses the node’s configured provider.;modelmodel: Text/LLM model id/name. If unset, uses the node’s configured model.;systemstring: Optional system prompt for this single call.;promptstring: User prompt/content for this single call.;toolstools: Allowlist of tools exposed to the model as ToolSpecs (model may request tool calls; execution is done via a Tool Calls node).;prompt_cache_bindingany: Advanced: durable exact-reuse prompt-cache binding from Gateway blocs. Accepts a binding object or binding_id string; this does not create or load blocs during the run.;max_in_tokensnumber: Optional per-call input token budget (max_input_tokens). When set, overrides the run's default _limits.max_input_tokens for this call.;max_output_tokensnumber: Optional output token cap for this call (max_output_tokens). When set, bounds the assistant response length.;temperaturenumber: Sampling temperature (0 = deterministic). If unset, uses the node’s configured temperature.;seednumber: Seed for deterministic sampling (-1 = random/unset). If unset, uses the node’s configured seed.;thinkingstring: Reasoning/thinking control for supported models. If unset, uses the Gateway/runtime default.;speculationany (MTP): Native MTP request: false disables; {mode: "native_mtp", num_draft_tokens: 2, require_acceleration: true} requests depth. Unset inherits.;resp_schemajson_schema: Optional JSON Schema object (type=object) the assistant content must conform to. - Outputs:
exec-outexecution;responsestring: Assistant text content (best-effort). For tool calls, content may be empty.;dataobject: Structured assistant output object matching resp_schema. Visible by default when a response schema is configured.;successboolean: True if the LLM call completed successfully.;metaobject: Host-facing meta envelope (schema=abstractflow.llm_call.v1.meta). Includes provider/model, usage, trace ids, and lightweight execution metadata.;tool_callsarray: Normalized tool call requests. This pin exists to make wiring into Tool Calls / Emit Event nodes simpler. - Default config: none
- Node type:
model_residency - Document node:
{"id":"<unique_id>","type":"model_residency"} - Utility: Gateway/Runtime model residency controls for listing, loading, and unloading resident models.
- Gateway capability: model_residency
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;operationstring: list_loaded, load, or unload.;taskstring: text_generation, image_generation, image_to_image, image_upscale, text_to_video, image_to_video, tts, stt, or music_generation.;providerprovider: Provider/backend id to load or filter.;modelmodel: Model id to load or filter. - Outputs:
exec-outexecution;successboolean;affected_modelsarray;modelsarray;errorstring;warningsarray;resultobject - Default config: { "pinDefaults": { "operation": "load", "task": "text_generation" }, "effectConfig": { "operation": "load", "task": "text_generation" } }
- Node type:
subflow - Document node:
{"id":"<unique_id>","type":"subflow"} - Utility: Run another saved workflow (subflow) and return its output object.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults; subflow id is UI-owned; do not create an unconfigured subflow as a finished workflow - Inputs:
exec-inexecution;inherit_contextboolean: When true, seed the child run's context.messages from the parent's active context messages. If the pin is not connected, the node checkbox is used. Default: false.;inputobject - Outputs:
exec-outexecution;outputobject;child_outputobject: RUNTIME-PROVIDED child metadata: null while the child run is healthy; {success: false, error} when the child run dies. Wire it to fold child death honestly instead of reading a silent empty output. - Default config: none
- Node type:
tool_calls - Document node:
{"id":"<unique_id>","type":"tool_calls","pin_defaults":{"allowed_tools":["<exact_tool_name>"]}} - Utility: Execute one or more tool calls via the runtime. Outputs per-call results and a success boolean.
- Gateway capability: tools
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults; must includepin_defaults.allowed_toolswhen the node is created - Inputs:
exec-inexecution;tool_callsarray: List of tool call requests. Each entry shape: {name, arguments, call_id?}. Often comes from LLM Call.tool_calls.;allowed_toolsarray: Optional allowlist of tool names enforced by the runtime effect handler (empty list => allow none). If not connected, the node config (if any) is used. - Outputs:
exec-outexecution;resultsarray: Per-call results in input order. Each entry shape: {call_id, name, success, output, error}. When success=true, output contains the tool output and error is null; when success=false, error contains the failure message and output is null (or best-effort structured output for some tools).;successboolean: Aggregate: true only if all per-call results have success=true (see results[].success/results[].error for per-call failures). - Default config: none
- Node type:
agent_trace_report - Document node:
{"id":"<unique_id>","type":"agent_trace_report"} - Utility: Render an agent scratchpad (runtime-owned node_traces) into a condensed Markdown report of actions and tool results.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
scratchpadobject: Agent scratchpad object (typically contains node_traces). - Outputs:
resultstring - Default config: none
- Node type:
array_append - Document node:
{"id":"<unique_id>","type":"array_append"} - Utility: Append an item to an array (returns a new array).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
arrayarray;itemany - Outputs:
resultarray - Default config: none
- Node type:
array_concat - Document node:
{"id":"<unique_id>","type":"array_concat"} - Utility: Concatenate arrays (a then b).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
aarray;barray - Outputs:
resultarray - Default config: none
- Node type:
array_dedup - Document node:
{"id":"<unique_id>","type":"array_dedup"} - Utility: Stable-order dedup for arrays (optionally by key path).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
arrayarray;keystring - Outputs:
resultarray - Default config: none
- Node type:
array_filter - Document node:
{"id":"<unique_id>","type":"array_filter"} - Utility: Filter array items where item[key] == value (or item == value).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
itemsarray;keystring;valueany - Outputs:
resultarray - Default config: none
- Node type:
array_length - Document node:
{"id":"<unique_id>","type":"array_length"} - Utility: Return the length of an array.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
arrayarray - Outputs:
resultnumber - Default config: none
- Node type:
array_map - Document node:
{"id":"<unique_id>","type":"array_map"} - Utility: Map array items by extracting a field (key) from objects.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
itemsarray;keystring - Outputs:
resultarray - Default config: none
- Node type:
break_object - Document node:
{"id":"<unique_id>","type":"break_object","template":"Break Email"} - Utility: Expose this email’s fields as outputs: from, to, cc, subject, date, body_text, attachments, seen, flagged, labels…
- Gateway capability: none
- Dynamic pin policy: dynamic outputs via the document
outputslist (also drivesbreakConfig.selectedPaths) - Authorable config: select with
"template": "Break Email"; input defaults withpin_defaults - Inputs:
objectemail (email): The email to read. - Outputs:
idstring: Where the message is (what the mail nodes act on).;message_idstring: The email’s Message-ID.;mailboxstring: The mailbox it is in (its address).;folderstring: The folder it is in (e.g. INBOX).;thread_idstring: The conversation it belongs to.;fromstring: Who sent it.;toarray: Who it was sent to.;ccarray: Who was copied.;subjectstring: Its subject.;datestring: When it was sent (date and time).;body_textstring: The message as plain text.;body_htmlstring: The message as HTML, when it has one.;attachmentsarray: Its attachments: index, name, size, type (Get attachment reads one by index).;seenboolean: Whether it was read.;flaggedboolean: Whether it is flagged.;labelsarray: Its labels. - Default config: { "breakConfig": { "selectedPaths": [ "id", "message_id", "mailbox", "folder", "thread_id", "from", "to", "cc", "subject", "date", "body_text", "body_html", "attachments", "seen", "flagged", "labels" ] } }
- Node type:
break_object - Document node:
{"id":"<unique_id>","type":"break_object","template":"Break Object"} - Utility: Expose selected fields of an object as individual output pins (configured paths).
- Gateway capability: none
- Dynamic pin policy: dynamic outputs via the document
outputslist (also drivesbreakConfig.selectedPaths) - Authorable config: select with
"template": "Break Object"; input defaults withpin_defaults - Inputs:
objectobject: Input object to decompose into selected output fields. - Outputs: none
- Default config: { "breakConfig": { "selectedPaths": [] } }
- Node type:
coalesce - Document node:
{"id":"<unique_id>","type":"coalesce"} - Utility: Return the first non-null value (A, then B, ...).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
aany [type T];bany [type T] - Outputs:
resultany [type T] - Default config: none
- Node type:
concat - Document node:
{"id":"<unique_id>","type":"concat"} - Utility: Concatenate two strings.
- Gateway capability: none
- Dynamic pin policy: dynamic inputs via the document
inputslist - Authorable config: input defaults with
pin_defaults; separator withconcat_separator - Inputs:
astring;bstring - Outputs:
resultstring - Default config: { "concatConfig": { "separator": " " } }
- Node type:
contains - Document node:
{"id":"<unique_id>","type":"contains"} - Utility: True if text contains pattern.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
textstring;patternstring - Outputs:
resultboolean - Default config: none
- Node type:
format_tool_results - Document node:
{"id":"<unique_id>","type":"format_tool_results"} - Utility: Convert Tool Calls results [{call_id,name,success,output,error}, ...] into a condensed human-readable digest string.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
tool_resultsarray: Array of tool results (typically from Tool Calls.results). - Outputs:
resultstring - Default config: none
- Node type:
format - Document node:
{"id":"<unique_id>","type":"format"} - Utility: Python-style string format: template.format(**values).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
templatestring;valuesobject - Outputs:
resultstring - Default config: none
- Node type:
get_element - Document node:
{"id":"<unique_id>","type":"get_element"} - Utility: Get a single array element by index (supports negative indices).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
arrayarray: Input array (list/tuple).;indexnumber: 0-based index (negative allowed; -1 is last).;defaultany [type T]: Fallback value when index is invalid (default null). - Outputs:
resultany [type T]: Element value (or default when not found).;foundboolean: True when index is valid for the given array. - Default config: none
- Node type:
get_random_element - Document node:
{"id":"<unique_id>","type":"get_random_element"} - Utility: Pick a random element from an array.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
arrayarray: Input array (list/tuple).;defaultany [type T]: Fallback value when the array is empty (default null). - Outputs:
resultany [type T]: Random element (or default when not found).;foundboolean: True when an element was selected. - Default config: none
- Node type:
get - Document node:
{"id":"<unique_id>","type":"get"} - Utility: Safely read a nested path from an object (dot/bracket path) with an optional default.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
objectobject;keystring;defaultany [type T] - Outputs:
valueany [type T] - Default config: none
- Node type:
has_tools - Document node:
{"id":"<unique_id>","type":"has_tools"} - Utility: True if the input array has at least one element (commonly: LLM tool_calls).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
arrayarray - Outputs:
resultboolean - Default config: none
- Node type:
is_empty_string - Document node:
{"id":"<unique_id>","type":"is_empty_string"} - Utility: True if a text is empty or a list has no items (nothing connected counts as empty).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
textany (value): A text or a list (an object too): empty text, no items, or nothing is empty. - Outputs:
resultboolean - Default config: none
- Node type:
join - Document node:
{"id":"<unique_id>","type":"join"} - Utility: Join array items into a string using a delimiter.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
itemsarray;delimiterstring: What goes between two items (not set: a comma); \n is a new line, \t a tab. - Outputs:
resultstring - Default config: none
- Node type:
length - Document node:
{"id":"<unique_id>","type":"length"} - Utility: String length (number of characters).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
textstring - Outputs:
resultnumber - Default config: none
- Node type:
lowercase - Document node:
{"id":"<unique_id>","type":"lowercase"} - Utility: Convert text to lowercase.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
textstring - Outputs:
resultstring - Default config: none
- Node type:
make_array - Document node:
{"id":"<unique_id>","type":"make_array"} - Utility: Build an array from 1+ inputs in pin order (Blueprint-style). Skips null/unset inputs.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
aany - Outputs:
resultarray - Default config: none
- Node type:
make_context - Document node:
{"id":"<unique_id>","type":"make_context"} - Utility: Build a context object {task, messages, ...context_extra}.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
taskstring: Task / user request string (context.task).;messagesarray: Conversation messages list (context.messages).;context_extraobject: Optional extra context fields merged into the context (task/messages win). Common: session, attachments. - Outputs:
contextobject: Context object {task, messages, ...context_extra}. - Default config: none
- Node type:
make_meta - Document node:
{"id":"<unique_id>","type":"make_meta"} - Utility: Build a host-facing meta envelope (Agent / LLM Call).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
schemastring: Schema identifier (default: abstractcode.agent.v1.meta).;versionnumber: Schema version number (default: 1).;output_modestring: Output mode: unstructured | structured.;providerprovider_text: Text/LLM provider id/name (e.g. lmstudio).;modelmodel: Text/LLM model id/name.;sub_run_idstring: Optional sub-run id (Agent nodes).;iterationsnumber: Optional iteration count (Agent nodes).;tool_callsnumber: Optional tool call count.;tool_resultsnumber: Optional tool result count.;finish_reasonstring: Optional finish reason (LLM Call nodes).;gen_timenumber: Optional generation time (LLM Call nodes).;ttft_msnumber: Optional time-to-first-token in ms (LLM Call nodes).;usageobject: Usage object (e.g. {input_tokens, output_tokens}).;traceobject: Optional trace object (e.g. {trace_id:"..."}). Treat as opaque.;warningsarray: Optional list of warning strings.;debugobject: Optional debug payload (host-facing).;extraobject: Optional extra fields merged into the meta object (reserved keys win). - Outputs:
metaobject: Meta object (portable host-friendly envelope). - Default config: none
- Node type:
make_object - Document node:
{"id":"<unique_id>","type":"make_object"} - Utility: Build a JSON object from live input pins. Use the JSON literal node for static objects.
- Gateway capability: none
- Dynamic pin policy: dynamic inputs via the document
inputslist - Authorable config: input defaults with
pin_defaults - Inputs:
valueany: First object field. Rename/add fields in the Properties panel. - Outputs:
resultobject - Default config: none
- Node type:
make_scratchpad - Document node:
{"id":"<unique_id>","type":"make_scratchpad"} - Utility: Build a scratchpad/trace envelope (commonly from Agent outputs).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
sub_run_idstring: Optional sub-run id associated with the trace.;workflow_idstring: Optional workflow id associated with the trace.;taskstring: Agent task/prompt string for this run.;messagesarray: Agent-internal transcript messages for this run.;context_extraobject: Additional context fields passed into the agent (excluding task/messages).;node_tracesobject: Per-node trace mapping (node_id -> trace object).;stepsarray: Flattened trace steps list (optional; used by some UIs).;tool_callsarray: Tool calls extracted from steps (best-effort).;tool_resultsarray: Tool results extracted from steps (best-effort). - Outputs:
scratchpadobject: Scratchpad object containing trace info. - Default config: none
- Node type:
merge - Document node:
{"id":"<unique_id>","type":"merge"} - Utility: Shallow merge two objects (b overrides a).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
aobject;bobject - Outputs:
resultobject - Default config: none
- Node type:
parse_json - Document node:
{"id":"<unique_id>","type":"parse_json"} - Utility: Parse JSON (or JSON-ish) text into an object/array suitable for downstream nodes.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
textstring - Outputs:
resultobject - Default config: none
- Node type:
replace - Document node:
{"id":"<unique_id>","type":"replace"} - Utility: Replace pattern with replacement (mode: first|all).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
textstring;patternstring;replacementstring;modestring: Replacement mode: 'first' or 'all' (default: all). - Outputs:
resultstring - Default config: none
- Node type:
reroute - Document node:
{"id":"<unique_id>","type":"reroute"} - Utility: A dot that passes a value through unchanged so one output can feed several inputs along a tidy path (visual only: the runtime wires the source straight to each input).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
inany: The value to pass on. - Outputs:
outany: The same value; connect it to as many inputs as needed. - Default config: none
- Node type:
set - Document node:
{"id":"<unique_id>","type":"set"} - Utility: Pure transform: return a new object with key set. To persist state, use Set Variable (dotted path) or Set Variable Property.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
objectobject;keystring;valueany - Outputs:
resultobject - Default config: none
- Node type:
split - Document node:
{"id":"<unique_id>","type":"split"} - Utility: Split text by a delimiter into an array (with trimming/drop-empty defaults).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
textstring;delimiterstring - Outputs:
resultarray - Default config: none
- Node type:
string_template - Document node:
{"id":"<unique_id>","type":"string_template"} - Utility: Write a text and insert variables into it: a run variable, or an input of this node for a value that comes from a wire. Lists and objects are written as JSON.
- Gateway capability: none
- Dynamic pin policy: dynamic inputs via the document
inputslist - Authorable config: input defaults with
pin_defaults; template text withliteralorpin_defaults.template - Inputs:
templatestring (text) - Outputs:
resultstring - Default config: none
- Node type:
stringify_json - Document node:
{"id":"<unique_id>","type":"stringify_json"} - Utility: Render a JSON value (object/array/scalar) into a string. Mode: none | beautify | minified.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
valueany: JSON value (or JSON-ish string) to stringify.;modestring: Rendering mode: none | beautify | minified. Default beautify. - Outputs:
resultstring - Default config: none
- Node type:
substring - Document node:
{"id":"<unique_id>","type":"substring"} - Utility: Extract a substring by start/end indices (end is optional).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
textstring;startnumber;endnumber - Outputs:
resultstring - Default config: none
- Node type:
trim - Document node:
{"id":"<unique_id>","type":"trim"} - Utility: Trim whitespace from both ends of a string.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
textstring - Outputs:
resultstring - Default config: none
- Node type:
uppercase - Document node:
{"id":"<unique_id>","type":"uppercase"} - Utility: Convert text to UPPERCASE.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
textstring - Outputs:
resultstring - Default config: none
- Node type:
diary_read - Document node:
{"id":"<unique_id>","type":"diary_read"} - Utility: Read one diary entry by id from the entity's book (with its re-entry key + birth trail). Reads are visible acts on the entity's home channel.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;entry_idstring: The diary entry id (diary_...).;reasonstring: Why this read (auditable). - Outputs:
exec-outexecution;textstring: The entry prose.;resultobject: Full entry: kind, written_at, re_entry key, birth trail.;successboolean - Default config: none
- Node type:
diary_write - Document node:
{"id":"<unique_id>","type":"diary_write"} - Utility: Append one entry to the entity's book (the elected, conscious history — sole-author, hash-chained, never purged). visibility 'self' projects an act-frame digest into the graph; 'private' stays chain-only. turn_id REQUIRED.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;textstring: Full first-person prose, verbatim (never truncated).;giststring: Entity-authored one-line digest for the projection.;kindstring: 'note' | 'idea' | 'reflection' | 'commitment' | 'question' | 'problem' ...;visibilitystring: 'self' (default) or 'private' (chain only, words never leave the book).;anchor_graph_idsarray: Graph ids attended at write time (written_amid edges).;turn_idstring: REQUIRED: derives the replay-safe entry id.;digest_methodstring: Writer-declared MECHANICAL authorship (e.g. 'mechanical-flow-v1') — set ONLY on machine-worded writes; entity-elected words never carry it. - Outputs:
exec-outexecution;entry_idstring;projected_record_idstring: Graph projection id (visibility=self only).;resultobject;successboolean - Default config: none
- Node type:
entity_tools_execute - Document node:
{"id":"<unique_id>","type":"entity_tools_execute"} - Utility: ONE batch of native tool calls executes under the grant (re-resolved at execution — a caller-carried list can never widen it; tier gating stays runtime-owned). Rounds live in the FLOW graph: loop llm → this node → fold results, bounded. Refusals return as marker lines shown to the mind verbatim; tools_ran carries the host-authored unique names for honest gauges (never parsed from prose). Home-only (channel authority).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;tool_callsarray: The model reply's native tool_calls list (wire shape).;phasestring: visit | work | personal | sleep (required).;max_callsnumber: Batch cap (default 6, hard-capped runtime-side). - Outputs:
exec-outexecution;results_messagestring: The TOOL RESULTS text to fold back into the prompt.;tools_ranarray: Unique tool names actually executed (the honest gauge).;resultsarray: Per-election rows (name + result) — the ruled turn budget spends by counting these.;markersarray: Refusal marker lines (ungranted names) — show them to the mind.;noticesarray: Execution notices.;successboolean - Default config: none
- Node type:
entity_tools_query - Document node:
{"id":"<unique_id>","type":"entity_tools_query"} - Utility: The phase's tool grant resolves (pure read): tool_policy.yaml when the operator wrote one, the RULED per-phase defaults otherwise. Outputs the granted names (teach them in the prompt) and the native declaration specs (wire them to the llm tools pin). The grant is the ONE authority — execution re-resolves it server-side, so this node can never widen access. Home-only (channel authority).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;phasestring: visit | work | personal | sleep (required). - Outputs:
exec-outexecution;toolsarray: Granted tool names.;specsarray: Native declaration payloads for the llm tools pin.;notesarray: Grant resolution notes (legacy spellings, dropped names).;sourcestring: 'policy-file' (tool_policy.yaml) or 'default' (the ruled defaults).;successboolean - Default config: none
- Node type:
life_query - Document node:
{"id":"<unique_id>","type":"life_query"} - Utility: Pure life reads: op=alive_drives (what is alive — open questions/interests/problems; the day-open cue), cognition_health (drive ratios), entity_card (the identity view, as_of-anchored). Being described deposits nothing.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;opstring: 'alive_drives' | 'cognition_health' | 'entity_card'.;knumber: Top-k drives (default 5).;as_ofnumber: Historical anchor (entity_card). - Outputs:
exec-outexecution;itemsarray: Drive items (alive_drives).;resultobject;successboolean - Default config: none
- Node type:
memory_adjust - Document node:
{"id":"<unique_id>","type":"memory_adjust"} - Utility: Deliberate salience act on one record: reinforce / attenuate / refocus / close. Reason + turn_id are REQUIRED (deliberate acts are audited; replays stay idempotent).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;opstring: 'reinforce' | 'attenuate' | 'refocus' | 'close'.;record_idstring: Target record (not needed for refocus).;reasonstring: REQUIRED: why this deliberate act.;weightnumber: Salience weight (1-25).;ttl_activitynumber: Bounds a refocus (ttl_activity, NOT ttl — the misnamed pin silently inverted a bounded refocus into never-expires).;scopestring: Scope name.;turn_idstring: REQUIRED: replay idempotency. - Outputs:
exec-outexecution;resultobject;successboolean - Default config: none
- Node type:
memory_appraise - Document node:
{"id":"<unique_id>","type":"memory_appraise"} - Utility: Elected feeling toward a target (person:/tool:/idea:/record id): signed valence, routine band ±1..3, clamped loudly. Also heals scars / breaks bonds (marker lifecycle). Reason + turn_id REQUIRED.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;opstring: 'appraise' (default) | 'heal_scar' | 'break_bond' | gradation reads.;target_idstring: Namespace-prefixed target ('person:laurent', 'idea:...', or a record id).;signnumber: +1 or -1.;magnitudenumber: Routine band 1..3 (higher needs the entity-reflection/operator channel).;reasonstring: REQUIRED: why it felt this way.;turn_idstring: REQUIRED for op=appraise.;scopestring: Scope name (the shipped turn pins scope='self' — feelings are identity-plane). - Outputs:
exec-outexecution;resultobject;successboolean - Default config: none
- Node type:
memory_commit - Document node:
{"id":"<unique_id>","type":"memory_commit"} - Utility: Deposit the involuntary usage trail: commit which recalled memories the turn ACTUALLY used. The ONLY strengthening path (selected + co-use pair trails). Empty selection = honest no-op.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;trace_idstring: From Memory Recall.;used_record_idsarray: The record ids the turn actually used.;prompt_token_estimatenumber - Outputs:
exec-outexecution;committednumber;resultobject;successboolean - Default config: none
- Node type:
memory_consolidate - Document node:
{"id":"<unique_id>","type":"memory_consolidate"} - Utility: The night: ONE engine sleep pass — dream-resolution, maintenance, world models, lesson mining, identity review, one dream (sleep proposes; waking evidence disposes). Honest non-runs return ran=false + reason (another writer holds the home; operator pause). report_only is a pure read.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;scopesarray: Scope ladder (default: self/diary/life).;include_dreamboolean: One novel dream per night (default true).;include_identityboolean: Nightly identity review (default true; a short maintenance nap must not touch the self).;report_onlyboolean: Pure read — no writes (legal under a freeze).;max_candidatesnumber;scan_limitnumber: Cap on records scanned by the pass. - Outputs:
exec-outexecution;ranboolean: False = honest non-run (see reason).;reasonstring;dream_record_idstring: The night's dream, when one formed.;maintenance_candidatesarray;resultobject;successboolean - Default config: none
- Node type:
memory_form - Document node:
{"id":"<unique_id>","type":"memory_form"} - Utility: Land typed records in the entity's graph (episode/summary/lesson/interest/world-model...). Verbatim text goes to the artifact store; the graph keeps the digest. turn_id is REQUIRED (replay-safe idempotency).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;recordsarray: Record dicts: {kind, title, digest, keywords?, edges?, verbatim?, attributes?...}.;scopestring: Scope name (e.g. 'self' | 'life' | session scope; default: the run's scope).;turn_idstring: REQUIRED: derives the content-aware idempotency key.;idempotency_keystring: Optional explicit key (wins over the derived one). - Outputs:
exec-outexecution;record_idsarray: Graph ids of the formed records.;formednumber;resultobject;successboolean - Default config: none
- Node type:
memory_probe - Document node:
{"id":"<unique_id>","type":"memory_probe"} - Utility: Active reconstruction: the entity goes looking. op=probe (cue + MANDATORY reason), expand (from record_ids), familiarity (the anti-fabrication reflex: density only, no content). Pure reads, shelf-race-exempt; strengthening still only happens at Memory Commit.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;opstring: 'probe' | 'expand' | 'familiarity'.;cuestring: The deliberate cue (probe/familiarity).;record_idsarray: Roots for expand.;reasonstring: MANDATORY on probe+expand (deliberate acts are audited).;effortstring: 'quick' | 'standard' | 'deep'. - Outputs:
exec-outexecution;hitsarray;resultobject;successboolean - Default config: none
- Node type:
memory_recall - Document node:
{"id":"<unique_id>","type":"memory_recall"} - Utility: Reconstruct the entity's working memory for a cue (passive recall). PURE READ — nothing strengthens until Memory Commit. Identity is present by right (self seats); cue-free reads are legal only as self-core reads.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;cue_textstring: The stimulus cue (what arrived). Keep it SHORT — long cues dilute the reach.;scopesarray: Scope ladder, e.g. ["self","diary","life"] (default: the run's session scope).;viewstring: 'working_set' (default) or 'shelf'.;effortstring: Budget preset: 'light' | 'standard' | 'deep' (ignored when budget is wired).;budgetobject: Explicit RecallBudget fields (self_fraction, shelf size, token budget...).;participantsarray: Who is present (person:/entity: ids) — drives shared-context scoring.;anchor_record_idsarray: Deliberate reach: recall around these records.;turn_idstring: Turn correlation id (derives the replay-safe trace id). - Outputs:
exec-outexecution;handlesarray: Admitted memory handles (working_set view): record ids + digests + admission labels.;trace_idstring: Wire into Memory Commit after the turn uses the memories.;as_of_seqnumber: Journal high-water mark of this reconstruction.;resultobject;successboolean - Default config: none
- Node type:
memory_tend - Document node:
{"id":"<unique_id>","type":"memory_tend"} - Utility: The ONE tend-election route shared with the chat driver: the body carries a ```tend fence VERBATIM (verbs pin/silence/refocus/heal_scar/break_bond/revisit/dispose — grammar and vocabulary stay engine-owned, one line one act, reason mandatory, ≤5 per block). Dream disposal rides dispose confirm|reject. Refusals return as DATA (shown to the author unedited); a refused election never fails the effect. Home-only (channel authority).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;bodystring: The tend fence body, verbatim (empty body fails loudly — gate dispatch on has_tend).;scopestring: Scope name (default 'life').;channelstring: The door-verified reflection channel — tending REFUSES without it (the privileged default was removed). Own-time = 'entity-reflection' by construction; the door re-verifies against the stamp. - Outputs:
exec-outexecution;appliedarray: Elections applied.;refusedarray: Refusals — data, never a failure.;resultobject;successboolean - Default config: none
- Node type:
on_agent_message - Document node:
{"id":"<unique_id>","type":"on_agent_message"} - Utility: Entry point triggered by an agent-to-agent message (broadcast or direct).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: event settings with
event - Inputs: none
- Outputs:
exec-outexecution;senderagent;messagestring;channelstring - Default config: none
- Node type:
on_flow_end - Document node:
{"id":"<unique_id>","type":"on_flow_end"} - Utility: Terminal node. End execution and expose the flow result via upstream data wiring.
- Gateway capability: none
- Dynamic pin policy: dynamic inputs via the document
inputslist - Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution - Outputs: none
- Default config: none
- Node type:
on_flow_start - Document node:
{"id":"<unique_id>","type":"on_flow_start"} - Utility: Entry point for a workflow run. Emits exec-out and any configured inputs as outputs. Triggerable: declare the
eventoutput (Properties > Add trigger event) and a run started by an automation (schedule, feed, email, webhook) receives its CloudEvents envelope there (type, subject, time, data; feeds and webhooks deliver a batch data.count + data.events, schedules data.series), wired to a "Trigger event" Break Object exposing those fields. - Gateway capability: none
- Dynamic pin policy: dynamic outputs via the document
outputslist - Authorable config: no node-specific document config beyond label/pin_defaults
- Inputs: none
- Outputs:
exec-outexecution - Default config: none
- Node type:
on_user_request - Document node:
{"id":"<unique_id>","type":"on_user_request"} - Utility: Entry point for a run started from a user prompt. Outputs the user message and initial context.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: no node-specific document config beyond label/pin_defaults
- Inputs: none
- Outputs:
exec-outexecution;messagestring;contextobject - Default config: none
- Node type:
system_datetime - Document node:
{"id":"<unique_id>","type":"system_datetime"} - Utility: Return current time metadata (ISO string, timezone, UTC offset, locale).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: no node-specific document config beyond label/pin_defaults
- Inputs: none
- Outputs:
isostring;timezonestring;utc_offset_minutesnumber;localestring - Default config: none
- Node type:
export_artifact - Document node:
{"id":"<unique_id>","type":"export_artifact"} - Utility: Write an Artifact payload to a workspace-scoped server file path.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;artifactartifact;file_pathworkspace_file - Outputs:
exec-outexecution;artifact_idstring;file_pathworkspace_file;bytesnumber;sha256string;content_typestring - Default config: none
- Node type:
import_workspace_file - Document node:
{"id":"<unique_id>","type":"import_workspace_file"} - Utility: Snapshot a workspace-scoped server file into a runtime-owned Artifact for reuse across downstream steps and future runs.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;file_pathworkspace_file;content_typestring: Optional MIME override when the filename extension is misleading. - Outputs:
exec-outexecution;artifactartifact;artifact_refartifact;artifact_idstring;content_typestring;size_bytesnumber;source_pathworkspace_file - Default config: none
- Node type:
list_folder_files - Document node:
{"id":"<unique_id>","type":"list_folder_files"} - Utility: List files inside a workspace-scoped server folder, with optional family and extension filters.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;folder_pathworkspace_folder;recursiveboolean: When true, recurse into subfolders.;familystring: Optional family filter: any | image | video | audio | document | text | code | json | archive | other.;extensionsarray: Optional list of file extensions without dots.;include_directoriesboolean: When true, include folder entries in the structured results.;limitnumber: Maximum number of returned entries. Default: 500.;max_depthnumber: Optional recursive depth limit. Use 0 for unlimited depth. - Outputs:
exec-outexecution;folder_pathworkspace_folder;filesarray;entriesarray;countnumber;truncatedboolean - Default config: none
- Node type:
read_artifact - Document node:
{"id":"<unique_id>","type":"read_artifact"} - Utility: Read any Artifact payload and expose bounded text, JSON, or base64 projections plus content metadata.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;artifactartifact - Outputs:
exec-outexecution;artifactartifact;artifact_refartifact;artifact_idstring;content_typestring;content_familystring;size_bytesnumber;filenamestring;source_pathstring;contentany;textstring;jsonobject;binary_base64string;is_binaryboolean;warningsarray;truncatedboolean - Default config: none
- Node type:
read_file - Document node:
{"id":"<unique_id>","type":"read_file"} - Utility: Read a workspace-scoped server file path and output UTF-8 text or JSON content. In Gateway-hosted runs, access stays within the allowed workspace policy.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;file_pathworkspace_file - Outputs:
exec-outexecution;contentany;file_pathworkspace_file - Default config: none
- Node type:
read_pdf - Document node:
{"id":"<unique_id>","type":"read_pdf"} - Utility: Extract text and metadata from a workspace-scoped server PDF path using the Runtime permissive PDF reader.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;file_pathworkspace_file;page_startnumber: Optional 1-based first page to read.;page_endnumber: Optional 1-based last page to read.;max_charsnumber: Optional explicit text limit. If used, output warnings include #TRUNCATION. - Outputs:
exec-outexecution;contentstring;pagesnumber;processed_pagesnumber;metadataobject;warningsarray;truncatedboolean;file_pathworkspace_file;content_typestring - Default config: none
- Node type:
write_chart - Document node:
{"id":"<unique_id>","type":"write_chart"} - Utility: Render a STRUCTURED chart spec (pure data — never code) to a workspace-scoped PNG (+ a .pdf sibling) via the Runtime in-process matplotlib renderer. Spec kinds: layered (architecture boxes/arrows in columns) and line (trajectories). Same trust class and path containment as Write PDF — no shell, no tool approval. Render failures return ok:false + warnings (the flow continues) so callers keep honest text fallbacks.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;file_pathworkspace_file: Output PNG path (must end in .png); a .pdf sibling is written beside it.;specobject: Chart spec. layered: {kind:"layered", title, caption, layers:[{label, nodes:[{id,label}]}], edges:[{from,to,label?,style:"solid"|"dashed"}]}. line: {kind:"line", title, caption, x_label, y_label, y_min?, series:[{label, points:[[x,y],...]}]}. Oversized specs are refused with ok:false (hard resource caps). - Outputs:
exec-outexecution;okboolean: True when the chart rendered and the PNG exists with real bytes.;renderedboolean;file_pathworkspace_file: Rendered PNG path (null when not rendered).;pdf_pathstring: PDF sibling path (null when unavailable).;errorstring: Specific failure reason when ok is false (invalid spec, matplotlib unavailable, render failed).;warningsarray: #FALLBACK-labeled degradation notes. - Default config: none
- Node type:
write_docx - Document node:
{"id":"<unique_id>","type":"write_docx"} - Utility: Render text or Markdown-style report content to a workspace-scoped DOCX document using the Runtime stdlib DOCX writer. Documents carry a discreet AbstractFramework/AbstractFlow identity (workflow version, report date, abstractframework.ai) by default.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;file_pathworkspace_file;contentany;titlestring: Optional DOCX document title.;brandingany: Framework identity on the document (meta line, page footer, core properties). Default on with run provenance; set false to disable or pass an object to override fields (framework/app/url/date/workflow). - Outputs:
exec-outexecution;bytesnumber;file_pathworkspace_file;sha256string;content_typestring - Default config: none
- Node type:
write_file - Document node:
{"id":"<unique_id>","type":"write_file"} - Utility: Write content to a workspace-scoped server file path (creates parent folders if needed). In local Runtime-only runs without workspace scope, relative paths fall back to the process working directory.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;file_pathworkspace_file;contentany - Outputs:
exec-outexecution;bytesnumber;file_pathworkspace_file - Default config: none
- Node type:
write_pdf - Document node:
{"id":"<unique_id>","type":"write_pdf"} - Utility: Render text or Markdown-style report content to a real workspace-scoped server PDF path using the Runtime permissive PDF writer. Documents carry a discreet AbstractFramework/AbstractFlow identity (workflow version, report date, abstractframework.ai) by default.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;file_pathworkspace_file;contentany;titlestring: Optional PDF document title.;brandingany: Framework identity on the document (meta line, running footer, PDF metadata). Default on with run provenance; set false to disable or pass an object to override fields (framework/app/url/date/workflow). - Outputs:
exec-outexecution;bytesnumber;file_pathworkspace_file;sha256string;content_typestring - Default config: none
- Node type:
json_schema - Document node:
{"id":"<unique_id>","type":"json_schema"} - Utility: Define a JSON Schema object for schema-constrained responses. Connect to
resp_schemaon LLM Call / Agent nodes. - Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: literal value with
literal - Inputs: none
- Outputs:
valuejson_schema (schema) - Default config: { "literalValue": { "type": "object", "properties": { "data": { "type": "string" } }, "required": [ "data" ] } }
- Node type:
literal_array - Document node:
{"id":"<unique_id>","type":"literal_array","template":"Array"} - Utility: Array literal value.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Array"; literal value withliteral - Inputs: none
- Outputs:
valuearray - Default config: none
- Node type:
literal_array - Document node:
{"id":"<unique_id>","type":"literal_array","template":"Assertions"} - Utility: KG assertion list literal value (assertion[]).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Assertions"; literal value withliteral - Inputs: none
- Outputs:
valueassertions (assertions) - Default config: none
- Node type:
literal_boolean - Document node:
{"id":"<unique_id>","type":"literal_boolean"} - Utility: Boolean literal value.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: literal value with
literal - Inputs: none
- Outputs:
valueboolean - Default config: { "literalValue": false }
- Node type:
literal_json - Document node:
{"id":"<unique_id>","type":"literal_json","template":"Assertion"} - Utility: KG assertion literal value (subject/predicate/object + optional metadata).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Assertion"; literal value withliteral - Inputs: none
- Outputs:
valueassertion (assertion) - Default config: none
- Node type:
literal_json - Document node:
{"id":"<unique_id>","type":"literal_json","template":"JSON"} - Utility: Object (JSON) literal value.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "JSON"; literal value withliteral - Inputs: none
- Outputs:
valueobject - Default config: none
- Node type:
literal_json - Document node:
{"id":"<unique_id>","type":"literal_json","template":"Memory"} - Utility: Memory configuration object for Agent/LLM Call recall and KG settings.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Memory"; literal value withliteral - Inputs: none
- Outputs:
valuememory (memory) - Default config: { "literalValue": { "use_session_attachments": true, "use_span_memory": false, "use_semantic_search": false, "use_kg_memory": true, "memory_query": "", "memory_scope": "session", "recall_level": "standard", "max_span_messages": 24, "kg_max_input_tokens": 1200, "kg_limit": 80, "kg_min_score": 0.35, "kg_write_scope": "session", "kg_domain_focus": "", "kg_max_out_tokens": 0 } }
- Node type:
literal_number - Document node:
{"id":"<unique_id>","type":"literal_number"} - Utility: Number literal value.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: literal value with
literal - Inputs: none
- Outputs:
valuenumber - Default config: { "literalValue": 0 }
- Node type:
literal_string - Document node:
{"id":"<unique_id>","type":"literal_string"} - Utility: String literal value.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: literal value with
literal - Inputs: none
- Outputs:
valuestring - Default config: { "literalValue": "" }
- Node type:
provider_catalog - Document node:
{"id":"<unique_id>","type":"provider_catalog"} - Utility: List available LLM providers (optionally filtered by an allowlist).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
allowed_providersarray - Outputs:
providersarray - Default config: none
- Node type:
provider_models - Document node:
{"id":"<unique_id>","type":"provider_models"} - Utility: List models for a provider. Optionally restrict the list by capability route and selected allowed models.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults; provider models config is UI-owned; use provider/capability pins when possible - Inputs:
providerprovider_text: Provider id to list models for. If this pin is not connected, the node’s selected provider is used.;capability_routestring: Optional comma-separated route filter such as output.text or input.image,output.text. - Outputs:
providerprovider_text: Resolved provider id used to compute the models list.;modelsarray: Array of model ids/names for the provider (filtered to the selected allowed models when set). - Default config: { "providerModelsConfig": { "provider": "", "capabilityRoute": "output.text", "allowedModels": [] } }
- Node type:
tool_parameters - Document node:
{"id":"<unique_id>","type":"tool_parameters"} - Utility: Pick a tool and set its arguments (typed + defaults). Outputs a tool call object for Tool Calls.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: tool and argument pins with
tool+tool_parameters - Inputs: none
- Outputs:
tool_callobject: Single tool call request object: {name, arguments, call_id?}. - Default config: { "toolParametersConfig": { "tool": "" } }
- Node type:
tools_allowlist - Document node:
{"id":"<unique_id>","type":"tools_allowlist"} - Utility: Select an allowlist of tool names once and reuse it across LLM/Agent/Tool Calls nodes.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: tool names array with
literal - Inputs: none
- Outputs:
toolstools - Default config: none
- Node type:
break_object - Document node:
{"id":"<unique_id>","type":"break_object","template":"Email fields"} - Utility: The fields of one email as outputs: from, to, cc, subject, date, body_text, attachments, seen, flagged, labels…
- Gateway capability: none
- Dynamic pin policy: dynamic outputs via the document
outputslist (also drivesbreakConfig.selectedPaths) - Authorable config: select with
"template": "Email fields"; input defaults withpin_defaults - Inputs:
objectemail (email): The email to read. - Outputs:
idstring: Where the message is (what the mail nodes act on).;message_idstring: The email’s Message-ID.;mailboxstring: The mailbox it is in (its address).;folderstring: The folder it is in (e.g. INBOX).;thread_idstring: The conversation it belongs to.;fromstring: Who sent it.;toarray: Who it was sent to.;ccarray: Who was copied.;subjectstring: Its subject.;datestring: When it was sent (date and time).;body_textstring: The message as plain text.;body_htmlstring: The message as HTML, when it has one.;attachmentsarray: Its attachments: index, name, size, type (Get attachment reads one by index).;seenboolean: Whether it was read.;flaggedboolean: Whether it is flagged.;labelsarray: Its labels. - Default config: { "breakConfig": { "selectedPaths": [ "id", "message_id", "mailbox", "folder", "thread_id", "from", "to", "cc", "subject", "date", "body_text", "body_html", "attachments", "seen", "flagged", "labels" ] } }
- Node type:
mail_attachment - Document node:
{"id":"<unique_id>","type":"mail_attachment"} - Utility: Read one attachment of the email as a file.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idemail (email): The email.;indexnumber: Which attachment: its index in the email’s attachments (from 0). - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why).;artifactartifact (file): The attachment, stored as a file. - Default config: none
- Node type:
mail_delete - Document node:
{"id":"<unique_id>","type":"mail_delete"} - Utility: Move the emails to the Trash (deleted for good only with permanent on, under More options).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idsemails (emails): The emails to delete.;permanentboolean: Off (default): to the Trash. On: deleted for good. - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why). - Default config: none
- Node type:
mail_forward - Document node:
{"id":"<unique_id>","type":"mail_forward"} - Utility: Forward the email, with its attachments, to other people.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idemail (email): The email to forward.;toarray: Recipients (addresses).;notestring: A note above the forwarded message. - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why).;message_idstring: The Message-ID of the forwarded email. - Default config: none
- Node type:
mail_get - Document node:
{"id":"<unique_id>","type":"mail_get"} - Utility: Read emails with their bodies and attachment lists.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idsemails (emails): The emails to read (Email list, or one Email). - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why).;emailsemails: The emails, with their bodies. - Default config: none
- Node type:
mail_label - Document node:
{"id":"<unique_id>","type":"mail_label","template":"Add label"} - Utility: Add labels to the emails.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Add label"; input defaults withpin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idsemails (emails): The emails to label.;addarray (labels): The labels to add, e.g. ["triaged"]. - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why). - Default config: none
- Node type:
mail_label - Document node:
{"id":"<unique_id>","type":"mail_label","template":"Label mail"} - Utility: Add and / or remove labels on emails.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Label mail"; input defaults withpin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idsemails (emails): The emails to label.;addarray: Labels to add, e.g. ["triaged"].;removearray: Labels to remove. - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why). - Default config: none
- Node type:
mail_label - Document node:
{"id":"<unique_id>","type":"mail_label","template":"Remove label"} - Utility: Remove labels from the emails.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Remove label"; input defaults withpin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idsemails (emails): The emails.;removearray (labels): The labels to remove. - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why). - Default config: none
- Node type:
mail_mark - Document node:
{"id":"<unique_id>","type":"mail_mark","template":"Flag"} - Utility: Flag the emails.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Flag"; input defaults withpin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idsemails (emails): The emails. - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why). - Default config: { "pinDefaults": { "flagged": true } }
- Node type:
mail_mark - Document node:
{"id":"<unique_id>","type":"mail_mark","template":"Mark as read"} - Utility: Mark the emails as read.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Mark as read"; input defaults withpin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idsemails (emails): The emails (from the trigger, Search mail or ForEach). - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why). - Default config: { "pinDefaults": { "seen": true } }
- Node type:
mail_mark - Document node:
{"id":"<unique_id>","type":"mail_mark","template":"Mark as unread"} - Utility: Mark the emails as not read.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Mark as unread"; input defaults withpin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idsemails (emails): The emails. - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why). - Default config: { "pinDefaults": { "seen": false } }
- Node type:
mail_mark - Document node:
{"id":"<unique_id>","type":"mail_mark","template":"Mark mail"} - Utility: Mark emails read / unread and flagged / not flagged.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Mark mail"; input defaults withpin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idsemails (emails): The emails to mark.;seenboolean (read): True: read. False: unread. Empty: unchanged.;flaggedboolean: True: flagged. False: not flagged. Empty: unchanged. - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why). - Default config: none
- Node type:
mail_mark - Document node:
{"id":"<unique_id>","type":"mail_mark","template":"Unflag"} - Utility: Remove the emails’ flag.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Unflag"; input defaults withpin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idsemails (emails): The emails. - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why). - Default config: { "pinDefaults": { "flagged": false } }
- Node type:
mail_move - Document node:
{"id":"<unique_id>","type":"mail_move"} - Utility: Move the emails to another folder of their mailbox.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idsemails (emails): The emails to move.;folderstring: The folder to move them to (pick one in Properties). - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why). - Default config: none
- Node type:
mail_reply - Document node:
{"id":"<unique_id>","type":"mail_reply"} - Utility: Reply to the email, from its mailbox.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;idemail (email): The email to answer.;textstring: The answer as plain text.;htmlstring: Optional HTML version.;reply_allboolean (reply all): Also answer everyone who received it. - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why).;message_idstring: The Message-ID of the reply. - Default config: none
- Node type:
mail_search - Document node:
{"id":"<unique_id>","type":"mail_search"} - Utility: Find emails in a mailbox: by sender, recipient, subject, words, dates, unread / flagged, labels (set them in Properties). Outputs an Email list, newest first, without bodies (Get mail reads them).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;queryobject: What to look for: from, to, subject, text, since, until, unseen, flagged, labels (Properties fills it).;folderstring: The folder to search (empty: the inbox).;limitnumber: At most this many (the newest). - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why).;emailsemails: The emails found (Email list), newest first. - Default config: none
- Node type:
mail_send - Document node:
{"id":"<unique_id>","type":"mail_send"} - Utility: Send a new email from a mailbox that can send.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;mailboxstring: Which mailbox (its id). Empty: the trigger’s mailbox, else your main one.;toarray: Recipients (addresses).;ccarray: Copied (addresses).;bccarray: Blind-copied (addresses).;subjectstring: The subject.;textstring: The message as plain text.;htmlstring: Optional HTML version.;attachmentsartifacts: Files to attach. - Outputs:
exec-outexecution;resultobject: What the mail server answered.;successboolean: False when the mail action was refused (the result says why).;message_idstring: The Message-ID of the sent email. - Default config: none
- Node type:
publish_event - Document node:
{"id":"<unique_id>","type":"publish_event","template":"Notify me"} - Utility: Reach yourself: on all your channels (the tray, the watch or the phone, email) or the ones you choose in Properties. The one node that notifies you (On Flow End only records the outcome).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Notify me"; input defaults withpin_defaults - Inputs:
exec-inexecution;titlestring: What the notification says (required).;bodystring: More text (optional).;dataobject: Any extra JSON. - Outputs:
exec-outexecution;resultobject;successboolean - Default config: { "pinDefaults": { "channel": "me", "alert": true } }
- Node type:
publish_event - Document node:
{"id":"<unique_id>","type":"publish_event","template":"Publish to channel"} - Utility: Applications that subscribe to this channel receive it; with Alert on, you are notified on the tray, the Assistant, the watch and the phone.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: select with
"template": "Publish to channel"; input defaults withpin_defaults - Inputs:
exec-inexecution;channelstring: A name applications subscribe to (lowercase letters, digits, . _ -), e.g. results.;typestring: What kind of message it is, your own name (default: .message).;titlestring: A short title (required).;bodystring: The text (optional).;subjectstring: What it is about (optional).;dataobject: Any extra JSON for the applications.;alertboolean: On: also notify me (tray, Assistant, watch or phone). - Outputs:
exec-outexecution;resultobject: The published event: event_id, sequence, alerted.;successboolean - Default config: { "pinDefaults": { "channel": "results", "alert": false } }
- Node type:
abs - Document node:
{"id":"<unique_id>","type":"abs"} - Utility: Absolute value of a number.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
valuenumber - Outputs:
resultnumber - Default config: none
- Node type:
add - Document node:
{"id":"<unique_id>","type":"add"} - Utility: Add two numbers.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
anumber;bnumber - Outputs:
resultnumber - Default config: none
- Node type:
divide - Document node:
{"id":"<unique_id>","type":"divide"} - Utility: Compute a / b (error on division by zero).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
anumber;bnumber - Outputs:
resultnumber - Default config: none
- Node type:
modulo - Document node:
{"id":"<unique_id>","type":"modulo"} - Utility: Compute a % b (error on modulo by zero).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
anumber;bnumber - Outputs:
resultnumber - Default config: none
- Node type:
multiply - Document node:
{"id":"<unique_id>","type":"multiply"} - Utility: Multiply two numbers.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
anumber;bnumber - Outputs:
resultnumber - Default config: none
- Node type:
power - Document node:
{"id":"<unique_id>","type":"power"} - Utility: Compute base ** exp.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
basenumber;expnumber - Outputs:
resultnumber - Default config: none
- Node type:
random_float - Document node:
{"id":"<unique_id>","type":"random_float"} - Utility: Generate a random float in [min, max].
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
minnumber: Minimum (inclusive).;maxnumber: Maximum (inclusive). - Outputs:
resultnumber - Default config: none
- Node type:
random_int - Document node:
{"id":"<unique_id>","type":"random_int"} - Utility: Generate a random integer in [min, max] (inclusive).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
minnumber: Minimum integer (inclusive).;maxnumber: Maximum integer (inclusive). - Outputs:
resultnumber - Default config: none
- Node type:
round - Document node:
{"id":"<unique_id>","type":"round"} - Utility: Round a number to N decimals.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
valuenumber;decimalsnumber - Outputs:
resultnumber - Default config: none
- Node type:
subtract - Document node:
{"id":"<unique_id>","type":"subtract"} - Utility: Compute a - b.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
anumber;bnumber - Outputs:
resultnumber - Default config: none
- Node type:
camera_analyze_media - Document node:
{"id":"<unique_id>","type":"camera_analyze_media"} - Utility: Deterministically analyze an image/video with the vision capability (no agent, no approval). Wire a captured path in; get a text description out.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;file_pathstring: Path to the media to analyze (wire from Capture Photo/Video's path).;questionstring: Optional question to focus the analysis. - Outputs:
exec-outexecution;analysisstring: The vision model's description/answer.;resultany;successboolean - Default config: none
- Node type:
camera_capture_photo - Document node:
{"id":"<unique_id>","type":"camera_capture_photo"} - Utility: Deterministically take one photo now (no agent, no approval) and wait for the file. Returns the file path + a media ref wireable into Analyze Media or an LLM/Agent node.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;camerastring: Device uid from Camera Open.;timeout_snumber: Max seconds to wait for the file (default 30). - Outputs:
exec-outexecution;pathstring: Captured image path (null on an honest deferred/on-device note).;mediaarray: Media refs for downstream analysis.;resultany;successboolean - Default config: none
- Node type:
camera_capture_video - Document node:
{"id":"<unique_id>","type":"camera_capture_video"} - Utility: Deterministically record a video clip (0.5-600s, no agent, no approval) and wait for the file.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;camerastring: Device uid from Camera Open.;duration_snumber: Clip length in seconds (default 5).;timeout_snumber: Max seconds to wait for the file. - Outputs:
exec-outexecution;pathstring: Clip path (may be null when the body keeps the movie on its own storage).;mediaarray: Media refs for downstream analysis.;resultany;successboolean - Default config: none
- Node type:
camera_close - Document node:
{"id":"<unique_id>","type":"camera_close"} - Utility: Deterministically turn the camera off and release the device (no agent, no approval).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;camerastring: Device uid from Camera Open (empty = active camera). - Outputs:
exec-outexecution;resultany;successboolean - Default config: none
- Node type:
camera_open - Document node:
{"id":"<unique_id>","type":"camera_open"} - Utility: Deterministically turn a camera on (no agent, no approval). Returns the device uid all other camera nodes use.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;camera_idstring: Discovery id from Camera List (empty = default device). - Outputs:
exec-outexecution;camerastring: Device uid for downstream camera nodes.;resultany;successboolean - Default config: none
- Node type:
edit_image - Document node:
{"id":"<unique_id>","type":"edit_image"} - Utility: Edit or transform an input image through Gateway image editing and return an image artifact.
- Gateway capability: edited_image
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;promptstring: Instruction for the image edit.;image_artifactartifact_image: Source image artifact ref. Wire from Generate Image, or use an uploaded/selected artifact.;mask_artifactartifact_image: Optional mask artifact ref.;image_providerprovider_image (provider): Optional image edit provider/backend.;image_modelmodel (model): Optional image edit model id for the selected provider.;formatstring: png, jpg, or webp.;seednumber;stepsnumber;guidance_scalenumber (guidance);guidance_2number: Optional second-stage guidance for models that expose it.;countnumber: Optional number of edited images to generate in one call.;seedsarray: Optional explicit batch seeds. When provided, their length defines the batch size unless count is also set.;lora_adaptersarray: Optional ordered LoRA adapter stack for compatible image-edit models.;strengthnumber: Optional edit strength for image-to-image backends.;negative_promptstring (negative);extraobject: Optional provider-specific image edit options. - Outputs:
exec-outexecution;image_artifactartifact_image: Artifact ref for the edited image.;image_artifactsartifacts_image: Ordered artifact refs for batched image editing.;artifact_refartifact;artifact_idstring;content_typestring;outputsobject;metaobject;successboolean - Default config: { "pinDefaults": { "format": "png" } }
- Node type:
generate_image - Document node:
{"id":"<unique_id>","type":"generate_image"} - Utility: Generate an image through Gateway vision capability and return an artifact reference.
- Gateway capability: generated_image
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;promptstring: Image prompt.;image_providerprovider_image (provider): Optional image provider/backend.;image_modelmodel (model): Optional image model id for the selected image provider.;widthnumber;heightnumber;formatstring: png, jpg, or webp.;seednumber;stepsnumber;guidance_scalenumber (guidance);guidance_2number: Optional second-stage guidance for models that expose it.;countnumber: Optional number of images to generate in one call.;seedsarray: Optional explicit batch seeds. When provided, their length defines the batch size unless count is also set.;lora_adaptersarray: Optional ordered LoRA adapter stack for compatible image models.;negative_promptstring (negative) - Outputs:
exec-outexecution;image_artifactartifact_image: Artifact ref for the generated image.;image_artifactsartifacts_image: Ordered artifact refs for batched image generation.;artifact_refartifact;artifact_idstring;content_typestring;outputsobject;metaobject;successboolean - Default config: { "pinDefaults": { "format": "png" } }
- Node type:
generate_music - Document node:
{"id":"<unique_id>","type":"generate_music"} - Utility: Generate music through Gateway music capability and return an audio artifact.
- Gateway capability: generated_music
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;promptstring: Music prompt.;music_providerprovider_music (provider): Optional Gateway music backend/provider.;music_modelmodel (model): Optional music model id for the selected music provider.;lyricsstring: Optional lyrics for vocal music backends.;duration_snumber: Optional requested duration in seconds.;formatstring: wav, mp3, or flac.;seednumber;num_inference_stepsnumber (steps);guidance_scalenumber (guidance);instrumentalboolean;enhance_promptboolean (enhance);structure_promptboolean (structure);auto_lyricsboolean;text_planner_modestring (planner);vocal_languagestring (language);negative_promptstring (negative);sample_ratenumber;bpmnumber;keyscalestring (key);timesignaturestring (time);composition_planobject (plan);positive_stylesarray (styles);negative_stylesarray (avoid_styles);planningboolean;extraobject: Optional provider-specific music-generation options. - Outputs:
exec-outexecution;music_artifactartifact_audio: Artifact ref for generated music.;audio_artifactartifact_audio: Alias artifact ref for audio-compatible downstream nodes.;artifact_refartifact;artifact_idstring;content_typestring;outputsobject;metaobject;successboolean - Default config: { "pinDefaults": { "format": "wav" } }
- Node type:
generate_video - Document node:
{"id":"<unique_id>","type":"generate_video"} - Utility: Generate a video through Gateway vision capability and return a video artifact.
- Gateway capability: generated_video
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;promptstring: Video prompt.;video_providerprovider_video (provider): Optional video provider/backend.;video_modelmodel (model): Optional video model id for the selected video provider.;widthnumber;heightnumber;framesnumber;fpsnumber;formatstring: mp4, mov, or gif.;seednumber;stepsnumber;guidance_scalenumber (guidance);guidance_2number: Optional second-stage guidance for dual-transformer video models.;countnumber: Optional number of videos to generate in one call.;seedsarray: Optional explicit batch seeds. When provided, their length defines the batch size unless count is also set.;flow_shiftnumber: Optional flow-shift control for compatible video models.;lora_adaptersarray: Optional ordered LoRA adapter stack for compatible video models.;negative_promptstring (negative);extraobject: Optional provider-specific video-generation options. - Outputs:
exec-outexecution;video_artifactartifact_video: Artifact ref for the generated video.;video_artifactsartifacts_video: Ordered artifact refs for batched video generation.;artifact_refartifact;artifact_idstring;content_typestring;outputsobject;metaobject;successboolean - Default config: { "pinDefaults": { "format": "mp4", "width": 512, "height": 512, "frames": 41, "fps": 24, "steps": 20, "guidance_scale": 5 } }
- Node type:
generate_voice - Document node:
{"id":"<unique_id>","type":"generate_voice"} - Utility: Generate speech audio through Gateway voice capability and return an audio artifact.
- Gateway capability: generated_voice
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;textstring: Text to speak.;tts_providerprovider_voice (provider): Optional media/voice provider id.;tts_modelmodel (model): Optional TTS model/language/voice model for the selected provider.;voicestring: Optional base or cloned voice for the selected provider.;profilestring: Optional voice profile override.;quality_presetstring (quality): Optional AbstractVoice quality preset: low, standard, or high.;formatstring: wav or mp3.;speednumber;instructionsstring - Outputs:
exec-outexecution;audio_artifactartifact_audio: Artifact ref for generated audio.;artifact_refartifact;artifact_idstring;content_typestring;outputsobject;metaobject;successboolean - Default config: { "pinDefaults": { "format": "wav", "quality_preset": "standard", "speed": 1 } }
- Node type:
image_to_video - Document node:
{"id":"<unique_id>","type":"image_to_video"} - Utility: Animate an input image through Gateway image-to-video capability and return a video artifact.
- Gateway capability: image_to_video
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;promptstring: Instruction for the image-to-video generation.;source_imageartifact_image: Source image artifact ref.;video_providerprovider_video (provider): Optional image-to-video provider/backend.;video_modelmodel (model): Optional image-to-video model id for the selected provider.;widthnumber;heightnumber;framesnumber;fpsnumber;formatstring: mp4, mov, or gif.;seednumber;stepsnumber;guidance_scalenumber (guidance);guidance_2number: Optional second-stage guidance for dual-transformer video models.;countnumber: Optional number of videos to generate in one call.;seedsarray: Optional explicit batch seeds. When provided, their length defines the batch size unless count is also set.;flow_shiftnumber: Optional flow-shift control for compatible video models.;lora_adaptersarray: Optional ordered LoRA adapter stack for compatible video models.;strengthnumber: Optional conditioning strength for image-to-video backends.;negative_promptstring (negative);extraobject: Optional provider-specific image-to-video options. - Outputs:
exec-outexecution;video_artifactartifact_video: Artifact ref for the generated video.;video_artifactsartifacts_video: Ordered artifact refs for batched image-to-video generation.;artifact_refartifact;artifact_idstring;content_typestring;outputsobject;metaobject;successboolean - Default config: { "pinDefaults": { "format": "mp4", "width": 512, "height": 512, "frames": 41, "fps": 24, "steps": 20, "guidance_scale": 5 } }
- Node type:
listen_voice - Document node:
{"id":"<unique_id>","type":"listen_voice"} - Utility: Pause the workflow and ask the host UI to capture a voice/audio response.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;promptstring;languagestring;stt_providerprovider_voice (provider): Optional STT provider id for host-side voice transcription.;stt_modelmodel (model): Optional STT model id for the selected voice provider.;max_duration_snumber;wait_keystring - Outputs:
exec-outexecution;audio_artifactartifact_audio;artifact_refartifact;artifact_idstring;textstring - Default config: { "pinDefaults": { "max_duration_s": 30 } }
- Node type:
transcribe_audio - Document node:
{"id":"<unique_id>","type":"transcribe_audio"} - Utility: Transcribe an audio artifact through Gateway audio capability.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;audio_artifactartifact_audio: Audio artifact ref.;stt_providerprovider_voice (provider): Optional audio/STT provider id.;languagestring;stt_modelmodel (model): Optional STT model id for the selected voice provider.;promptstring;formatstring;temperaturenumber - Outputs:
exec-outexecution;textstring;transcript_artifactartifact_text;artifact_refartifact;artifact_idstring;metaobject;successboolean - Default config: { "pinDefaults": { "format": "json", "temperature": 0 } }
- Node type:
upscale_image - Document node:
{"id":"<unique_id>","type":"upscale_image"} - Utility: Restore or upscale an input image through Gateway image upscaling and return an image artifact.
- Gateway capability: upscaled_image
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;image_artifactartifact_image: Source image artifact ref. Wire from an image node, or use an uploaded/selected artifact.;image_providerprovider_image (provider): Optional image upscaler provider/backend.;image_modelmodel (model): Optional image upscaler model id for the selected provider.;scalestring: Upscale factor such as 2x.;resolutionstring: Target shortest edge in pixels or scale factor such as 2x.;softnessnumber: Optional restoration softness in [0.0, 1.0].;seednumber;quantizenumber: Optional backend quantization hint.;vae_tilingboolean: Force tiled VAE encode/decode when true, explicitly disable it when false, or leave unset for the MLX-Gen SeedVR2 runtime policy.;formatstring: png, jpg, or webp.;extraobject: Optional provider-specific image upscaler options. - Outputs:
exec-outexecution;image_artifactartifact_image: Artifact ref for the upscaled image.;artifact_refartifact;artifact_idstring;content_typestring;outputsobject;metaobject;successboolean - Default config: { "pinDefaults": { "format": "png", "resolution": "2x", "softness": 0.25 } }
- Node type:
memact_compose - Document node:
{"id":"<unique_id>","type":"memact_compose"} - Utility: Map KG query results (packets/items) into MemAct CURRENT CONTEXT and render a MemAct system prompt for inspection.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;kg_resultobject: Connect memory_kg_query.raw (or the full node output).;stimulusstring: Optional stimulus label for trace (defaults to query_text/task).;markerstring: Prefix marker used to replace previous KG-composed context entries. Default: KG:;max_itemsnumber: Optional cap on inserted packets (after packetization/packing). - Outputs:
exec-outexecution;okboolean: True when composition succeeded.;deltaobject: MemAct delta applied to Active Memory (current_context added/removed).;traceobject: JSON-safe composition trace (selected packets, budgets, warnings).;active_memoryobject: Raw MemAct Active Memory object (run.vars._runtime.active_memory).;memact_blocksarray: Rendered MemAct block list (for UI/debug).;memact_system_promptstring: Rendered MemAct system prompt (memory blueprints + blocks). - Default config: none
- Node type:
memory_compact - Document node:
{"id":"<unique_id>","type":"memory_compact"} - Utility: Runtime-owned compaction: archives older messages into an artifact span and inserts a summary message with an LLM-visible span_id handle.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;preserve_recentnumber: Number of most recent non-system messages to keep verbatim (default 6).;compression_modestring: light | standard | heavy (default standard).;focusstring: Optional topic/focus hint for the compaction summary. - Outputs:
exec-outexecution;span_idstring: The archived conversation span_id (artifact id). Use it for tagging or recall. - Default config: none
- Node type:
memory_kg_assert - Document node:
{"id":"<unique_id>","type":"memory_kg_assert"} - Utility: Append triple assertions into AbstractMemory (provenance-first, no destructive updates).
- Gateway capability: kg_memory
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;assertionsassertions: List of {subject,predicate,object,...} assertion objects.;scopestring: run | session | global. Determines the owner_id when not explicitly provided.;span_idstring: Optional provenance pointer to a runtime span/artifact id.;owner_idstring: Optional explicit owner id override (advanced; normally derived from scope).;attributes_defaultsobject: Optional attributes merged into each assertion.attributes (defaults only; assertion keys win).;allow_custom_predicatesboolean: If true, allow custom predicates under the ex:* namespace (advanced; default false). - Outputs:
exec-outexecution;assertion_idsarray: IDs assigned by the store (implementation-specific).;countnumber: Number of asserted triples.;okboolean: True when assertion succeeded. - Default config: none
- Node type:
memory_kg_query - Document node:
{"id":"<unique_id>","type":"memory_kg_query"} - Utility: Query the AbstractMemory triple store (pattern filters + optional semantic query_text).
- Gateway capability: kg_memory
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;query_textstring: Optional semantic query. Requires embeddings to be configured in the host.;subjectstring: Optional subject filter (case-insensitive exact match).;predicatestring: Optional predicate filter (case-insensitive exact match).;objectstring: Optional object filter (case-insensitive exact match).;sincestring: Optional observed_at lower bound (ISO8601).;untilstring: Optional observed_at upper bound (ISO8601).;active_atstring: Optional validity window selector (ISO8601). Filters assertions active at that time.;scopestring: run | session | global | all (fan-out over run+session+global).;recall_levelstring: Recall effort policy: urgent | standard | deep (optional; when set, applies bounded budgets and no-silent-downgrade semantics).;owner_idstring: Optional explicit owner id override (advanced; normally derived from scope).;min_scorenumber: Optional cosine similarity threshold (semantic query_text only). Range ~[-1..1]; start with 0.2–0.4.;max_input_tokensnumber: Optional token budget for Active Memory packing (KG → prompt). If set, returns active_memory_text + packets.;modelmodel: Optional text model id used for token estimation (improves budgeting accuracy).;limitnumber: Max assertions to return (default 100). - Outputs:
exec-outexecution;itemsassertions: List of triple assertions (dicts).;countnumber: Number of returned assertions.;okboolean: True when query succeeded.;packetsarray: Packed Memory Packets (v0) for Active Memory injection (when max_input_tokens is set).;active_memory_textstring: Token-budgeted Active Memory block (when max_input_tokens is set).;packed_countnumber: Number of packets included in active_memory_text.;droppednumber: Packets dropped due to the Active Memory token budget.;estimated_tokensnumber: Estimated token count of active_memory_text.;rawobject: Raw result object (debug). - Default config: none
- Node type:
memory_kg_resolve - Document node:
{"id":"<unique_id>","type":"memory_kg_resolve"} - Utility: Resolve candidate ex:* entity ids by label (+ optional rdf:type filter), using bounded exact-match rules and optional semantic fallback.
- Gateway capability: kg_memory
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;labelstring: Entity label text to resolve (case-insensitive; whitespace collapsed).;expected_typestring: Optional rdf:type filter (e.g. schema:person, skos:concept).;scopestring: run | session | global | all (fan-out over run+session+global).;recall_levelstring: Recall effort policy: urgent | standard | deep (optional; no silent downgrade).;max_candidatesnumber: Optional cap on returned candidates (default depends on recall_level; max 50).;min_scorenumber: Optional cosine similarity threshold for semantic fallback (when enabled).;include_semanticboolean: Optional override to disable/enable semantic fallback (defaults depend on recall_level).;owner_idstring: Optional explicit owner id override (advanced; normally derived from scope). - Outputs:
exec-outexecution;candidatesarray: Resolved candidates (bounded list): {id,label,types,scope,owner_id,score,evidence}.;countnumber: Number of returned candidates.;okboolean: True when the resolver executed successfully.;rawobject: Raw result object (debug). - Default config: none
- Node type:
memory_note - Document node:
{"id":"<unique_id>","type":"memory_note"} - Utility: Store a durable memory note with optional tags/sources and a scope (run/session/global).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;keep_in_contextboolean (in_context): When true, also insert the stored note into this run's context.messages (synthetic system message). If the pin is not connected, the node checkbox is used. Default: false.;scopestring: Where to store/index the note: run (this run), session (all runs with the same session_id; owned by an internal session memory run), or global (shared global memory run). If session_id is missing, session falls back to the run-tree root.;contentstring: The note text to store durably (keep it short; prefer references in sources for large payloads).;locationstring: Optional location label (where the note was produced, e.g. "flow:my_flow/node-12"). Useful for filtering.;tagsobject: Key/value tags for filtering (e.g. {topic:"memory", person:"laurent"}). Values must be strings.;sourcesobject: Optional provenance refs (e.g. {run_id, span_ids, message_ids}). The note stores refs, not the full source content. - Outputs:
exec-outexecution;note_idstring: The stored note’s span_id / artifact_id. Use it for Recall into context (span_ids) or for precise Recall. - Default config: none
- Node type:
memory_query - Document node:
{"id":"<unique_id>","type":"memory_query"} - Utility: Query memory by text/tags and return structured results plus a rendered summary.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;querystring: Keyword query (substring match over span metadata and small previews). Combined with tags/authors/locations using AND semantics.;recall_levelstring: Recall effort policy: urgent | standard | deep (optional; when set, applies bounded budgets and no-silent-downgrade semantics).;limitnumber: Maximum number of spans to return (limit_spans). Default: 5.;tagsobject: Tag filters as key→string or key→list[string]. Reserved key "kind" is ignored.;tags_modestring: How to combine tag keys: all (AND) or any (OR). Within a single key, list values are OR.;usernamesarray: Filter by created_by (actor id). Case-insensitive exact match. Empty means no filter.;locationsarray: Filter by location metadata (or tags.location). Case-insensitive exact match.;sincestring: ISO8601 start time. Matches spans whose [from,to] intersects this range.;untilstring: ISO8601 end time. Matches spans whose [from,to] intersects this range.;scopestring: Which span index to query: run | session | global | all. (all queries run+session+global. session uses session_id authority; if session_id is missing, it falls back to the run-tree root.) - Outputs:
exec-outexecution;resultsarray: Structured match list (meta.matches). Use it to extract span_ids for Recall into context.;renderedstring: Human-readable recall summary (tool-style output string). - Default config: none
- Node type:
memory_rehydrate - Document node:
{"id":"<unique_id>","type":"memory_rehydrate"} - Utility: Insert recalled message spans into the active context so future LLM/Agent calls can “see” them.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;span_idsarray: List of span_ids (artifact_ids) to insert into context.messages. Typically comes from Recall results.;placementstring: Where to insert: after_summary | after_system | end.;recall_levelstring: Recall effort policy: urgent | standard | deep (optional; when set, applies bounded budgets and no-silent-downgrade semantics).;max_messagesnumber: Optional cap on inserted messages across all spans (None/empty = unlimited). Useful to avoid huge contexts. - Outputs:
exec-outexecution;insertednumber: Number of messages inserted into context.messages.;skippednumber: Number of messages skipped (usually due to dedup). - Default config: none
- Node type:
memory_tag - Document node:
{"id":"<unique_id>","type":"memory_tag"} - Utility: Apply/merge tags onto an existing memory span record (conversation span or memory note).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;span_idstring: Target span_id (artifact id). Also accepts a 1-based span index as a string/number in some hosts.;scopestring: Which span index to tag: run | session | global | all. (all tags every matching record across run+session+global; indices are not allowed with all.);tagsobject: Key/value tags to set (values must be strings). Reserved key "kind" is ignored.;mergeboolean: When true, merges with existing tags. When false, replaces the tag dict. Default: true. - Outputs:
exec-outexecution;successboolean: Whether the tag operation succeeded.;renderedstring: Human-readable result string. - Default config: none
- Node type:
edit_json_schema - Document node:
{"id":"<unique_id>","type":"edit_json_schema"} - Utility: Add fields to an incoming JSON Schema object. Existing schema fields are preserved; if the input is unavailable, outputs only the added fields.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults; literal value withliteral - Inputs:
schemajson_schema: Base JSON Schema object. Leave unconnected to output only the added fields. - Outputs:
schemajson_schema: JSON Schema with added fields. - Default config: none
- Node type:
add_to_list - Document node:
{"id":"<unique_id>","type":"add_to_list"} - Utility: Add to a list variable in one step: item adds one element (whatever it is), items adds each element of a list. A variable not set yet starts as an empty list.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;namestring: The list variable to add to.;itemany: Added as one element.;itemsarray: Each element of this list is added. - Outputs:
exec-outexecution;listarray: The list after the addition. - Default config: none
- Node type:
bool_var - Document node:
{"id":"<unique_id>","type":"bool_var"} - Utility: Declare a workflow-scope boolean variable (name + default).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: no node-specific document config beyond label/pin_defaults
- Inputs: none
- Outputs:
namestring;valueboolean - Default config: none
- Node type:
get_context - Document node:
{"id":"<unique_id>","type":"get_context"} - Utility: Read the current run's context namespace (run.vars.context).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: no node-specific document config beyond label/pin_defaults
- Inputs: none
- Outputs:
contextobject: Full context object from workflow state (run.vars.context).;taskstring: Convenience output for context.task.;messagesarray: Convenience output for context.messages (conversation history). - Default config: none
- Node type:
get_var - Document node:
{"id":"<unique_id>","type":"get_var"} - Utility: Read a variable from workflow state by name. Supports dotted paths (state.provider); default is returned when the path is missing.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
namestring;defaultany [type T]: Value used when the path is missing. - Outputs:
valueany [type T] - Default config: none
- Node type:
get_vars - Document node:
{"id":"<unique_id>","type":"get_vars"} - Utility: Read several variables at once: one output per variable, added as rows in the properties panel (name and type). A variable not set yet reads as empty. Folds to a compact list of names.
- Gateway capability: none
- Dynamic pin policy: dynamic outputs via the document
outputslist - Authorable config: no node-specific document config beyond label/pin_defaults
- Inputs: none
- Outputs: none
- Default config: none
- Node type:
set_var_property - Document node:
{"id":"<unique_id>","type":"set_var_property"} - Utility: Update a nested property on an object variable in workflow state (name + key), then continue.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;namestring;keystring;valueany - Outputs:
exec-outexecution;valueobject - Default config: none
- Node type:
set_var - Document node:
{"id":"<unique_id>","type":"set_var"} - Utility: Write a variable into workflow state by name (supports dotted paths for nested updates; updates run vars).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;namestring;valueany - Outputs:
exec-outexecution;valueany - Default config: none
- Node type:
set_vars - Document node:
{"id":"<unique_id>","type":"set_vars"} - Utility: Write several variables in one step. Add one row per variable in the properties panel (name, type, value; an array also says what it holds): each row is an input on the node, so a value can also be wired in.
- Gateway capability: none
- Dynamic pin policy: dynamic inputs via the document
inputslist - Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution - Outputs:
exec-outexecution - Default config: none
- Node type:
var_decl - Document node:
{"id":"<unique_id>","type":"var_decl"} - Utility: Declare a workflow-scope typed variable (name/type/default) and output its current value.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: no node-specific document config beyond label/pin_defaults
- Inputs: none
- Outputs:
namestring;valueany - Default config: none
- Node type:
emit_event - Document node:
{"id":"<unique_id>","type":"emit_event"} - Utility: Sends a named event (name and scope, with a payload) that wakes the runs waiting for it in a Wait for Event; it does not start a flow (an automation does). Outputs how many waiting runs received it.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;namestring;scopestring;payloadany;session_idstring - Outputs:
exec-outexecution;deliverednumber;delivered_toarray;wait_keystring - Default config: { "effectConfig": { "name": "my_event", "scope": "session", "sessionId": "" } }
- Node type:
on_event - Document node:
{"id":"<unique_id>","type":"on_event"} - Utility: Pauses this run until a named event arrives (an Emit Event in this or another run, or a host sending it); it does not start the flow (an automation does): only a run already waiting receives the event. Its branch then runs with the event and its payload, and it waits again when the branch ends. Name and scope pick the event (an empty name takes any event); Advanced switches it to waiting at a step for an event key, with an optional question, choices and deadline.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults; event settings withevent - Inputs:
scopestring - Outputs:
exec-outexecution;eventobject;payloadany - Default config: { "eventConfig": { "name": "my_event", "scope": "session" } }
- Node type:
on_schedule - Document node:
{"id":"<unique_id>","type":"on_schedule"} - Utility: Pauses this run until a time (ISO timestamp) or for an interval (15s, 5m, 2h, 1d; no cron); it does not start the flow (an automation does: Automation… in the editor header or the Flow Library). Its branch runs when the time comes; with recurrent on it waits again after the branch ends (the header reads "Wait Until · every 15s"). Outputs the fire time.
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults; event settings withevent - Inputs:
schedulestring (timestamp);recurrentboolean - Outputs:
exec-outexecution;timestampstring (time) - Default config: { "eventConfig": { "schedule": "15s", "recurrent": true } }
- Node type:
wait_until - Document node:
{"id":"<unique_id>","type":"wait_until"} - Utility: Pauses this run for a number of seconds, then continues. It does not start the flow (an automation does).
- Gateway capability: none
- Dynamic pin policy: template pins only
- Authorable config: input defaults with
pin_defaults - Inputs:
exec-inexecution;durationnumber - Outputs:
exec-outexecution - Default config: none
Hidden Or Deprecated Templates
call_tool/ Call Tool: rejected by the authoring validator (hidden, deprecated).image_to_image/ Image To Image: rejected by the authoring validator (hidden).text_to_video/ Text To Video: rejected by the authoring validator (hidden).wait_event/ Wait for Event: rejected by the authoring validator (hidden).