jonah-fleet 1.31.0 β†’ 1.31.2

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/CHANGELOG.md CHANGED
@@ -5,6 +5,27 @@ All notable changes to `jonah-fleet` will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.31.2](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.31.1...v1.31.2) (2026-10-02)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **runner,daemon:** add startup transient 503 retry and exempt from PR failure cooldown ([#575](https://github.com/Jonah-Projects/jonah-fleet/issues/575)) ([c6f37eb](https://github.com/Jonah-Projects/jonah-fleet/commit/c6f37ebd4bc7072f267c77c42eba255aa71b2d78))
14
+
15
+ ## [Unreleased] - 2026-10-02
16
+
17
+ ### Bug Fixes
18
+
19
+ * **runner:** introduce `detectTransientServiceError` and add startup retry loop (up to 2 retries with backoff) when `agy` encounters transient 503 UNAVAILABLE or handshake EOF during initialization
20
+ * **daemon:** exempt transient service errors (503 UNAVAILABLE) from PR failure cooldowns to avoid penalizing PR review schedules on momentary upstream cloud blips
21
+
22
+ ## [1.31.1](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.31.0...v1.31.1) (2026-10-01)
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * **daemon:** add quota exhaustion cooldown and PR failure backoff ([#549](https://github.com/Jonah-Projects/jonah-fleet/issues/549)) ([9806a28](https://github.com/Jonah-Projects/jonah-fleet/commit/9806a283900c81769a2d565b88dd9e6486eee9e5))
28
+
8
29
  ## [1.31.0](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.30.5...v1.31.0) (2026-10-01)
9
30
 
10
31
 
@@ -45,6 +66,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
45
66
 
46
67
  ### Bug Fixes
47
68
 
69
+ * **daemon:** add LLM quota exhaustion backoff (15m cooldown) and PR failure tracking to prevent infinite retry loops on exhausted or failing PRs
70
+ * **runner:** expand detectQuotaExceeded to match RESOURCE_EXHAUSTED, code 429, and rate_limit_exceeded CLI errors
71
+ * **workflows:** expand quota-pause regex to detect RESOURCE_EXHAUSTED and code 429 across all routine workflows
48
72
  * **workflows:** mark quota-paused workflow runs as failed (`exit 1`) with an error annotation and keep routine issues open with `status:quota-paused` instead of falsely reporting success
49
73
 
50
74
  ## [1.30.2](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.30.1...v1.30.2) (2026-09-30)
package/dist/index.js CHANGED
@@ -4435,8 +4435,10 @@ async function tryPostLocalRunMilestoneAsync(cwd, issueNumber, cardContent) {
4435
4435
  function detectQuotaExceeded(output, stderr) {
4436
4436
  const combined = `${output}
4437
4437
  ${stderr}`;
4438
- if (/individual quota reached|quota reached/i.test(combined)) {
4439
- const match = combined.match(/Resets in ([^.\n]+)/i);
4438
+ if (/individual quota reached|quota reached|RESOURCE_EXHAUSTED|resource has been exhausted|rate_limit_exceeded|rate limit exceeded|code 429|check quota/i.test(
4439
+ combined
4440
+ )) {
4441
+ const match = combined.match(/(?:Resets in|resets in|retry after)\s+([^.\n]+)/i);
4440
4442
  return {
4441
4443
  isQuota: true,
4442
4444
  resetInfo: match ? `Resets in ${match[1].trim()}` : void 0
@@ -4444,6 +4446,11 @@ ${stderr}`;
4444
4446
  }
4445
4447
  return { isQuota: false };
4446
4448
  }
4449
+ function detectTransientServiceError(output, stderr) {
4450
+ const combined = `${output}
4451
+ ${stderr}`;
4452
+ return /UNAVAILABLE\s*\((?:code\s*)?503\)/i.test(combined) || /\bcode\s*503\b/i.test(combined) || /The service is currently unavailable/i.test(combined) || /Eligibility check failed/i.test(combined) || /status(?:\s*code)?\s*[:=]?\s*503\b/i.test(combined) || /503\s+Service\s+Unavailable/i.test(combined) || /daily-cloudcode-pa\.googleapis\.com.*EOF/i.test(combined) || /oauth2\/v2\/userinfo.*EOF/i.test(combined);
4453
+ }
4447
4454
  function tryReconcileLocalRunIssue(cwd, issueNumber, reportContent, exitCode, hostname, routine, quotaInfo) {
4448
4455
  try {
4449
4456
  if (quotaInfo?.isQuota) {
@@ -4916,6 +4923,7 @@ Timeout: ${printTimeout}`,
4916
4923
  }
4917
4924
  }
4918
4925
  });
4926
+ let executedAnyTool = false;
4919
4927
  const stdoutParser = new LineBufferedStreamParser((line) => {
4920
4928
  const event = parseStreamJsonEvent(line);
4921
4929
  if (event) {
@@ -4946,6 +4954,7 @@ Timeout: ${printTimeout}`,
4946
4954
  spinner.update(`${targetLabel}: ${activePhase}`);
4947
4955
  }
4948
4956
  } else if (su.state === "DONE") {
4957
+ executedAnyTool = true;
4949
4958
  lastActionDesc = null;
4950
4959
  if (su.tool_info?.output) {
4951
4960
  checkTargetDetection(su.tool_info.output);
@@ -5043,29 +5052,61 @@ Timeout: ${printTimeout}`,
5043
5052
  stdoutParser.feed(chunk);
5044
5053
  }
5045
5054
  };
5055
+ const maxStartupAttempts = 3;
5056
+ let attempt = 0;
5046
5057
  try {
5047
- exitCode = await new Promise((resolve, reject) => {
5048
- const child = spawn("agy", args, {
5049
- cwd: executionDir,
5050
- env: childEnv,
5051
- stdio: ["inherit", "pipe", "pipe"]
5052
- });
5053
- activeChild = child;
5054
- child.stdout?.on("data", (data) => {
5055
- processChunk(data.toString(), false);
5056
- });
5057
- child.stderr?.on("data", (data) => {
5058
- processChunk(data.toString(), true);
5059
- });
5060
- child.on("error", (err) => {
5061
- spinner?.stop();
5062
- reject(err);
5063
- });
5064
- child.on("close", (code, signal) => {
5065
- spinner?.stop();
5066
- resolve(resolveExitCode(code, signal));
5058
+ while (attempt < maxStartupAttempts) {
5059
+ attempt++;
5060
+ if (attempt > 1) {
5061
+ accumulatedOutput = "";
5062
+ accumulatedStderr = "";
5063
+ finalResponseText = "";
5064
+ lastActionDesc = null;
5065
+ executedAnyTool = false;
5066
+ loopGuardTrip = null;
5067
+ }
5068
+ exitCode = await new Promise((resolve, reject) => {
5069
+ const child = spawn("agy", args, {
5070
+ cwd: executionDir,
5071
+ env: childEnv,
5072
+ stdio: ["inherit", "pipe", "pipe"]
5073
+ });
5074
+ activeChild = child;
5075
+ child.stdout?.on("data", (data) => {
5076
+ processChunk(data.toString(), false);
5077
+ });
5078
+ child.stderr?.on("data", (data) => {
5079
+ processChunk(data.toString(), true);
5080
+ });
5081
+ child.on("error", (err) => {
5082
+ spinner?.stop();
5083
+ reject(err);
5084
+ });
5085
+ child.on("close", (code, signal) => {
5086
+ spinner?.stop();
5087
+ resolve(resolveExitCode(code, signal));
5088
+ });
5067
5089
  });
5068
- });
5090
+ stdoutParser.flush();
5091
+ stderrParser.flush();
5092
+ const isTransient = detectTransientServiceError(
5093
+ finalResponseText || accumulatedOutput,
5094
+ accumulatedStderr
5095
+ );
5096
+ if (exitCode !== 0 && isTransient && !executedAnyTool && attempt < maxStartupAttempts) {
5097
+ const delaySec = attempt * 2;
5098
+ const retryMsg = `Transient service error (503 UNAVAILABLE). Retrying startup in ${delaySec}s (attempt ${attempt + 1}/${maxStartupAttempts})...`;
5099
+ if (spinner) {
5100
+ spinner.update(`${targetLabel}: ${retryMsg}`);
5101
+ } else {
5102
+ console.warn(pc11.yellow(`
5103
+ [runner] ${retryMsg}`));
5104
+ }
5105
+ await new Promise((r) => setTimeout(r, delaySec * 1e3));
5106
+ continue;
5107
+ }
5108
+ break;
5109
+ }
5069
5110
  } finally {
5070
5111
  spinner?.stop();
5071
5112
  process.removeListener("SIGINT", sigintHandler);
@@ -5074,8 +5115,6 @@ Timeout: ${printTimeout}`,
5074
5115
  await cleanup();
5075
5116
  }
5076
5117
  }
5077
- stdoutParser.flush();
5078
- stderrParser.flush();
5079
5118
  output = finalResponseText || accumulatedOutput;
5080
5119
  const durationMs = Date.now() - startTime;
5081
5120
  const durationSec = Math.round(durationMs / 1e3);
@@ -5179,6 +5218,7 @@ Timeout: ${printTimeout}`,
5179
5218
  );
5180
5219
  }
5181
5220
  }
5221
+ const transientServiceError = exitCode !== 0 && detectTransientServiceError(output, accumulatedStderr);
5182
5222
  return {
5183
5223
  success: exitCode === 0,
5184
5224
  exitCode,
@@ -5186,7 +5226,10 @@ Timeout: ${printTimeout}`,
5186
5226
  stderr: accumulatedStderr,
5187
5227
  worktreePath,
5188
5228
  branchName,
5189
- issueNumber: routineIssueNumber
5229
+ issueNumber: routineIssueNumber,
5230
+ quotaPaused: quotaInfo.isQuota,
5231
+ quotaResetInfo: quotaInfo.resetInfo,
5232
+ transientServiceError
5190
5233
  };
5191
5234
  }
5192
5235
 
@@ -6049,7 +6092,9 @@ async function drainReviewQueue(drainOptions) {
6049
6092
  clearTicker,
6050
6093
  getPRs = getOpenReviewablePRs,
6051
6094
  runRoutine = runLocalRoutine,
6052
- onAttempted
6095
+ onAttempted,
6096
+ failureCooldowns,
6097
+ onQuotaExhausted
6053
6098
  } = drainOptions;
6054
6099
  if (isStopping()) return;
6055
6100
  if (state) {
@@ -6070,13 +6115,22 @@ async function drainReviewQueue(drainOptions) {
6070
6115
  return;
6071
6116
  }
6072
6117
  const attemptedPRNumbers = /* @__PURE__ */ new Set();
6118
+ const cooldownDurationMs = (options.prFailureCooldownMinutes ?? 15) * 60 * 1e3;
6073
6119
  while (!isStopping() && reviewablePRs.length > 0) {
6074
- const candidatePRs = reviewablePRs.filter((pr) => !attemptedPRNumbers.has(pr.number));
6120
+ const now = Date.now();
6121
+ const candidatePRs = reviewablePRs.filter((pr) => {
6122
+ if (attemptedPRNumbers.has(pr.number)) return false;
6123
+ const cooldown = failureCooldowns?.get(pr.number);
6124
+ if (cooldown && now - cooldown.failedAt < cooldownDurationMs) {
6125
+ return false;
6126
+ }
6127
+ return true;
6128
+ });
6075
6129
  if (candidatePRs.length === 0) {
6076
6130
  if (options.verbose) {
6077
6131
  console.log(
6078
6132
  pc14.dim(
6079
- `[${(/* @__PURE__ */ new Date()).toLocaleTimeString()}] All ${reviewablePRs.length} remaining ready PR(s) were already evaluated in this drain pass.`
6133
+ `[${(/* @__PURE__ */ new Date()).toLocaleTimeString()}] All ${reviewablePRs.length} remaining ready PR(s) were already evaluated or in failure cooldown in this drain pass.`
6080
6134
  )
6081
6135
  );
6082
6136
  }
@@ -6124,18 +6178,65 @@ async function drainReviewQueue(drainOptions) {
6124
6178
  attemptedPRNumbers.add(prNum);
6125
6179
  onAttempted?.(prNum);
6126
6180
  }
6181
+ const isQuota = result.quotaPaused || !result.success && detectQuotaExceeded(result.output || "", result.stderr || "").isQuota;
6182
+ if (isQuota) {
6183
+ const resetInfo = result.quotaResetInfo || detectQuotaExceeded(result.output || "", result.stderr || "").resetInfo;
6184
+ console.warn(
6185
+ pc14.yellow(
6186
+ `
6187
+ \u26A0\uFE0F Peer Review on ${targetLabel} paused due to LLM quota exhaustion (${resetInfo || "RESOURCE_EXHAUSTED / 429"}).`
6188
+ )
6189
+ );
6190
+ if (typeof prNum === "number") {
6191
+ const prev = failureCooldowns?.get(prNum);
6192
+ failureCooldowns?.set(prNum, { failedAt: Date.now(), count: (prev?.count || 0) + 1 });
6193
+ }
6194
+ onQuotaExhausted?.(resetInfo);
6195
+ break;
6196
+ }
6197
+ const isTransient = result.transientServiceError || !result.success && detectTransientServiceError(result.output || "", result.stderr || "");
6198
+ if (isTransient) {
6199
+ console.warn(
6200
+ pc14.yellow(
6201
+ `
6202
+ \u26A0\uFE0F Peer Review on ${targetLabel} encountered transient service error (503 UNAVAILABLE). PR will remain eligible for next sweep without failure cooldown.
6203
+ `
6204
+ )
6205
+ );
6206
+ break;
6207
+ }
6127
6208
  if (result.success) {
6128
6209
  console.log(pc14.green(`\u2713 Local peer-review on ${targetLabel} completed successfully.
6129
6210
  `));
6211
+ if (typeof prNum === "number") {
6212
+ failureCooldowns?.delete(prNum);
6213
+ }
6130
6214
  } else {
6131
6215
  console.warn(pc14.yellow(`\u26A0\uFE0F Local peer-review on ${targetLabel} completed with code ${result.exitCode}.
6132
6216
  `));
6217
+ if (typeof prNum === "number") {
6218
+ const prev = failureCooldowns?.get(prNum);
6219
+ failureCooldowns?.set(prNum, { failedAt: Date.now(), count: (prev?.count || 0) + 1 });
6220
+ }
6133
6221
  }
6134
6222
  } catch (err) {
6223
+ const isTransientErr = detectTransientServiceError(err.message || "", "");
6224
+ if (isTransientErr) {
6225
+ console.warn(
6226
+ pc14.yellow(
6227
+ `
6228
+ \u26A0\uFE0F Peer Review on ${targetLabel} encountered transient service error (${err.message}). PR will remain eligible for next sweep without failure cooldown.
6229
+ `
6230
+ )
6231
+ );
6232
+ break;
6233
+ }
6135
6234
  console.error(pc14.red(`\u2717 Error in peer-review on ${targetLabel}: ${err.message}`));
6136
6235
  if (currentPR) {
6137
6236
  attemptedPRNumbers.add(currentPR.number);
6138
6237
  onAttempted?.(currentPR.number);
6238
+ const prev = failureCooldowns?.get(currentPR.number);
6239
+ failureCooldowns?.set(currentPR.number, { failedAt: Date.now(), count: (prev?.count || 0) + 1 });
6139
6240
  }
6140
6241
  } finally {
6141
6242
  if (state) {
@@ -6183,7 +6284,10 @@ async function performAutoworkScan(scanOptions) {
6183
6284
  isStopping,
6184
6285
  clearTicker,
6185
6286
  getPRs,
6186
- runRoutine
6287
+ runRoutine,
6288
+ onAttempted: scanOptions.onAttempted,
6289
+ failureCooldowns: scanOptions.failureCooldowns,
6290
+ onQuotaExhausted: scanOptions.onQuotaExhausted
6187
6291
  });
6188
6292
  const remainingPRs = (await getPRs(repoRoot)).length;
6189
6293
  if (remainingPRs > 0) {
@@ -6232,6 +6336,29 @@ async function performAutoworkScan(scanOptions) {
6232
6336
  }
6233
6337
  }
6234
6338
  });
6339
+ const isQuota = result.quotaPaused || !result.success && detectQuotaExceeded(result.output || "", result.stderr || "").isQuota;
6340
+ if (isQuota) {
6341
+ const resetInfo = result.quotaResetInfo || detectQuotaExceeded(result.output || "", result.stderr || "").resetInfo;
6342
+ console.warn(
6343
+ pc14.yellow(
6344
+ `
6345
+ \u26A0\uFE0F Autowork paused due to LLM quota exhaustion (${resetInfo || "RESOURCE_EXHAUSTED / 429"}).`
6346
+ )
6347
+ );
6348
+ scanOptions.onQuotaExhausted?.(resetInfo);
6349
+ return { executed: true, reason: "quota_exhausted" };
6350
+ }
6351
+ const isTransient = result.transientServiceError || !result.success && detectTransientServiceError(result.output || "", result.stderr || "");
6352
+ if (isTransient) {
6353
+ console.warn(
6354
+ pc14.yellow(
6355
+ `
6356
+ \u26A0\uFE0F Autowork encountered transient service error (503 UNAVAILABLE). Routine will retry on next cycle without failure penalty.
6357
+ `
6358
+ )
6359
+ );
6360
+ return { executed: true, reason: "transient_service_error" };
6361
+ }
6235
6362
  if (result.success) {
6236
6363
  console.log(pc14.green(`\u2713 Local autowork completed successfully.
6237
6364
  `));
@@ -6282,6 +6409,22 @@ async function runDaemonLoop(repoRoot, options = {}) {
6282
6409
  let stopResolve;
6283
6410
  const reviewIntervalMs = reviewInterval * 60 * 1e3;
6284
6411
  const autoworkIntervalMs = autoworkInterval * 60 * 1e3;
6412
+ const failureCooldowns = /* @__PURE__ */ new Map();
6413
+ const quotaCooldownMs = (options.quotaCooldownMinutes ?? 15) * 60 * 1e3;
6414
+ let quotaCooldownUntil;
6415
+ const handleQuotaPause = (resetInfo) => {
6416
+ const until = Date.now() + quotaCooldownMs;
6417
+ quotaCooldownUntil = until;
6418
+ nextReviewCheckTime = until;
6419
+ nextAutoworkCheckTime = Math.max(nextAutoworkCheckTime, until);
6420
+ const resetMsg = resetInfo || "RESOURCE_EXHAUSTED / 429";
6421
+ console.warn(
6422
+ pc14.yellow(
6423
+ `
6424
+ [${(/* @__PURE__ */ new Date()).toLocaleTimeString()}] \u23F8\uFE0F LLM quota exhausted (${resetMsg}). Deferring checks for ${Math.round(quotaCooldownMs / 6e4)}m...`
6425
+ )
6426
+ );
6427
+ };
6285
6428
  let nextReviewCheckTime = Date.now() + (routines.includes("peer-review") ? reviewIntervalMs : Infinity);
6286
6429
  let nextAutoworkCheckTime = Date.now() + (routines.includes("autowork") ? autoworkIntervalMs : Infinity);
6287
6430
  let lastOpenPRCount = void 0;
@@ -6336,7 +6479,9 @@ Stopping local agent daemon...`));
6336
6479
  isStopping: () => isStopping,
6337
6480
  clearTicker,
6338
6481
  getPRs: getPRsFn,
6339
- runRoutine: runRoutineFn
6482
+ runRoutine: runRoutineFn,
6483
+ failureCooldowns,
6484
+ onQuotaExhausted: handleQuotaPause
6340
6485
  });
6341
6486
  try {
6342
6487
  const prs = await getPRsFn(repoRoot);
@@ -6352,7 +6497,11 @@ Stopping local agent daemon...`));
6352
6497
  state.activeRoutine = void 0;
6353
6498
  state.activeTarget = void 0;
6354
6499
  writeDaemonState(repoRoot, state);
6355
- nextReviewCheckTime = Date.now() + reviewIntervalMs;
6500
+ if (quotaCooldownUntil && Date.now() < quotaCooldownUntil) {
6501
+ nextReviewCheckTime = quotaCooldownUntil;
6502
+ } else {
6503
+ nextReviewCheckTime = Date.now() + reviewIntervalMs;
6504
+ }
6356
6505
  updateTicker();
6357
6506
  if (isGracefulStopping) {
6358
6507
  await handleStop();
@@ -6388,7 +6537,9 @@ Stopping local agent daemon...`));
6388
6537
  clearTicker,
6389
6538
  getPRs: getPRsFn,
6390
6539
  getBacklog: options.getBacklog || getBacklogTriageReport,
6391
- runRoutine: runRoutineFn
6540
+ runRoutine: runRoutineFn,
6541
+ failureCooldowns,
6542
+ onQuotaExhausted: handleQuotaPause
6392
6543
  });
