2026-06-20 16:24:37 +08:00
{
2026-07-19 14:23:59 +08:00
"comment" : "Maps each ` ```ts type-equiv ` or ` ```ts public-api ` block (by doc + declared symbol + projection) to the source declaration and original JSDoc it must match. Omit projection for the complete declaration; use public-api with a ` ```ts public-api ` block for a body-stripped public class declaration. verify-type-equiv.ts enforces a 1:1 correspondence: every source-equivalence block has exactly one entry here, and every entry resolves to exactly one block. Add an entry when you add a source-equivalence block; remove it when you remove the block." ,
2026-06-20 16:24:37 +08:00
"entries" : [
feat(types): brand bash ids + stop brand erosion; extract Branded to dsh-brand
Type-only change (brands are zero-cost casts; no runtime/wire impact). Closes
the two gaps in the "brand ids that cross package boundaries" policy and fixes
the dependency direction so a capability package never pulls in an unrelated one.
- Extract the `Branded<B>` primitive into a new standalone type-only package
`@deepseek-ai/dsh-brand` (packages/util/brand) with no harness-package deps.
dsh-llm keeps its owned CallId but imports Branded from dsh-brand; dsh-session,
dsh-agent, and dsh-bash all import Branded from there. dsh-bash depends on
dsh-brand ALONE — never on dsh-llm or dsh-session (the architectural fix: a
generic execution backend must not couple to the LLM or session vocabulary).
- Mint BashTaskId + OwnerToken in dsh-bash and thread them through BashTask.id,
the get/ownerOf/list/readOutput/kill seam, the bash-local generation site, and
the dsh-tool-bash validate/access surface. OwnerToken is a DISTINCT brand from
SessionId so the seam stays decoupled; dsh-tool-bash is the single boundary
that casts SessionId -> OwnerToken.
- Brand at the SOURCE, not via mid-pipeline casts: agent-loop's Config types
agents[].id as AgentId and resumeSessionId as SessionId, so the brand enters
at the config boundary and the inner create()/resume casts disappear (only the
genuinely-new per-run session-id string is cast).
- Stop brand erosion: propagate CallId/SessionId/AgentId to the registry/store
Map keys and public params/exports (SessionStore, AgentRegistry + factory
options, the ACP session-id surface + ToolPresenter CallId map, the
persistence coordinator, invariants pendingCalls, the pi-ai tool-call maps).
- Docs: document BashTaskId/OwnerToken in bash.md (type-equiv re-pasted), point
the Branded type-equiv at dsh-brand, fix stale param types in the session/
agent/bash READMEs, regenerate the cordis catalog + module graph.
Implements docs/rfc/proposed/architecture/2026-06-20-branded-ids.md
2026-06-21 07:17:25 +08:00
{ "doc" : "docs/core-data-structures/core.md" , "symbol" : "Branded" , "source" : "packages/util/brand/src/index.ts" } ,
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "doc" : "docs/core-data-structures/core.md" , "symbol" : "ContentBlockMap" , "source" : "packages/llm/llm/src/types.ts" } ,
2026-07-14 21:57:52 +08:00
{ "doc" : "docs/core-data-structures/core.md" , "symbol" : "AssistantProvenance" , "source" : "packages/llm/llm/src/types.ts" } ,
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "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" } ,
2026-07-15 13:33:42 +08:00
{ "doc" : "docs/core-data-structures/core.md" , "symbol" : "LlmProviderInfo" , "source" : "packages/llm/llm/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/core.md" , "symbol" : "LlmModelInfo" , "source" : "packages/llm/llm/src/types.ts" } ,
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "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" } ,
docs: the governing principle — every LLM request is reconstructable from the session log
The reconstructability RFC is the principle's home: model-visible ⟺
logged in both forms, the mechanism (boundary derivation + header
fold), the enforcement (write-time round-trip guard, the dev
invariant), the corollaries ranked (prefix-cache stability first), the
MiniCode lineage with the provenance arrow inverted, and the
alternatives it beat — including the stateful transmission client
whose three-design archaeology lives in PR #162.
Placements per the one-home-per-fact taxonomy: a standing-order line in
root AGENTS.md (with displacement trims to stay inside the 1,575-word
ceiling), the principle statement in architecture.md § Session Log and
its Turn Flow lines (condensed to the ratcheted 1,630 ceiling), the
request-envelope section in core-data-structures/core.md with the
LlmCallConfig paste, both review-requested FIXMEs
(FIXME(call-config-shape) beside the type, FIXME(catalog-verbs) at the
catalog's drift-gate note), cookbook rows redirected off agent/request
(tool filtering → system-prompt/assemble, plan-mode prompt → sections/
inject()), and the llm/stream JSDoc stating the frozen-request
contract. RFC index and all generated catalogs regenerated.
2026-07-06 03:49:35 +08:00
{ "doc" : "docs/core-data-structures/core.md" , "symbol" : "LlmCallConfig" , "source" : "packages/llm/llm/src/call-config.ts" } ,
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "doc" : "docs/core-data-structures/core.md" , "symbol" : "SessionEvent" , "source" : "packages/core/session/src/types.ts" } ,
2026-07-10 14:32:44 +08:00
{ "doc" : "docs/core-data-structures/core.md" , "symbol" : "InjectOptions" , "source" : "packages/core/agent/src/types.ts" } ,
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "doc" : "docs/core-data-structures/core.md" , "symbol" : "Agent" , "source" : "packages/core/agent/src/types.ts" } ,
2026-06-30 17:11:18 +08:00
{ "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" } ,
2026-07-15 16:03:52 +08:00
{ "doc" : "docs/core-data-structures/core.md" , "symbol" : "RequestError" , "source" : "packages/core/agent/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/core.md" , "symbol" : "RequestErrorDecision" , "source" : "packages/core/agent/src/types.ts" } ,
2026-07-11 22:55:26 +08:00
{ "doc" : "docs/core-data-structures/core.md" , "symbol" : "ContinuationStop" , "source" : "packages/core/agent/src/types.ts" } ,
2026-06-30 17:11:18 +08:00
{ "doc" : "docs/core-data-structures/core.md" , "symbol" : "SessionStartSource" , "source" : "packages/core/agent/src/types.ts" } ,
2026-06-20 16:24:37 +08:00
2026-07-12 05:13:17 +08:00
{ "doc" : "docs/core-data-structures/scope.md" , "symbol" : "ScopeKey" , "source" : "packages/core/scope/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/scope.md" , "symbol" : "Scoped" , "source" : "packages/core/scope/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/scope.md" , "symbol" : "Scope" , "source" : "packages/core/scope/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/system-prompt.md" , "symbol" : "AssembleContext" , "source" : "packages/core/system-prompt/src/index.ts" } ,
2026-07-12 22:49:46 +08:00
{ "doc" : "docs/core-data-structures/system-prompt.md" , "symbol" : "PromptSection" , "source" : "packages/core/system-prompt/src/index.ts" } ,
2026-07-12 05:13:17 +08:00
{ "doc" : "docs/core-data-structures/system-prompt.md" , "symbol" : "ToolProviderResult" , "source" : "packages/core/system-prompt/src/index.ts" } ,
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "doc" : "docs/core-data-structures/llm-streaming.md" , "symbol" : "StreamChunk" , "source" : "packages/llm/llm/src/types.ts" } ,
2026-07-20 03:34:19 +08:00
{ "doc" : "docs/core-data-structures/llm-streaming.md" , "symbol" : "LlmFailure" , "source" : "packages/llm/llm/src/types.ts" } ,
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "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" } ,
2026-07-04 18:14:42 +08:00
{ "doc" : "docs/core-data-structures/llm-streaming.md" , "symbol" : "AppIdentity" , "source" : "packages/llm/llm/src/attribution.ts" } ,
2026-07-19 13:59:05 +08:00
{ "doc" : "docs/core-data-structures/llm-streaming.md" , "symbol" : "BlockAssembler" , "source" : "packages/llm/llm/src/assembler.ts" , "projection" : "public-api" } ,
{ "doc" : "docs/core-data-structures/llm-streaming.md" , "symbol" : "LlmAdapter" , "source" : "packages/llm/llm/src/index.ts" , "projection" : "public-api" } ,
2026-06-20 16:24:37 +08:00
2026-07-15 14:47:29 +08:00
{ "doc" : "docs/core-data-structures/token-meter.md" , "symbol" : "TokenMeasurement" , "source" : "packages/llm/token-meter/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/token-meter.md" , "symbol" : "TokenSurfaceNode" , "source" : "packages/llm/token-meter/src/types.ts" } ,
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "doc" : "docs/core-data-structures/session.md" , "symbol" : "SessionEventMap" , "source" : "packages/core/session/src/types.ts" } ,
2026-07-06 02:42:51 +08:00
{ "doc" : "docs/core-data-structures/session.md" , "symbol" : "EpochHeader" , "source" : "packages/core/session/src/types.ts" } ,
2026-06-29 01:39:25 +08:00
{ "doc" : "docs/core-data-structures/session.md" , "symbol" : "TodoItem" , "source" : "packages/core/session/src/types.ts" } ,
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "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" } ,
2026-06-23 13:26:45 +08:00
{ "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" } ,
2026-07-19 11:36:07 +08:00
{ "doc" : "docs/core-data-structures/session.md" , "symbol" : "SessionSurface" , "source" : "packages/core/session/src/surface.ts" } ,
2026-07-10 17:29:52 +08:00
{ "doc" : "docs/core-data-structures/session.md" , "symbol" : "SurfaceFoldReplacement" , "source" : "packages/core/session/src/surface.ts" } ,
{ "doc" : "docs/core-data-structures/session.md" , "symbol" : "SurfaceFoldResult" , "source" : "packages/core/session/src/surface.ts" } ,
2026-07-19 13:59:05 +08:00
{ "doc" : "docs/core-data-structures/session.md" , "symbol" : "Session" , "source" : "packages/core/session/src/index.ts" , "projection" : "public-api" } ,
2026-06-20 16:24:37 +08:00
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "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" } ,
2026-07-10 20:52:27 +08:00
{ "doc" : "docs/core-data-structures/persistence.md" , "symbol" : "SessionLocation" , "source" : "packages/session-persistence/session-persistence/src/index.ts" } ,
2026-07-10 17:29:52 +08:00
{ "doc" : "docs/core-data-structures/session-query.md" , "symbol" : "SessionEventSurface" , "source" : "packages/session-query/session-query/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/session-query.md" , "symbol" : "SessionRecord" , "source" : "packages/session-query/session-query/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/session-query.md" , "symbol" : "SessionEventRecord" , "source" : "packages/session-query/session-query/src/types.ts" } ,
2026-07-13 13:44:01 +08:00
{ "doc" : "docs/core-data-structures/session-query.md" , "symbol" : "SessionLineageNode" , "source" : "packages/session-query/session-query/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/session-query.md" , "symbol" : "SessionLineageTrace" , "source" : "packages/session-query/session-query/src/types.ts" } ,
2026-07-11 10:19:34 +08:00
{ "doc" : "docs/core-data-structures/session-query.md" , "symbol" : "SessionQueryErrorCode" , "source" : "packages/session-query/session-query/src/config.ts" } ,
2026-07-10 17:29:52 +08:00
{ "doc" : "docs/core-data-structures/session-query.md" , "symbol" : "SessionEventReadRequest" , "source" : "packages/session-query/session-query/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/session-query.md" , "symbol" : "SessionEventWindow" , "source" : "packages/session-query/session-query/src/types.ts" } ,
2026-07-13 13:44:01 +08:00
{ "doc" : "docs/core-data-structures/session-query.md" , "symbol" : "SessionEventTraceRequest" , "source" : "packages/session-query/session-query/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/session-query.md" , "symbol" : "SessionEventTrace" , "source" : "packages/session-query/session-query/src/types.ts" } ,
2026-06-20 16:24:37 +08:00
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "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" } ,
2026-07-11 22:55:26 +08:00
{ "doc" : "docs/core-data-structures/tools.md" , "symbol" : "ToolExecutionToken" , "source" : "packages/core/tools/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/tools.md" , "symbol" : "ToolExecutionInput" , "source" : "packages/core/tools/src/index.ts" } ,
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "doc" : "docs/core-data-structures/tools.md" , "symbol" : "ToolExecution" , "source" : "packages/core/tools/src/index.ts" } ,
2026-07-13 11:02:21 +08:00
{ "doc" : "docs/core-data-structures/tools.md" , "symbol" : "ToolExecutionMode" , "source" : "packages/core/tools/src/index.ts" } ,
2026-07-13 13:56:45 +08:00
{ "doc" : "docs/core-data-structures/tools.md" , "symbol" : "ToolRunContext" , "source" : "packages/core/tools/src/index.ts" } ,
2026-07-11 22:55:26 +08:00
{ "doc" : "docs/core-data-structures/tools.md" , "symbol" : "ToolGuard" , "source" : "packages/core/tools/src/index.ts" } ,
2026-07-12 22:49:46 +08:00
{ "doc" : "docs/core-data-structures/tools.md" , "symbol" : "ToolRestriction" , "source" : "packages/core/tools/src/index.ts" } ,
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "doc" : "docs/core-data-structures/tools.md" , "symbol" : "ToolExecutionResult" , "source" : "packages/core/tools/src/index.ts" } ,
2026-06-30 17:11:18 +08:00
{ "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" } ,
2026-07-07 21:17:52 +08:00
{ "doc" : "docs/core-data-structures/tools.md" , "symbol" : "StructuredScalar" , "source" : "packages/core/tools/src/json-schema.ts" } ,
{ "doc" : "docs/core-data-structures/tools.md" , "symbol" : "StructuredSchemaType" , "source" : "packages/core/tools/src/json-schema.ts" } ,
{ "doc" : "docs/core-data-structures/tools.md" , "symbol" : "StructuredSchemaNode" , "source" : "packages/core/tools/src/json-schema.ts" } ,
{ "doc" : "docs/core-data-structures/tools.md" , "symbol" : "StructuredOutputSchema" , "source" : "packages/core/tools/src/json-schema.ts" } ,
2026-06-20 16:24:37 +08:00
2026-07-09 17:55:01 +08:00
{ "doc" : "docs/core-data-structures/user-interaction.md" , "symbol" : "AskUserQuestionOption" , "source" : "packages/ui/user-interaction/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/user-interaction.md" , "symbol" : "AskUserQuestionItem" , "source" : "packages/ui/user-interaction/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/user-interaction.md" , "symbol" : "AskUserQuestionRequest" , "source" : "packages/ui/user-interaction/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/user-interaction.md" , "symbol" : "AskUserQuestionAnswerItem" , "source" : "packages/ui/user-interaction/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/user-interaction.md" , "symbol" : "AskUserQuestionAnswer" , "source" : "packages/ui/user-interaction/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/user-interaction.md" , "symbol" : "UserInteractionProvider" , "source" : "packages/ui/user-interaction/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/user-interaction.md" , "symbol" : "UserInteractionError" , "source" : "packages/ui/user-interaction/src/index.ts" } ,
2026-06-29 10:49:07 +08:00
2026-07-11 21:37:38 +08:00
{ "doc" : "docs/core-data-structures/approval.md" , "symbol" : "ApprovalRequestId" , "source" : "packages/ui/user-approval/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/approval.md" , "symbol" : "ApprovalOutcome" , "source" : "packages/ui/user-approval/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/approval.md" , "symbol" : "ApprovalPolicy" , "source" : "packages/ui/user-approval/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/approval.md" , "symbol" : "ApprovalRequest" , "source" : "packages/ui/user-approval/src/index.ts" } ,
fix(bash): close managed environment review gaps
The managed DSH_* runtime path was correct, but its public extension and documentation contracts were incomplete. A contributor following the README could access ctx.bashEnv without declaring an injection, the new environment types had no drift-checked catalog entries, and the capability graph omitted three packages that now query sessionPersistence.
Declare the README injection, catalog DshEnvironmentKey and DshEnvironment, and add tool-bash plus both hook bridges to the generated persistence consumer graph. Keep BashEnvRegistry.list() contributor-only for now because no production caller treats it as exhaustive, but record the built-in enumeration gap before diagnostics, prompt, or UI code depends on it.
Validated on the exact resulting tree with typecheck, lint, coverage, snapshot, documentation, module-graph, build, hygiene, demo-smoke, and built-artifact checks.
2026-07-15 00:04:00 +08:00
{ "doc" : "docs/core-data-structures/bash.md" , "symbol" : "DshEnvironmentKey" , "source" : "packages/bash/bash/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/bash.md" , "symbol" : "DshEnvironment" , "source" : "packages/bash/bash/src/types.ts" } ,
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "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" } ,
2026-07-09 16:05:44 +08:00
{ "doc" : "docs/core-data-structures/bash.md" , "symbol" : "BashSandboxInfo" , "source" : "packages/bash/bash/src/types.ts" } ,
Reorganize packages into a modular hierarchy
Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.
Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.
Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.
WIP: doc cross-links and package/RFC docs still to update.
2026-06-20 22:55:20 +08:00
{ "doc" : "docs/core-data-structures/bash.md" , "symbol" : "CollectedOutput" , "source" : "packages/bash/bash/src/types.ts" } ,
feat(tasks): background task runtime, generic task_* control tools, bash/subagent producers
One shared ctx.tasks registry (branded <kind>-N ids, owner-fenced
read/kill/wait/list, attachSurface misconfiguration fence, reported-flag
notice dedup, atomic register) + dsh-tool-tasks (task_output/task_list/
task_kill, completion-notice injection, background prompt habit).
Producers opt in via their own enableRunInBackground config: bash
(stream kind; seam slimmed to resolve/run/start returning a BashProcess
handle, bash_output/bash_kill deleted) and subagent (final-output kind;
done settles after run.dispose()). Owner disposal drains tasks through
the new awaited ctx.agents.onCleanup seam in the loop's disposal chain.
Both RFCs moved to implemented/; docs, catalogs, snapshots re-pinned.
2026-07-09 21:22:54 +08:00
{ "doc" : "docs/core-data-structures/bash.md" , "symbol" : "BashProcess" , "source" : "packages/bash/bash/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/bash.md" , "symbol" : "BashProcessRead" , "source" : "packages/bash/bash/src/types.ts" } ,
2026-07-15 21:45:30 +08:00
{ "doc" : "docs/core-data-structures/tasks.md" , "symbol" : "TaskKindMap" , "source" : "packages/tasks/tasks/src/types.ts" } ,
refactor(tasks): declare-then-execute — ctx.tasks.start() replaces register()
start({ kind, label, owner, run }) preflights everything that can fail
(the attachSurface fence, validation, the owner-cleanup attach) BEFORE
invoking the producer's run() starter, then commits atomically —
'work started but never got a collectable id' is now structurally
impossible instead of a producer try/catch rollback obligation (the
P1 review fix, rebuilt on #185's declare/execute split). Producers
lose their catch-wraps; the leak tests now pin the stronger property
that a failed preflight never spawns anything. TaskRegistration splits
into TaskStart (identity + run) and TaskHooks (cancel/done/readOutput);
docs, type-equiv manifest, catalogs, and both RFCs move with it.
2026-07-09 21:53:48 +08:00
{ "doc" : "docs/core-data-structures/tasks.md" , "symbol" : "TaskStart" , "source" : "packages/tasks/tasks/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/tasks.md" , "symbol" : "TaskHooks" , "source" : "packages/tasks/tasks/src/types.ts" } ,
feat(tasks): background task runtime, generic task_* control tools, bash/subagent producers
One shared ctx.tasks registry (branded <kind>-N ids, owner-fenced
read/kill/wait/list, attachSurface misconfiguration fence, reported-flag
notice dedup, atomic register) + dsh-tool-tasks (task_output/task_list/
task_kill, completion-notice injection, background prompt habit).
Producers opt in via their own enableRunInBackground config: bash
(stream kind; seam slimmed to resolve/run/start returning a BashProcess
handle, bash_output/bash_kill deleted) and subagent (final-output kind;
done settles after run.dispose()). Owner disposal drains tasks through
the new awaited ctx.agents.onCleanup seam in the loop's disposal chain.
Both RFCs moved to implemented/; docs, catalogs, snapshots re-pinned.
2026-07-09 21:22:54 +08:00
{ "doc" : "docs/core-data-structures/tasks.md" , "symbol" : "TaskOutcome" , "source" : "packages/tasks/tasks/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/tasks.md" , "symbol" : "TaskSnapshot" , "source" : "packages/tasks/tasks/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/tasks.md" , "symbol" : "TaskRead" , "source" : "packages/tasks/tasks/src/types.ts" } ,
2026-06-23 16:33:05 +08:00
2026-07-11 21:37:38 +08:00
{ "doc" : "docs/core-data-structures/sandbox.md" , "symbol" : "SandboxMode" , "source" : "packages/sandbox/sandbox/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/sandbox.md" , "symbol" : "ConfinedSandboxMode" , "source" : "packages/sandbox/sandbox/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/sandbox.md" , "symbol" : "SandboxEnforcement" , "source" : "packages/sandbox/sandbox/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/sandbox.md" , "symbol" : "SandboxPolicy" , "source" : "packages/sandbox/sandbox/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/sandbox.md" , "symbol" : "ConfinedArgv" , "source" : "packages/sandbox/sandbox/src/index.ts" } ,
2026-07-08 02:38:47 +08:00
{ "doc" : "docs/core-data-structures/code-runtime.md" , "symbol" : "CodeRunRequest" , "source" : "packages/code-runtime/code-runtime/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/code-runtime.md" , "symbol" : "CodeRunResult" , "source" : "packages/code-runtime/code-runtime/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/code-runtime.md" , "symbol" : "CodeBindingNamespace" , "source" : "packages/code-runtime/code-runtime/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/code-runtime.md" , "symbol" : "CodeBindingFunction" , "source" : "packages/code-runtime/code-runtime/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/code-runtime.md" , "symbol" : "CodeRunFailure" , "source" : "packages/code-runtime/code-runtime/src/types.ts" } ,
2026-06-22 14:53:36 +08:00
{ "doc" : "docs/core-data-structures/filesystem.md" , "symbol" : "FsTarget" , "source" : "packages/fs/fs/src/types.ts" } ,
2026-06-26 17:23:18 +08:00
{ "doc" : "docs/core-data-structures/filesystem.md" , "symbol" : "FsTargetKey" , "source" : "packages/fs/fs/src/types.ts" } ,
2026-06-22 14:53:36 +08:00
{ "doc" : "docs/core-data-structures/filesystem.md" , "symbol" : "FsVersion" , "source" : "packages/fs/fs/src/types.ts" } ,
2026-06-26 17:23:18 +08:00
{ "doc" : "docs/core-data-structures/filesystem.md" , "symbol" : "FsInfo" , "source" : "packages/fs/fs/src/types.ts" } ,
2026-07-06 13:55:20 +08:00
{ "doc" : "docs/core-data-structures/filesystem.md" , "symbol" : "FsPathInfo" , "source" : "packages/fs/fs/src/types.ts" } ,
2026-07-03 14:36:20 +08:00
{ "doc" : "docs/core-data-structures/filesystem.md" , "symbol" : "FsDirEntry" , "source" : "packages/fs/fs/src/types.ts" } ,
fix(fs): address review — rename to dsh-fs-policy, fs/*-intent events, RFC currency, ENOTDIR
Rename per review naming decisions:
- package dsh-file-context → dsh-fs-policy (dir, package name, plugin name,
tsconfig refs, importers, type-equiv manifest, generated catalog + module-graph)
- events fs/write-expectation → fs/write-intent, fs/edit-expectation → fs/edit-intent
(fs/observed unchanged); type FsWriteExpectation → FsWriteIntent, "expectation"
wording → "intent" throughout
- exported FileContextExec → FsPolicyExec
Make the implemented RFCs describe what shipped, not the superseded designs:
the 2026-06-17 capability-seam + tool-schemas RFCs no longer place policy on
ctx.fs or use full/partial-view authorization, and the fsspec RFC's ctx.fileContext
service prose is rewritten to the fs/* event-gate reality (freshness-based auth).
Sharpen docs/rfc/implemented/AGENTS.md: a rename is a fact to fix IN PLACE — the
"new RFC" escape hatch is for macro decision reversals only, not renames.
Code fixes from review:
- fsio.ts resolveLocalTarget/probe translate ENOTDIR (a parent path segment is a
file) into the structured FsError taxonomy instead of leaking a raw Node error;
resolve reports FS_NOT_FOUND, probe reports absent. Regression tests proven to
fail on the unfixed code.
- tool-fs HMR test now asserts prompt sections (not just tool schemas) are
withdrawn on disposal.
- fs/observed is a plain (unguarded) ctx.emit: correct the fs-policy comment,
filesystem.md, and tool-fs module doc that wrongly claimed the tool "contains"
a throwing listener; a throw surfaces as the tool's isError result.
- drop the false "loaded by the default product config" claim (no config wires
the fs tools yet), the duplicate ctx.bash service-map row, the stale
FileReadRequest catalog link-map entry, and the fs/fs README EOF blank line;
correct the dsh-fs package.json description.
2026-07-02 03:12:38 +08:00
{ "doc" : "docs/core-data-structures/filesystem.md" , "symbol" : "FsWriteIntent" , "source" : "packages/fs/fs/src/types.ts" } ,
2026-06-22 14:53:36 +08:00
{ "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" } ,
2026-06-26 17:23:18 +08:00
{ "doc" : "docs/core-data-structures/filesystem.md" , "symbol" : "FsErrorCode" , "source" : "packages/fs/fs/src/types.ts" } ,
fix(fs): address review — rename to dsh-fs-policy, fs/*-intent events, RFC currency, ENOTDIR
Rename per review naming decisions:
- package dsh-file-context → dsh-fs-policy (dir, package name, plugin name,
tsconfig refs, importers, type-equiv manifest, generated catalog + module-graph)
- events fs/write-expectation → fs/write-intent, fs/edit-expectation → fs/edit-intent
(fs/observed unchanged); type FsWriteExpectation → FsWriteIntent, "expectation"
wording → "intent" throughout
- exported FileContextExec → FsPolicyExec
Make the implemented RFCs describe what shipped, not the superseded designs:
the 2026-06-17 capability-seam + tool-schemas RFCs no longer place policy on
ctx.fs or use full/partial-view authorization, and the fsspec RFC's ctx.fileContext
service prose is rewritten to the fs/* event-gate reality (freshness-based auth).
Sharpen docs/rfc/implemented/AGENTS.md: a rename is a fact to fix IN PLACE — the
"new RFC" escape hatch is for macro decision reversals only, not renames.
Code fixes from review:
- fsio.ts resolveLocalTarget/probe translate ENOTDIR (a parent path segment is a
file) into the structured FsError taxonomy instead of leaking a raw Node error;
resolve reports FS_NOT_FOUND, probe reports absent. Regression tests proven to
fail on the unfixed code.
- tool-fs HMR test now asserts prompt sections (not just tool schemas) are
withdrawn on disposal.
- fs/observed is a plain (unguarded) ctx.emit: correct the fs-policy comment,
filesystem.md, and tool-fs module doc that wrongly claimed the tool "contains"
a throwing listener; a throw surfaces as the tool's isError result.
- drop the false "loaded by the default product config" claim (no config wires
the fs tools yet), the duplicate ctx.bash service-map row, the stale
FileReadRequest catalog link-map entry, and the fs/fs README EOF blank line;
correct the dsh-fs package.json description.
2026-07-02 03:12:38 +08:00
{ "doc" : "docs/core-data-structures/filesystem.md" , "symbol" : "FsPolicyExec" , "source" : "packages/fs/fs-policy/src/types.ts" } ,
2026-06-29 10:34:08 +08:00
{ "doc" : "docs/core-data-structures/filesystem.md" , "symbol" : "FileReadOutcome" , "source" : "packages/fs/tool-fs/src/read-render.ts" } ,
2026-06-28 17:24:45 +08:00
2026-07-10 14:19:06 +08:00
{ "doc" : "docs/core-data-structures/skills.md" , "symbol" : "SkillSource" , "source" : "packages/skill/skill/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/skills.md" , "symbol" : "SkillResourceBase" , "source" : "packages/skill/skill/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/skills.md" , "symbol" : "SkillSummary" , "source" : "packages/skill/skill/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/skills.md" , "symbol" : "SkillCandidate" , "source" : "packages/skill/skill/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/skills.md" , "symbol" : "SkillDefinition" , "source" : "packages/skill/skill/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/skills.md" , "symbol" : "SkillRegistration" , "source" : "packages/skill/skill/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/skills.md" , "symbol" : "SkillLookupOptions" , "source" : "packages/skill/skill/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/skills.md" , "symbol" : "SkillProvider" , "source" : "packages/skill/skill/src/index.ts" } ,
{ "doc" : "docs/core-data-structures/skills.md" , "symbol" : "Config" , "source" : "packages/skill/skill/src/index.ts" } ,
2026-07-05 17:00:31 +08:00
2026-06-25 09:10:50 +08:00
{ "doc" : "docs/core-data-structures/compaction.md" , "symbol" : "CompactionResult" , "source" : "packages/compact/compact/src/types.ts" } ,
2026-07-15 16:50:44 +08:00
{ "doc" : "docs/core-data-structures/compaction.md" , "symbol" : "CompactionTrigger" , "source" : "packages/compact/compact/src/index.ts" } ,
2026-07-19 17:54:55 +08:00
{ "doc" : "docs/core-data-structures/compaction.md" , "symbol" : "PrunedEntry" , "source" : "packages/compact/compact-tool-result-prune/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/compaction.md" , "symbol" : "PruneResult" , "source" : "packages/compact/compact-tool-result-prune/src/types.ts" } ,
2026-06-25 09:10:50 +08:00
Fix review findings: lifecycle containment, configurable tool name, coverage, type catalog
Address four findings from the first Codex review round:
- Contain subagent/start|end listener throws (emitContainedStart/End): a
thrown lifecycle listener could escape SubagentService.start() before the
caller received the live run to dispose it (a leaked child), and a thrown
subagent/end listener could surface as an unhandled rejection on the detached
result-settle hook. Both emits now log-and-contain, mirroring the agent
registry's agent/created|disposed containment.
- Make the model-facing tool name configurable (Config.toolName, default
subagent). The docs say to load dsh-tool-subagent once per provider to expose
multiple transports, but the hardcoded name made the second load throw a
duplicate-tool-name error; a distinct toolName per load is now required and
documented.
- Reach the per-file 100% coverage gate: tests for the subagent/end error
branch, lifecycle-listener containment, every stopReasonError arm + the
merge-extensible default, the multi-provider toolName path, agentOptions
forwarding, and the direct-apply schema-bypass fallbacks.
- Document the seam vocabulary in docs/core-data-structures/subagent.md with
verbatim type-equiv blocks + manifest entries, and link it from core.md (a
brand-new core/seam type the doc-sync gate cannot detect on its own).
2026-06-21 23:15:43 +08:00
{ "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" } ,
2026-06-25 15:28:15 +08:00
{ "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" } ,
2026-07-06 22:28:57 +08:00
2026-07-08 22:54:26 +08:00
{ "doc" : "docs/core-data-structures/spill.md" , "symbol" : "SaveTextSpill" , "source" : "packages/spill/spill/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/spill.md" , "symbol" : "SpillOwner" , "source" : "packages/spill/spill/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/spill.md" , "symbol" : "SpillSource" , "source" : "packages/spill/spill/src/types.ts" } ,
{ "doc" : "docs/core-data-structures/spill.md" , "symbol" : "SpillRef" , "source" : "packages/spill/spill/src/types.ts" } ,
2026-07-13 11:07:27 +08:00
{ "doc" : "docs/core-data-structures/spill.md" , "symbol" : "SpillLocator" , "source" : "packages/spill/spill/src/types.ts" } ,
2026-07-13 09:49:46 +08:00
2026-07-06 22:28:57 +08:00
{ "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" }
2026-06-20 16:24:37 +08:00
]
}