mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
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.
366 lines
11 KiB
JSON
366 lines
11 KiB
JSON
{
|
|
"comment": "Maps each ` ```ts type-equiv ` block (by doc + declared symbol) to the source symbol it must match verbatim. verify-type-equiv.ts enforces a 1:1 correspondence: every type-equiv block has exactly one entry here, and every entry resolves to exactly one block. Add an entry when you add a type-equiv block; remove it when you remove the block.",
|
|
"entries": [
|
|
{
|
|
"doc": "docs/core-data-structures/core.md",
|
|
"symbol": "Branded",
|
|
"source": "packages/util/brand/src/index.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/core.md",
|
|
"symbol": "ContentBlockMap",
|
|
"source": "packages/llm/llm/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/core.md",
|
|
"symbol": "Message",
|
|
"source": "packages/llm/llm/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/core.md",
|
|
"symbol": "MessageSourceMap",
|
|
"source": "packages/llm/llm/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/core.md",
|
|
"symbol": "FinishReasonMap",
|
|
"source": "packages/llm/llm/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/core.md",
|
|
"symbol": "GenerateOptions",
|
|
"source": "packages/llm/llm/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/core.md",
|
|
"symbol": "ToolSchema",
|
|
"source": "packages/llm/llm/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/core.md",
|
|
"symbol": "SessionEvent",
|
|
"source": "packages/core/session/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/core.md",
|
|
"symbol": "Agent",
|
|
"source": "packages/core/agent/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/core.md",
|
|
"symbol": "HookContext",
|
|
"source": "packages/core/agent/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/core.md",
|
|
"symbol": "PromptDecision",
|
|
"source": "packages/core/agent/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/core.md",
|
|
"symbol": "ContinuationDecision",
|
|
"source": "packages/core/agent/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/core.md",
|
|
"symbol": "SessionStartSource",
|
|
"source": "packages/core/agent/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/llm-streaming.md",
|
|
"symbol": "StreamChunk",
|
|
"source": "packages/llm/llm/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/llm-streaming.md",
|
|
"symbol": "TokenUsage",
|
|
"source": "packages/llm/llm/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/llm-streaming.md",
|
|
"symbol": "ContentBlockMap",
|
|
"source": "packages/llm/llm/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/llm-streaming.md",
|
|
"symbol": "AppIdentity",
|
|
"source": "packages/llm/llm/src/attribution.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/session.md",
|
|
"symbol": "SessionEventMap",
|
|
"source": "packages/core/session/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/session.md",
|
|
"symbol": "TodoItem",
|
|
"source": "packages/core/session/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/session.md",
|
|
"symbol": "SessionEvent",
|
|
"source": "packages/core/session/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/session.md",
|
|
"symbol": "TurnTriggerMap",
|
|
"source": "packages/core/session/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/session.md",
|
|
"symbol": "TurnEndReasonMap",
|
|
"source": "packages/core/session/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/session.md",
|
|
"symbol": "SurfaceEventType",
|
|
"source": "packages/core/session/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/session.md",
|
|
"symbol": "SurfaceOp",
|
|
"source": "packages/core/session/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/session.md",
|
|
"symbol": "SurfaceIntent",
|
|
"source": "packages/core/session/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/session.md",
|
|
"symbol": "SurfaceNode",
|
|
"source": "packages/core/session/src/surface.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/persistence.md",
|
|
"symbol": "SessionHeader",
|
|
"source": "packages/core/session/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/persistence.md",
|
|
"symbol": "CreateSessionOptions",
|
|
"source": "packages/core/session/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/tools.md",
|
|
"symbol": "ToolDefinition",
|
|
"source": "packages/core/tools/src/index.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/tools.md",
|
|
"symbol": "SchemaProp",
|
|
"source": "packages/core/tools/src/schema.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/tools.md",
|
|
"symbol": "SchemaSpec",
|
|
"source": "packages/core/tools/src/schema.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/tools.md",
|
|
"symbol": "InferArgs",
|
|
"source": "packages/core/tools/src/schema.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/tools.md",
|
|
"symbol": "ToolExecution",
|
|
"source": "packages/core/tools/src/index.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/tools.md",
|
|
"symbol": "ToolExecutionResult",
|
|
"source": "packages/core/tools/src/index.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/tools.md",
|
|
"symbol": "PreToolDecision",
|
|
"source": "packages/core/tools/src/index.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/tools.md",
|
|
"symbol": "PostToolDecision",
|
|
"source": "packages/core/tools/src/index.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/bash.md",
|
|
"symbol": "BashExecRequest",
|
|
"source": "packages/bash/bash/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/bash.md",
|
|
"symbol": "BashExecSpec",
|
|
"source": "packages/bash/bash/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/bash.md",
|
|
"symbol": "BashRunResult",
|
|
"source": "packages/bash/bash/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/bash.md",
|
|
"symbol": "CollectedOutput",
|
|
"source": "packages/bash/bash/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/bash.md",
|
|
"symbol": "BashTask",
|
|
"source": "packages/bash/bash/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/bash.md",
|
|
"symbol": "BashTaskRead",
|
|
"source": "packages/bash/bash/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/filesystem.md",
|
|
"symbol": "FsTarget",
|
|
"source": "packages/fs/fs/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/filesystem.md",
|
|
"symbol": "FsTargetKey",
|
|
"source": "packages/fs/fs/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/filesystem.md",
|
|
"symbol": "FsVersion",
|
|
"source": "packages/fs/fs/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/filesystem.md",
|
|
"symbol": "FsInfo",
|
|
"source": "packages/fs/fs/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/filesystem.md",
|
|
"symbol": "FsDirEntry",
|
|
"source": "packages/fs/fs/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/filesystem.md",
|
|
"symbol": "FsWriteIntent",
|
|
"source": "packages/fs/fs/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/filesystem.md",
|
|
"symbol": "FsWriteOutcome",
|
|
"source": "packages/fs/fs/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/filesystem.md",
|
|
"symbol": "FsEditRequest",
|
|
"source": "packages/fs/fs/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/filesystem.md",
|
|
"symbol": "FsEditOutcome",
|
|
"source": "packages/fs/fs/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/filesystem.md",
|
|
"symbol": "FsErrorCode",
|
|
"source": "packages/fs/fs/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/filesystem.md",
|
|
"symbol": "FsPolicyExec",
|
|
"source": "packages/fs/fs-policy/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/filesystem.md",
|
|
"symbol": "FileReadOutcome",
|
|
"source": "packages/fs/tool-fs/src/read-render.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/compaction.md",
|
|
"symbol": "CompactionResult",
|
|
"source": "packages/compact/compact/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/subagent.md",
|
|
"symbol": "SubagentCapabilities",
|
|
"source": "packages/subagent/subagent/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/subagent.md",
|
|
"symbol": "SubagentStartRequest",
|
|
"source": "packages/subagent/subagent/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/subagent.md",
|
|
"symbol": "SubagentResult",
|
|
"source": "packages/subagent/subagent/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/subagent.md",
|
|
"symbol": "SubagentStopReasonMap",
|
|
"source": "packages/subagent/subagent/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/subagent.md",
|
|
"symbol": "SubagentRun",
|
|
"source": "packages/subagent/subagent/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/subagent.md",
|
|
"symbol": "SubagentProvider",
|
|
"source": "packages/subagent/subagent/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/web.md",
|
|
"symbol": "WebSearchRequest",
|
|
"source": "packages/web/web/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/web.md",
|
|
"symbol": "WebSearchResult",
|
|
"source": "packages/web/web/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/web.md",
|
|
"symbol": "WebSearchSource",
|
|
"source": "packages/web/web/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/web.md",
|
|
"symbol": "WebFetchRequest",
|
|
"source": "packages/web/web/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/web.md",
|
|
"symbol": "WebFetchResult",
|
|
"source": "packages/web/web/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/web.md",
|
|
"symbol": "WebFetchBody",
|
|
"source": "packages/web/web/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/web.md",
|
|
"symbol": "WebProviderStatus",
|
|
"source": "packages/web/web/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/workflow.md",
|
|
"symbol": "WorkflowStartRequest",
|
|
"source": "packages/workflow/workflow/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/workflow.md",
|
|
"symbol": "WorkflowMeta",
|
|
"source": "packages/workflow/workflow/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/workflow.md",
|
|
"symbol": "WorkflowResult",
|
|
"source": "packages/workflow/workflow/src/types.ts"
|
|
},
|
|
{
|
|
"doc": "docs/core-data-structures/workflow.md",
|
|
"symbol": "WorkflowRun",
|
|
"source": "packages/workflow/workflow/src/types.ts"
|
|
}
|
|
]
|
|
}
|