6393
6544
  try {
6394
6545
  const prs = await getPRsFn(repoRoot);
@@ -6404,7 +6555,11 @@ Stopping local agent daemon...`));
6404
6555
  state.activeRoutine = void 0;
6405
6556
  state.activeTarget = void 0;
6406
6557
  writeDaemonState(repoRoot, state);
6407
- nextAutoworkCheckTime = Date.now() + autoworkIntervalMs;
6558
+ if (quotaCooldownUntil && Date.now() < quotaCooldownUntil) {
6559
+ nextAutoworkCheckTime = quotaCooldownUntil;
6560
+ } else {
6561
+ nextAutoworkCheckTime = Date.now() + autoworkIntervalMs;
6562
+ }
6408
6563
  updateTicker();
6409
6564
  if (!isStopping && routines.includes("peer-review")) {
6410
6565
  try {
@@ -18,6 +18,8 @@ export interface DaemonOptions {
18
18
  interval?: number;
19
19
  reviewInterval?: number;
20
20
  autoworkInterval?: number;
21
+ quotaCooldownMinutes?: number;
22
+ prFailureCooldownMinutes?: number;
21
23
  routines?: string[];
22
24
  model?: string;
23
25
  foreground?: boolean;
@@ -28,6 +30,11 @@ export interface DaemonOptions {
28
30
  runRoutine?: (opts: any) => Promise<{
29
31
  success: boolean;
30
32
  exitCode?: number;
33
+ quotaPaused?: boolean;
34
+ quotaResetInfo?: string;
35
+ transientServiceError?: boolean;
36
+ output?: string;
37
+ stderr?: string;
31
38
  }>;
32
39
  }
33
40
  export declare function getDaemonStatePath(repoRoot: string): string;
@@ -130,6 +137,10 @@ export declare function queryOrphanedLocalRunIssues(repoRoot: string): Promise<A
130
137
  * Operates asynchronously and fails gracefully on network / CLI errors without preventing daemon startup.
131
138
  */
132
139
  export declare function reconcileOrphanedLocalRuns(optionsOrRepoRoot: string | ReconcileOrphanedRunsOptions): Promise<number>;
140
+ export interface PRFailureRecord {
141
+ failedAt: number;
142
+ count: number;
143
+ }
133
144
  export interface DrainReviewQueueOptions {
134
145
  repoRoot: string;
135
146
  state?: DaemonState;
@@ -140,8 +151,15 @@ export interface DrainReviewQueueOptions {
140
151
  runRoutine?: (opts: any) => Promise<{
141
152
  success: boolean;
142
153
  exitCode?: number;
154
+ quotaPaused?: boolean;
155
+ quotaResetInfo?: string;
156
+ transientServiceError?: boolean;
157
+ output?: string;
158
+ stderr?: string;
143
159
  }>;
144
160
  onAttempted?: (prNumber: number) => void;
161
+ failureCooldowns?: Map<number, PRFailureRecord>;
162
+ onQuotaExhausted?: (resetInfo?: string) => void;
145
163
  }
146
164
  /**
147
165
  * Sequentially drains all open reviewable PRs by executing peer-review in isolated worktrees.
@@ -159,8 +177,16 @@ export interface PerformAutoworkScanOptions {
159
177
  runRoutine?: (opts: any) => Promise<{
160
178
  success: boolean;
161
179
  exitCode?: number;
180
+ quotaPaused?: boolean;
181
+ quotaResetInfo?: string;
182
+ transientServiceError?: boolean;
183
+ output?: string;
184
+ stderr?: string;
162
185
  }>;
163
186
  onDiagnosticCard?: (card: string) => void;
187
+ onAttempted?: (prNumber: number) => void;
188
+ failureCooldowns?: Map<number, PRFailureRecord>;
189
+ onQuotaExhausted?: (resetInfo?: string) => void;
164
190
  }
165
191
  /**
166
192
  * Performs an autowork backlog scan with zero-token preflight check.
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/lib/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/lib/daemon.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,9 @@ export interface RunLocalRoutineResult {
23
23
  worktreePath?: string;
24
24
  branchName?: string;
25
25
  issueNumber?: number;
26
+ quotaPaused?: boolean;
27
+ quotaResetInfo?: string;
28
+ transientServiceError?: boolean;
26
29
  }
27
30
  export interface StreamJsonEvent {
28
31
  event?: string;
@@ -165,6 +168,10 @@ export interface QuotaDetectionResult {
165
168
  * Detects whether routine runner stdout/stderr failed due to LLM quota exhaustion.
166
169
  */
167
170
  export declare function detectQuotaExceeded(output: string, stderr: string): QuotaDetectionResult;
171
+ /**
172
+ * Detects whether routine runner stdout/stderr failed due to transient upstream service unavailability (e.g. 503, handshake EOF).
173
+ */
174
+ export declare function detectTransientServiceError(output: string, stderr: string): boolean;
168
175
  /**
169
176
  * Reconciles a GitHub issue for local routine execution.
170
177
  * Closes the issue if success, leaves it open with needs-attention if failure.
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jonah-fleet",
3
- "version": "1.31.0",
3
+ "version": "1.31.2",
4
4
  "description": "Standalone autonomous agent fleet with Symphony orchestration, claim protocols, and continuous improvement loops",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -147,7 +147,7 @@ When conclusive measurement directives (`RECOMMENDATION: [PIVOT | DEPRECATE | IT
147
147
  ---
148
148
  [![Fleet](https://img.shields.io/badge/Fleet-Autonomous_Command-BBF65D?style=flat&logo=githubactions)](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})
149
149
 
150
- _Initialized autonomously by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})_"
150
+ _Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})_"
151
151
 
