DAG Nodes Specification
Purpose
Umbrella contract for the packages/dag-nodes/<slug> family. Each node ships as its own package
(published as @robota-sdk/dag-node-<slug>), exporting IDagNodeDefinition implementations. There
is no shared packages/dag-nodes/src/; each leaf package documents its own node definitions in its
own docs/SPEC.md.
Contract
- All node definitions extend
AbstractNodeDefinitionfrom@robota-sdk/dag-node. - Node packages depend on
dag-core/dag-node; several also consume theagent-*subsystem one-way —agent-corefor definition contracts and factories for LLM/media/instant-node families,agent-toolsfor the tool node,agent-framework/agent-interface-transportfor the skill node. This DAG→agent dependency is one-directional: noagent-*package depends back on any DAG package. dag-node-*packages are provider-neutral leaves. LLM nodes receive an injectedIProviderDefinition[]; media nodes receive an injectedIMediaProviderDefinition. Definitions, not provider instances, are passed to nodes so credentials and model capability configuration are resolved at execution time.
Non-goals
- Concrete
agent-provider-*SDK dependencies belong to a composition aggregator such asagent-builtin-providers, never to a DAG node package. - Node packages that accept caller-supplied
nodeTypestrings at runtime (e.g.instant-node's prompt-backed definitions) do not register a static identity here; the factory package owns validation and persistence of those identities.