@michengai/dsh-agency-agents 1.0.7 → 1.0.9

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,6 +4,20 @@
4
4
 
5
5
  This file records features and upgrade boundaries. npm and GitHub Releases remain the publication source of truth.
6
6
 
7
+ ## Unreleased
8
+
9
+ ## 1.0.9 - 2026-10-06
10
+
11
+ - The installed-plugin list shows “Agency Agents” and a localized description instead of the package name. The remote entry shows “Agency Agents remote”. Titles and descriptions come from `meta.title` and `meta.description` in `locale/zh.json`, `locale/en.json`, and `locale/remote/`.
12
+ - Installing from GitHub now includes the compiled runtime, so no manual build is required.
13
+
14
+ ## 1.0.8 - 2026-10-05
15
+
16
+ ### Improvements
17
+
18
+ - Opening and switching sessions stays smoother when the MCP connector is also enabled.
19
+ - Expert team tools follow the current language and still update immediately when switching between Chinese and English.
20
+
7
21
  ## 1.0.7 - 2026-09-30
8
22
 
9
23
  ### Improvements
@@ -4,6 +4,20 @@
4
4
 
5
5
  本文件记录版本功能与升级边界。正式发布状态以 npm 和 GitHub Releases 为准。
6
6
 
7
+ ## 未发布
8
+
9
+ ## 1.0.9 - 2026-10-06
10
+
11
+ - 已安装插件列表显示「Agency Agents」和中文简介,不再只用包名。远程入口显示「Agency Agents 接口」。显示名来自 `locale/zh.json`、`locale/en.json` 和 `locale/remote/` 的 `meta.title`、`meta.description`。
12
+ - 从 GitHub 安装时已包含运行文件,不必再手动构建。
13
+
14
+ ## 1.0.8 - 2026-10-05
15
+
16
+ ### 体验优化
17
+
18
+ - 同时启用 MCP 连接器时,打开和切换会话更顺畅。
19
+ - 专家团工具会跟随当前语言,切换中英文后仍然即时更新。
20
+
7
21
  ## 1.0.7 - 2026-09-30
8
22
 
9
23
  ### 体验优化
