* docs: complete node editor node reference glossary (#107) - generated by new nodes.tools glossary subcommand, 47 categorized pages covering all 403 nodes, docstring gap fixes, help-agent docs-index entries * docs: fix Jinja2 Format discoverability - document dynamic-input template variables, move node to string page, link key inference from dynamic-input notes, strip links from index summaries * help agent: keep node reference out of the chat prompt - collapse glossary entries to one pointer line (~19k chars saved), agent retrieves node info via search_docs/read_doc tool calls * help agent: replace in-prompt docs index with find_docs lookup tool - prompt carries a 13-line section overview (~1.5k chars vs ~66k), pages located via keyword-scored find_docs at runtime * changelog: help agent prompt slimming + find_docs lookup * docs: sort node reference index and nav alphabetically by page title * review: move module constants into top-of-file constant blocks (glossary MAX_DEFAULT_LENGTH; docs SECTION_DESCRIPTIONS, _FIND_STOPWORDS, FIND_DOCS_LIMIT) * review: word-boundary find_docs scoring with plural/-ing folds, find_docs+section_overview unit tests, jinja2 template field description override * docs: help agent overview no longer claims an in-prompt index of all documentation pages * docs: full node docstring audit pass - 335 classes audited by 5 agents, ~89 accuracy fixes (nonexistent/misnamed sockets, wrong behavior claims), ~94 expansions, 5 factually-wrong PropertyField descriptions corrected, glossary regenerated
11 KiB
Dict And List Nodes
Build and manipulate dictionaries and lists. The Dict Collector and List Collector aggregate any number of inputs through dynamic sockets — see Collector Nodes for how key inference works with Make Key-Value Pair.
14 nodes.
| Node | Registry path |
|---|---|
| Combine Lists | data/CombineLists |
| Dict Collector | data/DictCollector |
| Dict Get | data/DictGet |
| Dict Get (Path) | data/DictGetPath |
| Dict To Key-Value Pairs | data/DictKeyValuePairs |
| Dict Pop | data/DictPop |
| Dict Set | data/DictSet |
| Dict Update | data/DictUpdate |
| List Append | data/ListAppend |
| List Collector | data/ListCollector |
| List Remove | data/ListRemove |
| Make Dict | data/MakeDict |
| Make Key-Value Pair | data/MakeKeyValuePair |
| Make List | data/MakeList |
Combine Lists
data/CombineLists
Combines multiple lists into a single list
Each connected dynamic input must be a list; their items are appended to the result in socket order.
Inputs
| Input | Type | Description |
|---|---|---|
list |
list |
(optional) Base list to extend (optional - a new list is created if not provided) |
This node supports dynamic inputs - additional input sockets can be added in the editor as needed, and connected values are collected with key inference (see Collector Nodes).
Outputs
| Output | Type | Description |
|---|---|---|
list |
list |
The combined list |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
create_copy |
bool |
True |
Create a copy of the list |
Dict Collector
data/DictCollector
Collects key-value pairs into a dictionary with dynamic inputs. New item sockets appear as connections are made.
For each connected item the key is inferred: if the value is a
(key, value) tuple (e.g., from Make Key-Value Pair) that key is used;
otherwise the key is derived from the source socket - for sockets named
value, the source node's name, key or attribute input is used,
falling back to the source socket name.
Inputs
| Input | Type | Description |
|---|---|---|
dict |
dict |
(optional) Base dictionary to collect into (optional - a new dictionary is created if not provided) |
This node supports dynamic inputs - additional input sockets can be added in the editor as needed, and connected values are collected with key inference (see Collector Nodes).
Outputs
| Output | Type | Description |
|---|---|---|
dict |
dict |
The collected dictionary |
Dict Get
data/DictGet
Retrieves a value from a dictionary
Inputs
| Input | Type | Description |
|---|---|---|
dict |
dict |
Dictionary |
key |
str |
Key |
Outputs
| Output | Type | Description |
|---|---|---|
value |
any |
The value for the key, or None if the key is not present |
key |
str |
The key input, passed through |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
key |
str |
unset |
Key |
Dict Get (Path)
data/DictGetPath
Retrieves a value from a nested dict (or list-of-dicts) using a dotted path.
Supports:
- Nested dict keys: "modes.generate_arc.close_arc"
- List indices: "items.0.name"
- Missing paths return the
defaultinput (or None if unset) - Any non-traversable segment short-circuits to
default
Downstream DynamicSocketNodeBase collectors (DictCollector, UpdateObject)
auto-infer the collector key from the last segment of path via the
key property set during run(). E.g. modes.generate_arc.close_arc
yields a collector key of close_arc.
Inputs
| Input | Type | Description |
|---|---|---|
dict |
dict |
Dictionary (or any traversable structure) |
path |
str |
(optional) Dotted path string |
default |
any |
Fallback value when the path does not fully resolve (optional) |
Outputs
| Output | Type | Description |
|---|---|---|
value |
any |
The resolved value, or default if the path does not resolve |
found |
bool |
True if the full path was resolved, False if default was used |
path |
str |
The path that was attempted (echoed for graph readability) |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
path |
str |
"" |
Dotted path to the value (e.g. 'modes.generate_arc.close_arc') |
Dict To Key-Value Pairs
data/DictKeyValuePairs
Creates a list of key-value pairs from a dictionary
Inputs
| Input | Type | Description |
|---|---|---|
dict |
dict |
Dictionary to convert |
Outputs
| Output | Type | Description |
|---|---|---|
dict |
dict |
The dict input, passed through |
kvs |
list |
List of (key, value) tuples |
Dict Pop
data/DictPop
Pops a value from a dictionary
Inputs
| Input | Type | Description |
|---|---|---|
dict |
dict |
Dictionary |
key |
str |
Key |
Outputs
| Output | Type | Description |
|---|---|---|
dict |
dict |
The dictionary with the key removed |
value |
any |
The popped value, or None if the key was not present |
key |
str |
The key input, passed through |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
key |
str |
unset |
Key |
Dict Set
data/DictSet
Set a value in a dictionary
Inputs
| Input | Type | Description |
|---|---|---|
dict |
dict |
(optional) Dictionary - if not provided, a new dictionary will be created |
key |
str |
(optional) Key |
value |
any |
Value |
Outputs
| Output | Type | Description |
|---|---|---|
dict |
dict |
Dictionary |
key |
str |
Key |
value |
any |
Value |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
key |
str |
unset |
Key |
Dict Update
data/DictUpdate
Updates a dictionary from a list of other dictionaries
Each dictionary in the list is applied in order. By default this is a shallow dict.update(); enable merge to deep-merge nested dictionaries instead of replacing them. By default the target dictionary is modified in place; enable create_copy to leave the input untouched.
Inputs
| Input | Type | Description |
|---|---|---|
state |
any |
The graph state |
dict |
dict |
The target dictionary to update |
dicts |
list |
List of dictionaries to apply to the target |
Outputs
| Output | Type | Description |
|---|---|---|
state |
any |
The state input, passed through |
dict |
dict |
The updated dictionary |
dicts |
list |
The dicts input, passed through |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
create_copy |
bool |
False |
Create a copy of the dictionary |
merge |
bool |
False |
Perform a deep merge |
List Append
data/ListAppend
Appends an item to a list
Inputs
| Input | Type | Description |
|---|---|---|
list |
list |
(optional) List to append to (optional - a new list is created if not provided) |
item |
any |
Item to append |
Outputs
| Output | Type | Description |
|---|---|---|
list |
list |
The list with the item appended |
item |
any |
The item input, passed through |
List Collector
data/ListCollector
Collects items into a list with dynamic inputs. New item sockets appear as connections are made, and each connected value is appended to the list in socket order.
Inputs
| Input | Type | Description |
|---|---|---|
list |
list |
(optional) Base list to append to (optional - a new list is created if not provided) |
This node supports dynamic inputs - additional input sockets can be added in the editor as needed, and connected values are collected with key inference (see Collector Nodes).
Outputs
| Output | Type | Description |
|---|---|---|
list |
list |
The collected list |
List Remove
data/ListRemove
Removes an item from a list
Inputs
| Input | Type | Description |
|---|---|---|
list |
list |
List |
item |
any |
Item |
Outputs
| Output | Type | Description |
|---|---|---|
list |
list |
List |
item |
any |
Item |
removed |
bool |
True if item was removed, False if not |
Make Dict
data/MakeDict
Creates a new dictionary, optionally initialized from the data property
The data property is deep-copied on every execution, so downstream mutation of the dictionary does not alter the property.
Inputs
| Input | Type | Description |
|---|---|---|
state |
any |
(optional) Graph state |
Outputs
| Output | Type | Description |
|---|---|---|
state |
any |
The state input, passed through |
dict |
dict |
The new dictionary |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
data |
dict |
{} |
Data |
Make Key-Value Pair
data/MakeKeyValuePair
Creates a key-value pair tuple from separate key and value inputs. Outputs a tuple (key, value) that can be connected to DictCollector.
Inputs
| Input | Type | Description |
|---|---|---|
key |
str |
The key (optional) |
value |
any |
The value (optional) |
Outputs
| Output | Type | Description |
|---|---|---|
kv |
key/value |
The (key, value) tuple |
key |
str |
The key input, passed through |
value |
any |
The value input, passed through |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
key |
str |
"" |
Key |
value |
any |
"" |
Value |
Make List
data/MakeList
Creates a new list, optionally initialized from the items property
The items property is deep-copied on every execution, so downstream mutation of the list does not alter the property.
Inputs
| Input | Type | Description |
|---|---|---|
state |
any |
(optional) Graph state |
item_type |
str |
Declared type of the items in the list (optional) |
Outputs
| Output | Type | Description |
|---|---|---|
state |
any |
The state input, passed through |
list |
list |
The new list |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
item_type |
str |
"any" |
Type of items in the list. Choices are generated at runtime. |
items |
list |
[] |
Initial items in the list |