@flowdesk/core 0.1.13 → 0.1.14

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/README.md CHANGED
@@ -12,7 +12,7 @@ never claims `realOpenCodeDispatch`, `providerCall`, `runtimeExecution`,
12
12
  ## Install
13
13
 
14
14
  ```bash
15
- npm install @flowdesk/core@^0.1.8
15
+ npm install @flowdesk/core@^0.1.14
16
16
  ```
17
17
 
18
18
  ## Highlights
@@ -2,7 +2,7 @@ import type { FlowDeskSessionEvidenceReloadResultV1 } from "./session-evidence.j
2
2
  export declare const FLOWDESK_LANE_HEARTBEAT_DEFAULT_LATE_MS: number;
3
3
  export declare const FLOWDESK_LANE_HEARTBEAT_DEFAULT_STALL_MS: number;
4
4
  export declare const FLOWDESK_LANE_HEARTBEAT_MIN_LATE_MS = 10000;
5
- export type FlowDeskLaneStallClassificationV1 = "progressing_normal" | "progressing_late" | "stalled" | "terminal" | "unknown";
5
+ export type FlowDeskLaneStallClassificationV1 = "inconsistent_finalizing_without_terminal" | "progressing_normal" | "progressing_late" | "stalled" | "terminal" | "unknown";
6
6
  export interface FlowDeskLaneStallProjectionEntryV1 {
7
7
  workflowId: string;
8
8
  laneId: string;
@@ -29,6 +29,7 @@ export interface FlowDeskLaneStallProjectionResultV1 {
29
29
  totalActiveLanes: number;
30
30
  totalLateLanes: number;
31
31
  totalStalledLanes: number;
32
+ totalInconsistentLanes: number;
32
33
  totalTerminalLanes: number;
33
34
  worstClassification: FlowDeskLaneStallClassificationV1;
34
35
  entries: FlowDeskLaneStallProjectionEntryV1[];
@@ -1 +1 @@
1
- {"version":3,"file":"lane-stall-projection.d.ts","sourceRoot":"","sources":["../src/lane-stall-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,qCAAqC,EACrC,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,uCAAuC,QAAgB,CAAC;AACrE,eAAO,MAAM,wCAAwC,QAAgB,CAAC;AACtE,eAAO,MAAM,mCAAmC,QAAS,CAAC;AAsB1D,MAAM,MAAM,iCAAiC,GAC1C,oBAAoB,GACpB,kBAAkB,GAClB,SAAS,GACT,UAAU,GACV,SAAS,CAAC;AAEb,MAAM,WAAW,kCAAkC;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,iCAAiC,CAAC;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,SAAS,CACvB,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,wBAAwB,CAC1B,EAAE,CAAC;CACJ;AAED,MAAM,WAAW,mCAAmC;IACnD,cAAc,EAAE,mCAAmC,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,iCAAiC,CAAC;IACvD,OAAO,EAAE,kCAAkC,EAAE,CAAC;CAC9C;AAgQD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,qCAAqC,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,mCAAmC,CAkHtC"}
1
+ {"version":3,"file":"lane-stall-projection.d.ts","sourceRoot":"","sources":["../src/lane-stall-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,qCAAqC,EACrC,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,uCAAuC,QAAgB,CAAC;AACrE,eAAO,MAAM,wCAAwC,QAAgB,CAAC;AACtE,eAAO,MAAM,mCAAmC,QAAS,CAAC;AAsB1D,MAAM,MAAM,iCAAiC,GAC1C,0CAA0C,GAC1C,oBAAoB,GACpB,kBAAkB,GAClB,SAAS,GACT,UAAU,GACV,SAAS,CAAC;AAEb,MAAM,WAAW,kCAAkC;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,iCAAiC,CAAC;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,SAAS,CACvB,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,wBAAwB,CAC1B,EAAE,CAAC;CACJ;AAED,MAAM,WAAW,mCAAmC;IACnD,cAAc,EAAE,mCAAmC,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,iCAAiC,CAAC;IACvD,OAAO,EAAE,kCAAkC,EAAE,CAAC;CAC9C;AA4SD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,qCAAqC,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,mCAAmC,CAqItC"}
@@ -73,6 +73,9 @@ function isLifecycleEntry(entry) {
73
73
  function isHeartbeatEntry(entry) {
74
74
  return entry.evidenceClass === "lane_heartbeat";
75
75
  }
76
+ function isInconsistencyEntry(entry) {
77
+ return entry.evidenceClass === "agent_task_inconsistency";
78
+ }
76
79
  function lifecycleSnapshotFromEntry(entry, workflowId) {
77
80
  const record = entry.record;
78
81
  const laneId = getStringField(record, "lane_id");
@@ -135,6 +138,32 @@ function pickLatestLifecyclePerLane(reload, workflowId) {
135
138
  }
136
139
  return latestByLane;
137
140
  }
141
+ function pickFinalizingWithoutTerminalInconsistencies(reload) {
142
+ const selected = new Map();
143
+ for (const entry of reload.entries) {
144
+ if (!isInconsistencyEntry(entry))
145
+ continue;
146
+ if (getStringField(entry.record, "inconsistency_kind") !== "finalizing_without_terminal")
147
+ continue;
148
+ const laneId = getStringField(entry.record, "lane_id");
149
+ if (laneId === undefined)
150
+ continue;
151
+ const observedAt = getStringField(entry.record, "observed_at");
152
+ const observedAtMs = observedAt === undefined ? 0 : Date.parse(observedAt);
153
+ const snapshot = {
154
+ evidenceId: entry.evidenceId,
155
+ observedAt,
156
+ observedAtMs: Number.isFinite(observedAtMs) ? observedAtMs : 0,
157
+ };
158
+ const previous = selected.get(laneId);
159
+ if (previous === undefined ||
160
+ snapshot.observedAtMs > previous.observedAtMs ||
161
+ (snapshot.observedAtMs === previous.observedAtMs && snapshot.evidenceId > previous.evidenceId)) {
162
+ selected.set(laneId, snapshot);
163
+ }
164
+ }
165
+ return selected;
166
+ }
138
167
  function classify(snapshot, observedAtMs, lateMs, stallMs) {
139
168
  if (TERMINAL_LIFECYCLE_STATES.has(snapshot.state))
140
169
  return {
@@ -163,6 +192,14 @@ function classify(snapshot, observedAtMs, lateMs, stallMs) {
163
192
  };
164
193
  }
165
194
  function safeActionsFor(classification) {
195
+ if (classification === "inconsistent_finalizing_without_terminal")
196
+ return [
197
+ "/flowdesk-status",
198
+ "/flowdesk-abort",
199
+ "/flowdesk-retry",
200
+ "/flowdesk-doctor",
201
+ "/flowdesk-export-debug",
202
+ ];
166
203
  if (classification === "stalled")
167
204
  return [
168
205
  "/flowdesk-status",
@@ -190,6 +227,8 @@ function failureHintFor(state) {
190
227
  return undefined;
191
228
  }
192
229
  function projectionWorstClassification(entries) {
230
+ if (entries.some((entry) => entry.classification === "inconsistent_finalizing_without_terminal"))
231
+ return "inconsistent_finalizing_without_terminal";
193
232
  if (entries.some((entry) => entry.classification === "stalled"))
194
233
  return "stalled";
195
234
  if (entries.some((entry) => entry.classification === "progressing_late"))
@@ -217,18 +256,26 @@ export function projectFlowDeskLaneStallV1(input) {
217
256
  totalActiveLanes: 0,
218
257
  totalLateLanes: 0,
219
258
  totalStalledLanes: 0,
259
+ totalInconsistentLanes: 0,
220
260
  totalTerminalLanes: 0,
221
261
  worstClassification: "unknown",
222
262
  entries: [],
223
263
  };
224
264
  const latestByLane = pickLatestLifecyclePerLane(input.reload, input.workflowId);
265
+ const inconsistenciesByLane = pickFinalizingWithoutTerminalInconsistencies(input.reload);
225
266
  const entries = [];
226
267
  let totalActive = 0;
227
268
  let totalLate = 0;
228
269
  let totalStalled = 0;
270
+ let totalInconsistent = 0;
229
271
  let totalTerminal = 0;
230
272
  for (const snapshot of latestByLane.values()) {
231
- const { classification, secondsSinceLastSignal } = classify(snapshot, observedAtMs, lateThresholdMs, stallThresholdMs);
273
+ const base = classify(snapshot, observedAtMs, lateThresholdMs, stallThresholdMs);
274
+ const inconsistency = inconsistenciesByLane.get(snapshot.laneId);
275
+ const classification = inconsistency === undefined
276
+ ? base.classification
277
+ : "inconsistent_finalizing_without_terminal";
278
+ const secondsSinceLastSignal = base.secondsSinceLastSignal;
232
279
  if (classification === "progressing_normal")
233
280
  totalActive += 1;
234
281
  if (classification === "progressing_late") {
@@ -239,6 +286,8 @@ export function projectFlowDeskLaneStallV1(input) {
239
286
  totalActive += 1;
240
287
  totalStalled += 1;
241
288
  }
289
+ if (classification === "inconsistent_finalizing_without_terminal")
290
+ totalInconsistent += 1;
242
291
  if (classification === "terminal")
243
292
  totalTerminal += 1;
244
293
  const failureHint = failureHintFor(snapshot.state);
@@ -262,7 +311,7 @@ export function projectFlowDeskLaneStallV1(input) {
262
311
  classification,
263
312
  lifecycleState: snapshot.state,
264
313
  lastSignalAt: snapshot.updatedAt,
265
- lastSignalEvidenceId: snapshot.evidenceId,
314
+ lastSignalEvidenceId: inconsistency?.evidenceId ?? snapshot.evidenceId,
266
315
  lastSignalSource: snapshot.signalSource,
267
316
  ...(snapshot.heartbeatSeq === undefined
268
317
  ? {}
@@ -277,18 +326,25 @@ export function projectFlowDeskLaneStallV1(input) {
277
326
  ? {}
278
327
  : { secondsPastExpectedNextHeartbeat }),
279
328
  secondsSinceLastSignal,
280
- abnormal: classification === "stalled" || classification === "progressing_late",
281
- ...(failureHint === undefined ? {} : { failureHint }),
329
+ abnormal: classification === "stalled" ||
330
+ classification === "progressing_late" ||
331
+ classification === "inconsistent_finalizing_without_terminal",
332
+ ...(classification === "inconsistent_finalizing_without_terminal"
333
+ ? { failureHint: "finalizing_without_terminal" }
334
+ : failureHint === undefined
335
+ ? {}
336
+ : { failureHint }),
282
337
  safeNextActions: safeActionsFor(classification),
283
338
  });
284
339
  }
285
340
  entries.sort((a, b) => {
286
341
  const order = {
287
- stalled: 0,
288
- progressing_late: 1,
289
- progressing_normal: 2,
290
- terminal: 3,
291
- unknown: 4,
342
+ inconsistent_finalizing_without_terminal: 0,
343
+ stalled: 1,
344
+ progressing_late: 2,
345
+ progressing_normal: 3,
346
+ terminal: 4,
347
+ unknown: 5,
292
348
  };
293
349
  const byOrder = order[a.classification] - order[b.classification];
294
350
  if (byOrder !== 0)
@@ -305,8 +361,10 @@ export function projectFlowDeskLaneStallV1(input) {
305
361
  totalActiveLanes: totalActive,
306
362
  totalLateLanes: totalLate,
307
363
  totalStalledLanes: totalStalled,
364
+ totalInconsistentLanes: totalInconsistent,
308
365
  totalTerminalLanes: totalTerminal,
309
366
  worstClassification: projectionWorstClassification(entries),
310
367
  entries,
311
368
  };
312
369
  }
370
+ //# sourceMappingURL=lane-stall-projection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lane-stall-projection.js","sourceRoot":"","sources":["../src/lane-stall-projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lane-stall-projection.js","sourceRoot":"","sources":["../src/lane-stall-projection.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,7 @@ export interface FlowDeskProviderUsageCollectorResultV1 {
60
60
  providerHealthSnapshot: FlowDeskProviderHealthSnapshotV1;
61
61
  usageAuthorityEvidence?: FlowDeskManagedDispatchBetaUsageAuthorityEvidenceV1;
62
62
  bucketSnapshot?: FlowDeskProviderUsageCollectorBucketSnapshotV1;
63
+ additionalSnapshots?: readonly FlowDeskUsageSnapshotV1[];
63
64
  redacted_reason?: string;
64
65
  }
65
66
  export declare function collectManagedDispatchBetaUsageEvidenceV1(target: FlowDeskProviderUsageCollectorTargetV1, acquisition: FlowDeskProviderUsageAcquisitionConfigV1 | undefined, options?: FlowDeskProviderUsageCollectorOptionsV1): Promise<FlowDeskProviderUsageCollectorResultV1>;
@@ -1 +1 @@
1
- {"version":3,"file":"provider-usage-collector.d.ts","sourceRoot":"","sources":["../src/provider-usage-collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-usage-collector.d.ts","sourceRoot":"","sources":["../src/provider-usage-collector.ts"],"names":[],"mappings":"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"}
@@ -22,8 +22,10 @@ export async function collectManagedDispatchBetaUsageEvidenceV1(target, acquisit
22
22
  : refusedCollection(target.providerFamily, target.modelFamily, "provider usage acquisition is disabled");
23
23
  const bucket = collection.bucket;
24
24
  const resetAt = bucket?.resetAt;
25
- const usageOk = bucket !== undefined && bucket.remaining !== null && bucket.remaining > 0 && resetAt !== undefined && bucket.uncertainty === "available";
26
- const usageSnapshot = usageOk
25
+ const remaining = bucket?.remaining ?? null;
26
+ const usageKnown = bucket !== undefined && remaining !== null && resetAt !== undefined && bucket.uncertainty === "available";
27
+ const usageOk = usageKnown && remaining > 0;
28
+ const usageSnapshot = usageKnown
27
29
  ? {
28
30
  schema_version: "flowdesk.usage_snapshot.v1",
29
31
  snapshot_id: target.usageSnapshotId,
@@ -32,8 +34,8 @@ export async function collectManagedDispatchBetaUsageEvidenceV1(target, acquisit
32
34
  freshness: "fresh",
33
35
  freshness_ttl: ttlMinutes,
34
36
  reset_time: resetAt,
35
- reset_bucket: bucket.resetBucket,
36
- dispatchability: "dispatchable",
37
+ reset_bucket: remaining === 0 ? `0% ${bucket.resetBucket}` : bucket.resetBucket,
38
+ dispatchability: usageOk ? "dispatchable" : "non_dispatchable",
37
39
  uncertainty_flags: [],
38
40
  source_ref: target.sourceRef
39
41
  }
@@ -62,6 +64,28 @@ export async function collectManagedDispatchBetaUsageEvidenceV1(target, acquisit
62
64
  uncertainty: bucket.uncertainty
63
65
  }
64
66
  : undefined;
67
+ const additionalSnapshots = [];
68
+ for (const addBucket of collection.additionalBuckets ?? []) {
69
+ const addResetAt = addBucket.resetAt;
70
+ const addRemaining = addBucket.remaining;
71
+ const addKnown = addRemaining !== null && addResetAt !== undefined && addBucket.uncertainty === "available";
72
+ const addOk = addKnown && addRemaining > 0;
73
+ additionalSnapshots.push(addKnown
74
+ ? {
75
+ schema_version: "flowdesk.usage_snapshot.v1",
76
+ snapshot_id: `${target.usageSnapshotId}-${addBucket.resetBucket}`,
77
+ provider_family: target.providerFamily,
78
+ model_family: target.modelFamily,
79
+ freshness: "fresh",
80
+ freshness_ttl: ttlMinutes,
81
+ reset_time: addResetAt,
82
+ reset_bucket: addBucket.remaining !== null ? `${addBucket.remaining}% ${addBucket.resetBucket}` : addBucket.resetBucket,
83
+ dispatchability: addOk ? "dispatchable" : "non_dispatchable",
84
+ uncertainty_flags: [],
85
+ source_ref: target.sourceRef,
86
+ }
87
+ : unknownUsageSnapshot({ ...target, usageSnapshotId: `${target.usageSnapshotId}-${addBucket.resetBucket}` }, { ...collection, bucket: addBucket }, ttlMinutes));
88
+ }
65
89
  if (!usageOk || collection.authProfileRef === undefined || collection.authEvidenceRef === undefined || collection.credentialScopeRef === undefined || collection.accountBoundaryRef === undefined || collection.quotaEvidenceRef === undefined) {
66
90
  return {
67
91
  ok: false,
@@ -69,6 +93,7 @@ export async function collectManagedDispatchBetaUsageEvidenceV1(target, acquisit
69
93
  usageSnapshot,
70
94
  providerHealthSnapshot,
71
95
  ...(bucketSnapshot !== undefined ? { bucketSnapshot } : {}),
96
+ ...(additionalSnapshots.length > 0 ? { additionalSnapshots } : {}),
72
97
  redacted_reason: collection.redactedReason ?? "usage evidence is unavailable"
73
98
  };
74
99
  }
@@ -78,6 +103,7 @@ export async function collectManagedDispatchBetaUsageEvidenceV1(target, acquisit
78
103
  usageSnapshot,
79
104
  providerHealthSnapshot,
80
105
  ...(bucketSnapshot !== undefined ? { bucketSnapshot } : {}),
106
+ ...(additionalSnapshots.length > 0 ? { additionalSnapshots } : {}),
81
107
  usageAuthorityEvidence: {
82
108
  schema_version: "flowdesk.managed_dispatch_beta.usage_authority_evidence.v1",
83
109
  authority_ref: target.authorityRef,
@@ -135,7 +161,10 @@ async function collectClaudeUsage(acquisition, options, observedAt) {
135
161
  return refusedCollection("claude", "claude", "claude usage endpoint refused");
136
162
  const payload = JSON.parse(await response.text());
137
163
  const buckets = claudeOAuthBuckets(payload, observedAt, defaults());
138
- return availableCollection("claude", "claude", "claude-oauth", "claude-oauth", firstDispatchableBucket(buckets) ?? buckets[0] ?? defaults()[0]);
164
+ const primaryBucket = firstDispatchableBucket(buckets) ?? buckets[0] ?? defaults()[0];
165
+ const additionalBuckets = buckets.filter((b) => b !== primaryBucket);
166
+ const collection = availableCollection("claude", "claude", "claude-oauth", "claude-oauth", primaryBucket);
167
+ return { ...collection, additionalBuckets };
139
168
  }
140
169
  catch {
141
170
  return refusedCollection("claude", "claude", "claude usage collection failed");
@@ -165,8 +194,11 @@ async function collectCodexUsage(acquisition, options, observedAt) {
165
194
  });
166
195
  if (!response.ok)
167
196
  return refusedCollection("openai", "gpt", "codex usage endpoint refused");
168
- const bucketValue = codexLiveBucket(JSON.parse(await response.text()), observedAt);
169
- return availableCollection("openai", "gpt", "codex-live", firstNonEmpty(accountId, "codex-account"), bucketValue);
197
+ const buckets = codexLiveBuckets(JSON.parse(await response.text()), observedAt);
198
+ const primaryBucket = firstDispatchableBucket(buckets) ?? buckets[0] ?? bucket("openai-gpt-5h", "%", null, undefined, "unknown");
199
+ const additionalBuckets = buckets.filter((b) => b !== primaryBucket);
200
+ const collection = availableCollection("openai", "gpt", "codex-live", firstNonEmpty(accountId, "codex-account"), primaryBucket);
201
+ return { ...collection, additionalBuckets };
170
202
  }
171
203
  catch {
172
204
  return refusedCollection("openai", "gpt", "codex usage collection failed");
@@ -222,8 +254,11 @@ async function collectGeminiUsage(acquisition, options, observedAt) {
222
254
  if (!projectId)
223
255
  return refusedCollection("gemini", "gemini", "gemini project boundary is missing");
224
256
  const quota = await codeAssistPost("retrieveUserQuota", { project: projectId }, accessToken, fetcher);
225
- const bucketValue = geminiQuotaBucket(quota, observedAt);
226
- return availableCollection("gemini", "gemini", "gemini-code-assist", projectId, bucketValue);
257
+ const buckets = geminiQuotaBuckets(quota, observedAt);
258
+ const primaryBucket = firstDispatchableBucket(buckets) ?? firstKnownBucket(buckets) ?? buckets[0] ?? bucket("gemini-unknown-5h", "%", null, undefined, "unknown");
259
+ const additionalBuckets = buckets.filter((b) => b !== primaryBucket);
260
+ const collection = availableCollection("gemini", "gemini", "gemini-code-assist", projectId, primaryBucket);
261
+ return { ...collection, additionalBuckets };
227
262
  }
228
263
  catch {
229
264
  return refusedCollection("gemini", "gemini", "gemini usage collection failed");
@@ -358,12 +393,15 @@ function claudeUsageBucket(resetBucket, defaultBucket, value, observedAt) {
358
393
  const calculated = calculateRemainingUsagePercent({ utilizationPercent: numberField(rawBucket, "utilization"), resetAt: stringField(rawBucket, "resets_at"), observedAt, expiredResetBehavior: "reset_to_full" });
359
394
  return bucket(resetBucket, "%", calculated.remaining, calculated.reset_at, calculated.uncertainty);
360
395
  }
361
- function codexLiveBucket(payload, observedAt) {
396
+ function codexLiveBuckets(payload, observedAt) {
362
397
  const record = isRecord(payload) ? payload : {};
363
398
  const rateLimitPayload = isRecord(record.rate_limit_status) ? record.rate_limit_status : record;
364
399
  const details = firstRecord(rateLimitPayload.rate_limit, record.rate_limit);
365
400
  const primary = firstRecord(details?.primary_window, details?.primary, details);
366
- return codexRateLimitBucket("openai-gpt-5h", primary, observedAt);
401
+ const secondary = isRecord(details?.secondary_window) ? details.secondary_window : undefined;
402
+ const primaryBucket = codexRateLimitBucket("openai-gpt-5h", primary, observedAt);
403
+ const secondaryBucket = secondary !== undefined ? codexRateLimitBucket("openai-weekly", secondary, observedAt) : undefined;
404
+ return secondaryBucket !== undefined ? [primaryBucket, secondaryBucket] : [primaryBucket];
367
405
  }
368
406
  function codexRateLimitBucket(resetBucket, rateLimit, observedAt) {
369
407
  if (!rateLimit)
@@ -375,9 +413,9 @@ function codexRateLimitBucket(resetBucket, rateLimit, observedAt) {
375
413
  const calculated = calculateRemainingUsagePercent({ remainingPercent: reportedRemainingPercent, usedPercent, resetAtUnixSeconds: resetUnix, resetAfterSeconds, observedAt, expiredResetBehavior: "stale" });
376
414
  return bucket(resetBucket, "%", calculated.remaining, calculated.reset_at, calculated.uncertainty);
377
415
  }
378
- function geminiQuotaBucket(quota, observedAt) {
416
+ function geminiQuotaBuckets(quota, observedAt) {
379
417
  const quotaBuckets = Array.isArray(quota.buckets) ? quota.buckets.filter(isRecord) : [];
380
- let selected;
418
+ const selectedByBucket = new Map();
381
419
  for (const quotaBucket of quotaBuckets) {
382
420
  const tokenType = stringField(quotaBucket, "tokenType");
383
421
  if (tokenType && tokenType !== "REQUESTS")
@@ -397,20 +435,38 @@ function geminiQuotaBucket(quota, observedAt) {
397
435
  resetBucket = "gemini-pro-weekly";
398
436
  }
399
437
  else {
400
- resetBucket = "gemini-pro-5h";
438
+ resetBucket = "gemini-pro-daily";
401
439
  }
402
440
  }
403
441
  if (!resetBucket)
404
442
  continue;
405
443
  const remainingPercent = calculateRemainingUsagePercent({ remainingFraction: numberField(quotaBucket, "remainingFraction"), remainingAmount: stringField(quotaBucket, "remainingAmount"), resetAt: stringField(quotaBucket, "resetTime"), observedAt, expiredResetBehavior: "reset_to_full" });
406
444
  const candidate = bucket(resetBucket, "%", remainingPercent.remaining, remainingPercent.reset_at, remainingPercent.uncertainty);
407
- if (selected === undefined || selected.remaining === null || (candidate.remaining !== null && candidate.remaining < selected.remaining))
408
- selected = candidate;
445
+ const existing = selectedByBucket.get(resetBucket);
446
+ if (existing === undefined || existing.remaining === null || (candidate.remaining !== null && candidate.remaining < existing.remaining))
447
+ selectedByBucket.set(resetBucket, candidate);
409
448
  }
410
- return selected ?? bucket("gemini-unknown-5h", "%", null, undefined, "unknown");
449
+ const buckets = [...selectedByBucket.values()].sort((a, b) => geminiBucketRank(a.resetBucket) - geminiBucketRank(b.resetBucket));
450
+ return buckets.length > 0 ? buckets : [bucket("gemini-unknown-5h", "%", null, undefined, "unknown")];
451
+ }
452
+ function geminiBucketRank(resetBucket) {
453
+ if (resetBucket === "gemini-pro-daily")
454
+ return 0;
455
+ if (resetBucket === "gemini-pro-weekly")
456
+ return 1;
457
+ if (resetBucket === "gemini-flash-daily")
458
+ return 2;
459
+ if (resetBucket === "gemini-flash-lite-daily")
460
+ return 3;
461
+ return 99;
411
462
  }
412
463
  function firstDispatchableBucket(buckets) {
413
- return buckets.find((candidate) => candidate.remaining !== null && candidate.remaining > 0 && candidate.resetAt !== undefined && candidate.uncertainty === "available");
464
+ return buckets
465
+ .filter((candidate) => candidate.remaining !== null && candidate.remaining > 0 && candidate.resetAt !== undefined && candidate.uncertainty === "available")
466
+ .sort((a, b) => (a.remaining ?? Number.POSITIVE_INFINITY) - (b.remaining ?? Number.POSITIVE_INFINITY))[0];
467
+ }
468
+ function firstKnownBucket(buckets) {
469
+ return buckets.find((candidate) => candidate.remaining !== null && candidate.resetAt !== undefined && candidate.uncertainty === "available");
414
470
  }
415
471
  async function readClaudeOAuthCredentials(homeDir, filesystem, options) {
416
472
  const keychainCreds = readClaudeKeychainCredentials(options);
@@ -548,7 +604,7 @@ function calculateRemainingUsagePercent(input) {
548
604
  return { remaining: null, used: null, ...(resetAt ? { reset_at: resetAt } : {}), uncertainty: "unknown" };
549
605
  }
550
606
  function availableResult(remaining, used, resetAt) {
551
- return { remaining, used, ...(resetAt ? { reset_at: resetAt } : {}), uncertainty: remaining > 0 ? "available" : "insufficient" };
607
+ return { remaining, used, ...(resetAt ? { reset_at: resetAt } : {}), uncertainty: "available" };
552
608
  }
553
609
  function resolveResetAt(input, observedAt) {
554
610
  if (typeof input.resetAt === "string" && input.resetAt.trim() !== "") {