@deepseek-ai/dsh-agent-presets 0.1.2-alpha.2 → 0.1.2-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -352,6 +352,10 @@ export const TYPERT = {
352
352
  "name": "AgentCancelCause",
353
353
  "declaration": "export type AgentCancelCause = { readonly kind: 'user'; } | { readonly kind: 'parent'; } | { readonly kind: 'hook'; readonly reason: string; } | { readonly kind: 'disposed'; };"
354
354
  },
355
+ {
356
+ "name": "AgentMessageSource",
357
+ "declaration": "export interface AgentMessageSource {\n readonly kind: 'agent-message';\n readonly form: 'relay';\n readonly senderSessionId: SessionId;\n}"
358
+ },
355
359
  {
356
360
  "name": "AgentOptions",
357
361
  "declaration": "export interface AgentOptions {\n provider?: string;\n model?: string;\n reasoningEffort?: ReasoningEffortId;\n maxTokens?: number;\n subagentDepth?: number;\n}"
@@ -412,6 +416,10 @@ export const TYPERT = {
412
416
  "name": "Branded",
413
417
  "declaration": "export type Branded<B extends string> = string & { readonly [BRAND]: B; };"
414
418
  },
419
+ {
420
+ "name": "BrandedNumber",
421
+ "declaration": "export type BrandedNumber<B extends string> = number & { readonly [BRAND]: B; };"
422
+ },
415
423
  {
416
424
  "name": "CancelOptions",
417
425
  "declaration": "export interface CancelOptions {\n keepInbox?: boolean | undefined;\n}"
@@ -460,10 +468,6 @@ export const TYPERT = {
460
468
  "name": "ContinuableSubagentDescriptorData",
461
469
  "declaration": "export interface ContinuableSubagentDescriptorData extends SubagentDescriptorBase {\n readonly mode: 'continuable';\n readonly label: string;\n readonly agentProvider?: string;\n readonly agentModel?: string;\n readonly agentReasoningEffort?: ReasoningEffortId;\n readonly persona?: string;\n readonly toolFilter?: ToolRestriction;\n}"
462
470
  },
463
- {
464
- "name": "CoordinatorMessageSource",
465
- "declaration": "export interface CoordinatorMessageSource {\n readonly kind: 'coordinator';\n readonly form: 'relay';\n readonly senderSessionId: SessionId;\n}"
466
- },
467
471
  {
468
472
  "name": "EpochHeader",
469
473
  "declaration": "export interface EpochHeader {\n config: LlmCallConfig;\n adapterDefaults?: LlmCallConfigAdapterDefaults;\n system?: string;\n tools?: ToolSchema[];\n}"
@@ -566,7 +570,7 @@ export const TYPERT = {
566
570
  },
567
571
  {
568
572
  "name": "MessageSourceMap",
569
- "declaration": "export interface MessageSourceMap {\n user: { kind: 'user'; };\n plugin: { kind: 'plugin'; plugin: string; } & ContextFormed;\n model: ModelMessageSource;\n tool: ToolMessageSource;\n 'user-rpc': { kind: 'user'; rpcId: SessionRequestId; clientTimeZone?: string; };\n coordinator: CoordinatorMessageSource;\n 'subagent-report': SubagentReportMessageSource;\n 'subagent-settled': SubagentSettledMessageSource;\n 'skill-invocation': SkillInvocationSource;\n 'team-message': TeamMessageSource;\n goal: GoalMessageSource;\n 'session-reference': SessionReferenceSource;\n}"
573
+ "declaration": "export interface MessageSourceMap {\n user: { kind: 'user'; };\n plugin: { kind: 'plugin'; plugin: string; } & ContextFormed;\n model: ModelMessageSource;\n tool: ToolMessageSource;\n 'user-rpc': { kind: 'user'; rpcId: SessionRequestId; clientTimeZone?: string; };\n 'agent-message': AgentMessageSource;\n 'subagent-settled': SubagentSettledMessageSource;\n 'skill-invocation': SkillInvocationSource;\n 'team-message': TeamMessageSource;\n goal: GoalMessageSource;\n 'session-reference': SessionReferenceSource;\n}"
570
574
  },
571
575
  {
572
576
  "name": "ModelMessageSource",
@@ -580,6 +584,10 @@ export const TYPERT = {
580
584
  "name": "OneShotSubagentDescriptorData",
581
585
  "declaration": "export interface OneShotSubagentDescriptorData extends SubagentDescriptorBase {\n readonly mode: 'one-shot';\n readonly label?: string;\n}"
582
586
  },
587
+ {
588
+ "name": "OptionalSessionSeq",
589
+ "declaration": "export type OptionalSessionSeq = SessionSeq | null;"
590
+ },
583
591
  {
584
592
  "name": "PresetRoot",
585
593
  "declaration": "export interface PresetRoot {\n path: string;\n trust: PresetTrust;\n}"
@@ -630,15 +638,15 @@ export const TYPERT = {
630
638
  },
631
639
  {
632
640
  "name": "Session",
633
- "declaration": "export class Session {\n get surface(): SessionSurface;\n readonly header: SessionHeader;\n get id(): SessionId;\n readonly firstLiveSeq: number;\n get events(): readonly SessionEvent[];\n get seq(): number;\n append<T extends SessionEventType>(type: T, data: SessionEventMap[T], ...opts: T extends SurfaceEventType ? [opts: SurfaceIntent] : []): SessionEvent<T>;\n requestHeader(): EpochHeader | undefined;\n requestContext(): RequestContext | undefined;\n deriveMessages(): Message[];\n deriveEventMessage(event: SessionEvent): Message | null;\n}"
641
+ "declaration": "export class Session {\n get surface(): SessionSurface;\n readonly header: SessionHeader;\n readonly inheritedEventCount: SessionLogOffset;\n get id(): SessionId;\n readonly firstLiveSeq: SessionLogOffset;\n eventAt(seq: SessionSeq): SessionEvent | undefined;\n snapshotEvents(fromSeq: SessionLogOffset = SessionLogOffset(0), toSeqExclusive: SessionLogOffset = this.seq): readonly SessionEvent[];\n ownEvents(): readonly SessionEvent[];\n isOwnSeq(seq: SessionSeq): boolean;\n get seq(): SessionLogOffset;\n append<T extends SessionEventType>(type: T, data: SessionEventMap[T], ...opts: T extends SurfaceEventType ? [opts: SurfaceIntent] : []): SessionEvent<T>;\n requestHeader(): EpochHeader | undefined;\n requestContext(): RequestContext | undefined;\n deriveMessages(): Message[];\n deriveEventMessage(event: SessionEvent): Message | null;\n}"
634
642
  },
635
643
  {
636
644
  "name": "SessionEvent",
637
- "declaration": "export type SessionEvent<T extends SessionEventType = SessionEventType> = { [K in SessionEventType]: { type: K; seq: number; time: number; data: SessionEventMap[K]; ignorable?: true; } & (K extends SurfaceEventType ? { sourceEventSeqs?: number[]; surfaceOp?: SurfaceOp; } : object) }[T];"
645
+ "declaration": "export type SessionEvent<T extends SessionEventType = SessionEventType> = { [K in SessionEventType]: { type: K; seq: SessionSeq; time: number; data: SessionEventMap[K]; ignorable?: true; } & (K extends SurfaceEventType ? { sourceEventSeqs?: SessionSeq[]; surfaceOp?: SurfaceOp; } : object) }[T];"
638
646
  },
639
647
  {
640
648
  "name": "SessionEventMap",
641
- "declaration": "export interface SessionEventMap {\n 'turn/start': { turn: number; };\n 'turn/end': { turn: number; reason: TurnEndReason; };\n 'step/start': { turn: number; step: number; };\n 'step/end': { turn: number; step: number; };\n 'user/message': UserMessage;\n 'assistant/chunk': { turn: number; step: number; chunk: StreamChunk; };\n 'assistant/message': { turn: number; step: number; message: AssistantMessage; usage?: TokenUsage; interrupted?: true; };\n 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string; };\n 'tool/result': { turn: number; step: number; message: ToolResultMessage; error?: { name: string; code: string; }; meta?: JsonValue; };\n 'request/header': { header: EpochHeader; reason: RequestHeaderReason; startsSeries?: true; };\n 'request/context': RequestContext;\n 'session/end-seed': Record<string, never>;\n 'agent/inbox/spliced': { target: InboxTarget; start: number; removedCount?: number; inserted: UserMessage[]; outcome?: 'canceled'; };\n 'approval/asked': { id: ApprovalRequestId; toolName: string; callId?: ToolCallId; reason?: string; };\n 'approval/decided': { id: ApprovalRequestId; outcome: ApprovalOutcome; };\n 'approval/policy': { policy: ApprovalPolicy; source?: 'delegation'; };\n 'tool/code-dispatch-start': PtcDispatchStartEventData;\n 'tool/code-dispatch': PtcDispatchEventData;\n 'agent-preset/selected': { agentPreset: string; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'subagent/descriptor': SubagentDescriptorData;\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource; };\n 'command/done': { commandId: CommandId; kind: 'success' | 'error'; text?: string; sourceEventSeq?: number; };\n 'team/member': { version: 1; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 1; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 1; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 1; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'goal/change': GoalChangeMeta;\n 'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; };\n 'compaction/summary': { compactionId: CompactionId; sourceCommandId?: CommandId; summary: ContentBlock[]; shadowedRange: { start: number; end: number; }; shadowedSeqs: number[]; shadowedTokenCount: number; provider: string; model: string; maxTokens?: number; usage?: TokenUsage; } & ({ rawOutput: ContentBlock[]; llmStreamCall: true; } | { rawOutput?: ContentBlock[]; llmStreamCall?: never; });\n 'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string; };\n 'compaction/prune': { shadowedRange: { start: number; end: number; }; shadowedSeqs: number[]; shadowedTokenCount: number; };\n}"
649
+ "declaration": "export interface SessionEventMap {\n 'turn/start': { turn: number; };\n 'turn/end': { turn: number; reason: TurnEndReason; };\n 'step/start': { turn: number; step: number; };\n 'step/end': { turn: number; step: number; };\n 'user/message': UserMessage;\n 'assistant/chunk': { turn: number; step: number; chunk: StreamChunk; };\n 'assistant/message': { turn: number; step: number; message: AssistantMessage; usage?: TokenUsage; interrupted?: true; };\n 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string; };\n 'tool/result': { turn: number; step: number; message: ToolResultMessage; error?: { name: string; code: string; }; meta?: JsonValue; };\n 'request/header': { header: EpochHeader; reason: RequestHeaderReason; startsSeries?: true; };\n 'request/context': RequestContext;\n 'session/end-seed': Record<string, never>;\n 'agent/inbox/spliced': { target: InboxTarget; start: number; removedCount?: number; inserted: UserMessage[]; outcome?: 'canceled'; };\n 'approval/asked': { id: ApprovalRequestId; toolName: string; callId?: ToolCallId; reason?: string; };\n 'approval/decided': { id: ApprovalRequestId; outcome: ApprovalOutcome; };\n 'approval/policy': { policy: ApprovalPolicy; source?: 'delegation'; };\n 'tool/code-dispatch-start': PtcDispatchStartEventData;\n 'tool/code-dispatch': PtcDispatchEventData;\n 'agent-preset/selected': { agentPreset: string; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'subagent/descriptor': SubagentDescriptorData;\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource; };\n 'command/done': { commandId: CommandId; kind: 'success' | 'error'; text?: string; sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq; };\n 'team/member': { version: 1; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 1; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 1; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 1; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'goal/change': GoalChangeMeta;\n 'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; };\n 'compaction/summary': { compactionId: CompactionId; sourceCommandId?: CommandId; summary: ContentBlock[]; shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; provider: string; model: string; maxTokens?: number; usage?: TokenUsage; } & ({ rawOutput: ContentBlock[]; llmStreamCall: true; } | { rawOutput?: ContentBlock[]; llmStreamCall?: never; });\n 'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string; };\n 'compaction/prune': { shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; };\n}"
642
650
  },
643
651
  {
644
652
  "name": "SessionEventType",
@@ -646,27 +654,35 @@ export const TYPERT = {
646
654
  },
647
655
  {
648
656
  "name": "SessionHeader",
649
- "declaration": "export interface SessionHeader {\n readonly version: number;\n readonly id: SessionId;\n readonly createdAt: number;\n readonly cwd?: string;\n readonly parentSession?: SessionId;\n readonly seedLength?: number;\n readonly origin?: 'subagent';\n readonly delegationDepth?: number;\n readonly agentPreset?: string;\n}"
657
+ "declaration": "export interface SessionHeader {\n readonly version: number;\n readonly id: SessionId;\n readonly createdAt: number;\n readonly cwd?: string;\n readonly parentSession?: SessionId;\n readonly isSeeded: boolean;\n readonly origin?: 'subagent';\n readonly delegationDepth?: number;\n readonly agentPreset?: string;\n}"
650
658
  },
651
659
  {
652
660
  "name": "SessionId",
653
661
  "declaration": "export type SessionId = Branded<'SessionId'>;"
654
662
  },
663
+ {
664
+ "name": "SessionLogOffset",
665
+ "declaration": "export type SessionLogOffset = BrandedNumber<'SessionLogOffset'>;"
666
+ },
655
667
  {
656
668
  "name": "SessionReferenceSource",
657
- "declaration": "export interface SessionReferenceSource {\n kind: 'session-reference';\n form: 'recall';\n version: 1;\n references: { sessionId: string; label: string; capturedThroughSeq: number | null; compacted: boolean; originalMessages: number; retainedMessages: number; omittedMessages: number; omittedBytes: number; truncated: boolean; inputIndex: number; }[];\n}"
669
+ "declaration": "export interface SessionReferenceSource {\n kind: 'session-reference';\n form: 'recall';\n version: 1;\n references: { sessionId: string; label: string; capturedThroughSeq: OptionalSessionSeq; compacted: boolean; originalMessages: number; retainedMessages: number; omittedMessages: number; omittedBytes: number; truncated: boolean; inputIndex: number; }[];\n}"
658
670
  },
659
671
  {
660
672
  "name": "SessionRequestId",
661
673
  "declaration": "export type SessionRequestId = Branded<'session-request-id'>;"
662
674
  },
675
+ {
676
+ "name": "SessionSeq",
677
+ "declaration": "export type SessionSeq = BrandedNumber<'SessionSeq'>;"
678
+ },
663
679
  {
664
680
  "name": "SessionSurface",
665
- "declaration": "export interface SessionSurface {\n readonly nodes: readonly number[];\n readonly replaceGeneration: number;\n}"
681
+ "declaration": "export interface SessionSurface {\n readonly nodes: readonly SessionSeq[];\n readonly replaceGeneration: number;\n}"
666
682
  },
667
683
  {
668
684
  "name": "SessionTitleEventData",
669
- "declaration": "export interface SessionTitleEventData {\n readonly title: string;\n readonly messageSeqs: number[];\n readonly source: SessionTitleSource;\n}"
685
+ "declaration": "export interface SessionTitleEventData {\n readonly title: string;\n readonly messageSeqs: SessionSeq[];\n readonly source: SessionTitleSource;\n}"
670
686
  },
671
687
  {
672
688
  "name": "SessionTitleModelProvenance",
@@ -696,10 +712,6 @@ export const TYPERT = {
696
712
  "name": "SubagentDescriptorData",
697
713
  "declaration": "export type SubagentDescriptorData = OneShotSubagentDescriptorData | ContinuableSubagentDescriptorData;"
698
714
  },
699
- {
700
- "name": "SubagentReportMessageSource",
701
- "declaration": "export interface SubagentReportMessageSource {\n readonly kind: 'subagent-report';\n readonly form: 'relay';\n readonly senderSessionId: SessionId;\n}"
702
- },
703
715
  {
704
716
  "name": "SubagentSettledMessageSource",
705
717
  "declaration": "export interface SubagentSettledMessageSource {\n readonly kind: 'subagent-settled';\n readonly form: 'notice';\n readonly summary: string;\n readonly senderSessionId: SessionId;\n}"
@@ -710,11 +722,11 @@ export const TYPERT = {
710
722
  },
711
723
  {
712
724
  "name": "SurfaceIntent",
713
- "declaration": "export interface SurfaceIntent {\n surfaceOp: SurfaceOp;\n sourceEventSeqs?: number[];\n}"
725
+ "declaration": "export interface SurfaceIntent {\n surfaceOp: SurfaceOp;\n sourceEventSeqs?: SessionSeq[];\n}"
714
726
  },
715
727
  {
716
728
  "name": "SurfaceOp",
717
- "declaration": "export type SurfaceOp = 'append' | { op: 'replace'; start: number; end: number; };"
729
+ "declaration": "export type SurfaceOp = 'append' | { op: 'replace'; start: SessionSeq; end: SessionSeq; };"
718
730
  },
719
731
  {
720
732
  "name": "TeamId",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-agent-presets",
3
3
  "description": "Per-session agent composition from preset cordis.yml files for the DeepSeek Harness",
4
- "version": "0.1.2-alpha.2",
4
+ "version": "0.1.2-alpha.4",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -54,20 +54,20 @@
54
54
  ],
55
55
  "license": "MIT",
56
56
  "peerDependencies": {
57
- "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
58
57
  "@deepseek-ai/cordis-plugin-include": "^1.0.7",
59
- "@deepseek-ai/dsh-agent": "^0.1.2-alpha.2",
60
- "@deepseek-ai/dsh-atomic-write": "^0.1.2-alpha.2",
61
- "@deepseek-ai/dsh-invariants": "^0.1.2-alpha.2",
62
- "@deepseek-ai/dsh-home-paths": "^0.1.2-alpha.2",
63
- "@deepseek-ai/dsh-scope": "^0.1.2-alpha.2",
64
- "@deepseek-ai/dsh-session": "^0.1.2-alpha.2",
65
- "@deepseek-ai/dsh-session-projection": "^0.1.2-alpha.2",
66
- "@deepseek-ai/dsh-system-prompt": "^0.1.2-alpha.2",
67
- "@deepseek-ai/dsh-tools": "^0.1.2-alpha.2",
68
- "@deepseek-ai/dsh-typert-protocol": "^0.1.2-alpha.2",
69
- "@deepseek-ai/dsh-settings": "^0.1.2-alpha.2",
70
- "@deepseek-ai/cordis": "^4.0.2"
58
+ "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
59
+ "@deepseek-ai/dsh-agent": "^0.1.2-alpha.4",
60
+ "@deepseek-ai/dsh-atomic-write": "^0.1.2-alpha.4",
61
+ "@deepseek-ai/dsh-invariants": "^0.1.2-alpha.4",
62
+ "@deepseek-ai/dsh-home-paths": "^0.1.2-alpha.4",
63
+ "@deepseek-ai/dsh-session": "^0.1.2-alpha.4",
64
+ "@deepseek-ai/dsh-session-projection": "^0.1.2-alpha.4",
65
+ "@deepseek-ai/dsh-settings": "^0.1.2-alpha.4",
66
+ "@deepseek-ai/dsh-system-prompt": "^0.1.2-alpha.4",
67
+ "@deepseek-ai/dsh-tools": "^0.1.2-alpha.4",
68
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.2-alpha.4",
69
+ "@deepseek-ai/cordis": "^4.0.2",
70
+ "@deepseek-ai/dsh-scope": "^0.1.2-alpha.4"
71
71
  },
72
72
  "dependencies": {
73
73
  "js-yaml": "^4.1.0",
@@ -75,23 +75,23 @@
75
75
  "@deepseek-ai/schemastery": "^3.18.2"
76
76
  },
77
77
  "devDependencies": {
78
+ "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
78
79
  "@deepseek-ai/cordis-plugin-include": "^1.0.7",
80
+ "@deepseek-ai/dsh-agent": "^0.1.2-alpha.4",
81
+ "@deepseek-ai/dsh-agent-loop": "^0.1.2-alpha.4",
79
82
  "@deepseek-ai/cordis-plugin-group": "^1.0.2",
80
- "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
81
- "@deepseek-ai/dsh-agent": "^0.1.2-alpha.2",
82
- "@deepseek-ai/dsh-agent-loop": "^0.1.2-alpha.2",
83
- "@deepseek-ai/dsh-llm": "^0.1.2-alpha.2",
84
- "@deepseek-ai/dsh-home-paths": "^0.1.2-alpha.2",
85
- "@deepseek-ai/dsh-session": "^0.1.2-alpha.2",
86
- "@deepseek-ai/dsh-scope": "^0.1.2-alpha.2",
87
- "@deepseek-ai/dsh-settings": "^0.1.2-alpha.2",
88
- "@deepseek-ai/dsh-settings-file": "^0.1.2-alpha.2",
89
- "@deepseek-ai/dsh-system-prompt": "^0.1.2-alpha.2",
90
- "@deepseek-ai/dsh-tools": "^0.1.2-alpha.2",
91
- "@deepseek-ai/dsh-session-projection": "^0.1.2-alpha.2",
83
+ "@deepseek-ai/dsh-atomic-write": "^0.1.2-alpha.4",
84
+ "@deepseek-ai/dsh-invariants": "^0.1.2-alpha.4",
85
+ "@deepseek-ai/dsh-llm": "^0.1.2-alpha.4",
86
+ "@deepseek-ai/dsh-home-paths": "^0.1.2-alpha.4",
87
+ "@deepseek-ai/dsh-scope": "^0.1.2-alpha.4",
88
+ "@deepseek-ai/dsh-session": "^0.1.2-alpha.4",
89
+ "@deepseek-ai/dsh-session-projection": "^0.1.2-alpha.4",
90
+ "@deepseek-ai/dsh-settings": "^0.1.2-alpha.4",
91
+ "@deepseek-ai/dsh-system-prompt": "^0.1.2-alpha.4",
92
+ "@deepseek-ai/dsh-tools": "^0.1.2-alpha.4",
93
+ "@deepseek-ai/dsh-settings-file": "^0.1.2-alpha.4",
92
94
  "@deepseek-ai/cordis": "^4.0.2",
93
- "@deepseek-ai/dsh-invariants": "^0.1.2-alpha.2",
94
- "@deepseek-ai/dsh-atomic-write": "^0.1.2-alpha.2",
95
- "@deepseek-ai/dsh-typert-protocol": "^0.1.2-alpha.2"
95
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.2-alpha.4"
96
96
  }
97
97
  }
@@ -153,12 +153,6 @@
153
153
  # `workflows` is different — nothing outside an agent reads it — so every row
154
154
  # that reaches it shares one entry-local realm here, and a consumer left
155
155
  # outside would resolve a host registry this preset does not populate.
156
- #
157
- # `tool-subagent-report` is host-plane for the same reason as the registry,
158
- # not because a preset may not want it: it registers a CONTINUABLE SETUP on
159
- # that singleton rather than a tool this agent calls, and the setup list is
160
- # not scope-aware — one copy per mounted preset means every child gets
161
- # `report` registered once per live session, which throws on the second.
162
156
  - id: delegation
163
157
  name: cordis:group
164
158
  group: true
@@ -181,8 +175,8 @@
181
175
 
182
176
  # Fork omits model selection so provider/model stay equal to the parent and
183
177
  # the inherited history remains eligible for KV Cache reuse. This preset
184
- # keeps fork continuable and accepts its child-scoped `report` additions invalidating
185
- # that prefix; issue #2124 tracks cache-preserving continuable fork.
178
+ # keeps fork continuable; parent and child inherit the same messaging tool,
179
+ # while the parent id and return guidance follow the inherited history.
186
180
  - id: tool-subagent-fork
187
181
  name: '@deepseek-ai/dsh-tool-subagent'
188
182
  config:
@@ -1,9 +1,9 @@
1
1
  # The `ptc` agent preset: the standard coding agent, presented as PTC mode.
2
2
  #
3
- # Everything in `standard` is here unchanged. What is added is the `tool-presentation`
4
- # row: instead of one tool call per action, the model writes a TypeScript
5
- # program against a generated SDK and `run_code` executes it, so a sequence
6
- # that would be five round trips becomes one.
3
+ # Most of `standard` is here unchanged. The deliberate exception is the
4
+ # general-purpose `workflow` tool: PTC mode uses `run_code` as its model-authored
5
+ # composition surface. The `tool-presentation` row turns the remaining registry
6
+ # into a generated SDK, so a sequence that would be five round trips becomes one.
7
7
  #
8
8
  # The registry itself stays on the host plane — the agent loop's scheduler and
9
9
  # the API proxy's presenters are its consumers — so what this preset owns is
@@ -194,8 +194,8 @@
194
194
 
195
195
  # Fork omits model selection so provider/model stay equal to the parent and
196
196
  # the inherited history remains eligible for KV Cache reuse. This preset
197
- # keeps fork continuable and accepts its child-scoped `report` additions invalidating
198
- # that prefix; issue #2124 tracks cache-preserving continuable fork.
197
+ # keeps fork continuable; parent and child inherit the same messaging tool,
198
+ # while the parent id and return guidance follow the inherited history.
199
199
  - id: tool-subagent-fork
200
200
  name: '@deepseek-ai/dsh-tool-subagent'
201
201
  config:
@@ -232,6 +232,9 @@
232
232
 
233
233
  - id: tool-workflow
234
234
  name: '@deepseek-ai/dsh-tool-workflow'
235
+ # Keep the engine above for `ralph`, but do not publish a second
236
+ # model-authored orchestration surface beside `run_code` in PTC mode.
237
+ disabled: true
235
238
 
236
239
  - id: tool-ralph
237
240
  name: '@deepseek-ai/dsh-tool-ralph'
@@ -1,3 +1,3 @@
1
1
  name: PTC 模式
2
- description: 具备标准模式的全部能力,并通过 PTC 模式 SDK 呈现工具,让模型用一个 TypeScript 程序组合多步操作。
2
+ description: 功能完整的编码 Agent,但默认不提供 workflow 工具;其他工具通过 PTC 模式 SDK 呈现,让模型用一个 TypeScript 程序组合多步操作。
3
3
  order: 2
@@ -165,12 +165,6 @@
165
165
  # `workflows` is different — nothing outside an agent reads it — so every row
166
166
  # that reaches it shares one entry-local realm here, and a consumer left
167
167
  # outside would resolve a host registry this preset does not populate.
168
- #
169
- # `tool-subagent-report` is host-plane for the same reason as the registry,
170
- # not because a preset may not want it: it registers a CONTINUABLE SETUP on
171
- # that singleton rather than a tool this agent calls, and the setup list is
172
- # not scope-aware — one copy per mounted preset means every child gets
173
- # `report` registered once per live session, which throws on the second.
174
168
  - id: delegation
175
169
  name: cordis:group
176
170
  group: true
@@ -193,8 +187,8 @@
193
187
 
194
188
  # Fork omits model selection so provider/model stay equal to the parent and
195
189
  # the inherited history remains eligible for KV Cache reuse. This preset
196
- # keeps fork continuable and accepts its child-scoped `report` additions invalidating
197
- # that prefix; issue #2124 tracks cache-preserving continuable fork.
190
+ # keeps fork continuable; parent and child inherit the same messaging tool,
191
+ # while the parent id and return guidance follow the inherited history.
198
192
  - id: tool-subagent-fork
199
193
  name: '@deepseek-ai/dsh-tool-subagent'
200
194
  config: