@eddyskywalker/dsh-chatgpt-subscription 0.8.3 → 0.8.4

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.
Files changed (2) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/package.json +31 -31
package/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ - **支持 DSH 0.1.7-rc.2**(本机 harness checkout 的 HEAD `477b4f4205` 就是 `dsh-v0.1.7-rc.2` 本身,`packages/boot/app-boot/package.json` 与 `dsh --version` 都答 `0.1.7-rc.2`;npm 上 `next` 也是它,`latest` 仍是 `0.1.5-rc.3`)。这一版同样**不需要任何行为改动**,而且这次有直接证据:同一份源码在精确钉住的 rc.1 与 rc.2 两个净室里**结果逐项相同**(1315 条通过 / 0 失败)。窗口 `dsh-v0.1.7-rc.1..dsh-v0.1.7-rc.2` 是 346 个提交 / 3429 个文件,收敛到本插件导入的二十个包后只有六个有源码改动,动作落在基线、依赖清单与两处需要说清的行为变更上。
6
+ - **rc.2 的头号特性(会话中途变更工具声明)在本插件这里是空集,且由构造保证**:agent-loop 现在会写 `developer/message` 携带 `tool-addition` / `tool-removal` 块(`packages/core/agent-loop/src/agent.ts:626`),`dsh-llm` 新增 `ToolUpdate`(`'in-history' | 'addition-only'`)、`LlmResolvedModelInfo.toolUpdate?`、`GenerateOptions.toolHistory?`,并在派发时按线路投影(`content.ts` 的 `projectToolUpdates`、`index.ts:1075`)。本插件任何线路都没有声明 `toolUpdate`(`grep -rn "toolUpdate\|deferLoading" src` 为 **0**),于是投影走第一分支:**剥掉全部 developer 消息、并去掉每个工具的 `deferLoading`**——mapper 收到的仍是「完整当前工具列表 + 无 developer 消息」,与 rc.1 的内容一致(rc.1 本来也没有这些块的产出方)。`agent.ts:394` 同样把 `startsSeries` 收紧为 `preparedCall?.toolUpdate === undefined && this.toolsChanged(...)`,未声明时保留 rc.1 行为。**未采用 `toolUpdate`**:它能让本线路在工具变更时缓存稳定前缀,但那是一个要逐线路核对线协议的优化,不是修复。另外这个接缝**本插件的测试根本看不见**——投影发生在 adapter 之上的 `LlmRuntime`,直接调用 mapper 的用例永远碰不到它,结论全部来自读 harness 源码。
7
+ - **GUI 选择模型从「目录仅供参考」变成硬门槛**:`packages/api/session-controller/src/catalog.ts` 新增 `modelAvailable()`——provider 要在 `listProviders()` 里**且** `await listModels(provider)` 要包含该 model id——`commands.ts:380` 在 `selectModel` 开头用新的 `requireModel()` 拦截,失败为 `session/model-unavailable`;`routableProviders` 也从裸的 provider 列表改成「至少广告了一个模型」的组。**同一个提交里发送路径反而更宽松**:`sendPrompt` 的 `routeServed()` 检查连同整个函数被删掉。客户端 `directory.ts` 把 `routable` 的语义从「有 adapter 服务该 provider」改成「当前选择出现在可用目录里」,并移除了 `ModelDirectoryResolver` 的 `blockReason` 配置与 `conversation.blocks` 发布——选择掉出目录时输入框不再被置灰。**对本插件的影响**:六条线路都各自广告了自己提供的模型(Codex 用 `CODEX_MODEL_CATALOG` 按 `visibleModelIds` 过滤、antigravity 用内置表、zhipu 未登录时回落 `FALLBACK_MODELS`),离线时选择照常;但 `command-code` / `kimi-code` / `workbuddy` 三条线路的 `catalog()` 要读远端列表,**该请求失败时改模型会失败**,rc.1 则允许。这与 Codex 主线路此前那次「持久化目录快照」是同一个失效形态,而门槛是 harness 有意加的,**因此不加桥接**——把刚建立的门槛「简化」掉正是要避免的做法,仅记录待维护者决定。另外 `ModelDirectoryState` 新增了**必填**的 `pending` 与可选 `retainedEffort`,本插件只读 `directory.store`、从不构造该对象,所以强制 typecheck 干净。
8
+ - **新增一等公民的额度提示面,未采用**:`dsh-llm` 的 `error.ts:31` 新增 `ACCOUNT_QUOTA_EXCEEDED_CODE = 'ACCOUNT_QUOTA'`(唯一产出方是 `llm-deepseek-account`),`ui-chat` 新增框架级 `QuotaNoticeHost`(挂在 `shell.overlay`)与新槽位 `shell.quota-notice`,可注册以取代通用 Toast(`QuotaNoticeCode = 'QUOTA' | 'ACCOUNT_QUOTA'`)。本插件**不抛**这两个码(0 处引用),所以这个面不会为它触发,额度仍只由输入框胶囊与设置卡片承载。为 ChatGPT 订阅额度注册 `shell.quota-notice` 视图是真实的产品增项,但它是功能而非兼容修复;`ACCOUNT_QUOTA` 尤其会把用户引向 DeepSeek 的充值页,对 ChatGPT 订阅并不适用。
9
+ - **vendor 本轮零改动**:`git diff dsh-v0.1.7-rc.1..dsh-v0.1.7-rc.2 -- vendor` 为**空**,cordis / loader / schemastery 都没动,因此不像 alpha.1→rc.1 那样需要重新钉版本。`dsh-web`、`dsh-host-webserver`、`dsh-attachment`、`dsh-timeout`、`dsh-settings` 的 `src` 树**逐字节相同**(用 git tree hash 核对,不是读 diff),只有 `package.json` 与 `README.i18n.yaml` 变化。窗口里那两处 web 改动属于**另一个包** `@deepseek-ai/dsh-tool-web`(是组合的依赖,不是 `dsh-web` 的),且只改了面向模型的提示文案(`TOOL_WEB_FETCH` 段与 `web_search` 描述变短),其 `Config` 两代逐字节相同,因此预设行 `{ fetch: true, searchTimeoutMs: 60000 }` 照旧校验。`dsh-tools` 只在 `PreToolDecision` 的 `ask` 分支加了可选 `displayReason`(本插件从不构造该联合,只包装 guard);`ui-tool` 是纯加项(`ToolRowProps.href`、`webFetchHref()`、`schedule_update`),`tool.call.toolview` 的注册 API 与阶段联合未变;`ui-settings` 只在**我们不注册**的 `settings.launcher` 上加了必填 `settingsOpen`;`ui-conversation` 的必填 `hooks.stopShortcut` 加在**父级** `conversation.composer.bar` 注册上,而 `conversation.input.right` 未声明 `inject`,六个胶囊的 `PropsRuntime` 不变,`DEVELOPER_TOOLS_VIEW_ID` → `TRAJECTORY_VIEW_ID` 的重命名没有从客户端入口再导出、本插件也没有引用;`ui-model-selection` 的 `catalog.ts` 新增 `reasoningFor()` 并订阅 `credentials/record-updated`(我们的凭据写入现在也会刷新目录,无害)。
10
+ - **peer 子句这次是「必须」而不是「可读性」**:`test/package-integrity.test.ts:67` 会把 peer 范围按 `||` 切开,断言每个 devDependency 范围字符串**逐字**出现在其中。所以把 devDeps 升到 `^0.1.7-rc.2` 而不同时在 peer 并集里加 `|| ^0.1.7-rc.2`,套件会**直接失败**。(这是实测撞出来的:某次净室把 devDeps 钉成裸的 `0.1.7-rc.1`,报错正是这条断言。)启动期的 peer 兼容性预检(rc.1 引入)依旧存在且本插件照旧通过——对 `0.1.7-rc.2` / `rc.1` / `0.1.7-alpha.2` / `alpha.1` / `0.1.6-alpha.1` / `0.1.5-rc.3` / `0.1.2-alpha.5` 七个运行版本逐条 `semver.satisfies` 探针全部 OK(`^0.1.7-rc.1` 本就覆盖 rc.2,同一个 `0.1.7` 元组)。
11
+ - **升级基线不能靠增量 `npm install`**:带着 rc.1 的 lockfile 直接装 rc.2 会 `ERESOLVE`——`dsh-attachment@0.1.7-rc.2` 把 peer `@deepseek-ai/dsh-brand@0.1.7-rc.2` **精确**钉住,npm 不肯为了让新请求的包成立而移动一个无关的传递依赖。改为清空重生成(`rm -rf node_modules package-lock.json && npm install`)后 `npm ci --dry-run` 报 up to date。以后凡是跨到 harness 精确钉内部 peer 的元组,都要预期这一步。
12
+ - **验证**:三个房间跑的是**同一份源码**,因此可直接对比。新基线(仓库内,36 个包 @ rc.2):`tsc -b --force`(host + client)与 `tsc -p test/tsconfig.json` 全清;`npm run build` 干净;`npx vitest run` **103 个文件通过 / 1 跳过(104),1315 条通过 / 7 跳过、0 失败**。**注意 `npm run typecheck` 单独跑会在 3.2s 内回放 `lib/*.tsbuildinfo` 而「通过」,只有强制全量才作数。**`npm ci --dry-run` 同步;`npm pack --dry-run` **292 个文件 / 755.7 kB**(rc.1 记录的 282 / 735.0 是插件自身新增线路带来的,与 rc.2 无关);另扫了一遍 `lib/types/**/*.d.ts` 有无缺源码对应的孤立声明,**没有**。rc.1 对照房间(精确钉 36 个包 @ rc.1):`tsc -b` 0 错误,`npx vitest run` **1315 条通过 / 0 失败**,与 rc.2 **逐项相同**。旧代房间(devDeps `^0.1.5-rc.1` 实得 0.1.5-rc.3,28 个包,未用 `--legacy-peer-deps`):`tsc -b` 0 错误,**1312 条通过 / 0 失败**,唯一无法加载的仍是 `test/subagent-model-authorization-ptc.test.ts`(0.1.5 闭包里没有 `@deepseek-ai/dsh-ptc-runtime`,差的 3 条即 1319−1315)。
13
+ - **pnpm 清单同步**:`pnpm-workspace.yaml` 的 `minimumReleaseAgeExclude` 36 行全部改为 `0.1.7-rc.1 || 0.1.7-rc.2`(沿用 vendor 行「旧版本作备选」的写法,rc.1 仍需可安装),并补上 `dsh-hmr` 与 `dsh-workspace`——两者在 lock 里都是 `0.1.7-rc.2` 却不在 rc.1 的清单里,lock 与排除清单的 1:1 不变量已经漂移,现为 **38:38** 完全对齐。`pnpm-lock.yaml` 用 pnpm 11.24.0 重新生成(`lockfileVersion '9.0'`,36 个 dsh 包全为 `0.1.7-rc.2`),`pnpm install --lockfile-only --frozen-lockfile` **退出码 0**,供应链策略校验通过(363 条)。CI 走 `npm ci`,这两个文件只影响用 pnpm 安装的人。
14
+ - **本轮踩到两个净室脚本陷阱,记下来免得下轮重复**:(1) 为省时间删掉 `mermaid` 依赖,会让 `test/routes.test.ts` 的 mermaid 路由断言以 404 失败——它是 `lib/index.js` 的真实运行时依赖,不是「只给渲染器测试用」;(2) `^0.1.7-rc.1` **并不能**钉住 rc.1,npm 会装 rc.2,所以对照房间必须钉精确版本(并且要保住上面那条 dev/peer 不变量),否则它只是基线房间的重复。
15
+
5
16
  - **发版修正:`latest` 不再停在 0.7.0**。用户反馈「更新了一下,从 0.8 又变成 0.7 了」——npm 上 `latest` 一直是 **0.7.0**,而 `0.8.0-alpha.0` 到 `0.8.2` 全部落在 `alpha` 标签下,`npm install` 与 `dsh plugin add` 不带标签时解析的正是 `latest`,所以从 0.8 升级会退回 0.7。根因是 `package.json` 里的 `publishConfig.tag: "alpha"`:它让**每一次**发布都进 `alpha`,`latest` 因此自 0.7.0 之后再没动过。
