@michengai/dsh-agency-agents 1.0.18 → 1.0.19

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
@@ -6,6 +6,13 @@ This file records features and upgrade boundaries. npm and GitHub Releases remai
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## 1.0.19 - 2026-10-15
10
+
11
+ - Support DSH `0.2.1-alpha.3` while retaining all existing supported versions; pin development `@deepseek-ai/dsh*` dependencies to host `0.2.1-alpha.3` and Cordis to `4.0.5-alpha.2`.
12
+ - Drop removed host package `@deepseek-ai/dsh-invariants` from development dependencies (gone since alpha.1).
13
+ - Adapt the subagent breaking change: start-time `persona` / `toolFilter` are gone on DSH 0.2.1-alpha.3+; use `startActivation` with `delivery: 'caller'`, and restore expert persona plus delegated-tool denylist on the child's `agent/created` via a scoped persona section and `tools.restrict`. Older hosts that still expose `ctx.subagents.start` keep the previous start-time fields.
14
+ - Agent Team continues to use `sendMessage` direct delivery.
15
+
9
16
  ## 1.0.18 - 2026-10-13
10
17
 
11
18
  - Native team member cards show each expert's localized name on both the current and previous host card layouts. Task titles and owner identifiers stay unchanged.
@@ -6,6 +6,13 @@
6
6
 
7
7
  ## 未发布
8
8
 
9
+ ## 1.0.19 - 2026-10-15
10
+
11
+ - 支持 DSH `0.2.1-alpha.3`,继续兼容既有已支持版本;开发依赖中的 `@deepseek-ai/dsh*` 对齐宿主 `0.2.1-alpha.3`,Cordis 对齐 `4.0.5-alpha.2`。
12
+ - 从开发依赖中移除宿主已删除的 `@deepseek-ai/dsh-invariants`(自 alpha.1 起不再提供)。
13
+ - 适配子 Agent 破坏性变更:DSH 0.2.1-alpha.3+ 已移除启动期 `persona` / `toolFilter`;改走 `startActivation`(`delivery: 'caller'`),并在子 Agent `agent/created` 时以 scoped persona 与 `tools.restrict` 恢复专家人格与委派工具黑名单。仍提供 `ctx.subagents.start` 的旧宿主保持原启动期字段。
14
+ - Agent Team 仍通过 `sendMessage` 直投。
15
+
9
16
  ## 1.0.18 - 2026-10-13
10
17
 
