@michengai/dsh-agency-agents 0.1.36 → 0.1.39

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 CHANGED
@@ -4,26 +4,34 @@
4
4
 
5
5
  The five most recent published versions are listed below.
6
6
 
7
- ## Unreleased
7
+ ## 0.1.39 - 2026-09-11
8
+
9
+ - Add compatibility with DSH `0.1.5-rc.2` while retaining support for previously supported RC versions.
10
+
11
+ ## 0.1.38 - 2026-09-10
12
+
13
+ - Support DSH `0.1.5-rc.1` while retaining compatibility with validated older versions.
14
+ - Restore focus after closing prompt previews for smoother keyboard navigation.
15
+ - Fix startup warnings and cleanup of previously deleted experts on older DSH versions.
16
+
17
+ ## 0.1.37 - 2026-09-10
18
+
19
+ This version was not published to npm. Please use `0.1.38` instead.
8
20
 
9
21
  ## 0.1.36 - 2026-09-09
10
22
 
11
- - Added custom expert management with creation, editing, copying built-ins, avatar and Emoji selection, and source and enabled-state filters. Custom experts are available through @ suggestions, the chat picker, and summon tools.
12
- - Made deletion permanent with immediate capacity recovery and automatic cleanup of legacy soft-deleted records. Name conflicts retain rename and delete access in Settings instead of making the entire catalog unavailable.
13
- - Strengthened settings revision and catalog consistency checks, rejected invalid enablement entries, and prevented in-flight reads and delayed write receipts from overwriting newer results.
14
- - Preserved drafts during editing conflicts and added review of the latest content before saving. Stale local catalogs no longer block valid saves after another window deletes or renames an expert to release its name.
15
- - Made viewing, copying, and summoning nested experts read the actual file selected by the catalog, avoiding missing prompts or the wrong persona from a same-named file.
16
- - Refined chat entry spacing, dropdown styling, blue focus feedback, and layered Escape handling. Prompt previews use a native dialog, and custom reference chips retain the same icon-and-name presentation as built-ins.
17
- - Fixed a concurrency gap in automatic update locking and made release validation compatible with Windows CRLF line endings.
23
+ - Create custom experts with your own instructions or adapt built-in experts, then select them using @ or the Experts button.
24
+ - Filter, edit, enable, disable, and permanently delete experts. Drafts are preserved when edits from multiple windows conflict.
25
+ - Improve expert menus and keyboard navigation, and fix prompt viewing, copying, and expert invocation issues.
18
26
 
19
27
  ## 0.1.35 - 2026-09-09
20
28
 
21
- - Unified settings headings, descriptions, and action layouts; maintenance controls no longer squeeze titles or versions. The layout adapts to native DSH settings without Codex UI.
29
+ - Improve Expert Settings layout so buttons no longer crowd the title and version, with support for the native DSH interface.
22
30
 
23
31
  ## 0.1.34 - 2026-09-08
24
32
 
25
- - Fixed the composer Expert picker so its scrollable menu opens within the available viewport space instead of being clipped when many experts are enabled.
26
- - Kept the initial enabled-first ordering in Expert Settings stable while toggling individual experts, preventing cards from jumping during bulk setup.
33
+ - Fix clipped expert menus when many experts are enabled, with scrolling within the available space.
34
+ - Keep expert cards in place when toggling them for smoother consecutive actions.
27
35
 
28
36
  ## 0.1.33 - 2026-09-07
29
37
 
@@ -4,26 +4,34 @@
4
4
 
5
5
  以下记录最近发布的五个版本。
6
6
 
7
- ## 未发布
7
+ ## 0.1.39 - 2026-09-11
8
+
9
+ - 新增对 DSH `0.1.5-rc.2` 的兼容支持,保留已支持的旧 RC 版本。
10
+
11
+ ## 0.1.38 - 2026-09-10
12
+
13
+ - 适配 DSH `0.1.5-rc.1`,保留已验证旧版本的兼容支持。
14
+ - 修复关闭提示词预览后焦点丢失的问题,方便继续使用键盘操作。
15
+ - 修复部分旧版 DSH 的启动警告及旧删除记录清理问题。
16
+
17
+ ## 0.1.37 - 2026-09-10
18
+
19
+ 此版本未发布到 npm,请直接使用 `0.1.38`。
8
20
 
9
21
  ## 0.1.36 - 2026-09-09
10
22
 
