API map
Dromio has four public layers. Start at the smallest layer that owns the behavior you need.
| Layer | APIs | Owns |
|---|---|---|
| Step | step, step.model, step.delegate, step.ask, step.approval, step.waitFor, step.sleep, step.gate, step.workflow, step.router, step.fork, step.forEach, step.evaluate, step.promptedContract | One visible unit of work or one durable boundary |
| Workflow | workflow, workflow.judge, workflow.judgeUntil, workflow.clarifyUntil | Graph composition and reusable multi-node patterns |
| Workflow App | workflowApp, createWorkflowAppHost, runtime and surface adapters | Registration, model/runtime injection, and product-facing execution |
| Control plane | createWorkflowControlPlane, HTTP adapter, MCP provider, stores and workers | Durable runs, triggers, hooks, signals, jobs, and remote operation |
Workflow App registration, executable surfaces, and durable hosting are covered by Workflow Apps. The control-plane MCP provider exposes discovery, triggering, run inspection, human answers, and hook resumption; External harnesses owns the complete tool and transport lifecycle.
Primitive or bundled workflow?
A primitive describes one runtime behavior. A bundled workflow.* API authors
multiple real nodes. workflow.judgeUntil(), for example, is not one opaque
step: its production, assessment, deterministic gate, revision, and retry
boundaries remain visible in the graph.
Compatibility APIs step.evaluate() and step.promptedContract() remain
supported, but new workflows should prefer the visible workflow bundles.
Execution kind and role
Execution kind controls what the runtime does. A role such as assess,
revise, or merge explains why a node exists inside a bundled workflow. See
Composition
for the canonical explanation.
Continue to the complete authoring reference or choose the external harness path.