11
18
  - 原生团队成员卡片会显示专家的本地化名称,并兼容宿主当前和上一版卡片结构。任务标题和 Owner 标识保持原样。
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
  [![npm package](https://img.shields.io/npm/v/%40michengai%2Fdsh-agency-agents.svg?label=npm%20package)](https://www.npmjs.com/package/@michengai/dsh-agency-agents)
16
16
  [![npm downloads](https://img.shields.io/npm/dt/%40michengai%2Fdsh-agency-agents.svg?label=npm%20downloads)](https://www.npmjs.com/package/@michengai/dsh-agency-agents)
17
17
  [![DSH Web Plugin](https://img.shields.io/badge/DSH%20Web-Plugin-0f766e.svg)](https://github.com/MichengAI/dsh-agency-agents)
18
- [![DSH supported through 0.2.1-alpha.2](https://img.shields.io/badge/DSH-up%20to%200.2.1--alpha.2-2563eb.svg)](#prerequisites)
18
+ [![DSH supported through 0.2.1-alpha.3](https://img.shields.io/badge/DSH-up%20to%200.2.1--alpha.3-2563eb.svg)](#prerequisites)
19
19
  </div>
20
20
 
21
21
  > DSH Agency Agents is a community-maintained DeepSeek Harness (DSH) plugin, not an official DeepSeek AI product.
@@ -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.18; 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.19; 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.
@@ -120,7 +120,7 @@ DSH `dsh.client.inject` controls browser module loading order. Missing graph ent
120
120
 
121
121
  ## Installation
122
122
 
123
- Supported DeepSeek Harness versions: `0.1.2-rc.1`, `0.1.5-rc.1`, `0.1.5-rc.2`, `0.1.5-rc.3`, `0.1.7-rc.1`, `0.1.7-rc.2`, `0.2.0-rc.1`, `0.2.0-rc.2`、`0.2.1-alpha.2`, and `0.2.1-alpha.2`. Older alpha releases (0.1.6/0.1.7) are not supported. The host is supplied by your existing CLI or Desktop installation; the plugin does not install another copy. Future host versions require separate compatibility validation.
123
+ Supported DeepSeek Harness versions: `0.1.2-rc.1`, `0.1.5-rc.1`, `0.1.5-rc.2`, `0.1.5-rc.3`, `0.1.7-rc.1`, `0.1.7-rc.2`, `0.2.0-rc.1`, `0.2.0-rc.2`, `0.2.1-alpha.2`, and `0.2.1-alpha.3`. Older alpha releases (0.1.6/0.1.7) are not supported. The host is supplied by your existing CLI or Desktop installation; the plugin does not install another copy. Future host versions require separate compatibility validation.
124
124
 
125
125
  The installation commands below use the official npm registry.
126
126
 
package/README.zh-CN.md CHANGED
@@ -15,7 +15,7 @@
15
15
  [![npm package](https://img.shields.io/npm/v/%40michengai%2Fdsh-agency-agents.svg?label=npm%20package)](https://www.npmjs.com/package/@michengai/dsh-agency-agents)
16
16
  [![npm 下载量](https://img.shields.io/npm/dt/%40michengai%2Fdsh-agency-agents.svg?label=npm%20%E4%B8%8B%E8%BD%BD%E9%87%8F)](https://www.npmjs.com/package/@michengai/dsh-agency-agents)
17
17
  [![DSH Web Plugin](https://img.shields.io/badge/DSH%20Web-Plugin-0f766e.svg)](https://github.com/MichengAI/dsh-agency-agents)
18
- [![DSH 支持至 0.2.1-alpha.2](https://img.shields.io/badge/DSH-up%20to%200.2.1--alpha.2-2563eb.svg)](#前置条件)
18
+ [![DSH 支持至 0.2.1-alpha.3](https://img.shields.io/badge/DSH-up%20to%200.2.1--alpha.3-2563eb.svg)](#前置条件)
19
19
  </div>
20
20
 
21
21
  > DSH Agency Agents 是社区维护的 DeepSeek Harness(DSH)插件,并非 DeepSeek AI 官方产品。
@@ -69,7 +69,7 @@
69
69
  - 团队配置保存在宿主 `agency-agents` 命名空间。编辑冲突保留草稿并提示核对最新配置;停用或删除团队不会停用专家,也不会删除历史会话。
70
70
  - 专家不得继续召唤专家或自动追加分析轮次。取消会停止未启动任务;已有结果和失败原因分别报告。
71
71
 
72
- > 本 README 描述 1.0.18,正式发行以 npm 和 GitHub Releases 为准。完整改动见[更新日志](CHANGELOG.zh-CN.md),双语版本说明见[发行说明](RELEASE_NOTES.md)。升级保留已有专家配置;回退旧版前先备份设置,旧版不具备团队功能。
72
+ > 本 README 描述 1.0.19,正式发行以 npm 和 GitHub Releases 为准。完整改动见[更新日志](CHANGELOG.zh-CN.md),双语版本说明见[发行说明](RELEASE_NOTES.md)。升级保留已有专家配置;回退旧版前先备份设置,旧版不具备团队功能。
73
73
  ## 界面预览
74
74
 
75
75
  以下为 1.0.0 中文界面截图,专家与专家团共用同一个设置页面。
@@ -120,7 +120,7 @@ DSH 的 `dsh.client.inject` 声明浏览器模块的加载顺序;宿主模块
120
120
 
121
121
  ## 安装
122
122
 
123
- 支持的 DeepSeek Harness 版本:`0.1.2-rc.1`、`0.1.5-rc.1`、`0.1.5-rc.2`、`0.1.5-rc.3`、`0.1.7-rc.1`、`0.1.7-rc.2`、`0.2.0-rc.1`、`0.2.0-rc.2`、`0.2.1-alpha.2`。不再支持旧版 Alpha(0.1.6/0.1.7)。主程序由现有 CLI 或 Desktop 提供,插件不会另行安装;后续宿主版本需另行验证兼容性。
123
+ 支持的 DeepSeek Harness 版本:`0.1.2-rc.1`、`0.1.5-rc.1`、`0.1.5-rc.2`、`0.1.5-rc.3`、`0.1.7-rc.1`、`0.1.7-rc.2`、`0.2.0-rc.1`、`0.2.0-rc.2`、`0.2.1-alpha.2`、`0.2.1-alpha.3`。不再支持旧版 Alpha(0.1.6/0.1.7)。主程序由现有 CLI 或 Desktop 提供,插件不会另行安装;后续宿主版本需另行验证兼容性。
124
124
 
125
125
  以下安装命令使用官方 npm 源。
126
126
 
package/RELEASE_NOTES.md CHANGED
@@ -1,17 +1,15 @@
1
1
  ## 中文说明
2
2
 
3
- - 原生团队成员卡片会显示专家的本地化名称,并兼容宿主当前和上一版卡片结构。任务标题和 Owner 标识保持原样。
4
- - lead 卡片会在任务标题与专家团名称精确匹配时显示该团队名。无法匹配或对应多个团队时,仍显示 `lead`。
5
- - 停止父会话时,本插件启动的子代理会立即结束,不再等到子代理自己跑完。
6
- - 兼容宿主新的子代理启动接口,同时保留旧接口。
3
+ - 支持 DSH `0.2.1-alpha.3`,继续兼容既有已支持版本;开发依赖中的 `@deepseek-ai/dsh*` 对齐宿主 `0.2.1-alpha.3`,Cordis 对齐 `4.0.5-alpha.2`。
4
+ - 从开发依赖中移除宿主已删除的 `@deepseek-ai/dsh-invariants`(自 alpha.1 起不再提供)。
5
+ - 适配子 Agent 破坏性变更:DSH 0.2.1-alpha.3+ 已移除启动期 `persona` / `toolFilter`;改走 `startActivation`(`delivery: 'caller'`),并在子 Agent `agent/created` 时以 scoped persona 与 `tools.restrict` 恢复专家人格与委派工具黑名单。仍提供 `ctx.subagents.start` 的旧宿主保持原启动期字段。
6
+ - Agent Team 仍通过 `sendMessage` 直投。
7
7
 
8
8
  ---
9
9
 
10
10
  ## English
11
11
 
12
- - Native team member cards show each expert's localized name on both the current and previous host card layouts. Task titles and owner identifiers stay unchanged.
13
- - The lead card shows the expert team name when a task title exactly matches that team. If the match is missing or ambiguous, the card stays `lead`.
14
- - Stopping the parent session now stops subagents started by this plugin instead of waiting for them to finish.
15
- - The plugin supports the host's newer subagent start API and still works with the previous API.
16
-
17
-
12
+ - Support DSH `0.2.1-alpha.3` while retaining all existing supported versions; pin development `@deepseek-ai/dsh*` dependencies to host `0.2.1-alpha.3` and Cordis to `4.0.5-alpha.2`.
13
+ - Drop removed host package `@deepseek-ai/dsh-invariants` from development dependencies (gone since alpha.1).
14
+ - Adapt the subagent breaking change: start-time `persona` / `toolFilter` are gone on DSH 0.2.1-alpha.3+; use `startActivation` with `delivery: 'caller'`, and restore expert persona plus delegated-tool denylist on the child's `agent/created` via a scoped persona section and `tools.restrict`. Older hosts that still expose `ctx.subagents.start` keep the previous start-time fields.
15
+ - Agent Team continues to use `sendMessage` direct delivery.
@@ -55,7 +55,7 @@ interface Expert {
55
55
  interface Config {
56
56
  /** Directory holding the `division/*.md` persona files. */
57
57
  root: string;
58
- /** `ctx.subagents` provider name (default `spawn`; `fork` also supports `persona`). */
58
+ /** `ctx.subagents` provider name (default `spawn`). */
59
59
  provider: string;
60
60
  /** Division directory names to scan under `root`. */
61
61
  divisions: string[];
package/lib/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { C as stripBom, D as validateSummonSpecs, E as unquote, O as ZH_NAME, S as sanitize, T as truncate, _ as parseFrontmatter, a as SUMMON_EXPERTS_CONCURRENCY, b as resolveCatalogRoot, c as SummonExpertItemResult, d as createAgencyPersonaSource, f as inject, g as name, h as mapPool, i as DEFAULT_DIVISIONS, l as SummonExpertSpec, m as loadCatalog, n as AgencyPersonaSource, o as SUMMON_EXPERTS_MAX, p as liveSchemaField, r as Config, s as SUMMON_TASK_MAX_CHARS, t as AGENCY_PERSONA_SERVICE, u as apply, v as readExpertPrompt, w as toSummonItemResult, x as resolveExpert, y as readLocalizedExpertPrompt } from "./index-ii_RbYV_.js";
1
+ import { C as stripBom, D as validateSummonSpecs, E as unquote, O as ZH_NAME, S as sanitize, T as truncate, _ as parseFrontmatter, a as SUMMON_EXPERTS_CONCURRENCY, b as resolveCatalogRoot, c as SummonExpertItemResult, d as createAgencyPersonaSource, f as inject, g as name, h as mapPool, i as DEFAULT_DIVISIONS, l as SummonExpertSpec, m as loadCatalog, n as AgencyPersonaSource, o as SUMMON_EXPERTS_MAX, p as liveSchemaField, r as Config, s as SUMMON_TASK_MAX_CHARS, t as AGENCY_PERSONA_SERVICE, u as apply, v as readExpertPrompt, w as toSummonItemResult, x as resolveExpert, y as readLocalizedExpertPrompt } from "./index-DYBxMSk_.js";
2
2
  export { AGENCY_PERSONA_SERVICE, AgencyPersonaSource, Config, DEFAULT_DIVISIONS, SUMMON_EXPERTS_CONCURRENCY, SUMMON_EXPERTS_MAX, SUMMON_TASK_MAX_CHARS, SummonExpertItemResult, SummonExpertSpec, ZH_NAME, apply, createAgencyPersonaSource, inject, liveSchemaField, loadCatalog, mapPool, name, parseFrontmatter, readExpertPrompt, readLocalizedExpertPrompt, resolveCatalogRoot, resolveExpert, sanitize, stripBom, toSummonItemResult, truncate, unquote, validateSummonSpecs };
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-DhS1geoQ.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-uXWOANVF.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.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { v as readExpertPrompt, y as readLocalizedExpertPrompt } from "./index-ii_RbYV_.js";
1
+ import { v as readExpertPrompt, y as readLocalizedExpertPrompt } from "./index-DYBxMSk_.js";
2
2
  import { z } from "zod";
3
3
  import { TypertRemoteService } from "@deepseek-ai/dsh-typert-protocol";
4
4
  import { Context } from "@deepseek-ai/cordis";
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-DhS1geoQ.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-uXWOANVF.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
@@ -7,6 +7,8 @@ import { open, readFile, readdir, stat } from "node:fs/promises";
7
7
  import { basename, delimiter, dirname, isAbsolute, join, relative, resolve } from "node:path";
8
8
  import schema from "@deepseek-ai/schemastery";
9
9
  import { defineTool } from "@deepseek-ai/dsh-tools";
10
+ import { SessionId } from "@deepseek-ai/dsh-session";
11
+ import { PERSONA_PREFIX_SECTION } from "@deepseek-ai/dsh-system-prompt";
10
12
  import { fileURLToPath } from "node:url";
11
13
  import { TextDecoder } from "node:util";
12
14
  import { spawn } from "node:child_process";
@@ -3354,17 +3356,46 @@ function apply(ctx, config) {
3354
3356
  }
3355
3357
  }
3356
3358
  async function startSubagentRun(providerName, options) {
3359
+ const { persona, toolFilter, label, signal, prompt, parent, maxDepth } = options;
3357
3360
  const service = ctx.subagents;
3358
- if (typeof service.start === "function") return service.start(providerName, options);
3361
+ const runSignal = signal ?? new AbortController().signal;
3362
+ if (typeof service.start === "function") return service.start(providerName, {
3363
+ label,
3364
+ prompt,
3365
+ parent,
3366
+ signal: runSignal,
3367
+ ...maxDepth === void 0 ? {} : { maxDepth },
3368
+ persona,
3369
+ toolFilter
3370
+ });
3359
3371
  if (typeof service.startActivation === "function") {
3360
- const { label, signal, ...request } = options;
3361
- return service.startActivation({
3362
- provider: providerName,
3363
- label: label ?? providerName,
3364
- request,
3365
- signal,
3366
- delivery: "caller"
3372
+ const childId = SessionId(randomUUID());
3373
+ const stopCreated = ctx.on("agent/created", (event) => {
3374
+ if (event.agent.id !== childId) return void 0;
3375
+ const childCtx = event.agent.ctx;
3376
+ if (childCtx.systemPrompt) childCtx.systemPrompt.section({
3377
+ name: PERSONA_PREFIX_SECTION,
3378
+ order: childCtx.systemPrompt.getSectionOrder("DEPLOYMENT_PERSONA_PREFIX"),
3379
+ text: persona
3380
+ });
3381
+ if (childCtx.tools) childCtx.tools.restrict(toolFilter);
3367
3382
  });
3383
+ try {
3384
+ return await service.startActivation({
3385
+ provider: providerName,
3386
+ label: label ?? providerName,
3387
+ childId,
3388
+ request: {
3389
+ parent,
3390
+ prompt,
3391
+ ...maxDepth === void 0 ? {} : { maxDepth }
3392
+ },
3393
+ signal: runSignal,
3394
+ delivery: "caller"
3395
+ });
3396
+ } finally {
3397
+ stopCreated();
3398
+ }
3368
3399
  }
3369
3400
  throw new Error(formatHost(activeLocale(), "error.subagentsUnavailable"));
3370
3401
  }
@@ -3374,9 +3405,12 @@ function apply(ctx, config) {
3374
3405
  if (exec.agent === void 0) throw new Error(formatHost(locale, "error.summonRequiresAgent"));
3375
3406
  const provider = ctx.subagents.getProvider(config.provider);
3376
3407
  if (provider === void 0) throw new Error(formatHost(locale, "error.providerMissing", { provider: config.provider }));
3377
- if (!provider.capabilities.persona) throw new Error(formatHost(locale, "error.providerNoPersona", { provider: config.provider }));
3378
- if (!provider.capabilities.toolFilter) throw new Error(formatHost(locale, "error.providerNoToolFilter", { provider: config.provider }));
3379
- if (maxDepth !== void 0 && !provider.capabilities.depthLimit) throw new Error(formatHost(locale, "error.providerNoMaxDepth", { provider: config.provider }));
3408
+ const caps = provider.capabilities;
3409
+ if (caps.persona !== void 0 || caps.toolFilter !== void 0) {
3410
+ if (!caps.persona) throw new Error(formatHost(locale, "error.providerNoPersona", { provider: config.provider }));
3411
+ if (!caps.toolFilter) throw new Error(formatHost(locale, "error.providerNoToolFilter", { provider: config.provider }));
3412
+ }
3413
+ if (maxDepth !== void 0 && !caps.depthLimit) throw new Error(formatHost(locale, "error.providerNoMaxDepth", { provider: config.provider }));
3380
3414
  const expert = resolveExpert((await library.catalog()).experts.filter((expert) => !expert.conflict), query, locale);
3381
3415
  if (!enabledSet().has(expert.slug)) throw new Error(formatHost(locale, "error.expertDisabled", { name: localizedExpertName(expert, locale) }));
3382
3416
  const { prompt: persona } = await personaSource.getPrompt(expert.slug, expert.division, locale);
@@ -3614,7 +3648,9 @@ function apply(ctx, config) {
3614
3648
  }) };
3615
3649
  }
3616
3650
  const provider = ctx.subagents.getProvider(config.provider);
3617
- if (!provider?.capabilities.persona || !provider.capabilities.toolFilter || maxDepth !== void 0 && !provider.capabilities.depthLimit) throw new Error(teamTx("当前子代理服务不支持专家团所需的身份、工具过滤或深度限制。"));
3651
+ const teamCaps = provider?.capabilities;
3652
+ const legacyTeamCaps = teamCaps !== void 0 && (teamCaps.persona !== void 0 || teamCaps.toolFilter !== void 0);
3653
+ if (!provider || legacyTeamCaps && (!teamCaps?.persona || !teamCaps.toolFilter) || maxDepth !== void 0 && !teamCaps?.depthLimit) throw new Error(teamTx("当前子代理服务不支持专家团所需的身份、工具过滤或深度限制。"));
3618
3654
  const result = await executeTeam({
3619
3655
  team,
3620
3656
  locale,
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 提供 331 名可召唤的专业智能体 · 331 summonable domain experts for DeepSeek Harness",
4
- "version": "1.0.18",
4
+ "version": "1.0.19",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.22.0",
7
7
  "engines": {
@@ -79,25 +79,26 @@
79
79
  "registry": "https://registry.npmjs.org/"
80
80
  },
81
81
  "peerDependencies": {
82
- "@deepseek-ai/cordis": "^4.0.1",
83
- "@deepseek-ai/dsh": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
84
- "@deepseek-ai/dsh-api-remotes": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
85
- "@deepseek-ai/dsh-client-connection": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
86
- "@deepseek-ai/dsh-client-locale": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
87
- "@deepseek-ai/dsh-client-ui-conversation": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
88
- "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
89
- "@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
90
- "@deepseek-ai/dsh-client-ui-slots": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
91
- "@deepseek-ai/dsh-host-webserver": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
92
- "@deepseek-ai/dsh-llm": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
93
- "@deepseek-ai/dsh-settings": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
94
- "@deepseek-ai/dsh-subagent": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
95
- "@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
96
- "@deepseek-ai/dsh-tools": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
97
- "@deepseek-ai/dsh-typert-protocol": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
98
- "@deepseek-ai/dsh-typert-registry": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2",
82
+ "@deepseek-ai/cordis": ">=4.0.1 <5.0.0 || 4.0.5-alpha.1 || 4.0.5-alpha.2",
83
+ "@deepseek-ai/dsh": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
84
+ "@deepseek-ai/dsh-api-remotes": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
85
+ "@deepseek-ai/dsh-client-connection": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
86
+ "@deepseek-ai/dsh-client-locale": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
87
+ "@deepseek-ai/dsh-client-ui-conversation": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
88
+ "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
89
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
90
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
91
+ "@deepseek-ai/dsh-host-webserver": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
92
+ "@deepseek-ai/dsh-llm": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
93
+ "@deepseek-ai/dsh-settings": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
94
+ "@deepseek-ai/dsh-subagent": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
95
+ "@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
96
+ "@deepseek-ai/dsh-tools": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
97
+ "@deepseek-ai/dsh-typert-protocol": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
98
+ "@deepseek-ai/dsh-typert-registry": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3",
99
99
  "@deepseek-ai/schemastery": "^3.18.1",
100
- "react": "^18.2.0"
100
+ "react": "^18.2.0",
101
+ "@deepseek-ai/dsh-session": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3"
101
102
  },
102
103
  "peerDependenciesMeta": {
103
104
  "@deepseek-ai/dsh": {
@@ -108,34 +109,33 @@
108
109
  "zod": "^4.4.3"
109
110
  },
110
111
  "devDependencies": {
111
- "@deepseek-ai/cordis": "4.0.4",
112
- "@deepseek-ai/dsh-agent": "0.2.0-rc.2",
113
- "@deepseek-ai/dsh-api-remotes": "0.2.0-rc.2",
114
- "@deepseek-ai/dsh-attachment": "0.2.0-rc.2",
115
- "@deepseek-ai/dsh-brand": "0.2.0-rc.2",
116
- "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2",
117
- "@deepseek-ai/dsh-client-locale": "0.2.0-rc.2",
118
- "@deepseek-ai/dsh-client-ui-conversation": "0.2.0-rc.2",
119
- "@deepseek-ai/dsh-client-ui-input-trigger": "0.2.0-rc.2",
120
- "@deepseek-ai/dsh-client-ui-settings": "0.2.0-rc.2",
121
- "@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2",
122
- "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2",
123
- "@deepseek-ai/dsh-invariants": "0.2.0-rc.2",
124
- "@deepseek-ai/dsh-llm": "0.2.0-rc.2",
125
- "@deepseek-ai/dsh-ptc-runtime": "0.2.0-rc.2",
126
- "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2",
127
- "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2",
128
- "@deepseek-ai/dsh-scope": "0.2.0-rc.2",
129
- "@deepseek-ai/dsh-session": "0.2.0-rc.2",
130
- "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2",
131
- "@deepseek-ai/dsh-settings": "0.2.0-rc.2",
132
- "@deepseek-ai/dsh-subagent": "0.2.0-rc.2",
133
- "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2",
134
- "@deepseek-ai/dsh-tools": "0.2.0-rc.2",
135
- "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2",
136
- "@deepseek-ai/dsh-typert-registry": "0.2.0-rc.2",
137
- "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2",
138
- "@deepseek-ai/dsh-util-time": "0.2.0-rc.2",
112
+ "@deepseek-ai/cordis": "4.0.5-alpha.2",
113
+ "@deepseek-ai/dsh-agent": "0.2.1-alpha.3",
114
+ "@deepseek-ai/dsh-api-remotes": "0.2.1-alpha.3",
115
+ "@deepseek-ai/dsh-attachment": "0.2.1-alpha.3",
116
+ "@deepseek-ai/dsh-brand": "0.2.1-alpha.3",
117
+ "@deepseek-ai/dsh-client-connection": "0.2.1-alpha.3",
118
+ "@deepseek-ai/dsh-client-locale": "0.2.1-alpha.3",
119
+ "@deepseek-ai/dsh-client-ui-conversation": "0.2.1-alpha.3",
120
+ "@deepseek-ai/dsh-client-ui-input-trigger": "0.2.1-alpha.3",
121
+ "@deepseek-ai/dsh-client-ui-settings": "0.2.1-alpha.3",
122
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.1-alpha.3",
123
+ "@deepseek-ai/dsh-host-webserver": "0.2.1-alpha.3",
124
+ "@deepseek-ai/dsh-llm": "0.2.1-alpha.3",
125
+ "@deepseek-ai/dsh-ptc-runtime": "0.2.1-alpha.3",
126
+ "@deepseek-ai/dsh-sandbox": "0.2.1-alpha.3",
127
+ "@deepseek-ai/dsh-sandbox-policy": "0.2.1-alpha.3",
128
+ "@deepseek-ai/dsh-scope": "0.2.1-alpha.3",
129
+ "@deepseek-ai/dsh-session": "0.2.1-alpha.3",
130
+ "@deepseek-ai/dsh-session-projection": "0.2.1-alpha.3",
131
+ "@deepseek-ai/dsh-settings": "0.2.1-alpha.3",
132
+ "@deepseek-ai/dsh-subagent": "0.2.1-alpha.3",
133
+ "@deepseek-ai/dsh-system-prompt": "0.2.1-alpha.3",
134
+ "@deepseek-ai/dsh-tools": "0.2.1-alpha.3",
135
+ "@deepseek-ai/dsh-typert-protocol": "0.2.1-alpha.3",
136
+ "@deepseek-ai/dsh-typert-registry": "0.2.1-alpha.3",
137
+ "@deepseek-ai/dsh-user-approval": "0.2.1-alpha.3",
138
+ "@deepseek-ai/dsh-util-time": "0.2.1-alpha.3",
139
139
  "@deepseek-ai/schemastery": "3.18.4",
140
140
  "@playwright/test": "1.63.0",
141
141
  "@tabler/icons-react": "^3.47.0",