@claudexor/acp-server 1.0.1 → 2.0.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.md +1 -1
- package/dist/index.d.ts +12 -50
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +263 -377
- package/dist/index.js.map +1 -1
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +4 -3
- package/dist/validate.js.map +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @claudexor/acp-server
|
|
2
2
|
|
|
3
|
-
Internal package of [Claudexor](https://github.com/razzant/claudexor) —
|
|
3
|
+
Internal package of [Claudexor](https://github.com/razzant/claudexor) — official ACP TypeScript SDK projection over daemon-owned Claudexor threads, including stable list/load/resume/close lifecycle, prompts, cancellation, and attachment handoff.
|
|
4
4
|
|
|
5
5
|
Published as part of the Claudexor toolchain; it follows the monorepo's
|
|
6
6
|
lockstep version and has no separate semver contract. Use the `claudexor`
|
package/dist/index.d.ts
CHANGED
|
@@ -1,76 +1,38 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Readable as NodeReadableStream, type Writable as NodeWritableStream } from "node:stream";
|
|
2
2
|
export declare const ACP_PROTOCOL_VERSION = 1;
|
|
3
3
|
export interface RunnerHooks {
|
|
4
|
-
/** Live RunEvent sink (mirrors events.jsonl) for session/update streaming. */
|
|
5
4
|
onEvent?: (event: any) => void;
|
|
6
|
-
/** Interactive question surface; resolve with answers or null to decline. */
|
|
7
5
|
onInteraction?: (ctx: any) => Promise<any | null>;
|
|
8
|
-
/** Cooperative cancellation (session/cancel aborts the underlying run). */
|
|
9
6
|
signal?: AbortSignal;
|
|
10
7
|
}
|
|
11
8
|
export type RunnerFn = (params: any, hooks?: RunnerHooks) => Promise<unknown>;
|
|
12
9
|
export interface AcpServerOptions {
|
|
13
10
|
runner: RunnerFn;
|
|
14
11
|
transport: {
|
|
15
|
-
read:
|
|
16
|
-
write:
|
|
12
|
+
read: NodeReadableStream;
|
|
13
|
+
write: NodeWritableStream;
|
|
17
14
|
};
|
|
18
15
|
name?: string;
|
|
19
16
|
version?: string;
|
|
20
17
|
}
|
|
21
18
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* live run events as session/update notifications, and forwards interactive
|
|
26
|
-
* harness questions as session/request_permission round-trips.
|
|
19
|
+
* Official ACP SDK projection over Claudexor's daemon-owned threads. The SDK
|
|
20
|
+
* owns parsing, protocol negotiation, cancellation, and JSON-RPC framing; this
|
|
21
|
+
* class only translates stable ACP session methods to the injected /v2 runner.
|
|
27
22
|
*/
|
|
28
23
|
export declare class AcpServer {
|
|
29
24
|
private readonly opts;
|
|
30
|
-
private sessions;
|
|
31
|
-
/** Editor-provided project root per session (anchors runs to the user's project). */
|
|
32
|
-
private readonly sessionCwds;
|
|
33
|
-
private nextRequestId;
|
|
34
|
-
private readonly pendingRequests;
|
|
35
|
-
/** Active run per session: lets session/cancel abort and keeps prompts serial. */
|
|
36
25
|
private readonly activeRuns;
|
|
37
|
-
/** Fallback tool_call ids keyed by `${sessionId}:${toolName}` — a FIFO QUEUE of
|
|
38
|
-
* synthetic ids awaiting completion by a tool_result that arrives WITHOUT a
|
|
39
|
-
* use_id. A queue (not a single slot) so two in-flight same-name use_id-less
|
|
40
|
-
* calls don't clobber each other: each PUSHes on tool_call, the matching
|
|
41
|
-
* tool_result SHIFTs one (oldest-first). use_id-bearing calls match directly
|
|
42
|
-
* by id and never touch this. */
|
|
43
26
|
private readonly openToolCalls;
|
|
44
27
|
constructor(opts: AcpServerOptions);
|
|
45
28
|
serve(): Promise<void>;
|
|
46
|
-
private
|
|
47
|
-
private
|
|
48
|
-
|
|
49
|
-
private
|
|
50
|
-
private
|
|
51
|
-
/**
|
|
52
|
-
* Server->client JSON-RPC request (e.g. session/request_permission),
|
|
53
|
-
* bounded by a deadline: an editor that never answers must not leave the
|
|
54
|
-
* request pending forever (the engine's own interaction timeout would
|
|
55
|
-
* eventually fire, but the ACP surface owns its half of the contract —
|
|
56
|
-
* every request resolves, and the pending slot is always reclaimed).
|
|
57
|
-
* Resolves null on deadline.
|
|
58
|
-
*/
|
|
59
|
-
private request;
|
|
60
|
-
handle(msg: any): Promise<void>;
|
|
61
|
-
/**
|
|
62
|
-
* JSON-RPC notifications (no `id`) get NO response. ACP `session/cancel` is a
|
|
63
|
-
* notification: it aborts the underlying run (cooperative cancellation) and the
|
|
64
|
-
* in-flight session/prompt then resolves with stopReason "cancelled".
|
|
65
|
-
*/
|
|
66
|
-
private handleNotification;
|
|
67
|
-
/** Thin RunEvent -> session/update projection (no business logic). */
|
|
29
|
+
private sessionCall;
|
|
30
|
+
private assertProjectRoot;
|
|
31
|
+
private assertAbsolutePath;
|
|
32
|
+
private controls;
|
|
33
|
+
private agentMessage;
|
|
68
34
|
private forwardRunEvent;
|
|
69
|
-
/**
|
|
70
|
-
* Interactive question -> one session/request_permission round-trip per
|
|
71
|
-
* question (ACP's permission options carry a flat choice list). A cancelled
|
|
72
|
-
* or unanswered request resolves null and the engine declines benignly.
|
|
73
|
-
*/
|
|
74
35
|
private requestAnswers;
|
|
36
|
+
private dropToolCalls;
|
|
75
37
|
}
|
|
76
38
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,QAAQ,IAAI,kBAAkB,EACnC,KAAK,QAAQ,IAAI,kBAAkB,EACpC,MAAM,aAAa,CAAC;AAKrB,eAAO,MAAM,oBAAoB,IAAuB,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE9E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE;QAAE,IAAI,EAAE,kBAAkB,CAAC;QAAC,KAAK,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD;;;;GAIG;AACH,qBAAa,SAAS;IAIR,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsC;IACjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+B;gBAEhC,IAAI,EAAE,gBAAgB;IAE7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAkId,WAAW;IAYzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,QAAQ;YAQF,YAAY;YAcZ,eAAe;YAsDf,cAAc;IA2D5B,OAAO,CAAC,aAAa;CAKtB"}
|
package/dist/index.js
CHANGED
|
@@ -1,435 +1,321 @@
|
|
|
1
1
|
import { existsSync, lstatSync } from "node:fs";
|
|
2
|
-
import { createInterface } from "node:readline";
|
|
3
2
|
import { isAbsolute } from "node:path";
|
|
3
|
+
import { Readable, Writable, } from "node:stream";
|
|
4
|
+
import * as acp from "@agentclientprotocol/sdk";
|
|
4
5
|
import { extractPromptText, summarizeResult } from "./prompt.js";
|
|
5
6
|
import { validateRunControls } from "./validate.js";
|
|
6
|
-
export const ACP_PROTOCOL_VERSION =
|
|
7
|
+
export const ACP_PROTOCOL_VERSION = acp.PROTOCOL_VERSION;
|
|
7
8
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* live run events as session/update notifications, and forwards interactive
|
|
12
|
-
* harness questions as session/request_permission round-trips.
|
|
9
|
+
* Official ACP SDK projection over Claudexor's daemon-owned threads. The SDK
|
|
10
|
+
* owns parsing, protocol negotiation, cancellation, and JSON-RPC framing; this
|
|
11
|
+
* class only translates stable ACP session methods to the injected /v2 runner.
|
|
13
12
|
*/
|
|
14
13
|
export class AcpServer {
|
|
15
14
|
opts;
|
|
16
|
-
sessions = new Set();
|
|
17
|
-
/** Editor-provided project root per session (anchors runs to the user's project). */
|
|
18
|
-
sessionCwds = new Map();
|
|
19
|
-
nextRequestId = 1;
|
|
20
|
-
pendingRequests = new Map();
|
|
21
|
-
/** Active run per session: lets session/cancel abort and keeps prompts serial. */
|
|
22
15
|
activeRuns = new Map();
|
|
23
|
-
/** Fallback tool_call ids keyed by `${sessionId}:${toolName}` — a FIFO QUEUE of
|
|
24
|
-
* synthetic ids awaiting completion by a tool_result that arrives WITHOUT a
|
|
25
|
-
* use_id. A queue (not a single slot) so two in-flight same-name use_id-less
|
|
26
|
-
* calls don't clobber each other: each PUSHes on tool_call, the matching
|
|
27
|
-
* tool_result SHIFTs one (oldest-first). use_id-bearing calls match directly
|
|
28
|
-
* by id and never touch this. */
|
|
29
16
|
openToolCalls = new Map();
|
|
30
17
|
constructor(opts) {
|
|
31
18
|
this.opts = opts;
|
|
32
19
|
}
|
|
33
20
|
async serve() {
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
21
|
+
const stream = acp.ndJsonStream(Writable.toWeb(this.opts.transport.write), Readable.toWeb(this.opts.transport.read));
|
|
22
|
+
const app = acp
|
|
23
|
+
.agent({ name: this.opts.name ?? "claudexor" })
|
|
24
|
+
.onRequest(acp.methods.agent.initialize, ({ params }) => ({
|
|
25
|
+
protocolVersion: params.protocolVersion === ACP_PROTOCOL_VERSION
|
|
26
|
+
? params.protocolVersion
|
|
27
|
+
: ACP_PROTOCOL_VERSION,
|
|
28
|
+
agentInfo: { name: this.opts.name ?? "claudexor", version: this.opts.version ?? "dev" },
|
|
29
|
+
agentCapabilities: {
|
|
30
|
+
loadSession: true,
|
|
31
|
+
promptCapabilities: { image: true, audio: false, embeddedContext: true },
|
|
32
|
+
sessionCapabilities: { list: {}, resume: {}, close: {} },
|
|
33
|
+
},
|
|
34
|
+
authMethods: [],
|
|
35
|
+
}))
|
|
36
|
+
.onRequest(acp.methods.agent.session.new, async ({ params }) => {
|
|
37
|
+
this.assertProjectRoot(params.cwd);
|
|
38
|
+
const record = await this.sessionCall("new", {
|
|
39
|
+
cwd: params.cwd,
|
|
40
|
+
additionalDirectories: params.additionalDirectories ?? [],
|
|
41
|
+
});
|
|
42
|
+
return { sessionId: record.sessionId };
|
|
43
|
+
})
|
|
44
|
+
.onRequest(acp.methods.agent.session.list, async ({ params }) => {
|
|
45
|
+
if (params.cwd != null)
|
|
46
|
+
this.assertAbsolutePath(params.cwd, "session/list cwd");
|
|
47
|
+
const result = (await this.opts.runner({
|
|
48
|
+
mode: "__acp_session_list",
|
|
49
|
+
repoPath: params.cwd ?? undefined,
|
|
50
|
+
cursor: params.cursor ?? undefined,
|
|
51
|
+
}));
|
|
52
|
+
return {
|
|
53
|
+
sessions: (result.sessions ?? []).map((session) => ({
|
|
54
|
+
sessionId: session.sessionId,
|
|
55
|
+
cwd: session.cwd,
|
|
56
|
+
...(session.title != null ? { title: session.title } : {}),
|
|
57
|
+
...(session.updatedAt != null ? { updatedAt: session.updatedAt } : {}),
|
|
58
|
+
})),
|
|
59
|
+
...(result.nextCursor ? { nextCursor: result.nextCursor } : {}),
|
|
60
|
+
};
|
|
61
|
+
})
|
|
62
|
+
.onRequest(acp.methods.agent.session.load, async ({ params, client }) => {
|
|
63
|
+
this.assertProjectRoot(params.cwd);
|
|
64
|
+
const record = await this.sessionCall("load", params);
|
|
65
|
+
for (const turn of record.turns ?? []) {
|
|
66
|
+
if (turn.summary?.trim()) {
|
|
67
|
+
await this.agentMessage(client, record.sessionId, turn.summary.trim());
|
|
68
|
+
}
|
|
42
69
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
70
|
+
return {};
|
|
71
|
+
})
|
|
72
|
+
.onRequest(acp.methods.agent.session.resume, async ({ params }) => {
|
|
73
|
+
this.assertProjectRoot(params.cwd);
|
|
74
|
+
await this.sessionCall("resume", params);
|
|
75
|
+
return {};
|
|
76
|
+
})
|
|
77
|
+
.onRequest(acp.methods.agent.session.close, async ({ params }) => {
|
|
78
|
+
this.activeRuns.get(params.sessionId)?.abort();
|
|
79
|
+
await this.opts.runner({ mode: "__acp_session_close", sessionId: params.sessionId });
|
|
80
|
+
this.activeRuns.delete(params.sessionId);
|
|
81
|
+
this.dropToolCalls(params.sessionId);
|
|
82
|
+
return {};
|
|
83
|
+
})
|
|
84
|
+
.onRequest(acp.methods.agent.session.prompt, async ({ params, client, signal }) => {
|
|
85
|
+
const controls = this.controls(params._meta);
|
|
86
|
+
const validation = validateRunControls({
|
|
87
|
+
sessionId: params.sessionId,
|
|
88
|
+
prompt: params.prompt,
|
|
89
|
+
...controls,
|
|
90
|
+
});
|
|
91
|
+
if (validation)
|
|
92
|
+
throw new Error(validation.message);
|
|
93
|
+
if (this.activeRuns.has(params.sessionId)) {
|
|
94
|
+
throw new Error(`session ${params.sessionId} already has an active prompt`);
|
|
48
95
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
96
|
+
const controller = new AbortController();
|
|
97
|
+
signal.addEventListener("abort", () => controller.abort(), { once: true });
|
|
98
|
+
this.activeRuns.set(params.sessionId, controller);
|
|
99
|
+
try {
|
|
100
|
+
const { mode: requestedMode, ...runControls } = controls;
|
|
101
|
+
const result = (await this.opts.runner({
|
|
102
|
+
...runControls,
|
|
103
|
+
mode: "__acp_session_prompt",
|
|
104
|
+
...(requestedMode !== undefined ? { runMode: requestedMode } : {}),
|
|
105
|
+
sessionId: params.sessionId,
|
|
106
|
+
prompt: extractPromptText(params.prompt),
|
|
107
|
+
attachments: attachmentInputs(params.prompt),
|
|
108
|
+
}, {
|
|
109
|
+
signal: controller.signal,
|
|
110
|
+
onEvent: (event) => void this.forwardRunEvent(client, params.sessionId, event),
|
|
111
|
+
onInteraction: (ctx) => this.requestAnswers(client, params.sessionId, ctx),
|
|
112
|
+
}));
|
|
113
|
+
const summary = summarizeResult(result);
|
|
114
|
+
if (summary)
|
|
115
|
+
await this.agentMessage(client, params.sessionId, summary);
|
|
116
|
+
const status = typeof result.status === "string" ? result.status : "unknown";
|
|
117
|
+
const stopReason = status === "cancelled" || controller.signal.aborted
|
|
118
|
+
? "cancelled"
|
|
119
|
+
: status === "blocked" || status === "failed" || status === "interrupted_unknown"
|
|
120
|
+
? "refusal"
|
|
121
|
+
: "end_turn";
|
|
122
|
+
return {
|
|
123
|
+
stopReason,
|
|
124
|
+
_meta: {
|
|
125
|
+
claudexor: {
|
|
126
|
+
runId: result.runId ?? null,
|
|
127
|
+
status,
|
|
128
|
+
applyEligibility: result.applyEligibility ?? null,
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
};
|
|
57
132
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (msg.id === undefined || msg.id === null) {
|
|
62
|
-
this.handleNotification(msg);
|
|
63
|
-
continue;
|
|
133
|
+
finally {
|
|
134
|
+
if (this.activeRuns.get(params.sessionId) === controller)
|
|
135
|
+
this.activeRuns.delete(params.sessionId);
|
|
64
136
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
});
|
|
72
|
-
}
|
|
137
|
+
})
|
|
138
|
+
.onNotification(acp.methods.agent.session.cancel, async ({ params }) => {
|
|
139
|
+
this.activeRuns.get(params.sessionId)?.abort();
|
|
140
|
+
});
|
|
141
|
+
const connection = app.connect(stream);
|
|
142
|
+
await connection.closed;
|
|
73
143
|
}
|
|
74
|
-
|
|
75
|
-
this.opts.
|
|
144
|
+
async sessionCall(action, params) {
|
|
145
|
+
return (await this.opts.runner({
|
|
146
|
+
mode: `__acp_session_${action}`,
|
|
147
|
+
sessionId: params["sessionId"],
|
|
148
|
+
repoPath: params["cwd"],
|
|
149
|
+
additionalDirectories: params["additionalDirectories"],
|
|
150
|
+
}));
|
|
76
151
|
}
|
|
77
|
-
|
|
78
|
-
this.
|
|
152
|
+
assertProjectRoot(path) {
|
|
153
|
+
this.assertAbsolutePath(path, "session cwd");
|
|
154
|
+
if (!existsSync(path) || !lstatSync(path).isDirectory()) {
|
|
155
|
+
throw new Error("session cwd must be an existing directory");
|
|
156
|
+
}
|
|
79
157
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
158
|
+
assertAbsolutePath(path, name) {
|
|
159
|
+
if (typeof path !== "string" || !path.trim() || !isAbsolute(path)) {
|
|
160
|
+
throw new Error(`${name} must be a non-empty absolute path`);
|
|
161
|
+
}
|
|
83
162
|
}
|
|
84
|
-
|
|
85
|
-
|
|
163
|
+
controls(meta) {
|
|
164
|
+
if (!meta || typeof meta !== "object" || Array.isArray(meta))
|
|
165
|
+
return {};
|
|
166
|
+
const value = meta["claudexor"];
|
|
167
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
168
|
+
? value
|
|
169
|
+
: {};
|
|
86
170
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
*/
|
|
95
|
-
request(method, params, deadlineMs) {
|
|
96
|
-
const id = `srv-${this.nextRequestId++}`;
|
|
97
|
-
return new Promise((resolve) => {
|
|
98
|
-
let timer;
|
|
99
|
-
if (deadlineMs !== undefined && Number.isFinite(deadlineMs)) {
|
|
100
|
-
timer = setTimeout(() => {
|
|
101
|
-
if (this.pendingRequests.delete(id))
|
|
102
|
-
resolve(null);
|
|
103
|
-
}, Math.max(0, deadlineMs));
|
|
104
|
-
timer.unref?.();
|
|
105
|
-
}
|
|
106
|
-
this.pendingRequests.set(id, (result) => {
|
|
107
|
-
if (timer)
|
|
108
|
-
clearTimeout(timer);
|
|
109
|
-
resolve(result);
|
|
110
|
-
});
|
|
111
|
-
this.write({ jsonrpc: "2.0", id, method, params });
|
|
171
|
+
async agentMessage(client, sessionId, text) {
|
|
172
|
+
await client.notify(acp.methods.client.session.update, {
|
|
173
|
+
sessionId,
|
|
174
|
+
update: {
|
|
175
|
+
sessionUpdate: "agent_message_chunk",
|
|
176
|
+
content: { type: "text", text },
|
|
177
|
+
},
|
|
112
178
|
});
|
|
113
179
|
}
|
|
114
|
-
async
|
|
115
|
-
const { id, method, params } = msg;
|
|
116
|
-
switch (method) {
|
|
117
|
-
case "initialize":
|
|
118
|
-
this.reply(id, {
|
|
119
|
-
protocolVersion: ACP_PROTOCOL_VERSION,
|
|
120
|
-
agentInfo: { name: this.opts.name ?? "claudexor", version: this.opts.version ?? "dev" },
|
|
121
|
-
agentCapabilities: { promptCapabilities: { image: false, audio: false, embeddedContext: true } },
|
|
122
|
-
// ACP v1 InitializeResponse carries authMethods; strict clients
|
|
123
|
-
// deserialize it. Claudexor needs no editor-side auth: empty list.
|
|
124
|
-
authMethods: [],
|
|
125
|
-
});
|
|
126
|
-
return;
|
|
127
|
-
case "session/new": {
|
|
128
|
-
const sessionId = `acp-${Math.random().toString(36).slice(2, 10)}`;
|
|
129
|
-
// The editor's cwd anchors all of this session's runs to the project the
|
|
130
|
-
// user is actually in (previously ignored -> runs hit the server's cwd).
|
|
131
|
-
if (!params || !Object.prototype.hasOwnProperty.call(params, "cwd")) {
|
|
132
|
-
this.error(id, -32600, "session/new cwd is required");
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
if (typeof params.cwd !== "string" || !params.cwd.trim()) {
|
|
136
|
-
this.error(id, -32600, "session/new cwd must be a non-empty absolute path string");
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
const cwd = params.cwd.trim();
|
|
140
|
-
if (!isAbsolute(cwd)) {
|
|
141
|
-
this.error(id, -32600, "session/new cwd must be an absolute path");
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
if (!existsSync(cwd) || !lstatSync(cwd).isDirectory()) {
|
|
145
|
-
this.error(id, -32600, "session/new cwd must be an existing directory");
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
this.sessions.add(sessionId);
|
|
149
|
-
this.sessionCwds.set(sessionId, cwd);
|
|
150
|
-
this.reply(id, { sessionId });
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
case "session/prompt": {
|
|
154
|
-
const sessionId = params?.sessionId;
|
|
155
|
-
const text = extractPromptText(params?.prompt);
|
|
156
|
-
if (!text.trim()) {
|
|
157
|
-
this.error(id, -32600, "prompt must be a non-empty string");
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
if (!sessionId || !this.sessions.has(sessionId) || !this.sessionCwds.has(sessionId)) {
|
|
161
|
-
this.error(id, -32600, "session/prompt requires a known session created with session/new cwd");
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
const runControlError = validateRunControls(params);
|
|
165
|
-
if (runControlError) {
|
|
166
|
-
// The machine-readable class (e.g. inline_secret_rejected) rides
|
|
167
|
-
// JSON-RPC error.data so ACP hosts can branch without parsing prose.
|
|
168
|
-
this.error(id, -32600, runControlError.message, runControlError.code ? { code: runControlError.code } : undefined);
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
// One active run per session: a second prompt while one is running is
|
|
172
|
-
// a protocol misuse. ACP StopReason has no "error" member, so fail loudly
|
|
173
|
-
// as a JSON-RPC error (-32600 Invalid Request) rather than inventing one.
|
|
174
|
-
if (this.activeRuns.has(sessionId)) {
|
|
175
|
-
this.error(id, -32600, `session ${sessionId} already has an active prompt`);
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
const controller = new AbortController();
|
|
179
|
-
this.activeRuns.set(sessionId, controller);
|
|
180
|
-
try {
|
|
181
|
-
const hooks = {
|
|
182
|
-
signal: controller.signal,
|
|
183
|
-
onEvent: (event) => this.forwardRunEvent(sessionId, event),
|
|
184
|
-
onInteraction: (ctx) => this.requestAnswers(sessionId, ctx),
|
|
185
|
-
};
|
|
186
|
-
const result = await this.opts.runner({
|
|
187
|
-
prompt: text,
|
|
188
|
-
mode: params?.mode ?? "agent",
|
|
189
|
-
repoPath: this.sessionCwds.get(sessionId),
|
|
190
|
-
...(params?.harness !== undefined ? { harness: params.harness } : {}),
|
|
191
|
-
...(params?.primaryHarness !== undefined
|
|
192
|
-
? { primaryHarness: params.primaryHarness }
|
|
193
|
-
: {}),
|
|
194
|
-
...(params?.web !== undefined ? { web: params.web } : {}),
|
|
195
|
-
...(params?.externalContextPolicy !== undefined
|
|
196
|
-
? { externalContextPolicy: params.externalContextPolicy }
|
|
197
|
-
: {}),
|
|
198
|
-
...(params?.model !== undefined ? { model: params.model } : {}),
|
|
199
|
-
...(params?.effort !== undefined ? { effort: params.effort } : {}),
|
|
200
|
-
...(params?.n !== undefined ? { n: params.n } : {}),
|
|
201
|
-
...(params?.race === true ? { race: true } : {}),
|
|
202
|
-
...(params?.untilClean === true ? { untilClean: true } : {}),
|
|
203
|
-
...(params?.swarm === true ? { swarm: true } : {}),
|
|
204
|
-
...(params?.create === true ? { create: true } : {}),
|
|
205
|
-
...(params?.tests !== undefined ? { tests: params.tests } : {}),
|
|
206
|
-
...(params?.maxUsd !== undefined ? { maxUsd: params.maxUsd } : {}),
|
|
207
|
-
...(params?.access !== undefined ? { access: params.access } : {}),
|
|
208
|
-
...(params?.protectedPathApprovals !== undefined
|
|
209
|
-
? { protectedPathApprovals: params.protectedPathApprovals }
|
|
210
|
-
: {}),
|
|
211
|
-
...(params?.reviewerPanel !== undefined ? { reviewerPanel: params.reviewerPanel } : {}),
|
|
212
|
-
...(params?.reviewerModels !== undefined
|
|
213
|
-
? { reviewerModels: params.reviewerModels }
|
|
214
|
-
: {}),
|
|
215
|
-
...(params?.reviewerEfforts !== undefined
|
|
216
|
-
? { reviewerEfforts: params.reviewerEfforts }
|
|
217
|
-
: {}),
|
|
218
|
-
}, hooks);
|
|
219
|
-
// The turn result is the human-readable summary/answer (the run's
|
|
220
|
-
// primary output), not a raw dumped JSON object the editor can't show.
|
|
221
|
-
const summary = summarizeResult(result);
|
|
222
|
-
if (summary) {
|
|
223
|
-
this.notify("session/update", {
|
|
224
|
-
sessionId,
|
|
225
|
-
update: { sessionUpdate: "agent_message_chunk", content: { type: "text", text: summary } },
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
this.reply(id, { stopReason: controller.signal.aborted ? "cancelled" : "end_turn" });
|
|
229
|
-
}
|
|
230
|
-
catch (err) {
|
|
231
|
-
if (controller.signal.aborted) {
|
|
232
|
-
this.reply(id, { stopReason: "cancelled" });
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
// A failed turn is a JSON-RPC error (-32603 internal), not an invented
|
|
236
|
-
// StopReason — the ACP StopReason enum has no "error" member.
|
|
237
|
-
this.error(id, -32603, err instanceof Error ? err.message : String(err));
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
finally {
|
|
241
|
-
if (this.activeRuns.get(sessionId) === controller)
|
|
242
|
-
this.activeRuns.delete(sessionId);
|
|
243
|
-
}
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
|
-
default:
|
|
247
|
-
this.error(id, -32601, `method not found: ${method}`);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* JSON-RPC notifications (no `id`) get NO response. ACP `session/cancel` is a
|
|
252
|
-
* notification: it aborts the underlying run (cooperative cancellation) and the
|
|
253
|
-
* in-flight session/prompt then resolves with stopReason "cancelled".
|
|
254
|
-
*/
|
|
255
|
-
handleNotification(msg) {
|
|
256
|
-
const { method, params } = msg;
|
|
257
|
-
if (method === "session/cancel") {
|
|
258
|
-
const sessionId = params?.sessionId;
|
|
259
|
-
const active = sessionId ? this.activeRuns.get(sessionId) : undefined;
|
|
260
|
-
if (active)
|
|
261
|
-
active.abort();
|
|
262
|
-
}
|
|
263
|
-
// Unknown notifications are silently ignored — JSON-RPC forbids replying.
|
|
264
|
-
}
|
|
265
|
-
/** Thin RunEvent -> session/update projection (no business logic). */
|
|
266
|
-
forwardRunEvent(sessionId, event) {
|
|
180
|
+
async forwardRunEvent(client, sessionId, event) {
|
|
267
181
|
const type = String(event?.type ?? "");
|
|
268
|
-
const
|
|
269
|
-
if (type
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
}
|
|
285
|
-
if (
|
|
286
|
-
const
|
|
287
|
-
|
|
288
|
-
// Fallback matching for tool_results that lack a native use_id: only those
|
|
289
|
-
// need it (a use_id-bearing result matches directly by id). Without this the
|
|
290
|
-
// synthetic tc-* call never completes and the client hangs. Key by
|
|
291
|
-
// sessionId+name (the only discriminator the result side also carries) and
|
|
292
|
-
// PUSH onto a FIFO queue so two concurrent same-name use_id-less calls each
|
|
293
|
-
// get their own slot — the matching results SHIFT them oldest-first.
|
|
294
|
-
if (typeof tool["use_id"] !== "string") {
|
|
295
|
-
const fallbackKey = `${sessionId}:${String(tool["name"] ?? "")}`;
|
|
296
|
-
const queue = this.openToolCalls.get(fallbackKey);
|
|
297
|
-
if (queue)
|
|
298
|
-
queue.push(toolCallId);
|
|
299
|
-
else
|
|
300
|
-
this.openToolCalls.set(fallbackKey, [toolCallId]);
|
|
301
|
-
}
|
|
302
|
-
this.notify("session/update", {
|
|
303
|
-
sessionId,
|
|
304
|
-
update: {
|
|
305
|
-
sessionUpdate: "tool_call",
|
|
306
|
-
toolCallId,
|
|
307
|
-
title: String(tool["name"] ?? "tool"),
|
|
308
|
-
status: "in_progress",
|
|
309
|
-
},
|
|
310
|
-
});
|
|
311
|
-
return;
|
|
312
|
-
}
|
|
313
|
-
if (sub === "tool_result" && p["tool"] && typeof p["tool"] === "object") {
|
|
314
|
-
const tool = p["tool"];
|
|
315
|
-
// Terminal completion for the started tool_call. status: "ok"->completed,
|
|
316
|
-
// "error"->failed; an unknown/missing status still completes (never hang).
|
|
317
|
-
const hasUseId = typeof tool["use_id"] === "string" && tool["use_id"];
|
|
318
|
-
const fallbackKey = `${sessionId}:${String(tool["name"] ?? "")}`;
|
|
319
|
-
// use_id-bearing result -> match directly; otherwise SHIFT the oldest
|
|
320
|
-
// queued synthetic id (FIFO) so concurrent same-name calls each complete.
|
|
321
|
-
const queue = hasUseId ? undefined : this.openToolCalls.get(fallbackKey);
|
|
322
|
-
const toolCallId = hasUseId ? String(tool["use_id"]) : queue?.shift();
|
|
323
|
-
if (toolCallId) {
|
|
324
|
-
// Drop the queue once drained so empty keys don't accumulate.
|
|
325
|
-
if (queue && queue.length === 0)
|
|
326
|
-
this.openToolCalls.delete(fallbackKey);
|
|
327
|
-
this.notify("session/update", {
|
|
328
|
-
sessionId,
|
|
329
|
-
update: {
|
|
330
|
-
sessionUpdate: "tool_call_update",
|
|
331
|
-
toolCallId,
|
|
332
|
-
status: tool["status"] === "error" ? "failed" : "completed",
|
|
333
|
-
},
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
return;
|
|
182
|
+
const payload = (event?.payload ?? {});
|
|
183
|
+
if (type !== "harness.event")
|
|
184
|
+
return;
|
|
185
|
+
const sub = String(payload["type"] ?? "");
|
|
186
|
+
const tool = payload["tool"];
|
|
187
|
+
if ((sub === "message" || sub === "thinking") && typeof payload["text"] === "string") {
|
|
188
|
+
await client.notify(acp.methods.client.session.update, {
|
|
189
|
+
sessionId,
|
|
190
|
+
update: {
|
|
191
|
+
sessionUpdate: sub === "thinking" ? "agent_thought_chunk" : "agent_message_chunk",
|
|
192
|
+
content: { type: "text", text: payload["text"] },
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
if (sub === "tool_call" && tool) {
|
|
198
|
+
const id = String(tool["use_id"] ?? `tc-${crypto.randomUUID()}`);
|
|
199
|
+
if (typeof tool["use_id"] !== "string") {
|
|
200
|
+
const key = `${sessionId}:${String(tool["name"] ?? "")}`;
|
|
201
|
+
this.openToolCalls.set(key, [...(this.openToolCalls.get(key) ?? []), id]);
|
|
337
202
|
}
|
|
203
|
+
await client.notify(acp.methods.client.session.update, {
|
|
204
|
+
sessionId,
|
|
205
|
+
update: {
|
|
206
|
+
sessionUpdate: "tool_call",
|
|
207
|
+
toolCallId: id,
|
|
208
|
+
title: String(tool["name"] ?? "tool"),
|
|
209
|
+
status: "in_progress",
|
|
210
|
+
},
|
|
211
|
+
});
|
|
338
212
|
return;
|
|
339
213
|
}
|
|
340
|
-
if (
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
const
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
214
|
+
if (sub === "tool_result" && tool) {
|
|
215
|
+
const key = `${sessionId}:${String(tool["name"] ?? "")}`;
|
|
216
|
+
const queue = this.openToolCalls.get(key);
|
|
217
|
+
const id = typeof tool["use_id"] === "string" ? tool["use_id"] : queue?.shift();
|
|
218
|
+
if (queue?.length === 0)
|
|
219
|
+
this.openToolCalls.delete(key);
|
|
220
|
+
if (!id)
|
|
221
|
+
return;
|
|
222
|
+
await client.notify(acp.methods.client.session.update, {
|
|
349
223
|
sessionId,
|
|
350
|
-
update: {
|
|
224
|
+
update: {
|
|
225
|
+
sessionUpdate: "tool_call_update",
|
|
226
|
+
toolCallId: id,
|
|
227
|
+
status: tool["status"] === "error" ? "failed" : "completed",
|
|
228
|
+
},
|
|
351
229
|
});
|
|
352
230
|
}
|
|
353
231
|
}
|
|
354
|
-
|
|
355
|
-
* Interactive question -> one session/request_permission round-trip per
|
|
356
|
-
* question (ACP's permission options carry a flat choice list). A cancelled
|
|
357
|
-
* or unanswered request resolves null and the engine declines benignly.
|
|
358
|
-
*/
|
|
359
|
-
async requestAnswers(sessionId, ctx) {
|
|
232
|
+
async requestAnswers(client, sessionId, ctx) {
|
|
360
233
|
const request = ctx?.request;
|
|
361
234
|
const questions = Array.isArray(request?.questions) ? request.questions : [];
|
|
362
|
-
if (questions.length === 0)
|
|
363
|
-
return null;
|
|
364
235
|
const answers = [];
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
name: String(o?.label ?? `option ${idx + 1}`),
|
|
236
|
+
for (const [index, question] of questions.entries()) {
|
|
237
|
+
const options = (Array.isArray(question?.options) ? question.options : []).map((option, optionIndex) => ({
|
|
238
|
+
optionId: `opt-${optionIndex + 1}`,
|
|
239
|
+
name: String(option?.label ?? `option ${optionIndex + 1}`),
|
|
370
240
|
kind: "allow_once",
|
|
371
241
|
}));
|
|
372
|
-
if (options.length === 0)
|
|
373
|
-
// A free-text question has no answer channel over ACP: session/request_permission
|
|
374
|
-
// returns a chosen optionId, NOT arbitrary text. Faking an "Answer in chat"
|
|
375
|
-
// affordance would advertise a capability this surface cannot honor. Decline
|
|
376
|
-
// benignly (like the --json path) so the run continues with assumptions, and
|
|
377
|
-
// note it honestly to the client below.
|
|
378
|
-
declinedFreeText = true;
|
|
242
|
+
if (options.length === 0)
|
|
379
243
|
continue;
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
// clients that JOIN permissions to tool calls otherwise render an
|
|
383
|
-
// orphan (the id must exist in the session's tool-call timeline).
|
|
384
|
-
// UNIQUE per question: a multi-question interaction must not reuse one
|
|
385
|
-
// id across frames (joining clients would clobber/mis-associate).
|
|
386
|
-
const toolCallId = `${String(request?.interaction_id ?? "interaction")}:${String(q?.id ?? qIdx)}`;
|
|
387
|
-
this.notify("session/update", {
|
|
244
|
+
const toolCallId = `${String(request?.interaction_id ?? "interaction")}:${String(question?.id ?? index)}`;
|
|
245
|
+
await client.notify(acp.methods.client.session.update, {
|
|
388
246
|
sessionId,
|
|
389
247
|
update: {
|
|
390
248
|
sessionUpdate: "tool_call",
|
|
391
249
|
toolCallId,
|
|
392
|
-
title: String(
|
|
250
|
+
title: String(question?.question ?? "Question"),
|
|
393
251
|
kind: "other",
|
|
394
252
|
status: "pending",
|
|
395
253
|
},
|
|
396
254
|
});
|
|
397
|
-
|
|
398
|
-
// timeoutAt on every interaction request); a silent editor then yields
|
|
399
|
-
// a null response instead of a forever-pending server request.
|
|
400
|
-
const deadlineMs = Date.parse(String(request?.timeout_at ?? ctx?.timeoutAt ?? "")) - Date.now();
|
|
401
|
-
const response = await this.request("session/request_permission", {
|
|
255
|
+
const response = (await client.request(acp.methods.client.session.requestPermission, {
|
|
402
256
|
sessionId,
|
|
403
|
-
toolCall: { toolCallId, title: String(
|
|
257
|
+
toolCall: { toolCallId, title: String(question?.question ?? "Question") },
|
|
404
258
|
options,
|
|
405
|
-
}
|
|
406
|
-
const
|
|
407
|
-
const
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
259
|
+
}));
|
|
260
|
+
const outcome = response.outcome;
|
|
261
|
+
const selected = outcome.outcome === "selected"
|
|
262
|
+
? options.find((option) => option.optionId === outcome.optionId)
|
|
263
|
+
: undefined;
|
|
264
|
+
await client.notify(acp.methods.client.session.update, {
|
|
411
265
|
sessionId,
|
|
412
|
-
update: {
|
|
266
|
+
update: {
|
|
267
|
+
sessionUpdate: "tool_call_update",
|
|
268
|
+
toolCallId,
|
|
269
|
+
status: selected ? "completed" : "failed",
|
|
270
|
+
},
|
|
413
271
|
});
|
|
414
|
-
if (
|
|
415
|
-
answers.push({
|
|
272
|
+
if (selected) {
|
|
273
|
+
answers.push({
|
|
274
|
+
question_id: String(question?.id ?? ""),
|
|
275
|
+
selected_labels: [selected.name],
|
|
276
|
+
free_text: null,
|
|
277
|
+
});
|
|
416
278
|
}
|
|
417
279
|
}
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
280
|
+
return answers.length > 0
|
|
281
|
+
? { interaction_id: String(request?.interaction_id ?? ""), answers }
|
|
282
|
+
: null;
|
|
283
|
+
}
|
|
284
|
+
dropToolCalls(sessionId) {
|
|
285
|
+
for (const key of this.openToolCalls.keys()) {
|
|
286
|
+
if (key.startsWith(`${sessionId}:`))
|
|
287
|
+
this.openToolCalls.delete(key);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
function attachmentInputs(prompt) {
|
|
292
|
+
const attachments = [];
|
|
293
|
+
for (const [index, block] of prompt.entries()) {
|
|
294
|
+
if (block.type === "image") {
|
|
295
|
+
attachments.push({
|
|
296
|
+
kind: "image",
|
|
297
|
+
mime: block.mimeType,
|
|
298
|
+
name: `acp-image-${index + 1}`,
|
|
299
|
+
data: block.data,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
else if (block.type === "resource" && "blob" in block.resource) {
|
|
303
|
+
attachments.push({
|
|
304
|
+
kind: "file",
|
|
305
|
+
mime: block.resource.mimeType ?? "application/octet-stream",
|
|
306
|
+
name: `acp-resource-${index + 1}`,
|
|
307
|
+
data: block.resource.blob,
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
else if (block.type === "resource" && "text" in block.resource) {
|
|
311
|
+
attachments.push({
|
|
312
|
+
kind: "file",
|
|
313
|
+
mime: block.resource.mimeType ?? "text/plain",
|
|
314
|
+
name: `acp-resource-${index + 1}`,
|
|
315
|
+
data: Buffer.from(block.resource.text, "utf8").toString("base64"),
|
|
428
316
|
});
|
|
429
317
|
}
|
|
430
|
-
// Returning answers only for the choice questions; an empty set is a benign
|
|
431
|
-
// decline (orchestrator/adapter then continue with assumptions).
|
|
432
|
-
return answers.length > 0 ? { interaction_id: String(request?.interaction_id ?? ""), answers } : null;
|
|
433
318
|
}
|
|
319
|
+
return attachments;
|
|
434
320
|
}
|
|
435
321
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/validate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAgBA,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAyD3E"}
|
package/dist/validate.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* (mode/harness/n/booleans), then the SHARED semantic run-control rules
|
|
4
4
|
* (one owner in @claudexor/schema). Pure functions, no server state.
|
|
5
5
|
*/
|
|
6
|
-
import { ModeKind, validateOptionalNonEmptyString, validateSurfaceRunControls } from "@claudexor/schema";
|
|
6
|
+
import { ModeKind, validateOptionalNonEmptyString, validateSurfaceRunControls, } from "@claudexor/schema";
|
|
7
7
|
import { assertNoInlineSecretValues, errorCode } from "@claudexor/util";
|
|
8
8
|
function isPlainRecord(value) {
|
|
9
9
|
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
@@ -28,7 +28,7 @@ export function validateRunControls(params) {
|
|
|
28
28
|
"swarm",
|
|
29
29
|
"create",
|
|
30
30
|
"tests",
|
|
31
|
-
"
|
|
31
|
+
"paidBudget",
|
|
32
32
|
"access",
|
|
33
33
|
"protectedPathApprovals",
|
|
34
34
|
"reviewerPanel",
|
|
@@ -44,7 +44,8 @@ export function validateRunControls(params) {
|
|
|
44
44
|
if (!allowedKeys.has(key))
|
|
45
45
|
return msg(`unknown session/prompt field: ${key}`);
|
|
46
46
|
}
|
|
47
|
-
if (params.mode !== undefined &&
|
|
47
|
+
if (params.mode !== undefined &&
|
|
48
|
+
(typeof params.mode !== "string" || !ModeKind.safeParse(params.mode).success)) {
|
|
48
49
|
return msg("mode must be a valid mode");
|
|
49
50
|
}
|
|
50
51
|
const harnessError = validateOptionalNonEmptyString(params.harness, "harness");
|
package/dist/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,QAAQ,EACR,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,0BAA0B,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAExE,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAQD,MAAM,GAAG,GAAG,CAAC,OAAe,EAAmB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AAEhE,MAAM,UAAU,mBAAmB,CAAC,MAAe;IACjD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;QAC1B,WAAW;QACX,QAAQ;QACR,MAAM;QACN,SAAS;QACT,gBAAgB;QAChB,KAAK;QACL,uBAAuB;QACvB,OAAO;QACP,QAAQ;QACR,GAAG;QACH,MAAM;QACN,YAAY;QACZ,OAAO;QACP,QAAQ;QACR,OAAO;QACP,YAAY;QACZ,QAAQ;QACR,wBAAwB;QACxB,eAAe;QACf,gBAAgB;QAChB,iBAAiB;KAClB,CAAC,CAAC;IACH,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,oEAAoE;QACpE,wEAAwE;QACxE,yEAAyE;QACzE,IAAI,GAAG,KAAK,OAAO;YAAE,SAAS;QAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,IACE,MAAM,CAAC,IAAI,KAAK,SAAS;QACzB,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAC7E,CAAC;QACD,OAAO,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,YAAY,GAAG,8BAA8B,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC/E,IAAI,YAAY;QAAE,OAAO,GAAG,CAAC,YAAY,CAAC,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAU,EAAE,CAAC;QACtE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpE,OAAO,GAAG,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC3B,wEAAwE;QACxE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAK,MAAM,CAAC,CAAY,GAAG,GAAG,EAAE,CAAC;YAC9D,OAAO,GAAG,CACR,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,8BAA8B,CACzF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,MAAM;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,uBAAuB,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc,EAAE,OAAe;IAC9D,IAAI,CAAC;QACH,0BAA0B,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAClG,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudexor/acp-server",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "Official-SDK ACP projection over daemon-owned Claudexor threads and runs.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./dist/index.js",
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
@@ -16,8 +16,9 @@
|
|
|
16
16
|
"dist"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@
|
|
20
|
-
"@claudexor/util": "
|
|
19
|
+
"@agentclientprotocol/sdk": "1.2.1",
|
|
20
|
+
"@claudexor/util": "2.0.0",
|
|
21
|
+
"@claudexor/schema": "2.0.0"
|
|
21
22
|
},
|
|
22
23
|
"repository": {
|
|
23
24
|
"type": "git",
|