@brutalist/mcp 1.12.0 → 1.14.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.
Files changed (62) hide show
  1. package/README.md +57 -31
  2. package/dist/brutalist-server.js +9 -9
  3. package/dist/brutalist-server.js.map +1 -1
  4. package/dist/cli-adapters/agy-adapter.d.ts +30 -0
  5. package/dist/cli-adapters/agy-adapter.d.ts.map +1 -0
  6. package/dist/cli-adapters/agy-adapter.js +280 -0
  7. package/dist/cli-adapters/agy-adapter.js.map +1 -0
  8. package/dist/cli-adapters/claude-adapter.d.ts +12 -2
  9. package/dist/cli-adapters/claude-adapter.d.ts.map +1 -1
  10. package/dist/cli-adapters/claude-adapter.js +102 -18
  11. package/dist/cli-adapters/claude-adapter.js.map +1 -1
  12. package/dist/cli-adapters/codex-adapter.d.ts +18 -1
  13. package/dist/cli-adapters/codex-adapter.d.ts.map +1 -1
  14. package/dist/cli-adapters/codex-adapter.js +86 -3
  15. package/dist/cli-adapters/codex-adapter.js.map +1 -1
  16. package/dist/cli-adapters/index.d.ts +55 -13
  17. package/dist/cli-adapters/index.d.ts.map +1 -1
  18. package/dist/cli-adapters/index.js +2 -2
  19. package/dist/cli-adapters/index.js.map +1 -1
  20. package/dist/cli-agents.d.ts +6 -29
  21. package/dist/cli-agents.d.ts.map +1 -1
  22. package/dist/cli-agents.js +74 -181
  23. package/dist/cli-agents.js.map +1 -1
  24. package/dist/debate/debate-orchestrator.d.ts +2 -4
  25. package/dist/debate/debate-orchestrator.d.ts.map +1 -1
  26. package/dist/debate/debate-orchestrator.js.map +1 -1
  27. package/dist/domains/argument-space.d.ts +8 -8
  28. package/dist/domains/argument-space.js +3 -3
  29. package/dist/domains/argument-space.js.map +1 -1
  30. package/dist/domains/critic-persona.d.ts +2 -1
  31. package/dist/domains/critic-persona.d.ts.map +1 -1
  32. package/dist/domains/critic-persona.js.map +1 -1
  33. package/dist/handlers/tool-handler.js.map +1 -1
  34. package/dist/mcp-registry.d.ts +0 -6
  35. package/dist/mcp-registry.d.ts.map +1 -1
  36. package/dist/mcp-registry.js +0 -35
  37. package/dist/mcp-registry.js.map +1 -1
  38. package/dist/metrics/registry.d.ts +2 -2
  39. package/dist/metrics/registry.js +2 -2
  40. package/dist/metrics/types.d.ts +1 -1
  41. package/dist/metrics/types.js +1 -1
  42. package/dist/model-resolver.d.ts +1 -13
  43. package/dist/model-resolver.d.ts.map +1 -1
  44. package/dist/model-resolver.js +12 -7
  45. package/dist/model-resolver.js.map +1 -1
  46. package/dist/streaming/output-parser.d.ts +1 -1
  47. package/dist/streaming/output-parser.d.ts.map +1 -1
  48. package/dist/streaming/output-parser.js +0 -17
  49. package/dist/streaming/output-parser.js.map +1 -1
  50. package/dist/streaming/streaming-orchestrator.js +1 -1
  51. package/dist/streaming/streaming-orchestrator.js.map +1 -1
  52. package/dist/types/brutalist.d.ts +3 -3
  53. package/dist/types/brutalist.d.ts.map +1 -1
  54. package/dist/types/tool-config.d.ts +4 -4
  55. package/dist/types/tool-config.d.ts.map +1 -1
  56. package/dist/types/tool-config.js +7 -6
  57. package/dist/types/tool-config.js.map +1 -1
  58. package/package.json +4 -3
  59. package/dist/cli-adapters/gemini-adapter.d.ts +0 -63
  60. package/dist/cli-adapters/gemini-adapter.d.ts.map +0 -1
  61. package/dist/cli-adapters/gemini-adapter.js +0 -208
  62. package/dist/cli-adapters/gemini-adapter.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import type { StructuredLogger } from '../logger.js';
2
2
  import type { CLIAgentOptions } from '../cli-agents.js';
3
3
  import type { ModelResolver } from '../model-resolver.js';
