@bunny-agent/runner-cli 0.9.33 → 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 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 "@mariozechner/pi-ai";
1284
- import { AuthStorage, createAgentSession, ModelRegistry, SessionManager as SessionManager2 } from "@mariozechner/pi-coding-agent";
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 "@mariozechner/pi-coding-agent";
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(), ".pi", "agent");
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);
@@ -1429,6 +1430,33 @@ var generateImageSchema = {
1429
1430
  required: ["prompt"],
1430
1431
  additionalProperties: false
1431
1432
  };
1433
+ var hasImagePayload = (item) => Boolean(item.b64_json ?? item.b64Json ?? item.image_base64 ?? item.imageBase64 ?? item.base64 ?? item.data ?? item.inlineData?.data ?? item.inline_data?.data ?? item.url ?? item.image_url ?? item.imageUrl ?? (typeof item.image === "string" ? item.image : item.image?.b64_json ?? item.image?.base64 ?? item.image?.data ?? item.image?.url));
1434
+ function readString(value) {
1435
+ return typeof value === "string" && value.length > 0 ? value : void 0;
1436
+ }
1437
+ function readInlineData(value) {
1438
+ if (!value || typeof value !== "object")
1439
+ return void 0;
1440
+ const obj = value;
1441
+ return {
1442
+ data: readString(obj.data),
1443
+ mimeType: readString(obj.mimeType),
1444
+ mime_type: readString(obj.mime_type)
1445
+ };
1446
+ }
1447
+ function readImage(value) {
1448
+ if (typeof value === "string" && value.length > 0)
1449
+ return value;
1450
+ if (!value || typeof value !== "object")
1451
+ return void 0;
1452
+ const obj = value;
1453
+ return {
1454
+ base64: readString(obj.base64),
1455
+ b64_json: readString(obj.b64_json),
1456
+ url: readString(obj.url),
1457
+ data: readString(obj.data)
1458
+ };
1459
+ }
1432
1460
  async function resolveB64(item, apiKey) {
1433
1461
  if (item.b64_json)
1434
1462
  return item.b64_json;
@@ -1440,12 +1468,20 @@ async function resolveB64(item, apiKey) {
1440
1468
  return item.imageBase64;
1441
1469
  if (item.base64)
1442
1470
  return item.base64;
1471
+ if (item.data)
1472
+ return item.data;
1473
+ if (item.inlineData?.data)
1474
+ return item.inlineData.data;
1475
+ if (item.inline_data?.data)
1476
+ return item.inline_data.data;
1443
1477
  if (typeof item.image === "string")
1444
1478
  return item.image;
1445
1479
  if (item.image?.b64_json)
1446
1480
  return item.image.b64_json;
1447
1481
  if (item.image?.base64)
1448
1482
  return item.image.base64;
1483
+ if (item.image?.data)
1484
+ return item.image.data;
1449
1485
  const url = item.url ?? item.image_url ?? item.imageUrl ?? item.image?.url;
1450
1486
  if (url) {
1451
1487
  const headers = {};
@@ -1463,16 +1499,24 @@ function pickImageItem(response) {
1463
1499
  if (!value || typeof value !== "object")
1464
1500
  return void 0;
1465
1501
  const obj = value;
1502
+ const image = readImage(obj.image);
1503
+ const inlineData = readInlineData(obj.inlineData);
1504
+ const inline_data = readInlineData(obj.inline_data);
1466
1505
  return {
1467
- b64_json: obj.b64_json ?? obj.b64Json,
1468
- b64Json: obj.b64Json,
1469
- url: obj.url ?? obj.imageUrl,
1470
- image_base64: obj.image_base64 ?? obj.imageBase64,
1471
- imageBase64: obj.imageBase64,
1472
- image_url: obj.image_url ?? obj.imageUrl,
1473
- imageUrl: obj.imageUrl,
1474
- base64: obj.base64,
1475
- image: obj.image
1506
+ b64_json: readString(obj.b64_json) ?? readString(obj.b64Json),
1507
+ b64Json: readString(obj.b64Json),
1508
+ url: readString(obj.url) ?? readString(obj.imageUrl),
1509
+ image_base64: readString(obj.image_base64) ?? readString(obj.imageBase64),
1510
+ imageBase64: readString(obj.imageBase64),
1511
+ image_url: readString(obj.image_url) ?? readString(obj.imageUrl),
1512
+ imageUrl: readString(obj.imageUrl),
1513
+ base64: readString(obj.base64),
1514
+ data: readString(obj.data),
1515
+ mimeType: readString(obj.mimeType),
1516
+ mime_type: readString(obj.mime_type),
1517
+ inlineData,
1518
+ inline_data,
1519
+ image
1476
1520
  };
1477
1521
  };
1478
1522
  const asItem = (value) => {
@@ -1483,7 +1527,7 @@ function pickImageItem(response) {
1483
1527
  }
1484
1528
  if (typeof value === "object") {
1485
1529
  const normalized = tryFromObject(value);
1486
- if (normalized)
1530
+ if (normalized && hasImagePayload(normalized))
1487
1531
  return normalized;
1488
1532
  }
1489
1533
  return void 0;
@@ -1526,8 +1570,7 @@ function pickImageItem(response) {
1526
1570
  continue;
1527
1571
  const normalized = tryFromObject(current);
1528
1572
  if (normalized) {
1529
- const hasUsefulField = Boolean(normalized.b64_json ?? normalized.b64Json ?? normalized.image_base64 ?? normalized.imageBase64 ?? normalized.base64 ?? normalized.url ?? normalized.image_url ?? normalized.imageUrl ?? (typeof normalized.image === "string" ? normalized.image : normalized.image?.b64_json ?? normalized.image?.base64 ?? normalized.image?.url));
1530
- if (hasUsefulField)
1573
+ if (hasImagePayload(normalized))
1531
1574
  return normalized;
1532
1575
  }
1533
1576
  if (Array.isArray(current)) {
@@ -1672,6 +1715,27 @@ var editImageSchema = {
1672
1715
  type: "string",
1673
1716
  enum: ["low", "medium", "high", "auto"],
1674
1717
  description: "Image quality. Optional; omit or set auto to let model decide."
1718
+ },
1719
+ aspectRatio: {
1720
+ type: "string",
1721
+ enum: [
1722
+ "1:1",
1723
+ "3:2",
1724
+ "2:3",
1725
+ "3:4",
1726
+ "4:3",
1727
+ "4:5",
1728
+ "5:4",
1729
+ "9:16",
1730
+ "16:9",
1731
+ "21:9"
1732
+ ],
1733
+ description: "Gemini image aspect ratio. Use this instead of size for Gemini image edit models when exact proportions matter."
1734
+ },
1735
+ imageSize: {
1736
+ type: "string",
1737
+ enum: ["1K", "2K", "4K"],
1738
+ description: "Gemini output resolution for image edit models that support K-resolution output."
1675
1739
  }
1676
1740
  },
1677
1741
  required: ["image", "prompt"],
@@ -1708,12 +1772,13 @@ function buildImageEditTool(cwd, imageModelId, baseUrl, apiKey) {
1708
1772
  name: "edit_image",
1709
1773
  label: "edit image",
1710
1774
  description: "Edit an existing image based on a text prompt. Optionally use a mask to control which areas to modify. Saves the result to disk and returns the file path.",
1711
- promptSnippet: "edit_image(image, prompt, mask?, filename?, size?, quality?) - edit an existing image",
1775
+ promptSnippet: "edit_image(image, prompt, mask?, filename?, size?, quality?, aspectRatio?, imageSize?) - edit an existing image",
1712
1776
  promptGuidelines: [
1713
1777
  "Use edit_image when the user wants to modify, retouch, or transform an existing image.",
1714
1778
  "The prompt should describe the full desired final image, not just the change.",
1715
1779
  "Provide the source image path. Use a mask image (PNG with transparent areas) to control where edits happen.",
1716
- "Without a mask, the model decides what to change based on the prompt."
1780
+ "Without a mask, the model decides what to change based on the prompt.",
1781
+ "For Gemini image edit models, use aspectRatio and imageSize when the user asks for those controls."
1717
1782
  ],
1718
1783
  // biome-ignore lint/suspicious/noExplicitAny: plain JSON Schema compatible with TypeBox TSchema
1719
1784
  parameters: editImageSchema,
@@ -1726,6 +1791,8 @@ function buildImageEditTool(cwd, imageModelId, baseUrl, apiKey) {
1726
1791
  const maskPath = p.mask;
1727
1792
  const size = p.size;
1728
1793
  const quality = p.quality;
1794
+ const aspectRatio = p.aspectRatio;
1795
+ const imageSize = p.imageSize;
1729
1796
  const rawFilename = p.filename;
1730
1797
  const safePrompt = buildPolicySafeEditPrompt(prompt);
1731
1798
  const resolvedImage = resolve4(cwd, imagePath);
@@ -1757,6 +1824,12 @@ function buildImageEditTool(cwd, imageModelId, baseUrl, apiKey) {
1757
1824
  if (quality && quality !== "auto") {
1758
1825
  fields.push({ name: "quality", value: quality });
1759
1826
  }
1827
+ if (aspectRatio) {
1828
+ fields.push({ name: "aspect_ratio", value: aspectRatio });
1829
+ }
1830
+ if (imageSize) {
1831
+ fields.push({ name: "image_size", value: imageSize });
1832
+ }
1760
1833
  const files = [
1761
1834
  {
1762
1835
  name: "image",
@@ -1835,7 +1908,7 @@ function buildImageEditTool(cwd, imageModelId, baseUrl, apiKey) {
1835
1908
  // ../../packages/runner-pi/dist/session-utils.js
1836
1909
  import { closeSync, fstatSync, openSync, readdirSync as readdirSync2, readSync, statSync as statSync2 } from "node:fs";
1837
1910
  import { join as join7 } from "node:path";
1838
- import { SessionManager } from "@mariozechner/pi-coding-agent";
1911
+ import { SessionManager } from "@earendil-works/pi-coding-agent";
1839
1912
  var MAX_SESSION_FILE_BYTES = Number(process.env.SANDAGENT_MAX_SESSION_BYTES) || 10 * 1024 * 1024;
1840
1913
  function resolveSessionPathById(cwd, sessionId) {
1841
1914
  const tempMgr = SessionManager.create(cwd);
@@ -2040,7 +2113,7 @@ var PiAISDKStreamConverter = class {
2040
2113
  return chunks;
2041
2114
  }
2042
2115
  if (event.type === "tool_execution_end") {
2043
- const output = this.options.redactText(this.options.normalizeToolOutput(event.result));
2116
+ const output = this.options.normalizeToolOutput(event.result);
2044
2117
  const raw = event.result?.details?.usage?.raw;
2045
2118
  if (raw != null)
2046
2119
  accumulateToolUsage(this.toolUsageTally, raw);
@@ -2088,13 +2161,16 @@ var PiAISDKStreamConverter = class {
2088
2161
  return [sseData({ type: "text-start", id: this.activeTextPartId })];
2089
2162
  }
2090
2163
  emitTextDelta(rawDelta) {
2091
- const delta = rawDelta ? this.options.redactText(rawDelta) : void 0;
2092
- if (!delta)
2164
+ if (!rawDelta)
2093
2165
  return [];
2094
2166
  const startChunk = this.activeTextPartId == null ? this.openTextStream() : [];
2095
2167
  return [
2096
2168
  ...startChunk,
2097
- sseData({ type: "text-delta", id: this.activeTextPartId, delta })
2169
+ sseData({
2170
+ type: "text-delta",
2171
+ id: this.activeTextPartId,
2172
+ delta: rawDelta
2173
+ })
2098
2174
  ];
2099
2175
  }
2100
2176
  endTextStreamIfOpen() {
@@ -2137,7 +2213,7 @@ var PiAISDKStreamConverter = class {
2137
2213
  };
2138
2214
 
2139
2215
  // ../../packages/runner-pi/dist/tool-overrides.js
2140
- import { createBashTool, createReadTool } from "@mariozechner/pi-coding-agent";
2216
+ import { createBashTool, createReadTool } from "@earendil-works/pi-coding-agent";
2141
2217
 
2142
2218
  // ../../packages/runner-pi/dist/web-tools.js
2143
2219
  var braveProvider = {
@@ -5237,8 +5313,211 @@ function serializeResult(result) {
5237
5313
  return JSON.stringify(result);
5238
5314
  }
5239
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
+
5240
5513
  // ../../packages/runner-pi/dist/pi-runner.js
5241
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
+ }
5242
5521
  function parseModelSpec(model) {
5243
5522
  const trimmed = model.trim();
5244
5523
  const separator = trimmed.indexOf(":");
@@ -5397,19 +5676,22 @@ function createPiRunner(options = {}) {
5397
5676
  const apiKey = await modelRegistry.authStorage.getApiKey(provider) ?? "";
5398
5677
  customTools.push(buildImageGenerateTool(cwd, imageModelName, model.baseUrl, apiKey), buildImageEditTool(cwd, imageModelName, model.baseUrl, apiKey));
5399
5678
  }
5400
- if (options.customTools && options.customTools.length > 0) {
5401
- customTools.push(...options.customTools);
5402
- }
5403
- if (options.toolRefs && options.toolRefs.length > 0) {
5404
- customTools.push(...buildToolDefinitionsFromRefs(options.toolRefs));
5679
+ const videoTool = buildVideoGenerateTool(options.env ?? {});
5680
+ if (videoTool) {
5681
+ customTools.push(videoTool);
5405
5682
  }
5683
+ const toolRefDefinitions = options.toolRefs && options.toolRefs.length > 0 ? buildToolDefinitionsFromRefs(options.toolRefs) : [];
5406
5684
  const { session } = await createAgentSession({
5407
5685
  cwd,
5408
5686
  model,
5409
5687
  sessionManager,
5410
5688
  modelRegistry,
5411
5689
  resourceLoader,
5412
- customTools
5690
+ tools: options.allowedTools,
5691
+ customTools: [
5692
+ ...applyAllowedTools(customTools, options.allowedTools),
5693
+ ...toolRefDefinitions
5694
+ ]
5413
5695
  });
5414
5696
  const eventQueue = [];
5415
5697
  let isComplete = false;
@@ -5446,12 +5728,6 @@ function createPiRunner(options = {}) {
5446
5728
  const streamConverter = new PiAISDKStreamConverter({
5447
5729
  sessionId: session.sessionId,
5448
5730
  model,
5449
- redactText: (value) => {
5450
- if (options.env && Object.keys(options.env).length > 0) {
5451
- return redactSecrets(value, options.env);
5452
- }
5453
- return value;
5454
- },
5455
5731
  normalizeToolOutput: extractToolResultText,
5456
5732
  getUsageFromAgentEndMessages,
5457
5733
  getErrorFromAgentEndMessages
@@ -5491,8 +5767,8 @@ function createPiRunner(options = {}) {
5491
5767
  }
5492
5768
  return;
5493
5769
  }
5494
- if (!streamConverter.finished && session.agent.state.error) {
5495
- for (const chunk of streamConverter.forceError(session.agent.state.error)) {
5770
+ if (!streamConverter.finished && session.agent.state.errorMessage) {
5771
+ for (const chunk of streamConverter.forceError(session.agent.state.errorMessage)) {
5496
5772
  yield chunk;
5497
5773
  }
5498
5774
  }
@@ -5678,7 +5954,9 @@ function takeToolRefsFromEnv() {
5678
5954
  );
5679
5955
  return null;
5680
5956
  }
5681
- return parsed.tools;
5957
+ return {
5958
+ tools: parsed.tools
5959
+ };
5682
5960
  } catch (err) {
5683
5961
  const message = err instanceof Error ? err.message : String(err);
5684
5962
  console.error(
@@ -5910,7 +6188,7 @@ async function main() {
5910
6188
  skillPaths: args.skillPaths,
5911
6189
  resume: args.resume,
5912
6190
  yolo: args.yolo,
5913
- ...toolRefs ? { toolRefs } : {}
6191
+ ...toolRefs ? { toolRefs: toolRefs.tools } : {}
5914
6192
  });
5915
6193
  break;
5916
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 parsed.tools;
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":"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"}
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.33",
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
- "@mariozechner/pi-agent-core": "0.64.0",
45
- "@mariozechner/pi-ai": "0.64.0",
46
- "@mariozechner/pi-coding-agent": "0.64.0",
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"
@@ -63,7 +63,7 @@
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:@mariozechner/pi-agent-core --external:@mariozechner/pi-ai --external:@mariozechner/pi-coding-agent --outfile=dist/bundle.mjs",
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",