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.
- package/dist/{adaptive-memory-THOGYVKK.js → adaptive-memory-EDCJHRH3.js} +3 -3
- package/dist/{chunk-2L6A7RUZ.js → chunk-2JPQ2ICM.js} +3 -3
- package/dist/{chunk-4PRT4F7I.js → chunk-4VB3PQTO.js} +6 -6
- package/dist/{chunk-US7Z5ITC.js → chunk-6BOVBYY5.js} +6 -6
- package/dist/{chunk-ZXIFNJ7Q.js → chunk-6SUCK2NV.js} +2 -2
- package/dist/{chunk-ILGF6JIL.js → chunk-7DNUEEGG.js} +67 -39
- package/dist/{chunk-ILGF6JIL.js.map → chunk-7DNUEEGG.js.map} +1 -1
- package/dist/{chunk-6V3HZQRC.js → chunk-7PZGCG37.js} +2 -2
- package/dist/{chunk-32ZTPL7Q.js → chunk-DGMLBF4U.js} +2 -2
- package/dist/{chunk-YSBHF2TG.js → chunk-FO6C5AQ6.js} +2 -2
- package/dist/{chunk-UMM5PVLB.js → chunk-FPBRLZXV.js} +2 -2
- package/dist/{chunk-I66ZKP33.js → chunk-GLOJ6EDL.js} +2 -2
- package/dist/{chunk-GNR437CG.js → chunk-K5N4OL66.js} +321 -63
- package/dist/chunk-K5N4OL66.js.map +1 -0
- package/dist/{chunk-KFHU4P75.js → chunk-MNHC65DB.js} +4 -4
- package/dist/{chunk-IFIRZ35E.js → chunk-OREUX6UF.js} +2 -2
- package/dist/{chunk-MDFQ3G3Y.js → chunk-PR7QRV6S.js} +6 -6
- package/dist/{chunk-V7GL5HZF.js → chunk-PTLZM2LZ.js} +3 -3
- package/dist/{chunk-HIVFP5CS.js → chunk-R4LU2LYM.js} +4 -4
- package/dist/{chunk-2HAZZAU5.js → chunk-SUDYZIVI.js} +2 -2
- package/dist/{chunk-2W7AM3I7.js → chunk-VUJ2PDT7.js} +3 -3
- package/dist/{chunk-GUO4TIIX.js → chunk-WFG3BWWK.js} +2 -2
- package/dist/{chunk-VCYDKMGJ.js → chunk-YLDYHQ4Y.js} +2 -2
- package/dist/{cli-circuit-breaker-MBTG6XC7.js → cli-circuit-breaker-U3XLQNCL.js} +4 -4
- package/dist/cli.js +22 -20
- package/dist/cli.js.map +1 -1
- package/dist/{composite-router-IRF52MS7.js → composite-router-QGP6USAP.js} +2 -2
- package/dist/{consensus-vote-6U4LANAT.js → consensus-vote-GEQK32G7.js} +7 -7
- package/dist/{doctor-deep-RMOKEOCC.js → doctor-deep-3VFOZERZ.js} +3 -3
- package/dist/{expert-bridge-DXSKS5OG.js → expert-bridge-RDY47MFM.js} +3 -3
- package/dist/{factory-FYHY577A.js → factory-3DVB6TV6.js} +4 -4
- package/dist/{factory-SUZOQZOE.js → factory-VEXE4RXU.js} +5 -5
- package/dist/index.d.ts +34 -34
- package/dist/index.js +18 -18
- package/dist/index.js.map +1 -1
- package/dist/{issue-triage-KGXVGBZR.js → issue-triage-SCQMQI6A.js} +4 -4
- package/dist/{mcp-config-PS73M32C.js → mcp-config-F6ZJD564.js} +3 -3
- package/dist/{mobimem-ATF4YCSJ.js → mobimem-XYRENZW7.js} +2 -2
- package/dist/{repo-security-plan-VMTRN3PJ.js → repo-security-plan-XPOOUKAV.js} +3 -3
- package/dist/research-helpers-synthesize-MRO44W5J.js +10 -0
- package/dist/{routing-memory-5VJTEGLC.js → routing-memory-YUETBIJU.js} +2 -2
- package/dist/{session-memory-UA3L4Q6K.js → session-memory-7MHDTB6O.js} +3 -3
- package/dist/{setup-command-KUZZLEZ4.js → setup-command-LZB74W4I.js} +7 -7
- package/dist/{setup-config-IJ6RFRA4.js → setup-config-KPMWBIHD.js} +3 -3
- package/dist/{weather-report-B43EV36T.js → weather-report-3WN4FVQ6.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-GNR437CG.js.map +0 -1
- package/dist/research-helpers-synthesize-A6ZTAYLN.js +0 -10
- /package/dist/{adaptive-memory-THOGYVKK.js.map → adaptive-memory-EDCJHRH3.js.map} +0 -0
- /package/dist/{chunk-2L6A7RUZ.js.map → chunk-2JPQ2ICM.js.map} +0 -0
- /package/dist/{chunk-4PRT4F7I.js.map → chunk-4VB3PQTO.js.map} +0 -0
- /package/dist/{chunk-US7Z5ITC.js.map → chunk-6BOVBYY5.js.map} +0 -0
- /package/dist/{chunk-ZXIFNJ7Q.js.map → chunk-6SUCK2NV.js.map} +0 -0
- /package/dist/{chunk-6V3HZQRC.js.map → chunk-7PZGCG37.js.map} +0 -0
- /package/dist/{chunk-32ZTPL7Q.js.map → chunk-DGMLBF4U.js.map} +0 -0
- /package/dist/{chunk-YSBHF2TG.js.map → chunk-FO6C5AQ6.js.map} +0 -0
- /package/dist/{chunk-UMM5PVLB.js.map → chunk-FPBRLZXV.js.map} +0 -0
- /package/dist/{chunk-I66ZKP33.js.map → chunk-GLOJ6EDL.js.map} +0 -0
- /package/dist/{chunk-KFHU4P75.js.map → chunk-MNHC65DB.js.map} +0 -0
- /package/dist/{chunk-IFIRZ35E.js.map → chunk-OREUX6UF.js.map} +0 -0
- /package/dist/{chunk-MDFQ3G3Y.js.map → chunk-PR7QRV6S.js.map} +0 -0
- /package/dist/{chunk-V7GL5HZF.js.map → chunk-PTLZM2LZ.js.map} +0 -0
- /package/dist/{chunk-HIVFP5CS.js.map → chunk-R4LU2LYM.js.map} +0 -0
- /package/dist/{chunk-2HAZZAU5.js.map → chunk-SUDYZIVI.js.map} +0 -0
- /package/dist/{chunk-2W7AM3I7.js.map → chunk-VUJ2PDT7.js.map} +0 -0
- /package/dist/{chunk-GUO4TIIX.js.map → chunk-WFG3BWWK.js.map} +0 -0
- /package/dist/{chunk-VCYDKMGJ.js.map → chunk-YLDYHQ4Y.js.map} +0 -0
- /package/dist/{cli-circuit-breaker-MBTG6XC7.js.map → cli-circuit-breaker-U3XLQNCL.js.map} +0 -0
- /package/dist/{composite-router-IRF52MS7.js.map → composite-router-QGP6USAP.js.map} +0 -0
- /package/dist/{consensus-vote-6U4LANAT.js.map → consensus-vote-GEQK32G7.js.map} +0 -0
- /package/dist/{doctor-deep-RMOKEOCC.js.map → doctor-deep-3VFOZERZ.js.map} +0 -0
- /package/dist/{expert-bridge-DXSKS5OG.js.map → expert-bridge-RDY47MFM.js.map} +0 -0
- /package/dist/{factory-FYHY577A.js.map → factory-3DVB6TV6.js.map} +0 -0
- /package/dist/{factory-SUZOQZOE.js.map → factory-VEXE4RXU.js.map} +0 -0
- /package/dist/{issue-triage-KGXVGBZR.js.map → issue-triage-SCQMQI6A.js.map} +0 -0
- /package/dist/{mcp-config-PS73M32C.js.map → mcp-config-F6ZJD564.js.map} +0 -0
- /package/dist/{mobimem-ATF4YCSJ.js.map → mobimem-XYRENZW7.js.map} +0 -0
- /package/dist/{repo-security-plan-VMTRN3PJ.js.map → repo-security-plan-XPOOUKAV.js.map} +0 -0
- /package/dist/{research-helpers-synthesize-A6ZTAYLN.js.map → research-helpers-synthesize-MRO44W5J.js.map} +0 -0
- /package/dist/{routing-memory-5VJTEGLC.js.map → routing-memory-YUETBIJU.js.map} +0 -0
- /package/dist/{session-memory-UA3L4Q6K.js.map → session-memory-7MHDTB6O.js.map} +0 -0
- /package/dist/{setup-command-KUZZLEZ4.js.map → setup-command-LZB74W4I.js.map} +0 -0
- /package/dist/{setup-config-IJ6RFRA4.js.map → setup-config-KPMWBIHD.js.map} +0 -0
- /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
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3385
|
+
logger4.warn("Budget critical warning", { warning });
|
|
3130
3386
|
} else {
|
|
3131
|
-
|
|
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
|
-
|
|
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 = {},
|
|
3632
|
+
constructor(config = {}, logger10) {
|
|
3377
3633
|
this.config = { ...DEFAULT_TOPSIS_CONFIG, ...config };
|
|
3378
|
-
this.logger =
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
4991
|
+
constructor(config, logger10) {
|
|
4736
4992
|
this.config = ZeroRouterConfigSchema.parse(config ?? {});
|
|
4737
|
-
this.logger =
|
|
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 = {},
|
|
5685
|
+
constructor(config = {}, logger10) {
|
|
5430
5686
|
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
5431
|
-
this.logger =
|
|
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 = {},
|
|
6028
|
+
constructor(config = {}, logger10) {
|
|
5773
6029
|
this.config = { ...DEFAULT_CONFIG2, ...config };
|
|
5774
|
-
this.logger =
|
|
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 = {},
|
|
6186
|
+
constructor(config = {}, logger10) {
|
|
5931
6187
|
this.config = { ...DEFAULT_CONFIG3, ...config };
|
|
5932
|
-
this.logger =
|
|
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 = {},
|
|
6396
|
+
constructor(config = {}, logger10) {
|
|
6141
6397
|
this.config = { ...DEFAULT_CONFIG4, ...config };
|
|
6142
|
-
this.logger =
|
|
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,
|
|
6507
|
+
constructor(distiller, config, logger10) {
|
|
6252
6508
|
this.distiller = distiller;
|
|
6253
6509
|
this.config = { ...DEFAULT_CONFIG5, ...config };
|
|
6254
|
-
this.logger =
|
|
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 = {},
|
|
6649
|
+
constructor(memory, config = {}, logger10) {
|
|
6394
6650
|
this.config = { ...DEFAULT_CONFIG6, ...config };
|
|
6395
6651
|
this.memory = memory;
|
|
6396
|
-
this.logger =
|
|
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,
|
|
6867
|
+
constructor(outcomeStore, logger10, config) {
|
|
6612
6868
|
this.outcomeStore = outcomeStore;
|
|
6613
6869
|
this.config = { ...DEFAULT_DISTILLER_CONFIG, ...config };
|
|
6614
|
-
this.logger =
|
|
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,
|
|
6779
|
-
return new StrategyDistiller(outcomeStore,
|
|
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,
|
|
7041
|
+
function createPersistentDistillerOrFallback(outcomeStore, logger10) {
|
|
6786
7042
|
if (persistentDistillerFactory !== void 0) {
|
|
6787
|
-
return persistentDistillerFactory(outcomeStore,
|
|
7043
|
+
return persistentDistillerFactory(outcomeStore, logger10);
|
|
6788
7044
|
}
|
|
6789
|
-
return new StrategyDistiller(outcomeStore,
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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(
|
|
7360
|
-
const log =
|
|
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
|
|
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}-${
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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 =
|
|
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,
|
|
10174
|
-
return new CompositeRouter(adapters, config,
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
10861
|
+
logger9.debug("Evicted expired action cache entries", { count: evicted });
|
|
10606
10862
|
}
|
|
10607
10863
|
}
|
|
10608
10864
|
}
|
|
10609
10865
|
close() {
|
|
10610
|
-
|
|
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
|
-
|
|
10883
|
+
logger9.debug("MobiMem state saved", { path: filePath });
|
|
10628
10884
|
} catch (error) {
|
|
10629
|
-
|
|
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-
|
|
11062
|
+
//# sourceMappingURL=chunk-K5N4OL66.js.map
|