instar 1.3.486 → 1.3.488

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 (97) hide show
  1. package/dist/commands/reflect.d.ts.map +1 -1
  2. package/dist/commands/reflect.js +4 -0
  3. package/dist/commands/reflect.js.map +1 -1
  4. package/dist/commands/route.d.ts.map +1 -1
  5. package/dist/commands/route.js +3 -0
  6. package/dist/commands/route.js.map +1 -1
  7. package/dist/commands/server.d.ts.map +1 -1
  8. package/dist/commands/server.js +14 -0
  9. package/dist/commands/server.js.map +1 -1
  10. package/dist/core/CircuitBreakingIntelligenceProvider.d.ts +7 -0
  11. package/dist/core/CircuitBreakingIntelligenceProvider.d.ts.map +1 -1
  12. package/dist/core/CircuitBreakingIntelligenceProvider.js +50 -0
  13. package/dist/core/CircuitBreakingIntelligenceProvider.js.map +1 -1
  14. package/dist/core/ClaudeCliIntelligenceProvider.d.ts +5 -0
  15. package/dist/core/ClaudeCliIntelligenceProvider.d.ts.map +1 -1
  16. package/dist/core/ClaudeCliIntelligenceProvider.js +6 -1
  17. package/dist/core/ClaudeCliIntelligenceProvider.js.map +1 -1
  18. package/dist/core/CodexCliIntelligenceProvider.d.ts +58 -0
  19. package/dist/core/CodexCliIntelligenceProvider.d.ts.map +1 -1
  20. package/dist/core/CodexCliIntelligenceProvider.js +293 -27
  21. package/dist/core/CodexCliIntelligenceProvider.js.map +1 -1
  22. package/dist/core/GeminiCliIntelligenceProvider.d.ts +8 -0
  23. package/dist/core/GeminiCliIntelligenceProvider.d.ts.map +1 -1
  24. package/dist/core/GeminiCliIntelligenceProvider.js +8 -0
  25. package/dist/core/GeminiCliIntelligenceProvider.js.map +1 -1
  26. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  27. package/dist/core/PostUpdateMigrator.js +40 -0
  28. package/dist/core/PostUpdateMigrator.js.map +1 -1
  29. package/dist/core/SafeGitExecutor.d.ts.map +1 -1
  30. package/dist/core/SafeGitExecutor.js +79 -1
  31. package/dist/core/SafeGitExecutor.js.map +1 -1
  32. package/dist/core/StateManager.d.ts +8 -0
  33. package/dist/core/StateManager.d.ts.map +1 -1
  34. package/dist/core/StateManager.js +37 -0
  35. package/dist/core/StateManager.js.map +1 -1
  36. package/dist/core/componentCategories.d.ts.map +1 -1
  37. package/dist/core/componentCategories.js +10 -0
  38. package/dist/core/componentCategories.js.map +1 -1
  39. package/dist/core/intelligenceProviderFactory.d.ts +8 -0
  40. package/dist/core/intelligenceProviderFactory.d.ts.map +1 -1
  41. package/dist/core/intelligenceProviderFactory.js +1 -0
  42. package/dist/core/intelligenceProviderFactory.js.map +1 -1
  43. package/dist/core/types.d.ts +25 -9
  44. package/dist/core/types.d.ts.map +1 -1
  45. package/dist/core/types.js.map +1 -1
  46. package/dist/messaging/slack/SlackAdapter.d.ts +3 -0
  47. package/dist/messaging/slack/SlackAdapter.d.ts.map +1 -1
  48. package/dist/messaging/slack/SlackAdapter.js +8 -1
  49. package/dist/messaging/slack/SlackAdapter.js.map +1 -1
  50. package/dist/monitoring/FeatureMetricsLedger.d.ts +123 -1
  51. package/dist/monitoring/FeatureMetricsLedger.d.ts.map +1 -1
  52. package/dist/monitoring/FeatureMetricsLedger.js +211 -25
  53. package/dist/monitoring/FeatureMetricsLedger.js.map +1 -1
  54. package/dist/providers/adapters/anthropic-interactive-pool/index.d.ts.map +1 -1
  55. package/dist/providers/adapters/anthropic-interactive-pool/index.js +1 -0
  56. package/dist/providers/adapters/anthropic-interactive-pool/index.js.map +1 -1
  57. package/dist/providers/adapters/openai-codex/transport/codexSpawn.d.ts +93 -0
  58. package/dist/providers/adapters/openai-codex/transport/codexSpawn.d.ts.map +1 -1
  59. package/dist/providers/adapters/openai-codex/transport/codexSpawn.js +339 -0
  60. package/dist/providers/adapters/openai-codex/transport/codexSpawn.js.map +1 -1
  61. package/dist/providers/adapters/openai-codex/transport/codexUsageParser.d.ts +84 -0
  62. package/dist/providers/adapters/openai-codex/transport/codexUsageParser.d.ts.map +1 -0
  63. package/dist/providers/adapters/openai-codex/transport/codexUsageParser.js +208 -0
  64. package/dist/providers/adapters/openai-codex/transport/codexUsageParser.js.map +1 -0
  65. package/dist/providers/uxConfirm/OverrideDetector.d.ts.map +1 -1
  66. package/dist/providers/uxConfirm/OverrideDetector.js +1 -0
  67. package/dist/providers/uxConfirm/OverrideDetector.js.map +1 -1
  68. package/dist/providers/uxConfirm/TaskClassifier.d.ts.map +1 -1
  69. package/dist/providers/uxConfirm/TaskClassifier.js +1 -0
  70. package/dist/providers/uxConfirm/TaskClassifier.js.map +1 -1
  71. package/dist/scaffold/templates.d.ts.map +1 -1
  72. package/dist/scaffold/templates.js +3 -2
  73. package/dist/scaffold/templates.js.map +1 -1
  74. package/dist/security/LLMSanitizer.d.ts.map +1 -1
  75. package/dist/security/LLMSanitizer.js +7 -1
  76. package/dist/security/LLMSanitizer.js.map +1 -1
  77. package/dist/server/CapabilityIndex.js +1 -1
  78. package/dist/server/CapabilityIndex.js.map +1 -1
  79. package/dist/server/routes.d.ts.map +1 -1
  80. package/dist/server/routes.js +10 -1
  81. package/dist/server/routes.js.map +1 -1
  82. package/dist/threadline/PipeSessionSpawner.d.ts.map +1 -1
  83. package/dist/threadline/PipeSessionSpawner.js +2 -0
  84. package/dist/threadline/PipeSessionSpawner.js.map +1 -1
  85. package/dist/threadline/WarrantsReplyGate.d.ts.map +1 -1
  86. package/dist/threadline/WarrantsReplyGate.js +5 -1
  87. package/dist/threadline/WarrantsReplyGate.js.map +1 -1
  88. package/package.json +4 -2
  89. package/scripts/lint-llm-attribution.js +418 -0
  90. package/scripts/lint-no-direct-destructive.js +4 -0
  91. package/scripts/pre-push-gate.js +24 -0
  92. package/src/data/builtin-manifest.json +63 -63
  93. package/src/scaffold/templates.ts +3 -2
  94. package/upgrades/1.3.487.md +39 -0
  95. package/upgrades/1.3.488.md +27 -0
  96. package/upgrades/side-effects/session-ghost-records.md +79 -0
  97. package/upgrades/side-effects/token-audit-completeness.md +84 -0
