nexus-agents 2.30.8 → 2.31.0

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 (84) hide show
  1. package/dist/{adaptive-memory-THOGYVKK.js → adaptive-memory-EDCJHRH3.js} +3 -3
  2. package/dist/{chunk-2L6A7RUZ.js → chunk-2JPQ2ICM.js} +3 -3
  3. package/dist/{chunk-4PRT4F7I.js → chunk-4VB3PQTO.js} +6 -6
  4. package/dist/{chunk-US7Z5ITC.js → chunk-6BOVBYY5.js} +6 -6
  5. package/dist/{chunk-ZXIFNJ7Q.js → chunk-6SUCK2NV.js} +2 -2
  6. package/dist/{chunk-ILGF6JIL.js → chunk-7DNUEEGG.js} +67 -39
  7. package/dist/{chunk-ILGF6JIL.js.map → chunk-7DNUEEGG.js.map} +1 -1
  8. package/dist/{chunk-6V3HZQRC.js → chunk-7PZGCG37.js} +2 -2
  9. package/dist/{chunk-32ZTPL7Q.js → chunk-DGMLBF4U.js} +2 -2
  10. package/dist/{chunk-YSBHF2TG.js → chunk-FO6C5AQ6.js} +2 -2
  11. package/dist/{chunk-UMM5PVLB.js → chunk-FPBRLZXV.js} +2 -2
  12. package/dist/{chunk-I66ZKP33.js → chunk-GLOJ6EDL.js} +2 -2
  13. package/dist/{chunk-GNR437CG.js → chunk-K5N4OL66.js} +321 -63
  14. package/dist/chunk-K5N4OL66.js.map +1 -0
  15. package/dist/{chunk-KFHU4P75.js → chunk-MNHC65DB.js} +4 -4
  16. package/dist/{chunk-IFIRZ35E.js → chunk-OREUX6UF.js} +2 -2
  17. package/dist/{chunk-MDFQ3G3Y.js → chunk-PR7QRV6S.js} +6 -6
  18. package/dist/{chunk-V7GL5HZF.js → chunk-PTLZM2LZ.js} +3 -3
  19. package/dist/{chunk-HIVFP5CS.js → chunk-R4LU2LYM.js} +4 -4
  20. package/dist/{chunk-2HAZZAU5.js → chunk-SUDYZIVI.js} +2 -2
  21. package/dist/{chunk-2W7AM3I7.js → chunk-VUJ2PDT7.js} +3 -3
  22. package/dist/{chunk-GUO4TIIX.js → chunk-WFG3BWWK.js} +2 -2
  23. package/dist/{chunk-VCYDKMGJ.js → chunk-YLDYHQ4Y.js} +2 -2
  24. package/dist/{cli-circuit-breaker-MBTG6XC7.js → cli-circuit-breaker-U3XLQNCL.js} +4 -4
  25. package/dist/cli.js +22 -20
  26. package/dist/cli.js.map +1 -1
  27. package/dist/{composite-router-IRF52MS7.js → composite-router-QGP6USAP.js} +2 -2
  28. package/dist/{consensus-vote-6U4LANAT.js → consensus-vote-GEQK32G7.js} +7 -7
  29. package/dist/{doctor-deep-RMOKEOCC.js → doctor-deep-3VFOZERZ.js} +3 -3
  30. package/dist/{expert-bridge-DXSKS5OG.js → expert-bridge-RDY47MFM.js} +3 -3
  31. package/dist/{factory-FYHY577A.js → factory-3DVB6TV6.js} +4 -4
  32. package/dist/{factory-SUZOQZOE.js → factory-VEXE4RXU.js} +5 -5
  33. package/dist/index.d.ts +34 -34
  34. package/dist/index.js +18 -18
  35. package/dist/index.js.map +1 -1
  36. package/dist/{issue-triage-KGXVGBZR.js → issue-triage-SCQMQI6A.js} +4 -4
  37. package/dist/{mcp-config-PS73M32C.js → mcp-config-F6ZJD564.js} +3 -3
  38. package/dist/{mobimem-ATF4YCSJ.js → mobimem-XYRENZW7.js} +2 -2
  39. package/dist/{repo-security-plan-VMTRN3PJ.js → repo-security-plan-XPOOUKAV.js} +3 -3
  40. package/dist/research-helpers-synthesize-MRO44W5J.js +10 -0
  41. package/dist/{routing-memory-5VJTEGLC.js → routing-memory-YUETBIJU.js} +2 -2
  42. package/dist/{session-memory-UA3L4Q6K.js → session-memory-7MHDTB6O.js} +3 -3
  43. package/dist/{setup-command-KUZZLEZ4.js → setup-command-LZB74W4I.js} +7 -7
  44. package/dist/{setup-config-IJ6RFRA4.js → setup-config-KPMWBIHD.js} +3 -3
  45. package/dist/{weather-report-B43EV36T.js → weather-report-3WN4FVQ6.js} +2 -2
  46. package/package.json +1 -1
  47. package/dist/chunk-GNR437CG.js.map +0 -1
  48. package/dist/research-helpers-synthesize-A6ZTAYLN.js +0 -10
  49. /package/dist/{adaptive-memory-THOGYVKK.js.map → adaptive-memory-EDCJHRH3.js.map} +0 -0
  50. /package/dist/{chunk-2L6A7RUZ.js.map → chunk-2JPQ2ICM.js.map} +0 -0
  51. /package/dist/{chunk-4PRT4F7I.js.map → chunk-4VB3PQTO.js.map} +0 -0
  52. /package/dist/{chunk-US7Z5ITC.js.map → chunk-6BOVBYY5.js.map} +0 -0
  53. /package/dist/{chunk-ZXIFNJ7Q.js.map → chunk-6SUCK2NV.js.map} +0 -0
  54. /package/dist/{chunk-6V3HZQRC.js.map → chunk-7PZGCG37.js.map} +0 -0
  55. /package/dist/{chunk-32ZTPL7Q.js.map → chunk-DGMLBF4U.js.map} +0 -0
  56. /package/dist/{chunk-YSBHF2TG.js.map → chunk-FO6C5AQ6.js.map} +0 -0
  57. /package/dist/{chunk-UMM5PVLB.js.map → chunk-FPBRLZXV.js.map} +0 -0
  58. /package/dist/{chunk-I66ZKP33.js.map → chunk-GLOJ6EDL.js.map} +0 -0
  59. /package/dist/{chunk-KFHU4P75.js.map → chunk-MNHC65DB.js.map} +0 -0
  60. /package/dist/{chunk-IFIRZ35E.js.map → chunk-OREUX6UF.js.map} +0 -0
  61. /package/dist/{chunk-MDFQ3G3Y.js.map → chunk-PR7QRV6S.js.map} +0 -0
  62. /package/dist/{chunk-V7GL5HZF.js.map → chunk-PTLZM2LZ.js.map} +0 -0
  63. /package/dist/{chunk-HIVFP5CS.js.map → chunk-R4LU2LYM.js.map} +0 -0
  64. /package/dist/{chunk-2HAZZAU5.js.map → chunk-SUDYZIVI.js.map} +0 -0
  65. /package/dist/{chunk-2W7AM3I7.js.map → chunk-VUJ2PDT7.js.map} +0 -0
  66. /package/dist/{chunk-GUO4TIIX.js.map → chunk-WFG3BWWK.js.map} +0 -0
  67. /package/dist/{chunk-VCYDKMGJ.js.map → chunk-YLDYHQ4Y.js.map} +0 -0
  68. /package/dist/{cli-circuit-breaker-MBTG6XC7.js.map → cli-circuit-breaker-U3XLQNCL.js.map} +0 -0
  69. /package/dist/{composite-router-IRF52MS7.js.map → composite-router-QGP6USAP.js.map} +0 -0
  70. /package/dist/{consensus-vote-6U4LANAT.js.map → consensus-vote-GEQK32G7.js.map} +0 -0
  71. /package/dist/{doctor-deep-RMOKEOCC.js.map → doctor-deep-3VFOZERZ.js.map} +0 -0
  72. /package/dist/{expert-bridge-DXSKS5OG.js.map → expert-bridge-RDY47MFM.js.map} +0 -0
  73. /package/dist/{factory-FYHY577A.js.map → factory-3DVB6TV6.js.map} +0 -0
  74. /package/dist/{factory-SUZOQZOE.js.map → factory-VEXE4RXU.js.map} +0 -0
  75. /package/dist/{issue-triage-KGXVGBZR.js.map → issue-triage-SCQMQI6A.js.map} +0 -0
  76. /package/dist/{mcp-config-PS73M32C.js.map → mcp-config-F6ZJD564.js.map} +0 -0
  77. /package/dist/{mobimem-ATF4YCSJ.js.map → mobimem-XYRENZW7.js.map} +0 -0
  78. /package/dist/{repo-security-plan-VMTRN3PJ.js.map → repo-security-plan-XPOOUKAV.js.map} +0 -0
  79. /package/dist/{research-helpers-synthesize-A6ZTAYLN.js.map → research-helpers-synthesize-MRO44W5J.js.map} +0 -0
  80. /package/dist/{routing-memory-5VJTEGLC.js.map → routing-memory-YUETBIJU.js.map} +0 -0
  81. /package/dist/{session-memory-UA3L4Q6K.js.map → session-memory-7MHDTB6O.js.map} +0 -0
  82. /package/dist/{setup-command-KUZZLEZ4.js.map → setup-command-LZB74W4I.js.map} +0 -0
  83. /package/dist/{setup-config-IJ6RFRA4.js.map → setup-config-KPMWBIHD.js.map} +0 -0
  84. /package/dist/{weather-report-B43EV36T.js.map → weather-report-3WN4FVQ6.js.map} +0 -0
