mirror of
https://github.com/deepseek-ai/deepseek-harness.git
synced 2026-08-29 04:26:38 +00:00
fix(team): preserve current Client architecture after rebase
This commit is contained in:
+2
-2
@@ -2,5 +2,5 @@
|
|||||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||||
# after editing either side, bring the other along and re-record with:
|
# after editing either side, bring the other along and re-record with:
|
||||||
# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.md
|
# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.md
|
||||||
2026-08-18-experimental-agent-teams-packages.md: 495922d57bd88a78f0ca6b61367ef49c820db632
|
2026-08-18-experimental-agent-teams-packages.md: b769791d52472290f76eec7e518f24001db919ad
|
||||||
2026-08-18-experimental-agent-teams-packages.zh.md: 65aed57e223d8fa9b8ff97e2fcc109057b51474d
|
2026-08-18-experimental-agent-teams-packages.zh.md: 25227770b5029b1baedef6bd9b7ad78b79586365
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||||
# after editing either side, bring the other along and re-record with:
|
# after editing either side, bring the other along and re-record with:
|
||||||
# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-06-agent-teams-web.md
|
# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-06-agent-teams-web.md
|
||||||
2026-08-06-agent-teams-web.md: fca3ee6a79f292b21c44a168e499e1be2179d7e9
|
2026-08-06-agent-teams-web.md: 5002146f7db67f7199102b286a85da0148864fa9
|
||||||
2026-08-06-agent-teams-web.zh.md: 5f3e0333aed08be831e6cfd653dc476f6ca6a374
|
2026-08-06-agent-teams-web.zh.md: d05f22141811f35ba52a92a02c8153b024ef8d8d
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ English | [中文](2026-08-06-agent-teams-web.zh.md)
|
|||||||
|
|
||||||
## Problem
|
## Problem
|
||||||
|
|
||||||
The durable Agent Teams runtime owns roster, mailbox, and task state but exposes only model tools and Host service methods. Web users need to inspect teammate activity, manage shared tasks with the same compare-and-set rules, and open a teammate conversation. Agent Teams is still experimental, so these capabilities must not add Team-specific contracts or dependencies to the stable API Proxy, Client runtime, Subagent UI, or Web bundle.
|
The durable Agent Teams runtime owns roster, mailbox, and task state but exposes only model tools and Host service methods. Web users need to inspect teammate activity, manage shared tasks with the same compare-and-set rules, and open a teammate conversation. Agent Teams is still experimental, so these capabilities must not add Team-specific contracts or dependencies to the stable API Proxy, Session Controller, Client UI packages, or Web bundle.
|
||||||
|
|
||||||
## Decision
|
## Decision
|
||||||
|
|
||||||
@@ -40,4 +40,4 @@ Team-service unit tests, generation, and a plain-Node built-artifact smoke verif
|
|||||||
|
|
||||||
## Consequences
|
## Consequences
|
||||||
|
|
||||||
The Team service is the single Cordis owner for both domain state and the Remote operations that expose selected Team values. The stable API Proxy, Client runtime, Subagent UI, and Web bundle remain Team-agnostic. Source-checkout users must add two ordered experimental profile layers to a Web profile. Promotion renames the experimental npm packages but does not require a new generated namespace.
|
The Team service is the single Cordis owner for both domain state and the Remote operations that expose selected Team values. The stable API Proxy, Session Controller, Client UI packages, and Web bundle remain Team-agnostic. Source-checkout users must add two ordered experimental profile layers to a Web profile. Promotion renames the experimental npm packages but does not require a new generated namespace.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
## 问题
|
## 问题
|
||||||
|
|
||||||
持久 Agent Teams runtime 负责 roster、mailbox 与 task 状态,但只提供模型工具和 Host service method。Web 用户需要查看 teammate 活动、按同样的 compare-and-set 规则管理共享任务,并打开 teammate 会话。Agent Teams 仍处于实验阶段,因此这些能力不能向稳定 API Proxy、Client runtime、Subagent UI 或 Web bundle 增加 Team 专用 contract 或依赖。
|
持久 Agent Teams runtime 负责 roster、mailbox 与 task 状态,但只提供模型工具和 Host service method。Web 用户需要查看 teammate 活动、按同样的 compare-and-set 规则管理共享任务,并打开 teammate 会话。Agent Teams 仍处于实验阶段,因此这些能力不能向稳定 API Proxy、Session Controller、Client UI package 或 Web bundle 增加 Team 专用 contract 或依赖。
|
||||||
|
|
||||||
## 决策
|
## 决策
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ Teammate navigation 使用既有 `{ parentSessionId, childSessionId, mode: 'cont
|
|||||||
|
|
||||||
`@deepseek-ai/dsh-experimental-agent-team-web-profile` 在稳定 Web bundle 之后只插入 UI。它与 Host 侧 `@deepseek-ai/dsh-experimental-agent-team-profile` 一起应用,后者已经插入 `ctx.agentTeams` 与模型工具。两个稳定 bundle 都不包含禁用的 Team row 或依赖。
|
`@deepseek-ai/dsh-experimental-agent-team-web-profile` 在稳定 Web bundle 之后只插入 UI。它与 Host 侧 `@deepseek-ai/dsh-experimental-agent-team-profile` 一起应用,后者已经插入 `ctx.agentTeams` 与模型工具。两个稳定 bundle 都不包含禁用的 Team row 或依赖。
|
||||||
|
|
||||||
稳定 Web preset 仍会在自身 preset scope 内注册 continuable Subagent control。顶层 Agent Teams profile override 无法替换这些 registration,因此该实验性 composition 可能同时暴露 Team roster 与 legacy child control。Team-aware Web preset 暂缓实现;[Web profile README](../../../../packages/experimental/agent-team-web-profile/README.zh.md#已知限制与暂缓事项)负责记录当前限制。
|
稳定 Web preset 仍会在自身 preset scope 内注册 continuable Subagent control。顶层 Agent Teams profile override 无法替换这些 registration,因此该实验性 composition 可能同时暴露 Team roster 与 legacy child control。Team-aware Web preset 暂缓实现;[Web profile README](../../../../packages/experimental/agent-team-web-profile/README.zh.md#known-limitations-and-deferred-work)负责记录当前限制。
|
||||||
|
|
||||||
## 边界
|
## 边界
|
||||||
|
|
||||||
@@ -40,4 +40,4 @@ Team service 单元测试、生成流程与 plain-Node built-artifact smoke 校
|
|||||||
|
|
||||||
## 后果
|
## 后果
|
||||||
|
|
||||||
Team service 是 domain state 与公开选定 Team value 的 Remote operation 的唯一 Cordis owner。稳定 API Proxy、Client runtime、Subagent UI 和 Web bundle 保持 Team 无关。源码 checkout 用户必须向 Web profile 添加两个有序 experimental profile 层。Promotion 会重命名实验性 npm package,但不要求新的生成式 namespace。
|
Team service 是 domain state 与公开选定 Team value 的 Remote operation 的唯一 Cordis owner。稳定 API Proxy、Session Controller、Client UI package 和 Web bundle 保持 Team 无关。源码 checkout 用户必须向 Web profile 添加两个有序 experimental profile 层。Promotion 会重命名实验性 npm package,但不要求新的生成式 namespace。
|
||||||
|
|||||||
@@ -22,8 +22,8 @@
|
|||||||
backgroundMode: one-shot
|
backgroundMode: one-shot
|
||||||
|
|
||||||
- insert:
|
- insert:
|
||||||
- id: team
|
- id: agent-team
|
||||||
name: '@deepseek-ai/dsh-team'
|
name: '@deepseek-ai/dsh-experimental-agent-team'
|
||||||
config:
|
config:
|
||||||
maxMembers: 8
|
maxMembers: 8
|
||||||
maxTasks: 256
|
maxTasks: 256
|
||||||
@@ -31,12 +31,12 @@
|
|||||||
maxMessageBytes: 65536
|
maxMessageBytes: 65536
|
||||||
disposalTimeoutMs: 5000
|
disposalTimeoutMs: 5000
|
||||||
|
|
||||||
- id: tool-team
|
- id: tool-agent-team
|
||||||
name: '@deepseek-ai/dsh-tool-team'
|
name: '@deepseek-ai/dsh-experimental-tool-agent-team'
|
||||||
config:
|
config:
|
||||||
freshProvider: spawn
|
freshProvider: spawn
|
||||||
forkProvider: fork
|
forkProvider: fork
|
||||||
|
|
||||||
- insert:
|
- insert:
|
||||||
- id: ui-agent-team
|
- id: ui-agent-team
|
||||||
name: '@deepseek-ai/dsh-client-ui-agent-team'
|
name: '@deepseek-ai/dsh-experimental-client-ui-agent-team'
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
- button "Close":
|
- button "Close":
|
||||||
- img
|
- img
|
||||||
- heading "Members" [level=3]
|
- heading "Members" [level=3]
|
||||||
- 'button "lead idle · Model: deepseek-v4-flash" [disabled]'
|
- 'button "lead Idle · Model: deepseek-v4-flash" [disabled]'
|
||||||
- heading "Shared tasks" [level=3]
|
- heading "Shared tasks" [level=3]
|
||||||
- button "New task":
|
- button "New task":
|
||||||
- img
|
- img
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||||
# after editing either side, bring the other along and re-record with:
|
# after editing either side, bring the other along and re-record with:
|
||||||
# pnpm run verify-translation-pairing --write docs/capability-seams.md
|
# pnpm run verify-translation-pairing --write docs/capability-seams.md
|
||||||
capability-seams.md: d86a05e240cd64a0c8a172b00fe9e1df809fe408
|
capability-seams.md: 2ee2d1b989c4eb25b245cfd528b2fa1ba3bb0272
|
||||||
capability-seams.zh.md: 1050191d696fd5a46aa28101beef118b07c29ed2
|
capability-seams.zh.md: 7ecda568ef4df4d360414ee872d2b0241ebe1dce
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ flowchart LR
|
|||||||
pkg_experimental_agent_team["experimental-agent-team"]
|
pkg_experimental_agent_team["experimental-agent-team"]
|
||||||
svc_agentTeams["ctx.agentTeams<br/>Agent Teams coordination domain"]
|
svc_agentTeams["ctx.agentTeams<br/>Agent Teams coordination domain"]
|
||||||
pkg_experimental_tool_agent_team["experimental-tool-agent-team"]
|
pkg_experimental_tool_agent_team["experimental-tool-agent-team"]
|
||||||
|
pkg_experimental_client_ui_agent_team["experimental-client-ui-agent-team"]
|
||||||
pkg_jobs["jobs"]
|
pkg_jobs["jobs"]
|
||||||
svc_jobs["ctx.jobs<br/>Background job registry"]
|
svc_jobs["ctx.jobs<br/>Background job registry"]
|
||||||
pkg_jobs_local["jobs-local"]
|
pkg_jobs_local["jobs-local"]
|
||||||
@@ -324,6 +325,7 @@ flowchart LR
|
|||||||
svc_agentDefaultModel --> pkg_headless
|
svc_agentDefaultModel --> pkg_headless
|
||||||
svc_agentDefaultModel --> pkg_host_apiproxy
|
svc_agentDefaultModel --> pkg_host_apiproxy
|
||||||
svc_agentLoop --> pkg_agent_spine_demo
|
svc_agentLoop --> pkg_agent_spine_demo
|
||||||
|
svc_agentTeams --> pkg_experimental_client_ui_agent_team
|
||||||
svc_agentTeams --> pkg_experimental_tool_agent_team
|
svc_agentTeams --> pkg_experimental_tool_agent_team
|
||||||
svc_agents --> pkg_acp
|
svc_agents --> pkg_acp
|
||||||
svc_agents --> pkg_agent_loop
|
svc_agents --> pkg_agent_loop
|
||||||
@@ -500,7 +502,7 @@ flowchart LR
|
|||||||
| `ctx.fs` | `seam` | [`fs`](../packages/fs/fs) | [`fs-local`](../packages/fs/fs-local), [`fs-sandbox`](../packages/fs/fs-sandbox), [`fs-e2b`](../packages/e2b/fs-e2b) | [`tool-fs`](../packages/fs/tool-fs) | [`fs-observation-policy`](../packages/fs/fs-observation-policy) | tool-fs executes read/write/edit through ctx.fs; fs-sandbox fences mutations by the shared sandbox mode; fs-observation-policy contributes observed-state checks through the fs/* event gate. |
|
| `ctx.fs` | `seam` | [`fs`](../packages/fs/fs) | [`fs-local`](../packages/fs/fs-local), [`fs-sandbox`](../packages/fs/fs-sandbox), [`fs-e2b`](../packages/e2b/fs-e2b) | [`tool-fs`](../packages/fs/tool-fs) | [`fs-observation-policy`](../packages/fs/fs-observation-policy) | tool-fs executes read/write/edit through ctx.fs; fs-sandbox fences mutations by the shared sandbox mode; fs-observation-policy contributes observed-state checks through the fs/* event gate. |
|
||||||
| `ctx.compaction` | `seam` | [`compaction`](../packages/compaction/compaction) | [`compaction-basic`](../packages/compaction/compaction-basic) | [`compaction-basic`](../packages/compaction/compaction-basic) | - | The basic backend consumes post-step pressure and request-error recovery events; there is no model-facing compact tool. |
|
| `ctx.compaction` | `seam` | [`compaction`](../packages/compaction/compaction) | [`compaction-basic`](../packages/compaction/compaction-basic) | [`compaction-basic`](../packages/compaction/compaction-basic) | - | The basic backend consumes post-step pressure and request-error recovery events; there is no model-facing compact tool. |
|
||||||
| `ctx.subagents` | `seam` | [`subagent`](../packages/subagent/subagent) | [`subagent-spawn-in-process`](../packages/subagent/subagent-spawn-in-process), [`subagent-fork-in-process`](../packages/subagent/subagent-fork-in-process), [`subagent-acp`](../packages/subagent/subagent-acp), [`subagent-codex`](../packages/subagent/subagent-codex), [`subagent-claude-code`](../packages/subagent/subagent-claude-code), [`subagent-dsh-sdk`](../packages/subagent/subagent-dsh-sdk) | [`tool-subagent`](../packages/subagent/tool-subagent), [`tool-subagent-control`](../packages/subagent/tool-subagent-control), [`tool-ralph`](../packages/workflow/tool-ralph) | - | Providers implement transports; the service also owns optional Activation-based continuation orchestration, tool-subagent selects one-shot or continuable delegation, tool-subagent-control delivers follow-ups, and tool-ralph requires one fresh structured-output route. |
|
| `ctx.subagents` | `seam` | [`subagent`](../packages/subagent/subagent) | [`subagent-spawn-in-process`](../packages/subagent/subagent-spawn-in-process), [`subagent-fork-in-process`](../packages/subagent/subagent-fork-in-process), [`subagent-acp`](../packages/subagent/subagent-acp), [`subagent-codex`](../packages/subagent/subagent-codex), [`subagent-claude-code`](../packages/subagent/subagent-claude-code), [`subagent-dsh-sdk`](../packages/subagent/subagent-dsh-sdk) | [`tool-subagent`](../packages/subagent/tool-subagent), [`tool-subagent-control`](../packages/subagent/tool-subagent-control), [`tool-ralph`](../packages/workflow/tool-ralph) | - | Providers implement transports; the service also owns optional Activation-based continuation orchestration, tool-subagent selects one-shot or continuable delegation, tool-subagent-control delivers follow-ups, and tool-ralph requires one fresh structured-output route. |
|
||||||
| `ctx.agentTeams` | `core` | [`experimental-agent-team`](../packages/experimental/agent-team) | - | [`experimental-tool-agent-team`](../packages/experimental/tool-agent-team) | - | Owns the implicit-root roster, durable peer mailbox, shared task DAG, and continuable-child lifecycle; tool-agent-team contributes the scoped model policy and controls. |
|
| `ctx.agentTeams` | `core` | [`experimental-agent-team`](../packages/experimental/agent-team) | - | [`experimental-tool-agent-team`](../packages/experimental/tool-agent-team), [`experimental-client-ui-agent-team`](../packages/experimental/client-ui-agent-team) | - | Owns the implicit-root roster, durable peer mailbox, shared task DAG, continuable-child lifecycle, and generated Team Remote methods; tool-agent-team contributes model controls and client-ui-agent-team mounts the browser contribution. |
|
||||||
| `ctx.jobs` | `seam` | [`jobs`](../packages/jobs/jobs) | [`jobs-local`](../packages/jobs/jobs-local) | [`tool-bash`](../packages/shell/tool-bash), [`tool-terminal`](../packages/terminal/tool-terminal), [`tool-subagent`](../packages/subagent/tool-subagent), [`tool-jobs`](../packages/jobs/tool-jobs) | - | Producers (background bash, PTY sends, and subagent delegations) register running work; tool-jobs is the model-facing controller that reads, lists, and kills it; jobs-local is the process-local registry. |
|
| `ctx.jobs` | `seam` | [`jobs`](../packages/jobs/jobs) | [`jobs-local`](../packages/jobs/jobs-local) | [`tool-bash`](../packages/shell/tool-bash), [`tool-terminal`](../packages/terminal/tool-terminal), [`tool-subagent`](../packages/subagent/tool-subagent), [`tool-jobs`](../packages/jobs/tool-jobs) | - | Producers (background bash, PTY sends, and subagent delegations) register running work; tool-jobs is the model-facing controller that reads, lists, and kills it; jobs-local is the process-local registry. |
|
||||||
| `ctx.web` | `seam` | [`web`](../packages/web/web) | [`web-search-exa`](../packages/web/web-search-exa), [`web-search-perplexity`](../packages/web/web-search-perplexity), [`web-search-deepseek`](../packages/web/web-search-deepseek), [`web-fetch-http`](../packages/web/web-fetch-http) | [`tool-web`](../packages/web/tool-web) | - | Search and fetch providers register into one ctx.web seam; tool-web owns the stable model-facing names. |
|
| `ctx.web` | `seam` | [`web`](../packages/web/web) | [`web-search-exa`](../packages/web/web-search-exa), [`web-search-perplexity`](../packages/web/web-search-perplexity), [`web-search-deepseek`](../packages/web/web-search-deepseek), [`web-fetch-http`](../packages/web/web-fetch-http) | [`tool-web`](../packages/web/tool-web) | - | Search and fetch providers register into one ctx.web seam; tool-web owns the stable model-facing names. |
|
||||||
| `ctx.spillStore` | `seam` | [`spill`](../packages/spill/spill) | [`spill-local`](../packages/spill/spill-local) | [`spill-policy`](../packages/spill/spill-policy) | - | The backend saves oversized tool text and returns a model-facing locator plus retrieval hint; spill-policy is the tools/post-execute consumer that decides when to spill. |
|
| `ctx.spillStore` | `seam` | [`spill`](../packages/spill/spill) | [`spill-local`](../packages/spill/spill-local) | [`spill-policy`](../packages/spill/spill-policy) | - | The backend saves oversized tool text and returns a model-facing locator plus retrieval hint; spill-policy is the tools/post-execute consumer that decides when to spill. |
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ flowchart LR
|
|||||||
pkg_experimental_agent_team["experimental-agent-team"]
|
pkg_experimental_agent_team["experimental-agent-team"]
|
||||||
svc_agentTeams["ctx.agentTeams<br/>Agent Teams coordination domain"]
|
svc_agentTeams["ctx.agentTeams<br/>Agent Teams coordination domain"]
|
||||||
pkg_experimental_tool_agent_team["experimental-tool-agent-team"]
|
pkg_experimental_tool_agent_team["experimental-tool-agent-team"]
|
||||||
|
pkg_experimental_client_ui_agent_team["experimental-client-ui-agent-team"]
|
||||||
pkg_jobs["jobs"]
|
pkg_jobs["jobs"]
|
||||||
svc_jobs["ctx.jobs<br/>Background job registry"]
|
svc_jobs["ctx.jobs<br/>Background job registry"]
|
||||||
pkg_jobs_local["jobs-local"]
|
pkg_jobs_local["jobs-local"]
|
||||||
@@ -326,6 +327,7 @@ flowchart LR
|
|||||||
svc_agentDefaultModel --> pkg_headless
|
svc_agentDefaultModel --> pkg_headless
|
||||||
svc_agentDefaultModel --> pkg_host_apiproxy
|
svc_agentDefaultModel --> pkg_host_apiproxy
|
||||||
svc_agentLoop --> pkg_agent_spine_demo
|
svc_agentLoop --> pkg_agent_spine_demo
|
||||||
|
svc_agentTeams --> pkg_experimental_client_ui_agent_team
|
||||||
svc_agentTeams --> pkg_experimental_tool_agent_team
|
svc_agentTeams --> pkg_experimental_tool_agent_team
|
||||||
svc_agents --> pkg_acp
|
svc_agents --> pkg_acp
|
||||||
svc_agents --> pkg_agent_loop
|
svc_agents --> pkg_agent_loop
|
||||||
@@ -502,7 +504,7 @@ flowchart LR
|
|||||||
| `ctx.fs` | `seam` | [`fs`](../packages/fs/fs) | [`fs-local`](../packages/fs/fs-local), [`fs-sandbox`](../packages/fs/fs-sandbox), [`fs-e2b`](../packages/e2b/fs-e2b) | [`tool-fs`](../packages/fs/tool-fs) | [`fs-observation-policy`](../packages/fs/fs-observation-policy) | tool-fs 通过 ctx.fs 执行读取/写入/编辑;fs-sandbox 按共享沙箱模式限制变更;fs-observation-policy 通过 fs/* 事件门禁贡献基于观测状态的检查。 |
|
| `ctx.fs` | `seam` | [`fs`](../packages/fs/fs) | [`fs-local`](../packages/fs/fs-local), [`fs-sandbox`](../packages/fs/fs-sandbox), [`fs-e2b`](../packages/e2b/fs-e2b) | [`tool-fs`](../packages/fs/tool-fs) | [`fs-observation-policy`](../packages/fs/fs-observation-policy) | tool-fs 通过 ctx.fs 执行读取/写入/编辑;fs-sandbox 按共享沙箱模式限制变更;fs-observation-policy 通过 fs/* 事件门禁贡献基于观测状态的检查。 |
|
||||||
| `ctx.compaction` | `seam` | [`compaction`](../packages/compaction/compaction) | [`compaction-basic`](../packages/compaction/compaction-basic) | [`compaction-basic`](../packages/compaction/compaction-basic) | - | 基础后端消费步骤后的压力事件和请求错误恢复事件;不存在面向模型的压缩工具。 |
|
| `ctx.compaction` | `seam` | [`compaction`](../packages/compaction/compaction) | [`compaction-basic`](../packages/compaction/compaction-basic) | [`compaction-basic`](../packages/compaction/compaction-basic) | - | 基础后端消费步骤后的压力事件和请求错误恢复事件;不存在面向模型的压缩工具。 |
|
||||||
| `ctx.subagents` | `seam` | [`subagent`](../packages/subagent/subagent) | [`subagent-spawn-in-process`](../packages/subagent/subagent-spawn-in-process), [`subagent-fork-in-process`](../packages/subagent/subagent-fork-in-process), [`subagent-acp`](../packages/subagent/subagent-acp), [`subagent-codex`](../packages/subagent/subagent-codex), [`subagent-claude-code`](../packages/subagent/subagent-claude-code), [`subagent-dsh-sdk`](../packages/subagent/subagent-dsh-sdk) | [`tool-subagent`](../packages/subagent/tool-subagent), [`tool-subagent-control`](../packages/subagent/tool-subagent-control), [`tool-ralph`](../packages/workflow/tool-ralph) | - | 提供方实现传输;该服务还负责可选的、基于 Activation 的延续编排,tool-subagent 选择一次性或可延续委派,tool-subagent-control 传递后续消息,而 tool-ralph 要求一条全新的结构化输出路由。 |
|
| `ctx.subagents` | `seam` | [`subagent`](../packages/subagent/subagent) | [`subagent-spawn-in-process`](../packages/subagent/subagent-spawn-in-process), [`subagent-fork-in-process`](../packages/subagent/subagent-fork-in-process), [`subagent-acp`](../packages/subagent/subagent-acp), [`subagent-codex`](../packages/subagent/subagent-codex), [`subagent-claude-code`](../packages/subagent/subagent-claude-code), [`subagent-dsh-sdk`](../packages/subagent/subagent-dsh-sdk) | [`tool-subagent`](../packages/subagent/tool-subagent), [`tool-subagent-control`](../packages/subagent/tool-subagent-control), [`tool-ralph`](../packages/workflow/tool-ralph) | - | 提供方实现传输;该服务还负责可选的、基于 Activation 的延续编排,tool-subagent 选择一次性或可延续委派,tool-subagent-control 传递后续消息,而 tool-ralph 要求一条全新的结构化输出路由。 |
|
||||||
| `ctx.agentTeams` | `core` | [`experimental-agent-team`](../packages/experimental/agent-team) | - | [`experimental-tool-agent-team`](../packages/experimental/tool-agent-team) | - | 负责隐式 Root roster、持久 peer mailbox、共享任务 DAG 与 continuable child 生命周期;tool-agent-team 提供作用域化模型策略和控制工具。 |
|
| `ctx.agentTeams` | `core` | [`experimental-agent-team`](../packages/experimental/agent-team) | - | [`experimental-tool-agent-team`](../packages/experimental/tool-agent-team), [`experimental-client-ui-agent-team`](../packages/experimental/client-ui-agent-team) | - | 负责隐式 Root roster、持久 peer mailbox、共享任务 DAG、continuable child 生命周期与生成式 Team Remote method;tool-agent-team 提供模型控制工具,client-ui-agent-team 挂载浏览器 contribution。 |
|
||||||
| `ctx.jobs` | `seam` | [`jobs`](../packages/jobs/jobs) | [`jobs-local`](../packages/jobs/jobs-local) | [`tool-bash`](../packages/shell/tool-bash), [`tool-terminal`](../packages/terminal/tool-terminal), [`tool-subagent`](../packages/subagent/tool-subagent), [`tool-jobs`](../packages/jobs/tool-jobs) | - | 生产方(后台 bash、PTY 发送和 subagent 委派)登记正在运行的工作;tool-jobs 是面向模型的控制器,用于读取、列出和终止这些工作;jobs-local 是进程本地注册表。 |
|
| `ctx.jobs` | `seam` | [`jobs`](../packages/jobs/jobs) | [`jobs-local`](../packages/jobs/jobs-local) | [`tool-bash`](../packages/shell/tool-bash), [`tool-terminal`](../packages/terminal/tool-terminal), [`tool-subagent`](../packages/subagent/tool-subagent), [`tool-jobs`](../packages/jobs/tool-jobs) | - | 生产方(后台 bash、PTY 发送和 subagent 委派)登记正在运行的工作;tool-jobs 是面向模型的控制器,用于读取、列出和终止这些工作;jobs-local 是进程本地注册表。 |
|
||||||
| `ctx.web` | `seam` | [`web`](../packages/web/web) | [`web-search-exa`](../packages/web/web-search-exa), [`web-search-perplexity`](../packages/web/web-search-perplexity), [`web-search-deepseek`](../packages/web/web-search-deepseek), [`web-fetch-http`](../packages/web/web-fetch-http) | [`tool-web`](../packages/web/tool-web) | - | 搜索和抓取提供方注册到同一个 ctx.web seam;tool-web 负责稳定的面向模型名称。 |
|
| `ctx.web` | `seam` | [`web`](../packages/web/web) | [`web-search-exa`](../packages/web/web-search-exa), [`web-search-perplexity`](../packages/web/web-search-perplexity), [`web-search-deepseek`](../packages/web/web-search-deepseek), [`web-fetch-http`](../packages/web/web-fetch-http) | [`tool-web`](../packages/web/tool-web) | - | 搜索和抓取提供方注册到同一个 ctx.web seam;tool-web 负责稳定的面向模型名称。 |
|
||||||
| `ctx.spillStore` | `seam` | [`spill`](../packages/spill/spill) | [`spill-local`](../packages/spill/spill-local) | [`spill-policy`](../packages/spill/spill-policy) | - | 后端保存过大的工具文本,并返回面向模型的定位信息和取回提示;spill-policy 是 tools/post-execute 消费方,负责决定何时 spill。 |
|
| `ctx.spillStore` | `seam` | [`spill`](../packages/spill/spill) | [`spill-local`](../packages/spill/spill-local) | [`spill-policy`](../packages/spill/spill-policy) | - | 后端保存过大的工具文本,并返回面向模型的定位信息和取回提示;spill-policy 是 tools/post-execute 消费方,负责决定何时 spill。 |
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||||
# after editing either side, bring the other along and re-record with:
|
# after editing either side, bring the other along and re-record with:
|
||||||
# pnpm run verify-translation-pairing --write docs/config-catalog.md
|
# pnpm run verify-translation-pairing --write docs/config-catalog.md
|
||||||
config-catalog.md: e4d60a02367bb35965564ee88dcb4065c97a5cf4
|
config-catalog.md: aaadee78a5de4a42fc28566215b9fff70a5caca4
|
||||||
config-catalog.zh.md: 9dc302705780297a4dd177174613ad3346516e2a
|
config-catalog.zh.md: 393857b50cb7e750eb90fc6e3a605559a5ce2cad
|
||||||
|
|||||||
@@ -594,7 +594,7 @@ export interface Config {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/experimental/agent-team/src/types.ts:125`](../packages/experimental/agent-team/src/types.ts)
|
Source: [`packages/experimental/agent-team/src/types.ts:131`](../packages/experimental/agent-team/src/types.ts)
|
||||||
|
|
||||||
<a id="deepseek-aidsh-experimental-tool-agent-team"></a>
|
<a id="deepseek-aidsh-experimental-tool-agent-team"></a>
|
||||||
|
|
||||||
@@ -3365,6 +3365,7 @@ These load from a `cordis.yml` entry with no `config:` block; they declare no co
|
|||||||
- `@deepseek-ai/dsh-commands` ([`packages/interaction/commands/src/index.ts`](../packages/interaction/commands/src/index.ts))
|
- `@deepseek-ai/dsh-commands` ([`packages/interaction/commands/src/index.ts`](../packages/interaction/commands/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-cordis-client-runner` ([`packages/extensions/cordis-client-runner/src/index.ts`](../packages/extensions/cordis-client-runner/src/index.ts))
|
- `@deepseek-ai/dsh-cordis-client-runner` ([`packages/extensions/cordis-client-runner/src/index.ts`](../packages/extensions/cordis-client-runner/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-deepseek-llm-api-extensions` ([`packages/llm/deepseek-llm-api-extensions/src/index.ts`](../packages/llm/deepseek-llm-api-extensions/src/index.ts))
|
- `@deepseek-ai/dsh-deepseek-llm-api-extensions` ([`packages/llm/deepseek-llm-api-extensions/src/index.ts`](../packages/llm/deepseek-llm-api-extensions/src/index.ts))
|
||||||
|
- `@deepseek-ai/dsh-experimental-client-ui-agent-team` ([`packages/experimental/client-ui-agent-team/src/index.ts`](../packages/experimental/client-ui-agent-team/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-fs-e2b` — requires `e2b` ([`packages/e2b/fs-e2b/src/index.ts`](../packages/e2b/fs-e2b/src/index.ts))
|
- `@deepseek-ai/dsh-fs-e2b` — requires `e2b` ([`packages/e2b/fs-e2b/src/index.ts`](../packages/e2b/fs-e2b/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-fs-observation-policy` ([`packages/fs/fs-observation-policy/src/index.ts`](../packages/fs/fs-observation-policy/src/index.ts))
|
- `@deepseek-ai/dsh-fs-observation-policy` ([`packages/fs/fs-observation-policy/src/index.ts`](../packages/fs/fs-observation-policy/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-goal-round-driver` — requires `agents` · `goals` · `sessions` ([`packages/goal/goal-round-driver/src/index.ts`](../packages/goal/goal-round-driver/src/index.ts))
|
- `@deepseek-ai/dsh-goal-round-driver` — requires `agents` · `goals` · `sessions` ([`packages/goal/goal-round-driver/src/index.ts`](../packages/goal/goal-round-driver/src/index.ts))
|
||||||
@@ -3431,6 +3432,7 @@ Imported as libraries by other packages; a `cordis.yml` cannot load them.
|
|||||||
- `@deepseek-ai/dsh-cmdline` ([`packages/boot/cmdline/src/index.ts`](../packages/boot/cmdline/src/index.ts))
|
- `@deepseek-ai/dsh-cmdline` ([`packages/boot/cmdline/src/index.ts`](../packages/boot/cmdline/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-code-runtime-python` ([`packages/code-runtime/code-runtime-python/src/index.ts`](../packages/code-runtime/code-runtime-python/src/index.ts))
|
- `@deepseek-ai/dsh-code-runtime-python` ([`packages/code-runtime/code-runtime-python/src/index.ts`](../packages/code-runtime/code-runtime-python/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-experimental-agent-team-profile` ([`packages/experimental/agent-team-profile/src/index.ts`](../packages/experimental/agent-team-profile/src/index.ts))
|
- `@deepseek-ai/dsh-experimental-agent-team-profile` ([`packages/experimental/agent-team-profile/src/index.ts`](../packages/experimental/agent-team-profile/src/index.ts))
|
||||||
|
- `@deepseek-ai/dsh-experimental-agent-team-web-profile` ([`packages/experimental/agent-team-web-profile/src/index.ts`](../packages/experimental/agent-team-web-profile/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-experimental-webworker-packer` ([`packages/experimental/webworker-packer/src/index.ts`](../packages/experimental/webworker-packer/src/index.ts))
|
- `@deepseek-ai/dsh-experimental-webworker-packer` ([`packages/experimental/webworker-packer/src/index.ts`](../packages/experimental/webworker-packer/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-experimental-webworker-runtime` ([`packages/experimental/webworker-runtime/src/index.ts`](../packages/experimental/webworker-runtime/src/index.ts))
|
- `@deepseek-ai/dsh-experimental-webworker-runtime` ([`packages/experimental/webworker-runtime/src/index.ts`](../packages/experimental/webworker-runtime/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-home-paths` ([`packages/util/home-paths/src/index.ts`](../packages/util/home-paths/src/index.ts))
|
- `@deepseek-ai/dsh-home-paths` ([`packages/util/home-paths/src/index.ts`](../packages/util/home-paths/src/index.ts))
|
||||||
|
|||||||
@@ -3367,6 +3367,7 @@ export interface Config {
|
|||||||
- `@deepseek-ai/dsh-commands`([`packages/interaction/commands/src/index.ts`](../packages/interaction/commands/src/index.ts))
|
- `@deepseek-ai/dsh-commands`([`packages/interaction/commands/src/index.ts`](../packages/interaction/commands/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-cordis-client-runner`([`packages/extensions/cordis-client-runner/src/index.ts`](../packages/extensions/cordis-client-runner/src/index.ts))
|
- `@deepseek-ai/dsh-cordis-client-runner`([`packages/extensions/cordis-client-runner/src/index.ts`](../packages/extensions/cordis-client-runner/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-deepseek-llm-api-extensions`([`packages/llm/deepseek-llm-api-extensions/src/index.ts`](../packages/llm/deepseek-llm-api-extensions/src/index.ts))
|
- `@deepseek-ai/dsh-deepseek-llm-api-extensions`([`packages/llm/deepseek-llm-api-extensions/src/index.ts`](../packages/llm/deepseek-llm-api-extensions/src/index.ts))
|
||||||
|
- `@deepseek-ai/dsh-experimental-client-ui-agent-team`([`packages/experimental/client-ui-agent-team/src/index.ts`](../packages/experimental/client-ui-agent-team/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-fs-e2b` — 需要 `e2b`([`packages/e2b/fs-e2b/src/index.ts`](../packages/e2b/fs-e2b/src/index.ts))
|
- `@deepseek-ai/dsh-fs-e2b` — 需要 `e2b`([`packages/e2b/fs-e2b/src/index.ts`](../packages/e2b/fs-e2b/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-fs-observation-policy`([`packages/fs/fs-observation-policy/src/index.ts`](../packages/fs/fs-observation-policy/src/index.ts))
|
- `@deepseek-ai/dsh-fs-observation-policy`([`packages/fs/fs-observation-policy/src/index.ts`](../packages/fs/fs-observation-policy/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-goal-round-driver` — 需要 `agents` · `goals` · `sessions`([`packages/goal/goal-round-driver/src/index.ts`](../packages/goal/goal-round-driver/src/index.ts))
|
- `@deepseek-ai/dsh-goal-round-driver` — 需要 `agents` · `goals` · `sessions`([`packages/goal/goal-round-driver/src/index.ts`](../packages/goal/goal-round-driver/src/index.ts))
|
||||||
@@ -3432,6 +3433,7 @@ export interface Config {
|
|||||||
- `@deepseek-ai/dsh-cmdline`([`packages/boot/cmdline/src/index.ts`](../packages/boot/cmdline/src/index.ts))
|
- `@deepseek-ai/dsh-cmdline`([`packages/boot/cmdline/src/index.ts`](../packages/boot/cmdline/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-code-runtime-python`([`packages/code-runtime/code-runtime-python/src/index.ts`](../packages/code-runtime/code-runtime-python/src/index.ts))
|
- `@deepseek-ai/dsh-code-runtime-python`([`packages/code-runtime/code-runtime-python/src/index.ts`](../packages/code-runtime/code-runtime-python/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-experimental-agent-team-profile`([`packages/experimental/agent-team-profile/src/index.ts`](../packages/experimental/agent-team-profile/src/index.ts))
|
- `@deepseek-ai/dsh-experimental-agent-team-profile`([`packages/experimental/agent-team-profile/src/index.ts`](../packages/experimental/agent-team-profile/src/index.ts))
|
||||||
|
- `@deepseek-ai/dsh-experimental-agent-team-web-profile`([`packages/experimental/agent-team-web-profile/src/index.ts`](../packages/experimental/agent-team-web-profile/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-experimental-webworker-packer`([`packages/experimental/webworker-packer/src/index.ts`](../packages/experimental/webworker-packer/src/index.ts))
|
- `@deepseek-ai/dsh-experimental-webworker-packer`([`packages/experimental/webworker-packer/src/index.ts`](../packages/experimental/webworker-packer/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-experimental-webworker-runtime`([`packages/experimental/webworker-runtime/src/index.ts`](../packages/experimental/webworker-runtime/src/index.ts))
|
- `@deepseek-ai/dsh-experimental-webworker-runtime`([`packages/experimental/webworker-runtime/src/index.ts`](../packages/experimental/webworker-runtime/src/index.ts))
|
||||||
- `@deepseek-ai/dsh-home-paths`([`packages/util/home-paths/src/index.ts`](../packages/util/home-paths/src/index.ts))
|
- `@deepseek-ai/dsh-home-paths`([`packages/util/home-paths/src/index.ts`](../packages/util/home-paths/src/index.ts))
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||||
# after editing either side, bring the other along and re-record with:
|
# after editing either side, bring the other along and re-record with:
|
||||||
# pnpm run verify-translation-pairing --write docs/module-graph.md
|
# pnpm run verify-translation-pairing --write docs/module-graph.md
|
||||||
module-graph.md: 3cafd70ae2cc982470d8594228764bf701ab687c
|
module-graph.md: e044939e4b48dee60faa03ff955c713e88ddaefa
|
||||||
module-graph.zh.md: 0037321174ff91b59a3957d4bfa6f620af6dcc93
|
module-graph.zh.md: d707bd63394b94f511ca40484e23e9e629521515
|
||||||
|
|||||||
+19
-1
@@ -206,6 +206,8 @@ flowchart TD
|
|||||||
subgraph group_experimental["packages/experimental"]
|
subgraph group_experimental["packages/experimental"]
|
||||||
pkg_experimental_agent_team["experimental-agent-team"]
|
pkg_experimental_agent_team["experimental-agent-team"]
|
||||||
pkg_experimental_agent_team_profile["experimental-agent-team-profile"]
|
pkg_experimental_agent_team_profile["experimental-agent-team-profile"]
|
||||||
|
pkg_experimental_agent_team_web_profile["experimental-agent-team-web-profile"]
|
||||||
|
pkg_experimental_client_ui_agent_team["experimental-client-ui-agent-team"]
|
||||||
pkg_experimental_tool_agent_team["experimental-tool-agent-team"]
|
pkg_experimental_tool_agent_team["experimental-tool-agent-team"]
|
||||||
pkg_experimental_webworker_packer["experimental-webworker-packer"]
|
pkg_experimental_webworker_packer["experimental-webworker-packer"]
|
||||||
pkg_experimental_webworker_runtime["experimental-webworker-runtime"]
|
pkg_experimental_webworker_runtime["experimental-webworker-runtime"]
|
||||||
@@ -378,6 +380,7 @@ flowchart TD
|
|||||||
pkg_code_runtime_python --> pkg_invariants
|
pkg_code_runtime_python --> pkg_invariants
|
||||||
pkg_e2b --> pkg_invariants
|
pkg_e2b --> pkg_invariants
|
||||||
pkg_experimental_agent_team_profile --> pkg_invariants
|
pkg_experimental_agent_team_profile --> pkg_invariants
|
||||||
|
pkg_experimental_agent_team_web_profile --> pkg_invariants
|
||||||
pkg_experimental_webworker_packer --> pkg_invariants
|
pkg_experimental_webworker_packer --> pkg_invariants
|
||||||
pkg_host_directory_picker --> pkg_invariants
|
pkg_host_directory_picker --> pkg_invariants
|
||||||
pkg_host_directory_picker_browse --> pkg_invariants
|
pkg_host_directory_picker_browse --> pkg_invariants
|
||||||
@@ -1196,6 +1199,7 @@ flowchart TD
|
|||||||
pkg_experimental_agent_team --> pkg_session
|
pkg_experimental_agent_team --> pkg_session
|
||||||
pkg_experimental_agent_team --> pkg_session_persistence
|
pkg_experimental_agent_team --> pkg_session_persistence
|
||||||
pkg_experimental_agent_team --> pkg_subagent
|
pkg_experimental_agent_team --> pkg_subagent
|
||||||
|
pkg_experimental_agent_team --> pkg_typert_protocol
|
||||||
pkg_host_frontend_static --> pkg_client_connection
|
pkg_host_frontend_static --> pkg_client_connection
|
||||||
pkg_host_frontend_static --> pkg_host_webserver
|
pkg_host_frontend_static --> pkg_host_webserver
|
||||||
pkg_host_frontend_static --> pkg_invariants
|
pkg_host_frontend_static --> pkg_invariants
|
||||||
@@ -1479,6 +1483,18 @@ flowchart TD
|
|||||||
pkg_client_ui_user_questions --> pkg_session
|
pkg_client_ui_user_questions --> pkg_session
|
||||||
pkg_client_ui_user_questions --> pkg_typert_protocol
|
pkg_client_ui_user_questions --> pkg_typert_protocol
|
||||||
pkg_client_ui_user_questions --> pkg_user_questions
|
pkg_client_ui_user_questions --> pkg_user_questions
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_api_remotes
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_api_session_controller
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_client_locale
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_client_ui_conversation
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_client_ui_primitives
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_client_ui_renderer
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_client_ui_session
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_client_ui_slots
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_experimental_agent_team
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_invariants
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_session
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_typert_protocol
|
||||||
pkg_client_ui_chat --> pkg_agent
|
pkg_client_ui_chat --> pkg_agent
|
||||||
pkg_client_ui_chat --> pkg_api_remotes
|
pkg_client_ui_chat --> pkg_api_remotes
|
||||||
pkg_client_ui_chat --> pkg_api_session_controller
|
pkg_client_ui_chat --> pkg_api_session_controller
|
||||||
@@ -1684,6 +1700,7 @@ flowchart TD
|
|||||||
| [`code-runtime-python`](../packages/code-runtime/code-runtime-python) | `code-runtime` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`code-runtime-python`](../packages/code-runtime/code-runtime-python) | `code-runtime` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
| [`e2b`](../packages/e2b/e2b) | `e2b` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`e2b`](../packages/e2b/e2b) | `e2b` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
| [`experimental-agent-team-profile`](../packages/experimental/agent-team-profile) | `experimental` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`experimental-agent-team-profile`](../packages/experimental/agent-team-profile) | `experimental` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
|
| [`experimental-agent-team-web-profile`](../packages/experimental/agent-team-web-profile) | `experimental` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
| [`experimental-webworker-packer`](../packages/experimental/webworker-packer) | `experimental` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`experimental-webworker-packer`](../packages/experimental/webworker-packer) | `experimental` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
| [`host-directory-picker`](../packages/host/directory-picker) | `host` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`host-directory-picker`](../packages/host/directory-picker) | `host` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
| [`host-directory-picker-browse`](../packages/host/directory-picker-browse) | `host` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`host-directory-picker-browse`](../packages/host/directory-picker-browse) | `host` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
@@ -1848,7 +1865,7 @@ flowchart TD
|
|||||||
| [`tool-subagent-report`](../packages/subagent/tool-subagent-report) | `subagent` | [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`subagent`](../packages/subagent/subagent), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools) |
|
| [`tool-subagent-report`](../packages/subagent/tool-subagent-report) | `subagent` | [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`subagent`](../packages/subagent/subagent), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools) |
|
||||||
| [`hooks-claude-code`](../packages/hooks/hooks-claude-code) | `hooks` | [`agent`](../packages/core/agent), [`hook-protocol`](../packages/hooks/hook-protocol), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`subagent`](../packages/subagent/subagent), [`tools`](../packages/core/tools) |
|
| [`hooks-claude-code`](../packages/hooks/hooks-claude-code) | `hooks` | [`agent`](../packages/core/agent), [`hook-protocol`](../packages/hooks/hook-protocol), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`subagent`](../packages/subagent/subagent), [`tools`](../packages/core/tools) |
|
||||||
| [`api-gateway`](../packages/api/gateway) | `api` | [`brand`](../packages/util/brand), [`client-connection`](../packages/client/connection), [`host-webserver`](../packages/host/webserver), [`invariants`](../packages/runtime-diagnostics/invariants), [`typert-registry`](../packages/typert/registry) |
|
| [`api-gateway`](../packages/api/gateway) | `api` | [`brand`](../packages/util/brand), [`client-connection`](../packages/client/connection), [`host-webserver`](../packages/host/webserver), [`invariants`](../packages/runtime-diagnostics/invariants), [`typert-registry`](../packages/typert/registry) |
|
||||||
| [`experimental-agent-team`](../packages/experimental/agent-team) | `experimental` | [`agent`](../packages/core/agent), [`brand`](../packages/util/brand), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`subagent`](../packages/subagent/subagent) |
|
| [`experimental-agent-team`](../packages/experimental/agent-team) | `experimental` | [`agent`](../packages/core/agent), [`brand`](../packages/util/brand), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`subagent`](../packages/subagent/subagent), [`typert-protocol`](../packages/typert/protocol) |
|
||||||
| [`host-frontend-static`](../packages/host/frontend-static) | `host` | [`client-connection`](../packages/client/connection), [`host-webserver`](../packages/host/webserver), [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`host-frontend-static`](../packages/host/frontend-static) | `host` | [`client-connection`](../packages/client/connection), [`host-webserver`](../packages/host/webserver), [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
| [`sdk-protocol`](../packages/sdk/protocol) | `sdk` | [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`subagent`](../packages/subagent/subagent) |
|
| [`sdk-protocol`](../packages/sdk/protocol) | `sdk` | [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`subagent`](../packages/subagent/subagent) |
|
||||||
| [`tool-ralph`](../packages/workflow/tool-ralph) | `workflow` | [`agent`](../packages/core/agent), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`subagent`](../packages/subagent/subagent), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools), [`workflow`](../packages/workflow/workflow) |
|
| [`tool-ralph`](../packages/workflow/tool-ralph) | `workflow` | [`agent`](../packages/core/agent), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`subagent`](../packages/subagent/subagent), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools), [`workflow`](../packages/workflow/workflow) |
|
||||||
@@ -1885,6 +1902,7 @@ flowchart TD
|
|||||||
| [`client-ui-settings-general`](../packages/client/ui-settings-general) | `client` | [`api-remotes`](../packages/api/remotes), [`client-connection`](../packages/client/connection), [`client-locale`](../packages/client/locale), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`client-ui-settings`](../packages/client/ui-settings), [`client-ui-sidebar`](../packages/client/ui-sidebar), [`invariants`](../packages/runtime-diagnostics/invariants), [`settings`](../packages/settings/settings) |
|
| [`client-ui-settings-general`](../packages/client/ui-settings-general) | `client` | [`api-remotes`](../packages/api/remotes), [`client-connection`](../packages/client/connection), [`client-locale`](../packages/client/locale), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`client-ui-settings`](../packages/client/ui-settings), [`client-ui-sidebar`](../packages/client/ui-sidebar), [`invariants`](../packages/runtime-diagnostics/invariants), [`settings`](../packages/settings/settings) |
|
||||||
| [`client-ui-trajectory`](../packages/client/ui-trajectory) | `client` | [`agent`](../packages/core/agent), [`api-session-controller`](../packages/api/session-controller), [`attachment`](../packages/attachment/attachment), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`compaction`](../packages/compaction/compaction), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`tools`](../packages/core/tools) |
|
| [`client-ui-trajectory`](../packages/client/ui-trajectory) | `client` | [`agent`](../packages/core/agent), [`api-session-controller`](../packages/api/session-controller), [`attachment`](../packages/attachment/attachment), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`compaction`](../packages/compaction/compaction), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`tools`](../packages/core/tools) |
|
||||||
| [`client-ui-user-questions`](../packages/client/ui-user-questions) | `client` | [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`invariants`](../packages/runtime-diagnostics/invariants), [`session`](../packages/core/session), [`typert-protocol`](../packages/typert/protocol), [`user-questions`](../packages/interaction/user-questions) |
|
| [`client-ui-user-questions`](../packages/client/ui-user-questions) | `client` | [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`invariants`](../packages/runtime-diagnostics/invariants), [`session`](../packages/core/session), [`typert-protocol`](../packages/typert/protocol), [`user-questions`](../packages/interaction/user-questions) |
|
||||||
|
| [`experimental-client-ui-agent-team`](../packages/experimental/client-ui-agent-team) | `experimental` | [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-primitives`](../packages/client/ui-primitives), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`client-ui-slots`](../packages/client/ui-slots), [`experimental-agent-team`](../packages/experimental/agent-team), [`invariants`](../packages/runtime-diagnostics/invariants), [`session`](../packages/core/session), [`typert-protocol`](../packages/typert/protocol) |
|
||||||
| [`client-ui-chat`](../packages/client/ui-chat) | `client` | [`agent`](../packages/core/agent), [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`api-workspace-controller`](../packages/api/workspace-controller), [`attachment`](../packages/attachment/attachment), [`client-locale`](../packages/client/locale), [`client-ui-approval`](../packages/client/ui-approval), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-layout`](../packages/client/ui-layout), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`client-ui-workspace`](../packages/client/ui-workspace), [`commands`](../packages/interaction/commands), [`compaction`](../packages/compaction/compaction), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`llm-retry`](../packages/llm/llm-retry), [`session`](../packages/core/session), [`session-stats`](../packages/session/session-stats), [`token-meter`](../packages/llm/token-meter), [`tools`](../packages/core/tools), [`util-workspace-path`](../packages/util/workspace-path) |
|
| [`client-ui-chat`](../packages/client/ui-chat) | `client` | [`agent`](../packages/core/agent), [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`api-workspace-controller`](../packages/api/workspace-controller), [`attachment`](../packages/attachment/attachment), [`client-locale`](../packages/client/locale), [`client-ui-approval`](../packages/client/ui-approval), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-layout`](../packages/client/ui-layout), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`client-ui-workspace`](../packages/client/ui-workspace), [`commands`](../packages/interaction/commands), [`compaction`](../packages/compaction/compaction), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`llm-retry`](../packages/llm/llm-retry), [`session`](../packages/core/session), [`session-stats`](../packages/session/session-stats), [`token-meter`](../packages/llm/token-meter), [`tools`](../packages/core/tools), [`util-workspace-path`](../packages/util/workspace-path) |
|
||||||
| [`client-ui-commands`](../packages/client/ui-commands) | `client` | [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-input-trigger`](../packages/client/ui-input-trigger), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`commands`](../packages/interaction/commands), [`invariants`](../packages/runtime-diagnostics/invariants), [`session`](../packages/core/session) |
|
| [`client-ui-commands`](../packages/client/ui-commands) | `client` | [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-input-trigger`](../packages/client/ui-input-trigger), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`commands`](../packages/interaction/commands), [`invariants`](../packages/runtime-diagnostics/invariants), [`session`](../packages/core/session) |
|
||||||
| [`client-ui-reference`](../packages/client/ui-reference) | `client` | [`api-remotes`](../packages/api/remotes), [`client-locale`](../packages/client/locale), [`client-ui-input-trigger`](../packages/client/ui-input-trigger), [`file-reference`](../packages/context/file-reference), [`invariants`](../packages/runtime-diagnostics/invariants), [`session-reference`](../packages/context/session-reference), [`typert-protocol`](../packages/typert/protocol) |
|
| [`client-ui-reference`](../packages/client/ui-reference) | `client` | [`api-remotes`](../packages/api/remotes), [`client-locale`](../packages/client/locale), [`client-ui-input-trigger`](../packages/client/ui-input-trigger), [`file-reference`](../packages/context/file-reference), [`invariants`](../packages/runtime-diagnostics/invariants), [`session-reference`](../packages/context/session-reference), [`typert-protocol`](../packages/typert/protocol) |
|
||||||
|
|||||||
+19
-1
@@ -208,6 +208,8 @@ flowchart TD
|
|||||||
subgraph group_experimental["packages/experimental"]
|
subgraph group_experimental["packages/experimental"]
|
||||||
pkg_experimental_agent_team["experimental-agent-team"]
|
pkg_experimental_agent_team["experimental-agent-team"]
|
||||||
pkg_experimental_agent_team_profile["experimental-agent-team-profile"]
|
pkg_experimental_agent_team_profile["experimental-agent-team-profile"]
|
||||||
|
pkg_experimental_agent_team_web_profile["experimental-agent-team-web-profile"]
|
||||||
|
pkg_experimental_client_ui_agent_team["experimental-client-ui-agent-team"]
|
||||||
pkg_experimental_tool_agent_team["experimental-tool-agent-team"]
|
pkg_experimental_tool_agent_team["experimental-tool-agent-team"]
|
||||||
pkg_experimental_webworker_packer["experimental-webworker-packer"]
|
pkg_experimental_webworker_packer["experimental-webworker-packer"]
|
||||||
pkg_experimental_webworker_runtime["experimental-webworker-runtime"]
|
pkg_experimental_webworker_runtime["experimental-webworker-runtime"]
|
||||||
@@ -380,6 +382,7 @@ flowchart TD
|
|||||||
pkg_code_runtime_python --> pkg_invariants
|
pkg_code_runtime_python --> pkg_invariants
|
||||||
pkg_e2b --> pkg_invariants
|
pkg_e2b --> pkg_invariants
|
||||||
pkg_experimental_agent_team_profile --> pkg_invariants
|
pkg_experimental_agent_team_profile --> pkg_invariants
|
||||||
|
pkg_experimental_agent_team_web_profile --> pkg_invariants
|
||||||
pkg_experimental_webworker_packer --> pkg_invariants
|
pkg_experimental_webworker_packer --> pkg_invariants
|
||||||
pkg_host_directory_picker --> pkg_invariants
|
pkg_host_directory_picker --> pkg_invariants
|
||||||
pkg_host_directory_picker_browse --> pkg_invariants
|
pkg_host_directory_picker_browse --> pkg_invariants
|
||||||
@@ -1198,6 +1201,7 @@ flowchart TD
|
|||||||
pkg_experimental_agent_team --> pkg_session
|
pkg_experimental_agent_team --> pkg_session
|
||||||
pkg_experimental_agent_team --> pkg_session_persistence
|
pkg_experimental_agent_team --> pkg_session_persistence
|
||||||
pkg_experimental_agent_team --> pkg_subagent
|
pkg_experimental_agent_team --> pkg_subagent
|
||||||
|
pkg_experimental_agent_team --> pkg_typert_protocol
|
||||||
pkg_host_frontend_static --> pkg_client_connection
|
pkg_host_frontend_static --> pkg_client_connection
|
||||||
pkg_host_frontend_static --> pkg_host_webserver
|
pkg_host_frontend_static --> pkg_host_webserver
|
||||||
pkg_host_frontend_static --> pkg_invariants
|
pkg_host_frontend_static --> pkg_invariants
|
||||||
@@ -1481,6 +1485,18 @@ flowchart TD
|
|||||||
pkg_client_ui_user_questions --> pkg_session
|
pkg_client_ui_user_questions --> pkg_session
|
||||||
pkg_client_ui_user_questions --> pkg_typert_protocol
|
pkg_client_ui_user_questions --> pkg_typert_protocol
|
||||||
pkg_client_ui_user_questions --> pkg_user_questions
|
pkg_client_ui_user_questions --> pkg_user_questions
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_api_remotes
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_api_session_controller
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_client_locale
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_client_ui_conversation
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_client_ui_primitives
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_client_ui_renderer
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_client_ui_session
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_client_ui_slots
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_experimental_agent_team
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_invariants
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_session
|
||||||
|
pkg_experimental_client_ui_agent_team --> pkg_typert_protocol
|
||||||
pkg_client_ui_chat --> pkg_agent
|
pkg_client_ui_chat --> pkg_agent
|
||||||
pkg_client_ui_chat --> pkg_api_remotes
|
pkg_client_ui_chat --> pkg_api_remotes
|
||||||
pkg_client_ui_chat --> pkg_api_session_controller
|
pkg_client_ui_chat --> pkg_api_session_controller
|
||||||
@@ -1686,6 +1702,7 @@ flowchart TD
|
|||||||
| [`code-runtime-python`](../packages/code-runtime/code-runtime-python) | `code-runtime` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`code-runtime-python`](../packages/code-runtime/code-runtime-python) | `code-runtime` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
| [`e2b`](../packages/e2b/e2b) | `e2b` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`e2b`](../packages/e2b/e2b) | `e2b` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
| [`experimental-agent-team-profile`](../packages/experimental/agent-team-profile) | `experimental` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`experimental-agent-team-profile`](../packages/experimental/agent-team-profile) | `experimental` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
|
| [`experimental-agent-team-web-profile`](../packages/experimental/agent-team-web-profile) | `experimental` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
| [`experimental-webworker-packer`](../packages/experimental/webworker-packer) | `experimental` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`experimental-webworker-packer`](../packages/experimental/webworker-packer) | `experimental` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
| [`host-directory-picker`](../packages/host/directory-picker) | `host` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`host-directory-picker`](../packages/host/directory-picker) | `host` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
| [`host-directory-picker-browse`](../packages/host/directory-picker-browse) | `host` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`host-directory-picker-browse`](../packages/host/directory-picker-browse) | `host` | [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
@@ -1850,7 +1867,7 @@ flowchart TD
|
|||||||
| [`tool-subagent-report`](../packages/subagent/tool-subagent-report) | `subagent` | [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`subagent`](../packages/subagent/subagent), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools) |
|
| [`tool-subagent-report`](../packages/subagent/tool-subagent-report) | `subagent` | [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`subagent`](../packages/subagent/subagent), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools) |
|
||||||
| [`hooks-claude-code`](../packages/hooks/hooks-claude-code) | `hooks` | [`agent`](../packages/core/agent), [`hook-protocol`](../packages/hooks/hook-protocol), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`subagent`](../packages/subagent/subagent), [`tools`](../packages/core/tools) |
|
| [`hooks-claude-code`](../packages/hooks/hooks-claude-code) | `hooks` | [`agent`](../packages/core/agent), [`hook-protocol`](../packages/hooks/hook-protocol), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`subagent`](../packages/subagent/subagent), [`tools`](../packages/core/tools) |
|
||||||
| [`api-gateway`](../packages/api/gateway) | `api` | [`brand`](../packages/util/brand), [`client-connection`](../packages/client/connection), [`host-webserver`](../packages/host/webserver), [`invariants`](../packages/runtime-diagnostics/invariants), [`typert-registry`](../packages/typert/registry) |
|
| [`api-gateway`](../packages/api/gateway) | `api` | [`brand`](../packages/util/brand), [`client-connection`](../packages/client/connection), [`host-webserver`](../packages/host/webserver), [`invariants`](../packages/runtime-diagnostics/invariants), [`typert-registry`](../packages/typert/registry) |
|
||||||
| [`experimental-agent-team`](../packages/experimental/agent-team) | `experimental` | [`agent`](../packages/core/agent), [`brand`](../packages/util/brand), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`subagent`](../packages/subagent/subagent) |
|
| [`experimental-agent-team`](../packages/experimental/agent-team) | `experimental` | [`agent`](../packages/core/agent), [`brand`](../packages/util/brand), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`subagent`](../packages/subagent/subagent), [`typert-protocol`](../packages/typert/protocol) |
|
||||||
| [`host-frontend-static`](../packages/host/frontend-static) | `host` | [`client-connection`](../packages/client/connection), [`host-webserver`](../packages/host/webserver), [`invariants`](../packages/runtime-diagnostics/invariants) |
|
| [`host-frontend-static`](../packages/host/frontend-static) | `host` | [`client-connection`](../packages/client/connection), [`host-webserver`](../packages/host/webserver), [`invariants`](../packages/runtime-diagnostics/invariants) |
|
||||||
| [`sdk-protocol`](../packages/sdk/protocol) | `sdk` | [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`subagent`](../packages/subagent/subagent) |
|
| [`sdk-protocol`](../packages/sdk/protocol) | `sdk` | [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`subagent`](../packages/subagent/subagent) |
|
||||||
| [`tool-ralph`](../packages/workflow/tool-ralph) | `workflow` | [`agent`](../packages/core/agent), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`subagent`](../packages/subagent/subagent), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools), [`workflow`](../packages/workflow/workflow) |
|
| [`tool-ralph`](../packages/workflow/tool-ralph) | `workflow` | [`agent`](../packages/core/agent), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`subagent`](../packages/subagent/subagent), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools), [`workflow`](../packages/workflow/workflow) |
|
||||||
@@ -1887,6 +1904,7 @@ flowchart TD
|
|||||||
| [`client-ui-settings-general`](../packages/client/ui-settings-general) | `client` | [`api-remotes`](../packages/api/remotes), [`client-connection`](../packages/client/connection), [`client-locale`](../packages/client/locale), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`client-ui-settings`](../packages/client/ui-settings), [`client-ui-sidebar`](../packages/client/ui-sidebar), [`invariants`](../packages/runtime-diagnostics/invariants), [`settings`](../packages/settings/settings) |
|
| [`client-ui-settings-general`](../packages/client/ui-settings-general) | `client` | [`api-remotes`](../packages/api/remotes), [`client-connection`](../packages/client/connection), [`client-locale`](../packages/client/locale), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`client-ui-settings`](../packages/client/ui-settings), [`client-ui-sidebar`](../packages/client/ui-sidebar), [`invariants`](../packages/runtime-diagnostics/invariants), [`settings`](../packages/settings/settings) |
|
||||||
| [`client-ui-trajectory`](../packages/client/ui-trajectory) | `client` | [`agent`](../packages/core/agent), [`api-session-controller`](../packages/api/session-controller), [`attachment`](../packages/attachment/attachment), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`compaction`](../packages/compaction/compaction), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`tools`](../packages/core/tools) |
|
| [`client-ui-trajectory`](../packages/client/ui-trajectory) | `client` | [`agent`](../packages/core/agent), [`api-session-controller`](../packages/api/session-controller), [`attachment`](../packages/attachment/attachment), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`compaction`](../packages/compaction/compaction), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`tools`](../packages/core/tools) |
|
||||||
| [`client-ui-user-questions`](../packages/client/ui-user-questions) | `client` | [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`invariants`](../packages/runtime-diagnostics/invariants), [`session`](../packages/core/session), [`typert-protocol`](../packages/typert/protocol), [`user-questions`](../packages/interaction/user-questions) |
|
| [`client-ui-user-questions`](../packages/client/ui-user-questions) | `client` | [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`invariants`](../packages/runtime-diagnostics/invariants), [`session`](../packages/core/session), [`typert-protocol`](../packages/typert/protocol), [`user-questions`](../packages/interaction/user-questions) |
|
||||||
|
| [`experimental-client-ui-agent-team`](../packages/experimental/client-ui-agent-team) | `experimental` | [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-primitives`](../packages/client/ui-primitives), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`client-ui-slots`](../packages/client/ui-slots), [`experimental-agent-team`](../packages/experimental/agent-team), [`invariants`](../packages/runtime-diagnostics/invariants), [`session`](../packages/core/session), [`typert-protocol`](../packages/typert/protocol) |
|
||||||
| [`client-ui-chat`](../packages/client/ui-chat) | `client` | [`agent`](../packages/core/agent), [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`api-workspace-controller`](../packages/api/workspace-controller), [`attachment`](../packages/attachment/attachment), [`client-locale`](../packages/client/locale), [`client-ui-approval`](../packages/client/ui-approval), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-layout`](../packages/client/ui-layout), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`client-ui-workspace`](../packages/client/ui-workspace), [`commands`](../packages/interaction/commands), [`compaction`](../packages/compaction/compaction), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`llm-retry`](../packages/llm/llm-retry), [`session`](../packages/core/session), [`session-stats`](../packages/session/session-stats), [`token-meter`](../packages/llm/token-meter), [`tools`](../packages/core/tools), [`util-workspace-path`](../packages/util/workspace-path) |
|
| [`client-ui-chat`](../packages/client/ui-chat) | `client` | [`agent`](../packages/core/agent), [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`api-workspace-controller`](../packages/api/workspace-controller), [`attachment`](../packages/attachment/attachment), [`client-locale`](../packages/client/locale), [`client-ui-approval`](../packages/client/ui-approval), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-layout`](../packages/client/ui-layout), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`client-ui-workspace`](../packages/client/ui-workspace), [`commands`](../packages/interaction/commands), [`compaction`](../packages/compaction/compaction), [`invariants`](../packages/runtime-diagnostics/invariants), [`llm`](../packages/llm/llm), [`llm-retry`](../packages/llm/llm-retry), [`session`](../packages/core/session), [`session-stats`](../packages/session/session-stats), [`token-meter`](../packages/llm/token-meter), [`tools`](../packages/core/tools), [`util-workspace-path`](../packages/util/workspace-path) |
|
||||||
| [`client-ui-commands`](../packages/client/ui-commands) | `client` | [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-input-trigger`](../packages/client/ui-input-trigger), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`commands`](../packages/interaction/commands), [`invariants`](../packages/runtime-diagnostics/invariants), [`session`](../packages/core/session) |
|
| [`client-ui-commands`](../packages/client/ui-commands) | `client` | [`api-remotes`](../packages/api/remotes), [`api-session-controller`](../packages/api/session-controller), [`client-locale`](../packages/client/locale), [`client-ui-conversation`](../packages/client/ui-conversation), [`client-ui-input-trigger`](../packages/client/ui-input-trigger), [`client-ui-renderer`](../packages/client/ui-renderer), [`client-ui-session`](../packages/client/ui-session), [`commands`](../packages/interaction/commands), [`invariants`](../packages/runtime-diagnostics/invariants), [`session`](../packages/core/session) |
|
||||||
| [`client-ui-reference`](../packages/client/ui-reference) | `client` | [`api-remotes`](../packages/api/remotes), [`client-locale`](../packages/client/locale), [`client-ui-input-trigger`](../packages/client/ui-input-trigger), [`file-reference`](../packages/context/file-reference), [`invariants`](../packages/runtime-diagnostics/invariants), [`session-reference`](../packages/context/session-reference), [`typert-protocol`](../packages/typert/protocol) |
|
| [`client-ui-reference`](../packages/client/ui-reference) | `client` | [`api-remotes`](../packages/api/remotes), [`client-locale`](../packages/client/locale), [`client-ui-input-trigger`](../packages/client/ui-input-trigger), [`file-reference`](../packages/context/file-reference), [`invariants`](../packages/runtime-diagnostics/invariants), [`session-reference`](../packages/context/session-reference), [`typert-protocol`](../packages/typert/protocol) |
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||||
# after editing either side, bring the other along and re-record with:
|
# after editing either side, bring the other along and re-record with:
|
||||||
# pnpm run verify-translation-pairing --write docs/persistence-catalog.md
|
# pnpm run verify-translation-pairing --write docs/persistence-catalog.md
|
||||||
persistence-catalog.md: 1ff60ebdacf198ce7bc7d7c8c13eb9278320281a
|
persistence-catalog.md: 593fb073022e139a13f1d642c6f12a94400b0446
|
||||||
persistence-catalog.zh.md: 59acfa23c81687f23498d598cb0aead3e669ceb2
|
persistence-catalog.zh.md: 59acfa23c81687f23498d598cb0aead3e669ceb2
|
||||||
|
|||||||
@@ -767,7 +767,7 @@ Source: [`packages/subagent/tool-subagent/src/model-selection-state.ts:13`](../p
|
|||||||
|
|
||||||
Types: [TeamId](subsystems/agent-team.md) · [TeamMemberSnapshot](subsystems/agent-team.md)
|
Types: [TeamId](subsystems/agent-team.md) · [TeamMemberSnapshot](subsystems/agent-team.md)
|
||||||
|
|
||||||
Source: [`packages/experimental/agent-team/src/types.ts:206`](../packages/experimental/agent-team/src/types.ts)
|
Source: [`packages/experimental/agent-team/src/types.ts:223`](../packages/experimental/agent-team/src/types.ts)
|
||||||
|
|
||||||
<a id="teammessagedelivered--log-only"></a>
|
<a id="teammessagedelivered--log-only"></a>
|
||||||
|
|
||||||
@@ -785,7 +785,7 @@ Source: [`packages/experimental/agent-team/src/types.ts:206`](../packages/experi
|
|||||||
|
|
||||||
Types: [TeamId](subsystems/agent-team.md) · [TeamMessageId](subsystems/agent-team.md)
|
Types: [TeamId](subsystems/agent-team.md) · [TeamMessageId](subsystems/agent-team.md)
|
||||||
|
|
||||||
Source: [`packages/experimental/agent-team/src/types.ts:212`](../packages/experimental/agent-team/src/types.ts)
|
Source: [`packages/experimental/agent-team/src/types.ts:229`](../packages/experimental/agent-team/src/types.ts)
|
||||||
|
|
||||||
<a id="teammessagequeued--log-only"></a>
|
<a id="teammessagequeued--log-only"></a>
|
||||||
|
|
||||||
@@ -798,7 +798,7 @@ Source: [`packages/experimental/agent-team/src/types.ts:212`](../packages/experi
|
|||||||
|
|
||||||
Types: [TeamId](subsystems/agent-team.md) · [TeamMessageSnapshot](subsystems/agent-team.md)
|
Types: [TeamId](subsystems/agent-team.md) · [TeamMessageSnapshot](subsystems/agent-team.md)
|
||||||
|
|
||||||
Source: [`packages/experimental/agent-team/src/types.ts:210`](../packages/experimental/agent-team/src/types.ts)
|
Source: [`packages/experimental/agent-team/src/types.ts:227`](../packages/experimental/agent-team/src/types.ts)
|
||||||
|
|
||||||
<a id="teamtask--log-only"></a>
|
<a id="teamtask--log-only"></a>
|
||||||
|
|
||||||
@@ -811,7 +811,7 @@ Source: [`packages/experimental/agent-team/src/types.ts:210`](../packages/experi
|
|||||||
|
|
||||||
Types: [TeamId](subsystems/agent-team.md) · [TeamTaskSnapshot](subsystems/agent-team.md)
|
Types: [TeamId](subsystems/agent-team.md) · [TeamTaskSnapshot](subsystems/agent-team.md)
|
||||||
|
|
||||||
Source: [`packages/experimental/agent-team/src/types.ts:208`](../packages/experimental/agent-team/src/types.ts)
|
Source: [`packages/experimental/agent-team/src/types.ts:225`](../packages/experimental/agent-team/src/types.ts)
|
||||||
|
|
||||||
### `todo/*`
|
### `todo/*`
|
||||||
|
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||||
# after editing either side, bring the other along and re-record with:
|
# after editing either side, bring the other along and re-record with:
|
||||||
# pnpm run verify-translation-pairing --write docs/subsystems/agent-team.md
|
# pnpm run verify-translation-pairing --write docs/subsystems/agent-team.md
|
||||||
agent-team.md: 8704bff3071d4e084e95dafcd61b7eea65278f61
|
agent-team.md: e3a746734b067bb7ef8f083c5c9af9cb3707dcf7
|
||||||
agent-team.zh.md: dfa55743e5ddbde054f87180edd37a788af84663
|
agent-team.zh.md: 1f885a73861c091b50d27d15080ebc09f6d382ec
|
||||||
|
|||||||
@@ -105,13 +105,6 @@ membership(agent: Agent): TeamMembership
|
|||||||
*/
|
*/
|
||||||
listMembers(agent: Agent): TeamMemberView[]
|
listMembers(agent: Agent): TeamMemberView[]
|
||||||
|
|
||||||
/**
|
|
||||||
* Read the current roster and non-deleted task board for a browser client.
|
|
||||||
* @param agent - exact live Team member used as the authority credential.
|
|
||||||
* @returns detached current roster and task views.
|
|
||||||
*/
|
|
||||||
@Remote('view') view(agent: Agent): TeamView
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create one named, continuable direct child of the Team Lead.
|
* Create one named, continuable direct child of the Team Lead.
|
||||||
* @param caller - exact live Lead Agent.
|
* @param caller - exact live Lead Agent.
|
||||||
@@ -136,14 +129,6 @@ async sendMessage(caller: Agent, request: SendTeamMessageRequest): Promise<SendT
|
|||||||
*/
|
*/
|
||||||
async createTask(caller: Agent, request: CreateTeamTaskRequest): Promise<TeamTaskView>
|
async createTask(caller: Agent, request: CreateTeamTaskRequest): Promise<TeamTaskView>
|
||||||
|
|
||||||
/**
|
|
||||||
* Create one shared task for a browser client.
|
|
||||||
* @param agent - exact live Team member creating the task.
|
|
||||||
* @param request - task text, blockers, and advisory write scopes.
|
|
||||||
* @returns the revision-one task view.
|
|
||||||
*/
|
|
||||||
@Remote('createTask') createTaskForClient(agent: Agent, request: CreateTeamTaskRequest): Promise<TeamTaskView>
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return one task, including a deleted tombstone.
|
* Return one task, including a deleted tombstone.
|
||||||
* @param caller - exact live Team member reading the task.
|
* @param caller - exact live Team member reading the task.
|
||||||
@@ -167,14 +152,6 @@ listTasks(caller: Agent): TeamTaskView[]
|
|||||||
*/
|
*/
|
||||||
async updateTask(caller: Agent, request: UpdateTeamTaskRequest): Promise<TeamTaskView>
|
async updateTask(caller: Agent, request: UpdateTeamTaskRequest): Promise<TeamTaskView>
|
||||||
|
|
||||||
/**
|
|
||||||
* Apply one task mutation for a browser client while preserving CAS conflicts.
|
|
||||||
* @param agent - exact live Team member authorizing the mutation.
|
|
||||||
* @param request - task identity, expected revision, action, and action fields.
|
|
||||||
* @returns the committed task or a browser-safe Team rejection.
|
|
||||||
*/
|
|
||||||
@Remote('updateTask') async updateTaskForClient(agent: Agent, request: UpdateTeamTaskRequest): Promise<TeamTaskMutationResult>
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wait for the next Team-domain or member-status change.
|
* Wait for the next Team-domain or member-status change.
|
||||||
* @param caller - exact live Team member waiting for activity.
|
* @param caller - exact live Team member waiting for activity.
|
||||||
@@ -198,6 +175,29 @@ interrupt(caller: Agent, targetName: string): { previousStatus: 'running' | 'idl
|
|||||||
* @returns Team membership, or undefined for non-Team subagents and stale identities.
|
* @returns Team membership, or undefined for non-Team subagents and stale identities.
|
||||||
*/
|
*/
|
||||||
tryMembership(agent: Agent): TeamMembership | undefined
|
tryMembership(agent: Agent): TeamMembership | undefined
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read the current roster and non-deleted task board through the generated Remote API.
|
||||||
|
* @param agent - exact live Team member used as the authority credential.
|
||||||
|
* @returns detached current roster and task views.
|
||||||
|
*/
|
||||||
|
@Remote('view') remoteView(agent: Agent): TeamView
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create one shared task through the generated Remote API.
|
||||||
|
* @param agent - exact live Team member creating the task.
|
||||||
|
* @param request - task text, blockers, and advisory write scopes.
|
||||||
|
* @returns the revision-one task or a typed Team rejection.
|
||||||
|
*/
|
||||||
|
@Remote('createTask') remoteCreateTask(agent: Agent, request: CreateTeamTaskRequest): Promise<TeamTaskMutationResult>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply one task mutation and preserve Team rejections as business results.
|
||||||
|
* @param agent - exact live Team member authorizing the mutation.
|
||||||
|
* @param request - task identity, expected revision, action, and action fields.
|
||||||
|
* @returns the committed task or a typed Team rejection.
|
||||||
|
*/
|
||||||
|
@Remote('updateTask') remoteUpdateTask(agent: Agent, request: UpdateTeamTaskRequest): Promise<TeamTaskMutationResult>
|
||||||
```
|
```
|
||||||
|
|
||||||
Types: [Agent](core.md)
|
Types: [Agent](core.md)
|
||||||
|
|||||||
@@ -105,13 +105,6 @@ membership(agent: Agent): TeamMembership
|
|||||||
*/
|
*/
|
||||||
listMembers(agent: Agent): TeamMemberView[]
|
listMembers(agent: Agent): TeamMemberView[]
|
||||||
|
|
||||||
/**
|
|
||||||
* Read the current roster and non-deleted task board for a browser client.
|
|
||||||
* @param agent - exact live Team member used as the authority credential.
|
|
||||||
* @returns detached current roster and task views.
|
|
||||||
*/
|
|
||||||
@Remote('view') view(agent: Agent): TeamView
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create one named, continuable direct child of the Team Lead.
|
* Create one named, continuable direct child of the Team Lead.
|
||||||
* @param caller - exact live Lead Agent.
|
* @param caller - exact live Lead Agent.
|
||||||
@@ -136,14 +129,6 @@ async sendMessage(caller: Agent, request: SendTeamMessageRequest): Promise<SendT
|
|||||||
*/
|
*/
|
||||||
async createTask(caller: Agent, request: CreateTeamTaskRequest): Promise<TeamTaskView>
|
async createTask(caller: Agent, request: CreateTeamTaskRequest): Promise<TeamTaskView>
|
||||||
|
|
||||||
/**
|
|
||||||
* Create one shared task for a browser client.
|
|
||||||
* @param agent - exact live Team member creating the task.
|
|
||||||
* @param request - task text, blockers, and advisory write scopes.
|
|
||||||
* @returns the revision-one task view.
|
|
||||||
*/
|
|
||||||
@Remote('createTask') createTaskForClient(agent: Agent, request: CreateTeamTaskRequest): Promise<TeamTaskView>
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return one task, including a deleted tombstone.
|
* Return one task, including a deleted tombstone.
|
||||||
* @param caller - exact live Team member reading the task.
|
* @param caller - exact live Team member reading the task.
|
||||||
@@ -167,14 +152,6 @@ listTasks(caller: Agent): TeamTaskView[]
|
|||||||
*/
|
*/
|
||||||
async updateTask(caller: Agent, request: UpdateTeamTaskRequest): Promise<TeamTaskView>
|
async updateTask(caller: Agent, request: UpdateTeamTaskRequest): Promise<TeamTaskView>
|
||||||
|
|
||||||
/**
|
|
||||||
* Apply one task mutation for a browser client while preserving CAS conflicts.
|
|
||||||
* @param agent - exact live Team member authorizing the mutation.
|
|
||||||
* @param request - task identity, expected revision, action, and action fields.
|
|
||||||
* @returns the committed task or a browser-safe Team rejection.
|
|
||||||
*/
|
|
||||||
@Remote('updateTask') async updateTaskForClient(agent: Agent, request: UpdateTeamTaskRequest): Promise<TeamTaskMutationResult>
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wait for the next Team-domain or member-status change.
|
* Wait for the next Team-domain or member-status change.
|
||||||
* @param caller - exact live Team member waiting for activity.
|
* @param caller - exact live Team member waiting for activity.
|
||||||
@@ -198,6 +175,29 @@ interrupt(caller: Agent, targetName: string): { previousStatus: 'running' | 'idl
|
|||||||
* @returns Team membership, or undefined for non-Team subagents and stale identities.
|
* @returns Team membership, or undefined for non-Team subagents and stale identities.
|
||||||
*/
|
*/
|
||||||
tryMembership(agent: Agent): TeamMembership | undefined
|
tryMembership(agent: Agent): TeamMembership | undefined
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read the current roster and non-deleted task board through the generated Remote API.
|
||||||
|
* @param agent - exact live Team member used as the authority credential.
|
||||||
|
* @returns detached current roster and task views.
|
||||||
|
*/
|
||||||
|
@Remote('view') remoteView(agent: Agent): TeamView
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create one shared task through the generated Remote API.
|
||||||
|
* @param agent - exact live Team member creating the task.
|
||||||
|
* @param request - task text, blockers, and advisory write scopes.
|
||||||
|
* @returns the revision-one task or a typed Team rejection.
|
||||||
|
*/
|
||||||
|
@Remote('createTask') remoteCreateTask(agent: Agent, request: CreateTeamTaskRequest): Promise<TeamTaskMutationResult>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply one task mutation and preserve Team rejections as business results.
|
||||||
|
* @param agent - exact live Team member authorizing the mutation.
|
||||||
|
* @param request - task identity, expected revision, action, and action fields.
|
||||||
|
* @returns the committed task or a typed Team rejection.
|
||||||
|
*/
|
||||||
|
@Remote('updateTask') remoteUpdateTask(agent: Agent, request: UpdateTeamTaskRequest): Promise<TeamTaskMutationResult>
|
||||||
```
|
```
|
||||||
|
|
||||||
Types: [Agent](core.zh.md)
|
Types: [Agent](core.zh.md)
|
||||||
|
|||||||
@@ -756,7 +756,7 @@
|
|||||||
"@deepseek-ai/.+"
|
"@deepseek-ai/.+"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"packages/experimental/team": {
|
"packages/experimental/agent-team": {
|
||||||
"entry": [
|
"entry": [
|
||||||
"tests/**/*.spec.ts",
|
"tests/**/*.spec.ts",
|
||||||
"tests/**/*.e2e.ts"
|
"tests/**/*.e2e.ts"
|
||||||
@@ -764,7 +764,7 @@
|
|||||||
},
|
},
|
||||||
"packages/experimental/agent-team-web-profile": {
|
"packages/experimental/agent-team-web-profile": {
|
||||||
"ignoreDependencies": [
|
"ignoreDependencies": [
|
||||||
"@deepseek-ai/dsh-client-ui-agent-team"
|
"@deepseek-ai/dsh-experimental-client-ui-agent-team"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"packages/bundle/web-app": {
|
"packages/bundle/web-app": {
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||||
# after editing either side, bring the other along and re-record with:
|
# after editing either side, bring the other along and re-record with:
|
||||||
# pnpm run verify-translation-pairing --write packages/experimental/README.md
|
# pnpm run verify-translation-pairing --write packages/experimental/README.md
|
||||||
README.md: ad658da84303d93ddede7d383d7950d8bca3f38f
|
README.md: 2812388377611ebbed0f415d637bd14bffcee34c
|
||||||
README.zh.md: a8b777b40e44c1d3b95c744a5c972a2dca7192fb
|
README.zh.md: 3dcf13d9ef73b540fe4b8f3d7f6df2e623bca6f4
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||||
# after editing either side, bring the other along and re-record with:
|
# after editing either side, bring the other along and re-record with:
|
||||||
# pnpm run verify-translation-pairing --write packages/experimental/agent-team-web-profile/README.md
|
# pnpm run verify-translation-pairing --write packages/experimental/agent-team-web-profile/README.md
|
||||||
README.md: 696be051ab754ae157109fb9d69ba11bd6d47f16
|
README.md: b2ada3c2cb3c2d09ed9abf353812bb2ab168c9f5
|
||||||
README.zh.md: 07470c5fedbeee30a17b26d08709a2ac1f45ab89
|
README.zh.md: 3d7241384c14ab89f4ed9c66f3155e8c3d64149f
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
[English](README.md) | 中文
|
[English](README.md) | 中文
|
||||||
|
|
||||||
Agent Teams 的私有 Web profile 层。应当在 `@deepseek-ai/dsh-web-app` 与 [`@deepseek-ai/dsh-experimental-agent-team-profile`](../agent-team-profile/README.md) 之后应用。本 patch 插入 Team 会话页头 UI;它不修改稳定 Web bundle。
|
Agent Teams 的私有 Web profile 层。应当在 `@deepseek-ai/dsh-web-app` 与 [`@deepseek-ai/dsh-experimental-agent-team-profile`](../agent-team-profile/README.zh.md) 之后应用。本 patch 插入 Team 会话页头 UI;它不修改稳定 Web bundle。
|
||||||
|
|
||||||
在源码 checkout 中,将两个 Agent Teams 层添加到已初始化的 Web profile:
|
在源码 checkout 中,将两个 Agent Teams 层添加到已初始化的 Web profile:
|
||||||
|
|
||||||
@@ -21,8 +21,10 @@ Host profile 提供 Team domain、生成式 Remote method 与模型工具。本
|
|||||||
|
|
||||||
无直接影响;Host 侧 Team 工具负责 prompt 与 schema 变化。
|
无直接影响;Host 侧 Team 工具负责 prompt 与 schema 变化。
|
||||||
|
|
||||||
|
<a id="known-limitations-and-deferred-work"></a>
|
||||||
|
|
||||||
## 已知限制与暂缓事项
|
## 已知限制与暂缓事项
|
||||||
|
|
||||||
- **有序 composition**:`dsh-base`、`dsh-web-app`、`dsh-experimental-agent-team-profile` 与本包必须保持该顺序。
|
- **有序 composition**:`dsh-base`、`dsh-web-app`、`dsh-experimental-agent-team-profile` 与本包必须保持该顺序。
|
||||||
- **Preset scope 内的 legacy control**:稳定 Web preset 仍会在 preset scope 中挂载 continuable Subagent control。顶层 Host profile override 不会替换这些 scoped registration,因此在 Web 提供 Team-aware preset 之前,Team roster 与 legacy child control 可能同时出现。[Web Agent Teams 决策记录](../../../.agents/notes/implemented/feature/2026-08-06-agent-teams-web.md)记载了这项暂缓的 composition 工作。
|
- **Preset scope 内的 legacy control**:稳定 Web preset 仍会在 preset scope 中挂载 continuable Subagent control。顶层 Host profile override 不会替换这些 scoped registration,因此在 Web 提供 Team-aware preset 之前,Team roster 与 legacy child control 可能同时出现。[Web Agent Teams 决策记录](../../../.agents/notes/implemented/feature/2026-08-06-agent-teams-web.zh.md)记载了这项暂缓的 composition 工作。
|
||||||
- **仅限源码 checkout**:正式 CLI、Web、npm 与 Python 发布产物会排除这个私有包。
|
- **仅限源码 checkout**:正式 CLI、Web、npm 与 Python 发布产物会排除这个私有包。
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
|
|
||||||
- insert:
|
- insert:
|
||||||
- id: ui-agent-team
|
- id: ui-agent-team
|
||||||
name: '@deepseek-ai/dsh-client-ui-agent-team'
|
name: '@deepseek-ai/dsh-experimental-client-ui-agent-team'
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@deepseek-ai/dsh-agent-team-web-profile",
|
"name": "@deepseek-ai/dsh-experimental-agent-team-web-profile",
|
||||||
"description": "Private Web profile layer for Agent Teams Remote and UI plugins",
|
"description": "Private Web profile layer for Agent Teams Remote and UI plugins",
|
||||||
"version": "0.1.0-rc.7",
|
"version": "0.1.1-rc.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@deepseek-ai/dsh-client-ui-agent-team": "workspace:^"
|
"@deepseek-ai/dsh-experimental-client-ui-agent-team": "workspace:^"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@deepseek-ai/dsh-invariants": "workspace:^",
|
"@deepseek-ai/dsh-invariants": "workspace:^",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import type { Context } from '@deepseek-ai/cordis'
|
import type { Context } from '@deepseek-ai/cordis'
|
||||||
import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants'
|
import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants'
|
||||||
|
|
||||||
const PACKAGE_NAME = '@deepseek-ai/dsh-agent-team-web-profile'
|
const PACKAGE_NAME = '@deepseek-ai/dsh-experimental-agent-team-web-profile'
|
||||||
|
|
||||||
/** Cordis companion plugin name. */
|
/** Cordis companion plugin name. */
|
||||||
export const name = 'agent-team-web-profile-invariant'
|
export const name = 'agent-team-web-profile-invariant'
|
||||||
|
|||||||
@@ -4,8 +4,11 @@ import { readFileSync } from 'node:fs'
|
|||||||
import { fileURLToPath } from 'node:url'
|
import { fileURLToPath } from 'node:url'
|
||||||
import { resolve } from 'node:path'
|
import { resolve } from 'node:path'
|
||||||
import { describe, expect, it } from 'vitest'
|
import { describe, expect, it } from 'vitest'
|
||||||
|
import { Context } from '@deepseek-ai/cordis'
|
||||||
|
import InvariantRegistry from '@deepseek-ai/dsh-invariants'
|
||||||
import * as yaml from 'js-yaml'
|
import * as yaml from 'js-yaml'
|
||||||
import { entryListSchema } from '@deepseek-ai/cordis-plugin-include'
|
import { entryListSchema } from '@deepseek-ai/cordis-plugin-include'
|
||||||
|
import * as WebProfileInvariant from '../src/invariant.ts'
|
||||||
|
|
||||||
describe('Agent Teams Web profile bundle', () => {
|
describe('Agent Teams Web profile bundle', () => {
|
||||||
it('declares a private parseable layer containing the Team UI', () => {
|
it('declares a private parseable layer containing the Team UI', () => {
|
||||||
@@ -20,7 +23,7 @@ describe('Agent Teams Web profile bundle', () => {
|
|||||||
expect(manifest.publishConfig).toBeUndefined()
|
expect(manifest.publishConfig).toBeUndefined()
|
||||||
expect(manifest.dsh?.bundle?.patch).toBe('./cordis.patch.yml')
|
expect(manifest.dsh?.bundle?.patch).toBe('./cordis.patch.yml')
|
||||||
expect(manifest.dependencies).toEqual({
|
expect(manifest.dependencies).toEqual({
|
||||||
'@deepseek-ai/dsh-client-ui-agent-team': 'workspace:^',
|
'@deepseek-ai/dsh-experimental-client-ui-agent-team': 'workspace:^',
|
||||||
})
|
})
|
||||||
|
|
||||||
const parsed = yaml.load(
|
const parsed = yaml.load(
|
||||||
@@ -28,7 +31,20 @@ describe('Agent Teams Web profile bundle', () => {
|
|||||||
{ schema: entryListSchema },
|
{ schema: entryListSchema },
|
||||||
) as { insert?: { id?: string; name?: string }[] }[]
|
) as { insert?: { id?: string; name?: string }[] }[]
|
||||||
expect(parsed.flatMap(patch => patch.insert ?? [])).toEqual([
|
expect(parsed.flatMap(patch => patch.insert ?? [])).toEqual([
|
||||||
{ id: 'ui-agent-team', name: '@deepseek-ai/dsh-client-ui-agent-team' },
|
{ id: 'ui-agent-team', name: '@deepseek-ai/dsh-experimental-client-ui-agent-team' },
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('reserves package ownership without installing a runtime audit', async () => {
|
||||||
|
const ctx = new Context()
|
||||||
|
await ctx.plugin(InvariantRegistry, { enabled: true })
|
||||||
|
const fiber = ctx.plugin(WebProfileInvariant)
|
||||||
|
await fiber.await()
|
||||||
|
expect(WebProfileInvariant.name).toBe('agent-team-web-profile-invariant')
|
||||||
|
expect(WebProfileInvariant.inject).toEqual(['invariants'])
|
||||||
|
expect(() => {
|
||||||
|
Reflect.apply(ctx.emit.bind(ctx), undefined, ['unrelated/event'])
|
||||||
|
}).not.toThrow()
|
||||||
|
await fiber.dispose()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||||
# after editing either side, bring the other along and re-record with:
|
# after editing either side, bring the other along and re-record with:
|
||||||
# pnpm run verify-translation-pairing --write packages/experimental/agent-team/README.md
|
# pnpm run verify-translation-pairing --write packages/experimental/agent-team/README.md
|
||||||
README.md: ca088a4cf30a20e8db092be76f5ada1c76ba26d0
|
README.md: bac73d873ec0856fa2b0550a7f25331c5d7035fb
|
||||||
README.zh.md: ec5f7e1f46238b4b0b3398d4ab35585fdae15bf0
|
README.zh.md: 2981e611a48736124dda79a8721e01c11fbcf7e6
|
||||||
|
|||||||
@@ -1,3 +1,13 @@
|
|||||||
/** Client-safe Agent Teams request, result, and view vocabulary. */
|
/** Client-safe Agent Teams request, result, and view vocabulary. */
|
||||||
|
|
||||||
export type * from './types.ts'
|
export type {
|
||||||
|
CreateTeamTaskRequest,
|
||||||
|
TeamMemberView,
|
||||||
|
TeamTaskAction,
|
||||||
|
TeamTaskId,
|
||||||
|
TeamTaskMutationResult,
|
||||||
|
TeamTaskStatus,
|
||||||
|
TeamTaskView,
|
||||||
|
TeamView,
|
||||||
|
UpdateTeamTaskRequest,
|
||||||
|
} from './types.ts'
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
/** Public Agent Teams identities, durable records, and service request values. */
|
/** Public Agent Teams identities, durable records, and service request values. */
|
||||||
|
|
||||||
import type { Branded } from '@deepseek-ai/dsh-brand'
|
import type { Branded } from '@deepseek-ai/dsh-brand'
|
||||||
import type { ContentBlock } from '@deepseek-ai/dsh-llm'
|
import type { ContentBlock } from '@deepseek-ai/dsh-llm/types'
|
||||||
import type { SessionId } from '@deepseek-ai/dsh-session'
|
import type { SessionId } from '@deepseek-ai/dsh-session/types'
|
||||||
|
|
||||||
/** Identifies the implicit team rooted at one top-level Session. */
|
/** Identifies the implicit team rooted at one top-level Session. */
|
||||||
export type TeamId = Branded<'TeamId'>
|
export type TeamId = Branded<'TeamId'>
|
||||||
|
|||||||
@@ -12,15 +12,15 @@ const artifact = (path: string): string => join(root, path)
|
|||||||
const artifactUrl = (path: string): string => pathToFileURL(artifact(path)).href
|
const artifactUrl = (path: string): string => pathToFileURL(artifact(path)).href
|
||||||
|
|
||||||
const requiredArtifacts = [
|
const requiredArtifacts = [
|
||||||
'packages/experimental/team/lib/index.js',
|
'packages/experimental/agent-team/lib/index.js',
|
||||||
'packages/experimental/team/lib/typert.remote-client.js',
|
'packages/experimental/agent-team/lib/typert.remote-client.js',
|
||||||
].every(path => existsSync(artifact(path)))
|
].every(path => existsSync(artifact(path)))
|
||||||
|
|
||||||
describe.skipIf(!requiredArtifacts)('Agent Teams built LIB service', () => {
|
describe.skipIf(!requiredArtifacts)('Agent Teams built LIB service', () => {
|
||||||
it('loads the Host service and its generated browser contribution under plain Node', async () => {
|
it('loads the Host service and its generated browser contribution under plain Node', async () => {
|
||||||
const urls = {
|
const urls = {
|
||||||
host: artifactUrl('packages/experimental/team/lib/index.js'),
|
host: artifactUrl('packages/experimental/agent-team/lib/index.js'),
|
||||||
remote: artifactUrl('packages/experimental/team/lib/typert.remote-client.js'),
|
remote: artifactUrl('packages/experimental/agent-team/lib/typert.remote-client.js'),
|
||||||
}
|
}
|
||||||
const script = `
|
const script = `
|
||||||
const host = await import(${JSON.stringify(urls.host)})
|
const host = await import(${JSON.stringify(urls.host)})
|
||||||
@@ -40,9 +40,9 @@ describe.skipIf(!requiredArtifacts)('Agent Teams built LIB service', () => {
|
|||||||
expect(output).toEqual({
|
expect(output).toEqual({
|
||||||
className: 'TeamService',
|
className: 'TeamService',
|
||||||
methods: [
|
methods: [
|
||||||
'@deepseek-ai/dsh-team#teams/createTask',
|
'@deepseek-ai/dsh-experimental-agent-team#agentTeams/createTask',
|
||||||
'@deepseek-ai/dsh-team#teams/updateTask',
|
'@deepseek-ai/dsh-experimental-agent-team#agentTeams/updateTask',
|
||||||
'@deepseek-ai/dsh-team#teams/view',
|
'@deepseek-ai/dsh-experimental-agent-team#agentTeams/view',
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||||
# after editing either side, bring the other along and re-record with:
|
# after editing either side, bring the other along and re-record with:
|
||||||
# pnpm run verify-translation-pairing --write packages/experimental/client-ui-agent-team/README.md
|
# pnpm run verify-translation-pairing --write packages/experimental/client-ui-agent-team/README.md
|
||||||
README.md: 7d26e38b7baca2234e1a0305aa2298b2718c0dc4
|
README.md: 8e4170c7025ed63e354013ec4f0be806da66c2cb
|
||||||
README.zh.md: 2d4ac6b09a8a130d16fa8d18f5d9d8591fe260fb
|
README.zh.md: 8a06d281400a23eea109769f634eaa23b943ebce
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
[English](README.md) | 中文
|
[English](README.md) | 中文
|
||||||
|
|
||||||
私有 Web Agent Teams 呈现包。它向会话页头提供一个包含当前 roster 与共享任务板的 action。Client plugin 挂载来自 [`@deepseek-ai/dsh-experimental-agent-team/remote`](../agent-team/README.md) 的生成式 `ctx.remote.agentTeams` contribution;它不扩展稳定 API Proxy,也不存储权威 Team 状态。
|
私有 Web Agent Teams 呈现包。它向会话页头提供一个包含当前 roster 与共享任务板的 action。Client plugin 挂载来自 [`@deepseek-ai/dsh-experimental-agent-team/remote`](../agent-team/README.zh.md) 的生成式 `ctx.remote.agentTeams` contribution;它不扩展稳定 API Proxy,也不存储权威 Team 状态。
|
||||||
|
|
||||||
打开 panel 会调用 `agentTeams/view`。Roster row 展示持久 name、运行时 status、model 与 diagnostics。选择健康 teammate 时,系统刷新既有直接 child catalog,并打开普通的 `{ parentSessionId, childSessionId, mode: 'continuable' }` address。History 与后续人类 prompt 继续使用稳定 addressed-subagent 会话路径;本包不会向该 address 添加 Team 专用字段。
|
打开 panel 会调用 `agentTeams/view`。Roster row 展示持久 name、运行时 status、model 与 diagnostics。选择健康 teammate 时,系统刷新既有直接 child catalog,并打开普通的 `{ parentSessionId, childSessionId, mode: 'continuable' }` address。History 与后续人类 prompt 继续使用稳定 addressed-subagent 会话路径;本包不会向该 address 添加 Team 专用字段。
|
||||||
|
|
||||||
任务板展示 task identity、owner、blocker、readiness、提示性 write scope 与重叠 warning。人类可以通过 `agentTeams/createTask` 与 `agentTeams/updateTask` 创建、编辑、分配或取消分配、完成、重开和删除任务。每次 update 都发送当前显示的 revision,create 与 update rejection 都保留为显式 business result。任一 operation 开始时都会让更早的 refresh 失效,成功后则重新读取完整 Team view,使所有 task 的派生字段保持最新。收到 `team-task-conflict` 结果后,UI 仅在重新读取成功后显示状态陈旧提示;如果重新读取失败,则保留该错误。Team service 将任务文本或 scope 编辑与 dependency 修改公开为两个独立 action,因此两者仍使用两个连续的 compare-and-set mutation。
|
任务板展示 task identity、owner、blocker、readiness、提示性 write scope 与重叠 warning。人类可以通过 `agentTeams/createTask` 与 `agentTeams/updateTask` 创建、编辑、分配或取消分配、完成、重开和删除任务。每次 update 都发送当前显示的 revision,create 与 update rejection 都保留为显式 business result。任一 operation 开始时都会让更早的 refresh 失效,成功后则重新读取完整 Team view,使所有 task 的派生字段保持最新。收到 `team-task-conflict` 结果后,UI 仅在重新读取成功后显示状态陈旧提示;如果重新读取失败,则保留该错误。Team service 将任务文本或 scope 编辑与 dependency 修改公开为两个独立 action,因此两者仍使用两个连续的 compare-and-set mutation。
|
||||||
|
|
||||||
Root export 在 Host 上不执行行为。Client export 负责 locale 与 slot 注册,Cordis 会随 plugin fiber dispose 两者。在稳定 Web bundle 与 Host 侧 Agent Teams profile 之后,通过 [`@deepseek-ai/dsh-experimental-agent-team-web-profile`](../agent-team-web-profile/README.md) 安装本包。
|
Root export 在 Host 上不执行行为。Client export 负责 locale 与 slot 注册,Cordis 会随 plugin fiber dispose 两者。在稳定 Web bundle 与 Host 侧 Agent Teams profile 之后,通过 [`@deepseek-ai/dsh-experimental-agent-team-web-profile`](../agent-team-web-profile/README.zh.md) 安装本包。
|
||||||
|
|
||||||
## 模型体验
|
## 模型体验
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@deepseek-ai/dsh-client-ui-agent-team",
|
"name": "@deepseek-ai/dsh-experimental-client-ui-agent-team",
|
||||||
"description": "Web Agent Teams roster, task board, and teammate navigation",
|
"description": "Web Agent Teams roster, task board, and teammate navigation",
|
||||||
"version": "0.1.0-rc.7",
|
"version": "0.1.1-rc.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -31,8 +31,8 @@
|
|||||||
"client": {
|
"client": {
|
||||||
"inject": [
|
"inject": [
|
||||||
"@deepseek-ai/dsh-api-remotes",
|
"@deepseek-ai/dsh-api-remotes",
|
||||||
|
"@deepseek-ai/dsh-api-session-controller",
|
||||||
"@deepseek-ai/dsh-client-locale",
|
"@deepseek-ai/dsh-client-locale",
|
||||||
"@deepseek-ai/dsh-client-runtime",
|
|
||||||
"@deepseek-ai/dsh-client-ui-conversation",
|
"@deepseek-ai/dsh-client-ui-conversation",
|
||||||
"@deepseek-ai/dsh-client-ui-primitives"
|
"@deepseek-ai/dsh-client-ui-primitives"
|
||||||
],
|
],
|
||||||
@@ -49,26 +49,32 @@
|
|||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@deepseek-ai/dsh-api-remotes": "workspace:^",
|
"@deepseek-ai/dsh-api-remotes": "workspace:^",
|
||||||
|
"@deepseek-ai/dsh-api-session-controller": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-locale": "workspace:^",
|
"@deepseek-ai/dsh-client-locale": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-runtime": "workspace:^",
|
|
||||||
"@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
|
||||||
|
"@deepseek-ai/dsh-client-ui-renderer": "workspace:^",
|
||||||
|
"@deepseek-ai/dsh-client-ui-session": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
|
||||||
|
"@deepseek-ai/dsh-experimental-agent-team": "workspace:^",
|
||||||
"@deepseek-ai/dsh-invariants": "workspace:^",
|
"@deepseek-ai/dsh-invariants": "workspace:^",
|
||||||
"@deepseek-ai/dsh-team": "workspace:^",
|
"@deepseek-ai/dsh-session": "workspace:^",
|
||||||
"@deepseek-ai/dsh-typert-protocol": "workspace:^",
|
"@deepseek-ai/dsh-typert-protocol": "workspace:^",
|
||||||
"@deepseek-ai/cordis": "workspace:^"
|
"@deepseek-ai/cordis": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@deepseek-ai/dsh-api-remotes": "workspace:^",
|
"@deepseek-ai/dsh-api-remotes": "workspace:^",
|
||||||
|
"@deepseek-ai/dsh-api-session-controller": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-locale": "workspace:^",
|
"@deepseek-ai/dsh-client-locale": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-runtime": "workspace:^",
|
|
||||||
"@deepseek-ai/dsh-client-test-runtime": "workspace:^",
|
"@deepseek-ai/dsh-client-test-runtime": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
|
||||||
|
"@deepseek-ai/dsh-client-ui-renderer": "workspace:^",
|
||||||
|
"@deepseek-ai/dsh-client-ui-session": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
|
||||||
|
"@deepseek-ai/dsh-experimental-agent-team": "workspace:^",
|
||||||
"@deepseek-ai/dsh-invariants": "workspace:^",
|
"@deepseek-ai/dsh-invariants": "workspace:^",
|
||||||
"@deepseek-ai/dsh-team": "workspace:^",
|
"@deepseek-ai/dsh-session": "workspace:^",
|
||||||
"@deepseek-ai/dsh-typert-protocol": "workspace:^",
|
"@deepseek-ai/dsh-typert-protocol": "workspace:^",
|
||||||
"@testing-library/react": "^16.1.0",
|
"@testing-library/react": "^16.1.0",
|
||||||
"@types/react": "~18.3.1",
|
"@types/react": "~18.3.1",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useCallback, useEffect, useRef, useState, type ChangeEvent } from 'react'
|
import { useCallback, useEffect, useRef, useState, type ChangeEvent } from 'react'
|
||||||
import type { SessionId } from '@deepseek-ai/dsh-client-runtime/client'
|
import type { SessionId } from '@deepseek-ai/dsh-session/types'
|
||||||
import type {
|
import type {
|
||||||
TeamMemberView as TeamRosterMember,
|
TeamMemberView as TeamRosterMember,
|
||||||
TeamTaskAction,
|
TeamTaskAction,
|
||||||
@@ -7,7 +7,7 @@ import type {
|
|||||||
TeamTaskMutationResult,
|
TeamTaskMutationResult,
|
||||||
TeamTaskView as TeamTask,
|
TeamTaskView as TeamTask,
|
||||||
TeamView,
|
TeamView,
|
||||||
} from '@deepseek-ai/dsh-team/client'
|
} from '@deepseek-ai/dsh-experimental-agent-team/client'
|
||||||
import type { RemoteFailure, RemoteResult } from '@deepseek-ai/dsh-typert-protocol'
|
import type { RemoteFailure, RemoteResult } from '@deepseek-ai/dsh-typert-protocol'
|
||||||
import {
|
import {
|
||||||
IconCheckOutline14, IconCloseOutline16, IconEditOutline16, IconPlusOutline16,
|
IconCheckOutline14, IconCloseOutline16, IconEditOutline16, IconPlusOutline16,
|
||||||
@@ -15,7 +15,7 @@ import {
|
|||||||
} from '@deepseek-ai/dsh-client-ui-primitives'
|
} from '@deepseek-ai/dsh-client-ui-primitives'
|
||||||
import type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'
|
import type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'
|
||||||
import type {} from '@deepseek-ai/dsh-client-ui-conversation/client'
|
import type {} from '@deepseek-ai/dsh-client-ui-conversation/client'
|
||||||
import type { TeamKey } from './locales.ts'
|
import { NS, type TeamKey } from './locales.ts'
|
||||||
import css from './TeamAction.module.css'
|
import css from './TeamAction.module.css'
|
||||||
|
|
||||||
/** Generated Remote result consumed directly by the Team UI. */
|
/** Generated Remote result consumed directly by the Team UI. */
|
||||||
@@ -48,7 +48,7 @@ export interface TeamActionInjected {
|
|||||||
|
|
||||||
/** Full props of the Team conversation-header action. */
|
/** Full props of the Team conversation-header action. */
|
||||||
export type TeamActionProps =
|
export type TeamActionProps =
|
||||||
PropsRuntime<'conversation.session.header.actions'> & TeamActionInjected & PropsLocale<'team'>
|
PropsRuntime<'conversation.session.header.actions'> & TeamActionInjected & PropsLocale<typeof NS>
|
||||||
|
|
||||||
interface Draft {
|
interface Draft {
|
||||||
subject: string
|
subject: string
|
||||||
@@ -81,6 +81,16 @@ function statusKey(status: TeamTask['status']): TeamKey {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function memberStatusKey(status: TeamRosterMember['status']): TeamKey {
|
||||||
|
switch (status) {
|
||||||
|
case 'running': return 'memberStatus.running'
|
||||||
|
case 'idle': return 'memberStatus.idle'
|
||||||
|
case 'inactive': return 'memberStatus.inactive'
|
||||||
|
case 'provisioning': return 'memberStatus.provisioning'
|
||||||
|
case 'failed': return 'memberStatus.failed'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Render the live Team roster and compare-and-set task board. */
|
/** Render the live Team roster and compare-and-set task board. */
|
||||||
export function TeamAction({
|
export function TeamAction({
|
||||||
sessionId, load, createTask, updateTask, openTeammate, t,
|
sessionId, load, createTask, updateTask, openTeammate, t,
|
||||||
@@ -278,7 +288,7 @@ export function TeamAction({
|
|||||||
<StateDot state={member.status === 'running' ? 'ongoing' : member.status === 'failed' ? 'error' : 'done'} />
|
<StateDot state={member.status === 'running' ? 'ongoing' : member.status === 'failed' ? 'error' : 'done'} />
|
||||||
<span className={css.memberText}>
|
<span className={css.memberText}>
|
||||||
<span>{member.name}</span>
|
<span>{member.name}</span>
|
||||||
<small>{member.status}{member.model === undefined ? '' : ` · ${t('model')}: ${member.model}`}</small>
|
<small>{t(memberStatusKey(member.status))}{member.model === undefined ? '' : ` · ${t('model')}: ${member.model}`}</small>
|
||||||
{member.diagnostics.map(diagnostic => <small key={diagnostic} className={css.diagnostic}>{diagnostic}</small>)}
|
{member.diagnostics.map(diagnostic => <small key={diagnostic} className={css.diagnostic}>{diagnostic}</small>)}
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/** Browser entry binding the generated Team Remote artifact to its Client UI. */
|
/** Browser entry binding the generated Team Remote artifact to its Client UI. */
|
||||||
|
|
||||||
import agentTeamsRemote from '@deepseek-ai/dsh-experimental-agent-team/remote'
|
import agentTeamsRemote from '@deepseek-ai/dsh-experimental-agent-team/remote'
|
||||||
import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'
|
import type { Context as ClientContext } from '@deepseek-ai/cordis'
|
||||||
import { mountAgentTeamUi } from './mount.ts'
|
import { mountAgentTeamUi } from './mount.ts'
|
||||||
|
|
||||||
export { inject } from './mount.ts'
|
export { inject } from './mount.ts'
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
/** Agent Teams Web dictionaries. */
|
/** Agent Teams Web dictionaries. */
|
||||||
|
|
||||||
|
/** Locale namespace owned by the Agent Teams Web UI. */
|
||||||
|
export const NS = 'agent-team'
|
||||||
|
|
||||||
/** Simplified Chinese dictionary and key source. */
|
/** Simplified Chinese dictionary and key source. */
|
||||||
export const zh = {
|
export const zh = {
|
||||||
trigger: 'Agent Team',
|
trigger: 'Agent Team',
|
||||||
@@ -29,6 +32,11 @@ export const zh = {
|
|||||||
ready: '可开始',
|
ready: '可开始',
|
||||||
blocked: '被依赖阻塞',
|
blocked: '被依赖阻塞',
|
||||||
conflict: '任务状态已变化,已重新加载;请检查后重试。',
|
conflict: '任务状态已变化,已重新加载;请检查后重试。',
|
||||||
|
'memberStatus.running': '运行中',
|
||||||
|
'memberStatus.idle': '空闲',
|
||||||
|
'memberStatus.inactive': '未运行',
|
||||||
|
'memberStatus.provisioning': '准备中',
|
||||||
|
'memberStatus.failed': '失败',
|
||||||
'status.pending': '待处理',
|
'status.pending': '待处理',
|
||||||
'status.in_progress': '进行中',
|
'status.in_progress': '进行中',
|
||||||
'status.completed': '已完成',
|
'status.completed': '已完成',
|
||||||
@@ -66,6 +74,11 @@ export const en = {
|
|||||||
ready: 'Ready',
|
ready: 'Ready',
|
||||||
blocked: 'Blocked by dependencies',
|
blocked: 'Blocked by dependencies',
|
||||||
conflict: 'Task state changed and was reloaded. Review it before retrying.',
|
conflict: 'Task state changed and was reloaded. Review it before retrying.',
|
||||||
|
'memberStatus.running': 'Running',
|
||||||
|
'memberStatus.idle': 'Idle',
|
||||||
|
'memberStatus.inactive': 'Inactive',
|
||||||
|
'memberStatus.provisioning': 'Provisioning',
|
||||||
|
'memberStatus.failed': 'Failed',
|
||||||
'status.pending': 'Pending',
|
'status.pending': 'Pending',
|
||||||
'status.in_progress': 'In progress',
|
'status.in_progress': 'In progress',
|
||||||
'status.completed': 'Completed',
|
'status.completed': 'Completed',
|
||||||
|
|||||||
@@ -5,20 +5,23 @@ import type {
|
|||||||
TeamView,
|
TeamView,
|
||||||
} from '@deepseek-ai/dsh-experimental-agent-team/client'
|
} from '@deepseek-ai/dsh-experimental-agent-team/client'
|
||||||
import type {} from '@deepseek-ai/dsh-experimental-agent-team/remote'
|
import type {} from '@deepseek-ai/dsh-experimental-agent-team/remote'
|
||||||
|
import type { Context as ClientContext } from '@deepseek-ai/cordis'
|
||||||
import type {} from '@deepseek-ai/dsh-api-remotes/client'
|
import type {} from '@deepseek-ai/dsh-api-remotes/client'
|
||||||
import type { ClientContext, SessionId } from '@deepseek-ai/dsh-client-runtime/client'
|
import type {} from '@deepseek-ai/dsh-api-session-controller/client'
|
||||||
|
import type { SessionId } from '@deepseek-ai/dsh-session/types'
|
||||||
import type {} from '@deepseek-ai/dsh-client-ui-conversation/client'
|
import type {} from '@deepseek-ai/dsh-client-ui-conversation/client'
|
||||||
import type {} from '@deepseek-ai/dsh-client-locale/client'
|
import type {} from '@deepseek-ai/dsh-client-locale/client'
|
||||||
|
import type {} from '@deepseek-ai/dsh-client-ui-renderer/client'
|
||||||
import type { TypertRemoteContribution } from '@deepseek-ai/dsh-typert-protocol'
|
import type { TypertRemoteContribution } from '@deepseek-ai/dsh-typert-protocol'
|
||||||
import {
|
import {
|
||||||
TeamAction, type TeamActionInjected, type TeamActionResult, type TeamTaskActionResult,
|
TeamAction, type TeamActionInjected, type TeamActionResult, type TeamTaskActionResult,
|
||||||
} from './TeamAction.tsx'
|
} from './TeamAction.tsx'
|
||||||
import { en, zh, type TeamKey } from './locales.ts'
|
import { en, NS, zh, type TeamKey } from './locales.ts'
|
||||||
|
|
||||||
declare module '@deepseek-ai/dsh-client-ui-slots' {
|
declare module '@deepseek-ai/dsh-client-ui-slots' {
|
||||||
interface LocaleNamespaceMap {
|
interface LocaleNamespaceMap {
|
||||||
/** Agent Teams roster and task-board copy. */
|
/** Agent Teams roster and task-board copy. */
|
||||||
team: TeamKey
|
'agent-team': TeamKey
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,7 +29,7 @@ declare module '@deepseek-ai/dsh-client-ui-slots' {
|
|||||||
export const inject = ['sessions', 'remote', 'slots', 'locale']
|
export const inject = ['sessions', 'remote', 'slots', 'locale']
|
||||||
|
|
||||||
function registerUi(ctx: ClientContext): void {
|
function registerUi(ctx: ClientContext): void {
|
||||||
ctx.effect(() => ctx.locale.register('team', { zh, en }), 'client-ui-agent-team: dictionaries')
|
ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'client-ui-agent-team: dictionaries')
|
||||||
const sessions = ctx.sessions
|
const sessions = ctx.sessions
|
||||||
const leadSessionId = (sessionId: SessionId): SessionId => {
|
const leadSessionId = (sessionId: SessionId): SessionId => {
|
||||||
const address = sessions.binding(sessionId)?.session.getSnapshot().subagent?.address
|
const address = sessions.binding(sessionId)?.session.getSnapshot().subagent?.address
|
||||||
@@ -66,7 +69,7 @@ function registerUi(ctx: ClientContext): void {
|
|||||||
name: 'conversation.session.header.actions',
|
name: 'conversation.session.header.actions',
|
||||||
id: 'agent-team',
|
id: 'agent-team',
|
||||||
order: 20,
|
order: 20,
|
||||||
locale: 'team',
|
locale: NS,
|
||||||
inject: () => actions,
|
inject: () => actions,
|
||||||
}, TeamAction),
|
}, TeamAction),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import type { Context } from '@deepseek-ai/cordis'
|
import type { Context } from '@deepseek-ai/cordis'
|
||||||
import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants'
|
import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants'
|
||||||
|
|
||||||
const PACKAGE_NAME = '@deepseek-ai/dsh-client-ui-agent-team'
|
const PACKAGE_NAME = '@deepseek-ai/dsh-experimental-client-ui-agent-team'
|
||||||
|
|
||||||
/** Cordis companion plugin name. */
|
/** Cordis companion plugin name. */
|
||||||
export const name = 'client-ui-agent-team-invariant'
|
export const name = 'client-ui-agent-team-invariant'
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { Context, Service } from '@deepseek-ai/cordis'
|
import { Context, Service } from '@deepseek-ai/cordis'
|
||||||
import { describe, expect, it, vi } from 'vitest'
|
import { describe, expect, it, vi } from 'vitest'
|
||||||
import type { SessionId } from '@deepseek-ai/dsh-client-runtime/client'
|
import type { SessionId } from '@deepseek-ai/dsh-session/types'
|
||||||
import { LocaleRuntime } from '@deepseek-ai/dsh-client-locale/client'
|
import { LocaleRuntime } from '@deepseek-ai/dsh-client-locale/client'
|
||||||
import { SlotRegistry } from '@deepseek-ai/dsh-client-runtime/client'
|
import { SlotRegistry } from '@deepseek-ai/dsh-client-ui-renderer/client'
|
||||||
import type { TeamMemberView as TeamRosterMember, TeamTaskId } from '@deepseek-ai/dsh-experimental-agent-team/client'
|
import type { TeamMemberView as TeamRosterMember, TeamTaskId } from '@deepseek-ai/dsh-experimental-agent-team/client'
|
||||||
import type {} from '@deepseek-ai/dsh-experimental-agent-team/remote'
|
import type {} from '@deepseek-ai/dsh-experimental-agent-team/remote'
|
||||||
import type { TypertRemoteContribution } from '@deepseek-ai/dsh-typert-protocol'
|
import type { TypertRemoteContribution } from '@deepseek-ai/dsh-typert-protocol'
|
||||||
@@ -60,14 +60,14 @@ async function bench(options: {
|
|||||||
}
|
}
|
||||||
ctx.provide('remote.agentTeams', {
|
ctx.provide('remote.agentTeams', {
|
||||||
view: (...args: unknown[]) => {
|
view: (...args: unknown[]) => {
|
||||||
calls.push({ method: 'teams/view', args })
|
calls.push({ method: 'agentTeams/view', args })
|
||||||
return Promise.resolve(options.remoteFailure === 'view'
|
return Promise.resolve(options.remoteFailure === 'view'
|
||||||
? failure
|
? failure
|
||||||
: { ok: true as const, value: view })
|
: { ok: true as const, value: view })
|
||||||
},
|
},
|
||||||
createTask: answer('teams/createTask', task),
|
createTask: answer('agentTeams/createTask', task),
|
||||||
updateTask: (...args: unknown[]) => {
|
updateTask: (...args: unknown[]) => {
|
||||||
calls.push({ method: 'teams/updateTask', args })
|
calls.push({ method: 'agentTeams/updateTask', args })
|
||||||
if (options.remoteFailure === 'update') return Promise.resolve(failure)
|
if (options.remoteFailure === 'update') return Promise.resolve(failure)
|
||||||
return Promise.resolve(options.conflict
|
return Promise.resolve(options.conflict
|
||||||
? {
|
? {
|
||||||
@@ -146,7 +146,7 @@ describe('ui-team browser plugin', () => {
|
|||||||
expect(inject).toEqual(['sessions', 'remote', 'slots', 'locale'])
|
expect(inject).toEqual(['sessions', 'remote', 'slots', 'locale'])
|
||||||
expect(b.entry()).toMatchObject({
|
expect(b.entry()).toMatchObject({
|
||||||
options: { id: 'agent-team', order: 20 },
|
options: { id: 'agent-team', order: 20 },
|
||||||
locale: 'team',
|
locale: 'agent-team',
|
||||||
})
|
})
|
||||||
expect(b.remote.mount).toHaveBeenCalledOnce()
|
expect(b.remote.mount).toHaveBeenCalledOnce()
|
||||||
expect(b.remote.mount).toHaveBeenCalledWith(REMOTE)
|
expect(b.remote.mount).toHaveBeenCalledWith(REMOTE)
|
||||||
@@ -162,7 +162,7 @@ describe('ui-team browser plugin', () => {
|
|||||||
taskId: TASK_ID, expectedRevision: 2, action: 'reassign', owner: 'worker',
|
taskId: TASK_ID, expectedRevision: 2, action: 'reassign', owner: 'worker',
|
||||||
})).ok).toBe(true)
|
})).ok).toBe(true)
|
||||||
expect(b.calls.map(call => call.method)).toEqual([
|
expect(b.calls.map(call => call.method)).toEqual([
|
||||||
'teams/view', 'teams/createTask', 'teams/updateTask', 'teams/updateTask',
|
'agentTeams/view', 'agentTeams/createTask', 'agentTeams/updateTask', 'agentTeams/updateTask',
|
||||||
])
|
])
|
||||||
expect(b.calls.at(-1)?.args[1]).toMatchObject({ owner: 'worker' })
|
expect(b.calls.at(-1)?.args[1]).toMatchObject({ owner: 'worker' })
|
||||||
|
|
||||||
@@ -251,7 +251,7 @@ describe('ui-team browser plugin', () => {
|
|||||||
status: 'inactive',
|
status: 'inactive',
|
||||||
diagnostics: [],
|
diagnostics: [],
|
||||||
})
|
})
|
||||||
expect(b.calls[0]).toEqual({ method: 'teams/view', args: [SESSION] })
|
expect(b.calls[0]).toEqual({ method: 'agentTeams/view', args: [SESSION] })
|
||||||
expect(b.navigation).toEqual([
|
expect(b.navigation).toEqual([
|
||||||
['refresh', SESSION],
|
['refresh', SESSION],
|
||||||
['open', {
|
['open', {
|
||||||
|
|||||||
@@ -2,8 +2,10 @@
|
|||||||
|
|
||||||
import { afterEach, describe, expect, it, vi } from 'vitest'
|
import { afterEach, describe, expect, it, vi } from 'vitest'
|
||||||
import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react'
|
import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react'
|
||||||
import type { SessionId } from '@deepseek-ai/dsh-client-runtime/client'
|
import type { SessionId } from '@deepseek-ai/dsh-session/types'
|
||||||
import type { TeamTaskId, TeamTaskView as TeamTask, TeamView } from '@deepseek-ai/dsh-team/client'
|
import type {
|
||||||
|
TeamTaskId, TeamTaskView as TeamTask, TeamView,
|
||||||
|
} from '@deepseek-ai/dsh-experimental-agent-team/client'
|
||||||
import { makeTranslate } from '@deepseek-ai/dsh-client-test-runtime'
|
import { makeTranslate } from '@deepseek-ai/dsh-client-test-runtime'
|
||||||
import { zh as commonZh } from '@deepseek-ai/dsh-client-locale/src/locales/zh.ts'
|
import { zh as commonZh } from '@deepseek-ai/dsh-client-locale/src/locales/zh.ts'
|
||||||
import {
|
import {
|
||||||
@@ -501,7 +503,7 @@ describe('TeamAction', () => {
|
|||||||
expect(screen.getByRole<HTMLButtonElement>('button', { name: /failed-worker/u }).disabled).toBe(true)
|
expect(screen.getByRole<HTMLButtonElement>('button', { name: /failed-worker/u }).disabled).toBe(true)
|
||||||
expect(screen.getByRole<HTMLButtonElement>('button', { name: /provisioning-worker/u }).disabled).toBe(true)
|
expect(screen.getByRole<HTMLButtonElement>('button', { name: /provisioning-worker/u }).disabled).toBe(true)
|
||||||
|
|
||||||
fireEvent.click(screen.getByRole('button', { name: /^workerrunning/u }))
|
fireEvent.click(screen.getByRole('button', { name: /^worker运行中/u }))
|
||||||
expect(await screen.findByText('Error: navigation failed')).toBeTruthy()
|
expect(await screen.findByText('Error: navigation failed')).toBeTruthy()
|
||||||
fireEvent.click(screen.getByRole('button', { name: zh.refresh }))
|
fireEvent.click(screen.getByRole('button', { name: zh.refresh }))
|
||||||
await waitFor(() => { expect(load).toHaveBeenCalledTimes(2) })
|
await waitFor(() => { expect(load).toHaveBeenCalledTimes(2) })
|
||||||
|
|||||||
@@ -7,13 +7,16 @@
|
|||||||
"include": ["src"],
|
"include": ["src"],
|
||||||
"references": [
|
"references": [
|
||||||
{ "path": "../../../vendor/cordis" },
|
{ "path": "../../../vendor/cordis" },
|
||||||
{ "path": "../team" },
|
{ "path": "../agent-team" },
|
||||||
{ "path": "../../api/remotes/tsconfig.client.json" },
|
{ "path": "../../api/remotes/tsconfig.client.json" },
|
||||||
|
{ "path": "../../api/session-controller/tsconfig.client.json" },
|
||||||
{ "path": "../../client/locale" },
|
{ "path": "../../client/locale" },
|
||||||
{ "path": "../../client/runtime" },
|
|
||||||
{ "path": "../../client/ui-conversation" },
|
{ "path": "../../client/ui-conversation" },
|
||||||
{ "path": "../../client/ui-primitives" },
|
{ "path": "../../client/ui-primitives" },
|
||||||
|
{ "path": "../../client/ui-renderer" },
|
||||||
|
{ "path": "../../client/ui-session" },
|
||||||
{ "path": "../../client/ui-slots" },
|
{ "path": "../../client/ui-slots" },
|
||||||
|
{ "path": "../../core/session" },
|
||||||
{ "path": "../../typert/protocol" },
|
{ "path": "../../typert/protocol" },
|
||||||
{ "path": "../../runtime-diagnostics/invariants" }
|
{ "path": "../../runtime-diagnostics/invariants" }
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
import { clientBundle } from '../../client/tsdown.client.ts'
|
import { clientBundle } from '../../client/tsdown.client.ts'
|
||||||
|
|
||||||
export default clientBundle('@deepseek-ai/dsh-client-ui-agent-team', ['lib/types/index.js', 'lib/types/invariant.js'])
|
export default clientBundle('@deepseek-ai/dsh-experimental-client-ui-agent-team', ['lib/types/index.js', 'lib/types/invariant.js'])
|
||||||
|
|||||||
@@ -1144,6 +1144,7 @@ export const CLIENT_SLOT_API: readonly ClientSlotEntry[] = [
|
|||||||
occupants: [
|
occupants: [
|
||||||
'client-ui-agent-preset AgentPresetLabel id \'agent-preset\'',
|
'client-ui-agent-preset AgentPresetLabel id \'agent-preset\'',
|
||||||
'client-ui-jobs JobListAction id \'job-list\'',
|
'client-ui-jobs JobListAction id \'job-list\'',
|
||||||
|
'experimental-client-ui-agent-team TeamAction id \'agent-team\'',
|
||||||
],
|
],
|
||||||
replaceRisk: 'none',
|
replaceRisk: 'none',
|
||||||
example: 'return {\n inject: [\'slots\'],\n apply(ctx) {\n ctx.slots.inject(\'conversation.session.header.actions\', () => ctx.slots.register(\n { name: \'conversation.session.header.actions\', id: \'my-entry\', order: 100, label: \'My entry\' },\n () => React.createElement(\'div\', null, \'hello\'),\n ))\n },\n}',
|
example: 'return {\n inject: [\'slots\'],\n apply(ctx) {\n ctx.slots.inject(\'conversation.session.header.actions\', () => ctx.slots.register(\n { name: \'conversation.session.header.actions\', id: \'my-entry\', order: 100, label: \'My entry\' },\n () => React.createElement(\'div\', null, \'hello\'),\n ))\n },\n}',
|
||||||
|
|||||||
@@ -375,6 +375,24 @@ export const SERVICE_API: readonly ServiceApiEntry[] = [
|
|||||||
parameters: [{ name: 'agent', description: 'candidate exact live Agent.' }],
|
parameters: [{ name: 'agent', description: 'candidate exact live Agent.' }],
|
||||||
returns: 'Team membership, or undefined for non-Team subagents and stale identities.',
|
returns: 'Team membership, or undefined for non-Team subagents and stale identities.',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
signature: '@Remote(\'view\') remoteView(agent: Agent): TeamView',
|
||||||
|
description: 'Read the current roster and non-deleted task board through the generated Remote API.',
|
||||||
|
parameters: [{ name: 'agent', description: 'exact live Team member used as the authority credential.' }],
|
||||||
|
returns: 'detached current roster and task views.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
signature: '@Remote(\'createTask\') remoteCreateTask(agent: Agent, request: CreateTeamTaskRequest): Promise<TeamTaskMutationResult>',
|
||||||
|
description: 'Create one shared task through the generated Remote API.',
|
||||||
|
parameters: [{ name: 'agent', description: 'exact live Team member creating the task.' }, { name: 'request', description: 'task text, blockers, and advisory write scopes.' }],
|
||||||
|
returns: 'the revision-one task or a typed Team rejection.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
signature: '@Remote(\'updateTask\') remoteUpdateTask(agent: Agent, request: UpdateTeamTaskRequest): Promise<TeamTaskMutationResult>',
|
||||||
|
description: 'Apply one task mutation and preserve Team rejections as business results.',
|
||||||
|
parameters: [{ name: 'agent', description: 'exact live Team member authorizing the mutation.' }, { name: 'request', description: 'task identity, expected revision, action, and action fields.' }],
|
||||||
|
returns: 'the committed task or a typed Team rejection.',
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -5171,6 +5189,10 @@ export const TYPE_API: readonly TypeApiEntry[] = [
|
|||||||
name: 'TeamTaskId',
|
name: 'TeamTaskId',
|
||||||
declaration: 'export type TeamTaskId = Branded<\'TeamTaskId\'>;',
|
declaration: 'export type TeamTaskId = Branded<\'TeamTaskId\'>;',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'TeamTaskMutationResult',
|
||||||
|
declaration: 'export type TeamTaskMutationResult = {\n readonly ok: true;\n readonly value: TeamTaskView;\n} | {\n readonly ok: false;\n readonly error: {\n readonly code: \'team-task-conflict\' | \'team-rejected\';\n readonly message: string;\n };\n};',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'TeamTaskStatus',
|
name: 'TeamTaskStatus',
|
||||||
declaration: 'export type TeamTaskStatus = \'pending\' | \'in_progress\' | \'completed\' | \'deleted\';',
|
declaration: 'export type TeamTaskStatus = \'pending\' | \'in_progress\' | \'completed\' | \'deleted\';',
|
||||||
@@ -5179,6 +5201,10 @@ export const TYPE_API: readonly TypeApiEntry[] = [
|
|||||||
name: 'TeamTaskView',
|
name: 'TeamTaskView',
|
||||||
declaration: 'export interface TeamTaskView {\n readonly id: TeamTaskId;\n readonly revision: number;\n readonly subject: string;\n readonly description: string;\n readonly status: TeamTaskStatus;\n readonly blockedBy: TeamTaskId[];\n readonly writeScopes: string[];\n readonly ownerName?: string;\n readonly ready: boolean;\n readonly writeScopeWarnings: string[];\n}',
|
declaration: 'export interface TeamTaskView {\n readonly id: TeamTaskId;\n readonly revision: number;\n readonly subject: string;\n readonly description: string;\n readonly status: TeamTaskStatus;\n readonly blockedBy: TeamTaskId[];\n readonly writeScopes: string[];\n readonly ownerName?: string;\n readonly ready: boolean;\n readonly writeScopeWarnings: string[];\n}',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'TeamView',
|
||||||
|
declaration: 'export interface TeamView {\n readonly members: TeamMemberView[];\n readonly tasks: TeamTaskView[];\n}',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'TeamWaitResult',
|
name: 'TeamWaitResult',
|
||||||
declaration: 'export interface TeamWaitResult {\n readonly timedOut: boolean;\n}',
|
declaration: 'export interface TeamWaitResult {\n readonly timedOut: boolean;\n}',
|
||||||
|
|||||||
Generated
+80
@@ -4591,6 +4591,9 @@ importers:
|
|||||||
'@deepseek-ai/dsh-subagent-spawn-in-process':
|
'@deepseek-ai/dsh-subagent-spawn-in-process':
|
||||||
specifier: workspace:^
|
specifier: workspace:^
|
||||||
version: link:../../subagent/subagent-spawn-in-process
|
version: link:../../subagent/subagent-spawn-in-process
|
||||||
|
'@deepseek-ai/dsh-typert-protocol':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../typert/protocol
|
||||||
|
|
||||||
packages/experimental/agent-team-profile:
|
packages/experimental/agent-team-profile:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -4614,6 +4617,83 @@ importers:
|
|||||||
specifier: ^4.2.0
|
specifier: ^4.2.0
|
||||||
version: 4.3.1
|
version: 4.3.1
|
||||||
|
|
||||||
|
packages/experimental/agent-team-web-profile:
|
||||||
|
dependencies:
|
||||||
|
'@deepseek-ai/dsh-experimental-client-ui-agent-team':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../client-ui-agent-team
|
||||||
|
devDependencies:
|
||||||
|
'@deepseek-ai/cordis':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../../vendor/cordis
|
||||||
|
'@deepseek-ai/cordis-plugin-include':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../../vendor/include
|
||||||
|
'@deepseek-ai/dsh-invariants':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../runtime-diagnostics/invariants
|
||||||
|
js-yaml:
|
||||||
|
specifier: ^4.2.0
|
||||||
|
version: 4.3.1
|
||||||
|
|
||||||
|
packages/experimental/client-ui-agent-team:
|
||||||
|
dependencies:
|
||||||
|
react:
|
||||||
|
specifier: ^18.2.0
|
||||||
|
version: 18.3.1
|
||||||
|
devDependencies:
|
||||||
|
'@deepseek-ai/cordis':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../../vendor/cordis
|
||||||
|
'@deepseek-ai/dsh-api-remotes':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../api/remotes
|
||||||
|
'@deepseek-ai/dsh-api-session-controller':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../api/session-controller
|
||||||
|
'@deepseek-ai/dsh-client-locale':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../client/locale
|
||||||
|
'@deepseek-ai/dsh-client-test-runtime':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../test-support/client-runtime
|
||||||
|
'@deepseek-ai/dsh-client-ui-conversation':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../client/ui-conversation
|
||||||
|
'@deepseek-ai/dsh-client-ui-primitives':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../client/ui-primitives
|
||||||
|
'@deepseek-ai/dsh-client-ui-renderer':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../client/ui-renderer
|
||||||
|
'@deepseek-ai/dsh-client-ui-session':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../client/ui-session
|
||||||
|
'@deepseek-ai/dsh-client-ui-slots':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../client/ui-slots
|
||||||
|
'@deepseek-ai/dsh-experimental-agent-team':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../agent-team
|
||||||
|
'@deepseek-ai/dsh-invariants':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../runtime-diagnostics/invariants
|
||||||
|
'@deepseek-ai/dsh-session':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../core/session
|
||||||
|
'@deepseek-ai/dsh-typert-protocol':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../../typert/protocol
|
||||||
|
'@testing-library/react':
|
||||||
|
specifier: ^16.1.0
|
||||||
|
version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
|
'@types/react':
|
||||||
|
specifier: ~18.3.1
|
||||||
|
version: 18.3.31
|
||||||
|
react-dom:
|
||||||
|
specifier: ^18.2.0
|
||||||
|
version: 18.3.1(react@18.3.1)
|
||||||
|
|
||||||
packages/experimental/tool-agent-team:
|
packages/experimental/tool-agent-team:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@deepseek-ai/schemastery':
|
'@deepseek-ai/schemastery':
|
||||||
|
|||||||
@@ -525,7 +525,7 @@ const SERVICE_ROLES: ServiceRole[] = [
|
|||||||
pkg: 'experimental-agent-team',
|
pkg: 'experimental-agent-team',
|
||||||
title: 'Agent Teams coordination domain',
|
title: 'Agent Teams coordination domain',
|
||||||
mode: 'core',
|
mode: 'core',
|
||||||
consumers: ['tool-agent-team', 'client-ui-agent-team'],
|
consumers: ['experimental-tool-agent-team', 'experimental-client-ui-agent-team'],
|
||||||
note: 'Owns the implicit-root roster, durable peer mailbox, shared task DAG, continuable-child lifecycle, and generated Team Remote methods; tool-agent-team contributes model controls and client-ui-agent-team mounts the browser contribution.',
|
note: 'Owns the implicit-root roster, durable peer mailbox, shared task DAG, continuable-child lifecycle, and generated Team Remote methods; tool-agent-team contributes model controls and client-ui-agent-team mounts the browser contribution.',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -445,7 +445,7 @@ describe('Node 24 lane ownership', () => {
|
|||||||
expect.arrayContaining([
|
expect.arrayContaining([
|
||||||
'packages/subagent/subagent-codex/tests/loader-composition.e2e.ts',
|
'packages/subagent/subagent-codex/tests/loader-composition.e2e.ts',
|
||||||
'packages/subagent/subagent-claude-code/tests/loader-composition.e2e.ts',
|
'packages/subagent/subagent-claude-code/tests/loader-composition.e2e.ts',
|
||||||
'packages/experimental/team/tests/built-lib.e2e.ts',
|
'packages/experimental/agent-team/tests/built-lib.e2e.ts',
|
||||||
]),
|
]),
|
||||||
)
|
)
|
||||||
expect(subject.find(item => item.id === 'web-snapshot')).toMatchObject({
|
expect(subject.find(item => item.id === 'web-snapshot')).toMatchObject({
|
||||||
|
|||||||
@@ -750,7 +750,7 @@ function builtBinSmokeGate(needs: string[] = ['build']): Gate {
|
|||||||
'packages/subagent/subagent-codex/tests/loader-composition.e2e.ts',
|
'packages/subagent/subagent-codex/tests/loader-composition.e2e.ts',
|
||||||
'packages/subagent/subagent-claude-code/tests/loader-composition.e2e.ts',
|
'packages/subagent/subagent-claude-code/tests/loader-composition.e2e.ts',
|
||||||
'packages/api/remotes/tests/built-lib.e2e.ts',
|
'packages/api/remotes/tests/built-lib.e2e.ts',
|
||||||
'packages/experimental/team/tests/built-lib.e2e.ts',
|
'packages/experimental/agent-team/tests/built-lib.e2e.ts',
|
||||||
// Built execution consumers: the only automated proof that package-name
|
// Built execution consumers: the only automated proof that package-name
|
||||||
// imports reach their lib/ entrypoints under plain Node. The e2e lane runs
|
// imports reach their lib/ entrypoints under plain Node. The e2e lane runs
|
||||||
// unbuilt, so these files self-skip there.
|
// unbuilt, so these files self-skip there.
|
||||||
|
|||||||
+1
-1
@@ -245,7 +245,7 @@
|
|||||||
"@deepseek-ai/dsh-client-ui-permission-presets": ["./packages/client/ui-permission-presets/src"],
|
"@deepseek-ai/dsh-client-ui-permission-presets": ["./packages/client/ui-permission-presets/src"],
|
||||||
"@deepseek-ai/dsh-client-ui-skill": ["./packages/client/ui-skill/src"],
|
"@deepseek-ai/dsh-client-ui-skill": ["./packages/client/ui-skill/src"],
|
||||||
"@deepseek-ai/dsh-client-ui-subagent": ["./packages/client/ui-subagent/src"],
|
"@deepseek-ai/dsh-client-ui-subagent": ["./packages/client/ui-subagent/src"],
|
||||||
"@deepseek-ai/dsh-client-ui-agent-team": ["./packages/experimental/client-ui-agent-team/src"],
|
"@deepseek-ai/dsh-experimental-client-ui-agent-team": ["./packages/experimental/client-ui-agent-team/src"],
|
||||||
"@deepseek-ai/dsh-client-ui-settings-plugins": ["./packages/client/ui-settings-plugins/src"],
|
"@deepseek-ai/dsh-client-ui-settings-plugins": ["./packages/client/ui-settings-plugins/src"],
|
||||||
"@deepseek-ai/dsh-client-ui-jobs": ["./packages/client/ui-jobs/src"],
|
"@deepseek-ai/dsh-client-ui-jobs": ["./packages/client/ui-jobs/src"],
|
||||||
"@deepseek-ai/dsh-client-ui-plan": ["./packages/client/ui-plan/src"],
|
"@deepseek-ai/dsh-client-ui-plan": ["./packages/client/ui-plan/src"],
|
||||||
|
|||||||
Reference in New Issue
Block a user