Aller au contenu
Agentivity
Star on GitHub Commencer gratuitement

Core nodes: conditions, loops, data and code

Ce contenu n’est pas encore disponible dans votre langue.

Generated on 2026-10-20 from a running server by tools/reference.mjs. Do not edit this page by hand.

The building blocks of a workflow that use no AI: conditions, loops, data, variables, files, display and code.

This page lists 16 nodes. How to read a node reference.

Custom script nodes.

Step · in the catalogue: Core > Code · type core.code.javascript

Runs a JavaScript script (a real, sandboxed Node.js process) and returns its result.

When to use it. To compute something no other step does, such as a total, a date or a reshaped JSON, with a short JavaScript script. Each field of the object the script returns becomes an output of the step.

Fields

NameTypeRequiredDefaultWhat it is
timeoutSecondsNumberno5Execution timeout in seconds.
codeTextno1 + 1;JavaScript source. Reference a prior node’s output directly, e.g. some_node.field — it’s substituted into the script before it runs. The last evaluated expression becomes output — no return needed unless you wrap your own function.

Entries. In (Entry point)

Exits. Out (Default output port)

Loops, conditions, branching.

Step · in the catalogue: Core > Control Flow · type core.firstof

Selects the first available value from multiple inputs. Does not wait for all connections.

When to use it. To go on with whichever branch has run, when only one of several branches runs, for example a value read from storage or else computed. Not for choosing a path: use If or Switch instead.

Fields

NameTypeRequiredDefaultWhat it is
modeTextnopassThroughSelection mode: ‘passThrough’, ‘preferFirst’, ‘preferNonNull’.
wait_for_allBooleannofalseWait for all connections before selecting.
value1TextnoManual value for input1 (if not connected).
value2TextnoManual value for input2 (if not connected).
value3TextnoManual value for input3 (if not connected).
value4TextnoManual value for input4 (if not connected).

Outputs

NameTypeWhat it holds
valueTextSelected value
sourceTextWhich input provided the value
inputs_receivedNumberNumber of inputs that were received

Entries. Input 1 (First input), Input 2 (Second input), Input 3 (Third input (optional)), Input 4 (Fourth input (optional))

Exits. Out (Selected output)

Step · in the catalogue: Core > Control Flow · type core.foreach

Goes through a list one item at a time, and runs the steps connected to Loop for each of them.

When to use it. To repeat the same steps for every item of a list: a JSON list, or a list given by an earlier step. To gather what each item produces into one list, add a Collect step in the loop.

Fields

NameTypeRequiredDefaultWhat it is
collectionTextyesThe list to go through: a JSON list, or a list given by an earlier step.

Outputs

NameTypeWhat it holds
current_itemTextThe item being handled
current_indexNumberIts place in the list, counting from 0
total_countNumberHow many items the list has
is_firstBooleanWhether it is the first item
is_lastBooleanWhether it is the last item
countNumberHow many items are done

Entries. In (Starts going through the list)

Exits. Loop (Runs once for each item of the list), Out (Goes on once every item is done)

Step · in the catalogue: Core > Control Flow · type core.if

Evaluates a condition and branches execution to either the true or false path.

When to use it. To take one of two paths depending on a condition, for example whether a value is empty or above a threshold. For more than two paths, use Switch instead.

Fields

NameTypeRequiredDefaultWhat it is
conditionsStructuredno{"combinator":"all","rows":[]}Structured conditions (field, operator, value rows) — used instead of condition when it has rows. Build it with the condition builder instead of writing an expression.
conditionBooleannoThe condition to evaluate. Ignored when conditions has rows.
true_branch_labelTextnoOptional label for the true branch (for debugging).
false_branch_labelTextnoOptional label for the false branch (for debugging).

Outputs

NameTypeWhat it holds
resultBooleanThe evaluated condition result
branch_takenTextThe branch that was taken (true or false)

Entries. In (Entry point)

Exits. True (Execute this path if condition is true), False (Execute this path if condition is false)

Step · in the catalogue: Core > Control Flow · type core.switch

