@agentclientprotocol/claude-agent-acp 0.99.2-preview.1 → 0.99.2-preview.11
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.md +8 -0
- package/dist/acp-agent.d.ts +60 -18
- package/dist/acp-agent.d.ts.map +1 -1
- package/dist/acp-agent.js +325 -100
- package/dist/diff.d.ts +1 -1
- package/dist/diff.js +5 -5
- package/dist/elicitation.d.ts +1 -2
- package/dist/elicitation.d.ts.map +1 -1
- package/dist/elicitation.js +34 -16
- package/dist/fork-session.d.ts.map +1 -1
- package/dist/fork-session.js +23 -0
- package/dist/native-subagents.d.ts +49 -3
- package/dist/native-subagents.d.ts.map +1 -1
- package/dist/native-subagents.js +118 -4
- package/dist/session-index/service.d.ts +3 -1
- package/dist/session-index/service.d.ts.map +1 -1
- package/dist/session-index/service.js +5 -10
- package/dist/startup-failure.d.ts +16 -0
- package/dist/startup-failure.d.ts.map +1 -0
- package/dist/startup-failure.js +38 -0
- package/dist/subagent-history.d.ts +8 -1
- package/dist/subagent-history.d.ts.map +1 -1
- package/dist/subagent-history.js +40 -1
- package/dist/subagent-replay.d.ts +19 -3
- package/dist/subagent-replay.d.ts.map +1 -1
- package/dist/subagent-replay.js +46 -4
- package/dist/tool-calls/reporters/interaction.d.ts.map +1 -1
- package/dist/tool-calls/reporters/interaction.js +8 -3
- package/dist/v2/agent.d.ts.map +1 -1
- package/dist/v2/agent.js +42 -17
- package/dist/v2/initialize.d.ts +16 -1
- package/dist/v2/initialize.d.ts.map +1 -1
- package/dist/v2/initialize.js +26 -3
- package/dist/v2/permission.d.ts +5 -2
- package/dist/v2/permission.d.ts.map +1 -1
- package/dist/v2/permission.js +5 -2
- package/dist/v2/prompt.d.ts +2 -1
- package/dist/v2/prompt.d.ts.map +1 -1
- package/dist/v2/prompt.js +5 -1
- package/dist/v2/session.d.ts.map +1 -1
- package/dist/v2/session.js +21 -9
- package/package.json +6 -6
package/dist/v2/prompt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/v2/prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,aAAa,EAEnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,mDAAmD,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAuC,MAAM,mBAAmB,CAAC;AAE/F;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,EAAE,CAAC,aAAa,EACxB,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,KAAK,IAAI,GACvC,OAAO,CAAC,EAAE,CAAC,cAAc,CAAC,CAiC5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,KAAK,IAAI,GAAG,gBAAgB,CAoBvF;AAgCD
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/v2/prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,aAAa,EAEnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,mDAAmD,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAuC,MAAM,mBAAmB,CAAC;AAE/F;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,EAAE,CAAC,aAAa,EACxB,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,KAAK,IAAI,GACvC,OAAO,CAAC,EAAE,CAAC,cAAc,CAAC,CAiC5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,KAAK,IAAI,GAAG,gBAAgB,CAoBvF;AAgCD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,CAAC,aAAa,GAAG,aAAa,CAqBvF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,GAAG,YAAY,CAcnE"}
|
package/dist/v2/prompt.js
CHANGED
|
@@ -129,9 +129,13 @@ function idle({ stopReason, usage, _meta }) {
|
|
|
129
129
|
* so such a block fails the request with invalid params (-32602) rather than
|
|
130
130
|
* being dropped from the prompt. The same goes for an embedded blob that
|
|
131
131
|
* Claude cannot read, e.g. an `application/zip` resource: `promptToClaude`
|
|
132
|
-
* would drop it.
|
|
132
|
+
* would drop it. An empty `prompt` fails the same way: v2 requires at least
|
|
133
|
+
* one content block.
|
|
133
134
|
*/
|
|
134
135
|
export function v1PromptRequest({ prompt, ...request }) {
|
|
136
|
+
if (prompt.length === 0) {
|
|
137
|
+
throw RequestError.invalidParams({ prompt }, "`prompt` must hold at least one content block");
|
|
138
|
+
}
|
|
135
139
|
return {
|
|
136
140
|
...request,
|
|
137
141
|
prompt: prompt.map((block) => {
|
package/dist/v2/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/v2/session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAEvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EAGxB,KAAK,6BAA6B,EAEnC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/v2/session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAEvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EAGxB,KAAK,6BAA6B,EAEnC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,mDAAmD,CAAC;AAIxE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,GAAG,iBAAiB,CAQnF;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,EAAE,CAAC,oBAAoB,GAE7B;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,CAoBlD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,EAAE,CAAC,kBAAkB,GAAG,kBAAkB,CAOtF;AAaD,oGAAoG;AACpG,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,EAAE,CAAC,kBAAkB,CAExF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,EAAE,CAAC,qBAAqB,CAKjG;AAED,uEAAuE;AACvE,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,EAAE,CAAC,6BAA6B,GACvC,6BAA6B,CAgB/B;AAED,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAQxF;AAWD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAMvF"}
|
package/dist/v2/session.js
CHANGED
|
@@ -5,13 +5,14 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { RequestError, } from "@agentclientprotocol/sdk/unstable";
|
|
7
7
|
import * as v2 from "@agentclientprotocol/sdk/experimental/v2/unstable";
|
|
8
|
+
import { V2_SESSION_CAPABILITIES } from "./initialize.js";
|
|
8
9
|
import { v1ContentBlock } from "./prompt.js";
|
|
9
10
|
export function v1NewSessionRequest(params) {
|
|
10
11
|
const { mcpServers, systemPrompt, ...request } = params;
|
|
11
12
|
// v1 requires the list; v2 treats an omitted list as an empty one.
|
|
12
13
|
return {
|
|
13
14
|
...request,
|
|
14
|
-
mcpServers: (mcpServers ?? []
|
|
15
|
+
mcpServers: v1McpServers(mcpServers) ?? [],
|
|
15
16
|
...v1SystemPromptField(systemPrompt),
|
|
16
17
|
};
|
|
17
18
|
}
|
|
@@ -30,15 +31,16 @@ export function v1RestoreSessionRequest(params) {
|
|
|
30
31
|
if (replayFrom == null) {
|
|
31
32
|
return {
|
|
32
33
|
method: "resume",
|
|
33
|
-
request: { ...request, ...(mcpServers ? { mcpServers: mcpServers
|
|
34
|
+
request: { ...request, ...(mcpServers ? { mcpServers: v1McpServers(mcpServers) } : {}) },
|
|
34
35
|
};
|
|
35
36
|
}
|
|
37
|
+
const servers = v1McpServers(mcpServers);
|
|
36
38
|
if (replayFrom.type !== "start") {
|
|
37
39
|
throw RequestError.invalidParams({ replayFrom }, `Replaying from a ${replayFrom.type} cursor is not supported`);
|
|
38
40
|
}
|
|
39
41
|
return {
|
|
40
42
|
method: "load",
|
|
41
|
-
request: { ...request, mcpServers:
|
|
43
|
+
request: { ...request, mcpServers: servers ?? [] },
|
|
42
44
|
};
|
|
43
45
|
}
|
|
44
46
|
/**
|
|
@@ -49,7 +51,7 @@ export function v1ForkSessionRequest(params) {
|
|
|
49
51
|
const { mcpServers, systemPrompt, ...request } = params;
|
|
50
52
|
return {
|
|
51
53
|
...request,
|
|
52
|
-
...(mcpServers ? { mcpServers: mcpServers
|
|
54
|
+
...(mcpServers ? { mcpServers: v1McpServers(mcpServers) } : {}),
|
|
53
55
|
...v1SystemPromptField(systemPrompt),
|
|
54
56
|
};
|
|
55
57
|
}
|
|
@@ -120,13 +122,23 @@ export function v2AvailableCommands(commands) {
|
|
|
120
122
|
function v2ConfigOptionsField(options) {
|
|
121
123
|
return options != null ? { configOptions: v2ConfigOptions(options) } : {};
|
|
122
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* The v1 list of the MCP servers of a v2 setup request, or undefined for no
|
|
127
|
+
* list. A request with two servers of the same `name`, or with a transport
|
|
128
|
+
* that the agent does not advertise in `session.mcp` (such as `acp` or a
|
|
129
|
+
* custom `_` type), fails with invalid params (-32602): the v1 session setup
|
|
130
|
+
* would otherwise drop the server without telling the client.
|
|
131
|
+
*/
|
|
132
|
+
function v1McpServers(servers) {
|
|
133
|
+
if (servers == null)
|
|
134
|
+
return undefined;
|
|
135
|
+
v2.assertSupportedMcpServers(servers, V2_SESSION_CAPABILITIES.mcp);
|
|
136
|
+
return servers.map(v1McpServer);
|
|
137
|
+
}
|
|
123
138
|
/**
|
|
124
139
|
* v2 requires a `type` on every transport and makes the empty lists optional.
|
|
125
140
|
* The agent recognizes a v1 stdio server by its missing `type`, so the v2 tag
|
|
126
|
-
* is dropped.
|
|
127
|
-
* the request with invalid params (-32602): the agent advertises only stdio
|
|
128
|
-
* and HTTP, and the v1 session setup would otherwise drop the server without
|
|
129
|
-
* telling the client.
|
|
141
|
+
* is dropped. {@link v1McpServers} has already rejected every other transport.
|
|
130
142
|
*/
|
|
131
143
|
function v1McpServer(server) {
|
|
132
144
|
if (v2.McpServer.isStdio(server)) {
|
|
@@ -136,5 +148,5 @@ function v1McpServer(server) {
|
|
|
136
148
|
if (v2.McpServer.isHttp(server)) {
|
|
137
149
|
return { ...server, headers: server.headers ?? [] };
|
|
138
150
|
}
|
|
139
|
-
throw
|
|
151
|
+
throw new Error(`Unreachable: MCP server of type ${server.type} passed the transport check`);
|
|
140
152
|
}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.99.2-preview.
|
|
6
|
+
"version": "0.99.2-preview.11",
|
|
7
7
|
"description": "An ACP-compatible coding agent powered by the Claude Agent SDK (TypeScript)",
|
|
8
8
|
"main": "dist/lib.js",
|
|
9
9
|
"types": "dist/lib.d.ts",
|
|
@@ -65,8 +65,8 @@
|
|
|
65
65
|
"node": ">=22"
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@agentclientprotocol/sdk": "2.
|
|
69
|
-
"@anthropic-ai/claude-agent-sdk": "0.3.
|
|
68
|
+
"@agentclientprotocol/sdk": "2.4.0",
|
|
69
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.316",
|
|
70
70
|
"diff": "9.0.0",
|
|
71
71
|
"zod": "4.6.7"
|
|
72
72
|
},
|
|
@@ -74,14 +74,14 @@
|
|
|
74
74
|
"@anthropic-ai/sdk": "1.3.0",
|
|
75
75
|
"@eslint/js": "10.0.1",
|
|
76
76
|
"@tsconfig/node22": "22.0.6",
|
|
77
|
-
"@types/node": "26.6.
|
|
77
|
+
"@types/node": "26.6.6",
|
|
78
78
|
"@typescript-eslint/eslint-plugin": "8.72.1",
|
|
79
79
|
"@typescript-eslint/parser": "8.72.1",
|
|
80
80
|
"ajv": "8.20.0",
|
|
81
81
|
"ajv-formats": "3.0.1",
|
|
82
|
-
"eslint": "10.
|
|
82
|
+
"eslint": "10.14.0",
|
|
83
83
|
"eslint-config-prettier": "10.1.8",
|
|
84
|
-
"globals": "17.
|
|
84
|
+
"globals": "17.14.0",
|
|
85
85
|
"prettier": "3.9.10",
|
|
86
86
|
"typescript": "6.0.3",
|
|
87
87
|
"vitest": "5.0.5"
|