@bruc3van/dsh-doctor 0.5.8 → 0.6.0
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/README.en.md +15 -10
- package/README.md +15 -10
- package/migrations/dsh-v0.1.1-rc.2__dsh-v0.1.2-rc.1/behavior.md +16 -0
- package/migrations/dsh-v0.1.1-rc.2__dsh-v0.1.2-rc.1/config-rules.json +36 -0
- package/migrations/dsh-v0.1.1-rc.2__dsh-v0.1.2-rc.1/manifest.json +20 -0
- package/migrations/dsh-v0.1.1-rc.2__dsh-v0.1.2-rc.1/packages.json +83 -0
- package/migrations/dsh-v0.1.1-rc.2__dsh-v0.1.2-rc.1/services.json +28 -0
- package/migrations/dsh-v0.1.1-rc.2__dsh-v0.1.2-rc.1/symbols.json +134 -0
- package/migrations/dsh-v0.1.1-rc.2__dsh-v0.1.5-rc.2/behavior.md +26 -0
- package/migrations/dsh-v0.1.1-rc.2__dsh-v0.1.5-rc.2/config-rules.json +36 -0
- package/migrations/dsh-v0.1.1-rc.2__dsh-v0.1.5-rc.2/manifest.json +19 -0
- package/migrations/dsh-v0.1.1-rc.2__dsh-v0.1.5-rc.2/packages.json +101 -0
- package/migrations/dsh-v0.1.1-rc.2__dsh-v0.1.5-rc.2/services.json +28 -0
- package/migrations/dsh-v0.1.1-rc.2__dsh-v0.1.5-rc.2/symbols.json +134 -0
- package/package.json +2 -2
- package/skills/dsh-plugin-upgrade/SKILL.md +18 -18
- package/skills/dsh-plugin-upgrade/evals/evals.json +15 -15
- package/skills/dsh-plugin-upgrade/evals/trigger-evals.json +13 -13
- package/skills/dsh-plugin-upgrade/references/compatibility-strategy.md +7 -7
- package/skills/dsh-plugin-upgrade/references/migration-map.md +16 -1
- package/skills/dsh-plugin-upgrade/references/source-investigation.md +1 -1
- package/skills/dsh-plugin-upgrade/references/verification.md +1 -1
- package/src/cli.mjs +4 -4
- package/src/doctor.mjs +23 -2
- package/src/i18n.mjs +2 -0
- package/src/migrate.mjs +1 -1
package/README.en.md
CHANGED
|
@@ -6,7 +6,7 @@ DSH Doctor is an upgrade and troubleshooting tool for DSH plugin developers and
|
|
|
6
6
|
|
|
7
7
|
When a change depends on the plugin's business logic, Doctor calls it out for the agent or developer instead of guessing. Every edit is previewed and backed up first, and runtime checks use a temporary DSH environment rather than the developer's everyday profile.
|
|
8
8
|
|
|
9
|
-
> This is a community-maintained third-party project, not an official DeepSeek project. The current migration scope is DSH 0.1.1 → 0.1.
|
|
9
|
+
> This is a community-maintained third-party project, not an official DeepSeek project. The current migration scope is DSH 0.1.1 → 0.1.5. The catalog exactly covers `dsh-v0.1.1-rc.2` → `dsh-v0.1.5-rc.2` and retains the 0.1.2 alpha.2, alpha.3, and rc.1 historical rules. Differences outside those catalogs still require a separate investigation and are not proven compatible by the catalog.
|
|
10
10
|
|
|
11
11
|
## What it helps with
|
|
12
12
|
|
|
@@ -19,33 +19,38 @@ When a change depends on the plugin's business logic, Doctor calls it out for th
|
|
|
19
19
|
|
|
20
20
|
Agents can orchestrate these capabilities through the skill, while other tools can integrate the same structured CLI workflows.
|
|
21
21
|
|
|
22
|
-
## Recommended: use the skill
|
|
22
|
+
## Recommended: ask an agent to install and use the skill
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Send this prompt to your agent:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
Install this skill: https://github.com/bruc3van/dsh-doctor, and tell me how to use it.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
You can also install the repository's [`dsh-plugin-upgrade`](skills/dsh-plugin-upgrade/SKILL.md) skill manually:
|
|
25
31
|
|
|
26
32
|
```sh
|
|
27
33
|
npx skills add bruc3van/dsh-doctor
|
|
28
34
|
```
|
|
29
35
|
|
|
30
|
-
|
|
36
|
+
After installation, ask the agent from inside the plugin repository that needs migration:
|
|
31
37
|
|
|
32
38
|
```text
|
|
33
|
-
|
|
34
|
-
Analyze compatibility first, modify the code, then complete build and runtime verification.
|
|
39
|
+
Adjust and verify this plugin so that it is compatible with DSH 0.1.5.
|
|
35
40
|
```
|
|
36
41
|
|
|
37
42
|
The skill guides the agent to:
|
|
38
43
|
|
|
39
44
|
1. establish the plugin, actual DSH installation, Harness checkout, package manager, and usable DSH Doctor;
|
|
40
45
|
2. analyze source, dependencies, configuration, patches, and existing artifacts;
|
|
41
|
-
3. confirm whether the upgraded plugin release targets only 0.1.
|
|
46
|
+
3. confirm whether the upgraded plugin release targets only 0.1.5 or must remain compatible with 0.1.1;
|
|
42
47
|
4. preview and apply exact changes allowed by that compatibility strategy, then handle semantic migrations that require business context;
|
|
43
48
|
5. rebuild and report static, artifact, isolated-runtime, and business-behavior evidence separately;
|
|
44
49
|
6. commit or publish through the plugin repository's own process only when the developer explicitly requests it.
|
|
45
50
|
|
|
46
51
|
`npx skills add` installs agent instructions only; it does not install DSH Doctor globally. The skill checks the local CLI and npm registry first. If the local version is unsuitable, it runs a pinned version through `npm exec` without changing the global installation.
|
|
47
52
|
|
|
48
|
-
An upgrade request does not itself authorize dropping the old runtime. When compatibility intent is missing, the skill may perform read-only analysis but asks before migration writes, dependency installation, build, or runtime commands. Dual-version mode requires separate 0.1.1 and 0.1.
|
|
53
|
+
An upgrade request does not itself authorize dropping the old runtime. When compatibility intent is missing, the skill may perform read-only analysis but asks before migration writes, dependency installation, build, or runtime commands. Dual-version mode requires separate 0.1.1 and 0.1.5 evidence; one 0.1.5 smoke test is not dual-version proof.
|
|
49
54
|
|
|
50
55
|
## How it works
|
|
51
56
|
|
|
@@ -67,9 +72,9 @@ investigate the actual environment
|
|
|
67
72
|
→ plugin business-behavior verification
|
|
68
73
|
```
|
|
69
74
|
|
|
70
|
-
DSH 0.1.
|
|
75
|
+
Migrating from DSH 0.1.1 to 0.1.5 changes more than package versions. Legacy owners such as `dsh-client-runtime` and `dsh-host-apiproxy` were split, while Session, Workspace, Conversation, pending interaction, and Settings capabilities moved to new controllers, UI packages, or Services; between 0.1.2 and 0.1.5 no package was removed again, and the added session-format or sidebar packages are purely additive capabilities. The CLI only auto-edits relationships marked `exact`; ownership, lifecycle, and business-call changes are reported as `MIG_SEMANTIC_API_CHANGE`.
|
|
71
76
|
|
|
72
|
-
With an exact Harness checkout, Doctor also verifies the commits behind the two catalog tags and compares entry ids in the target web profile. After the additional source interval has been investigated, `--target-version` can bind dependencies and runtime checks to a newer 0.1.
|
|
77
|
+
With an exact Harness checkout, Doctor also verifies the commits behind the two catalog tags and compares entry ids in the target web profile. After the additional source interval has been investigated, `--target-version` can bind dependencies and runtime checks to a newer 0.1.5 target, but it does not extend the catalog's API claims.
|
|
73
78
|
|
|
74
79
|
## Core capabilities
|
|
75
80
|
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ DSH Doctor 是给 DSH 插件开发者和 Agent 使用的升级、排障工具。
|
|
|
6
6
|
|
|
7
7
|
遇到需要理解业务逻辑的改动,它会明确列出来交给 Agent 或开发者处理,不会直接猜。所有修改都会先生成预览并保留备份,运行验证也会放在临时 DSH 环境中,不影响日常使用的 profile。
|
|
8
8
|
|
|
9
|
-
> 这是社区维护的第三方工具,不属于 DeepSeek 官方项目。当前迁移范围是 DSH 0.1.1 → 0.1.
|
|
9
|
+
> 这是社区维护的第三方工具,不属于 DeepSeek 官方项目。当前迁移范围是 DSH 0.1.1 → 0.1.5;catalog 精确覆盖 `dsh-v0.1.1-rc.2` → `dsh-v0.1.5-rc.2`,并保留 0.1.2 的 alpha.2、alpha.3、rc.1 历史规则。未收录的版本差异仍需单独调查,不能视为 catalog 已证明兼容。
|
|
10
10
|
|
|
11
11
|
## 它能解决什么问题
|
|
12
12
|
|
|
@@ -19,33 +19,38 @@ DSH Doctor 是给 DSH 插件开发者和 Agent 使用的升级、排障工具。
|
|
|
19
19
|
|
|
20
20
|
这些能力既可以由 Agent 通过 Skill 编排,也可以作为结构化 CLI 能力集成到其他工具中。
|
|
21
21
|
|
|
22
|
-
## 推荐方式:让 Agent
|
|
22
|
+
## 推荐方式:让 Agent 安装并使用 Skill
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
向你的 Agent 发送以下提示词:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
帮我安装这个 Skill:https://github.com/bruc3van/dsh-doctor,并告诉我如何使用。
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
也可以手动安装仓库中的 [`dsh-plugin-upgrade`](skills/dsh-plugin-upgrade/SKILL.md) Skill:
|
|
25
31
|
|
|
26
32
|
```sh
|
|
27
33
|
npx skills add bruc3van/dsh-doctor
|
|
28
34
|
```
|
|
29
35
|
|
|
30
|
-
|
|
36
|
+
安装完成后,在需要迁移的插件仓库中告诉 Agent:
|
|
31
37
|
|
|
32
38
|
```text
|
|
33
|
-
|
|
34
|
-
先分析兼容问题,再修改代码,最后完成构建和运行时验证。
|
|
39
|
+
请调整并验证当前插件,使其兼容 DSH 0.1.5。
|
|
35
40
|
```
|
|
36
41
|
|
|
37
42
|
Skill 会引导 Agent:
|
|
38
43
|
|
|
39
44
|
1. 核实插件、实际 DSH、Harness checkout、包管理器和可用的 DSH Doctor;
|
|
40
45
|
2. 分析源码、依赖、配置、patch 和已有产物;
|
|
41
|
-
3. 确认升级后的同一插件版本是仅支持 0.1.
|
|
46
|
+
3. 确认升级后的同一插件版本是仅支持 0.1.5,还是继续兼容 0.1.1;
|
|
42
47
|
4. 预览并应用符合兼容策略的精确修改,再处理需要理解业务的语义迁移;
|
|
43
48
|
5. 重新构建,并分别报告静态、产物、隔离运行时和业务行为证据;
|
|
44
49
|
6. 仅在开发者明确要求后,按插件仓库自己的流程提交和发布。
|
|
45
50
|
|
|
46
51
|
`npx skills add` 只安装 Agent 指令,不会全局安装 DSH Doctor。Skill 会先检查本地 CLI 和 npm registry;本地版本不合适时,默认通过固定版本的 `npm exec` 运行,不会自行修改全局安装。
|
|
47
52
|
|
|
48
|
-
升级请求本身不代表可以放弃旧版。兼容目标未明确时,Skill 可以先做只读分析,但会在迁移写入、依赖安装、构建或运行时命令前要求确认。双版本模式必须分别验证 0.1.1 和 0.1.
|
|
53
|
+
升级请求本身不代表可以放弃旧版。兼容目标未明确时,Skill 可以先做只读分析,但会在迁移写入、依赖安装、构建或运行时命令前要求确认。双版本模式必须分别验证 0.1.1 和 0.1.5,不能用一次 0.1.5 smoke 代替双版本结论。
|
|
49
54
|
|
|
50
55
|
## 工作原理
|
|
51
56
|
|
|
@@ -67,9 +72,9 @@ DSH Doctor 由三个相互约束的部分组成:
|
|
|
67
72
|
→ 插件业务行为验证
|
|
68
73
|
```
|
|
69
74
|
|
|
70
|
-
DSH 0.1.
|
|
75
|
+
从 DSH 0.1.1 迁移到 0.1.5 不只是包版本变化。`dsh-client-runtime` 和 `dsh-host-apiproxy` 等旧 owner 被拆分,Session、Workspace、Conversation、pending interaction、Settings 等能力迁移到新的 controller、UI 包或 Service;0.1.2 到 0.1.5 之间没有再移除任何包,新增的 session-format、sidebar 等包是纯增量能力。CLI 只自动修改 catalog 标记为 `exact` 的关系;所有权、生命周期和业务调用变化会作为 `MIG_SEMANTIC_API_CHANGE` 报告。
|
|
71
76
|
|
|
72
|
-
如果提供精确 Harness checkout,Doctor 还会确认 catalog 中两个 tag 的 commit,并比较目标 web profile 的 entry id。`--target-version` 可以在完成额外源码调查后绑定更新的 0.1.
|
|
77
|
+
如果提供精确 Harness checkout,Doctor 还会确认 catalog 中两个 tag 的 commit,并比较目标 web profile 的 entry id。`--target-version` 可以在完成额外源码调查后绑定更新的 0.1.5 依赖与 runtime 目标,但不会扩大 catalog 的 API 结论。
|
|
73
78
|
|
|
74
79
|
## 核心能力
|
|
75
80
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# DSH 0.1.1-rc.2 to 0.1.2-rc.1 behavior migration
|
|
2
|
+
|
|
3
|
+
The old Client Runtime was split by ownership. There is no aggregate replacement package.
|
|
4
|
+
|
|
5
|
+
- Session control, list state, commands, projections, queue and event windows belong to `api-session-controller/client`.
|
|
6
|
+
- Workspace state and commands belong to `api-workspace-controller/client`; navigation policy belongs to `ui-workspace`.
|
|
7
|
+
- Conversation assembly belongs to `ui-conversation`; Chat and Trajectory own their respective projections.
|
|
8
|
+
- Approval and Question own their pending objects; `ui-session` only aggregates domain publications.
|
|
9
|
+
- The store engine belongs to `client-store`; React hook synthesis belongs to the renderer.
|
|
10
|
+
- The Host API Proxy was removed. Unary browser operations live on their natural Remote service owners.
|
|
11
|
+
- The demo-only `dsh-agent-spine-demo` package and the SQLite session persistence package were removed; neither has a catalog-confirmed drop-in replacement.
|
|
12
|
+
- `dsh-tool-subagent-report` was removed after alpha.3: child reporting and parent follow-up were unified into one Steer messaging operation (`SubagentRuntime.sendMessage`, exposed to models through `tool-subagent-control`). Migrating a report-tool integration is semantic work, not an import move.
|
|
13
|
+
- `dsh-code-runtime-python` was renamed to `dsh-experimental-code-runtime-python` when the package moved to the experimental tier. The module rename is exact in shape, but the experimental placement is a support-level change the developer must accept deliberately.
|
|
14
|
+
- 0.1.2 adds the `dsh-session-turn-outline` package and extends session submission/load-through APIs. These additions do not justify mechanical rewrites of existing plugin behavior.
|
|
15
|
+
|
|
16
|
+
An import move is safe only when the catalog marks it `exact`. A `semantic` mapping identifies the new owner but still requires the plugin developer to rewrite behavior and verify the real lifecycle.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"platformModules": [
|
|
3
|
+
"react",
|
|
4
|
+
"react/jsx-runtime",
|
|
5
|
+
"react-dom",
|
|
6
|
+
"react-dom/client",
|
|
7
|
+
"@deepseek-ai/cordis",
|
|
8
|
+
"@deepseek-ai/dsh-client-store",
|
|
9
|
+
"@deepseek-ai/dsh-client-ui-slots",
|
|
10
|
+
"@deepseek-ai/dsh-client-ui-primitives"
|
|
11
|
+
],
|
|
12
|
+
"profilePatchPaths": {
|
|
13
|
+
"web": [
|
|
14
|
+
"packages/bundle/base/cordis.patch.yml",
|
|
15
|
+
"packages/bundle/web-app/cordis.patch.yml"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"rules": [
|
|
19
|
+
{
|
|
20
|
+
"id": "client-inject-is-informational",
|
|
21
|
+
"note": "dsh.client.inject lists package dependency edges; Cordis service inject controls activation."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "baseline-external-is-implicit",
|
|
25
|
+
"note": "Platform modules are implicit and must not be repeated in dsh.client.external."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "feature-values-use-services-or-slots",
|
|
29
|
+
"note": "Feature plugins must not use dsh.client.external as a feature-to-feature value dependency mechanism."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "client-export-required",
|
|
33
|
+
"note": "A web dsh.client declaration requires a published exports[\"./client\"] artifact."
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "dsh-v0.1.1-rc.2__dsh-v0.1.2-rc.1",
|
|
4
|
+
"from": {
|
|
5
|
+
"ref": "dsh-v0.1.1-rc.2",
|
|
6
|
+
"commit": "b150a551b8d465e31e418e1b2eaf5e79bbb7d28e"
|
|
7
|
+
},
|
|
8
|
+
"to": {
|
|
9
|
+
"ref": "dsh-v0.1.2-rc.1",
|
|
10
|
+
"commit": "a66e4702047846cdaa10c66c9d3df3951f5ea70d",
|
|
11
|
+
"version": "0.1.2-rc.1"
|
|
12
|
+
},
|
|
13
|
+
"description": "DeepSeek Harness 0.1.1-rc.2 to 0.1.2-rc.1 plugin migration",
|
|
14
|
+
"references": {
|
|
15
|
+
"ownership": ".agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.md",
|
|
16
|
+
"remoteMigration": ".agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.md",
|
|
17
|
+
"clientRules": "packages/client/AGENTS.md",
|
|
18
|
+
"steerMessaging": ".agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.md"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"removed": [
|
|
3
|
+
"@deepseek-ai/dsh-acp-demo",
|
|
4
|
+
"@deepseek-ai/dsh-acp-snapshot",
|
|
5
|
+
"@deepseek-ai/dsh-agent-spine-demo",
|
|
6
|
+
"@deepseek-ai/dsh-client-runtime",
|
|
7
|
+
"@deepseek-ai/dsh-code-runtime-python",
|
|
8
|
+
"@deepseek-ai/dsh-host-apiproxy",
|
|
9
|
+
"@deepseek-ai/dsh-sdk-jsonrpc-demo",
|
|
10
|
+
"@deepseek-ai/dsh-session-persistence-sqlite",
|
|
11
|
+
"@deepseek-ai/dsh-tool-subagent-report"
|
|
12
|
+
],
|
|
13
|
+
"added": [
|
|
14
|
+
"@deepseek-ai/dsh-acp-app",
|
|
15
|
+
"@deepseek-ai/dsh-api-session-controller",
|
|
16
|
+
"@deepseek-ai/dsh-api-settings-controller",
|
|
17
|
+
"@deepseek-ai/dsh-api-workspace-controller",
|
|
18
|
+
"@deepseek-ai/dsh-client-store",
|
|
19
|
+
"@deepseek-ai/dsh-client-ui-approval",
|
|
20
|
+
"@deepseek-ai/dsh-client-ui-chat",
|
|
21
|
+
"@deepseek-ai/dsh-client-ui-schedule",
|
|
22
|
+
"@deepseek-ai/dsh-client-ui-session",
|
|
23
|
+
"@deepseek-ai/dsh-deepseek-llm-api-extensions",
|
|
24
|
+
"@deepseek-ai/dsh-deque",
|
|
25
|
+
"@deepseek-ai/dsh-experimental-agent-team-profile",
|
|
26
|
+
"@deepseek-ai/dsh-experimental-agent-team-web-profile",
|
|
27
|
+
"@deepseek-ai/dsh-experimental-client-ui-agent-team",
|
|
28
|
+
"@deepseek-ai/dsh-experimental-code-runtime-python",
|
|
29
|
+
"@deepseek-ai/dsh-experimental-inspector",
|
|
30
|
+
"@deepseek-ai/dsh-experimental-webworker-packer",
|
|
31
|
+
"@deepseek-ai/dsh-experimental-webworker-runtime",
|
|
32
|
+
"@deepseek-ai/dsh-plugin-package-inventory-deepseek",
|
|
33
|
+
"@deepseek-ai/dsh-sdk-app",
|
|
34
|
+
"@deepseek-ai/dsh-sdk-minimal",
|
|
35
|
+
"@deepseek-ai/dsh-session-log-deepseek",
|
|
36
|
+
"@deepseek-ai/dsh-session-snapshot",
|
|
37
|
+
"@deepseek-ai/dsh-session-turn-outline",
|
|
38
|
+
"@deepseek-ai/dsh-util-crypto",
|
|
39
|
+
"@deepseek-ai/dsh-util-time",
|
|
40
|
+
"@deepseek-ai/dsh-util-values",
|
|
41
|
+
"@deepseek-ai/dsh-util-workspace-path",
|
|
42
|
+
"@deepseek-ai/dsh-webhook",
|
|
43
|
+
"@deepseek-ai/dsh-webhook-github",
|
|
44
|
+
"@deepseek-ai/dsh-win32-process"
|
|
45
|
+
],
|
|
46
|
+
"targetVersions": {
|
|
47
|
+
"@deepseek-ai/cordis": "4.0.2"
|
|
48
|
+
},
|
|
49
|
+
"dependencyPolicies": {
|
|
50
|
+
"@deepseek-ai/cordis": {
|
|
51
|
+
"client": ["peerDependencies", "devDependencies"]
|
|
52
|
+
},
|
|
53
|
+
"@deepseek-ai/dsh-client-store": {
|
|
54
|
+
"client": ["devDependencies"]
|
|
55
|
+
},
|
|
56
|
+
"@deepseek-ai/dsh-session": {
|
|
57
|
+
"client": ["devDependencies"]
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"semanticReplacements": {
|
|
61
|
+
"@deepseek-ai/dsh-client-runtime": [
|
|
62
|
+
"@deepseek-ai/dsh-api-session-controller",
|
|
63
|
+
"@deepseek-ai/dsh-api-workspace-controller",
|
|
64
|
+
"@deepseek-ai/dsh-client-store",
|
|
65
|
+
"@deepseek-ai/dsh-client-ui-session",
|
|
66
|
+
"@deepseek-ai/dsh-client-ui-conversation",
|
|
67
|
+
"@deepseek-ai/dsh-client-ui-chat",
|
|
68
|
+
"@deepseek-ai/dsh-client-ui-trajectory",
|
|
69
|
+
"@deepseek-ai/dsh-client-ui-approval",
|
|
70
|
+
"@deepseek-ai/dsh-client-ui-user-questions"
|
|
71
|
+
],
|
|
72
|
+
"@deepseek-ai/dsh-host-apiproxy": [
|
|
73
|
+
"@deepseek-ai/dsh-api-gateway",
|
|
74
|
+
"@deepseek-ai/dsh-api-remotes"
|
|
75
|
+
],
|
|
76
|
+
"@deepseek-ai/dsh-code-runtime-python": [
|
|
77
|
+
"@deepseek-ai/dsh-experimental-code-runtime-python"
|
|
78
|
+
],
|
|
79
|
+
"@deepseek-ai/dsh-tool-subagent-report": [
|
|
80
|
+
"@deepseek-ai/dsh-tool-subagent-control"
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"services": {
|
|
3
|
+
"sessions": {
|
|
4
|
+
"owner": "@deepseek-ai/dsh-api-session-controller/client",
|
|
5
|
+
"confidence": "semantic",
|
|
6
|
+
"note": "The service name survives, but Session snapshots no longer contain Conversation views or pending interactions."
|
|
7
|
+
},
|
|
8
|
+
"workspaces": {
|
|
9
|
+
"owner": "@deepseek-ai/dsh-api-workspace-controller/client",
|
|
10
|
+
"confidence": "semantic",
|
|
11
|
+
"note": "The service name survives, while cross-domain navigation belongs to ui-workspace."
|
|
12
|
+
},
|
|
13
|
+
"conversation": {
|
|
14
|
+
"owner": "@deepseek-ai/dsh-client-ui-conversation/client",
|
|
15
|
+
"confidence": "semantic",
|
|
16
|
+
"note": "Conversation assembly and input are independent of Session lifecycle snapshots."
|
|
17
|
+
},
|
|
18
|
+
"slots": {
|
|
19
|
+
"owner": "@deepseek-ai/dsh-client-ui-renderer/client",
|
|
20
|
+
"confidence": "semantic",
|
|
21
|
+
"note": "Slot declarations stay in ui-slots; runtime registration and binding belong to ui-renderer."
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"removedHostFacade": {
|
|
25
|
+
"package": "@deepseek-ai/dsh-host-apiproxy",
|
|
26
|
+
"replacementPolicy": "Use the natural business Remote owner through generated api-remotes contributions; there is no replacement facade."
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
{
|
|
2
|
+
"modules": {
|
|
3
|
+
"@deepseek-ai/dsh-settings": {
|
|
4
|
+
"settingsNamespace": {
|
|
5
|
+
"toModule": "@deepseek-ai/dsh-settings",
|
|
6
|
+
"toSymbol": "SettingsProvider.register",
|
|
7
|
+
"confidence": "semantic",
|
|
8
|
+
"reason": "The settingsNamespace factory was removed. Inject the settings Service and register the namespace through ctx.settings.register(name, schema)."
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"@deepseek-ai/dsh-client-runtime/client": {
|
|
12
|
+
"ClientContext": {
|
|
13
|
+
"toModule": "@deepseek-ai/cordis",
|
|
14
|
+
"toSymbol": "Context",
|
|
15
|
+
"confidence": "exact",
|
|
16
|
+
"reason": "ClientContext was a type alias of Cordis Context."
|
|
17
|
+
},
|
|
18
|
+
"createSnapshotStore": {
|
|
19
|
+
"toModule": "@deepseek-ai/dsh-client-store",
|
|
20
|
+
"toSymbol": "createSnapshotStore",
|
|
21
|
+
"confidence": "exact",
|
|
22
|
+
"reason": "The React-free store engine moved to client-store."
|
|
23
|
+
},
|
|
24
|
+
"defineStore": {
|
|
25
|
+
"toModule": "@deepseek-ai/dsh-client-store",
|
|
26
|
+
"toSymbol": "defineStore",
|
|
27
|
+
"confidence": "exact",
|
|
28
|
+
"reason": "The declarative store factory moved to client-store."
|
|
29
|
+
},
|
|
30
|
+
"ObservableSnapshot": {
|
|
31
|
+
"toModule": "@deepseek-ai/dsh-client-store",
|
|
32
|
+
"toSymbol": "ObservableSnapshot",
|
|
33
|
+
"confidence": "exact",
|
|
34
|
+
"reason": "The observable store contract moved to client-store."
|
|
35
|
+
},
|
|
36
|
+
"SnapshotStore": {
|
|
37
|
+
"toModule": "@deepseek-ai/dsh-client-store",
|
|
38
|
+
"toSymbol": "SnapshotStore",
|
|
39
|
+
"confidence": "exact",
|
|
40
|
+
"reason": "The writable store contract moved to client-store."
|
|
41
|
+
},
|
|
42
|
+
"shallowEqual": {
|
|
43
|
+
"toModule": "@deepseek-ai/dsh-client-store",
|
|
44
|
+
"toSymbol": "shallowEqual",
|
|
45
|
+
"confidence": "exact",
|
|
46
|
+
"reason": "The store equality helper moved to client-store."
|
|
47
|
+
},
|
|
48
|
+
"SessionId": {
|
|
49
|
+
"toModule": "@deepseek-ai/dsh-session/types",
|
|
50
|
+
"toSymbol": "SessionId",
|
|
51
|
+
"confidence": "exact",
|
|
52
|
+
"reason": "Session identity is owned by the Session domain."
|
|
53
|
+
},
|
|
54
|
+
"ISessions": {
|
|
55
|
+
"toModule": "@deepseek-ai/dsh-api-session-controller/client",
|
|
56
|
+
"toSymbol": "ISessions",
|
|
57
|
+
"confidence": "semantic",
|
|
58
|
+
"reason": "Session ownership moved to the Session Controller and its snapshots changed."
|
|
59
|
+
},
|
|
60
|
+
"Session": {
|
|
61
|
+
"toModule": "@deepseek-ai/dsh-api-session-controller/client",
|
|
62
|
+
"toSymbol": "Session",
|
|
63
|
+
"confidence": "semantic",
|
|
64
|
+
"reason": "The Client Session object and lifecycle moved to the Session Controller."
|
|
65
|
+
},
|
|
66
|
+
"SessionBinding": {
|
|
67
|
+
"toModule": "@deepseek-ai/dsh-api-session-controller/client",
|
|
68
|
+
"toSymbol": "SessionBinding",
|
|
69
|
+
"confidence": "semantic",
|
|
70
|
+
"reason": "Session bindings are now Controller-owned lifetimes."
|
|
71
|
+
},
|
|
72
|
+
"SessionListState": {
|
|
73
|
+
"toModule": "@deepseek-ai/dsh-api-session-controller/client",
|
|
74
|
+
"toSymbol": "SessionListState",
|
|
75
|
+
"confidence": "semantic",
|
|
76
|
+
"reason": "The list state moved and no longer owns Conversation or pending-interaction facts."
|
|
77
|
+
},
|
|
78
|
+
"SessionSummary": {
|
|
79
|
+
"toModule": "@deepseek-ai/dsh-api-session-controller/client",
|
|
80
|
+
"toSymbol": "SessionSummary",
|
|
81
|
+
"confidence": "semantic",
|
|
82
|
+
"reason": "The Session summary is now a Controller-owned control snapshot."
|
|
83
|
+
},
|
|
84
|
+
"UseProjection": {
|
|
85
|
+
"toModule": "@deepseek-ai/dsh-api-session-controller/client",
|
|
86
|
+
"toSymbol": "UseProjection",
|
|
87
|
+
"confidence": "semantic",
|
|
88
|
+
"reason": "Projection sources are now exposed by Session Controller bindings and adapted by ui-session."
|
|
89
|
+
},
|
|
90
|
+
"IWorkspaces": {
|
|
91
|
+
"toModule": "@deepseek-ai/dsh-api-workspace-controller/client",
|
|
92
|
+
"toSymbol": "IWorkspaces",
|
|
93
|
+
"confidence": "semantic",
|
|
94
|
+
"reason": "Workspace ownership moved to the Workspace Controller and navigation policy moved to ui-workspace."
|
|
95
|
+
},
|
|
96
|
+
"WorkspaceId": {
|
|
97
|
+
"toModule": "@deepseek-ai/dsh-api-workspace-controller/client",
|
|
98
|
+
"toSymbol": "WorkspaceId",
|
|
99
|
+
"confidence": "semantic",
|
|
100
|
+
"reason": "Workspace identity is re-exported by the Workspace Controller."
|
|
101
|
+
},
|
|
102
|
+
"WorkspaceView": {
|
|
103
|
+
"toModule": "@deepseek-ai/dsh-api-workspace-controller/client",
|
|
104
|
+
"toSymbol": "WorkspaceView",
|
|
105
|
+
"confidence": "semantic",
|
|
106
|
+
"reason": "Workspace snapshots are Controller-owned and their shape changed."
|
|
107
|
+
},
|
|
108
|
+
"ConversationNode": {
|
|
109
|
+
"toModule": "@deepseek-ai/dsh-client-ui-conversation/client",
|
|
110
|
+
"toSymbol": "ConversationNode",
|
|
111
|
+
"confidence": "semantic",
|
|
112
|
+
"reason": "Conversation assembly moved out of Session snapshots into ui-conversation."
|
|
113
|
+
},
|
|
114
|
+
"ConversationSnapshot": {
|
|
115
|
+
"toModule": "@deepseek-ai/dsh-client-ui-conversation/client",
|
|
116
|
+
"toSymbol": "ConversationSnapshot",
|
|
117
|
+
"confidence": "semantic",
|
|
118
|
+
"reason": "Conversation is now an independent target-neutral source."
|
|
119
|
+
},
|
|
120
|
+
"PendingInteraction": {
|
|
121
|
+
"toModule": "@deepseek-ai/dsh-client-ui-session/client",
|
|
122
|
+
"toSymbol": "SessionPendingInteraction",
|
|
123
|
+
"confidence": "semantic",
|
|
124
|
+
"reason": "Approval and Question now publish domain-owned pending interactions through ui-session."
|
|
125
|
+
},
|
|
126
|
+
"PendingWait": {
|
|
127
|
+
"toModule": "@deepseek-ai/dsh-client-ui-session/client",
|
|
128
|
+
"toSymbol": "SessionPendingInteraction",
|
|
129
|
+
"confidence": "semantic",
|
|
130
|
+
"reason": "The Runtime PendingWait aggregate was removed; pending domains own their payloads."
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# DSH 0.1.1-rc.2 to 0.1.5-rc.2 behavior migration
|
|
2
|
+
|
|
3
|
+
The old Client Runtime was split by ownership. There is no aggregate replacement package.
|
|
4
|
+
|
|
5
|
+
- Session control, list state, commands, projections, queue and event windows belong to `api-session-controller/client`.
|
|
6
|
+
- Workspace state and commands belong to `api-workspace-controller/client`; navigation policy belongs to `ui-workspace`.
|
|
7
|
+
- Conversation assembly belongs to `ui-conversation`; Chat and Trajectory own their respective projections.
|
|
8
|
+
- Approval and Question own their pending objects; `ui-session` only aggregates domain publications.
|
|
9
|
+
- The store engine belongs to `client-store`; React hook synthesis belongs to the renderer.
|
|
10
|
+
- The Host API Proxy was removed. Unary browser operations live on their natural Remote service owners.
|
|
11
|
+
- The demo-only `dsh-agent-spine-demo` package and the SQLite session persistence package were removed; neither has a catalog-confirmed drop-in replacement.
|
|
12
|
+
- `dsh-tool-subagent-report` was removed after alpha.3: child reporting and parent follow-up were unified into one Steer messaging operation (`SubagentRuntime.sendMessage`, exposed to models through `tool-subagent-control`). Migrating a report-tool integration is semantic work, not an import move.
|
|
13
|
+
- `dsh-code-runtime-python` was renamed to `dsh-experimental-code-runtime-python` when the package moved to the experimental tier. The module rename is exact in shape, but the experimental placement is a support-level change the developer must accept deliberately.
|
|
14
|
+
- 0.1.2 adds the `dsh-session-turn-outline` package and extends session submission/load-through APIs. These additions do not justify mechanical rewrites of existing plugin behavior.
|
|
15
|
+
|
|
16
|
+
## Interval 0.1.2-rc.1 to 0.1.5-rc.2
|
|
17
|
+
|
|
18
|
+
Verified against both tags: no `@deepseek-ai/dsh-*` package was removed or renamed, and the plugin-facing entrypoints the 0.1.2 migration moves plugins onto (`dsh-settings`, `dsh-client-store`, `dsh-client-ui-session`, `dsh-client-ui-chat`, `dsh-sdk-minimal`, `dsh-webhook`) are unchanged. 0.1.3 never shipped a stable tag and 0.1.4 was skipped upstream.
|
|
19
|
+
|
|
20
|
+
- The web profile removed the patch entries `client-runtime`, `api-gateway`, `tool-subagent-report`, and `tool-str-replace-editor` (verified by scanning both refs' bundle patches; `api-gateway` the entry is gone even though the `dsh-api-gateway` package survives). A plugin overlay that patches one of these entry ids must be re-anchored to the surviving owner entry.
|
|
21
|
+
- 18 packages were added (session-format family with v0-to-v3 migrations, client file-upload and resources, client-ui sidebar packages, dockkit, open-in-app, http-proxy, chunked-list, package-manifest, tool-present, api-workspace-files, host-open-in-app). Additions never force a rewrite; adopt them only when the plugin needs the new capability.
|
|
22
|
+
- `dsh-client-connection` dropped `webServer` from its inject list; export signatures are unchanged. A plugin that injected `webServer` through this module must find the new owner itself.
|
|
23
|
+
- The CLI adds `--from-default-profile <name>` for creating custom profiles from shipped templates. Existing flags and the `profiles/<name>/package.json` layout are unchanged.
|
|
24
|
+
- Cordis stays at 4.0.2, so `--target-version 0.1.5-rc.2` pins only the DSH packages.
|
|
25
|
+
|
|
26
|
+
An import move is safe only when the catalog marks it `exact`. A `semantic` mapping identifies the new owner but still requires the plugin developer to rewrite behavior and verify the real lifecycle.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"platformModules": [
|
|
3
|
+
"react",
|
|
4
|
+
"react/jsx-runtime",
|
|
5
|
+
"react-dom",
|
|
6
|
+
"react-dom/client",
|
|
7
|
+
"@deepseek-ai/cordis",
|
|
8
|
+
"@deepseek-ai/dsh-client-store",
|
|
9
|
+
"@deepseek-ai/dsh-client-ui-slots",
|
|
10
|
+
"@deepseek-ai/dsh-client-ui-primitives"
|
|
11
|
+
],
|
|
12
|
+
"profilePatchPaths": {
|
|
13
|
+
"web": [
|
|
14
|
+
"packages/bundle/base/cordis.patch.yml",
|
|
15
|
+
"packages/bundle/web-app/cordis.patch.yml"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"rules": [
|
|
19
|
+
{
|
|
20
|
+
"id": "client-inject-is-informational",
|
|
21
|
+
"note": "dsh.client.inject lists package dependency edges; Cordis service inject controls activation."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "baseline-external-is-implicit",
|
|
25
|
+
"note": "Platform modules are implicit and must not be repeated in dsh.client.external."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "feature-values-use-services-or-slots",
|
|
29
|
+
"note": "Feature plugins must not use dsh.client.external as a feature-to-feature value dependency mechanism."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "client-export-required",
|
|
33
|
+
"note": "A web dsh.client declaration requires a published exports[\"./client\"] artifact."
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "dsh-v0.1.1-rc.2__dsh-v0.1.5-rc.2",
|
|
4
|
+
"from": {
|
|
5
|
+
"ref": "dsh-v0.1.1-rc.2",
|
|
6
|
+
"commit": "b150a551b8d465e31e418e1b2eaf5e79bbb7d28e"
|
|
7
|
+
},
|
|
8
|
+
"to": {
|
|
9
|
+
"ref": "dsh-v0.1.5-rc.2",
|
|
10
|
+
"commit": "fb2c4b9e698e30edb738bca4cf0618587db7d203",
|
|
11
|
+
"version": "0.1.5-rc.2"
|
|
12
|
+
},
|
|
13
|
+
"description": "DeepSeek Harness 0.1.1-rc.2 to 0.1.5-rc.2 plugin migration",
|
|
14
|
+
"references": {
|
|
15
|
+
"ownership": ".agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.md",
|
|
16
|
+
"clientRules": "packages/client/AGENTS.md",
|
|
17
|
+
"steerMessaging": ".agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.md"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"removed": [
|
|
3
|
+
"@deepseek-ai/dsh-acp-demo",
|
|
4
|
+
"@deepseek-ai/dsh-acp-snapshot",
|
|
5
|
+
"@deepseek-ai/dsh-agent-spine-demo",
|
|
6
|
+
"@deepseek-ai/dsh-client-runtime",
|
|
7
|
+
"@deepseek-ai/dsh-code-runtime-python",
|
|
8
|
+
"@deepseek-ai/dsh-host-apiproxy",
|
|
9
|
+
"@deepseek-ai/dsh-sdk-jsonrpc-demo",
|
|
10
|
+
"@deepseek-ai/dsh-session-persistence-sqlite",
|
|
11
|
+
"@deepseek-ai/dsh-tool-subagent-report"
|
|
12
|
+
],
|
|
13
|
+
"added": [
|
|
14
|
+
"@deepseek-ai/dsh-acp-app",
|
|
15
|
+
"@deepseek-ai/dsh-api-session-controller",
|
|
16
|
+
"@deepseek-ai/dsh-api-settings-controller",
|
|
17
|
+
"@deepseek-ai/dsh-api-workspace-controller",
|
|
18
|
+
"@deepseek-ai/dsh-api-workspace-files",
|
|
19
|
+
"@deepseek-ai/dsh-chunked-list",
|
|
20
|
+
"@deepseek-ai/dsh-client-file-upload",
|
|
21
|
+
"@deepseek-ai/dsh-client-resources",
|
|
22
|
+
"@deepseek-ai/dsh-client-store",
|
|
23
|
+
"@deepseek-ai/dsh-client-ui-approval",
|
|
24
|
+
"@deepseek-ai/dsh-client-ui-chat",
|
|
25
|
+
"@deepseek-ai/dsh-client-ui-dockkit",
|
|
26
|
+
"@deepseek-ai/dsh-client-ui-open-in-app",
|
|
27
|
+
"@deepseek-ai/dsh-client-ui-schedule",
|
|
28
|
+
"@deepseek-ai/dsh-client-ui-session",
|
|
29
|
+
"@deepseek-ai/dsh-client-ui-sidebar-documentpreview",
|
|
30
|
+
"@deepseek-ai/dsh-client-ui-sidebar-files",
|
|
31
|
+
"@deepseek-ai/dsh-client-ui-sidebar-right",
|
|
32
|
+
"@deepseek-ai/dsh-deepseek-llm-api-extensions",
|
|
33
|
+
"@deepseek-ai/dsh-deque",
|
|
34
|
+
"@deepseek-ai/dsh-experimental-agent-team-profile",
|
|
35
|
+
"@deepseek-ai/dsh-experimental-agent-team-web-profile",
|
|
36
|
+
"@deepseek-ai/dsh-experimental-client-ui-agent-team",
|
|
37
|
+
"@deepseek-ai/dsh-experimental-code-runtime-python",
|
|
38
|
+
"@deepseek-ai/dsh-experimental-inspector",
|
|
39
|
+
"@deepseek-ai/dsh-experimental-webworker-packer",
|
|
40
|
+
"@deepseek-ai/dsh-experimental-webworker-runtime",
|
|
41
|
+
"@deepseek-ai/dsh-host-open-in-app",
|
|
42
|
+
"@deepseek-ai/dsh-http-proxy",
|
|
43
|
+
"@deepseek-ai/dsh-package-manifest",
|
|
44
|
+
"@deepseek-ai/dsh-plugin-package-inventory-deepseek",
|
|
45
|
+
"@deepseek-ai/dsh-sdk-app",
|
|
46
|
+
"@deepseek-ai/dsh-sdk-minimal",
|
|
47
|
+
"@deepseek-ai/dsh-session-format",
|
|
48
|
+
"@deepseek-ai/dsh-session-format-catalog",
|
|
49
|
+
"@deepseek-ai/dsh-session-format-v0-to-v1",
|
|
50
|
+
"@deepseek-ai/dsh-session-format-v1-to-v2",
|
|
51
|
+
"@deepseek-ai/dsh-session-format-v2-to-v3",
|
|
52
|
+
"@deepseek-ai/dsh-session-log-deepseek",
|
|
53
|
+
"@deepseek-ai/dsh-session-snapshot",
|
|
54
|
+
"@deepseek-ai/dsh-session-turn-outline",
|
|
55
|
+
"@deepseek-ai/dsh-tool-present",
|
|
56
|
+
"@deepseek-ai/dsh-util-crypto",
|
|
57
|
+
"@deepseek-ai/dsh-util-time",
|
|
58
|
+
"@deepseek-ai/dsh-util-values",
|
|
59
|
+
"@deepseek-ai/dsh-util-workspace-path",
|
|
60
|
+
"@deepseek-ai/dsh-webhook",
|
|
61
|
+
"@deepseek-ai/dsh-webhook-github",
|
|
62
|
+
"@deepseek-ai/dsh-win32-process"
|
|
63
|
+
],
|
|
64
|
+
"targetVersions": {
|
|
65
|
+
"@deepseek-ai/cordis": "4.0.2"
|
|
66
|
+
},
|
|
67
|
+
"dependencyPolicies": {
|
|
68
|
+
"@deepseek-ai/cordis": {
|
|
69
|
+
"client": ["peerDependencies", "devDependencies"]
|
|
70
|
+
},
|
|
71
|
+
"@deepseek-ai/dsh-client-store": {
|
|
72
|
+
"client": ["devDependencies"]
|
|
73
|
+
},
|
|
74
|
+
"@deepseek-ai/dsh-session": {
|
|
75
|
+
"client": ["devDependencies"]
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"semanticReplacements": {
|
|
79
|
+
"@deepseek-ai/dsh-client-runtime": [
|
|
80
|
+
"@deepseek-ai/dsh-api-session-controller",
|
|
81
|
+
"@deepseek-ai/dsh-api-workspace-controller",
|
|
82
|
+
"@deepseek-ai/dsh-client-store",
|
|
83
|
+
"@deepseek-ai/dsh-client-ui-session",
|
|
84
|
+
"@deepseek-ai/dsh-client-ui-conversation",
|
|
85
|
+
"@deepseek-ai/dsh-client-ui-chat",
|
|
86
|
+
"@deepseek-ai/dsh-client-ui-trajectory",
|
|
87
|
+
"@deepseek-ai/dsh-client-ui-approval",
|
|
88
|
+
"@deepseek-ai/dsh-client-ui-user-questions"
|
|
89
|
+
],
|
|
90
|
+
"@deepseek-ai/dsh-host-apiproxy": [
|
|
91
|
+
"@deepseek-ai/dsh-api-gateway",
|
|
92
|
+
"@deepseek-ai/dsh-api-remotes"
|
|
93
|
+
],
|
|
94
|
+
"@deepseek-ai/dsh-code-runtime-python": [
|
|
95
|
+
"@deepseek-ai/dsh-experimental-code-runtime-python"
|
|
96
|
+
],
|
|
97
|
+
"@deepseek-ai/dsh-tool-subagent-report": [
|
|
98
|
+
"@deepseek-ai/dsh-tool-subagent-control"
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
}
|