@@ -15,6 +15,10 @@
15
15
  * codex inside tmux, where tmux owns stdin — that path is unaffected.
16
16
  */
17
17
  import { spawn } from 'node:child_process';
18
+ import { mkdtempSync, promises as fsp } from 'node:fs';
19
+ import { tmpdir } from 'node:os';
20
+ import { join } from 'node:path';
21
+ import { SafeFsExecutor } from '../../../../core/SafeFsExecutor.js';
18
22
  /**
19
23
  * Rule 1a — env allowlist for Codex child processes.
20
24
  *
@@ -219,6 +223,10 @@ export async function spawnCodexAndWait(binary, args, options) {
219
223
  options.signal?.addEventListener('abort', onAbort, { once: true });
220
224
  child.stdout.on('data', (b) => stdoutChunks.push(b));
221
225
  child.stderr.on('data', (b) => stderrChunks.push(b));
226
+ // Swallow readable-side pipe errors (EIO/EBADF) — an unhandled stream
227
+ // 'error' is an uncaughtException; the failure surfaces via close/exit.
228
+ child.stdout.on('error', () => { });
229
+ child.stderr.on('error', () => { });
222
230
  child.on('error', (err) => {
223
231
  clearTimeout(timer);
224
232
  options.signal?.removeEventListener('abort', onAbort);
@@ -247,4 +255,335 @@ export async function spawnCodexAndWait(binary, args, options) {
247
255
  child.stdin.end();
248
256
  });
249
257
  }
258
+ // ── codex exec --json streaming spawn (token-audit-completeness spec) ──────
259
+ //
260
+ // The `--json` event stream is strictly larger than plain output, and
261
+ // execFile's maxBuffer overflow does not truncate — it KILLS the child and
262
+ // fails the call, making long calls (the cartographer-sweep class) MORE
263
+ // likely to fail. This streaming helper bounds memory instead: lines are
264
+ // assembled across chunk boundaries via a carry buffer capped at 2 MB (an
265
+ // over-cap line is discarded unparsed and counted — usage events are <1 KB,
266
+ // so the cap cannot lose usage), stderr is drained continuously (an
267
+ // undrained pipe wedges a chatty-stderr child on the 64 KB OS buffer — a
268
+ // hang class execFile did not have), and the promise settles from the
269
+ // `close` handler after the carry flush, so ALL onLine callbacks complete
270
+ // before settlement. A bounded post-`exit` grace (default 5 s) covers a
271
+ // grandchild holding the inherited stdout fd past SIGKILL.
272
+ /** Carry-buffer cap for event-line assembly (2 MB). */
273
+ export const EXEC_JSON_CARRY_CAP_BYTES = 2 * 1024 * 1024;
274
+ export class CodexExecJsonTimeoutError extends Error {
275
+ stderrTail;
276
+ killed = true;
277
+ signal = 'SIGTERM';
278
+ constructor(timeoutMs, stderrTail) {
279
+ super(`Codex exec --json timed out after ${timeoutMs}ms`);
280
+ this.name = 'CodexExecJsonTimeoutError';
281
+ this.stderrTail = stderrTail;
282
+ }
283
+ }
284
+ /**
285
+ * Spawn `codex exec --json ...` and stream its event lines to `onLine`.
286
+ *
287
+ * Settlement contract (the spec's "settlement ordering"): the timeout timer
288
+ * only INITIATES the kill sequence (SIGTERM → sigkillGraceMs → SIGKILL); the
289
+ * promise settles from the `close` handler — after the carry flush — or at a
290
+ * bounded post-`exit` grace when `close` is deferred by a held fd. Either
291
+ * way, every onLine callback (including the final post-SIGTERM flush) has
292
+ * completed before the promise settles, exactly once.
293
+ *
294
+ * Resolution: `{ exitCode, stderrTail }` for ANY exit (the caller decides
295
+ * what a non-zero exit means). Rejection: spawn error, or timeout
296
+ * (CodexExecJsonTimeoutError — after the final flush, so already-parsed
297
+ * usage is never lost to the reject path).
298
+ */
299
+ export async function spawnCodexExecJson(binary, args, options) {
300
+ const spawnFn = options.spawnImpl ?? spawn;
301
+ const postExitGraceMs = options.postExitGraceMs ?? 5000;
302
+ const sigkillGraceMs = options.sigkillGraceMs ?? 2000;
303
+ return new Promise((resolve, reject) => {
304
+ const child = spawnFn(binary, args, {
305
+ env: options.env,
306
+ stdio: ['pipe', 'pipe', 'pipe'],
307
+ });
308
+ let settled = false;
309
+ let timedOut = false;
310
+ let spawnError = null;
311
+ let exitCode;
312
+ let stderrTail = '';
313
+ let carry = '';
314
+ let discardingOversized = false;
315
+ let graceTimer;
316
+ let killEscalation;
317
+ const emitLine = (line) => {
318
+ try {
319
+ options.onLine(line);
320
+ }
321
+ catch {
322
+ /* @silent-fallback-ok: a consumer throw must never wedge the stream */
323
+ }
324
+ };
325
+ const noteOversized = () => {
326
+ try {
327
+ options.onOversizedLine?.();
328
+ }
329
+ catch {
330
+ /* @silent-fallback-ok */
331
+ }
332
+ };
333
+ const processChunk = (chunk) => {
334
+ let data = chunk;
335
+ while (data.length > 0) {
336
+ const nl = data.indexOf('\n');
337
+ if (discardingOversized) {
338
+ if (nl === -1)
339
+ return; // keep discarding until the line ends
340
+ discardingOversized = false;
341
+ noteOversized();
342
+ data = data.slice(nl + 1);
343
+ continue;
344
+ }
345
+ if (nl === -1) {
346
+ carry += data;
347
+ if (carry.length > EXEC_JSON_CARRY_CAP_BYTES) {
348
+ carry = '';
349
+ discardingOversized = true;
350
+ }
351
+ return;
352
+ }
353
+ const line = carry + data.slice(0, nl);
354
+ carry = '';
355
+ if (line.length > EXEC_JSON_CARRY_CAP_BYTES) {
356
+ noteOversized(); // complete line over the cap — discarded unparsed
357
+ }
358
+ else if (line.length > 0) {
359
+ emitLine(line);
360
+ }
361
+ data = data.slice(nl + 1);
362
+ }
363
+ };
364
+ const flushCarry = () => {
365
+ if (discardingOversized) {
366
+ discardingOversized = false;
367
+ noteOversized();
368
+ }
369
+ else if (carry.length > 0) {
370
+ emitLine(carry);
371
+ }
372
+ carry = '';
373
+ };
374
+ const settle = () => {
375
+ if (settled)
376
+ return;
377
+ settled = true;
378
+ clearTimeout(killTimer);
379
+ if (graceTimer)
380
+ clearTimeout(graceTimer);
381
+ if (killEscalation)
382
+ clearTimeout(killEscalation);
383
+ // Final accounting BEFORE settlement — the post-SIGTERM token_count
384
+ // flush must reach the consumer before any reject is observable.
385
+ flushCarry();
386
+ try {
387
+ child.stdout?.removeAllListeners('data');
388
+ child.stderr?.removeAllListeners('data');
389
+ child.stdout?.destroy();
390
+ child.stderr?.destroy();
391
+ }
392
+ catch {
393
+ /* @silent-fallback-ok */
394
+ }
395
+ if (spawnError)
396
+ return reject(spawnError);
397
+ if (timedOut)
398
+ return reject(new CodexExecJsonTimeoutError(options.timeoutMs, stderrTail));
399
+ resolve({ exitCode: exitCode ?? null, stderrTail });
400
+ };
401
+ // Timeout: the timer only INITIATES the kill sequence; settlement waits
402
+ // for close (or the post-exit grace) so the final flush is never lost.
403
+ const killTimer = setTimeout(() => {
404
+ timedOut = true;
405
+ try {
406
+ child.kill('SIGTERM');
407
+ }
408
+ catch {
409
+ /* @silent-fallback-ok */
410
+ }
411
+ killEscalation = setTimeout(() => {
412
+ try {
413
+ child.kill('SIGKILL');
414
+ }
415
+ catch {
416
+ /* @silent-fallback-ok */
417
+ }
418
+ }, sigkillGraceMs);
419
+ killEscalation.unref();
420
+ }, options.timeoutMs);
421
+ killTimer.unref();
422
+ child.stdout.setEncoding('utf8');
423
+ child.stdout.on('data', (chunk) => processChunk(chunk));
424
+ // Readable-side stream errors (rare: EIO/EBADF on the pipe) are the same
425
+ // uncaughtException-takes-down-the-server class the stdin handler guards;
426
+ // the failure surfaces via the exit/close path.
427
+ child.stdout.on('error', () => { });
428
+ // stderr drained CONTINUOUSLY for the child's lifetime — rolling
429
+ // 600-char tail, chunks discarded.
430
+ child.stderr.setEncoding('utf8');
431
+ child.stderr.on('data', (chunk) => {
432
+ stderrTail = (stderrTail + chunk).slice(-600);
433
+ });
434
+ child.stderr.on('error', () => { });
435
+ child.on('error', (err) => {
436
+ spawnError = err instanceof Error ? err : new Error(String(err));
437
+ settle();
438
+ });
439
+ child.on('exit', (code) => {
440
+ exitCode = code;
441
+ // `close` can be indefinitely deferred by a grandchild holding the
442
+ // inherited stdout fd past SIGKILL — bound it.
443
+ graceTimer = setTimeout(settle, postExitGraceMs);
444
+ graceTimer.unref();
445
+ });
446
+ child.on('close', (code) => {
447
+ if (exitCode === undefined)
448
+ exitCode = code;
449
+ settle();
450
+ });
451
+ // stdin error contract: the designed failure paths (old-CLI unknown-flag
452
+ // fast-exit; SIGTERM mid-drain) close the pipe while a cartographer-class
453
+ // multi-MB prompt may still be writing — an unhandled stream 'error' is
454
+ // an uncaughtException that takes down the whole agent server. The
455
+ // failure itself is surfaced via the non-zero-exit / timeout paths.
456
+ child.stdin.on('error', (err) => {
457
+ if (err.code === 'EPIPE' || err.code === 'ERR_STREAM_DESTROYED')
458
+ return;
459
+ /* other stdin errors are equally non-actionable here — the exit path reports */
460
+ });
461
+ // Write the prompt, then end (json mode's stdin hygiene: write+end).
462
+ child.stdin.end(options.prompt);
463
+ });
464
+ }
465
+ // ── per-call out-dir lifecycle + bounded stale sweep ───────────────────────
466
+ //
467
+ // The --output-last-message file lives in a FRESH per-call mkdtemp dir
468
+ // (0700, unguessable suffix) — NOT the long-lived cached scratch dir, whose
469
+ // existsSync reuse branch does not re-verify ownership/mode and must never
470
+ // have model output written into or read from it.
471
+ const CODEX_OUT_DIR_PREFIX = 'instar-codex-out-';
472
+ /** In-process registry of live out-dirs — the stale sweep always skips these. */
473
+ const inFlightOutDirs = new Set();
474
+ export function createCodexOutDir() {
475
+ const dir = mkdtempSync(join(tmpdir(), CODEX_OUT_DIR_PREFIX));
476
+ inFlightOutDirs.add(dir);
477
+ return dir;
478
+ }
479
+ /**
480
+ * Remove a per-call out-dir. Pinned nesting per spec:
481
+ * `try { safeRm(dir) } finally { set.delete(dir) }` — a throwing deletion
482
+ * (EPERM, sandbox-revoked tmp access) cannot leak the in-flight entry.
483
+ * Never throws into the call path.
484
+ */
485
+ export function cleanupCodexOutDir(dir) {
486
+ try {
487
+ try {
488
+ SafeFsExecutor.safeRmSync(dir, {
489
+ recursive: true,
490
+ force: true,
491
+ operation: 'codex exec-json out-dir cleanup',
492
+ });
493
+ }
494
+ finally {
495
+ inFlightOutDirs.delete(dir);
496
+ }
497
+ }
498
+ catch {
499
+ /* @silent-fallback-ok: cleanup must never throw into the judgment-call path; the stale sweep is the backstop */
500
+ }
501
+ }
502
+ /** Sweep brakes (P19 — every one unit-tested). */
503
+ export const CODEX_OUT_SWEEP_INTERVAL_MS = 60 * 60 * 1000; // rate floor: once/hour/process
504
+ export const CODEX_OUT_SWEEP_AGE_MS = 6 * 60 * 60 * 1000; // ≫ any supported judgment-call timeout
505
+ export const CODEX_OUT_SWEEP_MAX_DELETIONS = 20;
506
+ export const CODEX_OUT_SWEEP_MAX_CANDIDATES = 200;
507
+ let lastSweepAt = 0;
508
+ /**
509
+ * Opportunistic, bounded sweep of stale `instar-codex-out-*` dirs left by
510
+ * CRASHED processes (the in-process `finally` covers everything else).
511
+ *
512
+ * Fire-and-forget async — NEVER awaited by evaluate() (os.tmpdir() population
513
+ * scales with the whole machine; a synchronous readdir+lstat pass inside a
514
+ * judgment call would block the single server event loop on foreign state).
515
+ * `lastSweepAt` is set BEFORE the pass starts so concurrent calls cannot
516
+ * double-trigger. os.tmpdir() is hostile on Linux (world-writable /tmp): each
517
+ * candidate is lstat-verified — a directory, NOT a symlink, owned by this
518
+ * uid, mtime older than the threshold — and EPERM/ENOENT during deletion is
519
+ * swallowed, never thrown into the call path.
520
+ *
521
+ * Returns the sweep promise when a pass started (for tests), null when
522
+ * rate-floored.
523
+ */
524
+ export function maybeSweepStaleCodexOutDirs(options = {}) {
525
+ const now = options.now?.() ?? Date.now();
526
+ if (now - lastSweepAt < CODEX_OUT_SWEEP_INTERVAL_MS)
527
+ return null;
528
+ lastSweepAt = now; // set before the pass starts — no double-trigger
529
+ const tmp = options.tmpDirOverride ?? tmpdir();
530
+ const lstat = options.lstatImpl ?? fsp.lstat;
531
+ return (async () => {
532
+ try {
533
+ const entries = await fsp.readdir(tmp);
534
+ let examined = 0;
535
+ let deleted = 0;
536
+ for (const name of entries) {
537
+ if (!name.startsWith(CODEX_OUT_DIR_PREFIX))
538
+ continue;
539
+ if (examined >= CODEX_OUT_SWEEP_MAX_CANDIDATES)
540
+ break;
541
+ if (deleted >= CODEX_OUT_SWEEP_MAX_DELETIONS)
542
+ break;
543
+ const full = join(tmp, name);
544
+ // A live long call's dir can never be deleted from this process.
545
+ if (inFlightOutDirs.has(full))
546
+ continue;
547
+ examined++;
548
+ let st;
549
+ try {
550
+ st = await lstat(full);
551
+ }
552
+ catch {
553
+ continue;
554
+ }
555
+ // lstat: a symlink reports isSymbolicLink, not isDirectory — planted
556
+ // symlinks and foreign dirs are skipped.
557
+ if (!st.isDirectory())
558
+ continue;
559
+ const uid = process.getuid?.();
560
+ if (uid !== undefined && st.uid !== uid)
561
+ continue;
562
+ if (now - st.mtimeMs < CODEX_OUT_SWEEP_AGE_MS)
563
+ continue;
564
+ try {
565
+ await SafeFsExecutor.safeRm(full, {
566
+ recursive: true,
567
+ force: true,
568
+ operation: 'codex exec-json stale out-dir sweep',
569
+ });
570
+ deleted++;
571
+ }
572
+ catch {
573
+ /* @silent-fallback-ok: EPERM/ENOENT on a hostile tmp entry is skipped, never thrown */
574
+ }
575
+ }
576
+ }
577
+ catch {
578
+ /* @silent-fallback-ok: the sweep is belt-and-suspenders housekeeping */
579
+ }
580
+ })();
581
+ }
582
+ /** Test-only internals. */
583
+ export const _codexOutDirInternals = {
584
+ inFlightOutDirs,
585
+ resetSweepClock() {
586
+ lastSweepAt = 0;
587
+ },
588
+ };
250
589
  //# sourceMappingURL=codexSpawn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codexSpawn.js","sourceRoot":"","sources":["../../../../../src/providers/adapters/openai-codex/transport/codexSpawn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codexSpawn.js","sourceRoot":"","sources":["../../../../../src/providers/adapters/openai-codex/transport/codexSpawn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,QAAQ,IAAI,GAAG,EAAc,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAQpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,mBAAmB,GAAG;IAC1B,6BAA6B;IAC7B,MAAM;IACN,MAAM;IACN,SAAS;IACT,uBAAuB;IACvB,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,QAAQ;IACR,UAAU;IACV,aAAa;IACb,iDAAiD;IACjD,SAAS;IACT,OAAO;IACP,MAAM;IACN,MAAM;IACN,0BAA0B;IAC1B,YAAY;IACZ,qBAAqB;IACrB,uBAAuB;IACvB,oDAAoD;IACpD,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,+DAA+D;IAC/D,6BAA6B;CACrB,CAAC;AAEX;;;;;GAKG;AACH,MAAM,oBAAoB,GAAuB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AAgB7E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAmC;IACpE,MAAM,GAAG,GAAsB,EAAE,CAAC;IAElC,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;QACvC,GAAG,CAAC,eAAe,GAAG,oBAAoB,CAAC;IAC7C,CAAC;IAED,oEAAoE;IACpE,8DAA8D;IAC9D,OAAO,GAAG,CAAC,cAAc,CAAC;IAC1B,OAAO,GAAG,CAAC,aAAa,CAAC;IACzB,OAAO,GAAG,CAAC,iBAAiB,CAAC;IAE7B,2EAA2E;IAC3E,IACE,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,GAAG;QAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,QAAQ;QAC9C,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EACrC,CAAC;QACD,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAClD,CAAC;IAED,0DAA0D;IAC1D,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IACtC,CAAC;IAED,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;QACvB,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,uBAAuB,GAAwB,IAAI,GAAG,CAAC;IAC3D,kEAAkE;IAClE,oDAAoD;IACpD,qBAAqB;IACrB,uBAAuB;IACvB,0DAA0D;IAC1D,MAAM;IACN,UAAU;IACV,QAAQ;IACR,SAAS;IACT,OAAO;IACP,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC;IAC5D,gBAAgB;IAChB,eAAe;IACf,mBAAmB;CACpB,CAAC,CAAC;AAUH,MAAM,UAAU,wBAAwB,CACtC,OAAwC;IAExC,MAAM,GAAG,GAA4B;QACnC,CAAC,mBAAmB,EAAE,OAAO,CAAC,SAAS,CAAC;KACzC,CAAC;IACF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,qEAAqE;QACrE,GAAG,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,IAAI,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;YAC9C,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;YAC9C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,IAAc,EACd,OAA4E;IAE5E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,QAAQ,GAAG,IAAI,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACxD,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,OAAO,GAAG,IAAI,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,sEAAsE;QACtE,wEAAwE;QACxE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEnC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7D,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,GAA8B,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC1D,CAAC,CAAC,IAAI,GAAG,YAAY,CAAC;gBACtB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,GAAmE,IAAI,KAAK,CACjF,yBAAyB,OAAO,CAAC,SAAS,IAAI,CAC/C,CAAC;gBACF,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;gBACrB,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;gBAChB,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;gBAClB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;YACD,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,2DAA2D;QAC3D,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,EAAE;AACF,sEAAsE;AACtE,2EAA2E;AAC3E,wEAAwE;AACxE,yEAAyE;AACzE,0EAA0E;AAC1E,4EAA4E;AAC5E,oEAAoE;AACpE,yEAAyE;AACzE,sEAAsE;AACtE,0EAA0E;AAC1E,wEAAwE;AACxE,2DAA2D;AAE3D,uDAAuD;AACvD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AA8BzD,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IACzC,UAAU,CAAS;IACnB,MAAM,GAAG,IAAI,CAAC;IACd,MAAM,GAAG,SAAS,CAAC;IAC5B,YAAY,SAAiB,EAAE,UAAkB;QAC/C,KAAK,CAAC,qCAAqC,SAAS,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,IAAc,EACd,OAAkC;IAElC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC3C,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC;IACxD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;IAEtD,OAAO,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE;YAClC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,UAAU,GAAiB,IAAI,CAAC;QACpC,IAAI,QAAmC,CAAC;QACxC,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,mBAAmB,GAAG,KAAK,CAAC;QAChC,IAAI,UAAsC,CAAC;QAC3C,IAAI,cAA0C,CAAC;QAE/C,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAQ,EAAE;YACtC,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,uEAAuE;YACzE,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,GAAS,EAAE;YAC/B,IAAI,CAAC;gBACH,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,KAAa,EAAQ,EAAE;YAC3C,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,mBAAmB,EAAE,CAAC;oBACxB,IAAI,EAAE,KAAK,CAAC,CAAC;wBAAE,OAAO,CAAC,sCAAsC;oBAC7D,mBAAmB,GAAG,KAAK,CAAC;oBAC5B,aAAa,EAAE,CAAC;oBAChB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBACD,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;oBACd,KAAK,IAAI,IAAI,CAAC;oBACd,IAAI,KAAK,CAAC,MAAM,GAAG,yBAAyB,EAAE,CAAC;wBAC7C,KAAK,GAAG,EAAE,CAAC;wBACX,mBAAmB,GAAG,IAAI,CAAC;oBAC7B,CAAC;oBACD,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvC,KAAK,GAAG,EAAE,CAAC;gBACX,IAAI,IAAI,CAAC,MAAM,GAAG,yBAAyB,EAAE,CAAC;oBAC5C,aAAa,EAAE,CAAC,CAAC,kDAAkD;gBACrE,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC;gBACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,GAAS,EAAE;YAC5B,IAAI,mBAAmB,EAAE,CAAC;gBACxB,mBAAmB,GAAG,KAAK,CAAC;gBAC5B,aAAa,EAAE,CAAC;YAClB,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YACD,KAAK,GAAG,EAAE,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,GAAS,EAAE;YACxB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,IAAI,UAAU;gBAAE,YAAY,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,cAAc;gBAAE,YAAY,CAAC,cAAc,CAAC,CAAC;YACjD,oEAAoE;YACpE,iEAAiE;YACjE,UAAU,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBACzC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBACzC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACxB,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;YACD,IAAI,UAAU;gBAAE,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,QAAQ;gBAAE,OAAO,MAAM,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YAC1F,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC;QAEF,wEAAwE;QACxE,uEAAuE;QACvE,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;YACD,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACP,yBAAyB;gBAC3B,CAAC;YACH,CAAC,EAAE,cAAc,CAAC,CAAC;YACnB,cAAc,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACtB,SAAS,CAAC,KAAK,EAAE,CAAC;QAElB,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,yEAAyE;QACzE,0EAA0E;QAC1E,gDAAgD;QAChD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEnC,iEAAiE;QACjE,mCAAmC;QACnC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,UAAU,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEnC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,UAAU,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACjE,MAAM,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,QAAQ,GAAG,IAAI,CAAC;YAChB,mEAAmE;YACnE,+CAA+C;YAC/C,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YACjD,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,QAAQ,KAAK,SAAS;gBAAE,QAAQ,GAAG,IAAI,CAAC;YAC5C,MAAM,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,yEAAyE;QACzE,0EAA0E;QAC1E,wEAAwE;QACxE,mEAAmE;QACnE,oEAAoE;QACpE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YACrD,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,sBAAsB;gBAAE,OAAO;YACxE,gFAAgF;QAClF,CAAC,CAAC,CAAC;QACH,qEAAqE;QACrE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,EAAE;AACF,uEAAuE;AACvE,4EAA4E;AAC5E,2EAA2E;AAC3E,kDAAkD;AAElD,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAEjD,iFAAiF;AACjF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;AAE1C,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC9D,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,IAAI,CAAC;QACH,IAAI,CAAC;YACH,cAAc,CAAC,UAAU,CAAC,GAAG,EAAE;gBAC7B,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,iCAAiC;aAC7C,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gHAAgH;IAClH,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,gCAAgC;AAC3F,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,wCAAwC;AAClG,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAChD,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAElD,IAAI,WAAW,GAAG,CAAC,CAAC;AASpB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,2BAA2B,CACzC,UAAyC,EAAE;IAE3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1C,IAAI,GAAG,GAAG,WAAW,GAAG,2BAA2B;QAAE,OAAO,IAAI,CAAC;IACjE,WAAW,GAAG,GAAG,CAAC,CAAC,iDAAiD;IACpE,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC;IAE7C,OAAO,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;oBAAE,SAAS;gBACrD,IAAI,QAAQ,IAAI,8BAA8B;oBAAE,MAAM;gBACtD,IAAI,OAAO,IAAI,6BAA6B;oBAAE,MAAM;gBACpD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC7B,iEAAiE;gBACjE,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACxC,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAS,CAAC;gBACd,IAAI,CAAC;oBACH,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,qEAAqE;gBACrE,yCAAyC;gBACzC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;oBAAE,SAAS;gBAChC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC/B,IAAI,GAAG,KAAK,SAAS,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG;oBAAE,SAAS;gBAClD,IAAI,GAAG,GAAG,EAAE,CAAC,OAAO,GAAG,sBAAsB;oBAAE,SAAS;gBACxD,IAAI,CAAC;oBACH,MAAM,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE;wBAChC,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,IAAI;wBACX,SAAS,EAAE,qCAAqC;qBACjD,CAAC,CAAC;oBACH,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAAC,MAAM,CAAC;oBACP,uFAAuF;gBACzF,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAED,2BAA2B;AAC3B,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,eAAe;IACf,eAAe;QACb,WAAW,GAAG,CAAC,CAAC;IAClB,CAAC;CACF,CAAC"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * codexUsageParser — line-wise, shape-validated token-usage extraction from
