dsh-plugin-subagent-director 0.4.0 → 0.5.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +73 -0
- package/README.md +8 -7
- package/lib/bridge-contract.d.ts +20 -0
- package/lib/bridge-contract.d.ts.map +1 -1
- package/lib/bridge-contract.js +8 -0
- package/lib/bridge-contract.js.map +1 -1
- package/lib/client/RoleCard.d.ts +4 -4
- package/lib/client/RoleCard.d.ts.map +1 -1
- package/lib/client/RoleCard.js +9 -13
- package/lib/client/RoleCard.js.map +1 -1
- package/lib/client/SubagentCloseAction.d.ts +2 -2
- package/lib/client/SubagentCloseAction.js +2 -2
- package/lib/client/SubagentCloseAction.js.map +1 -1
- package/lib/client/SubagentModelDock.d.ts +18 -11
- package/lib/client/SubagentModelDock.d.ts.map +1 -1
- package/lib/client/SubagentModelDock.js +14 -7
- package/lib/client/SubagentModelDock.js.map +1 -1
- package/lib/client/SubagentOptionsSection.d.ts +1 -3
- package/lib/client/SubagentOptionsSection.d.ts.map +1 -1
- package/lib/client/SubagentOptionsSection.js +11 -17
- package/lib/client/SubagentOptionsSection.js.map +1 -1
- package/lib/client/allowed-routes.d.ts +34 -0
- package/lib/client/allowed-routes.d.ts.map +1 -0
- package/lib/client/allowed-routes.js +47 -0
- package/lib/client/allowed-routes.js.map +1 -0
- package/lib/client/index.d.ts +1 -24
- package/lib/client/index.d.ts.map +1 -1
- package/lib/client/index.js +196 -92
- package/lib/client/index.js.map +1 -1
- package/lib/client/locales.d.ts +1 -1
- package/lib/client/locales.d.ts.map +1 -1
- package/lib/client/locales.js +2 -0
- package/lib/client/locales.js.map +1 -1
- package/lib/client/store.d.ts +25 -19
- package/lib/client/store.d.ts.map +1 -1
- package/lib/client/store.js +15 -17
- package/lib/client/store.js.map +1 -1
- package/lib/client/subagent-model.d.ts +20 -10
- package/lib/client/subagent-model.d.ts.map +1 -1
- package/lib/client/subagent-model.js +13 -6
- package/lib/client/subagent-model.js.map +1 -1
- package/lib/close-subagent.d.ts +72 -0
- package/lib/close-subagent.d.ts.map +1 -0
- package/lib/close-subagent.js +74 -0
- package/lib/close-subagent.js.map +1 -0
- package/lib/config.d.ts +2 -13
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +0 -1
- package/lib/config.js.map +1 -1
- package/lib/delegation-tool.d.ts +36 -8
- package/lib/delegation-tool.d.ts.map +1 -1
- package/lib/delegation-tool.js +49 -6
- package/lib/delegation-tool.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +0 -8
- package/lib/index.js.map +1 -1
- package/lib/remote.d.ts +13 -1
- package/lib/remote.d.ts.map +1 -1
- package/lib/remote.js +47 -6
- package/lib/remote.js.map +1 -1
- package/lib/route-resolver.d.ts +44 -12
- package/lib/route-resolver.d.ts.map +1 -1
- package/lib/route-resolver.js +64 -4
- package/lib/route-resolver.js.map +1 -1
- package/lib/settings.d.ts +18 -10
- package/lib/settings.d.ts.map +1 -1
- package/lib/settings.js +18 -10
- package/lib/settings.js.map +1 -1
- package/package.json +55 -37
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,79 @@
|
|
|
2
2
|
|
|
3
3
|
本项目的所有显著变更都会记录在此文件中。格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循 [SemVer](https://semver.org/lang/zh-CN/)。
|
|
4
4
|
|
|
5
|
+
## [Unreleased]
|
|
6
|
+
|
|
7
|
+
### 修复
|
|
8
|
+
|
|
9
|
+
- **客户端半 alpha.4/alpha.5 兼容性修复(beta.1)**:移除全部 7 处对 rc 时代
|
|
10
|
+
`@deepseek-ai/dsh-client-runtime/client` 的引用(该包 npm 最新仅 0.1.1-rc.2,
|
|
11
|
+
alpha.4/alpha.5 宿主均不携带,客户端 bundle 的运行时 `require` 在浏览器加载即
|
|
12
|
+
失败,设置页/模型读数/关闭按钮整体不可用):
|
|
13
|
+
- `createSnapshotStore`/`SnapshotStore` 改从 `@deepseek-ai/dsh-client-store`
|
|
14
|
+
导入(alpha 运行时,宿主 web bundle 虚拟模块);
|
|
15
|
+
- `ClientContext` 改为 cordis `Context`(官方 alpha 客户端模式),`ctx.slots` /
|
|
16
|
+
`ctx.remote` / `ctx.uiConversation` 等 Context 增强经 `dsh-client-ui-renderer` /
|
|
17
|
+
`dsh-api-remotes` / `dsh-client-ui-conversation` 的类型导入引入;
|
|
18
|
+
- 会话类型改从 alpha 包导入:`SessionSnapshot`(`dsh-api-session-controller`)、
|
|
19
|
+
`ConversationNode`/`AssistantMessageNode`/`AssistantProvenanceView`
|
|
20
|
+
(`dsh-client-ui-conversation`)、`ChatSnapshot`(`dsh-client-ui-chat`)、
|
|
21
|
+
`SessionListState`(`dsh-api-session-controller`);
|
|
22
|
+
- **composer.dock 读数适配 alpha.4 会话架构**:dock 槽位不再经 owner props 提供
|
|
23
|
+
session(渲染时传空 `{}`),改为消费框架标准会话套件(`useSession`/`sessionId`),
|
|
24
|
+
转录节点改从当前会话 chat 视图快照的 `legacy.nodes` 读取(`uiConversation`
|
|
25
|
+
绑定 → `chat` target,惰性解析,设置页不依赖会话 UI);RPC 兜底查询保留;
|
|
26
|
+
- 移除过时的 `conversation.composer.dock` / `conversation.session.header.actions`
|
|
27
|
+
SlotMap 增强(alpha.4 由 ui-conversation 声明,重复声明会类型冲突);
|
|
28
|
+
- `package.json` peer/dev 依赖移除 `dsh-client-runtime`,新增
|
|
29
|
+
`dsh-client-store`、`dsh-client-ui-conversation`、`dsh-client-ui-chat`、
|
|
30
|
+
`dsh-api-session-controller`、`dsh-client-ui-session`、`dsh-client-ui-renderer`、
|
|
31
|
+
`dsh-api-remotes`(均 `^0.1.2-alpha.4`,同时覆盖 alpha.4/alpha.5 宿主)。
|
|
32
|
+
|
|
33
|
+
### 测试
|
|
34
|
+
|
|
35
|
+
- 新增 `client-compat.test.ts` 兼容性守卫:扫描 `src/client` 与 `package.json`,
|
|
36
|
+
任何 `dsh-client-runtime` 残留引用即失败(本次 bug 的回归测试);
|
|
37
|
+
- `subagent-model.test.ts` 更新为 alpha.4 形状(`SessionSnapshot.subagent` 地址、
|
|
38
|
+
chat 视图 legacy 节点切片、`SubagentAddress` 的 continuable/one-shot 判别);
|
|
39
|
+
- 新增 `client-apply-probe.test.ts` 真实 cordis 探针:客户端半在 alpha.4 形状
|
|
40
|
+
服务(slots/locale/remote/connection)上挂载,设置页/dock/关闭按钮均注册,
|
|
41
|
+
dock 注入面携带 `useChatSnapshot`,且设置页不依赖 `uiConversation` 存在。
|
|
42
|
+
|
|
43
|
+
### 变更
|
|
44
|
+
|
|
45
|
+
- **alpha.4 兼容性移植(Host 半)**:`dsh-settings` 服务 API 升级——移除的
|
|
46
|
+
`settingsNamespace()` / `installSettingsSection()` 改为普通 kebab-case 命名空间
|
|
47
|
+
字面量 + `ctx.settings.installSection(owner, ns, schema, entry, hooks)`(与官方
|
|
48
|
+
`subagent-model-selection` 消费方同款模式);`JsonValue` 改从
|
|
49
|
+
`@deepseek-ai/dsh-util-values` 导入(`dsh-tools` 不再导出);`AgentOptions` 现携带
|
|
50
|
+
`reasoningEffort?: ReasoningEffortId`,`reasoningEffort` 由「仅告知」改为正式注入
|
|
51
|
+
`agentOptions`(可单独提供,路由变更时清除继承的 route 专属 effort);
|
|
52
|
+
- **移除 `applyDefaultRoute` 默认路由补丁缝**(避免与官方 dsh-tool-subagent 双重写
|
|
53
|
+
模型路由):删除 `src/default-route.ts` 及其对 `ctx.subagents.start/startContinuable`
|
|
54
|
+
的 monkey-patch,`DirectorConfig` 与 Config schema 同步移除 `applyDefaultRoute`;
|
|
55
|
+
插件不再向任何子代理启动注入默认模型;
|
|
56
|
+
- **选择收敛到官方授权列表**:`resolveRoute` 新增 `allowedRoutes` 约束——显式
|
|
57
|
+
provider/model 必须成对且位于 `subagent-model-selection.allowedModels`(未授权为
|
|
58
|
+
`subagent-director:` 硬错误);角色/默认层未授权路由被丢弃(回退继承)并告警,
|
|
59
|
+
角色 persona/toolFilter 仍生效;新增 `isRouteAllowed` 纯函数与
|
|
60
|
+
`readModelSelection`(执行期经 `settings.get` 读取官方命名空间,缺失/异常时优雅
|
|
61
|
+
降级为无约束并提示未配置授权列表)。
|
|
62
|
+
|
|
63
|
+
### 测试
|
|
64
|
+
|
|
65
|
+
- `route-resolver.test.ts` 新增授权列表约束与 effort 注入用例(36 项);
|
|
66
|
+
- 新增 `alpha4-probe.test.ts` 真实 cordis 探针:a) 插件挂载不包装
|
|
67
|
+
`ctx.subagents.start`(证明补丁缝已移除);b) `subagent-director` 命名空间经
|
|
68
|
+
`installSection` 注册且委派解析读取 `subagent-model-selection`;c) 委派执行路径对
|
|
69
|
+
未授权显式路由拒绝、对授权路由把 `agentOptions`(含 effort)透传给
|
|
70
|
+
`subagents.start`;删除 `default-route.test.ts`。
|
|
71
|
+
|
|
72
|
+
### 兼容性
|
|
73
|
+
|
|
74
|
+
- 桥接契约(`SUBAGENT_DIRECTOR_RPC_VIEW` / `_MUTATE` / `_CLOSE` / `_MODEL` / `_TOOLS`
|
|
75
|
+
端点与载荷)不变;`installDirectorSettings` 等导出签名保持;`RpcError.sessionId`
|
|
76
|
+
品牌冲突(宿主 apiproxy 嵌套的 `dsh-session` 副本)在边界处收敛为最小转型。
|
|
77
|
+
|
|
5
78
|
## [0.4.0] - 2026-08-31
|
|
6
79
|
|
|
7
80
|
### 新增
|
package/README.md
CHANGED
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
## 特性
|
|
17
17
|
|
|
18
18
|
- **供应商与模型选择** —— 为 subagent 配置默认 LLM 供应商(route)与模型;每次委派也可以由模型显式指定;
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
- **受控的模型选择** —— provider/model 只从官方 `subagent-model-selection` 授权列表
|
|
20
|
+
(`allowedModels`)中选择:显式传入未授权路由为硬错误,角色/默认层未授权路由被
|
|
21
|
+
丢弃并回退继承(不与官方 dsh-tool-subagent 双重写模型路由);
|
|
22
22
|
- **配置热更新** —— settings.yaml / 设置面板的改动即时生效,无需重启;
|
|
23
23
|
- **角色按显示名引用** —— `role` 参数未命中 id 时按 `displayName` 精确匹配(重名
|
|
24
24
|
取定义顺序第一个并提示),模型按显示名也能命中模板;
|
|
@@ -59,7 +59,6 @@ dsh plugin --profile <name> add dsh-plugin-subagent-director
|
|
|
59
59
|
enableRunInBackground: true
|
|
60
60
|
backgroundMode: one-shot # one-shot 或 continuable
|
|
61
61
|
maxDepth: 3
|
|
62
|
-
applyDefaultRoute: true # 默认 true:把默认模型应用到所有未显式指定模型的子代理
|
|
63
62
|
```
|
|
64
63
|
|
|
65
64
|
> 注意:不要再用 `- insert:` 添加这两个条目,否则启动会报
|
|
@@ -128,7 +127,8 @@ subagent_role({ role: "code-reviewer", model: "deepseek-chat", prompt: "..." })
|
|
|
128
127
|
> `subagent_role`(工具名由 `toolName` 配置,默认 `subagent_role`);DSH 基础
|
|
129
128
|
> bundle 另有内置的 `subagent` / `subagent_fork`,两者在同一次请求的工具清单里
|
|
130
129
|
> **并存**。只有走 `subagent_role` 才会应用角色 persona 与 `toolFilter`;模型改用
|
|
131
|
-
> 内置 `subagent`
|
|
130
|
+
> 内置 `subagent` 时这两项不生效(模型选择由官方 dsh-tool-subagent 的
|
|
131
|
+
> `modelSelectionSettings` 负责)。
|
|
132
132
|
> 因此需要角色语义时,请在提示里明确要求调用 `subagent_role`。
|
|
133
133
|
|
|
134
134
|
### 纯编排模式(`/orchestrate`)
|
|
@@ -176,8 +176,9 @@ DSH 的 Web API 只向白名单内的 settings 命名空间开放读写。本插
|
|
|
176
176
|
|
|
177
177
|
**未配置任何角色时行为如何?**
|
|
178
178
|
未配置任何角色且未配置默认模型时与未安装本插件完全一致(零侵入)。配置了
|
|
179
|
-
`defaultProvider`/`defaultModel`
|
|
180
|
-
|
|
179
|
+
`defaultProvider`/`defaultModel` 时:若官方 `subagent-model-selection` 已启用并有
|
|
180
|
+
`allowedModels` 授权列表,默认路由仅在该列表内才生效(否则被丢弃并回退继承);若
|
|
181
|
+
未配置授权列表,则保留插件默认行为并给出警告提示。
|
|
181
182
|
|
|
182
183
|
**用过 `/orchestrate` 的会话,卸载插件后还能打开吗?**
|
|
183
184
|
不能。`/orchestrate` 会在会话日志写入 `orchestrate/change` 事件,而宿主的持久化
|
package/lib/bridge-contract.d.ts
CHANGED
|
@@ -23,6 +23,26 @@ export declare const SUBAGENT_DIRECTOR_RPC_CLOSE = "subagentClose";
|
|
|
23
23
|
export declare const SUBAGENT_DIRECTOR_RPC_MODEL = "subagentModel";
|
|
24
24
|
/** Endpoint that returns the model-visible tool catalog for role tool-set editing. */
|
|
25
25
|
export declare const SUBAGENT_DIRECTOR_RPC_TOOLS = "toolCatalog";
|
|
26
|
+
/**
|
|
27
|
+
* Endpoint that returns the Subagent model-selection allowlist the page must
|
|
28
|
+
* constrain picks to (the official `subagent-model-selection` section: the
|
|
29
|
+
* "Subagent" plugin-config model list). Additive endpoint for alpha.4: the
|
|
30
|
+
* llm catalog RPC is gone from the client, and Subagent Director may select a
|
|
31
|
+
* provider/model ONLY from this list.
|
|
32
|
+
*/
|
|
33
|
+
export declare const SUBAGENT_DIRECTOR_RPC_CATALOG = "settingsCatalog";
|
|
34
|
+
/** One exact route authorized in the Subagent model-selection list. */
|
|
35
|
+
export interface DirectorAllowedRoute {
|
|
36
|
+
provider: string;
|
|
37
|
+
model: string;
|
|
38
|
+
}
|
|
39
|
+
/** Successful settingsCatalog bridge response. */
|
|
40
|
+
export interface DirectorCatalogSuccess {
|
|
41
|
+
/** Whether the official Subagent model selection is enabled. */
|
|
42
|
+
modelSelectionEnabled: boolean;
|
|
43
|
+
/** The exact routes the user has authorized (the only selectable models). */
|
|
44
|
+
allowedRoutes: DirectorAllowedRoute[];
|
|
45
|
+
}
|
|
26
46
|
/** Successful settingsView bridge response. */
|
|
27
47
|
export interface DirectorViewSuccess {
|
|
28
48
|
writable: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-contract.d.ts","sourceRoot":"","sources":["../src/bridge-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAEhF,mEAAmE;AACnE,eAAO,MAAM,6BAA6B,uBAAuB,CAAC;AAClE,gEAAgE;AAChE,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AACzD,kDAAkD;AAClD,eAAO,MAAM,4BAA4B,mBAAmB,CAAC;AAC7D,8EAA8E;AAC9E,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAC3D,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAC3D,sFAAsF;AACtF,eAAO,MAAM,2BAA2B,gBAAgB,CAAC;AAEzD,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,qFAAqF;IACrF,IAAI,EAAE,qBAAqB,GAAG,SAAS,CAAC;CACzC;AAED,8DAA8D;AAC9D,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,sBAAsB,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEpC,6DAA6D;AAC7D,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,6DAA6D;AAC7D,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gDAAgD;AAChD,MAAM,MAAM,oBAAoB,GAAG;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEvG,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,2DAA2D;AAC3D,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
1
|
+
{"version":3,"file":"bridge-contract.d.ts","sourceRoot":"","sources":["../src/bridge-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAEhF,mEAAmE;AACnE,eAAO,MAAM,6BAA6B,uBAAuB,CAAC;AAClE,gEAAgE;AAChE,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AACzD,kDAAkD;AAClD,eAAO,MAAM,4BAA4B,mBAAmB,CAAC;AAC7D,8EAA8E;AAC9E,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAC3D,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAC3D,sFAAsF;AACtF,eAAO,MAAM,2BAA2B,gBAAgB,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,oBAAoB,CAAC;AAE/D,uEAAuE;AACvE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,qBAAqB,EAAE,OAAO,CAAC;IAC/B,6EAA6E;IAC7E,aAAa,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAED,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,qFAAqF;IACrF,IAAI,EAAE,qBAAqB,GAAG,SAAS,CAAC;CACzC;AAED,8DAA8D;AAC9D,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,sBAAsB,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEpC,6DAA6D;AAC7D,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,6DAA6D;AAC7D,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gDAAgD;AAChD,MAAM,MAAM,oBAAoB,GAAG;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEvG,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,2DAA2D;AAC3D,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
package/lib/bridge-contract.js
CHANGED
|
@@ -10,4 +10,12 @@ export const SUBAGENT_DIRECTOR_RPC_CLOSE = 'subagentClose';
|
|
|
10
10
|
export const SUBAGENT_DIRECTOR_RPC_MODEL = 'subagentModel';
|
|
11
11
|
/** Endpoint that returns the model-visible tool catalog for role tool-set editing. */
|
|
12
12
|
export const SUBAGENT_DIRECTOR_RPC_TOOLS = 'toolCatalog';
|
|
13
|
+
/**
|
|
14
|
+
* Endpoint that returns the Subagent model-selection allowlist the page must
|
|
15
|
+
* constrain picks to (the official `subagent-model-selection` section: the
|
|
16
|
+
* "Subagent" plugin-config model list). Additive endpoint for alpha.4: the
|
|
17
|
+
* llm catalog RPC is gone from the client, and Subagent Director may select a
|
|
18
|
+
* provider/model ONLY from this list.
|
|
19
|
+
*/
|
|
20
|
+
export const SUBAGENT_DIRECTOR_RPC_CATALOG = 'settingsCatalog';
|
|
13
21
|
//# sourceMappingURL=bridge-contract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-contract.js","sourceRoot":"","sources":["../src/bridge-contract.ts"],"names":[],"mappings":"AAcA,mEAAmE;AACnE,MAAM,CAAC,MAAM,6BAA6B,GAAG,oBAAoB,CAAC;AAClE,gEAAgE;AAChE,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAc,CAAC;AACzD,kDAAkD;AAClD,MAAM,CAAC,MAAM,4BAA4B,GAAG,gBAAgB,CAAC;AAC7D,8EAA8E;AAC9E,MAAM,CAAC,MAAM,2BAA2B,GAAG,eAAe,CAAC;AAC3D,4EAA4E;AAC5E,MAAM,CAAC,MAAM,2BAA2B,GAAG,eAAe,CAAC;AAC3D,sFAAsF;AACtF,MAAM,CAAC,MAAM,2BAA2B,GAAG,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"bridge-contract.js","sourceRoot":"","sources":["../src/bridge-contract.ts"],"names":[],"mappings":"AAcA,mEAAmE;AACnE,MAAM,CAAC,MAAM,6BAA6B,GAAG,oBAAoB,CAAC;AAClE,gEAAgE;AAChE,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAc,CAAC;AACzD,kDAAkD;AAClD,MAAM,CAAC,MAAM,4BAA4B,GAAG,gBAAgB,CAAC;AAC7D,8EAA8E;AAC9E,MAAM,CAAC,MAAM,2BAA2B,GAAG,eAAe,CAAC;AAC3D,4EAA4E;AAC5E,MAAM,CAAC,MAAM,2BAA2B,GAAG,eAAe,CAAC;AAC3D,sFAAsF;AACtF,MAAM,CAAC,MAAM,2BAA2B,GAAG,aAAa,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,iBAAiB,CAAC"}
|
package/lib/client/RoleCard.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DirectorAllowedRoute } from '../bridge-contract.js';
|
|
2
2
|
import type { SubagentDirectorKey } from './locales.js';
|
|
3
3
|
import type { RoleDraft, StoredRole } from './store-logic.js';
|
|
4
4
|
export interface RoleCardProps {
|
|
@@ -8,8 +8,8 @@ export interface RoleCardProps {
|
|
|
8
8
|
role: StoredRole;
|
|
9
9
|
/** Whether this role is the defaultRole. */
|
|
10
10
|
isDefault: boolean;
|
|
11
|
-
/**
|
|
12
|
-
|
|
11
|
+
/** Authorized routes (the only selectable provider/model pairs). */
|
|
12
|
+
routes: readonly DirectorAllowedRoute[];
|
|
13
13
|
/** Distinct model-visible tool names (for the tool-set row). */
|
|
14
14
|
tools: readonly string[];
|
|
15
15
|
/** Section copy. */
|
|
@@ -21,5 +21,5 @@ export interface RoleCardProps {
|
|
|
21
21
|
/** Promote this role to default; returns a localized failure message or undefined. */
|
|
22
22
|
onSetDefault: () => Promise<string | undefined>;
|
|
23
23
|
}
|
|
24
|
-
export declare function RoleCard({ id, role, isDefault,
|
|
24
|
+
export declare function RoleCard({ id, role, isDefault, routes, tools, t, onSave, onDelete, onSetDefault }: RoleCardProps): JSX.Element;
|
|
25
25
|
//# sourceMappingURL=RoleCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoleCard.d.ts","sourceRoot":"","sources":["../../src/client/RoleCard.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RoleCard.d.ts","sourceRoot":"","sources":["../../src/client/RoleCard.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAe9D,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,4CAA4C;IAC5C,SAAS,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACxC,gEAAgE;IAChE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,oBAAoB;IACpB,CAAC,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,MAAM,CAAC;IACxC,+EAA+E;IAC/E,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1D,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5C,sFAAsF;IACtF,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACjD;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CA4J9H"}
|
package/lib/client/RoleCard.js
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/** One role template card: read-only summary plus an inline editor.
|
|
3
|
-
* Provider/model
|
|
4
|
-
*
|
|
3
|
+
* Provider/model picks are limited to the routes authorized in the official
|
|
4
|
+
* Subagent model-selection list; reasoning effort is a free-text field (the
|
|
5
|
+
* alpha.4 client has no effort catalog). Writes go through the controller as
|
|
6
|
+
* path ops, and failures return a localized message. */
|
|
5
7
|
import { useState } from 'react';
|
|
8
|
+
import { modelsForProvider, providerNames } from './allowed-routes.js';
|
|
6
9
|
import { ToolSetPicker } from './ToolSetPicker.js';
|
|
7
10
|
import { cardStyle, dangerButtonStyle, fieldLabelStyle, ghostButtonStyle, primaryButtonStyle, rowStyle, selectStyle, textAreaStyle, textInputStyle, token, } from './ui.js';
|
|
8
|
-
function
|
|
9
|
-
if (!provider || !model)
|
|
10
|
-
return [];
|
|
11
|
-
const group = groups.find((g) => g.id === provider);
|
|
12
|
-
const entry = group?.models.find((m) => m.id === model);
|
|
13
|
-
return entry?.reasoning?.efforts ?? [];
|
|
14
|
-
}
|
|
15
|
-
export function RoleCard({ id, role, isDefault, groups, tools, t, onSave, onDelete, onSetDefault }) {
|
|
11
|
+
export function RoleCard({ id, role, isDefault, routes, tools, t, onSave, onDelete, onSetDefault }) {
|
|
16
12
|
const [editing, setEditing] = useState(false);
|
|
17
13
|
const [busy, setBusy] = useState(false);
|
|
18
14
|
const [failure, setFailure] = useState(undefined);
|
|
@@ -27,8 +23,8 @@ export function RoleCard({ id, role, isDefault, groups, tools, t, onSave, onDele
|
|
|
27
23
|
});
|
|
28
24
|
const provider = draft.provider || role.provider;
|
|
29
25
|
const model = draft.model || role.model;
|
|
30
|
-
const
|
|
31
|
-
const
|
|
26
|
+
const providers = providerNames(routes);
|
|
27
|
+
const modelOptions = provider ? modelsForProvider(routes, provider) : [];
|
|
32
28
|
const save = async () => {
|
|
33
29
|
setBusy(true);
|
|
34
30
|
setFailure(undefined);
|
|
@@ -63,7 +59,7 @@ export function RoleCard({ id, role, isDefault, groups, tools, t, onSave, onDele
|
|
|
63
59
|
};
|
|
64
60
|
const allowList = draft.toolFilter?.allow ?? [];
|
|
65
61
|
if (editing) {
|
|
66
|
-
return (_jsxs("div", { style: cardStyle, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'baseline', gap: 8 }, children: [_jsx("strong", { style: { color: token.labelPrimary, fontSize: 14 }, children: t('roleDisplayName') }), isDefault ? _jsx("span", { style: { color: token.accent, fontSize: 12 }, children: t('defaultRoleBadge') }) : null] }), _jsxs("div", { style: rowStyle, children: [_jsx("label", { style: fieldLabelStyle, children: t('roleDisplayName') }), _jsx("input", { style: textInputStyle, value: draft.displayName, placeholder: t('displayNamePlaceholder'), onChange: (e) => setField('displayName', e.target.value) })] }), _jsxs("div", { style: rowStyle, children: [_jsx("label", { style: fieldLabelStyle, children: t('roleDescription') }), _jsx("textarea", { style: textAreaStyle, value: draft.description, placeholder: t('descriptionPlaceholder'), onChange: (e) => setField('description', e.target.value) })] }), _jsxs("div", { style: rowStyle, children: [_jsx("label", { style: fieldLabelStyle, children: t('rolePersona') }), _jsx("textarea", { style: textAreaStyle, value: draft.persona, placeholder: t('personaPlaceholder'), onChange: (e) => setField('persona', e.target.value) })] }), _jsxs("div", { style: { display: 'grid', gridTemplateColumns: 'repeat(3, minmax(0, 1fr))', gap: 8 }, children: [_jsxs("div", { style: rowStyle, children: [_jsx("label", { style: fieldLabelStyle, children: t('provider') }), _jsxs("select", { style: selectStyle, value: draft.provider, disabled:
|
|
62
|
+
return (_jsxs("div", { style: cardStyle, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'baseline', gap: 8 }, children: [_jsx("strong", { style: { color: token.labelPrimary, fontSize: 14 }, children: t('roleDisplayName') }), isDefault ? _jsx("span", { style: { color: token.accent, fontSize: 12 }, children: t('defaultRoleBadge') }) : null] }), _jsxs("div", { style: rowStyle, children: [_jsx("label", { style: fieldLabelStyle, children: t('roleDisplayName') }), _jsx("input", { style: textInputStyle, value: draft.displayName, placeholder: t('displayNamePlaceholder'), onChange: (e) => setField('displayName', e.target.value) })] }), _jsxs("div", { style: rowStyle, children: [_jsx("label", { style: fieldLabelStyle, children: t('roleDescription') }), _jsx("textarea", { style: textAreaStyle, value: draft.description, placeholder: t('descriptionPlaceholder'), onChange: (e) => setField('description', e.target.value) })] }), _jsxs("div", { style: rowStyle, children: [_jsx("label", { style: fieldLabelStyle, children: t('rolePersona') }), _jsx("textarea", { style: textAreaStyle, value: draft.persona, placeholder: t('personaPlaceholder'), onChange: (e) => setField('persona', e.target.value) })] }), _jsxs("div", { style: { display: 'grid', gridTemplateColumns: 'repeat(3, minmax(0, 1fr))', gap: 8 }, children: [_jsxs("div", { style: rowStyle, children: [_jsx("label", { style: fieldLabelStyle, children: t('provider') }), _jsxs("select", { style: selectStyle, value: draft.provider, disabled: providers.length === 0, onChange: (e) => setField('provider', e.target.value), children: [_jsx("option", { value: "", children: "\u2014" }), providers.map((id) => (_jsx("option", { value: id, children: id }, id)))] })] }), _jsxs("div", { style: rowStyle, children: [_jsx("label", { style: fieldLabelStyle, children: t('model') }), _jsxs("select", { style: selectStyle, value: draft.model, disabled: modelOptions.length === 0, onChange: (e) => setField('model', e.target.value), children: [_jsx("option", { value: "", children: "\u2014" }), modelOptions.map((m) => (_jsx("option", { value: m.model, children: m.label }, m.model)))] })] }), _jsxs("div", { style: rowStyle, children: [_jsx("label", { style: fieldLabelStyle, children: t('reasoningEffort') }), _jsx("input", { style: textInputStyle, value: draft.reasoningEffort, placeholder: "(advisory)", onChange: (e) => setField('reasoningEffort', e.target.value) })] })] }), _jsx("div", { style: rowStyle, children: _jsx(ToolSetPicker, { tools: tools, selected: allowList, t: t, onChange: (allow) => setDraft((d) => ({ ...d, toolFilter: { allow } })) }) }), failure !== undefined ? _jsx("div", { style: { color: token.danger, fontSize: 12 }, children: failure }) : null, _jsxs("div", { style: { display: 'flex', gap: 8 }, children: [_jsx("button", { style: primaryButtonStyle, disabled: busy, onClick: save, children: t('save') }), _jsx("button", { style: ghostButtonStyle, disabled: busy, onClick: () => setEditing(false), children: t('cancel') })] })] }));
|
|
67
63
|
}
|
|
68
64
|
return (_jsxs("div", { style: cardStyle, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'baseline', justifyContent: 'space-between', gap: 8 }, children: [_jsx("strong", { style: { color: token.labelPrimary, fontSize: 14 }, children: role.displayName || id }), _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 6 }, children: [_jsx("span", { style: { color: token.labelTertiary, fontSize: 12, fontVariantNumeric: 'tabular-nums' }, children: id }), isDefault ? _jsx("span", { style: { color: token.accent, fontSize: 12 }, children: t('defaultRoleBadge') }) : null] })] }), role.description ? (_jsx("p", { style: { margin: 0, color: token.labelSecondary, fontSize: 13, lineHeight: '18px' }, children: role.description })) : null, _jsxs("div", { style: { display: 'flex', flexWrap: 'wrap', gap: 8 }, children: [_jsx(Metadata, { label: t('provider'), value: role.provider }), _jsx(Metadata, { label: t('model'), value: role.model }), _jsx(Metadata, { label: t('reasoningEffort'), value: role.reasoningEffort }), role.persona ? _jsx(Metadata, { label: t('persona'), value: role.persona }) : null, role.toolFilter?.allow?.length ? (_jsx(Metadata, { label: t('toolFilter'), value: role.toolFilter.allow.join(', ') })) : null] }), failure !== undefined ? _jsx("div", { style: { color: token.danger, fontSize: 12 }, children: failure }) : null, _jsxs("div", { style: { display: 'flex', gap: 8 }, children: [_jsx("button", { style: ghostButtonStyle, disabled: busy, onClick: () => setEditing(true), children: t('edit') }), _jsx("button", { style: ghostButtonStyle, disabled: busy || isDefault, onClick: () => (void onSetDefault(), undefined), children: t('setDefaultRole') }), _jsx("button", { style: dangerButtonStyle, disabled: busy, onClick: remove, children: t('deleteRole') })] })] }));
|
|
69
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoleCard.js","sourceRoot":"","sources":["../../src/client/RoleCard.tsx"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"RoleCard.js","sourceRoot":"","sources":["../../src/client/RoleCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* released), on failure a short inline error shows the core message.
|
|
14
14
|
*
|
|
15
15
|
* The seat is a list slot declared by ui-conversation; the framework session
|
|
16
|
-
* standard kit supplies `useSession`/`sessionId` (
|
|
17
|
-
* the registration injects the RPC caller.
|
|
16
|
+
* standard kit supplies `useSession`/`sessionId` (ui-session merge over the
|
|
17
|
+
* alpha.4 SessionSnapshot), the registration injects the RPC caller.
|
|
18
18
|
*/
|
|
19
19
|
import type { ClientConnectionRpc } from '@deepseek-ai/dsh-client-connection/client';
|
|
20
20
|
import type { InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
@@ -14,8 +14,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
14
14
|
* released), on failure a short inline error shows the core message.
|
|
15
15
|
*
|
|
16
16
|
* The seat is a list slot declared by ui-conversation; the framework session
|
|
17
|
-
* standard kit supplies `useSession`/`sessionId` (
|
|
18
|
-
* the registration injects the RPC caller.
|
|
17
|
+
* standard kit supplies `useSession`/`sessionId` (ui-session merge over the
|
|
18
|
+
* alpha.4 SessionSnapshot), the registration injects the RPC caller.
|
|
19
19
|
*/
|
|
20
20
|
import { useEffect, useState } from 'react';
|
|
21
21
|
import { SUBAGENT_DIRECTOR_RPC_CHANNEL, SUBAGENT_DIRECTOR_RPC_CLOSE, } from '../bridge-contract.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubagentCloseAction.js","sourceRoot":"","sources":["../../src/client/SubagentCloseAction.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAI5C,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAanD,kFAAkF;AAClF,MAAM,CAAC,MAAM,EAAE,GAAG,2BAAoC,CAAC;AAIvD,qFAAqF;AACrF,MAAM,KAAK,GAA2C;IACpD,IAAI,EAAE;QACJ,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,QAAQ;QACpB,GAAG,EAAE,CAAC;KACP;IACD,MAAM,EAAE;QACN,GAAG,iBAAiB;QACpB,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,QAAQ;KAClB;IACD,OAAO,EAAE;QACP,KAAK,EAAE,KAAK,CAAC,aAAa;QAC1B,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;KACnB;IACD,KAAK,EAAE;QACL,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,UAAU;QACxB,UAAU,EAAE,QAAQ;KACrB;CACF,CAAC;AAEF,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CAAC,EAClC,UAAU,EACV,SAAS,EACT,GAAG,EACH,CAAC,GACwB;IACzB,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"SubagentCloseAction.js","sourceRoot":"","sources":["../../src/client/SubagentCloseAction.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,10 @@
|
|
|
6
6
|
* addressed subagent child it shows the provider/model that child actually
|
|
7
7
|
* ran on:
|
|
8
8
|
* - fast path: the opened transcript's latest assistant message already
|
|
9
|
-
* records provenance/requestConfig (zero extra RPC — see subagent-model.ts)
|
|
9
|
+
* records provenance/requestConfig (zero extra RPC — see subagent-model.ts).
|
|
10
|
+
* On the alpha.4/alpha.5 host line the transcript nodes come from the
|
|
11
|
+
* chat view snapshot's `legacy.nodes` slice, read through the injected
|
|
12
|
+
* `useChatSnapshot(sessionId)` hook (uiConversation binding → 'chat' target);
|
|
10
13
|
* - fallback: current DSH runtimes do not populate those fields, so the
|
|
11
14
|
* dock asks the Host bridge for the child's last `request/header` event
|
|
12
15
|
* (`subagentModel` endpoint) and caches the answer per child session.
|
|
@@ -14,26 +17,30 @@
|
|
|
14
17
|
* sessions render nothing, so the dock stays clean.
|
|
15
18
|
*
|
|
16
19
|
* The dock is an additive list slot declared by ui-conversation at runtime;
|
|
17
|
-
* we only contribute an occupant, never re-declare it.
|
|
18
|
-
*
|
|
20
|
+
* we only contribute an occupant, never re-declare it. The framework session
|
|
21
|
+
* standard kit (ui-session merge) supplies `useSession`/`sessionId`; the
|
|
22
|
+
* registration injects the RPC caller and the chat-snapshot hook.
|
|
19
23
|
*/
|
|
20
24
|
import type { ClientConnectionRpc } from '@deepseek-ai/dsh-client-connection/client';
|
|
21
|
-
import type {
|
|
25
|
+
import type { SessionId } from '@deepseek-ai/dsh-session/types';
|
|
26
|
+
import type { ChatSnapshot } from '@deepseek-ai/dsh-client-ui-chat/client';
|
|
22
27
|
import type { InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
23
|
-
/** Owner currency of the composer dock as ui-conversation declares it. */
|
|
24
|
-
export interface ComposerDockOwner {
|
|
25
|
-
readonly session: ConversationSnapshot | undefined;
|
|
26
|
-
readonly input: unknown;
|
|
27
|
-
}
|
|
28
28
|
/** Business face injected by the registration (client/index.ts). */
|
|
29
29
|
export interface SubagentModelDockInjected {
|
|
30
30
|
/** Generic RPC caller for the /subagent-director bridge channel. */
|
|
31
31
|
rpc: ClientConnectionRpc;
|
|
32
|
+
/**
|
|
33
|
+
* Alpha.4 chat-view snapshot hook: subscribes to the current session's
|
|
34
|
+
* `chat` Conversation target (uiConversation binding) and returns its
|
|
35
|
+
* snapshot, or undefined while no session is current / the target is
|
|
36
|
+
* unassembled. The transcript nodes live at `snapshot.legacy.nodes`.
|
|
37
|
+
*/
|
|
38
|
+
useChatSnapshot: (sessionId: SessionId | undefined) => ChatSnapshot | undefined;
|
|
32
39
|
}
|
|
33
|
-
/** Full props of the dock entry:
|
|
40
|
+
/** Full props of the dock entry: session kit + inject + locale. */
|
|
34
41
|
export type SubagentModelDockProps = PropsRuntime<'conversation.composer.dock'> & InjectFace<SubagentModelDockInjected> & PropsLocale<typeof NS>;
|
|
35
42
|
/** Locale namespace shared with the settings page (registered in index apply). */
|
|
36
43
|
export declare const NS: 'settings.subagentDirector';
|
|
37
44
|
/** Render the provider/model readout for an addressed subagent, or nothing. */
|
|
38
|
-
export declare function SubagentModelDock({
|
|
45
|
+
export declare function SubagentModelDock({ useSession, sessionId, rpc, useChatSnapshot, t, }: SubagentModelDockProps): React.JSX.Element | null;
|
|
39
46
|
//# sourceMappingURL=SubagentModelDock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubagentModelDock.d.ts","sourceRoot":"","sources":["../../src/client/SubagentModelDock.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"SubagentModelDock.d.ts","sourceRoot":"","sources":["../../src/client/SubagentModelDock.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAErF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAgB9F,oEAAoE;AACpE,MAAM,WAAW,yBAAyB;IACxC,oEAAoE;IACpE,GAAG,EAAE,mBAAmB,CAAC;IACzB;;;;;OAKG;IACH,eAAe,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,KAAK,YAAY,GAAG,SAAS,CAAC;CACjF;AAED,mEAAmE;AACnE,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC,4BAA4B,CAAC,GAC7E,UAAU,CAAC,yBAAyB,CAAC,GACrC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;AAEzB,kFAAkF;AAClF,eAAO,MAAM,EAAE,EAAG,2BAAoC,CAAC;AA2BvD,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,EAChC,UAAU,EACV,SAAS,EACT,GAAG,EACH,eAAe,EACf,CAAC,GACF,EAAE,sBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA+EnD"}
|
|
@@ -7,7 +7,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
* addressed subagent child it shows the provider/model that child actually
|
|
8
8
|
* ran on:
|
|
9
9
|
* - fast path: the opened transcript's latest assistant message already
|
|
10
|
-
* records provenance/requestConfig (zero extra RPC — see subagent-model.ts)
|
|
10
|
+
* records provenance/requestConfig (zero extra RPC — see subagent-model.ts).
|
|
11
|
+
* On the alpha.4/alpha.5 host line the transcript nodes come from the
|
|
12
|
+
* chat view snapshot's `legacy.nodes` slice, read through the injected
|
|
13
|
+
* `useChatSnapshot(sessionId)` hook (uiConversation binding → 'chat' target);
|
|
11
14
|
* - fallback: current DSH runtimes do not populate those fields, so the
|
|
12
15
|
* dock asks the Host bridge for the child's last `request/header` event
|
|
13
16
|
* (`subagentModel` endpoint) and caches the answer per child session.
|
|
@@ -15,8 +18,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
15
18
|
* sessions render nothing, so the dock stays clean.
|
|
16
19
|
*
|
|
17
20
|
* The dock is an additive list slot declared by ui-conversation at runtime;
|
|
18
|
-
* we only contribute an occupant, never re-declare it.
|
|
19
|
-
*
|
|
21
|
+
* we only contribute an occupant, never re-declare it. The framework session
|
|
22
|
+
* standard kit (ui-session merge) supplies `useSession`/`sessionId`; the
|
|
23
|
+
* registration injects the RPC caller and the chat-snapshot hook.
|
|
20
24
|
*/
|
|
21
25
|
import { useEffect, useRef, useState } from 'react';
|
|
22
26
|
import { SUBAGENT_DIRECTOR_RPC_CHANNEL, SUBAGENT_DIRECTOR_RPC_MODEL, } from '../bridge-contract.js';
|
|
@@ -40,13 +44,16 @@ const style = {
|
|
|
40
44
|
},
|
|
41
45
|
};
|
|
42
46
|
/** Render the provider/model readout for an addressed subagent, or nothing. */
|
|
43
|
-
export function SubagentModelDock({
|
|
47
|
+
export function SubagentModelDock({ useSession, sessionId, rpc, useChatSnapshot, t, }) {
|
|
48
|
+
const session = useSession((s) => s);
|
|
49
|
+
const chat = useChatSnapshot(sessionId);
|
|
44
50
|
const [query, setQuery] = useState({ status: 'idle' });
|
|
45
51
|
const cache = useRef(new Map());
|
|
46
|
-
const
|
|
52
|
+
const nodes = chat?.legacy?.nodes;
|
|
53
|
+
const local = latestSubagentModel({ nodes: nodes ?? [] });
|
|
47
54
|
const childSessionId = session?.subagent?.address?.childSessionId;
|
|
48
|
-
const lastSeq =
|
|
49
|
-
?
|
|
55
|
+
const lastSeq = nodes !== undefined && nodes.length > 0
|
|
56
|
+
? nodes[nodes.length - 1].seq ?? 0
|
|
50
57
|
: 0;
|
|
51
58
|
useEffect(() => {
|
|
52
59
|
if (!isAddressedSubagent(session)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubagentModelDock.js","sourceRoot":"","sources":["../../src/client/SubagentModelDock.tsx"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"SubagentModelDock.js","sourceRoot":"","sources":["../../src/client/SubagentModelDock.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SnapshotSelectorHook } from './bind.js';
|
|
2
|
-
import type { SessionListState } from '@deepseek-ai/dsh-
|
|
2
|
+
import type { SessionListState } from '@deepseek-ai/dsh-api-session-controller/client';
|
|
3
3
|
import type { SubagentDirectorKey } from './locales.js';
|
|
4
4
|
import type { SubagentOptionsState, SubagentOptionsStore } from './store.js';
|
|
5
5
|
/** Injected dependencies of {@link SubagentOptionsSection} (slot `inject`). */
|
|
@@ -8,8 +8,6 @@ export interface SubagentOptionsSectionInjected {
|
|
|
8
8
|
controller: SubagentOptionsStore;
|
|
9
9
|
/** uSES subscription hook bound to the store. */
|
|
10
10
|
useSnapshot: SnapshotSelectorHook<SubagentOptionsState>;
|
|
11
|
-
/** Wire faces the page writes through (kept for parity with the slot contract). */
|
|
12
|
-
api: unknown;
|
|
13
11
|
/** Section copy. */
|
|
14
12
|
t: (key: SubagentDirectorKey) => string;
|
|
15
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubagentOptionsSection.d.ts","sourceRoot":"","sources":["../../src/client/SubagentOptionsSection.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"SubagentOptionsSection.d.ts","sourceRoot":"","sources":["../../src/client/SubagentOptionsSection.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAGvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAkB7E,+EAA+E;AAC/E,MAAM,WAAW,8BAA8B;IAC3C,2EAA2E;IAC3E,UAAU,EAAE,oBAAoB,CAAC;IACjC,iDAAiD;IACjD,WAAW,EAAE,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IACxD,oBAAoB;IACpB,CAAC,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,MAAM,CAAC;CAC3C;AAED,uEAAuE;AACvE,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAAC,8BAA8B,CAAC,GAAG;IAChF,6EAA6E;IAC7E,WAAW,CAAC,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;CACxD,CAAC;AASF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAI7F"}
|