@deepseek-ai/dsh-subagent 0.0.1-rc.2 → 0.0.1-rc.3
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 +2 -2
- package/README.md +3 -3
- package/README.zh.md +16 -16
- package/lib/index.js +8 -8
- package/lib/types/continuation.d.ts +1 -1
- package/lib/types/index.d.ts +7 -7
- package/lib/types/index.js +4 -4
- package/lib/types/list-children.d.ts +2 -2
- package/lib/types/list-children.js +2 -2
- package/lib/types/run-settlement.d.ts +3 -3
- package/lib/types/run-settlement.js +2 -2
- package/lib/types/types.d.ts +1 -1
- package/package.json +35 -35
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:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: 3a0142ed7e72d4f276dd475e1a8e1fa5e3aab9a6
|
|
6
|
+
README.zh.md: 13ec9f61a28f425bbf8c80feed2e6211b2fe7f16
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ The [subagent family overview](../README.md) maps implementations and model-faci
|
|
|
8
8
|
|
|
9
9
|
## Service API
|
|
10
10
|
|
|
11
|
-
`
|
|
11
|
+
`SubagentRuntime` has these operations:
|
|
12
12
|
|
|
13
13
|
| Member | Meaning |
|
|
14
14
|
|---|---|
|
|
@@ -94,7 +94,7 @@ Run events are scoped to the delegating parent. Every listener is independently
|
|
|
94
94
|
|
|
95
95
|
Provider additions and removals also emit `subagent/provider-added` and `subagent/provider-removed`. Consumers such as the model-facing tool use those events because Cordis may load sibling plugins concurrently; configuration order does not prove registration order.
|
|
96
96
|
|
|
97
|
-
Continuable children do not create `SubagentRun` or
|
|
97
|
+
Continuable children do not create `SubagentRun` or Jobs. The continuation manager directly owns one process-local Activation and retained `AgentHandle` per resident child Session, uses the Agent inbox as the only FIFO, and cold-resumes from the durable descriptor. Exact live direct-parent identity authorizes parent-to-child delivery. Exact live child identity authorizes reports; the manager derives the recipient from durable `parentSession`, and `MessageSource` records the sender without granting authority. Interrupt authority is deliberately wider than delivery authority: a human presents the durable direct-parent address so a live child stays stoppable while its parent Agent is offline, and any exact live ancestor recorded in the Activation's materialization lineage may stop its descendant, because stopping a turn is idempotent and delivers no content.
|
|
98
98
|
|
|
99
99
|
When `ctx.sessionProjections` is available, the service registers two projection units. `subagentTiming` resets at each descriptor so a fork seed's ancestor work cannot enter the child's total, then accumulates `turn/start` → `turn/end` active time and retains same-cut `active.since` and `active.through` bounds for an open turn; while that turn remains open, `active.through` follows the latest folded event, giving an inactive consumer a conservative crash bound without mixing in newer session metadata. `subagent` folds the durable identity — mode plus creation label — from `subagent/descriptor` events with the same last-wins reset discipline, so a fork seed's ancestor descriptor stands only until the child's own overrides it; a malformed or unrecognized-version payload folds to the serializable `null` sentinel — indistinguishable from a log with no descriptor, and surviving every JSON push frame so a consumer replaces a stale identity instead of keeping it — and never throws.
|
|
100
100
|
|
|
@@ -131,7 +131,7 @@ Every in-process child's runtime-context snapshot carries the `subagent:delegati
|
|
|
131
131
|
##### The delegation-scope statement
|
|
132
132
|
|
|
133
133
|
```markdown
|
|
134
|
-
You are a delegated subagent: your permission scope was fixed when you were started and cannot be widened from inside this session — operations that require approval are rejected automatically. When the
|
|
134
|
+
You are a delegated subagent: your permission scope was fixed when you were started and cannot be widened from inside this session — operations that require approval are rejected automatically. When the job needs access beyond that scope, do not retry the denied operation; state the limitation in your reply so the delegating agent can handle it.
|
|
135
135
|
```
|
|
136
136
|
|
|
137
137
|
#### Token effect
|
package/README.zh.md
CHANGED
|
@@ -8,7 +8,7 @@ subagent seam 允许一个 agent(智能体)通过具名提供方把工作委
|
|
|
8
8
|
|
|
9
9
|
## 服务 API
|
|
10
10
|
|
|
11
|
-
`
|
|
11
|
+
`SubagentRuntime` 具有以下操作:
|
|
12
12
|
|
|
13
13
|
| 成员 | 含义 |
|
|
14
14
|
|---|---|
|
|
@@ -16,14 +16,14 @@ subagent seam 允许一个 agent(智能体)通过具名提供方把工作委
|
|
|
16
16
|
| `getProvider(name)` | 返回提供方;不存在时返回 `undefined`。 |
|
|
17
17
|
| `list()` | 按插入顺序返回提供方名称。 |
|
|
18
18
|
| `start(name, request)` | 校验普通调用方请求,解析其分离的 `one-shot` 描述符,然后等待提供方,直到真实的一次性子 agent 发布。兑现时返回由持有方拥有的 `SubagentRun`;拒绝表示提供方已清理所有未发布的启动资源,而发布后的轮次或基础设施故障会通过该 run 结算。可继续子 agent 绝不通过此操作进入。 |
|
|
19
|
-
| `startContinuable(spec)` | 建立一个持久化可继续子 agent,并投递其初始提示词。子 agent 的 inbox 接受该提示词时,兑现为 `{ childId, messageId }
|
|
20
|
-
| `followup(parent, childId, content, { source, signal })` | 将来自确切在线直接父级的一条后续消息作为子 agent 的下一个 FIFO 轮次投递,术语与 `Agent.followup()` 一致,并返回被接受的 `MessageId`。驻留中的子 agent 由其 inbox 直接接受(唤醒处于 waiting 的 Activation
|
|
21
|
-
| `interrupt(targetSessionId, authority)` | 以人类持久化 parent 地址(`{ kind: 'user', parentSessionId }`)或确切在线 ancestor Agent(`{ kind: 'ancestor', agent }`)为授权,中断一个在线可继续 child 的当前轮次。准入同步完成、生效异步进行:它发出 `Agent.cancel(cause, { keepInbox: true })` 后立即返回,不等待目标观察到信号。尚未领取的待处理 inbox 工作、Activation 与已发布的后代均保持不变;已被领取进入中断轮次的工作不会重新入队。目标不存在时接受为 no-op;错误的 parent
|
|
19
|
+
| `startContinuable(spec)` | 建立一个持久化可继续子 agent,并投递其初始提示词。子 agent 的 inbox 接受该提示词时,兑现为 `{ childId, messageId }`,无需等待轮次开始或消息写入会话日志;此前任何失败都会以无 id 拒绝,并完全回滚该子 agent。要求 `ctx.agents`、会话持久化以及具备 `prepareContinuable` 能力的提供方。 |
|
|
20
|
+
| `followup(parent, childId, content, { source, signal })` | 将来自确切在线直接父级的一条后续消息作为子 agent 的下一个 FIFO 轮次投递,术语与 `Agent.followup()` 一致,并返回被接受的 `MessageId`。驻留中的子 agent 由其 inbox 直接接受(唤醒处于 waiting 的 Activation);不驻留的则从其持久化会话冷恢复。要求 `ctx.agents`;冷恢复还要求会话持久化。 |
|
|
21
|
+
| `interrupt(targetSessionId, authority)` | 以人类持久化 parent 地址(`{ kind: 'user', parentSessionId }`)或确切在线 ancestor Agent(`{ kind: 'ancestor', agent }`)为授权,中断一个在线可继续 child 的当前轮次。准入同步完成、生效异步进行:它发出 `Agent.cancel(cause, { keepInbox: true })` 后立即返回,不等待目标观察到信号。尚未领取的待处理 inbox 工作、Activation 与已发布的后代均保持不变;已被领取进入中断轮次的工作不会重新入队。目标不存在时接受为 no-op;错误的 parent 地址以及陈旧、指向自身或非祖先调用方以 `UNAUTHORIZED` 拒绝。 |
|
|
22
22
|
| `reportFrom(child, content, { delivery, signal })` | 从确切在线可继续 child 向其确切在线直接 parent 投递一条选中消息,并返回已接受的稳定 `MessageId`。静默投递会注入上下文;唤醒投递会提交一个后续 parent 轮次。 |
|
|
23
23
|
| `registerContinuableSetup(contribution)` | 把一项可选部署能力组合到每个可继续 child 尚未发布的作用域中,并支持从驻留 child 立即撤销。 |
|
|
24
24
|
| `drainContinuableDescendants(parents)` | 在由 host 确切拥有的在线 parent Agent 之下关闭准入,只停止其可见的可继续后代,等待在这些根之下已获准的物化过程完成发布或回滚,再按 child-first 顺序释放所选森林。该截止状态会持续到每个确切 parent 离开注册表;无关的 parent 森林和管理器全局准入保持在线。 |
|
|
25
25
|
| `listChildren(parentSessionId, signal?)` | 按 `createdAt` 再按 id 的顺序列出由会话支撑的直接 subagent,包括其 `one-shot`/`continuable` 模式、`running`/`inactive` 活动状态、基于 origin 分类的一层 `hasChildren` 提示与逐 child diagnostic,且不会加载或恢复它们。直接读取在线会话存储与可选的会话持久化(持久化缺席时仅枚举在线 child),并要求已挂载 `sessionProjections` 注册表;不要求 `ctx.agents`、继续执行管理器或任何查询服务。 |
|
|
26
|
-
| `listDescendants(rootSessionId, signal?)` |
|
|
26
|
+
| `listDescendants(rootSessionId, signal?)` | 从同一份在线优先语料按稳定 pre-order 展平根的完整会话树,并为每个 subagent 条目附加持久 `parentId` 与相对根的 `depth`。普通会话与一次性 child 仍作为遍历节点,因此其下的可继续后代仍可发现。身份、diagnostic、依赖与取消约定均沿用 `listChildren()`。 |
|
|
27
27
|
|
|
28
28
|
`SubagentStartRequest.label` 是由会话支撑的一次性 child 所使用的可选简短持久化显示标签。面向模型的委派会提供其已有的 `description`;底层调用方无需凭空构造展示元数据。可继续启动始终携带自身的必填标签。`signal` 是必填项,也是一次性 `start` 的规范取消通道。发布前中止会使 `start()` 在回滚后拒绝;发布后中止会取消已返回 run 的剩余轮次工作,但不会隐藏其 id。请求还可以选择模型、要求结构化输出、限制委派深度、约束子 agent 工具或设置子 agent persona。对于可继续启动或后续操作,调用方信号只在 inbox 接受之前掌管查找、物化和准入;此后由管理器独立拥有 Activation,因此调用方后续取消既不会取消已接受的轮次,也不会 dispose(资源释放)子 agent。
|
|
29
29
|
|
|
@@ -70,11 +70,11 @@ subagent seam 允许一个 agent(智能体)通过具名提供方把工作委
|
|
|
70
70
|
|
|
71
71
|
## 可继续子 agent 与 Activation
|
|
72
72
|
|
|
73
|
-
可继续子 agent
|
|
73
|
+
可继续子 agent 拥有一个持久化会话和至多一个进程内 **Activation**——即被重建的子 agent 的一个驻留时段,而不是请求、结果、取消或 Task 边界。Agent inbox 是唯一的轮次队列,因此继续执行管理器负责驻留,而 agent loop(智能体循环)负责所有轮次排序与执行。任何可继续路径都不会创建 Task 或中间的承载结果的包装层。
|
|
74
74
|
|
|
75
|
-
管理器根据 Agent
|
|
75
|
+
管理器根据 Agent 完全停稳状态和所拥有的子 agent 集合推导三个内部驻留条件,而非维护第二个状态机:running(存在活跃准入、进行中的轮次或唤醒型 inbox 工作)、waiting(已停稳但仍拥有至少一个未 dispose 的子 agent)、settled(已停稳且所有拥有的子 agent 都已 dispose,因此管理器 dispose `AgentHandle` 并移除 Activation)。每条后续消息都使用 `Agent.followup()` 并成为一个 FIFO 轮次,且不会对当前轮次进行 steering(中途引导)。路由只取决于驻留状态:running 入队、waiting 唤醒同一 Agent,无 Activation 时则冷恢复一个新的。
|
|
76
76
|
|
|
77
|
-
管理器预留子 agent 身份、解析持久化描述符,通过私有的 activation-owner 作用域调用 `ctx.agents.create()`(冷恢复时为 `ctx.agents.resume()`),把返回的 `AgentHandle` 安装到 Activation
|
|
77
|
+
管理器预留子 agent 身份、解析持久化描述符,通过私有的 activation-owner 作用域调用 `ctx.agents.create()`(冷恢复时为 `ctx.agents.resume()`),把返回的 `AgentHandle` 安装到 Activation 中,建立任何可继续父级所有权,然后提交提示词。冷恢复绝不通过提供方分发,因为持久化会话已持有初始前缀,折叠后的描述符即是全部重建输入。
|
|
78
78
|
|
|
79
79
|
### 结算投递
|
|
80
80
|
|
|
@@ -84,7 +84,7 @@ subagent seam 允许一个 agent(智能体)通过具名提供方把工作委
|
|
|
84
84
|
|
|
85
85
|
空闲父级会以一个普通的后续轮次收到该通知。繁忙父级则被 steer 到其最近的 step 边界,因此同时结算的多个子级只消耗一个 step,而不是各自一个轮次;采用 steer 而非 inject 还意味着:即便驱动在状态读取与发送之间退出,该消息仍会被认领。若父级自身所在的谱系已在 draining,则该通知改为 inject 送达,完全不唤醒:对静息父级调用 `Agent.followup()` 会开启一个轮次,而 `cancel()` 不会对之后的轮次设防,因此在拆卸期间唤醒,会在宿主即将 dispose 的 Agent 上白花一次模型请求——而且每层树各一次,因为每层自己的通知又会唤醒它上面那层。被 inject 的消息会送达仍在读取自身 inbox 的父级,而无论如何日志都会记录这份记账;但它不会比该父级自身的 dispose 活得更久:`AgentHandle.dispose()` 是一次 `keepInbox: false` 的 cancel,会持久地取消尚未被认领的通知。因此 resume 后的父级没有待处理通知可读:`list_agents` 只告诉它有哪些子级、各自是在线还是仅存于存储;结局本身留在子级自己的 Session 里,一次 `send_message` 会通过 resume 该子级把它取回。已离开注册表的父级不算错误:通知被丢弃,子级自身的 Session 仍是持久记录。投递绝不会阻塞或使拆卸失败——发送被拒只会记录日志,因为为了重试一条通知而保留子级,会把它的整条祖先链永久钉在 `waiting` 上。
|
|
86
86
|
|
|
87
|
-
受继续执行管理的父级 Activation 会在子 agent 能够运行之前,把每个子 agent
|
|
87
|
+
受继续执行管理的父级 Activation 会在子 agent 能够运行之前,把每个子 agent 的会话 id 记录到 `ownedChildren` 集合中,并且只有在每个所拥有的子 agent Activation 完成 `AgentHandle` dispose 之后才会 dispose(子先于父)。拆卸会先自顶向下传播 Agent 取消,再等待缓慢的后代,而 handle 释放仍保持 child-first。顶层及其他非继续执行的 Agent 没有 Activation,处于该等待图之外。最终结算会在 dispose handle 前等待 best-effort 的 `ctx.sessions.flush(child.session)`。listener rejection 会被记录,但不会使 Activation 失败,因为 listener 是否参与无法标识持久化后端;因此,恢复时持久化状态可能缺失或陈旧。
|
|
88
88
|
|
|
89
89
|
## 生命周期事件
|
|
90
90
|
|
|
@@ -94,15 +94,15 @@ subagent seam 允许一个 agent(智能体)通过具名提供方把工作委
|
|
|
94
94
|
|
|
95
95
|
提供方新增和移除还会发出 `subagent/provider-added` 与 `subagent/provider-removed`。面向模型的工具等消费方使用这些事件,因为 Cordis 可能并发加载同级插件;配置顺序不能证明注册顺序。
|
|
96
96
|
|
|
97
|
-
可继续子级不会创建 `SubagentRun` 或 Task
|
|
97
|
+
可继续子级不会创建 `SubagentRun` 或 Task。继续执行管理器为每个驻留子会话直接拥有一个仅存在于当前进程的 Activation 和一个留存的 `AgentHandle`,使用 Agent inbox 作为唯一 FIFO,并从持久化描述符冷恢复。父到子投递由确切在线的直接父级身份授权。上报则由确切在线的子级身份授权;管理器根据持久化的 `parentSession` 推导接收方,`MessageSource` 记录发送方,但不授予权限。中断权限被刻意设计得比投递权限更宽:人类出示持久化直接 parent 地址,因此即使 parent Agent 离线,在线 child 仍可被停止;Activation 物化时记录的任何确切在线 ancestor 也可以停止其后代,因为停止一个轮次是幂等的,且不投递任何内容。
|
|
98
98
|
|
|
99
|
-
当 `ctx.sessionProjections` 可用时,服务会注册两个投影单元。`subagentTiming` 会在每个描述符处重置,使 fork 种子中的祖先工作不会计入 child 总量,随后累加 `turn/start` → `turn/end` 活跃时间,并为未结束的轮次保留同一切面的 `active.since` 和 `active.through` 边界;在该轮次保持未结束期间,`active.through` 会跟随最近折叠的事件,从而为 inactive 消费方提供保守的崩溃上界,又不会混入更新的会话元数据。`subagent` 以同样的 last-wins 重置纪律从 `subagent/descriptor` 事件折叠持久化身份——模式与创建标签——因此 fork 种子中的祖先描述符只在 child
|
|
99
|
+
当 `ctx.sessionProjections` 可用时,服务会注册两个投影单元。`subagentTiming` 会在每个描述符处重置,使 fork 种子中的祖先工作不会计入 child 总量,随后累加 `turn/start` → `turn/end` 活跃时间,并为未结束的轮次保留同一切面的 `active.since` 和 `active.through` 边界;在该轮次保持未结束期间,`active.through` 会跟随最近折叠的事件,从而为 inactive 消费方提供保守的崩溃上界,又不会混入更新的会话元数据。`subagent` 以同样的 last-wins 重置纪律从 `subagent/descriptor` 事件折叠持久化身份——模式与创建标签——因此 fork 种子中的祖先描述符只在 child 自身的描述符覆盖之前有效;畸形或版本无法识别的载荷折叠为可序列化的 `null` 哨兵——与没有描述符的日志不可区分,且能完好通过每个 JSON 推送帧,让消费方以之替换掉手中的陈旧身份而非继续保留该身份——绝不抛错。
|
|
100
100
|
|
|
101
101
|
`registerContinuableSetup()` 允许可选包添加子级作用域能力,而无需让继续执行管理器知道这些能力的名称。贡献会在 Activation 发布前同步安装,在设置失败时一并回滚,并随子级作用域释放。新授权须等到下一个 Activation,移除贡献则会立即撤销每个驻留安装项。
|
|
102
102
|
|
|
103
103
|
## 收集模型
|
|
104
104
|
|
|
105
|
-
面向模型的工具默认同步收集:先等待子 agent 结果,再 dispose 运行,然后才返回。一次性后台委派会在工具中注册普通 Task,其通用状态、收集和取消工具负责后续交互,并将模型提供的 `description` 持久化为可选显示标签。可继续后台委派会调用 `ctx.subagents.startContinuable()`,只返回持久化子 agent id;子 agent 自 inbox 接受起就拥有自己的轮次,因此没有 Task、也没有结果 promise——调用方通过 `send_message` 后续操作工具发送后续工作,`interrupt()` 只停止当前轮次而不 dispose 子 agent,而持久化子 agent
|
|
105
|
+
面向模型的工具默认同步收集:先等待子 agent 结果,再 dispose 运行,然后才返回。一次性后台委派会在工具中注册普通 Task,其通用状态、收集和取消工具负责后续交互,并将模型提供的 `description` 持久化为可选显示标签。可继续后台委派会调用 `ctx.subagents.startContinuable()`,只返回持久化子 agent id;子 agent 自 inbox 接受起就拥有自己的轮次,因此没有 Task、也没有结果 promise——调用方通过 `send_message` 后续操作工具发送后续工作,`interrupt()` 只停止当前轮次而不 dispose 子 agent,而持久化子 agent 会话仍是子 agent 详细输出的来源。只有 `ctx.agents` 可用时,继续执行管理器才会存在,而会话持久化按每项继续执行操作解析。与此独立,`listChildren()` 枚举在线会话存储与可选会话持久化的在线优先合并——持久化缺席时仅枚举在线 child,因为那时冷 child 本就无法恢复——并由已注册的 `subagent` 投影单元供给每个 child 的持久化模式与标签:在线 child 取注册表的水位快照;冷 child 先取可选投影缓存的持久化行,且仅当其 `seq` 门证明该值折叠自 child 自身后缀(fork 种子之后——自有描述符一经追加即不可变)才直接采用,否则经一次有界并发的持久化 inspect 再经注册表折叠,且 inspect 结果必须仍指向枚举时的生命周期(同 id 被重新发布的会话降级为 `corrupt` diagnostic)。缓存读取抛错不产生判决——缓存是派生数据——静默落到该权威重折。投影折叠是唯一的分类权威;列表自身不解析任何描述符。取得身份值即产出 child 行;已定局而折叠未产出身份的候选是 `corrupt` diagnostic,inspect 失败是瞬时的 `unavailable`(下次列表重试),运行中而暂无身份值的候选整行省略(描述符尚未追加的创建窗口)。它不查询继续执行管理器、Agent 注册信息、Activation 或提供方。每个 child 行都会根据合并结果中携带持久化 `origin: 'subagent'` 的 header 派生读取时的 `hasChildren` 提示;它不会读取后代事件日志,展开后仍以描述符支撑的 child 目录为权威依据。UI 等服务消费方可以保留两种模式,并为无标签的一次性 child 选择回退展示;面向模型的 `list_agents` 工具只投影 `continuable` 条目,通过在线 Agent 注册表细化状态,并把仅存于存储的状态映射为可恢复而非终态的 `ready`(`running`/`idle`/`ready`),并在 `descendants` scope 下遍历 `listDescendants()`。列表操作会把调用方的取消信号转发到每次持久化读取,在这些 await 前后检查取消,并将每次检测到的中止报告为 `SubagentError` 错误码 `CANCELLED`;投影注册表未挂载则以 `SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE` 响亮失败,会话存储缺失则以 `SUBAGENT_CONTROL_SESSION_STORE_UNAVAILABLE` 响亮失败。完整约定见[后台 subagent 任务 Agent Note](../../../.agents/notes/implemented/feature/2026-07-08-background-subagent-tasks.md)、[可继续后台 subagent Agent Note](../../../.agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.md)、[持久化目录 Agent Note](../../../.agents/notes/implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md)、[服务合并 Agent Note](../../../.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.md)、[能力 seam Agent Note](../../../.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.md)和 `src/types.ts`。
|
|
106
106
|
|
|
107
107
|
可继续 Activation 会等待 best-effort 的最终会话 flush,但不会把 listener 参与视为持久性确认。一次性运行保留尽力执行的会话检查点,因此已完成的一次性 child 只有在其会话确实进入持久化存储时,才可在 dispose 后继续被发现;如果该检查点缺失,服务不会根据 Task 历史虚构目录条目。
|
|
108
108
|
|
|
@@ -131,7 +131,7 @@ subagent seam 允许一个 agent(智能体)通过具名提供方把工作委
|
|
|
131
131
|
##### 委派范围声明
|
|
132
132
|
|
|
133
133
|
```markdown
|
|
134
|
-
You are a delegated subagent: your permission scope was fixed when you were started and cannot be widened from inside this session — operations that require approval are rejected automatically. When the
|
|
134
|
+
You are a delegated subagent: your permission scope was fixed when you were started and cannot be widened from inside this session — operations that require approval are rejected automatically. When the job needs access beyond that scope, do not retry the denied operation; state the limitation in your reply so the delegating agent can handle it.
|
|
135
135
|
```
|
|
136
136
|
|
|
137
137
|
#### Token 影响
|
|
@@ -144,11 +144,11 @@ You are a delegated subagent: your permission scope was fixed when you were star
|
|
|
144
144
|
|
|
145
145
|
## 已知限制与暂缓事项
|
|
146
146
|
|
|
147
|
-
- **ACP 子 agent 仍为一次性,且无法通过追踪枚举**:ACP 运行在 parent 会话语料中没有本地 child 会话。ACP 的 `prepareContinuable` 需要在提供方专用描述符数据中持久化远端会话 id,以及逐子 agent 的继续执行能力声明,因为 ACP 的 `loadSession` 支持按子 agent 协商,而不是通过方法是否存在来确定。远程提供方还需要一份独立的 Activation
|
|
147
|
+
- **ACP 子 agent 仍为一次性,且无法通过追踪枚举**:ACP 运行在 parent 会话语料中没有本地 child 会话。ACP 的 `prepareContinuable` 需要在提供方专用描述符数据中持久化远端会话 id,以及逐子 agent 的继续执行能力声明,因为 ACP 的 `loadSession` 支持按子 agent 协商,而不是通过方法是否存在来确定。远程提供方还需要一份独立的 Activation 所有权约定,具备等效的经认证控制和子先于父的完全停稳保证,才能支持可继续子 agent。
|
|
148
148
|
- **无 host-user 继续执行**:`followup()` 要求确切在线直接父级。只有 `interrupt()` 接受持久化 parent 地址形式的用户授权,因为停止一个轮次是幂等的且不投递任何内容;未来 host 适配器需要具体的经认证交互,才能让该 seam 获得用户投递能力。
|
|
149
149
|
- **不对当前轮次进行 steering**:可继续消息和唤醒式 report 会排入后续轮次,均不会重定向正在进行的轮次。
|
|
150
150
|
- **取消收敛期间存在唤醒缺口**:中断信号发出后、活动 driver 进入 idle 前被接受的唤醒型 follow-up 会保持排队,直到另一条唤醒发送到达。Issue #1838 负责 agent-loop 的唤醒锁存;普通会话取消也受此影响。
|
|
151
151
|
- **驻留仅限进程内**:Activation inbox 与所有权图不会在两个 harness 进程之间协调;对单个持久化存储的并发访问仍然需要持久化邮箱和跨进程租约协议。
|
|
152
|
-
-
|
|
153
|
-
- **没有持久化的上报 mailbox
|
|
152
|
+
- **不回放已接受但未记录的消息**:只有写入子 agent 会话日志的消息才能连同提供该消息的来源一起重建。崩溃可能丢失从未写入日志、已被接受的初始提示词或后续消息;此后一条经授权的消息可以冷恢复该子 agent,但丢失的消息不会自动回放。
|
|
153
|
+
- **没有持久化的上报 mailbox**:上报需要在线直接父级,提供的是接受标识,不保证恰好一次投递,也不提供已读回执。
|
|
154
154
|
- **生命周期事件只供观察**:影响运行的 `subagent/end` 延续或决策接口仍需等待具体消费方。
|
package/lib/index.js
CHANGED
|
@@ -1666,7 +1666,7 @@ const COLD_READ_CONCURRENCY = 4;
|
|
|
1666
1666
|
* projection-cache row when it serves an own-suffix identity (the seq gate),
|
|
1667
1667
|
* else one bounded-concurrency persistence inspection folded through the
|
|
1668
1668
|
* registry.
|
|
1669
|
-
* @see
|
|
1669
|
+
* @see SubagentRuntime.listChildren for the public cancellation and failure contract.
|
|
1670
1670
|
* @param ctx - context carrying the session store, the projection registry,
|
|
1671
1671
|
* optional persistence, and the optional projection cache.
|
|
1672
1672
|
* @param parentSessionId - parent session whose direct children are listed.
|
|
@@ -1685,7 +1685,7 @@ async function listChildren(ctx, parentSessionId, signal) {
|
|
|
1685
1685
|
* continuable child below either is still discovered. Classification uses the
|
|
1686
1686
|
* same projection-backed runtime as {@link listChildren}; no Agent is loaded or
|
|
1687
1687
|
* resumed.
|
|
1688
|
-
* @see
|
|
1688
|
+
* @see SubagentRuntime.listDescendants for the public cancellation and failure contract.
|
|
1689
1689
|
* @param ctx - context carrying the session store, projection registry, and optional persistence/cache.
|
|
1690
1690
|
* @param rootSessionId - session whose complete descendant tree is listed.
|
|
1691
1691
|
* @param signal - caller-owned cancellation observed around every persistence read.
|
|
@@ -2195,7 +2195,7 @@ function subprocessRunHandle(parts) {
|
|
|
2195
2195
|
//#region lib/types/run-settlement.js
|
|
2196
2196
|
/**
|
|
2197
2197
|
* Settlement of one ONE-SHOT subagent run into a background-Task outcome. Only
|
|
2198
|
-
* the one-shot background path uses
|
|
2198
|
+
* the one-shot background path uses Jobs; continuable children have no Task,
|
|
2199
2199
|
* no per-message result, and no Task cancellation.
|
|
2200
2200
|
*
|
|
2201
2201
|
* @module @deepseek-ai/dsh-subagent/run-settlement
|
|
@@ -2208,7 +2208,7 @@ function finalText(blocks) {
|
|
|
2208
2208
|
* Map a child result to the task outcome: completed carries final text,
|
|
2209
2209
|
* aborted is killed, and every other reason is failed without partial output.
|
|
2210
2210
|
* @param result - child terminal result.
|
|
2211
|
-
* @returns outcome for the `ctx.
|
|
2211
|
+
* @returns outcome for the `ctx.jobs` registration.
|
|
2212
2212
|
*/
|
|
2213
2213
|
function runOutcome(result) {
|
|
2214
2214
|
switch (result.stopReason) {
|
|
@@ -2266,10 +2266,10 @@ async function settleRun(run) {
|
|
|
2266
2266
|
* Unlike the bash seam (one executor per context, second load throws), MULTIPLE
|
|
2267
2267
|
* providers coexist here: each registers under a unique name and a caller picks
|
|
2268
2268
|
* one by name. The shape mirrors the LLM adapter registry
|
|
2269
|
-
* (`
|
|
2269
|
+
* (`LlmRuntime.registerAdapter`), not the single-service bash executor.
|
|
2270
2270
|
*
|
|
2271
2271
|
* This package owns the Service Definition role of the capability seam. Service providers
|
|
2272
|
-
* (`@deepseek-ai/dsh-subagent-spawn`, `-fork`, `-acp`) and the model-facing
|
|
2272
|
+
* (`@deepseek-ai/dsh-subagent-spawn-in-process`, `-fork`, `-acp`) and the model-facing
|
|
2273
2273
|
* consumer (`@deepseek-ai/dsh-tool-subagent`) are separate packages.
|
|
2274
2274
|
*
|
|
2275
2275
|
* Public operations express caller intent: `start` returns one published owned
|
|
@@ -2290,7 +2290,7 @@ async function settleRun(run) {
|
|
|
2290
2290
|
* @module @deepseek-ai/dsh-subagent
|
|
2291
2291
|
*/
|
|
2292
2292
|
/** Named provider registry with one-shot runs, durable discovery, and continuable-child operations. */
|
|
2293
|
-
var
|
|
2293
|
+
var SubagentRuntime = class extends Service {
|
|
2294
2294
|
providers = /* @__PURE__ */ new Map();
|
|
2295
2295
|
continuations;
|
|
2296
2296
|
/** Deployment contributions composed into unpublished continuable children. */
|
|
@@ -2569,4 +2569,4 @@ var SubagentService = class extends Service {
|
|
|
2569
2569
|
}
|
|
2570
2570
|
};
|
|
2571
2571
|
//#endregion
|
|
2572
|
-
export { AssistantOutputFold, NO_START_CAPABILITIES, SUBAGENT_DESCRIPTOR_VERSION, SubagentDepthError, SubagentError, SubagentRunId,
|
|
2572
|
+
export { AssistantOutputFold, NO_START_CAPABILITIES, SUBAGENT_DESCRIPTOR_VERSION, SubagentDepthError, SubagentError, SubagentRunId, SubagentRuntime, SubagentRuntime as default, appendDelegatedPolicyOverrides, applyChildComposition, assertPositiveFinite, assertSubagentMaxDepth, assertUsableCwd, captureDelegatedPolicyOverrides, childSessionMeta, delegationDepthOf, finalAssistantOutput, foldSubagentDescriptor, resolveChildAgentOptions, resolveChildCwd, resolveChildDepth, seedDescriptorTurn, settleRun, settleRunResult, snapshotSubagentDescriptor, subprocessRunHandle, validateConfiguredCwd };
|
|
@@ -119,7 +119,7 @@ export interface SubagentFollowupOptions {
|
|
|
119
119
|
/**
|
|
120
120
|
* Hooks the manager needs from the owning service. Declared here, by the
|
|
121
121
|
* dependent, so the manager states exactly what it requires instead of
|
|
122
|
-
* depending back on the whole {@link
|
|
122
|
+
* depending back on the whole {@link SubagentRuntime}. Package-private: no
|
|
123
123
|
* consumer outside this package supplies a host.
|
|
124
124
|
*/
|
|
125
125
|
interface ContinuationHost {
|
package/lib/types/index.d.ts
CHANGED
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
* Unlike the bash seam (one executor per context, second load throws), MULTIPLE
|
|
8
8
|
* providers coexist here: each registers under a unique name and a caller picks
|
|
9
9
|
* one by name. The shape mirrors the LLM adapter registry
|
|
10
|
-
* (`
|
|
10
|
+
* (`LlmRuntime.registerAdapter`), not the single-service bash executor.
|
|
11
11
|
*
|
|
12
12
|
* This package owns the Service Definition role of the capability seam. Service providers
|
|
13
|
-
* (`@deepseek-ai/dsh-subagent-spawn`, `-fork`, `-acp`) and the model-facing
|
|
13
|
+
* (`@deepseek-ai/dsh-subagent-spawn-in-process`, `-fork`, `-acp`) and the model-facing
|
|
14
14
|
* consumer (`@deepseek-ai/dsh-tool-subagent`) are separate packages.
|
|
15
15
|
*
|
|
16
16
|
* Public operations express caller intent: `start` returns one published owned
|
|
@@ -58,7 +58,7 @@ export type { SubagentRunEndInfo, SubagentRunInfo } from './types.ts';
|
|
|
58
58
|
export type { SubagentIdentityProjection, SubagentTimingProjection } from './projection-types.ts';
|
|
59
59
|
declare module '@deepseek-ai/cordis' {
|
|
60
60
|
interface Context {
|
|
61
|
-
subagents:
|
|
61
|
+
subagents: SubagentRuntime;
|
|
62
62
|
}
|
|
63
63
|
interface Events {
|
|
64
64
|
/**
|
|
@@ -83,7 +83,7 @@ declare module '@deepseek-ai/cordis' {
|
|
|
83
83
|
* @dshScopeScan unsupported
|
|
84
84
|
* @mode emit
|
|
85
85
|
*/
|
|
86
|
-
'subagent/start'(this: Scoped<
|
|
86
|
+
'subagent/start'(this: Scoped<SubagentRuntime>, info: SubagentRunInfo): void;
|
|
87
87
|
/**
|
|
88
88
|
* A published child settled. Scope-filtered dispatch uses the same delegating
|
|
89
89
|
* parent carrier as `subagent/start`, so the lifecycle pair reaches the
|
|
@@ -92,11 +92,11 @@ declare module '@deepseek-ai/cordis' {
|
|
|
92
92
|
* @dshScopeScan unsupported
|
|
93
93
|
* @mode emit
|
|
94
94
|
*/
|
|
95
|
-
'subagent/end'(this: Scoped<
|
|
95
|
+
'subagent/end'(this: Scoped<SubagentRuntime>, info: SubagentRunEndInfo): void;
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
/** Named provider registry with one-shot runs, durable discovery, and continuable-child operations. */
|
|
99
|
-
export declare class
|
|
99
|
+
export declare class SubagentRuntime extends Service {
|
|
100
100
|
private providers;
|
|
101
101
|
private continuations;
|
|
102
102
|
/** Deployment contributions composed into unpublished continuable children. */
|
|
@@ -275,5 +275,5 @@ export declare class SubagentService extends Service {
|
|
|
275
275
|
/** Reject the first requested capability that the provider lacks. */
|
|
276
276
|
private assertCapabilities;
|
|
277
277
|
}
|
|
278
|
-
export default
|
|
278
|
+
export default SubagentRuntime;
|
|
279
279
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/types/index.js
CHANGED
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
* Unlike the bash seam (one executor per context, second load throws), MULTIPLE
|
|
8
8
|
* providers coexist here: each registers under a unique name and a caller picks
|
|
9
9
|
* one by name. The shape mirrors the LLM adapter registry
|
|
10
|
-
* (`
|
|
10
|
+
* (`LlmRuntime.registerAdapter`), not the single-service bash executor.
|
|
11
11
|
*
|
|
12
12
|
* This package owns the Service Definition role of the capability seam. Service providers
|
|
13
|
-
* (`@deepseek-ai/dsh-subagent-spawn`, `-fork`, `-acp`) and the model-facing
|
|
13
|
+
* (`@deepseek-ai/dsh-subagent-spawn-in-process`, `-fork`, `-acp`) and the model-facing
|
|
14
14
|
* consumer (`@deepseek-ai/dsh-tool-subagent`) are separate packages.
|
|
15
15
|
*
|
|
16
16
|
* Public operations express caller intent: `start` returns one published owned
|
|
@@ -51,7 +51,7 @@ export { settleRun } from "./run-settlement.js";
|
|
|
51
51
|
export { assertSubagentMaxDepth, delegationDepthOf } from "./depth.js";
|
|
52
52
|
export { appendDelegatedPolicyOverrides, applyChildComposition, captureDelegatedPolicyOverrides, childSessionMeta, resolveChildAgentOptions, resolveChildDepth, SubagentDepthError, } from "./child-agent.js";
|
|
53
53
|
/** Named provider registry with one-shot runs, durable discovery, and continuable-child operations. */
|
|
54
|
-
export class
|
|
54
|
+
export class SubagentRuntime extends Service {
|
|
55
55
|
providers = new Map();
|
|
56
56
|
continuations;
|
|
57
57
|
/** Deployment contributions composed into unpublished continuable children. */
|
|
@@ -335,5 +335,5 @@ export class SubagentService extends Service {
|
|
|
335
335
|
}
|
|
336
336
|
}
|
|
337
337
|
}
|
|
338
|
-
export default
|
|
338
|
+
export default SubagentRuntime;
|
|
339
339
|
//# sourceMappingURL=index.js.map
|
|
@@ -85,7 +85,7 @@ export type SubagentDescendantListEntry = SubagentListEntry & {
|
|
|
85
85
|
* projection-cache row when it serves an own-suffix identity (the seq gate),
|
|
86
86
|
* else one bounded-concurrency persistence inspection folded through the
|
|
87
87
|
* registry.
|
|
88
|
-
* @see
|
|
88
|
+
* @see SubagentRuntime.listChildren for the public cancellation and failure contract.
|
|
89
89
|
* @param ctx - context carrying the session store, the projection registry,
|
|
90
90
|
* optional persistence, and the optional projection cache.
|
|
91
91
|
* @param parentSessionId - parent session whose direct children are listed.
|
|
@@ -101,7 +101,7 @@ export declare function listChildren(ctx: Context, parentSessionId: SessionId, s
|
|
|
101
101
|
* continuable child below either is still discovered. Classification uses the
|
|
102
102
|
* same projection-backed runtime as {@link listChildren}; no Agent is loaded or
|
|
103
103
|
* resumed.
|
|
104
|
-
* @see
|
|
104
|
+
* @see SubagentRuntime.listDescendants for the public cancellation and failure contract.
|
|
105
105
|
* @param ctx - context carrying the session store, projection registry, and optional persistence/cache.
|
|
106
106
|
* @param rootSessionId - session whose complete descendant tree is listed.
|
|
107
107
|
* @param signal - caller-owned cancellation observed around every persistence read.
|
|
@@ -30,7 +30,7 @@ const COLD_READ_CONCURRENCY = 4;
|
|
|
30
30
|
* projection-cache row when it serves an own-suffix identity (the seq gate),
|
|
31
31
|
* else one bounded-concurrency persistence inspection folded through the
|
|
32
32
|
* registry.
|
|
33
|
-
* @see
|
|
33
|
+
* @see SubagentRuntime.listChildren for the public cancellation and failure contract.
|
|
34
34
|
* @param ctx - context carrying the session store, the projection registry,
|
|
35
35
|
* optional persistence, and the optional projection cache.
|
|
36
36
|
* @param parentSessionId - parent session whose direct children are listed.
|
|
@@ -54,7 +54,7 @@ export async function listChildren(ctx, parentSessionId, signal) {
|
|
|
54
54
|
* continuable child below either is still discovered. Classification uses the
|
|
55
55
|
* same projection-backed runtime as {@link listChildren}; no Agent is loaded or
|
|
56
56
|
* resumed.
|
|
57
|
-
* @see
|
|
57
|
+
* @see SubagentRuntime.listDescendants for the public cancellation and failure contract.
|
|
58
58
|
* @param ctx - context carrying the session store, projection registry, and optional persistence/cache.
|
|
59
59
|
* @param rootSessionId - session whose complete descendant tree is listed.
|
|
60
60
|
* @param signal - caller-owned cancellation observed around every persistence read.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Settlement of one ONE-SHOT subagent run into a background-Task outcome. Only
|
|
3
|
-
* the one-shot background path uses
|
|
3
|
+
* the one-shot background path uses Jobs; continuable children have no Task,
|
|
4
4
|
* no per-message result, and no Task cancellation.
|
|
5
5
|
*
|
|
6
6
|
* @module @deepseek-ai/dsh-subagent/run-settlement
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { JobOutcome } from '@deepseek-ai/dsh-jobs';
|
|
9
9
|
import type { SubagentRun } from './types.ts';
|
|
10
10
|
/**
|
|
11
11
|
* Await the child result, dispose the run, then return its task outcome. Result
|
|
@@ -13,5 +13,5 @@ import type { SubagentRun } from './types.ts';
|
|
|
13
13
|
* @param run - live run to settle and release.
|
|
14
14
|
* @returns outcome after child resources are released.
|
|
15
15
|
*/
|
|
16
|
-
export declare function settleRun(run: SubagentRun): Promise<
|
|
16
|
+
export declare function settleRun(run: SubagentRun): Promise<JobOutcome>;
|
|
17
17
|
//# sourceMappingURL=run-settlement.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Settlement of one ONE-SHOT subagent run into a background-Task outcome. Only
|
|
3
|
-
* the one-shot background path uses
|
|
3
|
+
* the one-shot background path uses Jobs; continuable children have no Task,
|
|
4
4
|
* no per-message result, and no Task cancellation.
|
|
5
5
|
*
|
|
6
6
|
* @module @deepseek-ai/dsh-subagent/run-settlement
|
|
@@ -16,7 +16,7 @@ function finalText(blocks) {
|
|
|
16
16
|
* Map a child result to the task outcome: completed carries final text,
|
|
17
17
|
* aborted is killed, and every other reason is failed without partial output.
|
|
18
18
|
* @param result - child terminal result.
|
|
19
|
-
* @returns outcome for the `ctx.
|
|
19
|
+
* @returns outcome for the `ctx.jobs` registration.
|
|
20
20
|
*/
|
|
21
21
|
function runOutcome(result) {
|
|
22
22
|
switch (result.stopReason) {
|
package/lib/types/types.d.ts
CHANGED
|
@@ -139,7 +139,7 @@ export interface SubagentStartRequest {
|
|
|
139
139
|
readonly persona?: string;
|
|
140
140
|
}
|
|
141
141
|
/**
|
|
142
|
-
* Provider-facing one-shot request after {@link
|
|
142
|
+
* Provider-facing one-shot request after {@link SubagentRuntime.start} resolves
|
|
143
143
|
* the durable child descriptor.
|
|
144
144
|
*/
|
|
145
145
|
export interface ResolvedSubagentStartRequest extends SubagentStartRequest {
|
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.0.1-rc.
|
|
4
|
+
"version": "0.0.1-rc.3",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "restricted"
|
|
7
7
|
},
|
|
@@ -40,21 +40,21 @@
|
|
|
40
40
|
"zod": "^4.4.3"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
|
-
"@deepseek-ai/dsh-agent
|
|
44
|
-
"@deepseek-ai/dsh-
|
|
45
|
-
"@deepseek-ai/dsh-
|
|
46
|
-
"@deepseek-ai/dsh-invariants": "^0.0.1-rc.
|
|
47
|
-
"@deepseek-ai/dsh-
|
|
48
|
-
"@deepseek-ai/dsh-
|
|
49
|
-
"@deepseek-ai/dsh-sandbox-policy": "^0.0.1-rc.
|
|
50
|
-
"@deepseek-ai/dsh-scope": "^0.0.1-rc.
|
|
51
|
-
"@deepseek-ai/dsh-session": "^0.0.1-rc.
|
|
52
|
-
"@deepseek-ai/dsh-session-persistence": "^0.0.1-rc.
|
|
53
|
-
"@deepseek-ai/dsh-session-projection": "^0.0.1-rc.
|
|
54
|
-
"@deepseek-ai/dsh-
|
|
55
|
-
"@deepseek-ai/dsh-
|
|
56
|
-
"@deepseek-ai/dsh-
|
|
57
|
-
"@deepseek-ai/dsh-user-approval": "^0.0.1-rc.
|
|
43
|
+
"@deepseek-ai/dsh-agent": "^0.0.1-rc.3",
|
|
44
|
+
"@deepseek-ai/dsh-agent-presets": "^0.0.1-rc.3",
|
|
45
|
+
"@deepseek-ai/dsh-brand": "^0.0.1-rc.3",
|
|
46
|
+
"@deepseek-ai/dsh-invariants": "^0.0.1-rc.3",
|
|
47
|
+
"@deepseek-ai/dsh-sandbox": "^0.0.1-rc.3",
|
|
48
|
+
"@deepseek-ai/dsh-llm": "^0.0.1-rc.3",
|
|
49
|
+
"@deepseek-ai/dsh-sandbox-policy": "^0.0.1-rc.3",
|
|
50
|
+
"@deepseek-ai/dsh-scope": "^0.0.1-rc.3",
|
|
51
|
+
"@deepseek-ai/dsh-session": "^0.0.1-rc.3",
|
|
52
|
+
"@deepseek-ai/dsh-session-persistence": "^0.0.1-rc.3",
|
|
53
|
+
"@deepseek-ai/dsh-session-projection-cache": "^0.0.1-rc.3",
|
|
54
|
+
"@deepseek-ai/dsh-jobs": "^0.0.1-rc.3",
|
|
55
|
+
"@deepseek-ai/dsh-tools": "^0.0.1-rc.3",
|
|
56
|
+
"@deepseek-ai/dsh-session-projection": "^0.0.1-rc.3",
|
|
57
|
+
"@deepseek-ai/dsh-user-approval": "^0.0.1-rc.3",
|
|
58
58
|
"@deepseek-ai/cordis": "^4.0.1-rc.1"
|
|
59
59
|
},
|
|
60
60
|
"peerDependenciesMeta": {
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"@deepseek-ai/dsh-session-projection-cache": {
|
|
77
77
|
"optional": true
|
|
78
78
|
},
|
|
79
|
-
"@deepseek-ai/dsh-
|
|
79
|
+
"@deepseek-ai/dsh-jobs": {
|
|
80
80
|
"optional": true
|
|
81
81
|
},
|
|
82
82
|
"@deepseek-ai/dsh-user-approval": {
|
|
@@ -84,23 +84,23 @@
|
|
|
84
84
|
}
|
|
85
85
|
},
|
|
86
86
|
"devDependencies": {
|
|
87
|
-
"@deepseek-ai/dsh-agent": "^0.0.1-rc.
|
|
88
|
-
"@deepseek-ai/dsh-
|
|
89
|
-
"@deepseek-ai/dsh-
|
|
90
|
-
"@deepseek-ai/dsh-invariants": "^0.0.1-rc.
|
|
91
|
-
"@deepseek-ai/dsh-llm": "^0.0.1-rc.
|
|
92
|
-
"@deepseek-ai/dsh-sandbox": "^0.0.1-rc.
|
|
93
|
-
"@deepseek-ai/dsh-sandbox-policy": "^0.0.1-rc.
|
|
94
|
-
"@deepseek-ai/dsh-scope": "^0.0.1-rc.
|
|
95
|
-
"@deepseek-ai/dsh-session": "^0.0.1-rc.
|
|
96
|
-
"@deepseek-ai/dsh-session-persistence": "^0.0.1-rc.
|
|
97
|
-
"@deepseek-ai/dsh-session-projection": "^0.0.1-rc.
|
|
98
|
-
"@deepseek-ai/dsh-
|
|
99
|
-
"@deepseek-ai/dsh-storage
|
|
100
|
-
"@deepseek-ai/dsh-
|
|
101
|
-
"@deepseek-ai/dsh-
|
|
102
|
-
"@deepseek-ai/dsh-
|
|
103
|
-
"@deepseek-ai/
|
|
104
|
-
"@deepseek-ai/
|
|
87
|
+
"@deepseek-ai/dsh-agent-presets": "^0.0.1-rc.3",
|
|
88
|
+
"@deepseek-ai/dsh-agent": "^0.0.1-rc.3",
|
|
89
|
+
"@deepseek-ai/dsh-brand": "^0.0.1-rc.3",
|
|
90
|
+
"@deepseek-ai/dsh-invariants": "^0.0.1-rc.3",
|
|
91
|
+
"@deepseek-ai/dsh-llm": "^0.0.1-rc.3",
|
|
92
|
+
"@deepseek-ai/dsh-sandbox": "^0.0.1-rc.3",
|
|
93
|
+
"@deepseek-ai/dsh-sandbox-policy": "^0.0.1-rc.3",
|
|
94
|
+
"@deepseek-ai/dsh-scope": "^0.0.1-rc.3",
|
|
95
|
+
"@deepseek-ai/dsh-session": "^0.0.1-rc.3",
|
|
96
|
+
"@deepseek-ai/dsh-session-persistence": "^0.0.1-rc.3",
|
|
97
|
+
"@deepseek-ai/dsh-session-projection-cache": "^0.0.1-rc.3",
|
|
98
|
+
"@deepseek-ai/dsh-session-projection": "^0.0.1-rc.3",
|
|
99
|
+
"@deepseek-ai/dsh-storage": "^0.0.1-rc.3",
|
|
100
|
+
"@deepseek-ai/dsh-jobs": "^0.0.1-rc.3",
|
|
101
|
+
"@deepseek-ai/dsh-storage-domain": "^0.0.1-rc.3",
|
|
102
|
+
"@deepseek-ai/dsh-user-approval": "^0.0.1-rc.3",
|
|
103
|
+
"@deepseek-ai/dsh-tools": "^0.0.1-rc.3",
|
|
104
|
+
"@deepseek-ai/cordis": "^4.0.1-rc.1"
|
|
105
105
|
}
|
|
106
106
|
}
|