Evaluates a value and routes execution to different branches based on matching cases.

When to use it. To send the flow down one of several paths depending on a value, for example a category chosen by an AI step, with a default path when nothing matches. For a simple yes or no, use If instead.

Fields

NameTypeRequiredDefaultWhat it is
valueTextyesValue to evaluate.
modeTextnoexactMatching mode: ‘exact’, ‘contains’, ‘regex’.
default_branchTextnodefaultDefault branch if no case matches.

Outputs

NameTypeWhat it holds
matched_caseTextThe case value that matched
branch_takenTextThe branch port that was taken

Entries. In (Entry point)

Data manipulation.

Step · in the catalogue: Core > Data · type core.collect

Collects items into an array across multiple executions.

When to use it. To gather into one list what the steps inside a For Each produce for each item, for example one summary per document. Each time it runs it adds one item and gives the whole list so far.

Fields

NameTypeRequiredDefaultWhat it is
itemTextyesItem to add to the collection.
resetBooleannofalseClear collection before adding.

Outputs

NameTypeWhat it holds
itemsTextAll collected items as an array
countNumberNumber of items in collection

Resource · in the catalogue: Core > Data · type workspace.datatable

References a shared Data Table asset (schema and rows managed under Resources).

When to use it. To choose which Data Table, created under Resources, a DataTable step works on. It does nothing by itself: connect it to a DataTable step.

Effects. writes in the workspace.

Fields

NameTypeRequiredDefaultWhat it is
table_idAssetRefyesThe shared Data Table asset to bind to.

Plugs into a place that accepts data.table.*.

Step · in the catalogue: Core > Data · type core.datatable

Provides CRUD operations on a shared Data Table asset.

When to use it. To add, change, delete or look up rows of a Data Table during a run, or to compute totals on it with one read-only SQL SELECT. Connect a Data Table step to say which table.

Effects. writes in the workspace.

Fields

NameTypeRequiredDefaultWhat it is
operationChoiceyesselectOperation to perform. Choices: insert, update, delete, select, find, query.
sqlTextnoOne read-only SQL SELECT on the table, which it names datatable (query): totals, groups, averages… e.g. SELECT customer, SUM(amount) AS total FROM datatable GROUP BY customer. Done by the database, on this table only; at most ‘limit’ rows, with the total.
dataTextnoData for insert/update (object).
idNumberyesRow ID for update/delete/find.
whereTextnoConditions a row must all meet (select), as JSON: [{ “column”: “amount”, “op”: ”>”, “value”: 100 }]. Operators: =, !=, contains, starts_with, >, >=, <, <=, between, is_empty, is_not_empty; ‘between’ takes [lowest, highest].
where_columnTextnoColumn name for where clause (select).
where_valueTextnoValue for where clause (select).
order_byTextnoHow to sort the rows found (select), e.g. “amount desc, customer” — by id when empty.
limitNumbernoThe most rows to give (select, query) — 1000 at most, and when empty; 0 gives only the total (select).
offsetNumbernoHow many rows found to skip (select), to read the next page.

Outputs

NameTypeWhat it holds
rowTextAffected row (insert/update/find)
rowsTextSelected rows (select)
successBooleanOperation succeeded
countNumberNumber of affected/selected rows
totalNumberNumber of rows the select found in all, even beyond its limit

Entries. In (Entry point)

Exits. Out (Default output port)

Places for resources

PlaceRequiredAcceptsHow many
Data Tableyesdata.table.*1

Step · in the catalogue: Core > Data · type core.merge

Merges two objects into one, with overlay properties overriding base.

When to use it. To combine two JSON objects into one, the fields of the second replacing those of the first, for example default settings and the values of the current item. Not for lists: use Collect to build a list.

Fields

NameTypeRequiredDefaultWhat it is
baseTextnoBase object to merge into.
overlayTextyesObject whose properties override base.
deepBooleannofalseDeep merge nested objects.

Outputs

NameTypeWhat it holds
resultTextMerged object

Nodes that render a value directly on the canvas.

Display step · in the catalogue: Core > Display · type core.display.audio