3
+ * the `codex exec --json` event stream (token-audit-completeness spec).
4
+ *
5
+ * SECURITY / INJECTION POSTURE: usage parsing operates line-wise via
6
+ * `JSON.parse` with TOP-LEVEL shape validation; substring/regex matching over
7
+ * the raw stream is FORBIDDEN — model content embedded inside event string
8
+ * fields is structurally incapable of matching a top-level parse. (The
9
+ * key-substring pre-filter below only decides whether to ATTEMPT the parse —
10
+ * it cannot extract values, so the injection rationale is untouched.)
11
+ *
12
+ * Two known event shapes, with an explicit precedence rule:
13
+ *
14
+ * 1. Protocol shape (AUTHORITATIVE when present):
15
+ * {"msg":{"type":"token_count","info":{"total_token_usage":{...}}}}
16
+ * (also matched under a `payload` key). CUMULATIVE — the last event wins
17
+ * within this shape. Verified against a real codex 0.136.0 rollout:
18
+ * `input_tokens` includes `cached_input_tokens`;
19
+ * `total_tokens = input_tokens + output_tokens`.
20
+ *
21
+ * 2. Thread-event shape (only when NO protocol event appeared):
22
+ * {"type":"turn.completed","usage":{...}}
23
+ * PER-TURN — summed across all `turn.completed` events.
24
+ *
25
+ * Never mixed in one accounting. When BOTH shapes appear in one stream, the
26
+ * protocol total is recorded and a large divergence from the thread-event sum
27
+ * emits the drift reason `shape-divergence` — a free consistency oracle
28
+ * against partial-cadence drift (a CLI that keeps the shape but stops
29
+ * emitting mid-stream).
30
+ *
31
+ * Token fields are clamped to non-negative finite integers; a protocol sample
32
+ * whose `total_tokens` reconciliation fails is DROPPED, not recorded — and the
33
+ * drop counts as zero-usage for the drift tripwire (`reconciliation-failed`),
34
+ * so systematic reconciliation failure cannot recreate silent token-blindness.
35
+ *
36
+ * Mapping: tokensIn = input_tokens; tokensOut = output_tokens +
37
+ * (reasoning_output_tokens iff total_tokens reconciliation shows they are
38
+ * additive); tokensCached = cached_input_tokens (a subset of tokensIn).
39
+ */
40
+ export interface CodexUsageSample {
41
+ inputTokens: number;
42
+ outputTokens: number;
43
+ cachedTokens: number;
44
+ }
45
+ export type CodexUsageDriftReason = 'no-events' | 'empty-stream' | 'reconciliation-failed' | 'shape-divergence' | 'oversized-lines-discarded';
46
+ export interface CodexUsageFinalizeResult {
47
+ /** Final recorded usage, or null when none survived validation. */
48
+ usage: CodexUsageSample | null;
49
+ /**
50
+ * Drift reasons for the tripwire. Zero-usage reasons (no-events /
51
+ * empty-stream / reconciliation-failed) only apply on a successful exit;
52
+ * consistency reasons (shape-divergence / oversized-lines-discarded) are
53
+ * reported whenever observed on a successful exit.
54
+ */
55
+ driftReasons: CodexUsageDriftReason[];
56
+ }
57
+ /**
58
+ * Accumulates usage events from COMPLETE lines of a `codex exec --json`
59
+ * stream. Line assembly (chunk boundaries, the carry-buffer cap) is the spawn
60
+ * helper's job — this class assumes whole lines.
61
+ */
62
+ export declare class CodexUsageAccumulator {
63
+ private lastProtocol;
64
+ private threadSum;
65
+ private sawAnyLine;
66
+ private oversizedDiscards;
67
+ /** Feed one complete line from the event stream. Malformed lines are skipped. */
68
+ feedLine(line: string): void;
69
+ /**
70
+ * Record that the spawn helper discarded an over-cap line unparsed. Usage
71
+ * events are <1 KB so the cap cannot lose usage, but the discard is
72
+ * surfaced to the drift tripwire.
73
+ */
74
+ noteOversizedDiscard(): void;
75
+ /**
76
+ * Finalize accounting. `success` = the call exited 0 (drift reasons are
77
+ * only reported for successful calls — a failed call legitimately lacks
78
+ * usage and is visible as an error row instead).
79
+ */
80
+ finalize(opts: {
81
+ success: boolean;
82
+ }): CodexUsageFinalizeResult;
83
+ }
84
+ //# sourceMappingURL=codexUsageParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexUsageParser.d.ts","sourceRoot":"","sources":["../../../../../src/providers/adapters/openai-codex/transport/codexUsageParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,cAAc,GACd,uBAAuB,GACvB,kBAAkB,GAClB,2BAA2B,CAAC;AAEhC,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC/B;;;;;OAKG;IACH,YAAY,EAAE,qBAAqB,EAAE,CAAC;CACvC;AA4CD;;;;GAIG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,SAAS,CAAkE;IACnF,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAK;IAE9B,iFAAiF;IACjF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAyC5B;;;;OAIG;IACH,oBAAoB,IAAI,IAAI;IAI5B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,wBAAwB;CAoE/D"}