description: "Run workflow orchestration through the shared sandboxed PTC Node process runtime, with workflow hooks, subagent routing and caller-owned cancellation."
English | 中文
Run JavaScript workflows in fresh Node processes under the calling Session's file sandbox policy. Scripts keep the agent(), parallel(), pipeline(), phase() and log() hooks while subagents perform delegated work. The same execution provider serves PTC and workflows, including the opt-in Ralph loop. Runs have no overall elapsed deadline; cancellation stops the managed process and disposes child agents. The selected sandbox and subprocess providers determine enforcement and cleanup limits.
Mount this engine in a composition that provides subagents, sandbox policy and the Node PTC runtime. It supplies workflow execution for dsh-tool-workflow and for dsh-tool-ralph when explicitly enabled. Ralph remains disabled in shipped defaults. The engine rejects non-TypeScript PTC providers when it loads. Python PTC compositions must disable the workflow-ptc, tool-workflow and any enabled tool-ralph rows.
With those dependencies available, mount the engine and its model-facing consumer:
- name: '@deepseek-ai/dsh-workflow-ptc'
- name: '@deepseek-ai/dsh-tool-workflow'
| Field | Default | Meaning |
|---|---|---|
provider |
spawn |
Host-side subagent provider used by agent() calls. |
maxConcurrentAgents |
0 |
Concurrent agent() ceiling; 0 resolves from available CPU parallelism. |
maxTotalAgents |
1000 |
Total agent() calls one run may start. |
maxItemsPerCall |
4096 |
Items accepted by one parallel() or pipeline() call. |
syncTimeoutMs |
5000 |
VM timeout for the script's initial synchronous slice, in milliseconds. |
An owning consumer may set WorkflowStartRequest.subagentProvider and lower WorkflowStartRequest.maxTotalAgents for one run. Script hooks cannot change either choice. Process heap, output, control and termination limits belong to the Node PTC provider; the engine adds no overall elapsed timer. The generated configuration catalog defines accepted engine fields.
The Node PTC provider's maxPendingCalls also limits workflow concurrency: child startup, result waits and disposal use those slots. Progress batches use at most one additional slot. Leave headroom when setting maxConcurrentAgents.
The script runs with top-level await; meta and args arrive as JSON data. Every agent() call uses the configured subagent provider and the run's fixed parent. The final lossless-JSON return value becomes the run result; an ordinary child failure resolves agent() to null.
Invalid metadata, an unparseable body, an unavailable provider route or a per-run cap above the ceiling is rejected before a run is published. During execution, hook misuse and tripped cooperative caps fail the workflow. Process failures, unavailable required confinement and PTC output or control limits also fail the run.
The engine resolves the calling Session's standing file policy and cwd for PTC execution. The VM retains the documented helper API, but it is not a security boundary: code that reaches Node remains subject to the selected OS file policy. The program-visible environment is empty. Network access is not restricted by the file policy.
The workflow requests timeoutMs: null from PTC. Its initial VM slice still has syncTimeoutMs, and a caller's abort signal still applies, including an enclosing tool deadline. Cancellation immediately aborts the PTC process and pending or active subagents. The caller must dispose every run and await child cleanup; there is no separate workflow cleanup timer.
Use these references for the shared execution guarantees and workflow contracts.
Every script agent() call sends its prompt verbatim and optional model or structured-output schema to a subagent provider. Each child sees that provider's own context; phase and log narration stays on observer events.
Each child consumes its own model context. Cooperative concurrency, total-agent and item caps limit ordinary script fan-out; child histories do not join the parent history directly.
Independent of the parent request cache and of sibling children. Each child can reuse only a byte-identical prefix under its own provider, model, prompt and schema.
The tool consumer presents the final JSON value and child count, or a workflow failure. Intermediate child outputs remain available to the script. Script parsing, helper misuse, child infrastructure failures and PTC execution failures produce errors; ordinary child failure produces null for the script to handle.
The engine adds no direct parent tokens. PTC bounds the outer program result, and the tool consumer owns its model-facing rendering and retention.
Append-only; newly visible content follows the reusable request prefix.
These limits qualify workflow execution and cleanup.
instanceof Error inside scripts — branch on stable fields such as name and code.