@eddyskywalker/dsh-chatgpt-subscription 0.49.0 → 0.51.0
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 +39 -0
- package/README.md +2 -1
- package/lib/client.js +88 -43
- package/lib/client.js.map +1 -1
- package/lib/{entry-progress-updates-CkGJr_fe.js → entry-progress-updates-BEkdyDZU.js} +152 -8
- package/lib/index.js +6146 -1945
- package/lib/progress-updates.js +1 -1
- package/lib/types/client/locales-ru/progress-updates.d.ts.map +1 -1
- package/lib/types/client/progress-updates/locales.d.ts +8 -2
- package/lib/types/client/progress-updates/locales.d.ts.map +1 -1
- package/lib/types/client/progress-updates/settings-binding.d.ts +9 -1
- package/lib/types/client/progress-updates/settings-binding.d.ts.map +1 -1
- package/lib/types/client/progress-updates/settings-section.d.ts.map +1 -1
- package/lib/types/client/subagent/SubagentCard.d.ts.map +1 -1
- package/lib/types/client/subagent/styles.d.ts +1 -1
- package/lib/types/client/subagent/styles.d.ts.map +1 -1
- package/lib/types/compat.d.ts +1 -1
- package/lib/types/host/agent-preset.d.ts.map +1 -1
- package/lib/types/host/cache-warmup/install.d.ts.map +1 -1
- package/lib/types/host/cache-warmup/projection.d.ts.map +1 -1
- package/lib/types/host/dispatch-execution-guard.d.ts +151 -0
- package/lib/types/host/dispatch-execution-guard.d.ts.map +1 -0
- package/lib/types/host/dispatch-ledger/binding.d.ts +118 -0
- package/lib/types/host/dispatch-ledger/binding.d.ts.map +1 -0
- package/lib/types/host/dispatch-ledger/guard.d.ts +271 -0
- package/lib/types/host/dispatch-ledger/guard.d.ts.map +1 -0
- package/lib/types/host/dispatch-ledger/header.d.ts +169 -0
- package/lib/types/host/dispatch-ledger/header.d.ts.map +1 -0
- package/lib/types/host/dispatch-ledger/index.d.ts +56 -0
- package/lib/types/host/dispatch-ledger/index.d.ts.map +1 -0
- package/lib/types/host/dispatch-ledger/ledger.d.ts +531 -0
- package/lib/types/host/dispatch-ledger/ledger.d.ts.map +1 -0
- package/lib/types/host/dispatch-ledger/policy.d.ts +99 -0
- package/lib/types/host/dispatch-ledger/policy.d.ts.map +1 -0
- package/lib/types/host/dispatch-ledger/protocol.d.ts +25 -0
- package/lib/types/host/dispatch-ledger/protocol.d.ts.map +1 -0
- package/lib/types/host/dispatch-ledger/tool.d.ts +151 -0
- package/lib/types/host/dispatch-ledger/tool.d.ts.map +1 -0
- package/lib/types/host/kimi-code/adapter.d.ts +15 -0
- package/lib/types/host/kimi-code/adapter.d.ts.map +1 -1
- package/lib/types/host/kimi-code/cache-wait.d.ts +125 -0
- package/lib/types/host/kimi-code/cache-wait.d.ts.map +1 -0
- package/lib/types/host/kimi-code/mapper.d.ts +71 -4
- package/lib/types/host/kimi-code/mapper.d.ts.map +1 -1
- package/lib/types/host/progress-updates/index.d.ts.map +1 -1
- package/lib/types/host/progress-updates/prompt.d.ts +86 -21
- package/lib/types/host/progress-updates/prompt.d.ts.map +1 -1
- package/lib/types/host/ptc-sdk-cache-guard.d.ts +12 -2
- package/lib/types/host/ptc-sdk-cache-guard.d.ts.map +1 -1
- package/lib/types/host/qoder/adapter.d.ts +13 -2
- package/lib/types/host/qoder/adapter.d.ts.map +1 -1
- package/lib/types/host/qoder/mapper.d.ts +27 -11
- package/lib/types/host/qoder/mapper.d.ts.map +1 -1
- package/lib/types/index.d.ts +15 -0
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/presets/dispatch/README.md +51 -9
- package/presets/dispatch/agent.cordis.yml +68 -122
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,45 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.51.0 - 2026-11-01
|
|
6
|
+
|
|
7
|
+
- **[dispatch] 调度模式接入 Dispatch Ledger:模型面只多一行短引导,账本与 Mandate v2 协议由只读工具承载**
|
|
8
|
+
- preset 的两份副本(`presets/dispatch/agent.cordis.yml` 与运行时声明 `src/host/agent-preset.ts`)各加**一行**引导:首次委派前调用一次 `dispatch_ledger {action:"self"}`,并按该次结果**尾部**打印的 Mandate v2 协议行事。协议正文不进 persona——persona 的 18500 字符预算不因它而动;正文按需通过尾部工具结果返回,不进入每步常驻的前缀。
|
|
9
|
+
- `dispatch_ledger` 由宿主在**根**注册面上用 `tools.register` 一次性注册,是全局静态工具而**不是** preset 行。工具声明面因此在插件加载 / 升级时改变一次——这是已接受的一次性成本;除此之外声明面不随账本状态、开关或任务状态变化(不懒注册、不带 `when` 准入),会话运行期间工具表恒定,Kimi Code 的内容前缀缓存不会因为账本而反复重建。工具描述是编译期常量,不随会话变化。
|
|
10
|
+
- 账本的执行期守卫与既有的调度执行守卫一样只走 `ctx.tools.guard()`,守卫本身不改工具声明面;开关复用 `dispatchExecutionGuard`,不新增设置项。
|
|
11
|
+
- 模型侧可以查到账本条目(按会话或整棵委派树过滤),并按协议给派发 / 报告 / 续派的消息加上 Mandate v2 头部;头部里的策略块与提示词修订号必须从 `self` 的返回原样抄,模型不能自拟。
|
|
12
|
+
- 新增 `test/dispatch-model-surface-contract.test.ts`:按行对拍两份 preset 副本的 id / name / disabled / isolate / config,核对 persona 与 plan-mode section 逐字节一致,锁定主控专用工具名单、报告状态词、Mandate 拒绝码、授权描述在 PTC 与 Native 两侧无残留,以及 persona 前缀与协议正文的字符预算。
|
|
13
|
+
|
|
14
|
+
- **[kimi-code] 消除会话中途的内容前缀漂移**
|
|
15
|
+
- Dispatch persona 移除随模型选择变化的 `{{model}}`;进展更新的语言设置不再改变系统段,auto / zh / en 的变化改为按会话去重的尾部通知,切回 auto 也会撤销旧指令。
|
|
16
|
+
- PTC SDK 缓存守卫在请求头缺席时读取 `agent.model.current()` 的持久选择,再回退到 agent options;语言通知使用消息工厂并通过真实 `adoptSessionEvent` 边界验证。
|
|
17
|
+
|
|
18
|
+
- **验证**
|
|
19
|
+
- 当前 0.2.1-rc.3 基线:强制 host/client/test/scripts 类型检查、`npm run build`、`npm ci --dry-run` 与 `npm pack --dry-run` 均通过;全量为 **345 files passed / 2 skipped,6020 tests passed / 9 skipped**。
|
|
20
|
+
- 独立 0.1.5-rc.1 clean-room:完整运行仅有已知的 `subagent-model-authorization-ptc.test.ts` 无法加载(该代没有 `@deepseek-ai/dsh-ptc-runtime`);仅排除此文件后为 **344 files passed / 2 skipped,6015 tests passed / 10 skipped**,exit 0,包含全部新增 Dispatch 与缓存测试。
|
|
21
|
+
- 旧代全量类型检查仍被未改动的既有 `src/host/cline-pass/adapter.ts` 阻断:旧代 `LlmResolvedModelInfo` 不声明 `toolUpdate`。该文件不在本次 diff 中,未为通过验收而扩大修改范围。
|
|
22
|
+
|
|
23
|
+
## 0.50.0 - 2026-11-01
|
|
24
|
+
|
|
25
|
+
- **[subagent] 优化子代理卡片的布局、间距与状态呈现**
|
|
26
|
+
- 调整 `SubagentCard` 的结构和样式,使子代理运行状态与结果信息在有限空间内更易读取。
|
|
27
|
+
|
|
28
|
+
- **[kimi-code] 扩展缓存投影、标题请求隔离与冷启动单飞**
|
|
29
|
+
- 扩大可结构化提取的工具结果投影覆盖,支持复合 JSON 信封、spill 全文恢复和带引用的精确补读,减少大结果反复进入上下文。
|
|
30
|
+
- 标题请求不再发送主会话 cache key,也不写入主会话用量、活动时间、漂移归因或 warmup 状态。
|
|
31
|
+
- 新增按 region/model/system/tools 分组的冷启动单飞:leader 到响应头即释放 follower,2xx 才记 warm;跟随请求有界等待,失败立即放行。
|
|
32
|
+
|
|
33
|
+
- **[kimi-code] 修复缓存投影与并发恢复边界**
|
|
34
|
+
- 复合信封中的源码、契约和混合证据恢复逐字保留;spill 解析支持图片省略段和未知字节数。
|
|
35
|
+
- 工具结果包含标题提示词时不再误判为标题请求;标题请求也不会清除主会话的图片 offload 归因。
|
|
36
|
+
- 悬挂 leader 超过等待预算后允许重选,旧 leader 的身份守卫避免误删新槽位。
|
|
37
|
+
|
|
38
|
+
- **[kimi-code] 新增主代理缓存等待策略:工作优先、空闲计时、自然续热、冷恢复兜底**
|
|
39
|
+
- 新增宿主侧 `KimiCacheWaitController`,通过持久会话事件识别主代理回合与子代理目录,仅在主代理 idle 且仍有未完成任务时启动等待;从主代理最后一次成功模型活动计算约 25 分钟缓存窗口,不把工具运行或子代理启动时间误当作续热。
|
|
40
|
+
- 自然阶段报告和完成通知沿用现有宿主消息通道,由正常主代理模型回合完成续热;没有检查点时不催促、不打断子代理,也不要求周期报告。主代理可继续审查结果或推进不重叠的并行模块。
|
|
41
|
+
- 默认不发送主动保活请求。大上下文部署可通过 `DSH_KIMI_CODE_CACHE_WAIT_WARMUP=1` 选择启用每个委托批次最多一次轻量预热;预热消息经 `createUserMessage` 构建,失败不重试,缓存已过期时直接走普通冷恢复。
|
|
42
|
+
- `test/kimi-code-cache-wait.test.ts` 以假时钟覆盖工作/等待转换、活动时间重置、默认冷路径、单次预热、重复目录事件、完成取消、失败降级和 DSH 持久消息边界。
|
|
43
|
+
|
|
5
44
|
## 0.49.0 - 2026-10-31
|
|
6
45
|
|
|
7
46
|
- **[kimi-code] 图片预算对齐原生 `kimi-cli`(20 MiB 高水位 / 10 MiB 低水位)并实现会话级粘性淘汰(Closes #79)**
|
package/README.md
CHANGED
|
@@ -149,7 +149,8 @@
|
|
|
149
149
|
- 真正决定命中率的是**内容稳定性**:同一会话内 `system` 或工具列表一旦变化会使整个前缀缓存失效(实测归零)。因此应保持工具集合稳定、把新增内容追加在末尾;
|
|
150
150
|
- 卡片会显示滚动命中率,方便验证效果;
|
|
151
151
|
- **本线路不发送任何缓存时长字段**,缓存写入与存活完全由服务端决定。这不是省略,而是唯一有依据的选择:5m / 1h 两档只写在 **Moonshot 开放平台**文档里,Kimi Code 订阅端点没有任何缓存 TTL 的文档,官方 CLI 2.0.0 的代码路径里也不存在 `prompt_cache_options`(只有 `prompt_cache_key`);[MoonshotAI/kimi-code#3942](https://github.com/MoonshotAI/kimi-code/issues/3942) 专门请求暴露该档位并附带问了一句「如果 coding 端点不认这个字段,请明确写出来」,至今 open、零回应。此前设置页提供的 5m / 1h 选择因此已**撤除**;
|
|
152
|
-
- **缓存过期提示按
|
|
152
|
+
- **缓存过期提示按 25 分钟判定**(`cache-hint.ts` 的 `CACHE_TTL_MS`)。此前该阈值取的是 `5m` 档位的**名字**(5 分钟),在实测能热 25 分钟的端点上,从第 6 分钟起就开始误报、误报窗口长达 19 分钟 —— 恰好违反本模块自己写下的「宁漏报不误报,误报会训练用户忽略提示」。现在取全部副本仍保持命中的最后一个实测年龄,尽早提示而不声称服务端保证该 TTL;
|
|
153
|
+
- **主代理缓存等待策略与子代理工作解耦**:主代理有独立工作或并行模块可推进时正常工作,只有回合结束且仍有未完成的子代理时才进入 `IDLE_WAIT`,并从主代理最后一次成功模型活动起计算等待(而不是从子代理启动起算)。自然报告和完成通知通过正常主代理回合续热;没有现成检查点时不催促、不打断子代理,默认接受之后的一次冷恢复。连续约 20 分钟没有模型活动后,大上下文部署可用 `DSH_KIMI_CODE_CACHE_WAIT_WARMUP=1` 显式允许**每个委托批次最多一次**轻量预热;小上下文、非 Kimi 会话、预热失败和 TTL 已过期都不尝试,避免形成周期性保活。子代理结果始终经宿主消息通道返回,不依赖主代理缓存是否有效;
|
|
153
154
|
- 设置卡的缓存区块把**写入**单独列成一行(总量 + 5 分钟档 + 1 小时档):写入是独立计费项,折进「新处理 tokens」会让命中率说错话;某个分档是 0 时照实显示 0——响应头缺失只表示服务端没回报该档,不等于那里确实没写。注意这两个分档响应头同样只有开放平台文档背书,订阅端点尚无实测样本,恒为 0 时不要读成「确实没写入」;
|
|
154
155
|
- **视频输入可用**(`k3`、`kimi-for-coding`、`k3.1-pro`):
|
|
155
156
|
- DSH 的模态词表只有 `text`/`image`,但它是可合并扩展的接口,本插件用 TypeScript 模块增强把它扩到 `video`(**未改动 DSH 任何代码**),因此视频走 DSH 真实的能力通道,而不是只能显示在提示里;
|
package/lib/client.js
CHANGED
|
@@ -21341,6 +21341,8 @@ window.__ModuleLoader__.load({
|
|
|
21341
21341
|
settingsRetrievalNote: "Kimi Code 专用:导航任务中投影文件、网页与搜索,编辑审查保留原文;非 Kimi 线路开关无影响",
|
|
21342
21342
|
settingsPlanModePipelineName: "计划模式管线",
|
|
21343
21343
|
settingsPlanModePipelineNote: "澄清访谈收敛后自动进入计划模式出计划,再交审批(仅调度模式生效);关闭后该模式会请用户手动输入 /plan",
|
|
21344
|
+
settingsDispatchExecutionGuardName: "调度执行守卫",
|
|
21345
|
+
settingsDispatchExecutionGuardNote: "执行期拦截子代理越权调用主控工具及等待子代理时的纯 sleep 空等;不改工具声明面,零损耗保护 Kimi 缓存",
|
|
21344
21346
|
settingsThresholdName: "催促阈值",
|
|
21345
21347
|
settingsThresholdNote: "连续这么多轮没有进展时,提醒 agent 汇报一次",
|
|
21346
21348
|
settingsLanguageName: "输出语言",
|
|
@@ -21383,6 +21385,8 @@ window.__ModuleLoader__.load({
|
|
|
21383
21385
|
settingsRetrievalNote: "Kimi Code only: project files, pages, and searches for navigation; keep source verbatim for editing and review; no effect on other lines",
|
|
21384
21386
|
settingsPlanModePipelineName: "Plan-mode pipeline",
|
|
21385
21387
|
settingsPlanModePipelineNote: "After the clarification interview converges, enter plan mode, write the plan and send it for approval (dispatch mode only); turning it off makes that mode ask the user to type /plan",
|
|
21388
|
+
settingsDispatchExecutionGuardName: "Dispatch execution guard",
|
|
21389
|
+
settingsDispatchExecutionGuardNote: "Block subagents from calling dispatcher-only tools at execution time and reject pure sleep waits while child agents run; keeps tool declarations untouched to protect the Kimi prefix cache",
|
|
21386
21390
|
settingsThresholdName: "Nudge threshold",
|
|
21387
21391
|
settingsThresholdNote: "Remind the agent after this many rounds without an update",
|
|
21388
21392
|
settingsLanguageName: "Output language",
|
|
@@ -22749,6 +22753,8 @@ window.__ModuleLoader__.load({
|
|
|
22749
22753
|
settingsRetrievalNote: "Только Kimi Code: проецировать файлы, страницы и поиск при навигации; сохранять код при правке и ревью; на других линиях переключатель ничего не меняет",
|
|
22750
22754
|
settingsPlanModePipelineName: "Конвейер режима плана",
|
|
22751
22755
|
settingsPlanModePipelineNote: "После схождения уточняющего интервью автоматически войти в режим плана, подготовить план и отправить его на утверждение (только в режиме диспетчера); если выключено, этот режим попросит пользователя ввести /plan вручную",
|
|
22756
|
+
settingsDispatchExecutionGuardName: "Защита выполнения диспетчера",
|
|
22757
|
+
settingsDispatchExecutionGuardNote: "Блокировать вызовы инструментов диспетчера субагентами во время выполнения и запрещать пустое ожидание sleep при активных дочерних агентах; не меняет объявления инструментов и сохраняет префиксный кеш Kimi",
|
|
22752
22758
|
settingsThresholdName: "Порог напоминания",
|
|
22753
22759
|
settingsThresholdNote: "Напомнить агенту после стольких раундов без отчёта",
|
|
22754
22760
|
settingsLanguageName: "Язык вывода",
|
|
@@ -55084,6 +55090,21 @@ window.__ModuleLoader__.load({
|
|
|
55084
55090
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "m7 10 2 2 4-4.5" })]
|
|
55085
55091
|
});
|
|
55086
55092
|
}
|
|
55093
|
+
/** 调度执行守卫那一行的标记:一面带勾的盾牌(挡住越权调用)。 */
|
|
55094
|
+
function DispatchGuardMark() {
|
|
55095
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
55096
|
+
viewBox: "0 0 20 20",
|
|
55097
|
+
width: "20",
|
|
55098
|
+
height: "20",
|
|
55099
|
+
fill: "none",
|
|
55100
|
+
stroke: "currentColor",
|
|
55101
|
+
strokeWidth: "1.6",
|
|
55102
|
+
strokeLinecap: "round",
|
|
55103
|
+
strokeLinejoin: "round",
|
|
55104
|
+
"aria-hidden": "true",
|
|
55105
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M10 3 4.5 5.2v4.6c0 3.8 2.3 6.4 5.5 7.2 3.2-.8 5.5-3.4 5.5-7.2V5.2L10 3Z" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "m7.5 10 1.8 1.8 3.4-3.6" })]
|
|
55106
|
+
});
|
|
55107
|
+
}
|
|
55087
55108
|
function PanelMark() {
|
|
55088
55109
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
55089
55110
|
viewBox: "0 0 20 20",
|
|
@@ -55160,6 +55181,7 @@ window.__ModuleLoader__.load({
|
|
|
55160
55181
|
const cacheWarmup = value.cacheWarmup !== false;
|
|
55161
55182
|
const retrieval = value.cacheWarmupRetrieval !== false;
|
|
55162
55183
|
const planModePipeline = value.planModePipeline !== false;
|
|
55184
|
+
const dispatchExecutionGuard = value.dispatchExecutionGuard !== false;
|
|
55163
55185
|
const threshold = typeof value.progressUpdatesNudgeThreshold === "number" ? value.progressUpdatesNudgeThreshold : 8;
|
|
55164
55186
|
const language = value.progressUpdatesLanguage === "zh" || value.progressUpdatesLanguage === "en" ? value.progressUpdatesLanguage : "auto";
|
|
55165
55187
|
const [draft, setDraft] = (0, react.useState)(() => String(threshold));
|
|
@@ -55318,6 +55340,27 @@ window.__ModuleLoader__.load({
|
|
|
55318
55340
|
}
|
|
55319
55341
|
})
|
|
55320
55342
|
}),
|
|
55343
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(CardRow, {
|
|
55344
|
+
part: "settings-row-dispatch-execution-guard",
|
|
55345
|
+
brand: "#3b7a9e",
|
|
55346
|
+
mark: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DispatchGuardMark, {}),
|
|
55347
|
+
name: translate("settingsDispatchExecutionGuardName"),
|
|
55348
|
+
note: failure?.row === "dispatchExecutionGuard" ? failure.text : translate("settingsDispatchExecutionGuardNote"),
|
|
55349
|
+
danger: failure?.row === "dispatchExecutionGuard",
|
|
55350
|
+
enabled: dispatchExecutionGuard,
|
|
55351
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
55352
|
+
type: "button",
|
|
55353
|
+
role: "switch",
|
|
55354
|
+
"aria-checked": dispatchExecutionGuard,
|
|
55355
|
+
"aria-label": translate("settingsDispatchExecutionGuardName"),
|
|
55356
|
+
className: "dsh-progress-switch",
|
|
55357
|
+
"data-dsh-part": "settings-dispatch-execution-guard-switch",
|
|
55358
|
+
disabled: !writable,
|
|
55359
|
+
onClick: () => {
|
|
55360
|
+
write("dispatchExecutionGuard", "dispatchExecutionGuard", !dispatchExecutionGuard);
|
|
55361
|
+
}
|
|
55362
|
+
})
|
|
55363
|
+
}),
|
|
55321
55364
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(CardRow, {
|
|
55322
55365
|
part: "settings-row-threshold",
|
|
55323
55366
|
brand: "#2f9e6e",
|
|
@@ -57420,26 +57463,10 @@ window.__ModuleLoader__.load({
|
|
|
57420
57463
|
className: "dsh-subagent-selection",
|
|
57421
57464
|
"data-dsh-part": "subagent-target",
|
|
57422
57465
|
children: [
|
|
57423
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("
|
|
57466
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("fieldset", {
|
|
57424
57467
|
className: "dsh-subagent-target-bar",
|
|
57425
57468
|
children: [
|
|
57426
|
-
/* @__PURE__ */ (0, react_jsx_runtime.
|
|
57427
|
-
className: "dsh-subagent-target-header",
|
|
57428
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
|
|
57429
|
-
className: "dsh-subagent-target-label",
|
|
57430
|
-
htmlFor: mainModelId,
|
|
57431
|
-
children: t("subagentMainModelLabel")
|
|
57432
|
-
}), activeModelKey !== "default" && state.activeTargetOverridden ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
57433
|
-
type: "button",
|
|
57434
|
-
className: "dsh-subagent-reset",
|
|
57435
|
-
"data-dsh-part": "subagent-reset-to-global",
|
|
57436
|
-
disabled,
|
|
57437
|
-
onClick: () => {
|
|
57438
|
-
props.resetActiveTarget();
|
|
57439
|
-
},
|
|
57440
|
-
children: t("subagentResetToGlobal")
|
|
57441
|
-
}) : null]
|
|
57442
|
-
}),
|
|
57469
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("legend", { children: t("subagentMainModelLabel") }),
|
|
57443
57470
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
|
|
57444
57471
|
id: mainModelId,
|
|
57445
57472
|
className: "dsh-subagent-select",
|
|
@@ -57497,10 +57524,10 @@ window.__ModuleLoader__.load({
|
|
|
57497
57524
|
children: mainModelName(key) + " (" + String(state.overridesByMainModel[key]?.length ?? 0) + ")"
|
|
57498
57525
|
}, key))]
|
|
57499
57526
|
}),
|
|
57500
|
-
/* @__PURE__ */ (0, react_jsx_runtime.
|
|
57527
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
57501
57528
|
className: "dsh-subagent-status",
|
|
57502
57529
|
"data-dsh-part": "subagent-target-status",
|
|
57503
|
-
children: activeModelKey === "default" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
57530
|
+
children: [activeModelKey === "default" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
57504
57531
|
className: "dsh-subagent-hint",
|
|
57505
57532
|
children: t("subagentTargetGlobalHint")
|
|
57506
57533
|
}) : state.activeTargetOverridden ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
@@ -57509,7 +57536,16 @@ window.__ModuleLoader__.load({
|
|
|
57509
57536
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
57510
57537
|
className: "dsh-subagent-hint",
|
|
57511
57538
|
children: t("subagentTargetFollowGlobalStatus")
|
|
57512
|
-
})
|
|
57539
|
+
}), activeModelKey !== "default" && state.activeTargetOverridden ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
57540
|
+
type: "button",
|
|
57541
|
+
className: "dsh-subagent-reset",
|
|
57542
|
+
"data-dsh-part": "subagent-reset-to-global",
|
|
57543
|
+
disabled,
|
|
57544
|
+
onClick: () => {
|
|
57545
|
+
props.resetActiveTarget();
|
|
57546
|
+
},
|
|
57547
|
+
children: t("subagentResetToGlobal")
|
|
57548
|
+
}) : null]
|
|
57513
57549
|
})
|
|
57514
57550
|
]
|
|
57515
57551
|
}),
|
|
@@ -58177,26 +58213,19 @@ window.__ModuleLoader__.load({
|
|
|
58177
58213
|
|
|
58178
58214
|
.dsh-subagent-target-bar {
|
|
58179
58215
|
display: grid;
|
|
58216
|
+
align-content: start;
|
|
58180
58217
|
gap: 8px;
|
|
58181
|
-
|
|
58218
|
+
min-width: 0;
|
|
58219
|
+
margin: 0;
|
|
58220
|
+
padding: 10px;
|
|
58182
58221
|
border: 0.5px solid var(--dsw-alias-border-l4);
|
|
58183
58222
|
border-radius: var(--dsw-radius-lg, 10px);
|
|
58184
|
-
background:
|
|
58185
|
-
min-width: 0;
|
|
58186
|
-
}
|
|
58187
|
-
|
|
58188
|
-
.dsh-subagent-target-header {
|
|
58189
|
-
display: flex;
|
|
58190
|
-
align-items: center;
|
|
58191
|
-
justify-content: space-between;
|
|
58192
|
-
gap: 8px;
|
|
58193
|
-
min-width: 0;
|
|
58223
|
+
background: transparent;
|
|
58194
58224
|
}
|
|
58195
58225
|
|
|
58196
|
-
.dsh-subagent-target-
|
|
58226
|
+
.dsh-subagent-target-bar > legend {
|
|
58227
|
+
padding: 0 4px;
|
|
58197
58228
|
font-size: 12px;
|
|
58198
|
-
font-weight: 500;
|
|
58199
|
-
line-height: 1.5;
|
|
58200
58229
|
color: var(--dsw-alias-label-secondary);
|
|
58201
58230
|
}
|
|
58202
58231
|
|
|
@@ -58204,9 +58233,9 @@ window.__ModuleLoader__.load({
|
|
|
58204
58233
|
height: 34px;
|
|
58205
58234
|
width: 100%;
|
|
58206
58235
|
padding: 0 10px;
|
|
58207
|
-
border: 0.5px solid var(--dsw-alias-border-
|
|
58236
|
+
border: 0.5px solid var(--dsw-alias-border-l3);
|
|
58208
58237
|
border-radius: var(--dsw-radius-md, 8px);
|
|
58209
|
-
background: var(--dsw-alias-bg-layer-
|
|
58238
|
+
background: var(--dsw-alias-bg-layer-1, transparent);
|
|
58210
58239
|
color: var(--dsw-alias-label-primary);
|
|
58211
58240
|
font: inherit;
|
|
58212
58241
|
font-size: 13px;
|
|
@@ -58215,9 +58244,16 @@ window.__ModuleLoader__.load({
|
|
|
58215
58244
|
cursor: pointer;
|
|
58216
58245
|
}
|
|
58217
58246
|
|
|
58247
|
+
@media (hover: hover) {
|
|
58248
|
+
.dsh-subagent-select:hover:not(:disabled) {
|
|
58249
|
+
border-color: var(--dsw-alias-border-l4);
|
|
58250
|
+
background: var(--dsw-alias-bg-layer-2);
|
|
58251
|
+
}
|
|
58252
|
+
}
|
|
58253
|
+
|
|
58218
58254
|
.dsh-subagent-select option,
|
|
58219
58255
|
.dsh-subagent-select optgroup {
|
|
58220
|
-
background: var(--dsw-alias-bg-layer-
|
|
58256
|
+
background: var(--dsw-alias-bg-layer-2, #1e1e1e);
|
|
58221
58257
|
color: var(--dsw-alias-label-primary, #e5e5e5);
|
|
58222
58258
|
}
|
|
58223
58259
|
|
|
@@ -58243,7 +58279,7 @@ window.__ModuleLoader__.load({
|
|
|
58243
58279
|
padding: 3px 10px;
|
|
58244
58280
|
border: 0.5px solid var(--dsw-alias-border-l3);
|
|
58245
58281
|
border-radius: 999px;
|
|
58246
|
-
background:
|
|
58282
|
+
background: transparent;
|
|
58247
58283
|
color: var(--dsw-alias-label-secondary);
|
|
58248
58284
|
font: inherit;
|
|
58249
58285
|
font-size: 12px;
|
|
@@ -58251,6 +58287,13 @@ window.__ModuleLoader__.load({
|
|
|
58251
58287
|
cursor: pointer;
|
|
58252
58288
|
}
|
|
58253
58289
|
|
|
58290
|
+
@media (hover: hover) {
|
|
58291
|
+
.dsh-subagent-chip:hover:not(:disabled):not([aria-pressed='true']) {
|
|
58292
|
+
background: var(--dsw-alias-bg-layer-4);
|
|
58293
|
+
color: var(--dsw-alias-label-primary);
|
|
58294
|
+
}
|
|
58295
|
+
}
|
|
58296
|
+
|
|
58254
58297
|
.dsh-subagent-chip[aria-pressed='true'] {
|
|
58255
58298
|
border-color: var(--dsw-alias-brand-primary, #e06c3b);
|
|
58256
58299
|
background: color-mix(in srgb, var(--dsw-alias-brand-primary, #e06c3b) 15%, transparent);
|
|
@@ -58270,13 +58313,15 @@ window.__ModuleLoader__.load({
|
|
|
58270
58313
|
justify-content: space-between;
|
|
58271
58314
|
gap: 8px;
|
|
58272
58315
|
min-width: 0;
|
|
58316
|
+
padding-top: 6px;
|
|
58317
|
+
border-top: 0.5px solid var(--dsw-alias-border-l3);
|
|
58273
58318
|
}
|
|
58274
58319
|
|
|
58275
58320
|
.dsh-subagent-reset {
|
|
58276
|
-
padding:
|
|
58277
|
-
border: 0.5px solid var(--dsw-alias-border-
|
|
58278
|
-
border-radius: var(--dsw-radius-
|
|
58279
|
-
background:
|
|
58321
|
+
padding: 2px 8px;
|
|
58322
|
+
border: 0.5px solid var(--dsw-alias-border-l3);
|
|
58323
|
+
border-radius: var(--dsw-radius-sm, 6px);
|
|
58324
|
+
background: transparent;
|
|
58280
58325
|
color: var(--dsw-alias-label-secondary);
|
|
58281
58326
|
font: inherit;
|
|
58282
58327
|
font-size: 12px;
|