4
- import type { CLIProvider, CLIBuilderConfig, CLIName } from './index.js';
4
+ import type { CLIProvider, CLIBuilderConfig, CLIName, DecodeResult } from './index.js';
5
5
  export declare class ClaudeAdapter implements CLIProvider {
6
6
  readonly name: CLIName;
7
7
  getConfig(): CLIBuilderConfig;
@@ -21,6 +21,16 @@ export declare class ClaudeAdapter implements CLIProvider {
21
21
  * Falls back to 'result' event if no assistant text was captured.
22
22
  */
23
23
  decodeOutput(rawOutput: string, args: string[], log?: StructuredLogger): string;
24
- private decodeClaudeStreamJson;
24
+ decode(stdout: string, _stderr: string, args: string[], log?: StructuredLogger): DecodeResult;
25
+ /**
26
+ * Structured decode of stream-json output.
27
+ *
28
+ * Refusal classification is keyed on `result.subtype` / `is_error` —
29
+ * the binary's own protocol-level signal. Quota classification looks
30
+ * at anchored Anthropic markers ONLY in the error-envelope `result`
31
+ * field (already scoped to a known-error pathway), never in the
32
+ * accumulated assistant text.
33
+ */
34
+ private decodeStream;
25
35
  }
26
36
  //# sourceMappingURL=claude-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-adapter.d.ts","sourceRoot":"","sources":["../../src/cli-adapters/claude-adapter.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAoFzE,qBAAa,aAAc,YAAW,WAAW;IAC/C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAY;IAElC,SAAS,IAAI,gBAAgB;IAIvB,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAI5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAqGF;;;;;;OAMG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAQ/E,OAAO,CAAC,sBAAsB;CAyH/B"}
1
+ {"version":3,"file":"claude-adapter.d.ts","sourceRoot":"","sources":["../../src/cli-adapters/claude-adapter.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAoFvF,qBAAa,aAAc,YAAW,WAAW;IAC/C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAY;IAElC,SAAS,IAAI,gBAAgB;IAIvB,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAI5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAqGF;;;;;;OAMG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAwB/E,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,CAAC,EAAE,gBAAgB,GACrB,YAAY;IASf;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY;CAyIrB"}
@@ -187,21 +187,56 @@ export class ClaudeAdapter {
187
187
  * Falls back to 'result' event if no assistant text was captured.
188
188
  */
189
189
  decodeOutput(rawOutput, args, log) {
190
- // Only decode if Claude was run with stream-json format
190
+ // Legacy text-only API. Preserves the pre-Phase-2 behavior matrix:
191
+ // - assistant text on `ok`
192
+ // - the redacted F8 marker when the decoder saw a structured
193
+ // error event (refusal, or `kind: 'error'` with reason
194
+ // `'unknown'` — the case that maps to "we saw a Claude error
195
+ // result event but couldn't classify it as quota")
196
+ // - '' for benign empty/malformed inputs so the orchestrator's
197
+ // legacy `if (decodedText) { finalOutput = decodedText }`
198
+ // fall-through preserves the raw-stdout pass-through path
199
+ //
200
+ // The orchestrator (cli-agents.ts) consumes `decode()` directly
201
+ // post-Phase-2 and never sees this shim. Kept for the three
202
+ // legacy proxies at cli-agents.ts:716-728 and characterization
203
+ // tests that pin the marker shape.
204
+ const result = this.decode(rawOutput, '', args, log);
205
+ if (result.kind === 'ok')
206
+ return result.text;
207
+ if (result.kind === 'refused')
208
+ return '[Claude Error] <redacted>';
209
+ if (result.kind === 'error' && result.reason === 'unknown') {
210
+ return '[Claude Error] <redacted>';
211
+ }
212
+ return '';
213
+ }
214
+ decode(stdout, _stderr, args, log) {
215
+ // Only structured-decode if Claude was run with stream-json format.
216
+ // Non-stream-json runs are pre-formatted text — pass through.
191
217
  if (!(args.includes('--output-format') && args.includes('stream-json'))) {
192
- return rawOutput;
218
+ return { kind: 'ok', text: stdout };
193
219
  }
194
- return this.decodeClaudeStreamJson(rawOutput, log ?? rootLogger);
220
+ return this.decodeStream(stdout, log ?? rootLogger);
195
221
  }
196
- decodeClaudeStreamJson(ndjsonOutput, log) {
222
+ /**
223
+ * Structured decode of stream-json output.
224
+ *
225
+ * Refusal classification is keyed on `result.subtype` / `is_error` —
226
+ * the binary's own protocol-level signal. Quota classification looks
227
+ * at anchored Anthropic markers ONLY in the error-envelope `result`
228
+ * field (already scoped to a known-error pathway), never in the
229
+ * accumulated assistant text.
230
+ */
231
+ decodeStream(ndjsonOutput, log) {
197
232
  if (!ndjsonOutput || !ndjsonOutput.trim()) {
198
233
  log.warn('decodeClaudeStreamJson: empty input');
199
- return '';
234
+ return { kind: 'error', reason: 'empty' };
200
235
  }
201
236
  const events = parseNDJSON(ndjsonOutput, log);
202
237
  if (events.length === 0) {
203
238
  log.warn('decodeClaudeStreamJson: no valid JSON events found in output');
204
- return '';
239
+ return { kind: 'error', reason: 'malformed' };
205
240
  }
206
241
  const textParts = [];
207
242
  let resultText = '';
@@ -215,8 +250,16 @@ export class ClaudeAdapter {
215
250
  // `CLIAgentResponse.output` field). Instead, we only track
216
251
  // whether an error was present and classify its shape via the
217
252
  // event subtype / is_error flag for metadata-only emission.
253
+ //
254
+ // Phase 2: the raw `result` value is still NOT logged or returned
255
+ // verbatim, but we DO inspect it locally to match anchored
256
+ // Anthropic quota markers — that classification then drives the
257
+ // DecodeResult.reason. The captured value never leaves this
258
+ // function; only the resulting `reason` enum and the subtype
259
+ // (already a static SDK enum) reach the caller.
218
260
  let errorPresent = false;
219
261
  let errorClass;
262
+ let errorEnvelopeText;
220
263
  for (const event of events) {
221
264
  if (typeof event !== 'object' || event === null)
222
265
  continue;
@@ -253,6 +296,13 @@ export class ClaudeAdapter {
253
296
  errorClass = subtype.length > 0
254
297
  ? subtype
255
298
  : (typedEvent.is_error ? 'is_error' : 'unknown');
299
+ // Capture the envelope text for LOCAL anchored-marker matching
300
+ // only. This variable stays inside `decodeStream` — it is not
301
+ // returned, not logged, and not exposed via DecodeResult.
302
+ const envelopeRaw = typedEvent.error ?? typedEvent.result;
303
+ if (typeof envelopeRaw === 'string') {
304
+ errorEnvelopeText = envelopeRaw;
305
+ }
256
306
  }
257
307
  else if (typedEvent.result) {
258
308
  resultText = typedEvent.result;
@@ -279,34 +329,68 @@ export class ClaudeAdapter {
279
329
  // never set), `control_response`, `control_cancel_request`,
280
330
  // `transcript_mirror`, and any future top-level types.
281
331
  }
282
- // Handle erroremit metadata only (F8). The raw error string is
283
- // intentionally never logged and never returned as decoded output.
332
+ // Structured refusalthe binary's own protocol-level signal said
333
+ // this turn errored. Classify quota vs. unknown using ONLY the
334
+ // error envelope (which never reaches the returned value), never
335
+ // the accumulated assistant text.
284
336
  if (errorPresent) {
337
+ const reason = classifyClaudeErrorReason(errorEnvelopeText);
285
338
  log.error('decodeClaudeStreamJson: Claude returned error result', {
286
339
  errorPresent: true,
287
340
  eventCount: events.length,
288
341
  errorClass: errorClass ?? 'unknown',
342
+ reason,
289
343
  });
290
- // Return a content-free marker. Callers see that decodedText is
291
- // truthy (non-empty) and propagate it to `finalOutput` — the
292
- // marker itself carries no sensitive content. A future iteration
293
- // can surface a structured adapter-error signal via a new
294
- // return shape; for now the marker keeps the existing string
295
- // return type intact with zero sensitive bytes.
296
- return '[Claude Error] <redacted>';
344
+ if (reason === 'quota') {
345
+ return { kind: 'refused', reason: 'quota', detail: errorClass };
346
+ }
347
+ return { kind: 'error', reason: 'unknown', detail: errorClass };
297
348
  }
298
349
  // Use accumulated assistant text if available, fall back to result event
299
350
  if (textParts.length > 0) {
300
- return textParts.join('\n\n');
351
+ return { kind: 'ok', text: textParts.join('\n\n') };
301
352
  }
302
353
  if (resultText) {
303
- return resultText;
354
+ return { kind: 'ok', text: resultText };
304
355
  }
305
356
  log.warn('decodeClaudeStreamJson: no text content found in stream-json output', {
306
357
  eventCount: events.length,
307
358
  eventTypes: events.map(e => e.type).filter(Boolean)
308
359
  });
309
- return '';
360
+ return { kind: 'error', reason: 'empty' };
310
361
  }
311
362
  }
363
+ /**
364
+ * Classify a Claude error-envelope string against anchored Anthropic
365
+ * quota markers. Operates only on the `result.result` / `result.error`
366
+ * field already known to be inside an error result event — never on
367
+ * assistant prose. Returns 'quota' for known quota markers, 'unknown'
368
+ * otherwise so the caller can decide between `refused` and `error` kinds.
369
+ *
370
+ * Anchored markers chosen against Anthropic's stable error vocabulary:
371
+ * - "usage limit reached" — Claude Pro/Max 5-hour cap
372
+ * - "rate_limit_exceeded" — API error type string
373
+ * - "rate limit" — only inside the known-error envelope
374
+ * - "429" — HTTP status (envelope contains it on
375
+ * API-layer 429 propagation)
376
+ * - "5-hour limit" — Anthropic subscription cap phrase
377
+ * - "Limit reached" — CLI direct-quote refusal line
378
+ *
379
+ * No fallthrough to loose substrings — if none of these match, return
380
+ * 'unknown' and let the orchestrator surface a structured error rather
381
+ * than fabricating a refusal classification.
382
+ */
383
+ function classifyClaudeErrorReason(envelope) {
384
+ if (!envelope)
385
+ return 'unknown';
386
+ const markers = [
387
+ /usage limit reached/i,
388
+ /rate_limit_exceeded/i,
389
+ /\brate limit\b/i,
390
+ /\b429\b/,
391
+ /5-hour limit/i,
392
+ /\blimit reached\b/i,
393
+ ];
394
+ return markers.some((p) => p.test(envelope)) ? 'quota' : 'unknown';
395
+ }
312
396
  //# sourceMappingURL=claude-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-adapter.js","sourceRoot":"","sources":["../../src/cli-adapters/claude-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-adapter.js","sourceRoot":"","sources":["../../src/cli-adapters/claude-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { StructuredLogger } from '../logger.js';
2
2
  import type { CLIAgentOptions } from '../cli-agents.js';
3
3
  import type { ModelResolver } from '../model-resolver.js';
4
- import type { CLIProvider, CLIBuilderConfig, CLIName } from './index.js';
4
+ import type { CLIProvider, CLIBuilderConfig, CLIName, DecodeResult } from './index.js';
5
5
  export declare class CodexAdapter implements CLIProvider {
6
6
  readonly name: CLIName;
7
7
  getConfig(): CLIBuilderConfig;
@@ -19,6 +19,23 @@ export declare class CodexAdapter implements CLIProvider {
19
19
  * command_execution, and error events.
20
20
  */
21
21
  decodeOutput(rawOutput: string, args: string[], log?: StructuredLogger): string;
22
+ decode(stdout: string, stderr: string, args: string[], log?: StructuredLogger): DecodeResult;
23
+ /**
24
+ * Structured decode of Codex --json output.
25
+ *
26
+ * Codex emits NDJSON `item.completed` events. Agent text comes in
27
+ * `item.type === 'agent_message'`. Codex error/quota state is NOT in
28
+ * the JSON event stream — per the inline comment in extractCodexAgentMessage
29
+ * ("error: will be in stderr"), it lands on stderr. So:
30
+ * - assistant text present → ok
31
+ * - no text + stderr matches anchored Codex quota markers → refused
32
+ * - no text + no markers → error (empty)
33
+ *
34
+ * Anchored markers operate only on stderr (the CLI's own error
35
+ * channel), never on assistant prose. Aligned with the discipline
36
+ * applied to Claude's error envelope.
37
+ */
38
+ private decodeStream;
22
39
  private extractCodexAgentMessage;
23
40
  }
24
41
  //# sourceMappingURL=codex-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-adapter.d.ts","sourceRoot":"","sources":["../../src/cli-adapters/codex-adapter.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAoEzE,qBAAa,YAAa,YAAW,WAAW;IAC9C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAW;IAEjC,SAAS,IAAI,gBAAgB;IAIvB,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IA0EF;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAQ/E,OAAO,CAAC,wBAAwB;CAqCjC"}
1
+ {"version":3,"file":"codex-adapter.d.ts","sourceRoot":"","sources":["../../src/cli-adapters/codex-adapter.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAoEvF,qBAAa,YAAa,YAAW,WAAW;IAC9C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAW;IAEjC,SAAS,IAAI,gBAAgB;IAIvB,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IA0EF;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAO/E,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,CAAC,EAAE,gBAAgB,GACrB,YAAY;IAQf;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,YAAY;IAgCpB,OAAO,CAAC,wBAAwB;CAqCjC"}
@@ -141,11 +141,55 @@ export class CodexAdapter {
141
141
  * command_execution, and error events.
142
142
  */
143
143
  decodeOutput(rawOutput, args, log) {
144
- // Only decode if Codex was run with --json flag
144
+ // Legacy text-only API. Returns assistant text on success, empty
145
+ // string on refusal/error.
146
+ const result = this.decode(rawOutput, '', args, log);
147
+ return result.kind === 'ok' ? result.text : '';
148
+ }
149
+ decode(stdout, stderr, args, log) {
150
+ // Only structured-decode if Codex was run with --json
145
151
  if (!args.includes('--json')) {
146
- return rawOutput;
152
+ return { kind: 'ok', text: stdout };
153
+ }
154
+ return this.decodeStream(stdout, stderr, log ?? rootLogger);
155
+ }
156
+ /**
157
+ * Structured decode of Codex --json output.
158
+ *
159
+ * Codex emits NDJSON `item.completed` events. Agent text comes in
160
+ * `item.type === 'agent_message'`. Codex error/quota state is NOT in
161
+ * the JSON event stream — per the inline comment in extractCodexAgentMessage
162
+ * ("error: will be in stderr"), it lands on stderr. So:
163
+ * - assistant text present → ok
164
+ * - no text + stderr matches anchored Codex quota markers → refused
165
+ * - no text + no markers → error (empty)
166
+ *
167
+ * Anchored markers operate only on stderr (the CLI's own error
168
+ * channel), never on assistant prose. Aligned with the discipline
169
+ * applied to Claude's error envelope.
170
+ */
171
+ decodeStream(jsonOutput, stderr, log) {
172
+ if (!jsonOutput || !jsonOutput.trim()) {
173
+ // No stdout at all — could be a refusal that printed only to
174
+ // stderr. Check anchored markers there before declaring empty.
175
+ const refusalFromStderr = classifyCodexStderrReason(stderr);
176
+ if (refusalFromStderr === 'quota') {
177
+ return { kind: 'refused', reason: 'quota' };
178
+ }
179
+ log.debug('extractCodexAgentMessage: empty input');
180
+ return { kind: 'error', reason: 'empty' };
147
181
  }
148
- return this.extractCodexAgentMessage(rawOutput, log ?? rootLogger);
182
+ const text = this.extractCodexAgentMessage(jsonOutput, log);
183
+ if (text.length > 0) {
184
+ return { kind: 'ok', text };
185
+ }
186
+ // No agent_message extracted. Examine stderr for anchored Codex
187
+ // refusal markers — the only place codex puts quota state.
188
+ const refusalFromStderr = classifyCodexStderrReason(stderr);
189
+ if (refusalFromStderr === 'quota') {
190
+ return { kind: 'refused', reason: 'quota' };
191
+ }
192
+ return { kind: 'error', reason: 'empty' };
149
193
  }
150
194
  extractCodexAgentMessage(jsonOutput, log) {
151
195
  if (!jsonOutput || !jsonOutput.trim()) {
@@ -179,4 +223,43 @@ export class CodexAdapter {
179
223
  return result;
180
224
  }
181
225
  }
226
+ /**
227
+ * Classify Codex stderr against anchored OpenAI/Codex quota markers.
228
+ * Operates only on stderr (the CLI's own error channel), never on
229
+ * assistant prose. Returns 'quota' on a positive match, 'unknown'
230
+ * otherwise.
231
+ *
232
+ * Anchored markers chosen against the literal strings Codex / the
233
+ * OpenAI API surface in error envelopes:
234
+ * - "rate_limit_exceeded" — API error code
235
+ * - "insufficient_quota" — API error code
236
+ * - "quota_exceeded" — alt error code
237
+ * - "429" — HTTP status
238
+ * - "Too Many Requests" — HTTP reason phrase
239
+ * - "usage cap" — ChatGPT plan cap phrasing
240
+ * - "ChatGPT Plus" + "limit" — paired marker for plan caps
241
+ *
242
+ * No loose `quota`/`limit`/`rate limit` patterns — those bit us in
243
+ * Phase 1. Stay anchored to literal vendor error strings.
244
+ */
245
+ function classifyCodexStderrReason(stderr) {
246
+ if (!stderr)
247
+ return 'unknown';
248
+ const markers = [
249
+ /rate_limit_exceeded/i,
250
+ /insufficient_quota/i,
251
+ /quota_exceeded/i,
252
+ /\b429\b/,
253
+ /Too Many Requests/i,
254
+ /usage cap/i,
255
+ ];
256
+ if (markers.some((p) => p.test(stderr)))
257
+ return 'quota';
258
+ // Paired marker — "ChatGPT Plus" alongside "limit" indicates the plan
259
+ // cap. Required as a pair so the word "limit" alone never fires.
260
+ if (/ChatGPT (?:Plus|Pro|Team|Enterprise)/i.test(stderr) && /\blimit\b/i.test(stderr)) {
261
+ return 'quota';
262
+ }
263
+ return 'unknown';
264
+ }
182
265
  //# sourceMappingURL=codex-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-adapter.js","sourceRoot":"","sources":["../../src/cli-adapters/codex-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-adapter.js","sourceRoot":"","sources":["../../src/cli-adapters/codex-adapter.ts"],"names":[],"mappings":"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"}
@@ -8,17 +8,16 @@ import type { CLIAgentOptions } from '../cli-agents.js';
8
8
  import type { ModelResolver } from '../model-resolver.js';
9
9
  import type { StructuredLogger } from '../logger.js';
10
10
  export { parseNDJSON } from './shared.js';
11
- export type CLIName = 'claude' | 'codex' | 'gemini';
11
+ export type CLIName = 'claude' | 'codex' | 'agy';
12
12
  export interface MCPSupportConfig {
13
13
  /** How this CLI receives MCP server configuration */
14
- configMethod: 'flag-file' | 'config-override' | 'server-whitelist';
14
+ configMethod: 'flag-file' | 'config-override';
15
15
  configFlag?: string;
16
16
  strictFlag?: string;
17
17
  configOverrideKey?: string;
18
- whitelistFlag?: string;
19
18
  /** Hard write-prevention mechanism native to this CLI */
20
19
  writeProtection: {
21
- method: 'disallowed-tools' | 'sandbox' | 'approval-mode';
20
+ method: 'disallowed-tools' | 'sandbox';
22
21
  flag: string;
23
22
  value: string;
24
23
  };
@@ -34,6 +33,33 @@ export interface CLIBuilderConfig {
34
33
  mpcEnvCleanup?: string[];
35
34
  mcpSupport?: MCPSupportConfig;
36
35
  }
36
+ /**
37
+ * Structured outcome of decoding a CLI's raw output.
38
+ *
39
+ * Replaces the previous `decodeOutput(): string` shape, which collapsed
40
+ * three distinct states (success / refusal / error) into one string and
41
+ * forced the orchestrator to re-grep the assistant prose for refusal
42
+ * markers — a brittle layer that produced the 2026-05-21 false-positive
43
+ * class (see Phase 1 fix in cli-agents.ts).
44
+ *
45
+ * Each provider adapter populates this from its own protocol-level
46
+ * signals (Claude: `result.subtype` / `is_error`; Codex: error events).
47
+ * The orchestrator never inspects assistant prose to classify refusals.
48
+ */
49
+ export type DecodeRefusalReason = 'quota' | 'auth' | 'policy';
50
+ export type DecodeErrorReason = 'malformed' | 'empty' | 'unknown';
51
+ export type DecodeResult = {
52
+ kind: 'ok';
53
+ text: string;
54
+ } | {
55
+ kind: 'refused';
56
+ reason: DecodeRefusalReason;
57
+ detail?: string;
58
+ } | {
59
+ kind: 'error';
60
+ reason: DecodeErrorReason;
61
+ detail?: string;
62
+ };
37
63
  export interface CLIProvider {
38
64
  readonly name: CLIName;
39
65
  /** Return the static configuration for this provider */
@@ -51,16 +77,32 @@ export interface CLIProvider {
51
77
  model?: string;
52
78
  }>;
53
79
  /**
54
- * Decode raw CLI output into clean text.
55
- * Claude decodes stream-json NDJSON, Codex extracts agent_messages,
56
- * Gemini extracts the response field from JSON.
80
+ * Decode raw CLI output into a structured outcome (preferred API).
81
+ *
82
+ * Each adapter inspects ITS OWN protocol-level signals to classify the
83
+ * run — refusal markers must come from the CLI's structured error
84
+ * channel (stream-json `result` events for Claude, error items for
85
+ * Codex) and never from the assistant text the CLI returned.
86
+ *
87
+ * The orchestrator consumes `DecodeResult.kind` directly; no caller
88
+ * grep the prose for "rate limit"-style strings (Phase 1 hot-fix
89
+ * scoped that pattern set to stderr; Phase 2 removes it entirely).
90
+ *
91
+ * stderr is passed in alongside stdout because Codex error envelopes
92
+ * surface refusal state on stderr, not in the JSON event stream.
93
+ */
94
+ decode(stdout: string, stderr: string, args: string[], log?: StructuredLogger): DecodeResult;
95
+ /**
96
+ * Decode raw CLI output into clean text (legacy API).
97
+ *
98
+ * Delegates to `decode()` and returns the assistant text on success,
99
+ * empty string on refusal/error. Retained for the legacy test proxies
100
+ * at `cli-agents.ts:716-728` and any external consumers; new code
101
+ * should call `decode()` and switch on `kind`.
57
102
  *
58
- * Pattern A: `log` is optional. When provided (passed from the
59
- * orchestrator via `this.log?.forOperation('<cli>_spawn')`), adapter
60
- * warnings/errors during decode emit with the scoped logger. When
61
- * absent, adapters fall back to the root logger so the legacy test
62
- * proxies (cli-agents.ts decodeClaudeStreamJson / extractCodexAgentMessage
63
- * / extractGeminiResponse) keep working with no args.
103
+ * Pattern A: `log` is optional. When provided, adapter warnings/errors
104
+ * during decode emit with the scoped logger. When absent, adapters
105
+ * fall back to the root logger.
64
106
  */
65
107
  decodeOutput(rawOutput: string, args: string[], log?: StructuredLogger): string;
66
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli-adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,YAAY,EAAE,WAAW,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;IAGnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,yDAAyD;IACzD,eAAe,EAAE;QACf,MAAM,EAAE,kBAAkB,GAAG,SAAS,GAAG,eAAe,CAAC;QACzD,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,MAAM,EAAE,CAAC;IACvD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAID,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAEvB,wDAAwD;IACxD,SAAS,IAAI,gBAAgB,CAAC;IAE9B;;;OAGG;IACH,YAAY,CACV,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAK5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAK3B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IAEH;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;CACjF;AAcD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAMtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,EAAE,CAE5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli-adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,YAAY,EAAE,WAAW,GAAG,iBAAiB,CAAC;IAG9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,yDAAyD;IACzD,eAAe,EAAE;QACf,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAC;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,MAAM,EAAE,CAAC;IACvD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAID;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAElE,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAIlE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAEvB,wDAAwD;IACxD,SAAS,IAAI,gBAAgB,CAAC;IAE9B;;;OAGG;IACH,YAAY,CACV,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAK5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAK3B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IAEH;;;;;;;;;;;;;;OAcG;IACH,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,CAAC,EAAE,gBAAgB,GACrB,YAAY,CAAC;IAEhB;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;CACjF;AAcD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAMtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,EAAE,CAE5C"}
@@ -3,11 +3,11 @@ export { parseNDJSON } from './shared.js';
3
3
  // ── Provider Registry ──────────────────────────────────────────────────────
4
4
  import { ClaudeAdapter } from './claude-adapter.js';
5
5
  import { CodexAdapter } from './codex-adapter.js';
6
- import { GeminiAdapter } from './gemini-adapter.js';
6
+ import { AgyAdapter } from './agy-adapter.js';
7
7
  const providers = {
8
8
  claude: new ClaudeAdapter(),
9
9
  codex: new CodexAdapter(),
10
- gemini: new GeminiAdapter(),
10
+ agy: new AgyAdapter(),
11
11
  };
12
12
  /**
13
13
  * Get a provider adapter by name.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli-adapters/index.ts"],"names":[],"mappings":"AAUA,6BAA6B;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA0F1C,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,SAAS,GAAiC;IAC9C,MAAM,EAAE,IAAI,aAAa,EAAE;IAC3B,KAAK,EAAE,IAAI,YAAY,EAAE;IACzB,MAAM,EAAE,IAAI,aAAa,EAAE;CAC5B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAc,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli-adapters/index.ts"],"names":[],"mappings":"AAUA,6BAA6B;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoI1C,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,SAAS,GAAiC;IAC9C,MAAM,EAAE,IAAI,aAAa,EAAE;IAC3B,KAAK,EAAE,IAAI,YAAY,EAAE;IACzB,GAAG,EAAE,IAAI,UAAU,EAAE;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAc,CAAC;AAC7C,CAAC"}
@@ -7,12 +7,12 @@ export declare const CLAUDE_ALIASES: readonly ["opus", "sonnet", "haiku"];
7
7
  export interface CLIAgentOptions {
8
8
  workingDirectory?: string;
9
9
  timeout?: number;
10
- clis?: ('claude' | 'codex' | 'gemini')[];
10
+ clis?: ('claude' | 'codex' | 'agy')[];
11
11
  analysisType?: BrutalistPromptType;
12
12
  models?: {
13
13
  claude?: string;
14
14
  codex?: string;
15
- gemini?: string;
15
+ agy?: string;
16
16
  };
17
17
  onStreamingEvent?: (event: StreamingEvent) => void;
18
18
  progressToken?: string | number;
@@ -45,14 +45,14 @@ export interface CLIAgentOrchestratorDeps {
45
45
  }
46
46
  export interface StreamingEvent {
47
47
  type: 'agent_start' | 'agent_progress' | 'agent_complete' | 'agent_error';
48
- agent: 'claude' | 'codex' | 'gemini' | 'system';
48
+ agent: 'claude' | 'codex' | 'agy' | 'system';
49
49
  content?: string;
50
50
  timestamp: number;
51
51
  sessionId?: string;
52
52
  metadata?: Record<string, any>;
53
53
  }
54
54
  export interface CLIContext {
55
- availableCLIs: ('claude' | 'codex' | 'gemini')[];
55
+ availableCLIs: ('claude' | 'codex' | 'agy')[];
56
56
  }
57
57
  export declare class CLIAgentOrchestrator {
58
58
  private defaultTimeout;
@@ -98,37 +98,14 @@ export declare class CLIAgentOrchestrator {
98
98
  private parseNDJSON;
99
99
  private decodeClaudeStreamJson;
100
100
  private extractCodexAgentMessage;
101
- private extractGeminiResponse;
102
101
  private emitThrottledStreamingEvent;
103
102
  private buildCLICommand;
104
103
  detectCLIContext(): Promise<CLIContext>;
105
- selectSingleCLI(preferredCLI?: 'claude' | 'codex' | 'gemini', analysisType?: BrutalistPromptType): 'claude' | 'codex' | 'gemini';
104
+ selectSingleCLI(preferredCLI?: 'claude' | 'codex' | 'agy', analysisType?: BrutalistPromptType): 'claude' | 'codex' | 'agy';
106
105
  private _executeCLI;
107
106
  executeClaudeCode(userPrompt: string, systemPromptSpec: string, options?: CLIAgentOptions): Promise<CLIAgentResponse>;
108
107
  executeCodex(userPrompt: string, systemPromptSpec: string, options?: CLIAgentOptions): Promise<CLIAgentResponse>;
109
- executeGemini(userPrompt: string, systemPromptSpec: string, options?: CLIAgentOptions): Promise<CLIAgentResponse>;
110
- executeSingleCLI(cli: 'claude' | 'codex' | 'gemini', userPrompt: string, systemPromptSpec: string, options?: CLIAgentOptions): Promise<CLIAgentResponse>;
111
- /**
112
- * Gemini frontier rotation - iterate through GEMINI_FRONTIER_CHAIN on
113
- * rotatable failures (capacity saturation OR tier access denial).
114
- *
115
- * Only active when neither caller nor operator has chosen a model. Each
116
- * attempt injects the model via options.models.gemini. Per-attempt
117
- * failures are classified by isGeminiRotatableError(): capacity errors
118
- * (quota/429) AND access errors (ModelNotFoundError / permission denied)
119
- * both trigger rotation. On unrelated failures (auth, prompt rejection,
120
- * subprocess crashes) rotation stops immediately — a different model
121
- * will not fix those. On chain exhaustion, the last failing response
122
- * is returned.
123
- *
124
- * In practice the typical non-preview user trajectory is:
125
- * gemini-3.1-pro-preview -> access denied (rotate)
126
- * gemini-3-pro-preview -> access denied (rotate)
127
- * gemini-3-flash-preview -> success (3-series flash, pro-grade
128
- * reasoning, universally available as
129
- * of the model launch)
130
- */
131
- private _executeGeminiWithRotation;
108
+ executeSingleCLI(cli: 'claude' | 'codex' | 'agy', userPrompt: string, systemPromptSpec: string, options?: CLIAgentOptions): Promise<CLIAgentResponse>;
132
109
  private waitForAvailableSlot;
133
110
  executeCLIAgents(cliAgents: string[], systemPrompt: string, userPrompt: string, options?: CLIAgentOptions): Promise<CLIAgentResponse[]>;
134
111
  executeCLIAgent(agent: string, systemPrompt: string, userPrompt: string, options?: CLIAgentOptions): Promise<CLIAgentResponse>;