11
- - 新增自定义专家管理:支持创建、编辑、复制内置专家、选择头像与 Emoji,以及来源和启用状态筛选;自定义专家可从 @ 候选、聊天入口和召唤工具调用。
12
- - 专家删除改为永久删除并立即释放名额,自动清理旧版软删除记录;名称冲突保留设置页改名和删除入口,不再导致整张名册不可用。
13
- - 加强配置修订号和名册一致性校验,拒绝无效启用项,防止在途旧查询及延迟写入回执覆盖最新结果。
14
- - 编辑冲突时保留草稿,支持读取并核对最新内容后再保存;其他窗口删除或改名释放名称后,旧本地名册不再阻止合法保存。
15
- - 嵌套目录专家的查看、复制与召唤均读取名册选中的实际文件,避免正文缺失或读到同名专家的错误 persona。
16
- - 优化聊天入口间距、下拉样式、蓝色焦点反馈和 Escape 分层处理;提示词预览使用原生弹窗,自定义引用标签与内置保持统一图标和纯名称。
17
- - 修复自动更新请求的并发锁空档,并让发布校验兼容 Windows CRLF 换行。
23
+ - 新增自定义专家:创建角色、编写提示词,或复制内置专家后修改,启用后即可通过 @ 或「专家」按钮选择。
24
+ - 支持筛选、编辑、启停和永久删除;多窗口编辑冲突时保留草稿,避免修改丢失。
25
+ - 优化专家菜单和键盘操作,修复提示词查看、复制及调用问题。
18
26
 
19
27
  ## 0.1.35 - 2026-09-09
20
28
 
21
- - 统一设置页标题、说明与操作布局,标题及版本不再被维护按钮挤压;适配原生 DSH 设置内容区,无需安装 Codex UI。
29
+ - 优化专家设置页布局,标题和版本号不再被按钮挤压,适配原生 DSH 界面。
22
30
 
23
31
  ## 0.1.34 - 2026-09-08
24
32
 
25
- - 修复输入框「专家」选择器在启用较多专家时超出视口而被截断的问题,菜单现在会在可用空间内展开并滚动。
26
- - 设置页首次进入后保持已启用优先的卡片顺序,连续启停专家不再让卡片跳动。
33
+ - 修复专家较多时选择菜单显示不全的问题,支持在可用空间内滚动。
34
+ - 启停专家时保持卡片位置稳定,避免连续操作时跳动。
27
35
 
28
36
  ## 0.1.33 - 2026-09-07
29
37
 
