@deepseek-ai/dsh-subagent-acp 0.2.1-alpha.1 → 0.2.1-alpha.3
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.i18n.yaml +14 -14
- package/README.md +6 -7
- package/README.zh.md +6 -7
- package/lib/index.js +9 -60
- package/lib/types/index.d.ts +2 -10
- package/lib/types/run.d.ts +1 -2
- package/package.json +25 -25
package/README.i18n.yaml
CHANGED
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
en: 78623be74507229d
|
|
19
19
|
zh: b0ed9c9d0c6eb040
|
|
20
20
|
/deepseek-ai-dsh-subagent-acp/use-this-package/when-to-choose-it:
|
|
21
|
-
en:
|
|
22
|
-
zh:
|
|
21
|
+
en: d18adbe82d4a362d
|
|
22
|
+
zh: 3b9c0cca1f67a587
|
|
23
23
|
/deepseek-ai-dsh-subagent-acp/use-this-package/configuration:
|
|
24
|
-
en:
|
|
25
|
-
zh:
|
|
24
|
+
en: 8d725f040ad14301
|
|
25
|
+
zh: 379664b42a38b3e5
|
|
26
26
|
/deepseek-ai-dsh-subagent-acp/use-this-package/what-you-get:
|
|
27
27
|
en: 0a809bd7b8cebddc
|
|
28
28
|
zh: e2c1edf8f485e8f8
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
en: c98e6bcd784bbf8a
|
|
40
40
|
zh: b96218f6e639755c
|
|
41
41
|
/deepseek-ai-dsh-subagent-acp/understand-the-implementation/start-and-ownership-flow:
|
|
42
|
-
en:
|
|
43
|
-
zh:
|
|
42
|
+
en: 4a857c21457f917d
|
|
43
|
+
zh: ef980a48deb2fca0
|
|
44
44
|
/deepseek-ai-dsh-subagent-acp/understand-the-implementation/stop-reason-mapping:
|
|
45
45
|
en: 88bb2b62c6e2f114
|
|
46
46
|
zh: f6b720ca8ce90343
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
en: 05e6180f1498fdf9
|
|
58
58
|
zh: 2b05d2b97bfa67da
|
|
59
59
|
/deepseek-ai-dsh-subagent-acp/model-experience/child-agent-request/what-the-model-sees:
|
|
60
|
-
en:
|
|
61
|
-
zh:
|
|
60
|
+
en: 5d8a1acb2e0510ce
|
|
61
|
+
zh: 34b446c2770f35ff
|
|
62
62
|
/deepseek-ai-dsh-subagent-acp/model-experience/child-agent-request/token-effect:
|
|
63
63
|
en: c0b78d334d5d0a9c
|
|
64
64
|
zh: d54bf504933e132d
|
|
@@ -69,17 +69,17 @@
|
|
|
69
69
|
en: 75d061c2151624a7
|
|
70
70
|
zh: 71e58e020b60ff90
|
|
71
71
|
/deepseek-ai-dsh-subagent-acp/model-experience/parent-tool-result-indirectly/what-the-model-sees:
|
|
72
|
-
en:
|
|
73
|
-
zh:
|
|
72
|
+
en: 5e4e3efe7517f782
|
|
73
|
+
zh: 0465e164583f6bc3
|
|
74
74
|
/deepseek-ai-dsh-subagent-acp/model-experience/parent-tool-result-indirectly/token-effect:
|
|
75
|
-
en:
|
|
76
|
-
zh:
|
|
75
|
+
en: 4fae54e2ff0c4874
|
|
76
|
+
zh: 1574bfe874f66a1f
|
|
77
77
|
/deepseek-ai-dsh-subagent-acp/model-experience/parent-tool-result-indirectly/kv-cache-effect:
|
|
78
78
|
en: f5d5f97a153f7c70
|
|
79
79
|
zh: 3d6bc05b9eadfbc2
|
|
80
80
|
/deepseek-ai-dsh-subagent-acp/known-limitations-and-deferred-work:
|
|
81
|
-
en:
|
|
82
|
-
zh:
|
|
81
|
+
en: eb44a9bebc00b3f7
|
|
82
|
+
zh: 6e65866e85086207
|
|
83
83
|
/deepseek-ai-dsh-subagent-acp/known-limitations-and-deferred-work/dev-note:
|
|
84
84
|
en: d8323b3200db6ac9
|
|
85
85
|
zh: f8a5273b887b9552
|
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ Mount this provider when a composition needs a fully isolated, out-of-process ch
|
|
|
29
29
|
|
|
30
30
|
### When to choose it
|
|
31
31
|
|
|
32
|
-
Choose this backend when the child must run with its own runtime, model, and tools in a separate process — for example an ACP agent from another project — or when you want delegation that cannot touch the parent harness. Choose an in-process backend when the child must share the parent's composition or honor parent-enforced capabilities: this provider advertises no optional start-time capabilities, so the seam rejects requests for `agentOptions`, structured output, depth caps
|
|
32
|
+
Choose this backend when the child must run with its own runtime, model, and tools in a separate process — for example an ACP agent from another project — or when you want delegation that cannot touch the parent harness. Choose an in-process backend when the child must share the parent's composition or honor parent-enforced capabilities: this provider advertises no optional start-time capabilities, so the seam rejects requests for `agentPreset`, `agentOptions`, structured output, or depth caps rather than silently omitting them.
|
|
33
33
|
|
|
34
34
|
### Configuration
|
|
35
35
|
|
|
@@ -38,7 +38,6 @@ Choose this backend when the child must run with its own runtime, model, and too
|
|
|
38
38
|
| `providerName` | `acp` | Registry name on `ctx.subagents` |
|
|
39
39
|
| `command` | required | Executable spawned for each run (the child ACP agent) |
|
|
40
40
|
| `args` | `[]` | Command arguments |
|
|
41
|
-
| `cwd` | parent session cwd | Working-directory override for the child process and its ACP session |
|
|
42
41
|
| `permission` | `reject` | Auto-answer permission requests by rejecting, or choosing the first `allow_once` or `allow_always` option (`allow`) |
|
|
43
42
|
| `env` | `{}` | Explicit child environment layered over the credential-scrubbed parent environment |
|
|
44
43
|
| `disposeEofGraceMs` | `6000` | Grace after stdin EOF before platform termination |
|
|
@@ -91,7 +90,7 @@ This section explains how the backend drives a child over ACP and where the obse
|
|
|
91
90
|
|
|
92
91
|
### Start and ownership flow
|
|
93
92
|
|
|
94
|
-
|
|
93
|
+
Startup uses the manager-resolved child directory (the request override, else the parent's current effective directory), spawns the command through the subprocess seam, performs the ACP `initialize` and `newSession` handshake, and only then publishes the run. Fulfillment transfers the external run to the activation manager. The startup signal detaches after acceptance; the activation receipt cancels execution and awaits cleanup. Each activation runs one task and cannot receive follow-up input. Disposal is idempotent: it closes stdin and waits a configured grace for cooperative quiescence, then escalates through SIGTERM to SIGKILL and awaits whole-range exit. Cleanup failures remain observable as ordered safe facts and never claim quiescence.
|
|
95
94
|
|
|
96
95
|
### Stop-reason mapping
|
|
97
96
|
|
|
@@ -125,7 +124,7 @@ Read these pages when the package-level contract is not enough. They move from t
|
|
|
125
124
|
|
|
126
125
|
#### What the model sees
|
|
127
126
|
|
|
128
|
-
The remote child receives the standalone task content through ACP plus its own process's configured system prompt, tools, and fresh session. It receives no parent conversation. This provider advertises no optional start-time capabilities, so the local service rejects requests for `agentOptions`,
|
|
127
|
+
The remote child receives the standalone task content through ACP plus its own process's configured system prompt, tools, and fresh session. It receives no parent conversation. This provider advertises no optional start-time capabilities, so the local service rejects requests for `agentPreset`, `agentOptions`, depth enforcement, or structured output instead of silently omitting them.
|
|
129
128
|
|
|
130
129
|
#### Token effect
|
|
131
130
|
|
|
@@ -139,11 +138,11 @@ Independent of the parent request cache. Each ACP child can reuse only prefixes
|
|
|
139
138
|
|
|
140
139
|
#### What the model sees
|
|
141
140
|
|
|
142
|
-
Through `dsh-tool-subagent`, the parent receives
|
|
141
|
+
Through `dsh-tool-subagent`, the parent model first receives a child id, then a completion notice containing final or partial assistant text, the stop reason, and safe diagnostic. The parent Session independently retains the external task identity and complete terminal result. Intermediate messages and tool traffic do not enter the parent Session.
|
|
143
142
|
|
|
144
143
|
#### Token effect
|
|
145
144
|
|
|
146
|
-
Parent input grows
|
|
145
|
+
Parent input grows by the start acknowledgement and completion notice, whose size depends on the result data and persists until compaction. This provider adds no parent schema by itself.
|
|
147
146
|
|
|
148
147
|
#### KV Cache effect
|
|
149
148
|
|
|
@@ -158,7 +157,7 @@ These limits define when this backend is a poor fit or needs special operational
|
|
|
158
157
|
|
|
159
158
|
- **A fresh process per run** — there is no process pooling; each delegation pays the full spawn and ACP handshake cost.
|
|
160
159
|
- **Local workspaces only** — the resolved working directory is a local path handed to a child on the same machine; remote workspace mapping is not designed.
|
|
161
|
-
- **No optional start-time capabilities** — this provider cannot apply `agentOptions`, `outputSchema`, a depth cap
|
|
160
|
+
- **No optional start-time capabilities** — this provider cannot apply `agentPreset`, `agentOptions`, `outputSchema`, or a depth cap inside the remote process, so the seam rejects requests that require them.
|
|
162
161
|
- **Only committed `agent_message_chunk` text is collected** — the automation server keeps reasoning, tool activity, plans, and other trace data in the child session log rather than emitting them on ACP.
|
|
163
162
|
- **Permission prompts are auto-answered** (`permission: allow | reject`) — no human is surfaced a child's `session/request_permission`.
|
|
164
163
|
|
package/README.zh.md
CHANGED
|
@@ -29,7 +29,7 @@ kind: "package-reference"
|
|
|
29
29
|
|
|
30
30
|
### 何时选择
|
|
31
31
|
|
|
32
|
-
当子 agent 必须在独立进程中运行、拥有自己的运行时、模型和工具时选择此后端——例如来自其他项目的 ACP agent——或者你希望委派完全无法触及父 harness 时。当子 agent 必须共享父级组合或遵守父级强制执行的能力约束时,请选择进程内后端:本提供方不声明任何可选启动时能力,因此 seam 会拒绝要求 `agentOptions
|
|
32
|
+
当子 agent 必须在独立进程中运行、拥有自己的运行时、模型和工具时选择此后端——例如来自其他项目的 ACP agent——或者你希望委派完全无法触及父 harness 时。当子 agent 必须共享父级组合或遵守父级强制执行的能力约束时,请选择进程内后端:本提供方不声明任何可选启动时能力,因此 seam 会拒绝要求 `agentPreset`、`agentOptions`、结构化输出或深度上限 的请求,而不是静默省略。
|
|
33
33
|
|
|
34
34
|
### 配置
|
|
35
35
|
|
|
@@ -38,7 +38,6 @@ kind: "package-reference"
|
|
|
38
38
|
| `providerName` | `acp` | `ctx.subagents` 上的注册表名称 |
|
|
39
39
|
| `command` | 必填 | 每次运行时 spawn 的可执行文件(子 ACP agent) |
|
|
40
40
|
| `args` | `[]` | 命令参数 |
|
|
41
|
-
| `cwd` | 父会话 cwd | 子进程及其 ACP 会话的工作目录覆盖值 |
|
|
42
41
|
| `permission` | `reject` | 自动应答权限请求:拒绝,或选择第一个 `allow_once` 或 `allow_always` 选项(`allow`) |
|
|
43
42
|
| `env` | `{}` | 叠加在已清理凭据的父环境之上的显式子环境 |
|
|
44
43
|
| `disposeEofGraceMs` | `6000` | stdin EOF 之后、平台终止之前的宽限 |
|
|
@@ -91,7 +90,7 @@ spawn、初始化或新建会话失败会在发布前拒绝,通常先证明 ma
|
|
|
91
90
|
|
|
92
91
|
### 启动与所有权流程
|
|
93
92
|
|
|
94
|
-
|
|
93
|
+
一次启动使用管理器解析的子 agent 工作目录(请求覆盖值,否则取父级当前有效目录),经子进程 seam spawn 命令,完成 ACP `initialize` 与 `newSession` 握手,然后才发布运行。兑现后,外部运行由 activation 管理器接管。任务接受后会解除启动信号的绑定;activation 凭据用于取消执行并等待清理。每个 activation 只运行一个任务,不能接收追加输入。dispose(资源释放)是幂等的:先关闭 stdin 并按配置的宽限等待协作式完全停稳,再经 SIGTERM 升级到 SIGKILL,并等待整个 managed range 退出。清理失败会作为有序的安全事实保持可观察,且绝不声称已经完全停稳。
|
|
95
94
|
|
|
96
95
|
### 停止原因映射
|
|
97
96
|
|
|
@@ -125,7 +124,7 @@ spawn、初始化或新建会话失败会在发布前拒绝,通常先证明 ma
|
|
|
125
124
|
|
|
126
125
|
#### 模型看到什么
|
|
127
126
|
|
|
128
|
-
远程子 agent 通过 ACP 接收独立任务内容,并使用其自身进程配置的系统提示词、工具和全新会话。它不接收父级对话。本提供方不声明可选启动时能力,因此本地服务会拒绝要求 `agentOptions
|
|
127
|
+
远程子 agent 通过 ACP 接收独立任务内容,并使用其自身进程配置的系统提示词、工具和全新会话。它不接收父级对话。本提供方不声明可选启动时能力,因此本地服务会拒绝要求 `agentPreset`、`agentOptions`、深度强制或结构化输出的请求,而不是静默省略。
|
|
129
128
|
|
|
130
129
|
#### Token 影响
|
|
131
130
|
|
|
@@ -139,11 +138,11 @@ spawn、初始化或新建会话失败会在发布前拒绝,通常先证明 ma
|
|
|
139
138
|
|
|
140
139
|
#### 模型看到什么
|
|
141
140
|
|
|
142
|
-
通过 `dsh-tool-subagent
|
|
141
|
+
通过 `dsh-tool-subagent`,父模型先收到 child id,随后收到含最终或部分 assistant 文本、停止原因与安全诊断的完成通知。父会话独立保存外部任务身份和完整终态结果。中间消息与工具通信不进入父会话。
|
|
143
142
|
|
|
144
143
|
#### Token 影响
|
|
145
144
|
|
|
146
|
-
|
|
145
|
+
父级输入增加启动确认与完成通知,内容大小取决于数据,并保留到压缩(compaction)为止。本提供方自身不会向父级添加任何 schema。
|
|
147
146
|
|
|
148
147
|
#### KV Cache 影响
|
|
149
148
|
|
|
@@ -158,7 +157,7 @@ spawn、初始化或新建会话失败会在发布前拒绝,通常先证明 ma
|
|
|
158
157
|
|
|
159
158
|
- **每次运行使用全新进程**——没有进程池;每次委派都要付出完整的 spawn 与 ACP 握手成本。
|
|
160
159
|
- **仅支持本地工作区**——解析后的工作目录是交给同一台机器上子进程的本地路径;远程工作区映射尚未设计。
|
|
161
|
-
- **不支持可选启动时能力**——本提供方无法在远程进程内应用 `agentOptions`、`outputSchema
|
|
160
|
+
- **不支持可选启动时能力**——本提供方无法在远程进程内应用 `agentPreset`、`agentOptions`、`outputSchema` 或深度上限,因此 seam 会拒绝需要它们的请求。
|
|
162
161
|
- **只收集已提交的 `agent_message_chunk` 文本**——自动化服务器把推理(reasoning)、工具活动、计划和其他 trace 数据保留在子 agent 会话日志中,不通过 ACP 发出。
|
|
163
162
|
- **权限提示自动应答**(`permission: allow | reject`)——不会把子 agent 的 `session/request_permission` 呈现给人。
|
|
164
163
|
|
package/lib/index.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { accessSync, constants, statSync } from "node:fs";
|
|
2
|
-
import { isAbsolute, resolve } from "node:path";
|
|
3
1
|
import z from "@deepseek-ai/schemastery";
|
|
2
|
+
import { AssistantOutputFold, assertUsableCwd, settleRunResult, subprocessRunHandle } from "@deepseek-ai/dsh-subagent";
|
|
4
3
|
import { MAX_TIMER_DELAY_MS } from "@deepseek-ai/dsh-timeout";
|
|
5
4
|
import { randomUUID } from "node:crypto";
|
|
6
5
|
import { Readable, Writable } from "node:stream";
|
|
7
6
|
import { PROTOCOL_VERSION, client, methods, ndJsonStream } from "@agentclientprotocol/sdk";
|
|
8
7
|
import { brandString } from "@deepseek-ai/dsh-brand";
|
|
9
|
-
import { AssistantOutputFold, settleRunResult, subprocessRunHandle } from "@deepseek-ai/dsh-subagent";
|
|
10
8
|
//#region lib/types/run.js
|
|
11
9
|
/**
|
|
12
10
|
* Fresh-process ACP subagent client. Drives one child session and owns cancellation and
|
|
@@ -434,8 +432,8 @@ async function startAcpRun(request, spec) {
|
|
|
434
432
|
/**
|
|
435
433
|
* Out-of-process ACP subagent backend. Each child has its own process, session, model, and
|
|
436
434
|
* tools, so it shares no Cordis context and advertises no parent-enforced start capabilities;
|
|
437
|
-
* the
|
|
438
|
-
*
|
|
435
|
+
* the subagent service supplies the captured child working directory. This plugin uses
|
|
436
|
+
* named exports only; a default would hide its
|
|
439
437
|
* loader metadata (see `docs/postmortem/0001-acp-default-export-drops-inject.md`).
|
|
440
438
|
* @module @deepseek-ai/dsh-subagent-acp
|
|
441
439
|
*/
|
|
@@ -445,7 +443,6 @@ const Config = z.object({
|
|
|
445
443
|
providerName: z.string().default("acp"),
|
|
446
444
|
command: z.string().required(),
|
|
447
445
|
args: z.array(z.string()).default([]),
|
|
448
|
-
cwd: z.string(),
|
|
449
446
|
permission: z.union(["allow", "reject"]).default("reject"),
|
|
450
447
|
env: z.dict(z.string()).default({}),
|
|
451
448
|
disposeEofGraceMs: z.number().default(DEFAULT_DISPOSE_EOF_GRACE_MS),
|
|
@@ -456,51 +453,9 @@ function assertPositiveFinite(name, value) {
|
|
|
456
453
|
if (!Number.isFinite(value) || value <= 0 || value > MAX_TIMER_DELAY_MS) throw new Error(`subagent-acp: ${name} must be a positive finite number no greater than ${MAX_TIMER_DELAY_MS}`);
|
|
457
454
|
}
|
|
458
455
|
/**
|
|
459
|
-
* Whether `path` names an existing directory the harness can ENTER. The
|
|
460
|
-
* search-permission probe matters: `statSync().isDirectory()` is true for a
|
|
461
|
-
* mode-600 directory, but a subprocess cwd needs `X_OK` or spawn fails EACCES.
|
|
462
|
-
*/
|
|
463
|
-
function isDirectory(path) {
|
|
464
|
-
try {
|
|
465
|
-
if (!statSync(path).isDirectory()) return false;
|
|
466
|
-
accessSync(path, constants.X_OK);
|
|
467
|
-
return true;
|
|
468
|
-
} catch {
|
|
469
|
-
return false;
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
/**
|
|
473
|
-
* Assert `cwd` can actually host the child: absolute (it doubles as the ACP
|
|
474
|
-
* session workspace, and a relative path would be re-anchored to the server
|
|
475
|
-
* process's launch directory) and an existing directory (fail here, before the
|
|
476
|
-
* process boundary, instead of as an ambiguous spawn ENOENT).
|
|
477
|
-
* @param label - which source supplied the value, for the diagnostic.
|
|
478
|
-
* @param cwd - the candidate working directory.
|
|
479
|
-
* @returns `cwd`, validated.
|
|
480
|
-
*/
|
|
481
|
-
function assertUsableCwd(label, cwd) {
|
|
482
|
-
if (!isAbsolute(cwd)) throw new Error(`subagent-acp: ${label} must be an absolute path: ${cwd}`);
|
|
483
|
-
if (!isDirectory(cwd)) throw new Error(`subagent-acp: ${label} is not an accessible directory: ${cwd}`);
|
|
484
|
-
return cwd;
|
|
485
|
-
}
|
|
486
|
-
/**
|
|
487
|
-
* Resolve the child's working directory: the deployment `cwd` override when
|
|
488
|
-
* configured (already validated at load), else the parent session's workspace
|
|
489
|
-
* cwd (validated here, its earliest resolvable point). Fails loud when neither
|
|
490
|
-
* exists — falling back to the harness process cwd would silently bind the
|
|
491
|
-
* child to the server's launch directory instead of the delegating session's
|
|
492
|
-
* workspace (one server process serves many sessions, each with its own cwd).
|
|
493
|
-
*/
|
|
494
|
-
function resolveCwd(configured, request) {
|
|
495
|
-
if (configured !== void 0) return configured;
|
|
496
|
-
const parentCwd = request.parent.session.header.cwd;
|
|
497
|
-
if (parentCwd === void 0) throw new Error("subagent-acp: no working directory for the child — configure `cwd` or delegate from a parent session that has one");
|
|
498
|
-
return assertUsableCwd("parent session cwd", parentCwd);
|
|
499
|
-
}
|
|
500
|
-
/**
|
|
501
456
|
* The ACP provider. Advertises NO start-time capabilities: an out-of-process
|
|
502
|
-
* child cannot honor `agentOptions`/`outputSchema`/`maxDepth
|
|
503
|
-
*
|
|
457
|
+
* child cannot honor `agentOptions`/`agentPreset`/`outputSchema`/`maxDepth`.
|
|
458
|
+
* The service rejects a request needing any before execution starts.
|
|
504
459
|
*/
|
|
505
460
|
var AcpProvider = class {
|
|
506
461
|
name;
|
|
@@ -508,10 +463,9 @@ var AcpProvider = class {
|
|
|
508
463
|
config;
|
|
509
464
|
capabilities = {
|
|
510
465
|
agentOptions: false,
|
|
466
|
+
agentPreset: false,
|
|
511
467
|
outputSchema: false,
|
|
512
|
-
depthLimit: false
|
|
513
|
-
toolFilter: false,
|
|
514
|
-
persona: false
|
|
468
|
+
depthLimit: false
|
|
515
469
|
};
|
|
516
470
|
inheritsParentContext = false;
|
|
517
471
|
constructor(name, ctx, config) {
|
|
@@ -523,7 +477,7 @@ var AcpProvider = class {
|
|
|
523
477
|
if (request.signal.aborted) throw new Error("subagent request was aborted before the ACP child started");
|
|
524
478
|
let cwd;
|
|
525
479
|
try {
|
|
526
|
-
cwd =
|
|
480
|
+
cwd = assertUsableCwd("subagent-acp", "child cwd", request.cwd);
|
|
527
481
|
} catch (error) {
|
|
528
482
|
const failure = acpConfigurationFailure(error);
|
|
529
483
|
this.ctx.logger.warn(`subagent-acp "${this.name}": child start failed: %o`, error);
|
|
@@ -548,12 +502,7 @@ function apply(ctx, config) {
|
|
|
548
502
|
const resolved = config;
|
|
549
503
|
assertPositiveFinite("disposeEofGraceMs", resolved.disposeEofGraceMs);
|
|
550
504
|
assertPositiveFinite("disposeGraceMs", resolved.disposeGraceMs);
|
|
551
|
-
|
|
552
|
-
const validated = resolved.cwd === void 0 ? resolved : {
|
|
553
|
-
...resolved,
|
|
554
|
-
cwd: assertUsableCwd("config cwd", resolve(resolved.cwd))
|
|
555
|
-
};
|
|
556
|
-
ctx.subagents.registerProvider(new AcpProvider(validated.providerName, ctx, validated));
|
|
505
|
+
ctx.subagents.registerProvider(new AcpProvider(resolved.providerName, ctx, resolved));
|
|
557
506
|
}
|
|
558
507
|
//#endregion
|
|
559
508
|
export { Config, apply, inject, name };
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Out-of-process ACP subagent backend. Each child has its own process, session, model, and
|
|
3
3
|
* tools, so it shares no Cordis context and advertises no parent-enforced start capabilities;
|
|
4
|
-
* the
|
|
5
|
-
*
|
|
4
|
+
* the subagent service supplies the captured child working directory. This plugin uses
|
|
5
|
+
* named exports only; a default would hide its
|
|
6
6
|
* loader metadata (see `docs/postmortem/0001-acp-default-export-drops-inject.md`).
|
|
7
7
|
* @module @deepseek-ai/dsh-subagent-acp
|
|
8
8
|
*/
|
|
@@ -19,14 +19,6 @@ export interface Config {
|
|
|
19
19
|
command: string;
|
|
20
20
|
/** Arguments passed to {@link command}. */
|
|
21
21
|
args: string[];
|
|
22
|
-
/**
|
|
23
|
-
* Working directory override for the child process and its ACP session.
|
|
24
|
-
* Must be non-empty; a relative path resolves against the harness launch
|
|
25
|
-
* directory at load, and the result must be an existing directory. When
|
|
26
|
-
* omitted, each child inherits its delegating parent session's cwd — and
|
|
27
|
-
* starting one from a parent session that has no cwd fails.
|
|
28
|
-
*/
|
|
29
|
-
cwd?: string;
|
|
30
22
|
/**
|
|
31
23
|
* How to auto-answer the child's `session/request_permission` prompts:
|
|
32
24
|
* `reject` (default — decline every prompt) or `allow` (approve via the first
|
package/lib/types/run.d.ts
CHANGED
|
@@ -18,8 +18,7 @@ export interface AcpRunSpec {
|
|
|
18
18
|
args: string[];
|
|
19
19
|
/**
|
|
20
20
|
* Absolute working directory for the child process AND its ACP session
|
|
21
|
-
* `cwd
|
|
22
|
-
* else the delegating parent session's workspace.
|
|
21
|
+
* `cwd`, selected before provider startup.
|
|
23
22
|
*/
|
|
24
23
|
cwd: string;
|
|
25
24
|
/** How to auto-answer the child's permission prompts. */
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-subagent-acp",
|
|
3
3
|
"description": "Out-of-process ACP subagent backend: drives a child agent in a spawned subprocess over the Agent Client Protocol",
|
|
4
|
-
"version": "0.2.1-alpha.
|
|
4
|
+
"version": "0.2.1-alpha.3",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -27,34 +27,34 @@
|
|
|
27
27
|
],
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"@deepseek-ai/cordis": "~4.0.5-alpha.
|
|
31
|
-
"@deepseek-ai/dsh-agent": "0.2.1-alpha.
|
|
32
|
-
"@deepseek-ai/dsh-
|
|
33
|
-
"@deepseek-ai/dsh-
|
|
34
|
-
"@deepseek-ai/dsh-
|
|
35
|
-
"@deepseek-ai/dsh-
|
|
36
|
-
"@deepseek-ai/dsh-
|
|
30
|
+
"@deepseek-ai/cordis": "~4.0.5-alpha.2",
|
|
31
|
+
"@deepseek-ai/dsh-agent": "0.2.1-alpha.3",
|
|
32
|
+
"@deepseek-ai/dsh-llm": "0.2.1-alpha.3",
|
|
33
|
+
"@deepseek-ai/dsh-session": "0.2.1-alpha.3",
|
|
34
|
+
"@deepseek-ai/dsh-subagent": "0.2.1-alpha.3",
|
|
35
|
+
"@deepseek-ai/dsh-subprocess": "0.2.1-alpha.3",
|
|
36
|
+
"@deepseek-ai/dsh-timeout": "0.2.1-alpha.3"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@agentclientprotocol/sdk": "1.4.0",
|
|
40
|
-
"@deepseek-ai/
|
|
41
|
-
"@deepseek-ai/
|
|
40
|
+
"@deepseek-ai/dsh-brand": "0.2.1-alpha.3",
|
|
41
|
+
"@deepseek-ai/schemastery": "~3.18.5-alpha.2"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@deepseek-ai/cordis": "~4.0.5-alpha.
|
|
45
|
-
"@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.
|
|
46
|
-
"@deepseek-ai/dsh-agent": "0.2.1-alpha.
|
|
47
|
-
"@deepseek-ai/dsh-app-boot": "0.2.1-alpha.
|
|
48
|
-
"@deepseek-ai/dsh-llm": "0.2.1-alpha.
|
|
49
|
-
"@deepseek-ai/dsh-loader-smoke": "0.2.1-alpha.
|
|
50
|
-
"@deepseek-ai/dsh-session": "0.2.1-alpha.
|
|
51
|
-
"@deepseek-ai/dsh-session-checkpoint-policy": "0.2.1-alpha.
|
|
52
|
-
"@deepseek-ai/dsh-session-persistence-jsonl": "0.2.1-alpha.
|
|
53
|
-
"@deepseek-ai/dsh-session-projection": "0.2.1-alpha.
|
|
54
|
-
"@deepseek-ai/dsh-subagent": "0.2.1-alpha.
|
|
55
|
-
"@deepseek-ai/dsh-subprocess": "0.2.1-alpha.
|
|
56
|
-
"@deepseek-ai/dsh-subprocess-local": "0.2.1-alpha.
|
|
57
|
-
"@deepseek-ai/dsh-
|
|
58
|
-
"@deepseek-ai/dsh-
|
|
44
|
+
"@deepseek-ai/cordis": "~4.0.5-alpha.2",
|
|
45
|
+
"@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.2",
|
|
46
|
+
"@deepseek-ai/dsh-agent": "0.2.1-alpha.3",
|
|
47
|
+
"@deepseek-ai/dsh-app-boot": "0.2.1-alpha.3",
|
|
48
|
+
"@deepseek-ai/dsh-llm": "0.2.1-alpha.3",
|
|
49
|
+
"@deepseek-ai/dsh-loader-smoke": "0.2.1-alpha.3",
|
|
50
|
+
"@deepseek-ai/dsh-session": "0.2.1-alpha.3",
|
|
51
|
+
"@deepseek-ai/dsh-session-checkpoint-policy": "0.2.1-alpha.3",
|
|
52
|
+
"@deepseek-ai/dsh-session-persistence-jsonl": "0.2.1-alpha.3",
|
|
53
|
+
"@deepseek-ai/dsh-session-projection": "0.2.1-alpha.3",
|
|
54
|
+
"@deepseek-ai/dsh-subagent": "0.2.1-alpha.3",
|
|
55
|
+
"@deepseek-ai/dsh-subprocess": "0.2.1-alpha.3",
|
|
56
|
+
"@deepseek-ai/dsh-subprocess-local": "0.2.1-alpha.3",
|
|
57
|
+
"@deepseek-ai/dsh-timeout": "0.2.1-alpha.3",
|
|
58
|
+
"@deepseek-ai/dsh-tool-subagent": "0.2.1-alpha.3"
|
|
59
59
|
}
|
|
60
60
|
}
|