@deepseek-ai/dsh-subagent 0.1.3-alpha.2 → 0.1.5-alpha.1

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.
package/README.i18n.yaml CHANGED
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write packages/subagent/subagent/README.md
5
- README.md: 60aea7d446acf2e01f46132ab03354bf17f74213
6
- README.zh.md: e46ee53436256afa5f0c8dd1c635cbd0f9585927
5
+ README.md: 6b58f36fcd4d6e8a198ddc86e80ccc28491a0a34
6
+ README.zh.md: be99e7c91f13c6d83a6375047ec5f21d55b21053
package/README.md CHANGED
@@ -9,7 +9,7 @@ English | [中文](README.zh.md)
9
9
 
10
10
  ## Summary
11
11
 
12
- `dsh-subagent` is the service behind child-agent delegation: an agent hands a task to a named child, collects the finished result, and for continuable children — keeps sending follow-up work across turns. Multiple providers coexist under one contract, so a single composition can offer in-process children, out-of-process ACP or SDK children, and real Codex or Claude Code children side by side. Children come in two shapes: one-shot runs that settle with a single result, and continuable children whose durable session accepts later messages and can be interrupted. The same service answers discovery questions — which children exist, their mode, activity, and lineage without loading or resuming them. Mount it with at least one provider backend and a delegation tool; the backends and the model-facing tools live in sibling packages.
12
+ Use `dsh-subagent` to delegate work to named child agents, collect their results, and continue supported child conversations across turns. A composition can offer in-process, ACP, SDK, Codex, or Claude Code children side by side. Choose one-shot children for a single result or continuable children for later messages and interruption. You can also inspect available children, their mode, activity, and lineage without loading or resuming them. Enable at least one supported child backend and a delegation tool.
13
13
 
14
14
  ## Table of Contents
15
15
 
package/README.zh.md CHANGED
@@ -9,7 +9,7 @@ kind: "package-reference"
9
9
 
10
10
  ## 概述
11
11
 
12
- `dsh-subagent` 是子 agent 委派背后的服务:agent(智能体)把任务交给具名子 agent,收集完成的结果,并且——对可继续子 agent 而言——跨轮次持续发送后续工作。多个提供方在同一约定下共存,因此单个组合可以并排提供进程内子 agent、进程外 ACPSDK 子 agent,以及真实 Codex 或 Claude Code 子 agent。子 agent 有两种形态:一次性运行以单个结果结算,可继续子 agent 的持久会话则接受后续消息并可被中断。同一服务还回答发现类问题——存在哪些子级、它们的模式、活动状态与血缘——而不加载或恢复它们。把它与至少一个提供方后端和一个委派工具一起挂载;后端与面向模型的工具位于兄弟包中。
12
+ 使用 `dsh-subagent` 把工作委派给具名子 agent、收集结果,并跨轮次继续受支持的子级对话。一个组合可以并排提供进程内、ACPSDKCodex 或 Claude Code 子级。需要单个结果时选择一次性子级;需要后续消息与中断能力时选择可继续子级。你还可以检查可用子级及其模式、活动状态与血缘,而无需加载或恢复它们。启用时需要至少一个受支持的子级后端和一个委派工具。
13
13
 
14
14
  ## 目录
15
15
 