6
17
  - **修法一:把已发布的 0.8.2 提升为 `latest`**(`npm dist-tag add @eddyskywalker/dsh-chatgpt-subscription@0.8.2 latest`)——不重新发版。提升前逐文件核对了 npm 上的 0.8.2 与本地源码的干净构建(`rm -rf lib && npm run build` 后 `npm pack`):`lib/index.js`、`lib/client.js`、`lib/client.js.map` **逐字节相同**,其余声明文件一致,因此提升 0.8.2 等于发布当前源码。0.8.2 里比干净构建多出 `lib/types/host/compaction-patch.d.ts{,.map}` 两个**孤立**声明文件(仓库里没有对应源码、也没有任何代码引用,是发布当时 `lib/` 的增量残留),运行时不受影响;这类残留正是下面那条「发版前清空 `lib/`」的原因。
7
18
  - **修法二:删掉 `publishConfig.tag`(保留 `access: public`)**,让稳定版按 npm 默认进 `latest`。这不是把预发布也推向 `latest`:npm 11 起对预发布版本**强制要求显式 `--tag`**(`You must specify a tag using --tag when publishing a prerelease version.`,见 npm 的 `lib/commands/publish.js`),所以下一次 alpha 必须写明 `npm publish --tag alpha`,不会静默盖掉 `latest`。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eddyskywalker/dsh-chatgpt-subscription",