package/README.md CHANGED
@@ -69,7 +69,7 @@ Retain `list_experts`, `summon_expert`, and `summon_experts`. Add `list_expert_t
69
69
  - Team configuration lives in the host `agency-agents` settings namespace. Keep drafts on edit conflicts and review the latest configuration. Disabling or deleting teams does not disable experts or delete historical conversations.
70
70
  - Experts cannot summon further experts or automatically add analysis rounds. Cancellation prevents queued starts; completed results and failures are reported separately.
71
71
 
72
- > This README describes version 1.0.7; npm and GitHub Releases determine publication status. See the [changelog](CHANGELOG.md) for the full changes and [release notes](RELEASE_NOTES.md) for the bilingual release description. Upgrades retain expert settings. Back up settings before downgrading because older versions do not support teams.
72
+ > This README describes version 1.0.9; npm and GitHub Releases determine publication status. See the [changelog](CHANGELOG.md) for the full changes and [release notes](RELEASE_NOTES.md) for the bilingual release description. Upgrades retain expert settings. Back up settings before downgrading because older versions do not support teams.
73
73
  ## Screenshots
74
74
 
75
75
  The screenshots below show the 1.0.0 interface in Chinese. Experts and expert teams share the same settings page.
@@ -752,7 +752,7 @@ Set `AGENCY_AGENTS_ROOT` to use an external expert directory. Persona bodies fro
752
752
 
753
753
  ## Secondary development
754
754
 
755
- `lib` is not tracked in Git. Run `pnpm build` before using a source checkout. The release gate builds and verifies `lib`; npm packages still include the compiled runtime.
755
+ Both GitHub and npm include a ready-to-run `lib`. After changing the source in a clone, run `pnpm build` before committing, or a source install keeps the previous runtime.
756
756
 
757
757
 
758
758
  ### Install from source
package/README.zh-CN.md CHANGED
@@ -69,7 +69,7 @@
69
69
  - 团队配置保存在宿主 `agency-agents` 命名空间。编辑冲突保留草稿并提示核对最新配置;停用或删除团队不会停用专家,也不会删除历史会话。
70
70
  - 专家不得继续召唤专家或自动追加分析轮次。取消会停止未启动任务;已有结果和失败原因分别报告。
71
71
 
72
- > 本 README 描述 1.0.7,正式发行以 npm 和 GitHub Releases 为准。完整改动见[更新日志](CHANGELOG.zh-CN.md),双语版本说明见[发行说明](RELEASE_NOTES.md)。升级保留已有专家配置;回退旧版前先备份设置,旧版不具备团队功能。
72
+ > 本 README 描述 1.0.9,正式发行以 npm 和 GitHub Releases 为准。完整改动见[更新日志](CHANGELOG.zh-CN.md),双语版本说明见[发行说明](RELEASE_NOTES.md)。升级保留已有专家配置;回退旧版前先备份设置,旧版不具备团队功能。
73
73
  ## 界面预览
74
74
 
75
75
  以下为 1.0.0 中文界面截图,专家与专家团共用同一个设置页面。
@@ -752,7 +752,7 @@ dsh --profile web --dump-config
752
752
 
753
753
  ## 二次开发
754
754
 
755
- `lib` 不提交到 GitHub;从源码使用前运行 `pnpm build`。发布门禁生成并验证 `lib`,npm 包仍包含可直接运行的编译产物。
755
+ GitHub 与 npm 都包含可直接运行的 `lib`。克隆后如果改了源码,提交前运行 `pnpm build`,否则源码安装仍是旧的运行文件。
756
756
 
757
757
 
758
758
  ### 从源码安装
package/RELEASE_NOTES.md CHANGED
@@ -1,13 +1,11 @@
1
1
  ## 中文说明
2
2
 
3
- ### 体验优化
4
-
5
- - 支持 DeepSeek Harness 0.2.0-rc.2,并继续兼容此前已支持的 RC 版本。
3
+ - 已安装插件列表显示「Agency Agents」和中文简介,不再只用包名。远程入口显示「Agency Agents 接口」。显示名来自 `locale/zh.json`、`locale/en.json` 和 `locale/remote/` 的 `meta.title`、`meta.description`。
4
+ - 从 GitHub 安装时已包含运行文件,不必再手动构建。
6
5
 
7
6
  ---
8
7
 
9
8
  ## English
10
9
 
11
- ### Improvements
12
-
13
- - Support DeepSeek Harness 0.2.0-rc.2, and keep the previously supported release candidates.
10
+ - The installed-plugin list shows “Agency Agents” and a localized description instead of the package name. The remote entry shows “Agency Agents remote”. Titles and descriptions come from `meta.title` and `meta.description` in `locale/zh.json`, `locale/en.json`, and `locale/remote/`.
11
+ - Installing from GitHub now includes the compiled runtime, so no manual build is required.
package/lib/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { C as unquote, P as ZH_NAME, S as truncate, _ as resolveCatalogRoot, a as SUMMON_EXPERTS_MAX, b as stripBom, c as createAgencyPersonaSource, d as loadCatalog, f as mapPool, g as readLocalizedExpertPrompt, h as readExpertPrompt, i as SUMMON_EXPERTS_CONCURRENCY, l as inject, m as parseFrontmatter, n as Config, o as SUMMON_TASK_MAX_CHARS, p as name, r as DEFAULT_DIVISIONS, s as apply, t as AGENCY_PERSONA_SERVICE, u as liveSchemaField, v as resolveExpert, w as validateSummonSpecs, x as toSummonItemResult, y as sanitize } from "./src-D62nL1RE.js";
1
+ import { C as unquote, P as ZH_NAME, S as truncate, _ as resolveCatalogRoot, a as SUMMON_EXPERTS_MAX, b as stripBom, c as createAgencyPersonaSource, d as loadCatalog, f as mapPool, g as readLocalizedExpertPrompt, h as readExpertPrompt, i as SUMMON_EXPERTS_CONCURRENCY, l as inject, m as parseFrontmatter, n as Config, o as SUMMON_TASK_MAX_CHARS, p as name, r as DEFAULT_DIVISIONS, s as apply, t as AGENCY_PERSONA_SERVICE, u as liveSchemaField, v as resolveExpert, w as validateSummonSpecs, x as toSummonItemResult, y as sanitize } from "./src-XDq4eHLn.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, liveSchemaField, 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 CUSTOM_EXPERT_SLUG, D as readHostLocale, E as formatHost, F as AGENCY_TEAM_SERVICE, I as teamInputSchema, L as teamSnapshotSchema, M as customExpertInputSchema, N as expertEditSchema, O as settingsNamespaceCompat, R as teamText, T as nativeTeamMemberName, g as readLocalizedExpertPrompt, h as readExpertPrompt, j as catalogSnapshotSchema, k as AGENCY_LIBRARY_SERVICE, t as AGENCY_PERSONA_SERVICE } from "./src-D62nL1RE.js";
1
+ import { A as CUSTOM_EXPERT_SLUG, D as readHostLocale, E as formatHost, F as AGENCY_TEAM_SERVICE, I as teamInputSchema, L as teamSnapshotSchema, M as customExpertInputSchema, N as expertEditSchema, O as settingsNamespaceCompat, R as teamText, T as nativeTeamMemberName, g as readLocalizedExpertPrompt, h as readExpertPrompt, j as catalogSnapshotSchema, k as AGENCY_LIBRARY_SERVICE, t as AGENCY_PERSONA_SERVICE } from "./src-XDq4eHLn.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
@@ -258,7 +258,7 @@ function teamText(locale, key, values = []) {
258
258
  }
259
259
  //#endregion
260
260
  //#region src/team-tool-locale.ts
261
- /** 每次生成模型工具说明时读取当前语言;真实宿主注册及组装契约由 team-tool-host.test.ts 验证。 */
261
+ /** 每次生成模型工具说明时读取语言快照;locale 不应调用全局配置投影。 */
262
262
  function localizeTeamTool(tool, locale) {
263
263
  const { description, parameters } = tool;
264
264
  return {
@@ -1928,6 +1928,44 @@ function readHostLocale(ctx) {
1928
1928
  return "zh";
1929
1929
  }
1930
1930
  }
1931
+ /** 工具 schema 只读语言快照;初始化、locale 激活和语言变更后才调用 describe。 */
1932
+ function createHostLocaleReader(ctx) {
1933
+ let current = readHostLocale(ctx);
1934
+ let scheduled = false;
1935
+ let refreshing = false;
1936
+ let disposed = false;
1937
+ const scheduleRefresh = () => {
1938
+ if (disposed || refreshing || scheduled) return;
1939
+ scheduled = true;
1940
+ queueMicrotask(() => {
1941
+ scheduled = false;
1942
+ if (disposed) return;
1943
+ refreshing = true;
1944
+ try {
1945
+ current = readHostLocale(ctx);
1946
+ } finally {
1947
+ refreshing = false;
1948
+ }
1949
+ });
1950
+ };
1951
+ ctx.on?.("settings/document-updated", (ns) => {
1952
+ if (ns === LOCALE_SETTINGS_NAMESPACE) scheduleRefresh();
1953
+ });
1954
+ ctx.on?.("internal/status", (fiber) => {
1955
+ const entry = fiber.entry;
1956
+ if (fiber.state === 2 && entry?.options?.id === LOCALE_SETTINGS_NAMESPACE) scheduleRefresh();
1957
+ });
1958
+ ctx.effect?.(() => () => {
1959
+ disposed = true;
1960
+ });
1961
+ return () => {
1962
+ try {
1963
+ const section = ctx.settings?.get?.(LOCALE_SETTINGS_NAMESPACE);
1964
+ if (section !== void 0) current = resolveHostLocale(section.preference);
1965
+ } catch {}
1966
+ return current;
1967
+ };
1968
+ }
1931
1969
  /** 分区查询同时认 key、中文名和英文名。 */
1932
1970
  function matchDivision(query, division) {
1933
1971
  const q = query.trim().toLowerCase();
@@ -2958,7 +2996,7 @@ function apply(ctx, config) {
2958
2996
  customExperts: []
2959
2997
  });
2960
2998
  const enabledSet = () => new Set(settingsSource().enabled);
2961
- const activeLocale = () => readHostLocale(ctx);
2999
+ const activeLocale = createHostLocaleReader(ctx);
2962
3000
  const teamTx = (key, values) => teamText(activeLocale(), key, values);
2963
3001
  const catalogRoot = resolveCatalogRoot(config.root);
2964
3002
  const basePersonaSource = createAgencyPersonaSource(catalogRoot, config.divisions, async () => {
@@ -3023,24 +3061,24 @@ function apply(ctx, config) {
3023
3061
  retryCleanup();
3024
3062
  },
3025
3063
  onChange: () => {},
3026
- validate: (value) => validateAgencySettings(value, readHostLocale(ctx))
3027
- }, void 0, readHostLocale(ctx));
3064
+ validate: (value) => validateAgencySettings(value, activeLocale())
3065
+ }, void 0, activeLocale());
3028
3066
  else if (isLiveValue(config.enabled)) {
3029
- settingsSource = () => readAgencySettings(config, readHostLocale(ctx));
3067
+ settingsSource = () => readAgencySettings(config, activeLocale());
3030
3068
  retryCleanup();
3031
3069
  const settingsApi = ctx.settings;
3032
3070
  const fiber = ctx.fiber;
3033
3071
  if (typeof ctx.effect === "function" && fiber !== void 0 && typeof settingsApi.configure === "function") ctx.effect(() => settingsApi.configure({ auto: false }, fiber), "agency-agents: settings presentation");
3034
3072
  if (typeof ctx.effect === "function") ctx.effect(() => {
3035
3073
  let cancelled = false;
3036
- recoverImportedAgencySettings(ctx, settingsNamespace, () => settingsSource(), () => cancelled, void 0, readHostLocale(ctx)).catch((error) => {
3074
+ recoverImportedAgencySettings(ctx, settingsNamespace, () => settingsSource(), () => cancelled, void 0, activeLocale()).catch((error) => {
3037
3075
  console.warn("[agency-agents] 旧设置导入失败,数据仍保留在 settings.yaml.imported:", error);
3038
3076
  });
3039
3077
  return () => {
3040
3078
  cancelled = true;
3041
3079
  };
3042
3080
  }, "agency-agents: import legacy settings");
3043
- } else throw new Error(formatHost(readHostLocale(ctx), "error.settingsLiveUnsupported"));
3081
+ } else throw new Error(formatHost(activeLocale(), "error.settingsLiveUnsupported"));
3044
3082
  const personaSource = { async getPrompt(slug, division, locale) {
3045
3083
  if (slug.startsWith("custom-") && settingsSource().customExperts?.some((item) => item.slug === slug)) {
3046
3084
  const expert = await library.getCustom(slug);
package/locale/en.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Agency Agents",
4
+ "description": "321 summonable domain experts for DeepSeek Harness."
5
+ }
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Agency Agents remote",
4
+ "description": "Remote entry the gateway uses to reach Agency Agents."
5
+ }
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Agency Agents 接口",
4
+ "description": "供网关发现专家团的远程接口。"
5
+ }
6
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Agency Agents",
4
+ "description": "为 DeepSeek Harness 提供 321 名可召唤的专业智能体。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@michengai/dsh-agency-agents",
3
3
  "description": "DSH Agency Agents — 为 DeepSeek Harness 提供 321 名可召唤的专业智能体 · 321 summonable domain experts for DeepSeek Harness",
4
- "version": "1.0.7",
4
+ "version": "1.0.9",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.22.0",
7
7
  "engines": {
@@ -22,9 +22,12 @@
22
22
  "default": "./lib/remote.js"
23
23
  },
24
24
  "./cordis.patch.yml": "./cordis.patch.yml",
25
- "./package.json": "./package.json"
25
+ "./package.json": "./package.json",
26
+ "./locale/*.json": "./locale/*.json",
27
+ "./remote/locale/*.json": "./locale/remote/*.json"
26
28
  },
27
29
  "files": [
30
+ "locale",
28
31
  "lib",
29
32
  "assets/agency-agents",
30
33
  "assets/agency-agents-zh",