152
152
  STAGING_URL=$(gh issue create --title "$STAGING_TITLE" --body "$STAGING_BODY" --label "routine:product-planning,status:staging")
153
153
  STAGING_ISSUE_NUMBER=$(echo "$STAGING_URL" | grep -oE '[0-9]+$')
@@ -151,7 +151,7 @@ For the surfaces being audited:
151
151
  ---
152
152
  [![Fleet](https://img.shields.io/badge/Fleet-Autonomous_Command-BBF65D?style=flat&logo=githubactions)](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})
153
153
 
154
- _Initialized autonomously by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})_"
154
+ _Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})_"
155
155
 
156
156
  STAGING_URL=$(gh issue create --title "$STAGING_TITLE" --body "$STAGING_BODY" --label "routine:product-planning,status:staging")
157
157
  STAGING_ISSUE_NUMBER=$(echo "$STAGING_URL" | grep -oE '[0-9]+$')
@@ -20,7 +20,7 @@ This routine runs in two modes: **Propose** (scheduled cron sweep / unapproved f
20
20
 
21
21
  In **Propose mode**, SUCCESS requires:
22
22
  - [ ] Located or initialized the active open staging issue (`routine:product-planning`, `status:staging`) and ingested all accumulated comment directives streamed by `analytics-review` and `design-review`
23
- - [ ] Read current roadmap, domain documentation, closed measurement trackers across the trailing cycle lookback window (`closed:>=$(date -u -d '16 days ago' +%Y-%m-%d)`), recent analytics reviews (`routine:analytics-review`), and the latest open `🎨 Design Review` issue / recent design-review routine run issues
23
+ - [ ] Read current roadmap, domain documentation, closed measurement trackers across the trailing cycle lookback window (`closed:>=$(date -u -d '16 days ago' +%Y-%m-%d)`), recent analytics reviews (`routine:analytics-review`), and recent design-review routine run issues (`routine:design-review`)
24
24
  - [ ] Performed Feature Pruning & Deprecation Audit: evaluated shipped features, measurement outcomes (<2% user adoption or >50% failure rate), and Design Review pruning/clutter directives, drafting deprecation, removal, or simplification proposals
25
25
  - [ ] Synthesized all accumulated directives into exactly one dated staging issue (`πŸ—ΊοΈ Product Plan β€” {date}`) containing:
26
26
  - All relevant well-scoped proposals (Summary/Tasks/Why/Complexity) warranted by evidence, covering additions, pivots, or deprecations (the operator owns deciding which proposals get promoted)
@@ -226,7 +226,7 @@ jobs:
226
226
  set -e
227
227
 
228
228
  if [ "$AGY_EXIT_CODE" -ne 0 ]; then
229
- if grep -qiE "Individual quota reached|quota reached" /tmp/agy.log; then
229
+ if grep -qiE "Individual quota reached|quota reached|RESOURCE_EXHAUSTED|code 429|Resource has been exhausted|rate_limit_exceeded" /tmp/agy.log; then
230
230
  RESET_INFO=$(grep -oE "Resets in [^.]+" /tmp/agy.log | head -n 1 || echo "Resets in future window")
231
231
  echo "QUOTA_PAUSED=true" >> "$GITHUB_ENV"
232
232
  echo "QUOTA_RESET_INFO=$RESET_INFO" >> "$GITHUB_ENV"
@@ -236,7 +236,7 @@ jobs:
236
236
  set -e
237
237
 
238
238
  if [ "$AGY_EXIT_CODE" -ne 0 ]; then
239
- if grep -qiE "Individual quota reached|quota reached" /tmp/agy.log; then
239
+ if grep -qiE "Individual quota reached|quota reached|RESOURCE_EXHAUSTED|code 429|Resource has been exhausted|rate_limit_exceeded" /tmp/agy.log; then
240
240
  RESET_INFO=$(grep -oE "Resets in [^.]+" /tmp/agy.log | head -n 1 || echo "Resets in future window")
241
241
  echo "QUOTA_PAUSED=true" >> "$GITHUB_ENV"
242
242
  echo "QUOTA_RESET_INFO=$RESET_INFO" >> "$GITHUB_ENV"
@@ -186,7 +186,7 @@ jobs:
186
186
  set -e
187
187
 
188
188
  if [ "$AGY_EXIT_CODE" -ne 0 ]; then
189
- if grep -qiE "Individual quota reached|quota reached" /tmp/agy.log; then
189
+ if grep -qiE "Individual quota reached|quota reached|RESOURCE_EXHAUSTED|code 429|Resource has been exhausted|rate_limit_exceeded" /tmp/agy.log; then
190
190
  RESET_INFO=$(grep -oE "Resets in [^.]+" /tmp/agy.log | head -n 1 || echo "Resets in future window")
191
191
  echo "QUOTA_PAUSED=true" >> "$GITHUB_ENV"
192
192
  echo "QUOTA_RESET_INFO=$RESET_INFO" >> "$GITHUB_ENV"
@@ -171,7 +171,7 @@ jobs:
171
171
  set -e
172
172
 
173
173
  if [ "$AGY_EXIT_CODE" -ne 0 ]; then
174
- if grep -qiE "Individual quota reached|quota reached" /tmp/agy.log; then
174
+ if grep -qiE "Individual quota reached|quota reached|RESOURCE_EXHAUSTED|code 429|Resource has been exhausted|rate_limit_exceeded" /tmp/agy.log; then
175
175
  RESET_INFO=$(grep -oE "Resets in [^.]+" /tmp/agy.log | head -n 1 || echo "Resets in future window")
176
176
  echo "QUOTA_PAUSED=true" >> "$GITHUB_ENV"
177
177
  echo "QUOTA_RESET_INFO=$RESET_INFO" >> "$GITHUB_ENV"
@@ -186,7 +186,7 @@ jobs:
186
186
  set -e
187
187
 
188
188
  if [ "$AGY_EXIT_CODE" -ne 0 ]; then
189
- if grep -qiE "Individual quota reached|quota reached" /tmp/agy.log; then
189
+ if grep -qiE "Individual quota reached|quota reached|RESOURCE_EXHAUSTED|code 429|Resource has been exhausted|rate_limit_exceeded" /tmp/agy.log; then
190
190
  RESET_INFO=$(grep -oE "Resets in [^.]+" /tmp/agy.log | head -n 1 || echo "Resets in future window")
191
191
  echo "QUOTA_PAUSED=true" >> "$GITHUB_ENV"
192
192
  echo "QUOTA_RESET_INFO=$RESET_INFO" >> "$GITHUB_ENV"
@@ -186,7 +186,7 @@ jobs:
186
186
  set -e
187
187
 
188
188
  if [ "$AGY_EXIT_CODE" -ne 0 ]; then
189
- if grep -qiE "Individual quota reached|quota reached" /tmp/agy.log; then
189
+ if grep -qiE "Individual quota reached|quota reached|RESOURCE_EXHAUSTED|code 429|Resource has been exhausted|rate_limit_exceeded" /tmp/agy.log; then
190
190
  RESET_INFO=$(grep -oE "Resets in [^.]+" /tmp/agy.log | head -n 1 || echo "Resets in future window")
191
191
  echo "QUOTA_PAUSED=true" >> "$GITHUB_ENV"
192
192
  echo "QUOTA_RESET_INFO=$RESET_INFO" >> "$GITHUB_ENV"
@@ -234,7 +234,7 @@ jobs:
234
234
  set -e
235
235
 
236
236
  if [ "$AGY_EXIT_CODE" -ne 0 ]; then
237
- if grep -qiE "Individual quota reached|quota reached" /tmp/agy.log; then
237
+ if grep -qiE "Individual quota reached|quota reached|RESOURCE_EXHAUSTED|code 429|Resource has been exhausted|rate_limit_exceeded" /tmp/agy.log; then
238
238
  RESET_INFO=$(grep -oE "Resets in [^.]+" /tmp/agy.log | head -n 1 || echo "Resets in future window")
239
239
  echo "QUOTA_PAUSED=true" >> "$GITHUB_ENV"
240
240
  echo "QUOTA_RESET_INFO=$RESET_INFO" >> "$GITHUB_ENV"
@@ -195,7 +195,7 @@ jobs:
195
195
  set -e
196
196
 
197
197
  if [ "$AGY_EXIT_CODE" -ne 0 ]; then
198
- if grep -qiE "Individual quota reached|quota reached" /tmp/agy.log; then
198
+ if grep -qiE "Individual quota reached|quota reached|RESOURCE_EXHAUSTED|code 429|Resource has been exhausted|rate_limit_exceeded" /tmp/agy.log; then
199
199
  RESET_INFO=$(grep -oE "Resets in [^.]+" /tmp/agy.log | head -n 1 || echo "Resets in future window")
200
200
  echo "QUOTA_PAUSED=true" >> "$GITHUB_ENV"
201
201
  echo "QUOTA_RESET_INFO=$RESET_INFO" >> "$GITHUB_ENV"
@@ -191,7 +191,7 @@ jobs:
191
191
  set -e
192
192
 
193
193
  if [ "$AGY_EXIT_CODE" -ne 0 ]; then
194
- if grep -qiE "Individual quota reached|quota reached" /tmp/agy.log; then
194
+ if grep -qiE "Individual quota reached|quota reached|RESOURCE_EXHAUSTED|code 429|Resource has been exhausted|rate_limit_exceeded" /tmp/agy.log; then
195
195
  RESET_INFO=$(grep -oE "Resets in [^.]+" /tmp/agy.log | head -n 1 || echo "Resets in future window")
196
196
  echo "QUOTA_PAUSED=true" >> "$GITHUB_ENV"
197
197
  echo "QUOTA_RESET_INFO=$RESET_INFO" >> "$GITHUB_ENV"
@@ -221,7 +221,7 @@ jobs:
221
221
  set -e
222
222
 
223
223
  if [ "$AGY_EXIT_CODE" -ne 0 ]; then
224
- if grep -qiE "Individual quota reached|quota reached" /tmp/agy.log; then
224
+ if grep -qiE "Individual quota reached|quota reached|RESOURCE_EXHAUSTED|code 429|Resource has been exhausted|rate_limit_exceeded" /tmp/agy.log; then
225
225
  RESET_INFO=$(grep -oE "Resets in [^.]+" /tmp/agy.log | head -n 1 || echo "Resets in future window")
226
226
  echo "QUOTA_PAUSED=true" >> "$GITHUB_ENV"
227
227
  echo "QUOTA_RESET_INFO=$RESET_INFO" >> "$GITHUB_ENV"
@@ -299,7 +299,7 @@ jobs:
299
299
  set -e
300
300
 
301
301
  if [ "$AGY_EXIT_CODE" -ne 0 ]; then
302
- if grep -qiE "Individual quota reached|quota reached" /tmp/agy.log; then
302
+ if grep -qiE "Individual quota reached|quota reached|RESOURCE_EXHAUSTED|code 429|Resource has been exhausted|rate_limit_exceeded" /tmp/agy.log; then
303
303
  RESET_INFO=$(grep -oE "Resets in [^.]+" /tmp/agy.log | head -n 1 || echo "Resets in future window")
304
304
  echo "QUOTA_PAUSED=true" >> "$GITHUB_ENV"
305
305
  echo "QUOTA_RESET_INFO=$RESET_INFO" >> "$GITHUB_ENV"