@@ -354,6 +354,262 @@ function extractJsonObject(text) {
354
354
  return text.slice(start, end + 1);
355
355
  }
356
356
 
357
+ // src/core/step-events.ts
358
+ var STEP_SUMMARY_MAX_LEN = 120;
359
+ function truncateSummary(s) {
360
+ if (s === void 0) return void 0;
361
+ if (s.length <= STEP_SUMMARY_MAX_LEN) return s;
362
+ return s.slice(0, STEP_SUMMARY_MAX_LEN - 1) + "\u2026";
363
+ }
364
+
365
+ // src/core/step-bus.ts
366
+ import { EventEmitter } from "events";
367
+ var StepBus = class extends EventEmitter {
368
+ emit(eventName, event) {
369
+ return super.emit(eventName, event);
370
+ }
371
+ on(eventName, listener) {
372
+ return super.on(eventName, listener);
373
+ }
374
+ off(eventName, listener) {
375
+ return super.off(eventName, listener);
376
+ }
377
+ };
378
+ var stepBus = new StepBus();
379
+ stepBus.setMaxListeners(20);
380
+
381
+ // src/core/with-step.ts
382
+ import { AsyncLocalStorage } from "async_hooks";
383
+ import { randomBytes } from "crypto";
384
+ var als = new AsyncLocalStorage();
385
+ function newStepId() {
386
+ return randomBytes(8).toString("hex");
387
+ }
388
+ var ERROR_CATEGORY_KEYWORDS = [
389
+ { match: ["timeout", "timed out"], cat: "timeout" },
390
+ { match: ["rate limit", "rate-limited"], cat: "rate_limit" },
391
+ { match: ["parse", "json"], cat: "parse" },
392
+ { match: ["connection", "econnref", "network"], cat: "connection" },
393
+ { match: ["policy", "not allowed", "forbidden"], cat: "policy" }
394
+ ];
395
+ function categorizeError(err2) {
396
+ if (!(err2 instanceof Error)) return "unknown";
397
+ const m = err2.message.toLowerCase();
398
+ for (const { match, cat } of ERROR_CATEGORY_KEYWORDS) {
399
+ if (match.some((kw) => m.includes(kw))) return cat;
400
+ }
401
+ return "execution";
402
+ }
403
+ function resolveParent(opts) {
404
+ if (opts.parent === null) return void 0;
405
+ return opts.parent ?? als.getStore();
406
+ }
407
+ function emitStarted(rt) {
408
+ const event = {
409
+ event: "step.started",
410
+ stepId: rt.stepId,
411
+ name: rt.opts.name,
412
+ kind: rt.opts.kind,
413
+ startedAt: new Date(rt.startNs).toISOString(),
414
+ ...rt.parentStepId !== void 0 ? { parentStepId: rt.parentStepId } : {},
415
+ ...rt.opts.attrs !== void 0 ? { attrs: rt.opts.attrs } : {}
416
+ };
417
+ stepBus.emit("step", event);
418
+ }
419
+ function emitCompleted(rt, summary) {
420
+ const event = {
421
+ event: "step.completed",
422
+ stepId: rt.stepId,
423
+ name: rt.opts.name,
424
+ kind: rt.opts.kind,
425
+ durationMs: getTimeProvider().now() - rt.startNs,
426
+ status: "ok",
427
+ ...rt.parentStepId !== void 0 ? { parentStepId: rt.parentStepId } : {},
428
+ ...rt.opts.attrs !== void 0 ? { attrs: rt.opts.attrs } : {},
429
+ ...summary !== void 0 ? { summary } : {}
430
+ };
431
+ stepBus.emit("step", event);
432
+ }
433
+ function emitFailed(rt, err2, summary) {
434
+ const errSummary = summary ?? (err2 instanceof Error ? truncateSummary(err2.message) : void 0);
435
+ const event = {
436
+ event: "step.failed",
437
+ stepId: rt.stepId,
438
+ name: rt.opts.name,
439
+ kind: rt.opts.kind,
440
+ durationMs: getTimeProvider().now() - rt.startNs,
441
+ status: "failed",
442
+ errorCategory: categorizeError(err2),
443
+ ...rt.parentStepId !== void 0 ? { parentStepId: rt.parentStepId } : {},
444
+ ...rt.opts.attrs !== void 0 ? { attrs: rt.opts.attrs } : {},
445
+ ...errSummary !== void 0 ? { summary: errSummary } : {}
446
+ };
447
+ stepBus.emit("step", event);
448
+ }
449
+ async function withStep(opts, fn) {
450
+ const rt = {
451
+ stepId: newStepId(),
452
+ parentStepId: resolveParent(opts),
453
+ opts,
454
+ startNs: getTimeProvider().now()
455
+ };
456
+ let summary;
457
+ const ctx = {
458
+ stepId: rt.stepId,
459
+ setSummary(text) {
460
+ summary = truncateSummary(text);
461
+ },
462
+ child(childOpts) {
463
+ return { ...childOpts, parent: rt.stepId };
464
+ }
465
+ };
466
+ emitStarted(rt);
467
+ try {
468
+ const result = await als.run(rt.stepId, () => fn(ctx));
469
+ emitCompleted(rt, summary);
470
+ return result;
471
+ } catch (err2) {
472
+ emitFailed(rt, err2, summary);
473
+ throw err2;
474
+ }
475
+ }
476
+
477
+ // src/core/console-renderer.ts
478
+ var DEPTH_INDENT = " ";
479
+ var parents = /* @__PURE__ */ new Map();
480
+ function depthFor(stepId, parentId) {
481
+ if (parentId === void 0) return 0;
482
+ let depth = 0;
483
+ let cur = parentId;
484
+ const seen = /* @__PURE__ */ new Set();
485
+ while (cur !== void 0 && !seen.has(cur)) {
486
+ seen.add(cur);
487
+ depth += 1;
488
+ cur = parents.get(cur);
489
+ }
490
+ return depth;
491
+ }
492
+ function fmtDuration(ms) {
493
+ if (ms < 1e3) return `${String(ms)}ms`;
494
+ const s = ms / 1e3;
495
+ if (s < 60) return `${s.toFixed(1)}s`;
496
+ const min = Math.floor(s / 60);
497
+ const secs = Math.round(s - min * 60);
498
+ return `${String(min)}m${String(secs).padStart(2, "0")}s`;
499
+ }
500
+ function padRight(s, width) {
501
+ if (s.length >= width) return s;
502
+ return s + " ".repeat(width - s.length);
503
+ }
504
+ var glyphFmt = {
505
+ start(depth, name) {
506
+ return `${DEPTH_INDENT.repeat(depth)}\u22EE ${padRight(name, 28)}\u2026
507
+ `;
508
+ },
509
+ ok(depth, name, durationMs2, summary) {
510
+ const base = `${DEPTH_INDENT.repeat(depth)}\u2713 ${padRight(name, 28)}${fmtDuration(durationMs2).padStart(6)}`;
511
+ return summary !== void 0 && summary !== "" ? `${base} ${summary}
512
+ ` : `${base}
513
+ `;
514
+ },
515
+ fail(depth, name, durationMs2, category, summary) {
516
+ const base = `${DEPTH_INDENT.repeat(depth)}\u2717 ${padRight(name, 28)}${fmtDuration(durationMs2).padStart(6)} FAILED ${category}`;
517
+ return summary !== void 0 && summary !== "" ? `${base}: ${summary}
518
+ ` : `${base}
519
+ `;
520
+ }
521
+ };
522
+ var asciiFmt = {
523
+ start(depth, name) {
524
+ return `${DEPTH_INDENT.repeat(depth)}[start] ${name}
525
+ `;
526
+ },
527
+ ok(depth, name, durationMs2, summary) {
528
+ const base = `${DEPTH_INDENT.repeat(depth)}[ ok ] ${padRight(name, 28)} ${fmtDuration(durationMs2)}`;
529
+ return summary !== void 0 && summary !== "" ? `${base} ${summary}
530
+ ` : `${base}
531
+ `;
532
+ },
533
+ fail(depth, name, durationMs2, category, summary) {
534
+ const base = `${DEPTH_INDENT.repeat(depth)}[FAIL ] ${padRight(name, 28)} ${fmtDuration(durationMs2)} [${category}]`;
535
+ return summary !== void 0 && summary !== "" ? `${base}: ${summary}
536
+ ` : `${base}
537
+ `;
538
+ }
539
+ };
540
+ function startConsoleRenderer(opts = {}) {
541
+ const write = opts.write ?? ((line) => {
542
+ process.stderr.write(line);
543
+ });
544
+ const isTty = opts.tty ?? process.stderr.isTTY;
545
+ const noColor = opts.noColor ?? process.env["NO_COLOR"] !== void 0;
546
+ const fmt = isTty && !noColor ? glyphFmt : asciiFmt;
547
+ const handler = (event) => {
548
+ const depth = depthFor(event.stepId, event.parentStepId);
549
+ switch (event.event) {
550
+ case "step.started":
551
+ parents.set(event.stepId, event.parentStepId);
552
+ write(fmt.start(depth, event.name));
553
+ return;
554
+ case "step.completed":
555
+ write(fmt.ok(depth, event.name, event.durationMs, event.summary));
556
+ parents.delete(event.stepId);
557
+ return;
558
+ case "step.failed":
559
+ write(fmt.fail(depth, event.name, event.durationMs, event.errorCategory, event.summary));
560
+ parents.delete(event.stepId);
561
+ return;
562
+ }
563
+ };
564
+ stepBus.on("step", handler);
565
+ return {
566
+ dispose() {
567
+ stepBus.off("step", handler);
568
+ }
569
+ };
570
+ }
571
+
572
+ // src/core/step-logger-bridge.ts
573
+ var logger2 = createLogger({ component: "step-events" });
574
+ function startStepLoggerBridge() {
575
+ const handler = (event) => {
576
+ const payload = { ...event };
577
+ if (event.event === "step.failed") {
578
+ logger2.warn("step.failed", payload);
579
+ } else {
580
+ logger2.info(event.event, payload);
581
+ }
582
+ };
583
+ stepBus.on("step", handler);
584
+ return {
585
+ dispose() {
586
+ stepBus.off("step", handler);
587
+ }
588
+ };
589
+ }
590
+
591
+ // src/core/step-notifications.ts
592
+ function shouldEnableConsoleRenderer(mode) {
593
+ const env = process.env["NEXUS_CONSOLE"];
594
+ if (env === "0" || env === "false" || env === "off") return false;
595
+ if (env === "1" || env === "true" || env === "on") return true;
596
+ return mode !== "mcp-stdio";
597
+ }
598
+ var active;
599
+ function bootstrapStepNotifications(opts) {
600
+ if (active !== void 0) return active;
601
+ const bridge = startStepLoggerBridge();
602
+ const renderer = shouldEnableConsoleRenderer(opts.mode) ? startConsoleRenderer() : void 0;
603
+ active = {
604
+ dispose() {
605
+ bridge.dispose();
606
+ renderer?.dispose();
607
+ active = void 0;
608
+ }
609
+ };
610
+ return active;
611
+ }
612
+
357
613
  // src/core/errors.ts
