@michengai/dsh-agency-agents 0.1.36 → 0.1.38
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 +31 -8
- package/CHANGELOG.zh-CN.md +31 -8
- package/README.md +18 -1
- package/README.zh-CN.md +18 -1
- package/lib/client.js +12 -7
- package/lib/index.js +1 -1
- package/lib/remote.js +1 -1
- package/lib/{src-Di6THeMW.js → src-CtqSbp2k.js} +12 -12
- package/package.json +54 -46
package/CHANGELOG.md
CHANGED
|
@@ -4,17 +4,40 @@
|
|
|
4
4
|
|
|
5
5
|
The five most recent published versions are listed below.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 0.1.38 - 2026-09-10
|
|
8
|
+
|
|
9
|
+
- Add the exact release-age exception for official `dsh-chunked-list@0.1.5-rc.1`, fixing clean CI installation.
|
|
10
|
+
- Type-check browser tests, configuration, and server scripts; require Chromium regressions in the release gate and CI.
|
|
11
|
+
- Clean temporary test files even when building fails, allow a custom port, and clarify the boundary between source tests and published-artifact acceptance.
|
|
12
|
+
|
|
13
|
+
- Fix backdrop dismissal moving focus away after prompt preview closes; add real Chromium regressions for three dismissal paths and StrictMode.
|
|
14
|
+
- Centralize legacy cleanup checks in the expert library and avoid accessing unregistered or disposed settings when there is no cleanup work.
|
|
15
|
+
- Restore focus to the original View Prompt button when closing the preview with Escape or the Close button, including after asynchronous prompt loading.
|
|
16
|
+
- Enumerate the four validated DSH RC versions (`0.1.0-rc.8`, `0.1.1-rc.2`, `0.1.2-rc.1`, `0.1.5-rc.1`) in host and package peers; allow the matching older Cordis and Schemastery baselines. Keep the legacy client runtime optional.
|
|
17
|
+
- Wait for settings registration before cleaning legacy deleted experts, fixing the startup warning and skipped cleanup on older hosts.
|
|
18
|
+
- Build against DSH `0.1.5-rc.1` with pinned development dependencies.
|
|
19
|
+
|
|
20
|
+
## 0.1.37 - 2026-09-10
|
|
21
|
+
|
|
22
|
+
This tag has a GitHub Release, but dependency release-age checks blocked CI and no npm package was published. Use 0.1.38.
|
|
23
|
+
|
|
24
|
+
- Type-check browser tests, configuration, and server scripts; require Chromium regressions in the release gate and CI.
|
|
25
|
+
- Clean temporary test files even when building fails, allow a custom port, and clarify the boundary between source tests and published-artifact acceptance.
|
|
26
|
+
|
|
27
|
+
- Fix backdrop dismissal moving focus away after prompt preview closes; add real Chromium regressions for three dismissal paths and StrictMode.
|
|
28
|
+
- Centralize legacy cleanup checks in the expert library and avoid accessing unregistered or disposed settings when there is no cleanup work.
|
|
29
|
+
- Restore focus to the original View Prompt button when closing the preview with Escape or the Close button, including after asynchronous prompt loading.
|
|
30
|
+
- Enumerate the four validated DSH RC versions (`0.1.0-rc.8`, `0.1.1-rc.2`, `0.1.2-rc.1`, `0.1.5-rc.1`) in host and package peers; allow the matching older Cordis and Schemastery baselines. Keep the legacy client runtime optional.
|
|
31
|
+
- Wait for settings registration before cleaning legacy deleted experts, fixing the startup warning and skipped cleanup on older hosts.
|
|
32
|
+
- Build against DSH `0.1.5-rc.1` with pinned development dependencies.
|
|
8
33
|
|
|
9
34
|
## 0.1.36 - 2026-09-09
|
|
10
35
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
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.
|
|
36
|
+
- Create your own experts in Expert Settings: write custom instructions, copy and adapt a built-in expert, and choose an avatar and Emoji.
|
|
37
|
+
- Once enabled, custom experts are available by typing @ or clicking the Experts button in chat. Their reference tags use the same clean name display as built-in experts.
|
|
38
|
+
- Filter experts by source and enabled status for easier management. Deleting a custom expert is permanent and frees up a slot, so please check before deleting.
|
|
39
|
+
- Keep your draft when edits from multiple windows conflict, then review the latest content before saving. Experts with duplicate names can still be renamed or deleted in Settings without affecting other experts.
|
|
40
|
+
- Improved the chat entry, dropdown menus, and keyboard interactions; fixed issues with viewing, copying, and using some expert prompts; and improved update reliability.
|
|
18
41
|
|
|
19
42
|
## 0.1.35 - 2026-09-09
|
|
20
43
|
|
package/CHANGELOG.zh-CN.md
CHANGED
|
@@ -4,17 +4,40 @@
|
|
|
4
4
|
|
|
5
5
|
以下记录最近发布的五个版本。
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 0.1.38 - 2026-09-10
|
|
8
|
+
|
|
9
|
+
- 补齐官方 `dsh-chunked-list@0.1.5-rc.1` 的精确发布等待期例外,修复全新 CI 安装被阻止的问题。
|
|
10
|
+
- 将浏览器测试、配置和服务脚本纳入类型检查;发布门禁及 CI 强制执行 Chromium 回归。
|
|
11
|
+
- 测试服务在构建失败时也清理临时目录,支持自定义端口,并明确源码测试与发布产物验收的边界。
|
|
12
|
+
|
|
13
|
+
- 修复点击提示词预览遮罩关闭后焦点被鼠标默认行为移走的问题,新增真实 Chromium 回归,覆盖三种关闭方式及 StrictMode。
|
|
14
|
+
- 将旧记录清理判断集中到专家库,无待清理记录时不访问尚未注册或已卸载的设置区。
|
|
15
|
+
- 修复提示词异步加载后关闭预览的焦点恢复,按 Escape 或点击关闭均返回原“查看提示词”按钮。
|
|
16
|
+
- 在宿主和子包 peer 中枚举四个已验证的 DSH RC(`0.1.0-rc.8`、`0.1.1-rc.2`、`0.1.2-rc.1`、`0.1.5-rc.1`),放行对应旧版 Cordis 和 Schemastery,保留旧客户端 runtime 为可选依赖。
|
|
17
|
+
- 等设置区注册后再清理旧删除记录,修复旧宿主启动警告及清理未执行的问题。
|
|
18
|
+
- DSH 开发依赖固定为 `0.1.5-rc.1`。
|
|
19
|
+
|
|
20
|
+
## 0.1.37 - 2026-09-10
|
|
21
|
+
|
|
22
|
+
此标签已创建 GitHub Release,但依赖发布等待期检查阻止 CI,未发布到 npm;请使用 0.1.38。
|
|
23
|
+
|
|
24
|
+
- 将浏览器测试、配置和服务脚本纳入类型检查;发布门禁及 CI 强制执行 Chromium 回归。
|
|
25
|
+
- 测试服务在构建失败时也清理临时目录,支持自定义端口,并明确源码测试与发布产物验收的边界。
|
|
26
|
+
|
|
27
|
+
- 修复点击提示词预览遮罩关闭后焦点被鼠标默认行为移走的问题,新增真实 Chromium 回归,覆盖三种关闭方式及 StrictMode。
|
|
28
|
+
- 将旧记录清理判断集中到专家库,无待清理记录时不访问尚未注册或已卸载的设置区。
|
|
29
|
+
- 修复提示词异步加载后关闭预览的焦点恢复,按 Escape 或点击关闭均返回原“查看提示词”按钮。
|
|
30
|
+
- 在宿主和子包 peer 中枚举四个已验证的 DSH RC(`0.1.0-rc.8`、`0.1.1-rc.2`、`0.1.2-rc.1`、`0.1.5-rc.1`),放行对应旧版 Cordis 和 Schemastery,保留旧客户端 runtime 为可选依赖。
|
|
31
|
+
- 等设置区注册后再清理旧删除记录,修复旧宿主启动警告及清理未执行的问题。
|
|
32
|
+
- DSH 开发依赖固定为 `0.1.5-rc.1`。
|
|
8
33
|
|
|
9
34
|
## 0.1.36 - 2026-09-09
|
|
10
35
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- 优化聊天入口间距、下拉样式、蓝色焦点反馈和 Escape 分层处理;提示词预览使用原生弹窗,自定义引用标签与内置保持统一图标和纯名称。
|
|
17
|
-
- 修复自动更新请求的并发锁空档,并让发布校验兼容 Windows CRLF 换行。
|
|
36
|
+
- 新增自定义专家:在专家设置中创建自己的角色、编写提示词,也可以复制内置专家后修改,并选择头像和 Emoji。
|
|
37
|
+
- 自定义专家启用后,可在聊天中输入 @ 或点击「专家」按钮选择;引用标签与内置专家保持一致,简洁展示专家名称。
|
|
38
|
+
- 支持按来源和启用状态筛选,方便管理专家。删除自定义专家会永久移除并释放名额,请在删除前确认。
|
|
39
|
+
- 多窗口编辑发生冲突时保留草稿,可核对最新内容后继续保存;专家重名时仍可在设置中改名或删除,不影响其他专家使用。
|
|
40
|
+
- 优化聊天入口、下拉菜单和键盘操作体验,修复部分专家提示词查看、复制和调用异常,并提升更新稳定性。
|
|
18
41
|
|
|
19
42
|
## 0.1.35 - 2026-09-09
|
|
20
43
|
|
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`, and `0.1.5-rc.1`. 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
|
|
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`。主程序由现有 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 =
|
|
37
|
+
const previous = props.returnFocus;
|
|
38
38
|
node?.showModal();
|
|
39
39
|
return () => {
|
|
40
40
|
node?.close();
|
|
41
|
-
previous
|
|
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)
|
|
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-
|
|
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-
|
|
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
|
-
|
|
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.
|
|
4
|
+
"version": "0.1.38",
|
|
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.
|
|
80
|
-
"@deepseek-ai/dsh
|
|
81
|
-
"@deepseek-ai/dsh-
|
|
82
|
-
"@deepseek-ai/dsh-client-
|
|
83
|
-
"@deepseek-ai/dsh-client-
|
|
84
|
-
"@deepseek-ai/dsh-client-
|
|
85
|
-
"@deepseek-ai/dsh-client-ui-
|
|
86
|
-
"@deepseek-ai/dsh-client-ui-
|
|
87
|
-
"@deepseek-ai/dsh-client-ui-
|
|
88
|
-
"@deepseek-ai/dsh-
|
|
89
|
-
"@deepseek-ai/dsh-
|
|
90
|
-
"@deepseek-ai/dsh-
|
|
91
|
-
"@deepseek-ai/dsh-
|
|
92
|
-
"@deepseek-ai/dsh-
|
|
93
|
-
"@deepseek-ai/dsh-
|
|
94
|
-
"@deepseek-ai/dsh-
|
|
95
|
-
"@deepseek-ai/dsh-typert-
|
|
96
|
-
"@deepseek-ai/
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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.
|
|
110
|
-
"@deepseek-ai/dsh-api-remotes": "0.1.
|
|
111
|
-
"@deepseek-ai/dsh-attachment": "0.1.
|
|
112
|
-
"@deepseek-ai/dsh-brand": "0.1.
|
|
113
|
-
"@deepseek-ai/dsh-client-connection": "0.1.
|
|
114
|
-
"@deepseek-ai/dsh-client-locale": "0.1.
|
|
115
|
-
"@deepseek-ai/dsh-client-ui-conversation": "0.1.
|
|
116
|
-
"@deepseek-ai/dsh-client-ui-input-trigger": "0.1.
|
|
117
|
-
"@deepseek-ai/dsh-client-ui-settings": "0.1.
|
|
118
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.1.
|
|
119
|
-
"@deepseek-ai/dsh-
|
|
120
|
-
"@deepseek-ai/dsh-
|
|
121
|
-
"@deepseek-ai/dsh-invariants": "0.1.
|
|
122
|
-
"@deepseek-ai/dsh-llm": "0.1.
|
|
123
|
-
"@deepseek-ai/dsh-scope": "0.1.
|
|
124
|
-
"@deepseek-ai/dsh-session": "0.1.
|
|
125
|
-
"@deepseek-ai/dsh-session-projection": "0.1.
|
|
126
|
-
"@deepseek-ai/dsh-settings": "0.1.
|
|
127
|
-
"@deepseek-ai/dsh-subagent": "0.1.
|
|
128
|
-
"@deepseek-ai/dsh-system-prompt": "0.1.
|
|
129
|
-
"@deepseek-ai/dsh-tools": "0.1.
|
|
130
|
-
"@deepseek-ai/dsh-typert-protocol": "0.1.
|
|
131
|
-
"@deepseek-ai/dsh-typert-registry": "0.1.
|
|
132
|
-
"@deepseek-ai/dsh-user-approval": "0.1.
|
|
133
|
-
"@deepseek-ai/dsh-util-time": "0.1.
|
|
114
|
+
"@deepseek-ai/dsh-agent": "0.1.5-rc.1",
|
|
115
|
+
"@deepseek-ai/dsh-api-remotes": "0.1.5-rc.1",
|
|
116
|
+
"@deepseek-ai/dsh-attachment": "0.1.5-rc.1",
|
|
117
|
+
"@deepseek-ai/dsh-brand": "0.1.5-rc.1",
|
|
118
|
+
"@deepseek-ai/dsh-client-connection": "0.1.5-rc.1",
|
|
119
|
+
"@deepseek-ai/dsh-client-locale": "0.1.5-rc.1",
|
|
120
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.5-rc.1",
|
|
121
|
+
"@deepseek-ai/dsh-client-ui-input-trigger": "0.1.5-rc.1",
|
|
122
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.1",
|
|
123
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.5-rc.1",
|
|
124
|
+
"@deepseek-ai/dsh-code-runtime": "0.1.5-rc.1",
|
|
125
|
+
"@deepseek-ai/dsh-host-webserver": "0.1.5-rc.1",
|
|
126
|
+
"@deepseek-ai/dsh-invariants": "0.1.5-rc.1",
|
|
127
|
+
"@deepseek-ai/dsh-llm": "0.1.5-rc.1",
|
|
128
|
+
"@deepseek-ai/dsh-scope": "0.1.5-rc.1",
|
|
129
|
+
"@deepseek-ai/dsh-session": "0.1.5-rc.1",
|
|
130
|
+
"@deepseek-ai/dsh-session-projection": "0.1.5-rc.1",
|
|
131
|
+
"@deepseek-ai/dsh-settings": "0.1.5-rc.1",
|
|
132
|
+
"@deepseek-ai/dsh-subagent": "0.1.5-rc.1",
|
|
133
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.5-rc.1",
|
|
134
|
+
"@deepseek-ai/dsh-tools": "0.1.5-rc.1",
|
|
135
|
+
"@deepseek-ai/dsh-typert-protocol": "0.1.5-rc.1",
|
|
136
|
+
"@deepseek-ai/dsh-typert-registry": "0.1.5-rc.1",
|
|
137
|
+
"@deepseek-ai/dsh-user-approval": "0.1.5-rc.1",
|
|
138
|
+
"@deepseek-ai/dsh-util-time": "0.1.5-rc.1",
|
|
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"
|