3
- "version": "0.8.3",
3
+ "version": "0.8.4",
4
4
  "description": "DSH provider plugin for Codex access through a ChatGPT subscription.",
5
5
  "author": {
6
6
  "name": "eddyskywalker",
@@ -60,42 +60,42 @@
60
60
  "peerDependencies": {
61
61
  "@deepseek-ai/cordis": "^4.0.2",
62
62
  "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
63
- "@deepseek-ai/dsh-attachment": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
64
- "@deepseek-ai/dsh-client-connection": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
65
- "@deepseek-ai/dsh-client-locale": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
66
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
67
- "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
68
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
69
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
70
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
71
- "@deepseek-ai/dsh-client-ui-tool": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
72
- "@deepseek-ai/dsh-host-webserver": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
73
- "@deepseek-ai/dsh-llm": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
74
- "@deepseek-ai/dsh-settings": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
75
- "@deepseek-ai/dsh-timeout": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
76
- "@deepseek-ai/dsh-tools": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
77
- "@deepseek-ai/dsh-web": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1",
63
+ "@deepseek-ai/dsh-attachment": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
64
+ "@deepseek-ai/dsh-client-connection": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
65
+ "@deepseek-ai/dsh-client-locale": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
66
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
67
+ "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
68
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
69
+ "@deepseek-ai/dsh-client-ui-settings": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
70
+ "@deepseek-ai/dsh-client-ui-slots": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
71
+ "@deepseek-ai/dsh-client-ui-tool": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
72
+ "@deepseek-ai/dsh-host-webserver": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
73
+ "@deepseek-ai/dsh-llm": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
74
+ "@deepseek-ai/dsh-settings": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
75
+ "@deepseek-ai/dsh-timeout": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
76
+ "@deepseek-ai/dsh-tools": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
77
+ "@deepseek-ai/dsh-web": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2",
78
78
  "@deepseek-ai/schemastery": "^3.18.2",
79
79
  "react": "^18.2.0"
80
80
  },
81
81
  "devDependencies": {
82
82
  "@deepseek-ai/cordis": "^4.0.2",
83
83
  "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
84
- "@deepseek-ai/dsh-attachment": "^0.1.7-rc.1",
85
- "@deepseek-ai/dsh-client-connection": "^0.1.7-rc.1",
86
- "@deepseek-ai/dsh-client-locale": "^0.1.7-rc.1",
87
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.7-rc.1",
88
- "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.7-rc.1",
89
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.7-rc.1",
90
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.7-rc.1",
91
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.7-rc.1",
92
- "@deepseek-ai/dsh-client-ui-tool": "^0.1.7-rc.1",
93
- "@deepseek-ai/dsh-host-webserver": "^0.1.7-rc.1",
94
- "@deepseek-ai/dsh-llm": "^0.1.7-rc.1",
95
- "@deepseek-ai/dsh-settings": "^0.1.7-rc.1",
96
- "@deepseek-ai/dsh-timeout": "^0.1.7-rc.1",
97
- "@deepseek-ai/dsh-tools": "^0.1.7-rc.1",
98
- "@deepseek-ai/dsh-web": "^0.1.7-rc.1",
84
+ "@deepseek-ai/dsh-attachment": "^0.1.7-rc.2",
85
+ "@deepseek-ai/dsh-client-connection": "^0.1.7-rc.2",
86
+ "@deepseek-ai/dsh-client-locale": "^0.1.7-rc.2",
87
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.1.7-rc.2",
88
+ "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.7-rc.2",
89
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.1.7-rc.2",
90
+ "@deepseek-ai/dsh-client-ui-settings": "^0.1.7-rc.2",
91
+ "@deepseek-ai/dsh-client-ui-slots": "^0.1.7-rc.2",
92
+ "@deepseek-ai/dsh-client-ui-tool": "^0.1.7-rc.2",
93
+ "@deepseek-ai/dsh-host-webserver": "^0.1.7-rc.2",
94
+ "@deepseek-ai/dsh-llm": "^0.1.7-rc.2",
95
+ "@deepseek-ai/dsh-settings": "^0.1.7-rc.2",
96
+ "@deepseek-ai/dsh-timeout": "^0.1.7-rc.2",
97
+ "@deepseek-ai/dsh-tools": "^0.1.7-rc.2",
98
+ "@deepseek-ai/dsh-web": "^0.1.7-rc.2",
99
99
  "@deepseek-ai/schemastery": "^3.18.2",
100
100
  "@types/node": "^22.20.0",
101
101
  "@types/react": "~18.3.1",