358
614
  var ErrorCode = {
359
615
  // Validation errors
@@ -1715,7 +1971,7 @@ function isZodError(error) {
1715
1971
  }
1716
1972
 
1717
1973
  // src/core/task-analysis/task-type-classifier.ts
1718
- var logger2 = createLogger({ component: "task-type-classifier" });
1974
+ var logger3 = createLogger({ component: "task-type-classifier" });
1719
1975
 
1720
1976
  // src/core/task-analysis/product-type-detector.ts
1721
1977
  var PRODUCT_TYPE_KEYWORDS = {
@@ -2578,7 +2834,7 @@ function toExpertTaskAnalysisResult(analysis) {
2578
2834
  }
2579
2835
 
2580
2836
  // src/core/random-provider.ts
2581
- import { randomBytes, randomInt as cryptoRandomInt } from "crypto";
2837
+ import { randomBytes as randomBytes2, randomInt as cryptoRandomInt } from "crypto";
2582
2838
  var CHARS = "abcdefghijklmnopqrstuvwxyz0123456789";
2583
2839
  var UNBIASED_LIMIT = CHARS.length * Math.floor(256 / CHARS.length);
2584
2840
  var SystemRandomProvider = class {
@@ -2593,7 +2849,7 @@ var SystemRandomProvider = class {
2593
2849
  let result = "";
2594
2850
  while (result.length < length) {
2595
2851
  const needed = length - result.length;
2596
- const bytes = randomBytes(needed + 4);
2852
+ const bytes = randomBytes2(needed + 4);
2597
2853
  for (let i = 0; i < bytes.length && result.length < length; i++) {
2598
2854
  const b = bytes[i] ?? 0;
2599
2855
  if (b < UNBIASED_LIMIT) {
@@ -2953,7 +3209,7 @@ function createBudgetExceededError(budget, result, currentBudget) {
2953
3209
  }
2954
3210
 
2955
3211
  // src/cli-adapters/budget-router.ts
2956
- var logger3 = createLogger({ component: "budget-router" });
3212
+ var logger4 = createLogger({ component: "budget-router" });
2957
3213
  var DEFAULT_OPTIONS = {
2958
3214
  defaultConstraints: {
2959
3215
  maxTokens: 1e5,
@@ -3028,7 +3284,7 @@ var BudgetRouter = class {
3028
3284
  if (usage.costUsd !== void 0) {
3029
3285
  this.costSpentUsd += usage.costUsd;
3030
3286
  }
3031
- logger3.debug("Budget updated", {
3287
+ logger4.debug("Budget updated", {
3032
3288
  tokensUsed: this.tokensUsed,
3033
3289
  costSpentUsd: this.costSpentUsd
3034
3290
  });
@@ -3040,7 +3296,7 @@ var BudgetRouter = class {
3040
3296
  this.tokensUsed = 0;
3041
3297
  this.costSpentUsd = 0;
3042
3298
  this.sessionStartedAt = new Date(getTimeProvider().now());
3043
- logger3.info("Budget reset");
3299
+ logger4.info("Budget reset");
3044
3300
  const resetInterval = this.options.sessionBudget.resetIntervalMs ?? 36e5;
3045
3301
  if (resetInterval > 0) {
3046
3302
  this.scheduleReset();
@@ -3088,7 +3344,7 @@ var BudgetRouter = class {
3088
3344
  );
3089
3345
  return Promise.resolve({ ok: false, error });
3090
3346
  }
3091
- logger3.debug("Budget routing decision", {
3347
+ logger4.debug("Budget routing decision", {
3092
3348
  withinBudget: result.withinBudget,
3093
3349
  adapter: result.adapter?.name,
3094
3350
  estimatedCost: result.estimatedCostUsd,
@@ -3126,9 +3382,9 @@ var BudgetRouter = class {
3126
3382
  logWarnings(warnings) {
3127
3383
  for (const warning of warnings) {
3128
3384
  if (warning.level === "critical") {
3129
- logger3.warn("Budget critical warning", { warning });
3385
+ logger4.warn("Budget critical warning", { warning });
3130
3386
  } else {
3131
- logger3.debug("Budget warning", { warning });
3387
+ logger4.debug("Budget warning", { warning });
3132
3388
  }
3133
3389
  }
3134
3390
  }
@@ -3143,7 +3399,7 @@ var BudgetRouter = class {
3143
3399
  this.updateBudget({ tokens: actualTokens, costUsd: actualCostUsd });
3144
3400
  const budgetAfter = this.getSessionBudget();
3145
3401
  const durationMs2 = getTimeProvider().now() - startTime;
3146
- logger3.info("Task executed with budget tracking", {
3402
+ logger4.info("Task executed with budget tracking", {
3147
3403
  adapter: adapter.name,
3148
3404
  actualTokens,
3149
3405
  actualCostUsd,
@@ -3373,9 +3629,9 @@ var DEFAULT_OUTPUT_TOKENS = 500;
3373
3629
  var TopsisRouter = class {
3374
3630
  config;
3375
3631
  logger;
3376
- constructor(config = {}, logger9) {
3632
+ constructor(config = {}, logger10) {
3377
3633
  this.config = { ...DEFAULT_TOPSIS_CONFIG, ...config };
3378
- this.logger = logger9 ?? createLogger({ component: "TopsisRouter" });
3634
+ this.logger = logger10 ?? createLogger({ component: "TopsisRouter" });
3379
3635
  this.validateWeights();
3380
3636
  }
3381
3637
  /**
@@ -4168,7 +4424,7 @@ var QueryFeatureExtractor = class {
4168
4424
  };
4169
4425
 
4170
4426
  // src/cli-adapters/preference-router.ts
4171
- var logger4 = createLogger({ component: "PreferenceRouter" });
4427
+ var logger5 = createLogger({ component: "PreferenceRouter" });
4172
4428
  var PreferenceRouter = class {
4173
4429
  config;
4174
4430
  dataStore;
@@ -4181,7 +4437,7 @@ var PreferenceRouter = class {
4181
4437
  this.config = validated;
4182
4438
  this.dataStore = dataStore ?? new InMemoryPreferenceStore(validated.maxDataPoints);
4183
4439
  this.featureExtractor = new QueryFeatureExtractor();
4184
- logger4.info("PreferenceRouter initialized", {
4440
+ logger5.info("PreferenceRouter initialized", {
4185
4441
  strongModel: this.config.strongModel.cli,
4186
4442
  weakModel: this.config.weakModel.cli,
4187
4443
  threshold: this.config.routingThreshold
@@ -4207,7 +4463,7 @@ var PreferenceRouter = class {
4207
4463
  routingLatencyMs: getTimeProvider().now() - startTime,
4208
4464
  estimatedCostSavings: costSavings
4209
4465
  };
4210
- logger4.debug("Routing decision made", {
4466
+ logger5.debug("Routing decision made", {
4211
4467
  tier: selectedTier,
4212
4468
  cli: selectedConfig.cli,
4213
4469
  probability: prediction.strongModelProbability,
@@ -4232,7 +4488,7 @@ var PreferenceRouter = class {
4232
4488
  };
4233
4489
  if (this.config.enableOnlineLearning) {
4234
4490
  this.dataStore.store(dataPoint);
4235
- logger4.debug("Preference recorded", {
4491
+ logger5.debug("Preference recorded", {
4236
4492
  strongPreferred: strongModelPreferred,
4237
4493
  domain: features.domain
4238
4494
  });
@@ -4732,9 +4988,9 @@ var ZeroRouter = class {
4732
4988
  logger;
4733
4989
  outcomes = [];
4734
4990
  calibrationBias = 0;
4735
- constructor(config, logger9) {
4991
+ constructor(config, logger10) {
4736
4992
  this.config = ZeroRouterConfigSchema.parse(config ?? {});
4737
- this.logger = logger9 ?? createLogger({ component: "ZeroRouter" });
4993
+ this.logger = logger10 ?? createLogger({ component: "ZeroRouter" });
4738
4994
  this.logger.debug("ZeroRouter initialized", {
4739
4995
  thresholds: this.config.thresholds,
4740
4996
  enableCalibration: this.config.enableCalibration
@@ -5426,9 +5682,9 @@ var ConfidenceCascadeStage = class {
5426
5682
  routingsCount = 0;
5427
5683
  escalationCount = 0;
5428
5684
  complexityDistribution = { simple: 0, moderate: 0, complex: 0 };
5429
- constructor(config = {}, logger9) {
5685
+ constructor(config = {}, logger10) {
5430
5686
  this.config = { ...DEFAULT_CONFIG, ...config };
5431
- this.logger = logger9 ?? createLogger({ component: "ConfidenceCascadeStage" });
5687
+ this.logger = logger10 ?? createLogger({ component: "ConfidenceCascadeStage" });
5432
5688
  }
5433
5689
  canHandle(ctx) {
5434
5690
  return getRemainingCandidates(ctx).length > 0;
@@ -5769,9 +6025,9 @@ var CapabilityMatchStage = class {
5769
6025
  creative: 0,
5770
6026
  general: 0
5771
6027
  };
5772
- constructor(config = {}, logger9) {
6028
+ constructor(config = {}, logger10) {
5773
6029
  this.config = { ...DEFAULT_CONFIG2, ...config };
5774
- this.logger = logger9 ?? createLogger({ component: "CapabilityMatchStage" });
6030
+ this.logger = logger10 ?? createLogger({ component: "CapabilityMatchStage" });
5775
6031
  }
5776
6032
  canHandle(ctx) {
5777
6033
  return getRemainingCandidates(ctx).length > 0;
@@ -5927,9 +6183,9 @@ var QualityConstraintStage = class {
5927
6183
  filteredCount = 0;
5928
6184
  fallbackCount = 0;
5929
6185
  constraintViolations = { quality: 0, cost: 0, latency: 0 };
5930
- constructor(config = {}, logger9) {
6186
+ constructor(config = {}, logger10) {
5931
6187
  this.config = { ...DEFAULT_CONFIG3, ...config };
5932
- this.logger = logger9 ?? createLogger({ component: "QualityConstraintStage" });
6188
+ this.logger = logger10 ?? createLogger({ component: "QualityConstraintStage" });
5933
6189
  }
5934
6190
  canHandle(ctx) {
5935
6191
  return getRemainingCandidates(ctx).length > 0;
@@ -6137,9 +6393,9 @@ var ResourceStrategyStage = class {
6137
6393
  logger;
6138
6394
  routingsCount = 0;
6139
6395
  tierHistory = [];
6140
- constructor(config = {}, logger9) {
6396
+ constructor(config = {}, logger10) {
6141
6397
  this.config = { ...DEFAULT_CONFIG4, ...config };
6142
- this.logger = logger9 ?? createLogger({ component: "ResourceStrategyStage" });
6398
+ this.logger = logger10 ?? createLogger({ component: "ResourceStrategyStage" });
6143
6399
  }
6144
6400
  canHandle(ctx) {
6145
6401
  return getRemainingCandidates(ctx).length > 1;
@@ -6248,10 +6504,10 @@ var DistilledRuleStage = class {
6248
6504
  config;
6249
6505
  logger;
6250
6506
  rulesAppliedCount = 0;
6251
- constructor(distiller, config, logger9) {
6507
+ constructor(distiller, config, logger10) {
6252
6508
  this.distiller = distiller;
6253
6509
  this.config = { ...DEFAULT_CONFIG5, ...config };
6254
- this.logger = logger9 ?? createLogger({ component: "DistilledRuleStage" });
6510
+ this.logger = logger10 ?? createLogger({ component: "DistilledRuleStage" });
6255
6511
  }
6256
6512
  canHandle(ctx) {
6257
6513
  const candidates = getRemainingCandidates(ctx);
@@ -6390,10 +6646,10 @@ var KnnRoutingStage = class {
6390
6646
  memory;
6391
6647
  routingsCount = 0;
6392
6648
  matchCount = 0;
6393
- constructor(memory, config = {}, logger9) {
6649
+ constructor(memory, config = {}, logger10) {
6394
6650
  this.config = { ...DEFAULT_CONFIG6, ...config };
6395
6651
  this.memory = memory;
6396
- this.logger = logger9 ?? createLogger({ component: "KnnRoutingStage" });
6652
+ this.logger = logger10 ?? createLogger({ component: "KnnRoutingStage" });
6397
6653
  }
6398
6654
  canHandle(ctx) {
6399
6655
  return getRemainingCandidates(ctx).length > 0;
@@ -6608,10 +6864,10 @@ var StrategyDistiller = class {
6608
6864
  rules = /* @__PURE__ */ new Map();
6609
6865
  outcomeCounter = 0;
6610
6866
  lastDistillAt;
6611
- constructor(outcomeStore, logger9, config) {
6867
+ constructor(outcomeStore, logger10, config) {
6612
6868
  this.outcomeStore = outcomeStore;
6613
6869
  this.config = { ...DEFAULT_DISTILLER_CONFIG, ...config };
6614
- this.logger = logger9 ?? createLogger({ component: "StrategyDistiller" });
6870
+ this.logger = logger10 ?? createLogger({ component: "StrategyDistiller" });
6615
6871
  }
6616
6872
  /** Called for each processed outcome. Triggers distillation at threshold. */
6617
6873
  onOutcome() {
@@ -6775,23 +7031,23 @@ var StrategyDistiller = class {
6775
7031
  };
6776
7032
  }
6777
7033
  };
6778
- function createStrategyDistiller(outcomeStore, logger9, config) {
6779
- return new StrategyDistiller(outcomeStore, logger9, config);
7034
+ function createStrategyDistiller(outcomeStore, logger10, config) {
7035
+ return new StrategyDistiller(outcomeStore, logger10, config);
6780
7036
  }
6781
7037
  var persistentDistillerFactory;
6782
7038
  function registerPersistentDistillerFactory(factory) {
6783
7039
  persistentDistillerFactory = factory;
6784
7040
  }
6785
- function createPersistentDistillerOrFallback(outcomeStore, logger9) {
7041
+ function createPersistentDistillerOrFallback(outcomeStore, logger10) {
6786
7042
  if (persistentDistillerFactory !== void 0) {
6787
- return persistentDistillerFactory(outcomeStore, logger9);
7043
+ return persistentDistillerFactory(outcomeStore, logger10);
6788
7044
  }
6789
- return new StrategyDistiller(outcomeStore, logger9);
7045
+ return new StrategyDistiller(outcomeStore, logger10);
6790
7046
  }
6791
7047
 
6792
7048
  // src/orchestration/outcomes/outcome-types.ts
6793
7049
  import { z as z10 } from "zod";
6794
- var logger5 = createLogger({ component: "outcome-error-taxonomy" });
7050
+ var logger6 = createLogger({ component: "outcome-error-taxonomy" });
6795
7051
  var OutcomeSourceSchema = z10.enum(["delegate", "consensus", "manual"]);
6796
7052
  var OutcomeFailureCategorySchema = z10.enum([
6797
7053
  "timeout",
@@ -6981,7 +7237,7 @@ function matchesAny(text, patterns) {
6981
7237
  function classifyExecutionOrGeneric(text) {
6982
7238
  if (matchesAny(text, EXECUTION_PATTERNS)) return "execution";
6983
7239
  if (matchesAny(text, GENERIC_PATTERNS)) return "generic";
6984
- logger5.debug("Unclassified error string", { sample: text.slice(0, 200) });
7240
+ logger6.debug("Unclassified error string", { sample: text.slice(0, 200) });
6985
7241
  return "unknown";
6986
7242
  }
6987
7243
  function classifyText(text) {
@@ -7235,7 +7491,7 @@ function groupBy(outcomes, keyFn) {
7235
7491
  }
7236
7492
 
7237
7493
  // src/pipeline/event-bus.ts
7238
- var logger6 = createLogger({ component: "EventBus" });
7494
+ var logger7 = createLogger({ component: "EventBus" });
7239
7495
  var DEFAULT_MAX_BUFFER = 1e4;
7240
7496
  var EventBus = class {
7241
7497
  buffer = [];
@@ -7292,7 +7548,7 @@ var EventBus = class {
7292
7548
  sub.handler(event);
7293
7549
  } catch (error) {
7294
7550
  const msg = getErrorMessage(error);
7295
- logger6.warn("Event handler error", { eventType: event.type, error: msg });
7551
+ logger7.warn("Event handler error", { eventType: event.type, error: msg });
7296
7552
  }
7297
7553
  }
7298
7554
  }
@@ -7356,8 +7612,8 @@ function generateSyntheticPriors() {
7356
7612
  }
7357
7613
  return priors;
7358
7614
  }
7359
- function runWarmUp(logger9) {
7360
- const log = logger9 ?? createLogger({ component: "warm-up" });
7615
+ function runWarmUp(logger10) {
7616
+ const log = logger10 ?? createLogger({ component: "warm-up" });
7361
7617
  const store = getOutcomeStore();
7362
7618
  const existing = store.query();
7363
7619
  const hasSynthetic = existing.some((o) => o.qualitySignals?.includes(SYNTHETIC_MARKER) === true);
@@ -8145,7 +8401,7 @@ function createMetricsMiddleware() {
8145
8401
  }
8146
8402
 
8147
8403
  // src/agents/heartbeat-monitor.ts
8148
- import { randomBytes as randomBytes2 } from "crypto";
8404
+ import { randomBytes as randomBytes3 } from "crypto";
8149
8405
 
8150
8406
  // src/config/defaults-types.ts
8151
8407
  import { z as z13 } from "zod";
@@ -8490,7 +8746,7 @@ var HeartbeatMonitor = class {
8490
8746
  }
8491
8747
  /** Start tracking a new expert session. Returns session ID. */
8492
8748
  startSession(expertId) {
8493
- const sessionId = `hb-${expertId}-${randomBytes2(6).toString("hex")}`;
8749
+ const sessionId = `hb-${expertId}-${randomBytes3(6).toString("hex")}`;
8494
8750
  const now = Date.now();
8495
8751
  this.sessions.set(sessionId, {
8496
8752
  expertId,
@@ -9036,14 +9292,14 @@ function buildTierRecommendations(summary) {
9036
9292
  }
9037
9293
 
9038
9294
  // src/cli-adapters/weather-bonus-stage.ts
9039
- var logger7 = createLogger({ component: "weather-bonus-stage" });
9295
+ var logger8 = createLogger({ component: "weather-bonus-stage" });
9040
9296
  var MIN_SAMPLE_COUNT = 5;
9041
9297
  function getWeatherBonusScores(taskCategory) {
9042
9298
  try {
9043
9299
  const report = generateWeatherReport({ includeAdaptive: true });
9044
9300
  return convertBonusesToScoreMap(report.adaptiveBonuses, taskCategory);
9045
9301
  } catch {
9046
- logger7.debug("Weather bonus stage skipped (best-effort)");
9302
+ logger8.debug("Weather bonus stage skipped (best-effort)");
9047
9303
  return /* @__PURE__ */ new Map();
9048
9304
  }
9049
9305
  }
@@ -9056,7 +9312,7 @@ function convertBonusesToScoreMap(bonuses, taskCategory) {
9056
9312
  scores.set(bonus.cli, bonus.adaptiveBonus);
9057
9313
  }
9058
9314
  if (scores.size > 0) {
9059
- logger7.debug("Weather bonus scores applied", {
9315
+ logger8.debug("Weather bonus scores applied", {
9060
9316
  category: taskCategory,
9061
9317
  clis: [...scores.keys()]
9062
9318
  });
@@ -9723,7 +9979,7 @@ var CompositeRouter = class _CompositeRouter {
9723
9979
  lastRoutedTask;
9724
9980
  // Track last traceId for metrics correlation (Issue #559)
9725
9981
  lastTraceId;
9726
- constructor(adapters, config, logger9) {
9982
+ constructor(adapters, config, logger10) {
9727
9983
  const {
9728
9984
  preferenceRouterConfig,
9729
9985
  zeroRouterConfig,
@@ -9739,7 +9995,7 @@ var CompositeRouter = class _CompositeRouter {
9739
9995
  ...baseConfig
9740
9996
  } = config ?? {};
9741
9997
  this.config = CompositeRouterConfigSchema.parse(baseConfig);
9742
- this.logger = logger9 ?? createLogger({ component: "CompositeRouter" });
9998
+ this.logger = logger10 ?? createLogger({ component: "CompositeRouter" });
9743
9999
  this.adapters = adapters;
9744
10000
  this.cliNames = Array.from(adapters.keys());
9745
10001
  if (metricsCollector !== void 0) {
@@ -10170,8 +10426,8 @@ var CompositeRouter = class _CompositeRouter {
10170
10426
  return this.routingMemory;
10171
10427
  }
10172
10428
  };
10173
- function createCompositeRouter(adapters, config, logger9) {
10174
- return new CompositeRouter(adapters, config, logger9);
10429
+ function createCompositeRouter(adapters, config, logger10) {
10430
+ return new CompositeRouter(adapters, config, logger10);
10175
10431
  }
10176
10432
 
10177
10433
  // src/core/types/model.ts
@@ -10559,7 +10815,7 @@ var ActionCacheImpl = class {
10559
10815
  };
10560
10816
 
10561
10817
  // src/context/mobimem.ts
10562
- var logger8 = createLogger({ component: "MobiMem" });
10818
+ var logger9 = createLogger({ component: "MobiMem" });
10563
10819
  var MobiMem = class {
10564
10820
  profile;
10565
10821
  experience;
@@ -10571,7 +10827,7 @@ var MobiMem = class {
10571
10827
  this.profile = new ProfileMemoryImpl(this.config);
10572
10828
  this.experience = new ExperienceMemoryImpl(this.config);
10573
10829
  this.action = new ActionCacheImpl(this.config);
10574
- logger8.info("MobiMem initialized", {
10830
+ logger9.info("MobiMem initialized", {
10575
10831
  maxProfileEntries: this.config.maxProfileEntries,
10576
10832
  maxExperiencePatterns: this.config.maxExperiencePatterns,
10577
10833
  maxActionCacheEntries: this.config.maxActionCacheEntries
@@ -10602,12 +10858,12 @@ var MobiMem = class {
10602
10858
  if (this.config.autoEviction) {
10603
10859
  const evicted = this.action.evictExpired();
10604
10860
  if (evicted > 0) {
10605
- logger8.debug("Evicted expired action cache entries", { count: evicted });
10861
+ logger9.debug("Evicted expired action cache entries", { count: evicted });
10606
10862
  }
10607
10863
  }
10608
10864
  }
10609
10865
  close() {
10610
- logger8.info("MobiMem closed");
10866
+ logger9.info("MobiMem closed");
10611
10867
  }
10612
10868
  /** Export MobiMem state for disk persistence (#1782). */
10613
10869
  exportData() {
@@ -10624,9 +10880,9 @@ var MobiMem = class {
10624
10880
  await fs2.mkdir(path2.dirname(filePath), { recursive: true });
10625
10881
  const data = JSON.stringify(this.exportData(), null, 2);
10626
10882
  await fs2.writeFile(filePath, data, "utf-8");
10627
- logger8.debug("MobiMem state saved", { path: filePath });
10883
+ logger9.debug("MobiMem state saved", { path: filePath });
10628
10884
  } catch (error) {
10629
- logger8.warn("Failed to save MobiMem state", { error: String(error) });
10885
+ logger9.warn("Failed to save MobiMem state", { error: String(error) });
10630
10886
  }
10631
10887
  }
10632
10888
  };
@@ -10645,6 +10901,12 @@ export {
10645
10901
  unwrapOr,
10646
10902
  extractJsonArray,
10647
10903
  extractJsonObject,
10904
+ getTimeProvider,
10905
+ withStep,
10906
+ sanitize,
10907
+ createLogger,
10908
+ logger,
10909
+ bootstrapStepNotifications,
10648
10910
  ErrorCode,
10649
10911
  NexusError,
10650
10912
  ValidationError,
@@ -10657,10 +10919,6 @@ export {
10657
10919
  RateLimitError,
10658
10920
  toError,
10659
10921
  getErrorMessage,
10660
- getTimeProvider,
10661
- sanitize,
10662
- createLogger,
10663
- logger,
10664
10922
  OUTPUT_MODALITIES,
10665
10923
  INPUT_MODALITIES,
10666
10924
  TOOL_CAPABILITIES,
@@ -10801,4 +11059,4 @@ export {
10801
11059
  ParseError,
10802
11060
  OrchestratorError
10803
11061
  };
10804
- //# sourceMappingURL=chunk-GNR437CG.js.map
11062
+ //# sourceMappingURL=chunk-K5N4OL66.js.map