@bunny-agent/runner-cli 0.9.60-beta.2 → 0.9.60-beta.5
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.
|
@@ -106,6 +106,42 @@ describe("runner-cli Integration Tests", () => {
|
|
|
106
106
|
expect(typeof result.responses[1].result.sessionId).toBe("string");
|
|
107
107
|
expect(result.exitCode).toBe(0);
|
|
108
108
|
}, TIMEOUT);
|
|
109
|
+
it("reports an unknown runner from _meta as invalid params, not an internal error", async () => {
|
|
110
|
+
// Fully unmocked, and credential-free: dispatch rejects the runner name
|
|
111
|
+
// before any agent SDK is constructed.
|
|
112
|
+
const result = await runAcpHandshake([
|
|
113
|
+
{
|
|
114
|
+
jsonrpc: "2.0",
|
|
115
|
+
id: 1,
|
|
116
|
+
method: "initialize",
|
|
117
|
+
params: { protocolVersion: 1, clientCapabilities: {} },
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
jsonrpc: "2.0",
|
|
121
|
+
id: 2,
|
|
122
|
+
method: "session/new",
|
|
123
|
+
params: {
|
|
124
|
+
cwd: process.cwd(),
|
|
125
|
+
mcpServers: [],
|
|
126
|
+
_meta: { "bunny-agent": { runner: "claude-code" } },
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
(prior) => ({
|
|
130
|
+
jsonrpc: "2.0",
|
|
131
|
+
id: 3,
|
|
132
|
+
method: "session/prompt",
|
|
133
|
+
params: {
|
|
134
|
+
sessionId: prior[1].result.sessionId,
|
|
135
|
+
prompt: [{ type: "text", text: "hi" }],
|
|
136
|
+
},
|
|
137
|
+
}),
|
|
138
|
+
]);
|
|
139
|
+
const promptResponse = result.responses[2];
|
|
140
|
+
expect(promptResponse.error).toBeDefined();
|
|
141
|
+
// -32602 invalid params, not -32603 internal error.
|
|
142
|
+
expect(promptResponse.error?.code).toBe(-32602);
|
|
143
|
+
expect(promptResponse.error?.message).toMatch(/Unknown runner: claude-code/);
|
|
144
|
+
}, TIMEOUT);
|
|
109
145
|
});
|
|
110
146
|
/**
|
|
111
147
|
* Helper to run CLI and capture output
|
|
@@ -140,21 +176,32 @@ function runCLI(args, options = {}) {
|
|
|
140
176
|
});
|
|
141
177
|
}
|
|
142
178
|
/**
|
|
143
|
-
* Drives `bunny-agent acp` as a real subprocess
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
* waits for
|
|
179
|
+
* Drives `bunny-agent acp` as a real subprocess over its actual stdin/stdout:
|
|
180
|
+
* sends each step, waits for the matching response before sending the next
|
|
181
|
+
* (so a step can depend on an earlier `sessionId`), then closes stdin — how a
|
|
182
|
+
* disconnecting editor looks on the wire — and waits for a clean exit.
|
|
147
183
|
*/
|
|
148
|
-
function runAcpHandshake(
|
|
184
|
+
function runAcpHandshake(steps) {
|
|
149
185
|
return new Promise((resolve, reject) => {
|
|
150
186
|
const proc = spawn("node", [CLI_PATH, "acp", "--runner", "claude"], {
|
|
151
187
|
env: process.env,
|
|
152
188
|
stdio: "pipe",
|
|
153
189
|
});
|
|
154
|
-
const pendingIds = new Set(requests.map((r) => r.id));
|
|
155
190
|
const responses = [];
|
|
156
191
|
let buffer = "";
|
|
157
192
|
let stderr = "";
|
|
193
|
+
let stepIndex = 0;
|
|
194
|
+
let awaitingId = null;
|
|
195
|
+
const sendNext = () => {
|
|
196
|
+
if (stepIndex >= steps.length) {
|
|
197
|
+
proc.stdin?.end();
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
const step = steps[stepIndex++];
|
|
201
|
+
const req = typeof step === "function" ? step(responses) : step;
|
|
202
|
+
awaitingId = req.id;
|
|
203
|
+
proc.stdin?.write(`${JSON.stringify(req)}\n`);
|
|
204
|
+
};
|
|
158
205
|
proc.stdout?.on("data", (chunk) => {
|
|
159
206
|
buffer += chunk.toString();
|
|
160
207
|
const lines = buffer.split("\n");
|
|
@@ -170,29 +217,25 @@ function runAcpHandshake(requests) {
|
|
|
170
217
|
reject(new Error(`acp stdout emitted a non-JSON line, which would corrupt real ACP framing: ${line}`));
|
|
171
218
|
return;
|
|
172
219
|
}
|
|
173
|
-
if (
|
|
220
|
+
if (msg.id === awaitingId) {
|
|
174
221
|
responses.push(msg);
|
|
175
|
-
|
|
222
|
+
awaitingId = null;
|
|
223
|
+
sendNext();
|
|
176
224
|
}
|
|
177
225
|
}
|
|
178
|
-
if (pendingIds.size === 0) {
|
|
179
|
-
proc.stdin?.end();
|
|
180
|
-
}
|
|
181
226
|
});
|
|
182
227
|
proc.stderr?.on("data", (chunk) => {
|
|
183
228
|
stderr += chunk.toString();
|
|
184
229
|
});
|
|
185
230
|
proc.on("close", (code) => {
|
|
186
|
-
if (
|
|
187
|
-
reject(new Error(`acp process exited
|
|
231
|
+
if (responses.length < steps.length) {
|
|
232
|
+
reject(new Error(`acp process exited after ${responses.length}/${steps.length} responses. stderr: ${stderr}`));
|
|
188
233
|
return;
|
|
189
234
|
}
|
|
190
235
|
resolve({ responses, exitCode: code ?? 0 });
|
|
191
236
|
});
|
|
192
237
|
proc.on("error", reject);
|
|
193
|
-
|
|
194
|
-
proc.stdin?.write(`${JSON.stringify(req)}\n`);
|
|
195
|
-
}
|
|
238
|
+
sendNext();
|
|
196
239
|
setTimeout(() => {
|
|
197
240
|
proc.kill();
|
|
198
241
|
reject(new Error("acp handshake timed out"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-cli.integration.test.js","sourceRoot":"","sources":["../../src/__tests__/runner-cli.integration.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runner-cli.integration.test.js","sourceRoot":"","sources":["../../src/__tests__/runner-cli.integration.test.ts"],"names":[],"mappings":"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"}
|
package/dist/bundle.mjs
CHANGED
|
@@ -25144,6 +25144,9 @@ var AcpSessionUpdateSerializer = class {
|
|
|
25144
25144
|
toolTitles = /* @__PURE__ */ new Map();
|
|
25145
25145
|
stopReasonValue = "end_turn";
|
|
25146
25146
|
errorTextValue;
|
|
25147
|
+
sessionIdValue;
|
|
25148
|
+
inputTokensValue = 0;
|
|
25149
|
+
outputTokensValue = 0;
|
|
25147
25150
|
/** Stop reason for the prompt turn; valid once `serialize()` completes. */
|
|
25148
25151
|
get stopReason() {
|
|
25149
25152
|
return this.stopReasonValue;
|
|
@@ -25152,6 +25155,19 @@ var AcpSessionUpdateSerializer = class {
|
|
|
25152
25155
|
get errorText() {
|
|
25153
25156
|
return this.errorTextValue;
|
|
25154
25157
|
}
|
|
25158
|
+
get sessionId() {
|
|
25159
|
+
return this.sessionIdValue;
|
|
25160
|
+
}
|
|
25161
|
+
get usage() {
|
|
25162
|
+
const totalTokens = this.inputTokensValue + this.outputTokensValue;
|
|
25163
|
+
if (totalTokens === 0)
|
|
25164
|
+
return void 0;
|
|
25165
|
+
return {
|
|
25166
|
+
inputTokens: this.inputTokensValue,
|
|
25167
|
+
outputTokens: this.outputTokensValue,
|
|
25168
|
+
totalTokens
|
|
25169
|
+
};
|
|
25170
|
+
}
|
|
25155
25171
|
async *serialize(chunks) {
|
|
25156
25172
|
for await (const chunk of chunks) {
|
|
25157
25173
|
yield* this.convert(chunk);
|
|
@@ -25230,18 +25246,48 @@ var AcpSessionUpdateSerializer = class {
|
|
|
25230
25246
|
return;
|
|
25231
25247
|
}
|
|
25232
25248
|
case "finish": {
|
|
25233
|
-
const { finishReason: finishReason2 } = chunk;
|
|
25249
|
+
const { finishReason: finishReason2, messageMetadata } = chunk;
|
|
25250
|
+
this.captureMetadata(messageMetadata);
|
|
25234
25251
|
if (this.errorTextValue === void 0) {
|
|
25235
25252
|
this.stopReasonValue = mapFinishReason2(finishReason2);
|
|
25236
25253
|
}
|
|
25237
25254
|
return;
|
|
25238
25255
|
}
|
|
25256
|
+
case "step-finish": {
|
|
25257
|
+
const usage = chunk.usage;
|
|
25258
|
+
this.inputTokensValue += usage?.inputTokens ?? 0;
|
|
25259
|
+
this.outputTokensValue += usage?.outputTokens ?? 0;
|
|
25260
|
+
return;
|
|
25261
|
+
}
|
|
25262
|
+
case "message-metadata": {
|
|
25263
|
+
this.captureMetadata(chunk.messageMetadata);
|
|
25264
|
+
return;
|
|
25265
|
+
}
|
|
25239
25266
|
// text-start/text-end have no ACP equivalent (agent_message_chunk carries
|
|
25240
25267
|
// messageId), and tool-input-delta has no incremental-input counterpart.
|
|
25241
25268
|
default:
|
|
25242
25269
|
return;
|
|
25243
25270
|
}
|
|
25244
25271
|
}
|
|
25272
|
+
captureMetadata(metadata) {
|
|
25273
|
+
if (!metadata || typeof metadata !== "object")
|
|
25274
|
+
return;
|
|
25275
|
+
const value = metadata;
|
|
25276
|
+
const sessionId = value.sessionId ?? value.session_id ?? value.sessionFile;
|
|
25277
|
+
if (typeof sessionId === "string" && sessionId.length > 0) {
|
|
25278
|
+
this.sessionIdValue = sessionId;
|
|
25279
|
+
}
|
|
25280
|
+
const usage = value.usage;
|
|
25281
|
+
if (!usage || typeof usage !== "object")
|
|
25282
|
+
return;
|
|
25283
|
+
const usageValue = usage;
|
|
25284
|
+
if (typeof usageValue.inputTokens === "number") {
|
|
25285
|
+
this.inputTokensValue = Math.max(this.inputTokensValue, usageValue.inputTokens);
|
|
25286
|
+
}
|
|
25287
|
+
if (typeof usageValue.outputTokens === "number") {
|
|
25288
|
+
this.outputTokensValue = Math.max(this.outputTokensValue, usageValue.outputTokens);
|
|
25289
|
+
}
|
|
25290
|
+
}
|
|
25245
25291
|
*openToolCall(toolCallId, toolName) {
|
|
25246
25292
|
if (this.startedTools.has(toolCallId))
|
|
25247
25293
|
return;
|
|
@@ -25274,6 +25320,21 @@ function mapFinishReason2(finishReason2) {
|
|
|
25274
25320
|
var BUNNY_META_KEY = "bunny-agent";
|
|
25275
25321
|
var DEFAULT_MODEL = "claude-sonnet-4-20250514";
|
|
25276
25322
|
var asString = (value) => typeof value === "string" && value.length > 0 ? value : void 0;
|
|
25323
|
+
var asStringArray = (value) => {
|
|
25324
|
+
if (!Array.isArray(value))
|
|
25325
|
+
return void 0;
|
|
25326
|
+
const strings = value.filter((item) => typeof item === "string");
|
|
25327
|
+
return strings.length === value.length ? strings : void 0;
|
|
25328
|
+
};
|
|
25329
|
+
var asStringRecord = (value) => {
|
|
25330
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
25331
|
+
return void 0;
|
|
25332
|
+
const entries = Object.entries(value);
|
|
25333
|
+
if (!entries.every(([, item]) => typeof item === "string"))
|
|
25334
|
+
return void 0;
|
|
25335
|
+
return Object.fromEntries(entries);
|
|
25336
|
+
};
|
|
25337
|
+
var asObject = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
|
|
25277
25338
|
function readBunnyMeta(meta3) {
|
|
25278
25339
|
const scoped = meta3?.[BUNNY_META_KEY];
|
|
25279
25340
|
if (scoped === null || typeof scoped !== "object")
|
|
@@ -25283,9 +25344,24 @@ function readBunnyMeta(meta3) {
|
|
|
25283
25344
|
runner: asString(value.runner),
|
|
25284
25345
|
model: asString(value.model),
|
|
25285
25346
|
systemPrompt: asString(value.systemPrompt),
|
|
25286
|
-
yolo: typeof value.yolo === "boolean" ? value.yolo : void 0
|
|
25287
|
-
|
|
25288
|
-
|
|
25347
|
+
yolo: typeof value.yolo === "boolean" ? value.yolo : void 0,
|
|
25348
|
+
allowedTools: asStringArray(value.allowedTools),
|
|
25349
|
+
resume: asString(value.resume),
|
|
25350
|
+
forkFrom: asString(value.forkFrom),
|
|
25351
|
+
skillPaths: asStringArray(value.skillPaths),
|
|
25352
|
+
env: asStringRecord(value.env),
|
|
25353
|
+
systemEnv: asStringRecord(value.systemEnv),
|
|
25354
|
+
toolRefs: Array.isArray(value.toolRefs) ? value.toolRefs : void 0,
|
|
25355
|
+
mcpConfig: asObject(value.mcpConfig),
|
|
25356
|
+
effort: asString(value.effort),
|
|
25357
|
+
askUserQuestionTimeoutMs: typeof value.askUserQuestionTimeoutMs === "number" && Number.isFinite(value.askUserQuestionTimeoutMs) ? value.askUserQuestionTimeoutMs : void 0,
|
|
25358
|
+
input: asObject(value.input)
|
|
25359
|
+
};
|
|
25360
|
+
}
|
|
25361
|
+
var mergeEnv = (...sources) => {
|
|
25362
|
+
const merged = Object.assign({}, ...sources.filter(Boolean));
|
|
25363
|
+
return Object.keys(merged).length > 0 ? merged : void 0;
|
|
25364
|
+
};
|
|
25289
25365
|
var promptToText = (prompt) => prompt.map((block) => block.type === "text" ? block.text : "").filter((text) => text.length > 0).join("\n");
|
|
25290
25366
|
function createBunnyAgentAcpApp(options = {}) {
|
|
25291
25367
|
const sessions = /* @__PURE__ */ new Map();
|
|
@@ -25300,27 +25376,47 @@ function createBunnyAgentAcpApp(options = {}) {
|
|
|
25300
25376
|
...readBunnyMeta(params._meta)
|
|
25301
25377
|
});
|
|
25302
25378
|
return { sessionId };
|
|
25303
|
-
}).onRequest(methods.agent.session.prompt, async ({ params, client: client2 }) => {
|
|
25379
|
+
}).onRequest(methods.agent.session.prompt, async ({ params, client: client2, signal }) => {
|
|
25304
25380
|
const session = sessions.get(params.sessionId);
|
|
25305
25381
|
if (!session) {
|
|
25306
25382
|
throw RequestError.invalidParams(void 0, `Unknown session: ${params.sessionId}`);
|
|
25307
25383
|
}
|
|
25308
25384
|
const abort = new AbortController();
|
|
25309
25385
|
session.abort = abort;
|
|
25386
|
+
const turn = readBunnyMeta(params._meta);
|
|
25387
|
+
const onTransportAbort = () => abort.abort();
|
|
25388
|
+
if (signal.aborted)
|
|
25389
|
+
abort.abort();
|
|
25390
|
+
else
|
|
25391
|
+
signal.addEventListener("abort", onTransportAbort, { once: true });
|
|
25310
25392
|
const serializer = new AcpSessionUpdateSerializer();
|
|
25311
|
-
const chunks = parseRunnerStream(createRunner({
|
|
25312
|
-
runner: session.runner ?? options.defaultRunner ?? "claude",
|
|
25313
|
-
model: session.model ?? options.defaultModel ?? DEFAULT_MODEL,
|
|
25314
|
-
userInput: promptToText(params.prompt),
|
|
25315
|
-
systemPrompt: session.systemPrompt,
|
|
25316
|
-
cwd: session.cwd,
|
|
25317
|
-
yolo: session.yolo ?? options.yolo,
|
|
25318
|
-
env: options.env,
|
|
25319
|
-
abortController: abort,
|
|
25320
|
-
// Caller owns session/resume; don't touch cwd/.bunny-agent state.
|
|
25321
|
-
autoInject: false
|
|
25322
|
-
}));
|
|
25323
25393
|
try {
|
|
25394
|
+
let chunks;
|
|
25395
|
+
try {
|
|
25396
|
+
chunks = parseRunnerStream(createRunner({
|
|
25397
|
+
runner: turn.runner ?? session.runner ?? options.defaultRunner ?? "claude",
|
|
25398
|
+
model: turn.model ?? session.model ?? options.defaultModel ?? DEFAULT_MODEL,
|
|
25399
|
+
...turn.input ? { input: turn.input } : { userInput: promptToText(params.prompt) },
|
|
25400
|
+
systemPrompt: turn.systemPrompt ?? session.systemPrompt,
|
|
25401
|
+
cwd: session.cwd,
|
|
25402
|
+
yolo: turn.yolo ?? session.yolo ?? options.yolo,
|
|
25403
|
+
allowedTools: turn.allowedTools ?? session.allowedTools,
|
|
25404
|
+
resume: turn.resume ?? session.resume,
|
|
25405
|
+
forkFrom: turn.forkFrom ?? session.forkFrom,
|
|
25406
|
+
skillPaths: turn.skillPaths ?? session.skillPaths,
|
|
25407
|
+
env: mergeEnv(options.env, session.env, turn.env),
|
|
25408
|
+
systemEnv: mergeEnv(session.systemEnv, turn.systemEnv),
|
|
25409
|
+
toolRefs: turn.toolRefs ?? session.toolRefs,
|
|
25410
|
+
mcpConfig: turn.mcpConfig ?? session.mcpConfig,
|
|
25411
|
+
effort: turn.effort ?? session.effort,
|
|
25412
|
+
askUserQuestionTimeoutMs: turn.askUserQuestionTimeoutMs ?? session.askUserQuestionTimeoutMs,
|
|
25413
|
+
abortController: abort,
|
|
25414
|
+
// Caller owns session/resume; don't touch cwd/.bunny-agent.
|
|
25415
|
+
autoInject: false
|
|
25416
|
+
}));
|
|
25417
|
+
} catch (error48) {
|
|
25418
|
+
throw RequestError.invalidParams(void 0, error48 instanceof Error ? error48.message : String(error48));
|
|
25419
|
+
}
|
|
25324
25420
|
for await (const update of serializer.serialize(chunks)) {
|
|
25325
25421
|
await client2.notify(methods.client.session.update, {
|
|
25326
25422
|
sessionId: params.sessionId,
|
|
@@ -25328,9 +25424,18 @@ function createBunnyAgentAcpApp(options = {}) {
|
|
|
25328
25424
|
});
|
|
25329
25425
|
}
|
|
25330
25426
|
} finally {
|
|
25427
|
+
signal.removeEventListener("abort", onTransportAbort);
|
|
25331
25428
|
session.abort = void 0;
|
|
25332
25429
|
}
|
|
25333
|
-
|
|
25430
|
+
const runnerMeta = {
|
|
25431
|
+
...serializer.sessionId ? { sessionId: serializer.sessionId } : {},
|
|
25432
|
+
...serializer.errorText ? { errorText: serializer.errorText } : {}
|
|
25433
|
+
};
|
|
25434
|
+
return {
|
|
25435
|
+
stopReason: serializer.stopReason,
|
|
25436
|
+
...serializer.usage ? { usage: serializer.usage } : {},
|
|
25437
|
+
...Object.keys(runnerMeta).length > 0 ? { _meta: { [BUNNY_META_KEY]: runnerMeta } } : {}
|
|
25438
|
+
};
|
|
25334
25439
|
}).onNotification(methods.agent.session.cancel, ({ params }) => {
|
|
25335
25440
|
sessions.get(params.sessionId)?.abort?.abort();
|
|
25336
25441
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bunny-agent/runner-cli",
|
|
3
|
-
"version": "0.9.60-beta.
|
|
3
|
+
"version": "0.9.60-beta.5",
|
|
4
4
|
"description": "BunnyAgent Runner CLI - Like gemini-cli or claude-code, runs in your local terminal with AI SDK UI streaming",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -59,16 +59,16 @@
|
|
|
59
59
|
"esbuild": "^0.27.2",
|
|
60
60
|
"typescript": "^5.3.0",
|
|
61
61
|
"vitest": "^1.6.1",
|
|
62
|
-
"@bunny-agent/manager": "0.9.60-beta.
|
|
62
|
+
"@bunny-agent/manager": "0.9.60-beta.5",
|
|
63
63
|
"@bunny-agent/runner-codex": "0.6.2",
|
|
64
|
-
"@bunny-agent/apply-patch": "0.1.0",
|
|
65
64
|
"@bunny-agent/runner-copilot": "0.1.0",
|
|
66
|
-
"@bunny-agent/runner-harness": "0.1.1-beta.0",
|
|
67
|
-
"@bunny-agent/runner-claude": "0.6.2",
|
|
68
65
|
"@bunny-agent/runner-gemini": "0.6.2",
|
|
66
|
+
"@bunny-agent/runner-harness": "0.1.1-beta.0",
|
|
69
67
|
"@bunny-agent/runner-opencode": "0.6.2",
|
|
68
|
+
"@bunny-agent/runner-pi": "0.6.4-beta.0",
|
|
70
69
|
"@bunny-agent/server-acp": "0.1.0",
|
|
71
|
-
"@bunny-agent/runner-
|
|
70
|
+
"@bunny-agent/runner-claude": "0.6.2",
|
|
71
|
+
"@bunny-agent/apply-patch": "0.1.0"
|
|
72
72
|
},
|
|
73
73
|
"scripts": {
|
|
74
74
|
"build": "tsc && pnpm bundle",
|