deepseek-harness/docs
Tianyi Cui 1d43ea3cd5 workflow: dynamic workflows — script-driven multi-agent orchestration
A new capability family at packages/workflow/ in the bash seam shape,
modeled on Claude Code's dynamic workflows: the model writes a JavaScript
orchestration script (export const meta = {...} + plain-JS body), a runtime
executes it, and the script — not the conversation — holds the loop, the
branching, and the intermediate results.

- dsh-workflow (ctx.workflows): abstract WorkflowService + run vocabulary
  (WorkflowRun whose result NEVER rejects) + observe-only workflow/* events
  carrying data snapshots (id + meta, never the live run), per-listener
  contained like subagent/*.
- dsh-workflow-vm: in-process node:vm engine. Meta extraction via a
  string/comment-aware scanner (template interpolation rejected; literal
  evaluated alone in an empty timed context; statement blanked line-
  preservingly so stacks keep script line numbers). Hooks: agent(prompt,
  {label, phase, schema, model}) over ctx.subagents, parallel(), pipeline()
  (no cross-stage barrier), phase(), log(), args. Fatal-vs-null discipline:
  hook misuse (unknown/deferred options, bad arguments, unsupported
  schemas, tripped caps, seam start failures, cancellation) throws fatal
  WorkflowErrors the combinators RE-THROW — never dissolved into the
  per-item null reserved for child failures. Realm boundary: inbound values
  materialized by descriptor walks that never invoke accessors (defineProperty
  copies, __proto__-safe); outbound values rebuilt in-realm via the
  context's own JSON.parse. Determinism bans (Date.now/Math.random/argless
  new Date) kept so future resume support cannot break scripts. Caps and
  timeouts are validated Config. Every hook promise carries a no-op
  rejection consumer (app-boot exits on unhandled rejections).
- dsh-tool-workflow: the model-facing workflow tool, synchronous like
  dsh-tool-subagent (start → await → try/finally dispose; abort bridged;
  non-completed → isError). Generic render card titled by a textual
  meta.name sniff. The tool description carries the authoring contract.

Wired into examples/{coding-agent,acp-agent} with explicit-ask-only
guidance. Coverage at every tier: unit (meta scanner, materializer incl.
counting-getter and __proto__ regressions, combinator semantics,
concurrency ceiling, caps, cancellation, no-unhandled-rejection abandon),
integration over the real spawn stack, with-key e2e (real two-phase run +
the tool through the registry pipeline), and a recorded ACP snapshot
scenario (workflow-run, 1 child session). RFC:
docs/rfc/implemented/feature/2026-07-05-dynamic-workflows.md (deferred
work explicitly listed). AGENTS.md budget 1575 → 1590 for the new group's
layout line.
2026-07-05 13:29:35 +08:00
..
cookbook Merge branch 'simpl-a2-vocab' into simpl-a3-knobs 2026-07-04 21:20:55 +08:00
cordis-catalog workflow: dynamic workflows — script-driven multi-agent orchestration 2026-07-05 13:29:35 +08:00
core-data-structures workflow: dynamic workflows — script-driven multi-agent orchestration 2026-07-05 13:29:35 +08:00
i18n docs: equal-authority pairing with sidecar consistency records 2026-07-03 07:41:24 -07:00
persistence-catalog Split the cordis catalog into separate events and services documents 2026-07-05 00:45:06 +08:00
postmortem fix(docs): address Codex review round 3 — last three moved-policy citations 2026-07-04 16:02:39 +08:00
rfc workflow: dynamic workflows — script-driven multi-agent orchestration 2026-07-05 13:29:35 +08:00
tool-catalog workflow: dynamic workflows — script-driven multi-agent orchestration 2026-07-05 13:29:35 +08:00
AGENTS.md Split the cordis catalog into separate events and services documents 2026-07-05 00:45:06 +08:00
architecture.md workflow: dynamic workflows — script-driven multi-agent orchestration 2026-07-05 13:29:35 +08:00
defensive-patterns.md docs(AGENTS): rewrite the root standing orders to the 1,500-word budget 2026-07-04 14:22:47 +08:00
development.i18n.yaml Split the cordis catalog into separate events and services documents 2026-07-05 00:45:06 +08:00
development.md Split the cordis catalog into separate events and services documents 2026-07-05 00:45:06 +08:00
development.zh.md Split the cordis catalog into separate events and services documents 2026-07-05 00:45:06 +08:00
module-graph.md workflow: dynamic workflows — script-driven multi-agent orchestration 2026-07-05 13:29:35 +08:00
testing.md fix(docs): address ds-review-bot — the e2e tier is not DeepSeek-only 2026-07-04 16:43:23 +08:00