Displays a generated or referenced audio file directly on the node.

When to use it. To listen to audio made by an earlier step, such as text-to-speech, right on the canvas. It passes the audio on unchanged.

Fields

NameTypeRequiredDefaultWhat it is
valueAudioRefyesThe audio to display. Bind it to a text-to-speech node’s output, e.g. some_node.audio.

Outputs

NameTypeWhat it holds
valueAudioRefThe same audio reference, passed through unchanged.

Entries. In (Entry point)

Exits. Out (Default output port)

Display step · in the catalogue: Core > Display · type core.display.console

Displays a value — text, numbers, or JSON — directly on the node.

When to use it. To see a value (text, number or JSON) right on the canvas while building or checking a workflow. It passes the value on unchanged.

Fields

NameTypeRequiredDefaultWhat it is
valueTextyesThe value to display. Bind it to any prior node’s output, e.g. some_node.output.

Outputs

NameTypeWhat it holds
valueTextThe same value, passed through unchanged.

Entries. In (Entry point)

Exits. Out (Default output port)

Display step · in the catalogue: Core > Display · type core.display.image

Displays a generated or referenced image directly on the node.

When to use it. To see an image made by an earlier step, such as an image generator, right on the canvas. It passes the image on unchanged.

Fields

NameTypeRequiredDefaultWhat it is
valueImageRefyesThe image to display. Bind it to an image generator’s output, e.g. some_node.image.

Outputs

NameTypeWhat it holds
valueImageRefThe same image reference, passed through unchanged.

Entries. In (Entry point)

Exits. Out (Default output port)

File-related workflow nodes.

Step · in the catalogue: Core > File · type core.file.exists

Checks if a file exists at the specified path.

When to use it. To check whether a file is on the server’s disk at a given path, for example to skip work already done. For a file that must also be recent, use File Is Fresh instead.

Fields

NameTypeRequiredDefaultWhat it is
file_pathTextyesPath to the file to check.

Outputs

NameTypeWhat it holds
existsBooleanWhether the file exists
file_pathTextThe file path that was checked

Entries. In (Entry point)

Exits. Out (Default output port)

Step · in the catalogue: Core > File · type core.file.is_fresh

Checks if a file exists and was modified within the specified time window.

When to use it. To reuse a file saved earlier on the server’s disk only while it is recent enough (24 hours unless you set a maximum age in minutes), and make it again otherwise. To only check that it is there, use File Exists instead.

Fields

NameTypeRequiredDefaultWhat it is
file_pathTextyesPath to the file to check.
max_age_minutesNumbernoMaximum age in minutes for the file to be considered fresh.

Outputs

NameTypeWhat it holds
isFreshBooleanWhether the file exists and is not older than the maximum age
existsBooleanWhether the file exists
file_pathTextThe file path that was checked
age_minutesNumberAge of the file in minutes (if it exists)
last_modifiedTextLast modification time (ISO 8601 format)

Entries. In (Entry point)

Exits. Out (Default output port)

Variable and workflow state management.

Step · in the catalogue: Core > Variables State · type core.set

Sets workflow variables from parameters or state values.

When to use it. To give names to values, typed in the step or taken from earlier steps, so later steps can use them under those names. Handy at the start of a workflow to gather its settings in one place.

Outputs

One output per field configured in the node, named after the field.

Exits. Out (Default output port)

Sub-workflow orchestration.

Step · in the catalogue: Core > Workflow · type workflow_node

Calls another workflow of your library with a message, and gives what it produced.

When to use it. To run another workflow of your library as one step of this one, and use what it produced. If that workflow waits for a person, this one waits with it.

Effects. costs, runs other things.

Fields

NameTypeRequiredDefaultWhat it is
entity_idTextyesThe workflow of your library to call.
inputTextyesMessage sent to the workflow.

Outputs

NameTypeWhat it holds
outputTextThe final answer of the workflow.

Any named output that the workflow itself declares is added next to this one, under its own name.

Entries. In (Entry point)

Exits. Out (The answer of the workflow), Error (Execution error if any)