package/lib/index.js CHANGED
@@ -708,7 +708,7 @@ var SubagentInbox = class {
708
708
  * @returns whether either Agent inbox destination is non-empty.
709
709
  */
710
710
  get hasPending() {
711
- return this.agent.inbox.hasPending;
711
+ return this.agent.inbox.nextTurn.length > 0 || this.agent.inbox.nextStep.length > 0;
712
712
  }
713
713
  /**
714
714
  * Submit through the Agent only while its Activation remains resident.
@@ -1060,8 +1060,7 @@ var ContinuableActivationRegistry = class {
1060
1060
  async materializeTracked(inputs, parentLineage) {
1061
1061
  const { childId, provider, parent, create } = inputs;
1062
1062
  inputs.signal.throwIfAborted();
1063
- const setup = (childCtx) => {
1064
- const child = childCtx.agent;
1063
+ const setup = (childCtx, child) => {
1065
1064
  if (create !== void 0) {
1066
1065
  child.session.append("subagent/descriptor", create.descriptor);
1067
1066
  appendDelegatedPolicyOverrides(child.session, create.delegatedPolicies);
@@ -1071,11 +1070,13 @@ var ContinuableActivationRegistry = class {
1071
1070
  const observer = this.observeActivation(provider, childId, parent);
1072
1071
  const handle = create === void 0 ? await this.ownerCtx.agents.resume({
1073
1072
  resumeSessionId: childId,
1073
+ parentAgent: parent,
1074
1074
  agentOptions: inputs.agentOptions,
1075
1075
  signal: inputs.signal,
1076
1076
  setup
1077
1077
  }) : await this.ownerCtx.agents.create({
1078
1078
  sessionId: childId,
1079
+ parentAgent: parent,
1079
1080
  meta: create.meta,
1080
1081
  ...create.seed === void 0 ? {} : { seed: create.seed },
1081
1082
  inheritedEventCount: create.inheritedEventCount,
@@ -386,7 +386,7 @@ export const TYPERT = {
386
386
  },
387
387
  {
388
388
  "name": "EpochHeader",
389
- "declaration": "export interface EpochHeader {\n config: LlmCallConfig;\n adapterDefaults?: LlmCallConfigAdapterDefaults;\n system?: string;\n tools?: ToolSchema[];\n}"
389
+ "declaration": "export interface EpochHeader {\n config: LlmCallConfig;\n adapterDefaults?: LlmCallConfigAdapterDefaults;\n tools?: ToolSchema[];\n}"
390
390
  },
391
391
  {
392
392
  "name": "FileAttachmentRef",
@@ -458,7 +458,7 @@ export const TYPERT = {
458
458
  },
459
459
  {
460
460
  "name": "Inbox",
461
- "declaration": "export class Inbox {\n get nextTurn(): readonly UserMessage[];\n get nextStep(): readonly UserMessage[];\n get hasPending(): boolean;\n clear(): void;\n claim(target: InboxTarget, turn: number): UserMessage[];\n append(target: InboxTarget, message: UserMessage): void;\n prepend(target: InboxTarget, message: UserMessage): void;\n replace(messageId: MessageId, newMessage: UserMessage): boolean;\n remove(messageId: MessageId): boolean;\n splice(target: InboxTarget, start: number, deleteCount: number, inserted: UserMessage[]): UserMessage[];\n}"
461
+ "declaration": "export interface Inbox {\n readonly nextTurn: readonly UserMessage[];\n readonly nextStep: readonly UserMessage[];\n clear(): void;\n append(target: InboxTarget, message: UserMessage): void;\n prepend(target: InboxTarget, message: UserMessage): void;\n replace(messageId: MessageId, newMessage: UserMessage): boolean;\n remove(messageId: MessageId): boolean;\n splice(target: InboxTarget, start: number, deleteCount: number, inserted: UserMessage[]): UserMessage[];\n}"
462
462
  },
463
463
  {
464
464
  "name": "InboxTarget",
@@ -578,7 +578,7 @@ export const TYPERT = {
578
578
  },
579
579
  {
580
580
  "name": "RequestContext",
581
- "declaration": "export interface RequestContext {\n provider: string;\n model: string;\n contextWindow?: number;\n}"
581
+ "declaration": "export interface RequestContext {\n provider: string;\n model: string;\n contextWindow?: number;\n systemPromptUpdate?: SystemPromptUpdate;\n}"
582
582
  },
583
583
  {
584
584
  "name": "RequestHeaderReason",
@@ -598,11 +598,11 @@ export const TYPERT = {
598
598
  },
599
599
  {
600
600
  "name": "SessionEvent",
601
- "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];"
601
+ "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 ? SurfaceIntent<K> : { surfaceOp?: never; sourceEventSeqs?: never; }) }[T];"
602
602
  },
603
603
  {
604
604
  "name": "SessionEventMap",
605
- "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/message': { turn: number; step: number; message: AssistantMessage; stream: AssistantStreamRecord[]; usage?: TokenUsage; interrupted?: true; };\n 'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[]; };\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': { inherited?: true; };\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 '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 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'subagent/descriptor': SubagentDescriptorData;\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 2; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'goal/change': GoalChangeMeta;\n 'feedback/message-put': MessageFeedbackPut;\n 'feedback/message-delete': MessageFeedbackDelete;\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}"
605
+ "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 'system/message': { turn: number; step: number; message: SystemMessage; };\n 'assistant/message': { turn: number; step: number; message: AssistantMessage; stream: AssistantStreamRecord[]; usage?: TokenUsage; interrupted?: true; };\n 'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[]; };\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': { inherited?: true; };\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/ptc-dispatch-start': PtcDispatchStartEventData;\n 'tool/ptc-dispatch': PtcDispatchEventData;\n 'agent-preset/selected': { agentPreset: string; };\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 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'subagent/descriptor': SubagentDescriptorData;\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 2; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'goal/change': GoalChangeMeta;\n 'feedback/message-put': MessageFeedbackPut;\n 'feedback/message-delete': MessageFeedbackDelete;\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}"
606
606
  },
607
607
  {
608
608
  "name": "SessionEventType",
@@ -738,7 +738,7 @@ export const TYPERT = {
738
738
  },
739
739
  {
740
740
  "name": "SurfaceEventType",
741
- "declaration": "export type SurfaceEventType = 'user/message' | 'assistant/message' | 'tool/result';"
741
+ "declaration": "export type SurfaceEventType = 'system/message' | 'user/message' | 'assistant/message' | 'tool/result';"
742
742
  },
743
743
  {
744
744
  "name": "SurfaceIntent",
@@ -746,7 +746,15 @@ export const TYPERT = {
746
746
  },
747
747
  {
748
748
  "name": "SurfaceOp",
749
- "declaration": "export type SurfaceOp = 'append' | { op: 'replace'; start: SessionSeq; end: SessionSeq; };"
749
+ "declaration": "export type SurfaceOp = 'append' | { op: 'replace'; startSeq: SessionSeq; endSeq: SessionSeq; };"
750
+ },
751
+ {
752
+ "name": "SystemMessage",
753
+ "declaration": "export interface SystemMessage extends Message {\n readonly role: 'system';\n readonly source: MessageSourceMap['plugin'];\n}"
754
+ },
755
+ {
756
+ "name": "SystemPromptUpdate",
757
+ "declaration": "export type SystemPromptUpdate = 'in-history';"
750
758
  },
751
759
  {
752
760
  "name": "TeamId",
@@ -405,8 +405,7 @@ export class ContinuableActivationRegistry {
405
405
  async materializeTracked(inputs, parentLineage) {
406
406
  const { childId, provider, parent, create } = inputs;
407
407
  inputs.signal.throwIfAborted();
408
- const setup = (childCtx) => {
409
- const child = childCtx.agent;
408
+ const setup = (childCtx, child) => {
410
409
  // Only fresh creation appends the descriptor and delegated policy after
411
410
  // the inherited marker; a cold resume replays those persisted events.
412
411
  if (create !== undefined) {
@@ -419,12 +418,14 @@ export class ContinuableActivationRegistry {
419
418
  const handle = create === undefined
420
419
  ? await this.ownerCtx.agents.resume({
421
420
  resumeSessionId: childId,
421
+ parentAgent: parent,
422
422
  agentOptions: inputs.agentOptions,
423
423
  signal: inputs.signal,
424
424
  setup,
425
425
  })
426
426
  : await this.ownerCtx.agents.create({
427
427
  sessionId: childId,
428
+ parentAgent: parent,
428
429
  meta: create.meta,
429
430
  ...(create.seed === undefined ? {} : { seed: create.seed }),
430
431
  inheritedEventCount: create.inheritedEventCount,
@@ -27,7 +27,7 @@ export class SubagentInbox {
27
27
  * @returns whether either Agent inbox destination is non-empty.
28
28
  */
29
29
  get hasPending() {
30
- return this.agent.inbox.hasPending;
30
+ return this.agent.inbox.nextTurn.length > 0 || this.agent.inbox.nextStep.length > 0;
31
31
  }
32
32
  /**
33
33
  * Submit through the Agent only while its Activation remains resident.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-subagent",
3
3
  "description": "Abstract subagent seam (ctx.subagents): named-provider registry for delegating to child agents",
4
- "version": "0.1.3-alpha.2",
4
+ "version": "0.1.5-alpha.1",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -54,30 +54,30 @@
54
54
  "license": "MIT",
55
55
  "dependencies": {
56
56
  "zod": "^4.4.3",
57
- "@deepseek-ai/dsh-brand": "^0.1.3-alpha.2",
58
- "@deepseek-ai/dsh-util-values": "^0.1.3-alpha.2"
57
+ "@deepseek-ai/dsh-util-values": "^0.1.5-alpha.1",
58
+ "@deepseek-ai/dsh-brand": "^0.1.5-alpha.1"
59
59
  },
60
60
  "peerDependencies": {
61
- "@deepseek-ai/cordis": "^4.0.2",
62
- "@deepseek-ai/dsh-agent": "^0.1.3-alpha.2",
63
- "@deepseek-ai/dsh-agent-presets": "^0.1.3-alpha.2",
64
- "@deepseek-ai/dsh-attachment": "^0.1.3-alpha.2",
65
- "@deepseek-ai/dsh-invariants": "^0.1.3-alpha.2",
66
- "@deepseek-ai/dsh-jobs": "^0.1.3-alpha.2",
67
- "@deepseek-ai/dsh-llm": "^0.1.3-alpha.2",
68
- "@deepseek-ai/dsh-sandbox": "^0.1.3-alpha.2",
69
- "@deepseek-ai/dsh-sandbox-policy": "^0.1.3-alpha.2",
70
- "@deepseek-ai/dsh-session": "^0.1.3-alpha.2",
71
- "@deepseek-ai/dsh-session-persistence": "^0.1.3-alpha.2",
72
- "@deepseek-ai/dsh-session-projection": "^0.1.3-alpha.2",
73
- "@deepseek-ai/dsh-session-projection-cache": "^0.1.3-alpha.2",
74
- "@deepseek-ai/dsh-session-query": "^0.1.3-alpha.2",
75
- "@deepseek-ai/dsh-system-prompt": "^0.1.3-alpha.2",
76
- "@deepseek-ai/dsh-typert-protocol": "^0.1.3-alpha.2",
77
- "@deepseek-ai/dsh-scope": "^0.1.3-alpha.2",
78
- "@deepseek-ai/dsh-tools": "^0.1.3-alpha.2",
79
- "@deepseek-ai/dsh-user-approval": "^0.1.3-alpha.2",
80
- "@deepseek-ai/dsh-util-time": "^0.1.3-alpha.2"
61
+ "@deepseek-ai/dsh-attachment": "^0.1.5-alpha.1",
62
+ "@deepseek-ai/dsh-invariants": "^0.1.5-alpha.1",
63
+ "@deepseek-ai/dsh-jobs": "^0.1.5-alpha.1",
64
+ "@deepseek-ai/dsh-llm": "^0.1.5-alpha.1",
65
+ "@deepseek-ai/dsh-sandbox": "^0.1.5-alpha.1",
66
+ "@deepseek-ai/dsh-scope": "^0.1.5-alpha.1",
67
+ "@deepseek-ai/dsh-sandbox-policy": "^0.1.5-alpha.1",
68
+ "@deepseek-ai/dsh-session-persistence": "^0.1.5-alpha.1",
69
+ "@deepseek-ai/dsh-session-projection": "^0.1.5-alpha.1",
70
+ "@deepseek-ai/dsh-session-projection-cache": "^0.1.5-alpha.1",
71
+ "@deepseek-ai/dsh-session-query": "^0.1.5-alpha.1",
72
+ "@deepseek-ai/dsh-system-prompt": "^0.1.5-alpha.1",
73
+ "@deepseek-ai/dsh-tools": "^0.1.5-alpha.1",
74
+ "@deepseek-ai/dsh-session": "^0.1.5-alpha.1",
75
+ "@deepseek-ai/dsh-agent": "^0.1.5-alpha.1",
76
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.5-alpha.1",
77
+ "@deepseek-ai/dsh-user-approval": "^0.1.5-alpha.1",
78
+ "@deepseek-ai/dsh-util-time": "^0.1.5-alpha.1",
79
+ "@deepseek-ai/dsh-agent-presets": "^0.1.5-alpha.1",
80
+ "@deepseek-ai/cordis": "^4.0.2"
81
81
  },
82
82
  "peerDependenciesMeta": {
83
83
  "@deepseek-ai/dsh-agent-presets": {
@@ -110,27 +110,28 @@
110
110
  },
111
111
  "devDependencies": {
112
112
  "@deepseek-ai/cordis": "^4.0.2",
113
- "@deepseek-ai/dsh-agent": "^0.1.3-alpha.2",
114
- "@deepseek-ai/dsh-agent-presets": "^0.1.3-alpha.2",
115
- "@deepseek-ai/dsh-attachment": "^0.1.3-alpha.2",
116
- "@deepseek-ai/dsh-invariants": "^0.1.3-alpha.2",
117
- "@deepseek-ai/dsh-jobs": "^0.1.3-alpha.2",
118
- "@deepseek-ai/dsh-llm": "^0.1.3-alpha.2",
119
- "@deepseek-ai/dsh-sandbox-policy": "^0.1.3-alpha.2",
120
- "@deepseek-ai/dsh-sandbox": "^0.1.3-alpha.2",
121
- "@deepseek-ai/dsh-scope": "^0.1.3-alpha.2",
122
- "@deepseek-ai/dsh-session": "^0.1.3-alpha.2",
123
- "@deepseek-ai/dsh-session-persistence": "^0.1.3-alpha.2",
124
- "@deepseek-ai/dsh-session-projection": "^0.1.3-alpha.2",
125
- "@deepseek-ai/dsh-session-query": "^0.1.3-alpha.2",
126
- "@deepseek-ai/dsh-storage": "^0.1.3-alpha.2",
127
- "@deepseek-ai/dsh-session-projection-cache": "^0.1.3-alpha.2",
128
- "@deepseek-ai/dsh-storage-json": "^0.1.3-alpha.2",
129
- "@deepseek-ai/dsh-system-prompt": "^0.1.3-alpha.2",
130
- "@deepseek-ai/dsh-tools": "^0.1.3-alpha.2",
131
- "@deepseek-ai/dsh-typert-protocol": "^0.1.3-alpha.2",
132
- "@deepseek-ai/dsh-user-approval": "^0.1.3-alpha.2",
133
- "@deepseek-ai/dsh-storage-domain": "^0.1.3-alpha.2",
134
- "@deepseek-ai/dsh-util-time": "^0.1.3-alpha.2"
113
+ "@deepseek-ai/dsh-agent": "^0.1.5-alpha.1",
114
+ "@deepseek-ai/dsh-attachment": "^0.1.5-alpha.1",
115
+ "@deepseek-ai/dsh-invariants": "^0.1.5-alpha.1",
116
+ "@deepseek-ai/dsh-agent-presets": "^0.1.5-alpha.1",
117
+ "@deepseek-ai/dsh-jobs": "^0.1.5-alpha.1",
118
+ "@deepseek-ai/dsh-llm": "^0.1.5-alpha.1",
119
+ "@deepseek-ai/dsh-sandbox-policy": "^0.1.5-alpha.1",
120
+ "@deepseek-ai/dsh-sandbox": "^0.1.5-alpha.1",
121
+ "@deepseek-ai/dsh-schedule": "^0.1.5-alpha.1",
122
+ "@deepseek-ai/dsh-scope": "^0.1.5-alpha.1",
123
+ "@deepseek-ai/dsh-session": "^0.1.5-alpha.1",
124
+ "@deepseek-ai/dsh-session-persistence": "^0.1.5-alpha.1",
125
+ "@deepseek-ai/dsh-session-projection": "^0.1.5-alpha.1",
126
+ "@deepseek-ai/dsh-session-projection-cache": "^0.1.5-alpha.1",
127
+ "@deepseek-ai/dsh-session-query": "^0.1.5-alpha.1",
128
+ "@deepseek-ai/dsh-storage": "^0.1.5-alpha.1",
129
+ "@deepseek-ai/dsh-storage-domain": "^0.1.5-alpha.1",
130
+ "@deepseek-ai/dsh-system-prompt": "^0.1.5-alpha.1",
131
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.5-alpha.1",
132
+ "@deepseek-ai/dsh-user-approval": "^0.1.5-alpha.1",
133
+ "@deepseek-ai/dsh-util-time": "^0.1.5-alpha.1",
134
+ "@deepseek-ai/dsh-tools": "^0.1.5-alpha.1",
135
+ "@deepseek-ai/dsh-storage-json": "^0.1.5-alpha.1"
135
136
  }
136
137
  }