@bunny-agent/runner-cli 0.9.55 → 0.9.57

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.
Files changed (2) hide show
  1. package/dist/bundle.mjs +46 -4
  2. package/package.json +4 -4
package/dist/bundle.mjs CHANGED
@@ -2457,7 +2457,7 @@ ${body}`);
2457
2457
  };
2458
2458
  var AUTO_DETECT_ORDER = [braveProvider, tavilyProvider];
2459
2459
  function getEnv(env, key) {
2460
- const v = env[key] ?? process.env[key];
2460
+ const v = env[key];
2461
2461
  return v && v.length > 0 ? v : void 0;
2462
2462
  }
2463
2463
  function resolveSearchProviders(env) {
@@ -2483,6 +2483,46 @@ function isRateLimitError(err) {
2483
2483
  const msg = err.message;
2484
2484
  return msg.includes("429") || msg.includes("rate") || msg.includes("quota") || msg.includes("limit");
2485
2485
  }
2486
+ var RETRYABLE_NETWORK_ERROR_CODES = /* @__PURE__ */ new Set([
2487
+ "EAI_AGAIN",
2488
+ "ECONNREFUSED",
2489
+ "ECONNRESET",
2490
+ "EHOSTUNREACH",
2491
+ "ENETUNREACH",
2492
+ "ENOTFOUND",
2493
+ "ETIMEDOUT",
2494
+ "UND_ERR_BODY_TIMEOUT",
2495
+ "UND_ERR_CONNECT_TIMEOUT",
2496
+ "UND_ERR_HEADERS_TIMEOUT",
2497
+ "UND_ERR_SOCKET"
2498
+ ]);
2499
+ function hasRetryableNetworkCode(error, seen = /* @__PURE__ */ new Set()) {
2500
+ if (error === null || typeof error !== "object" || seen.has(error))
2501
+ return false;
2502
+ seen.add(error);
2503
+ const code = getErrorField(error, "code");
2504
+ if (code && RETRYABLE_NETWORK_ERROR_CODES.has(code))
2505
+ return true;
2506
+ const nestedErrors = [];
2507
+ if ("cause" in error)
2508
+ nestedErrors.push(error.cause);
2509
+ if ("errors" in error && Array.isArray(error.errors)) {
2510
+ nestedErrors.push(...error.errors);
2511
+ }
2512
+ return nestedErrors.some((nested) => hasRetryableNetworkCode(nested, seen));
2513
+ }
2514
+ function isRetryableNetworkError(err) {
2515
+ if (hasRetryableNetworkCode(err))
2516
+ return true;
2517
+ return err instanceof TypeError && err.message === "fetch failed";
2518
+ }
2519
+ function getFallbackReason(err) {
2520
+ if (isRateLimitError(err))
2521
+ return "rate limit";
2522
+ if (isRetryableNetworkError(err))
2523
+ return "network error";
2524
+ return null;
2525
+ }
2486
2526
  function getErrorField(error, key) {
2487
2527
  if (!(key in error))
2488
2528
  return void 0;
@@ -2648,7 +2688,7 @@ function buildWebSearchTool(env) {
2648
2688
  const shouldFetchContent = p.fetch_content ?? false;
2649
2689
  let lastError;
2650
2690
  let lastProviderLabel = "unknown provider";
2651
- for (const { provider, apiKey } of providers) {
2691
+ for (const [providerIndex, { provider, apiKey }] of providers.entries()) {
2652
2692
  lastProviderLabel = provider.label;
2653
2693
  try {
2654
2694
  const { results } = await provider.search({
@@ -2689,8 +2729,10 @@ function buildWebSearchTool(env) {
2689
2729
  lastError = e;
2690
2730
  const diagnostic = formatWebToolError(e);
2691
2731
  console.error(`[bunny-agent:pi] ${provider.label} web_search failed: ${diagnostic}`);
2692
- if (isRateLimitError(e) && providers.length > 1) {
2693
- console.error(`[bunny-agent:pi] ${provider.label} rate-limited, trying next provider...`);
2732
+ const fallbackReason = getFallbackReason(e);
2733
+ const nextProvider = providers[providerIndex + 1];
2734
+ if (fallbackReason && nextProvider) {
2735
+ console.error(`[bunny-agent:pi] ${provider.label} ${fallbackReason}, trying ${nextProvider.provider.label}...`);
2694
2736
  continue;
2695
2737
  }
2696
2738
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bunny-agent/runner-cli",
3
- "version": "0.9.55",
3
+ "version": "0.9.57",
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": {
@@ -54,12 +54,12 @@
54
54
  "esbuild": "^0.27.2",
55
55
  "typescript": "^5.3.0",
56
56
  "vitest": "^1.6.1",
57
+ "@bunny-agent/runner-claude": "0.6.2",
57
58
  "@bunny-agent/runner-codex": "0.6.2",
58
- "@bunny-agent/runner-gemini": "0.6.2",
59
59
  "@bunny-agent/runner-harness": "0.1.1-beta.0",
60
60
  "@bunny-agent/runner-opencode": "0.6.2",
61
- "@bunny-agent/runner-claude": "0.6.2",
62
- "@bunny-agent/runner-pi": "0.6.4-beta.0"
61
+ "@bunny-agent/runner-pi": "0.6.4-beta.0",
62
+ "@bunny-agent/runner-gemini": "0.6.2"
63
63
  },
64
64
  "scripts": {
65
65
  "build": "tsc && pnpm bundle",