@bunny-agent/runner-cli 0.9.34 → 0.9.35-beta.1
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/dist/bundle.mjs +233 -27
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/package.json +9 -9
package/dist/bundle.mjs
CHANGED
|
@@ -1280,14 +1280,14 @@ function createOpenCodeRunner(options = {}) {
|
|
|
1280
1280
|
// ../../packages/runner-pi/dist/pi-runner.js
|
|
1281
1281
|
import { appendFileSync as appendFileSync2, existsSync as existsSync5, unlinkSync as unlinkSync3 } from "node:fs";
|
|
1282
1282
|
import { join as join8 } from "node:path";
|
|
1283
|
-
import { getModel } from "@
|
|
1284
|
-
import { AuthStorage, createAgentSession, ModelRegistry, SessionManager as SessionManager2 } from "@
|
|
1283
|
+
import { getModel } from "@earendil-works/pi-ai";
|
|
1284
|
+
import { AuthStorage, createAgentSession, ModelRegistry, SessionManager as SessionManager2 } from "@earendil-works/pi-coding-agent";
|
|
1285
1285
|
|
|
1286
1286
|
// ../../packages/runner-pi/dist/bunny-agent-resource-loader.js
|
|
1287
1287
|
import { existsSync as existsSync4 } from "node:fs";
|
|
1288
1288
|
import { homedir } from "node:os";
|
|
1289
1289
|
import { isAbsolute, join as join5, resolve as resolve2 } from "node:path";
|
|
1290
|
-
import { DefaultResourceLoader, loadSkills } from "@
|
|
1290
|
+
import { DefaultResourceLoader, loadSkills } from "@earendil-works/pi-coding-agent";
|
|
1291
1291
|
var LOG_PREFIX = "[bunny-agent:pi]";
|
|
1292
1292
|
function logSkillLoad(cwd, agentDir, skillPaths, result) {
|
|
1293
1293
|
const lines = [
|
|
@@ -1316,7 +1316,7 @@ function logSkillLoad(cwd, agentDir, skillPaths, result) {
|
|
|
1316
1316
|
var BunnyAgentResourceLoader = class {
|
|
1317
1317
|
constructor(options = {}) {
|
|
1318
1318
|
this.cwd = options.cwd ?? process.cwd();
|
|
1319
|
-
this.agentDir = options.agentDir ?? join5(homedir(), ".
|
|
1319
|
+
this.agentDir = options.agentDir ?? join5(homedir(), ".bunny", "agent");
|
|
1320
1320
|
this.skillPaths = options.skillPaths ?? [];
|
|
1321
1321
|
this.extraAppendPrompt = options.appendSystemPrompt;
|
|
1322
1322
|
this.delegate = new DefaultResourceLoader({
|
|
@@ -1334,7 +1334,8 @@ var BunnyAgentResourceLoader = class {
|
|
|
1334
1334
|
this.cachedSkills = loadSkills({
|
|
1335
1335
|
cwd: this.cwd,
|
|
1336
1336
|
agentDir: this.agentDir,
|
|
1337
|
-
skillPaths: this.skillPaths
|
|
1337
|
+
skillPaths: this.skillPaths,
|
|
1338
|
+
includeDefaults: true
|
|
1338
1339
|
});
|
|
1339
1340
|
if (this.skillPaths.length > 0) {
|
|
1340
1341
|
logSkillLoad(this.cwd, this.agentDir, this.skillPaths, this.cachedSkills);
|
|
@@ -1907,7 +1908,7 @@ function buildImageEditTool(cwd, imageModelId, baseUrl, apiKey) {
|
|
|
1907
1908
|
// ../../packages/runner-pi/dist/session-utils.js
|
|
1908
1909
|
import { closeSync, fstatSync, openSync, readdirSync as readdirSync2, readSync, statSync as statSync2 } from "node:fs";
|
|
1909
1910
|
import { join as join7 } from "node:path";
|
|
1910
|
-
import { SessionManager } from "@
|
|
1911
|
+
import { SessionManager } from "@earendil-works/pi-coding-agent";
|
|
1911
1912
|
var MAX_SESSION_FILE_BYTES = Number(process.env.SANDAGENT_MAX_SESSION_BYTES) || 10 * 1024 * 1024;
|
|
1912
1913
|
function resolveSessionPathById(cwd, sessionId) {
|
|
1913
1914
|
const tempMgr = SessionManager.create(cwd);
|
|
@@ -2112,7 +2113,7 @@ var PiAISDKStreamConverter = class {
|
|
|
2112
2113
|
return chunks;
|
|
2113
2114
|
}
|
|
2114
2115
|
if (event.type === "tool_execution_end") {
|
|
2115
|
-
const output = this.options.
|
|
2116
|
+
const output = this.options.normalizeToolOutput(event.result);
|
|
2116
2117
|
const raw = event.result?.details?.usage?.raw;
|
|
2117
2118
|
if (raw != null)
|
|
2118
2119
|
accumulateToolUsage(this.toolUsageTally, raw);
|
|
@@ -2160,13 +2161,16 @@ var PiAISDKStreamConverter = class {
|
|
|
2160
2161
|
return [sseData({ type: "text-start", id: this.activeTextPartId })];
|
|
2161
2162
|
}
|
|
2162
2163
|
emitTextDelta(rawDelta) {
|
|
2163
|
-
|
|
2164
|
-
if (!delta)
|
|
2164
|
+
if (!rawDelta)
|
|
2165
2165
|
return [];
|
|
2166
2166
|
const startChunk = this.activeTextPartId == null ? this.openTextStream() : [];
|
|
2167
2167
|
return [
|
|
2168
2168
|
...startChunk,
|
|
2169
|
-
sseData({
|
|
2169
|
+
sseData({
|
|
2170
|
+
type: "text-delta",
|
|
2171
|
+
id: this.activeTextPartId,
|
|
2172
|
+
delta: rawDelta
|
|
2173
|
+
})
|
|
2170
2174
|
];
|
|
2171
2175
|
}
|
|
2172
2176
|
endTextStreamIfOpen() {
|
|
@@ -2209,7 +2213,7 @@ var PiAISDKStreamConverter = class {
|
|
|
2209
2213
|
};
|
|
2210
2214
|
|
|
2211
2215
|
// ../../packages/runner-pi/dist/tool-overrides.js
|
|
2212
|
-
import { createBashTool, createReadTool } from "@
|
|
2216
|
+
import { createBashTool, createReadTool } from "@earendil-works/pi-coding-agent";
|
|
2213
2217
|
|
|
2214
2218
|
// ../../packages/runner-pi/dist/web-tools.js
|
|
2215
2219
|
var braveProvider = {
|
|
@@ -5309,8 +5313,211 @@ function serializeResult(result) {
|
|
|
5309
5313
|
return JSON.stringify(result);
|
|
5310
5314
|
}
|
|
5311
5315
|
|
|
5316
|
+
// ../../packages/runner-pi/dist/video-tools.js
|
|
5317
|
+
function resolveArkConfig(env) {
|
|
5318
|
+
const apiKey = env.ARK_API_KEY ?? process.env.ARK_API_KEY;
|
|
5319
|
+
const modelId = env.ARK_MODEL_ID ?? process.env.ARK_MODEL_ID ?? "dreamina-seedance-2-0";
|
|
5320
|
+
const baseUrl = env.ARK_BASE_URL ?? process.env.ARK_BASE_URL ?? "https://ark.ap-southeast.bytepluses.com/api/v3";
|
|
5321
|
+
if (!apiKey)
|
|
5322
|
+
throw new Error("Missing ARK_API_KEY");
|
|
5323
|
+
return { apiKey, modelId, baseUrl };
|
|
5324
|
+
}
|
|
5325
|
+
function mapArkStatus(raw) {
|
|
5326
|
+
switch (raw) {
|
|
5327
|
+
case "queued":
|
|
5328
|
+
return "queued";
|
|
5329
|
+
case "running":
|
|
5330
|
+
return "running";
|
|
5331
|
+
case "succeeded":
|
|
5332
|
+
return "succeeded";
|
|
5333
|
+
case "cancelled":
|
|
5334
|
+
return "cancelled";
|
|
5335
|
+
case "failed":
|
|
5336
|
+
case "unknown":
|
|
5337
|
+
default:
|
|
5338
|
+
return "failed";
|
|
5339
|
+
}
|
|
5340
|
+
}
|
|
5341
|
+
var byteplusProvider = {
|
|
5342
|
+
id: "byteplus",
|
|
5343
|
+
label: "BytePlus Ark",
|
|
5344
|
+
envKeys: ["ARK_API_KEY"],
|
|
5345
|
+
pollIntervalMs: 1e4,
|
|
5346
|
+
async create({ prompt, env, signal }) {
|
|
5347
|
+
const { apiKey, modelId, baseUrl } = resolveArkConfig(env);
|
|
5348
|
+
const res = await fetch(`${baseUrl}/contents/generations/tasks`, {
|
|
5349
|
+
method: "POST",
|
|
5350
|
+
headers: {
|
|
5351
|
+
"Content-Type": "application/json",
|
|
5352
|
+
Authorization: `Bearer ${apiKey}`
|
|
5353
|
+
},
|
|
5354
|
+
body: JSON.stringify({
|
|
5355
|
+
model: modelId,
|
|
5356
|
+
content: [{ type: "text", text: prompt }]
|
|
5357
|
+
}),
|
|
5358
|
+
signal
|
|
5359
|
+
});
|
|
5360
|
+
if (!res.ok) {
|
|
5361
|
+
const errorText = await res.text();
|
|
5362
|
+
throw new Error(`Failed to create video task: ${res.status} ${errorText}`);
|
|
5363
|
+
}
|
|
5364
|
+
const data = await res.json();
|
|
5365
|
+
if (!data.id) {
|
|
5366
|
+
throw new Error("No task ID returned from video generation API");
|
|
5367
|
+
}
|
|
5368
|
+
return { taskId: data.id };
|
|
5369
|
+
},
|
|
5370
|
+
async poll({ taskId, env, signal }) {
|
|
5371
|
+
const { apiKey, baseUrl } = resolveArkConfig(env);
|
|
5372
|
+
const res = await fetch(`${baseUrl}/contents/generations/tasks/${taskId}`, {
|
|
5373
|
+
method: "GET",
|
|
5374
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
5375
|
+
signal
|
|
5376
|
+
});
|
|
5377
|
+
if (!res.ok) {
|
|
5378
|
+
const errorText = await res.text();
|
|
5379
|
+
throw new Error(`Failed to check task status: ${res.status} ${errorText}`);
|
|
5380
|
+
}
|
|
5381
|
+
const data = await res.json();
|
|
5382
|
+
const status = mapArkStatus(data.status);
|
|
5383
|
+
const state = { status };
|
|
5384
|
+
if (status === "succeeded") {
|
|
5385
|
+
state.videoUrl = data.content?.[0]?.video?.url;
|
|
5386
|
+
} else if (status === "failed") {
|
|
5387
|
+
state.error = typeof data.error === "string" ? data.error : data.error?.message ?? `Task status: ${data.status}`;
|
|
5388
|
+
}
|
|
5389
|
+
return state;
|
|
5390
|
+
},
|
|
5391
|
+
async cancel({ taskId, env }) {
|
|
5392
|
+
const { apiKey, baseUrl } = resolveArkConfig(env);
|
|
5393
|
+
const ctl = new AbortController();
|
|
5394
|
+
const timer = setTimeout(() => ctl.abort(), 5e3);
|
|
5395
|
+
try {
|
|
5396
|
+
await fetch(`${baseUrl}/contents/generations/tasks/${taskId}`, {
|
|
5397
|
+
method: "DELETE",
|
|
5398
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
5399
|
+
signal: ctl.signal
|
|
5400
|
+
});
|
|
5401
|
+
} finally {
|
|
5402
|
+
clearTimeout(timer);
|
|
5403
|
+
}
|
|
5404
|
+
}
|
|
5405
|
+
};
|
|
5406
|
+
var PROVIDERS = [byteplusProvider];
|
|
5407
|
+
function getEnv2(env, key) {
|
|
5408
|
+
const v = env?.[key] ?? process.env[key];
|
|
5409
|
+
return v && v.length > 0 ? v : void 0;
|
|
5410
|
+
}
|
|
5411
|
+
function resolveVideoProvider(env) {
|
|
5412
|
+
for (const p of PROVIDERS) {
|
|
5413
|
+
const hasAllKeys = p.envKeys.every((key) => getEnv2(env, key) !== void 0);
|
|
5414
|
+
if (hasAllKeys)
|
|
5415
|
+
return p;
|
|
5416
|
+
}
|
|
5417
|
+
return null;
|
|
5418
|
+
}
|
|
5419
|
+
function sleepAbortable(ms, signal) {
|
|
5420
|
+
return new Promise((resolve4, reject) => {
|
|
5421
|
+
if (signal?.aborted)
|
|
5422
|
+
return reject(new Error("aborted"));
|
|
5423
|
+
const timer = setTimeout(() => {
|
|
5424
|
+
signal?.removeEventListener("abort", onAbort);
|
|
5425
|
+
resolve4();
|
|
5426
|
+
}, ms);
|
|
5427
|
+
const onAbort = () => {
|
|
5428
|
+
clearTimeout(timer);
|
|
5429
|
+
reject(new Error("aborted"));
|
|
5430
|
+
};
|
|
5431
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
5432
|
+
});
|
|
5433
|
+
}
|
|
5434
|
+
function buildVideoGenerateTool(env) {
|
|
5435
|
+
const provider = resolveVideoProvider(env);
|
|
5436
|
+
if (!provider)
|
|
5437
|
+
return null;
|
|
5438
|
+
return {
|
|
5439
|
+
name: "generate_video",
|
|
5440
|
+
label: `Video Generator (${provider.label})`,
|
|
5441
|
+
description: "Generate a video from a text prompt. Returns the video URL.",
|
|
5442
|
+
promptSnippet: "generate_video(prompt)",
|
|
5443
|
+
promptGuidelines: [
|
|
5444
|
+
"Use this when the user wants to generate, create, or render a video.",
|
|
5445
|
+
"Provide a highly descriptive prompt."
|
|
5446
|
+
],
|
|
5447
|
+
parameters: {
|
|
5448
|
+
type: "object",
|
|
5449
|
+
properties: {
|
|
5450
|
+
prompt: {
|
|
5451
|
+
type: "string",
|
|
5452
|
+
description: "Text description of the video to generate."
|
|
5453
|
+
}
|
|
5454
|
+
},
|
|
5455
|
+
required: ["prompt"]
|
|
5456
|
+
},
|
|
5457
|
+
async execute(_toolCallId, params, signal, onUpdate) {
|
|
5458
|
+
const { prompt } = params;
|
|
5459
|
+
const resolvedEnv = env ?? {};
|
|
5460
|
+
const report = (msg) => onUpdate?.({
|
|
5461
|
+
content: [{ type: "text", text: msg }],
|
|
5462
|
+
details: {}
|
|
5463
|
+
});
|
|
5464
|
+
report(`[${provider.label}] Submitting video generation task...`);
|
|
5465
|
+
const { taskId } = await provider.create({
|
|
5466
|
+
prompt,
|
|
5467
|
+
env: resolvedEnv,
|
|
5468
|
+
signal
|
|
5469
|
+
});
|
|
5470
|
+
report(`[${provider.label}] Task ${taskId} submitted. Polling for completion...`);
|
|
5471
|
+
const intervalMs = provider.pollIntervalMs ?? 1e4;
|
|
5472
|
+
let videoUrl;
|
|
5473
|
+
try {
|
|
5474
|
+
while (true) {
|
|
5475
|
+
await sleepAbortable(intervalMs, signal);
|
|
5476
|
+
const state = await provider.poll({
|
|
5477
|
+
taskId,
|
|
5478
|
+
env: resolvedEnv,
|
|
5479
|
+
signal
|
|
5480
|
+
});
|
|
5481
|
+
if (state.status === "succeeded") {
|
|
5482
|
+
videoUrl = state.videoUrl ?? "URL not found in response payload";
|
|
5483
|
+
break;
|
|
5484
|
+
}
|
|
5485
|
+
if (state.status === "failed" || state.status === "cancelled") {
|
|
5486
|
+
throw new Error(`Video task ended with status: ${state.status}${state.error ? `. ${state.error}` : ""}`);
|
|
5487
|
+
}
|
|
5488
|
+
const progress = state.progress != null ? ` (${state.progress}%)` : "";
|
|
5489
|
+
report(`[${provider.label}] Task status: ${state.status}${progress}`);
|
|
5490
|
+
}
|
|
5491
|
+
} catch (err) {
|
|
5492
|
+
if (signal?.aborted) {
|
|
5493
|
+
await provider.cancel({ taskId, env: resolvedEnv }).catch(() => void 0);
|
|
5494
|
+
}
|
|
5495
|
+
throw err;
|
|
5496
|
+
}
|
|
5497
|
+
const details = { usage: { raw: {} } };
|
|
5498
|
+
return {
|
|
5499
|
+
content: [
|
|
5500
|
+
{
|
|
5501
|
+
type: "text",
|
|
5502
|
+
text: `Video generated successfully via ${provider.label}!
|
|
5503
|
+
URL: ${videoUrl}
|
|
5504
|
+
(Task ID: ${taskId})`
|
|
5505
|
+
}
|
|
5506
|
+
],
|
|
5507
|
+
details
|
|
5508
|
+
};
|
|
5509
|
+
}
|
|
5510
|
+
};
|
|
5511
|
+
}
|
|
5512
|
+
|
|
5312
5513
|
// ../../packages/runner-pi/dist/pi-runner.js
|
|
5313
5514
|
var LOG_PREFIX3 = "[bunny-agent:pi]";
|
|
5515
|
+
function applyAllowedTools(tools, allowedTools) {
|
|
5516
|
+
if (!allowedTools)
|
|
5517
|
+
return tools;
|
|
5518
|
+
const allowed = new Set(allowedTools);
|
|
5519
|
+
return tools.filter((tool) => allowed.has(tool.name));
|
|
5520
|
+
}
|
|
5314
5521
|
function parseModelSpec(model) {
|
|
5315
5522
|
const trimmed = model.trim();
|
|
5316
5523
|
const separator = trimmed.indexOf(":");
|
|
@@ -5469,19 +5676,22 @@ function createPiRunner(options = {}) {
|
|
|
5469
5676
|
const apiKey = await modelRegistry.authStorage.getApiKey(provider) ?? "";
|
|
5470
5677
|
customTools.push(buildImageGenerateTool(cwd, imageModelName, model.baseUrl, apiKey), buildImageEditTool(cwd, imageModelName, model.baseUrl, apiKey));
|
|
5471
5678
|
}
|
|
5472
|
-
|
|
5473
|
-
|
|
5474
|
-
|
|
5475
|
-
if (options.toolRefs && options.toolRefs.length > 0) {
|
|
5476
|
-
customTools.push(...buildToolDefinitionsFromRefs(options.toolRefs));
|
|
5679
|
+
const videoTool = buildVideoGenerateTool(options.env ?? {});
|
|
5680
|
+
if (videoTool) {
|
|
5681
|
+
customTools.push(videoTool);
|
|
5477
5682
|
}
|
|
5683
|
+
const toolRefDefinitions = options.toolRefs && options.toolRefs.length > 0 ? buildToolDefinitionsFromRefs(options.toolRefs) : [];
|
|
5478
5684
|
const { session } = await createAgentSession({
|
|
5479
5685
|
cwd,
|
|
5480
5686
|
model,
|
|
5481
5687
|
sessionManager,
|
|
5482
5688
|
modelRegistry,
|
|
5483
5689
|
resourceLoader,
|
|
5484
|
-
|
|
5690
|
+
tools: options.allowedTools,
|
|
5691
|
+
customTools: [
|
|
5692
|
+
...applyAllowedTools(customTools, options.allowedTools),
|
|
5693
|
+
...toolRefDefinitions
|
|
5694
|
+
]
|
|
5485
5695
|
});
|
|
5486
5696
|
const eventQueue = [];
|
|
5487
5697
|
let isComplete = false;
|
|
@@ -5518,12 +5728,6 @@ function createPiRunner(options = {}) {
|
|
|
5518
5728
|
const streamConverter = new PiAISDKStreamConverter({
|
|
5519
5729
|
sessionId: session.sessionId,
|
|
5520
5730
|
model,
|
|
5521
|
-
redactText: (value) => {
|
|
5522
|
-
if (options.env && Object.keys(options.env).length > 0) {
|
|
5523
|
-
return redactSecrets(value, options.env);
|
|
5524
|
-
}
|
|
5525
|
-
return value;
|
|
5526
|
-
},
|
|
5527
5731
|
normalizeToolOutput: extractToolResultText,
|
|
5528
5732
|
getUsageFromAgentEndMessages,
|
|
5529
5733
|
getErrorFromAgentEndMessages
|
|
@@ -5563,8 +5767,8 @@ function createPiRunner(options = {}) {
|
|
|
5563
5767
|
}
|
|
5564
5768
|
return;
|
|
5565
5769
|
}
|
|
5566
|
-
if (!streamConverter.finished && session.agent.state.
|
|
5567
|
-
for (const chunk of streamConverter.forceError(session.agent.state.
|
|
5770
|
+
if (!streamConverter.finished && session.agent.state.errorMessage) {
|
|
5771
|
+
for (const chunk of streamConverter.forceError(session.agent.state.errorMessage)) {
|
|
5568
5772
|
yield chunk;
|
|
5569
5773
|
}
|
|
5570
5774
|
}
|
|
@@ -5750,7 +5954,9 @@ function takeToolRefsFromEnv() {
|
|
|
5750
5954
|
);
|
|
5751
5955
|
return null;
|
|
5752
5956
|
}
|
|
5753
|
-
return
|
|
5957
|
+
return {
|
|
5958
|
+
tools: parsed.tools
|
|
5959
|
+
};
|
|
5754
5960
|
} catch (err) {
|
|
5755
5961
|
const message = err instanceof Error ? err.message : String(err);
|
|
5756
5962
|
console.error(
|
|
@@ -5982,7 +6188,7 @@ async function main() {
|
|
|
5982
6188
|
skillPaths: args.skillPaths,
|
|
5983
6189
|
resume: args.resume,
|
|
5984
6190
|
yolo: args.yolo,
|
|
5985
|
-
...toolRefs ? { toolRefs } : {}
|
|
6191
|
+
...toolRefs ? { toolRefs: toolRefs.tools } : {}
|
|
5986
6192
|
});
|
|
5987
6193
|
break;
|
|
5988
6194
|
}
|
package/dist/cli.js
CHANGED
|
@@ -33,7 +33,9 @@ function takeToolRefsFromEnv() {
|
|
|
33
33
|
console.error("[bunny-agent] BUNNY_AGENT_TOOL_REFS_JSON missing tools array; ignoring.");
|
|
34
34
|
return null;
|
|
35
35
|
}
|
|
36
|
-
return
|
|
36
|
+
return {
|
|
37
|
+
tools: parsed.tools,
|
|
38
|
+
};
|
|
37
39
|
}
|
|
38
40
|
catch (err) {
|
|
39
41
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -282,7 +284,7 @@ async function main() {
|
|
|
282
284
|
skillPaths: args.skillPaths,
|
|
283
285
|
resume: args.resume,
|
|
284
286
|
yolo: args.yolo,
|
|
285
|
-
...(toolRefs ? { toolRefs } : {}),
|
|
287
|
+
...(toolRefs ? { toolRefs: toolRefs.tools } : {}),
|
|
286
288
|
});
|
|
287
289
|
break;
|
|
288
290
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,4CAA4C;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,2DAA2D;AAC3D,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AACjD,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACpD,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bunny-agent/runner-cli",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.35-beta.1",
|
|
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": {
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
],
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@anthropic-ai/claude-agent-sdk": "0.2.70",
|
|
44
|
-
"@
|
|
45
|
-
"@
|
|
46
|
-
"@
|
|
44
|
+
"@earendil-works/pi-agent-core": "0.74.0",
|
|
45
|
+
"@earendil-works/pi-ai": "0.74.0",
|
|
46
|
+
"@earendil-works/pi-coding-agent": "0.74.0",
|
|
47
47
|
"@openai/codex-sdk": "^0.110.0",
|
|
48
48
|
"dotenv": "^17.3.1",
|
|
49
49
|
"zod": "^4.0.0"
|
|
@@ -54,16 +54,16 @@
|
|
|
54
54
|
"typescript": "^5.3.0",
|
|
55
55
|
"vitest": "^1.6.1",
|
|
56
56
|
"@bunny-agent/runner-harness": "0.1.1-beta.0",
|
|
57
|
-
"@bunny-agent/runner-opencode": "0.6.2",
|
|
58
|
-
"@bunny-agent/runner-pi": "0.6.4-beta.0",
|
|
59
|
-
"@bunny-agent/runner-codex": "0.6.2",
|
|
60
57
|
"@bunny-agent/runner-claude": "0.6.2",
|
|
61
|
-
"@bunny-agent/runner-
|
|
58
|
+
"@bunny-agent/runner-codex": "0.6.2",
|
|
59
|
+
"@bunny-agent/runner-gemini": "0.6.2",
|
|
60
|
+
"@bunny-agent/runner-opencode": "0.6.2",
|
|
61
|
+
"@bunny-agent/runner-pi": "0.6.4-beta.0"
|
|
62
62
|
},
|
|
63
63
|
"scripts": {
|
|
64
64
|
"build": "tsc && pnpm bundle",
|
|
65
65
|
"build:bundle": "tsc && pnpm bundle",
|
|
66
|
-
"bundle": "esbuild src/cli.ts --bundle --platform=node --format=esm --external:dotenv --external:@anthropic-ai/claude-agent-sdk --external:@openai/codex-sdk --external:@
|
|
66
|
+
"bundle": "esbuild src/cli.ts --bundle --platform=node --format=esm --external:dotenv --external:@anthropic-ai/claude-agent-sdk --external:@openai/codex-sdk --external:@earendil-works/pi-agent-core --external:@earendil-works/pi-ai --external:@earendil-works/pi-coding-agent --outfile=dist/bundle.mjs",
|
|
67
67
|
"dev": "tsc --watch",
|
|
68
68
|
"clean": "rm -rf dist",
|
|
69
69
|
"typecheck": "tsc --noEmit",
|