package/README.md CHANGED
@@ -64,8 +64,14 @@ For a ready-to-use workbench, download [DSH Codex Desktop](https://github.com/Mi
64
64
  - Examples use the `web` profile; replace it with the target profile.
65
65
  - Source installation and development require Node.js 22+ and pnpm. npm installation does not require running `pnpm install` separately.
66
66
 
67
+ ## Host dependencies and compatibility
68
+
69
+ DSH `dsh.client.inject` controls browser module loading order. Missing graph entries are skipped, and frozen modules need not exist as npm packages in a profile. Runtime / primitives entries remain for validated older RCs. Required peers such as `dsh-client-ui-slots` retain the runtime contract. Profiles with `auto-install-peers` disabled may report unmet peers; strict peer checks may also block installation. Check the host version and browser module availability rather than inferring runtime failure solely from the npm tree.
70
+
67
71
  ## Installation
68
72
 
73
+ Supported DeepSeek Harness RC versions: `0.1.0-rc.8`, `0.1.1-rc.2`, `0.1.2-rc.1`, `0.1.5-rc.1`, and `0.1.5-rc.2`. The host is supplied by your existing CLI or Desktop installation; the plugin does not install another copy. Future RC versions require separate compatibility validation.
74
+
69
75
  The installation commands below use the official npm registry.
70
76
 
71
77
  ### Ask an agent to install it (recommended)
@@ -738,7 +744,18 @@ pnpm test
738
744
  pnpm verify
739
745
  ```
740
746
 
741
- `prepublishOnly` runs these build, test, and package-integrity checks before publishing.
747
+ `prepublishOnly` runs the build, unit tests, browser regressions, and package-integrity checks before publishing. Release CI installs Chromium and its system dependencies; before the first local release, run the browser installation command below.
748
+
749
+ Run browser interaction regressions separately (real React DOM and Chromium; no DSH credentials or user profile required):
750
+
751
+ ```powershell
752
+ [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
753
+ $OutputEncoding = [System.Text.Encoding]::UTF8
754
+ pnpm exec playwright install chromium
755
+ pnpm test:browser
756
+ ```
757
+
758
+ Coverage includes asynchronous loading, focus restoration after Escape, close-button and backdrop dismissal, StrictMode, and successive triggers. These component tests do not replace real-host or model-delegation acceptance. Browser tests bundle source rather than loading the published `lib/client.js`; artifacts still require build, package checks, and real-host acceptance. Override the default port 18769 with the `AGENCY_BROWSER_TEST_PORT` environment variable if needed.
742
759
 
743
760
  ## Custom experts
744
761
 
package/README.zh-CN.md CHANGED
@@ -64,8 +64,14 @@
64
64
  - 以下示例使用 `web` profile;请替换为实际目标 profile。
65
65
  - 从源码安装或二次开发需要 Node.js 22+ 与 pnpm;仅从 npm 安装无需单独执行 `pnpm install`。
66
66
 
67
+ ## 宿主依赖与兼容性
68
+
69
+ DSH 的 `dsh.client.inject` 声明浏览器模块的加载顺序;宿主模块图中不存在的项会跳过,冻结模块也不一定对应 Profile 内的 npm 包。为兼容已验证的旧 RC,保留 runtime / primitives 条目。`dsh-client-ui-slots` 等 required peer 仍表达运行时契约;关闭 `auto-install-peers` 的 Profile 可能出现 unmet peer 提示,严格 peer 检查还可能阻止安装,需核对宿主版本及浏览器模块是否提供,不能据 npm 包树缺失直接判定运行失败。
70
+
67
71
  ## 安装
68
72
 
73
+ 支持的 DeepSeek Harness RC 版本:`0.1.0-rc.8`、`0.1.1-rc.2`、`0.1.2-rc.1`、`0.1.5-rc.1`、`0.1.5-rc.2`。主程序由现有 CLI 或 Desktop 提供,插件不会另行安装;后续 RC 需另行验证兼容性。
74
+
69
75
  以下安装命令使用官方 npm 源。
70
76
 
71
77
  ### 让 Agent 帮你安装(推荐)
@@ -738,7 +744,18 @@ pnpm test
738
744
  pnpm verify
739
745
  ```
740
746
 
741
- `prepublishOnly` 会在发布前依次执行上述构建、测试和包完整性检查。
747
+ `prepublishOnly` 在发布前执行构建、单元测试、浏览器回归和包完整性检查;发布 CI 自动安装 Chromium 及系统依赖。首次本地发布前需执行下方浏览器安装命令。
748
+
749
+ 浏览器交互回归独立运行(真实 React DOM 与 Chromium,不需要 DSH 认证或用户 Profile):
750
+
751
+ ```powershell
752
+ [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
753
+ $OutputEncoding = [System.Text.Encoding]::UTF8
754
+ pnpm exec playwright install chromium
755
+ pnpm test:browser
756
+ ```
757
+
758
+ 覆盖异步加载后通过 Escape、关闭按钮和遮罩退出时的焦点恢复,以及 StrictMode 和连续打开不同专家。该测试验证组件交互,不替代真实宿主和模型委派验收。 浏览器测试从源码构建,不加载发布的 `lib/client.js`;产物仍需构建、包校验及真实宿主验收。端口默认 18769,占用时可通过 `AGENCY_BROWSER_TEST_PORT` 环境变量覆盖。
742
759
 
743
760
  ## 自定义专家
744
761
 
package/lib/client.js CHANGED
@@ -34,13 +34,13 @@ window.__ModuleLoader__.load({
34
34
  const dialog = react.default.useRef(null);
35
35
  react.default.useEffect(() => {
36
36
  const node = dialog.current;
37
- const previous = document.activeElement;
37
+ const previous = props.returnFocus;
38
38
  node?.showModal();
39
39
  return () => {
40
40
  node?.close();
41
- previous?.focus();
41
+ if (previous.isConnected) previous.focus({ preventScroll: true });
42
42
  };
43
- }, []);
43
+ }, [props.returnFocus]);
44
44
  return react.default.createElement("dialog", {
45
45
  ref: dialog,
46
46
  className: "aag-prompt-modal",
@@ -61,7 +61,10 @@ window.__ModuleLoader__.load({
61
61
  onMouseDown: (event) => {
62
62
  if (event.target !== event.currentTarget) return;
63
63
  const rect = event.currentTarget.getBoundingClientRect();
64
- if (event.clientX < rect.left || event.clientX > rect.right || event.clientY < rect.top || event.clientY > rect.bottom) props.onClose();
64
+ if (event.clientX < rect.left || event.clientX > rect.right || event.clientY < rect.top || event.clientY > rect.bottom) {
65
+ event.preventDefault();
66
+ props.onClose();
67
+ }
65
68
  }
66
69
  }, react.default.createElement("div", { className: "aag-modal-head" }, react.default.createElement("h3", { className: "aag-modal-title" }, props.title), react.default.createElement("button", {
67
70
  type: "button",
@@ -9286,11 +9289,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9286
9289
  setError(null);
9287
9290
  readPrompt(props.remote, expert.slug, expert.division).then(action).catch((err) => setError(err instanceof Error ? err.message : String(err))).finally(() => setPromptBusySlug(null));
9288
9291
  };
9289
- const viewPrompt = (expert) => {
9292
+ const viewPrompt = (expert, returnFocus) => {
9290
9293
  withPrompt(expert, (prompt) => {
9291
9294
  setOpenPrompt({
9292
9295
  name: displayName(expert, props.getActive()),
9293
- prompt
9296
+ prompt,
9297
+ returnFocus
9294
9298
  });
9295
9299
  });
9296
9300
  };
@@ -9523,7 +9527,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9523
9527
  className: "aag-card-action",
9524
9528
  disabled: promptBusySlug !== null,
9525
9529
  "aria-haspopup": "dialog",
9526
- onClick: () => viewPrompt(expert)
9530
+ onClick: (event) => viewPrompt(expert, event.currentTarget)
9527
9531
  }, react.default.createElement(Eye, {
9528
9532
  size: 18,
9529
9533
  strokeWidth: 1.7,
@@ -9567,6 +9571,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9567
9571
  value: openPrompt,
9568
9572
  title: props.t("settings.promptTitle", { name: openPrompt.name }),
9569
9573
  closeLabel: props.t("settings.promptClose"),
9574
+ returnFocus: openPrompt.returnFocus,
9570
9575
  onClose: () => setOpenPrompt(null)
9571
9576
  }));
9572
9577
  }
package/lib/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { C as validateSummonSpecs, M as ZH_NAME, S as unquote, _ as resolveExpert, a as SUMMON_EXPERTS_MAX, b as toSummonItemResult, c as createAgencyPersonaSource, d as mapPool, f as name, g as resolveCatalogRoot, h as readLocalizedExpertPrompt, i as SUMMON_EXPERTS_CONCURRENCY, l as inject, m as readExpertPrompt, n as Config, o as SUMMON_TASK_MAX_CHARS, p as parseFrontmatter, r as DEFAULT_DIVISIONS, s as apply, t as AGENCY_PERSONA_SERVICE, u as loadCatalog, v as sanitize, x as truncate, y as stripBom } from "./src-Di6THeMW.js";
1
+ import { C as validateSummonSpecs, M as ZH_NAME, S as unquote, _ as resolveExpert, a as SUMMON_EXPERTS_MAX, b as toSummonItemResult, c as createAgencyPersonaSource, d as mapPool, f as name, g as resolveCatalogRoot, h as readLocalizedExpertPrompt, i as SUMMON_EXPERTS_CONCURRENCY, l as inject, m as readExpertPrompt, n as Config, o as SUMMON_TASK_MAX_CHARS, p as parseFrontmatter, r as DEFAULT_DIVISIONS, s as apply, t as AGENCY_PERSONA_SERVICE, u as loadCatalog, v as sanitize, x as truncate, y as stripBom } from "./src-CtqSbp2k.js";
2
2
  export { AGENCY_PERSONA_SERVICE, Config, DEFAULT_DIVISIONS, SUMMON_EXPERTS_CONCURRENCY, SUMMON_EXPERTS_MAX, SUMMON_TASK_MAX_CHARS, ZH_NAME, apply, createAgencyPersonaSource, inject, loadCatalog, mapPool, name, parseFrontmatter, readExpertPrompt, readLocalizedExpertPrompt, resolveCatalogRoot, resolveExpert, sanitize, stripBom, toSummonItemResult, truncate, unquote, validateSummonSpecs };
package/lib/remote.js CHANGED
@@ -1,4 +1,4 @@
1
- import { A as readHostLocale, D as customExpertInputSchema, E as catalogSnapshotSchema, O as expertEditSchema, T as CUSTOM_EXPERT_SLUG, h as readLocalizedExpertPrompt, j as settingsNamespaceCompat, k as formatHost, m as readExpertPrompt, t as AGENCY_PERSONA_SERVICE, w as AGENCY_LIBRARY_SERVICE } from "./src-Di6THeMW.js";
1
+ import { A as readHostLocale, D as customExpertInputSchema, E as catalogSnapshotSchema, O as expertEditSchema, T as CUSTOM_EXPERT_SLUG, h as readLocalizedExpertPrompt, j as settingsNamespaceCompat, k as formatHost, m as readExpertPrompt, t as AGENCY_PERSONA_SERVICE, w as AGENCY_LIBRARY_SERVICE } from "./src-CtqSbp2k.js";
2
2
  import { z } from "zod";
3
3
  import { Remote, TypertRemoteService } from "@deepseek-ai/dsh-typert-protocol";
4
4
  //#region src/remote-contract.ts
@@ -1050,9 +1050,9 @@ function createExpertLibrary(base, store, divisions, locale) {
1050
1050
  };
1051
1051
  },
1052
1052
  async cleanupDeleted() {
1053
- const expectedRevision = store.revision();
1054
1053
  const state = read();
1055
1054
  if (!state.customExperts.some((item) => item.deleted !== void 0 || item.wasEnabled !== void 0)) return;
1055
+ const expectedRevision = store.revision();
1056
1056
  const records = activeRecords(state.customExperts);
1057
1057
  const deleted = new Set(state.customExperts.filter((item) => item.deleted).map((item) => item.slug));
1058
1058
  await store.mutate([{
@@ -1421,16 +1421,6 @@ function apply(ctx, config) {
1421
1421
  enabled: [],
1422
1422
  customExperts: []
1423
1423
  });
1424
- installSettingsSectionCompat(ctx, settingsNamespace, agencySettingsSchema, {
1425
- enabled: [],
1426
- customExperts: []
1427
- }, {
1428
- setSource: (current) => {
1429
- settingsSource = current;
1430
- },
1431
- onChange: () => {},
1432
- validate: (value) => validateAgencySettings(value, readHostLocale(ctx))
1433
- });
1434
1424
  const enabledSet = () => new Set(settingsSource().enabled);
1435
1425
  const activeLocale = () => readHostLocale(ctx);
1436
1426
  const catalogRoot = resolveCatalogRoot(config.root);
@@ -1464,7 +1454,17 @@ function apply(ctx, config) {
1464
1454
  },
1465
1455
  mutate: (ops, revision) => ctx.settings.mutate(settingsNamespace, ops, revision)
1466
1456
  }, [.../* @__PURE__ */ new Set([...DEFAULT_DIVISIONS, ...config.divisions])], activeLocale);
1467
- library.cleanupDeleted().catch((error) => console.warn("[agency-agents] 旧删除记录清理失败,下次写入时重试:", error));
1457
+ installSettingsSectionCompat(ctx, settingsNamespace, agencySettingsSchema, {
1458
+ enabled: [],
1459
+ customExperts: []
1460
+ }, {
1461
+ setSource: (current) => {
1462
+ settingsSource = current;
1463
+ library.cleanupDeleted().catch((error) => console.warn("[agency-agents] 旧删除记录清理失败,下次写入时重试:", error));
1464
+ },
1465
+ onChange: () => {},
1466
+ validate: (value) => validateAgencySettings(value, readHostLocale(ctx))
1467
+ });
1468
1468
  const personaSource = { async getPrompt(slug, division, locale) {
1469
1469
  if (slug.startsWith("custom-") && settingsSource().customExperts?.some((item) => item.slug === slug)) {
1470
1470
  const expert = await library.getCustom(slug);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@michengai/dsh-agency-agents",
3
3
  "description": "Agency Experts — a summonable domain-expert roster for DSH (expert mode)",
4
- "version": "0.1.36",
4
+ "version": "0.1.39",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.22.0",
7
7
  "engines": {
@@ -44,10 +44,11 @@
44
44
  ],
45
45
  "scripts": {
46
46
  "build": "pnpm typecheck && tsdown",
47
- "typecheck": "tsc --noEmit",
47
+ "typecheck": "tsc --noEmit && tsc -p tsconfig.browser.json",
48
48
  "test": "vitest run",
49
+ "test:browser": "playwright test",
49
50
  "verify": "node scripts/verify.mjs",
50
- "prepublishOnly": "pnpm build && pnpm test && pnpm verify"
51
+ "prepublishOnly": "pnpm build && pnpm test && pnpm test:browser && pnpm verify"
51
52
  },
52
53
  "dsh": {
53
54
  "bundle": {
@@ -76,27 +77,31 @@
76
77
  "registry": "https://registry.npmjs.org/"
77
78
  },
78
79
  "peerDependencies": {
79
- "@deepseek-ai/cordis": "^4.0.2",
80
- "@deepseek-ai/dsh-api-remotes": ">=0.1.0-rc.5 <0.2.0",
81
- "@deepseek-ai/dsh-client-connection": ">=0.1.0-rc.5 <0.2.0",
82
- "@deepseek-ai/dsh-client-locale": ">=0.1.0-rc.5 <0.2.0",
83
- "@deepseek-ai/dsh-client-runtime": ">=0.1.0-rc.5 <0.2.0",
84
- "@deepseek-ai/dsh-client-ui-conversation": ">=0.1.0-rc.5 <0.2.0",
85
- "@deepseek-ai/dsh-client-ui-input-trigger": ">=0.1.0-rc.5 <0.2.0",
86
- "@deepseek-ai/dsh-client-ui-settings": ">=0.1.0-rc.5 <0.2.0",
87
- "@deepseek-ai/dsh-client-ui-slots": ">=0.1.0-rc.5 <0.2.0",
88
- "@deepseek-ai/dsh-host-webserver": ">=0.1.0-rc.5 <0.2.0",
89
- "@deepseek-ai/dsh-llm": ">=0.1.0-rc.5 <0.2.0",
90
- "@deepseek-ai/dsh-settings": ">=0.1.0-rc.5 <0.2.0",
91
- "@deepseek-ai/dsh-subagent": ">=0.1.0-rc.5 <0.2.0",
92
- "@deepseek-ai/dsh-system-prompt": ">=0.1.0-rc.5 <0.2.0",
93
- "@deepseek-ai/dsh-tools": ">=0.1.0-rc.5 <0.2.0",
94
- "@deepseek-ai/dsh-typert-protocol": ">=0.1.0-rc.5 <0.2.0",
95
- "@deepseek-ai/dsh-typert-registry": ">=0.1.0-rc.5 <0.2.0",
96
- "@deepseek-ai/schemastery": "^3.18.2",
80
+ "@deepseek-ai/cordis": "^4.0.1",
81
+ "@deepseek-ai/dsh": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
82
+ "@deepseek-ai/dsh-api-remotes": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
83
+ "@deepseek-ai/dsh-client-connection": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
84
+ "@deepseek-ai/dsh-client-locale": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
85
+ "@deepseek-ai/dsh-client-runtime": "0.1.0-rc.8 || 0.1.1-rc.2",
86
+ "@deepseek-ai/dsh-client-ui-conversation": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
87
+ "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
88
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
89
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
90
+ "@deepseek-ai/dsh-host-webserver": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
91
+ "@deepseek-ai/dsh-llm": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
92
+ "@deepseek-ai/dsh-settings": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
93
+ "@deepseek-ai/dsh-subagent": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
94
+ "@deepseek-ai/dsh-system-prompt": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
95
+ "@deepseek-ai/dsh-tools": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
96
+ "@deepseek-ai/dsh-typert-protocol": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
97
+ "@deepseek-ai/dsh-typert-registry": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
98
+ "@deepseek-ai/schemastery": "^3.18.1",
97
99
  "react": "^18.2.0"
98
100
  },
99
101
  "peerDependenciesMeta": {
102
+ "@deepseek-ai/dsh": {
103
+ "optional": true
104
+ },
100
105
  "@deepseek-ai/dsh-client-runtime": {
101
106
  "optional": true
102
107
  }
@@ -106,35 +111,38 @@
106
111
  },
107
112
  "devDependencies": {
108
113
  "@deepseek-ai/cordis": "^4.0.2",
109
- "@deepseek-ai/dsh-agent": "0.1.2-rc.1",
110
- "@deepseek-ai/dsh-api-remotes": "0.1.2-rc.1",
111
- "@deepseek-ai/dsh-attachment": "0.1.2-rc.1",
112
- "@deepseek-ai/dsh-brand": "0.1.2-rc.1",
113
- "@deepseek-ai/dsh-client-connection": "0.1.2-rc.1",
114
- "@deepseek-ai/dsh-client-locale": "0.1.2-rc.1",
115
- "@deepseek-ai/dsh-client-ui-conversation": "0.1.2-rc.1",
116
- "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.2-rc.1",
117
- "@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1",
118
- "@deepseek-ai/dsh-client-ui-slots": "0.1.2-rc.1",
119
- "@deepseek-ai/dsh-host-webserver": "0.1.2-rc.1",
120
- "@deepseek-ai/dsh-code-runtime": "0.1.2-rc.1",
121
- "@deepseek-ai/dsh-invariants": "0.1.2-rc.1",
122
- "@deepseek-ai/dsh-llm": "0.1.2-rc.1",
123
- "@deepseek-ai/dsh-scope": "0.1.2-rc.1",
124
- "@deepseek-ai/dsh-session": "0.1.2-rc.1",
125
- "@deepseek-ai/dsh-session-projection": "0.1.2-rc.1",
126
- "@deepseek-ai/dsh-settings": "0.1.2-rc.1",
127
- "@deepseek-ai/dsh-subagent": "0.1.2-rc.1",
128
- "@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1",
129
- "@deepseek-ai/dsh-tools": "0.1.2-rc.1",
130
- "@deepseek-ai/dsh-typert-protocol": "0.1.2-rc.1",
131
- "@deepseek-ai/dsh-typert-registry": "0.1.2-rc.1",
132
- "@deepseek-ai/dsh-user-approval": "0.1.2-rc.1",
133
- "@deepseek-ai/dsh-util-time": "0.1.2-rc.1",
114
+ "@deepseek-ai/dsh-agent": "0.1.5-rc.2",
115
+ "@deepseek-ai/dsh-api-remotes": "0.1.5-rc.2",
116
+ "@deepseek-ai/dsh-attachment": "0.1.5-rc.2",
117
+ "@deepseek-ai/dsh-brand": "0.1.5-rc.2",
118
+ "@deepseek-ai/dsh-client-connection": "0.1.5-rc.2",
119
+ "@deepseek-ai/dsh-client-locale": "0.1.5-rc.2",
120
+ "@deepseek-ai/dsh-client-ui-conversation": "0.1.5-rc.2",
121
+ "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.5-rc.2",
122
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.2",
123
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.5-rc.2",
124
+ "@deepseek-ai/dsh-code-runtime": "0.1.5-rc.2",
125
+ "@deepseek-ai/dsh-host-webserver": "0.1.5-rc.2",
126
+ "@deepseek-ai/dsh-invariants": "0.1.5-rc.2",
127
+ "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
128
+ "@deepseek-ai/dsh-scope": "0.1.5-rc.2",
129
+ "@deepseek-ai/dsh-session": "0.1.5-rc.2",
130
+ "@deepseek-ai/dsh-session-projection": "0.1.5-rc.2",
131
+ "@deepseek-ai/dsh-settings": "0.1.5-rc.2",
132
+ "@deepseek-ai/dsh-subagent": "0.1.5-rc.2",
133
+ "@deepseek-ai/dsh-system-prompt": "0.1.5-rc.2",
134
+ "@deepseek-ai/dsh-tools": "0.1.5-rc.2",
135
+ "@deepseek-ai/dsh-typert-protocol": "0.1.5-rc.2",
136
+ "@deepseek-ai/dsh-typert-registry": "0.1.5-rc.2",
137
+ "@deepseek-ai/dsh-user-approval": "0.1.5-rc.2",
138
+ "@deepseek-ai/dsh-util-time": "0.1.5-rc.2",
134
139
  "@deepseek-ai/schemastery": "^3.18.2",
140
+ "@playwright/test": "1.63.0",
135
141
  "@types/node": "^22.20.0",
136
142
  "@types/react": "~18.3.1",
143
+ "@types/react-dom": "18.3.7",
137
144
  "react": "^18.2.0",
145
+ "react-dom": "18.3.1",
138
146
  "tsdown": "^0.22.2",
139
147
  "typescript": "^6.0.3",
140
148
  "vitest": "^4.1.10"