@tekmidian/pai 1.0.3 → 1.0.4

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 (85) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/dist/{auto-route-B7Yu6Uam.mjs → auto-route-21GdHL70.mjs} +1 -1
  3. package/dist/{auto-route-CjjQqU1o.mjs → auto-route-C3S2W3Bc.mjs} +1 -1
  4. package/dist/{budget-Dod6rnA9.mjs → budget-BrloTOZW.mjs} +1 -1
  5. package/dist/{chain-7n9Gx56r.mjs → chain-D7PFur8Y.mjs} +2 -2
  6. package/dist/cli/index.mjs +70 -180
  7. package/dist/{cockpit-actions-DR9X514g.mjs → cockpit-actions-BfRMr2sm.mjs} +6 -6
  8. package/dist/{cockpit-actions-BBHeyEZI.mjs → cockpit-actions-OodH_vx_.mjs} +20 -18
  9. package/dist/{cockpit-memory--dnShXBA.mjs → cockpit-memory-teG9M8bG.mjs} +6 -6
  10. package/dist/config/defaults/config.yaml +6 -0
  11. package/dist/{controls-CPoeudou.mjs → controls-JLm6g0yP.mjs} +7 -5
  12. package/dist/daemon/index.mjs +18 -18
  13. package/dist/{daemon-DKdBNKfa.mjs → daemon-DeYImF1F.mjs} +18 -18
  14. package/dist/daemon-mcp/index.mjs +18 -18
  15. package/dist/{daemon-DPAo6WTa.mjs → daemon-nXanenDM.mjs} +21 -17
  16. package/dist/{detect-9CZNO0yf.mjs → detect-BLKsUOgG.mjs} +2 -2
  17. package/dist/{detect-D1ziFFfA.mjs → detect-Rrimh0xc.mjs} +3 -3
  18. package/dist/{embed-pass-DIWjA68P.mjs → embed-pass-e64AwDCa.mjs} +1 -1
  19. package/dist/{endreason-C577xIQz.mjs → endreason-BC-v05H_.mjs} +17 -3
  20. package/dist/{factory-DjAAsqr_.mjs → factory-B7nv75rC.mjs} +2 -2
  21. package/dist/{factory-Bsib-qDG.mjs → factory-Bs9imVMq.mjs} +2 -2
  22. package/dist/{fallback-DFlItw1Z.mjs → fallback-CBWpp2F2.mjs} +227 -5
  23. package/dist/{health-Dnym-qcT.mjs → health-C4FQmkJn.mjs} +2 -2
  24. package/dist/{helpers-BD6V-p9w.mjs → helpers-DSNK_1KP.mjs} +2 -2
  25. package/dist/{helpers-CMGjy_0N.mjs → helpers-Dz7mjTSw.mjs} +3 -3
  26. package/dist/hooks/capture-all-events.mjs +21 -2
  27. package/dist/hooks/capture-tool-output.mjs +21 -2
  28. package/dist/hooks/worker-pool-host.mjs +52 -9
  29. package/dist/hooks/worker-status-line.mjs +34 -6
  30. package/dist/{indexer-backend-Cll7le4P.mjs → indexer-backend-BdjeL4P8.mjs} +31 -228
  31. package/dist/{ipc-client-CaiGJnSM.mjs → ipc-client-CnYEF31R.mjs} +1 -1
  32. package/dist/{ipc-client-ZRmDKd5Z.mjs → ipc-client-DN7EvoVo.mjs} +1 -1
  33. package/dist/{kill-tree-EWYaEk5v.mjs → kill-tree-DleMNZX3.mjs} +2 -2
  34. package/dist/{kill-tree-BG7dRVtp.mjs → kill-tree-SV6hrIa3.mjs} +2 -2
  35. package/dist/{launch-Jh5NVeNe.mjs → launch-Di7N-J5X.mjs} +2 -2
  36. package/dist/{launch-CXVlZjHt.mjs → launch-DlZTKE3u.mjs} +2 -2
  37. package/dist/{main-config-ops-BEMpuhDz.mjs → main-config-ops-kTXR8Pyv.mjs} +1 -1
  38. package/dist/{main-resolver-3Ns1HPmS.mjs → main-resolver-yp_puSSb.mjs} +5 -5
  39. package/dist/{model-inventory-BFVSNFT3.mjs → model-inventory-h6Z9fN_o.mjs} +1 -1
  40. package/dist/{models-add-C1QIc1DA.mjs → models-add-TVni3A7V.mjs} +19 -19
  41. package/dist/{pane-audit-DKQt71s4.mjs → pane-audit-Lqy9N_Ki.mjs} +23 -5
  42. package/dist/{planner-BmFACdLa.mjs → planner-j77ndkBf.mjs} +11 -11
  43. package/dist/{postgres-BdBNkL_l.mjs → postgres-BK4FP9Zg.mjs} +1 -1
  44. package/dist/{postgres-C6ti4haA.mjs → postgres-DNIOQijl.mjs} +17 -7
  45. package/dist/{project-setup-jvfONJTQ.mjs → project-setup-CBRtFFh0.mjs} +15 -235
  46. package/dist/{providers-CblTFrhz.mjs → providers-C9QC0TtO.mjs} +2 -2
  47. package/dist/{providers-BeDiVEb-.mjs → providers-FvCLzFge.mjs} +2 -2
  48. package/dist/{query-feedback-BRfPtqki.mjs → query-feedback-DN52N9C5.mjs} +1 -1
  49. package/dist/{render-CoMvwMPs.mjs → render-B35bQTE-.mjs} +2 -2
  50. package/dist/{render-BYmQkuLd.mjs → render-C84BqQRC.mjs} +2 -2
  51. package/dist/{root-Xglu0OPD.mjs → root-C4oXlXS_.mjs} +7 -7
  52. package/dist/{root-FtJsxYnm.mjs → root-DD1xx_Vu.mjs} +12 -12
  53. package/dist/route-table-FEfDuhIV.mjs +15 -0
  54. package/dist/{routing-BAAST9vT.mjs → routing-DmkheCRH.mjs} +126 -8
  55. package/dist/{routing-CENt4HH1.mjs → routing-f2zulGwD.mjs} +1 -1
  56. package/dist/{run-CSC7mgPf.mjs → run-BwZKBJZZ.mjs} +25 -11
  57. package/dist/{scan-C_Y5W9py.mjs → scan-BBGvU5EB.mjs} +2 -2
  58. package/dist/{session-BeqAbNPd.mjs → session-BAhtXdxj.mjs} +11 -11
  59. package/dist/{session-8iqQDkqb.mjs → session-Dn5OJXlg.mjs} +20 -20
  60. package/dist/{session-scan-BJI_ZO8M.mjs → session-scan-B57dNuA4.mjs} +1 -1
  61. package/dist/{session-scan-W-gbwJHM.mjs → session-scan-DUn10MBd.mjs} +2 -2
  62. package/dist/session-usage-CPvXvSkw.mjs +222 -0
  63. package/dist/{sources-ESUkZaWv.mjs → sources-CiE3rZek.mjs} +1 -1
  64. package/dist/{viewer-CqozWW39.mjs → viewer-DEySE4c_.mjs} +6 -6
  65. package/dist/{viewer-mDXUNHNy.mjs → viewer-wfKnvnrI.mjs} +5 -5
  66. package/dist/{worker-config-DESkIjMF.mjs → worker-config-CO5FXLAT.mjs} +18 -18
  67. package/dist/{worker-config-CJhEMk19.mjs → worker-config-eY5Qy4vl.mjs} +318 -21
  68. package/dist/{zettelkasten-BzMm8REH.mjs → zettelkasten-_h_tUm2T.mjs} +1 -1
  69. package/dist/{zettelkasten-B_rRRRvD.mjs → zettelkasten-tpCRBYvH.mjs} +2 -2
  70. package/docs/cockpit.md +1 -0
  71. package/gemini-extension.json +1 -1
  72. package/package.json +1 -1
  73. package/pai-plugin.json +1 -1
  74. package/plugins/context-preservation/plugin.json +1 -1
  75. package/plugins/core/plugin.json +1 -1
  76. package/plugins/creative/plugin.json +1 -1
  77. package/plugins/observability/plugin.json +1 -1
  78. package/plugins/productivity/plugin.json +1 -1
  79. package/plugins/semantic-search/plugin.json +1 -1
  80. package/plugins/ui/plugin.json +1 -1
  81. package/plugins/zettelkasten/plugin.json +1 -1
  82. package/src/hooks/ts/capture-all-events.ts +15 -3
  83. package/src/hooks/ts/lib/raw-capture.ts +7 -0
  84. package/src/hooks/ts/post-tool-use/capture-tool-output.ts +13 -3
  85. package/dist/route-table-B7zpoypi.mjs +0 -15
@@ -6,18 +6,18 @@ import { n as ensureNoMcpConfig, u as workersLogDir } from "./paths-CHifubDh.mjs
6
6
  import { w as worktreesDir } from "./worktree-CRs2gyg0.mjs";
7
7
  import { B as loadStatusConfig, W as writeContinueToForge } from "./status-ggJ7lgVg.mjs";
8
8
  import { i as itermUuid, l as sessionMapPath } from "./scope-D-h6F6DN.mjs";
9
- import { _ as resolveTarget, mt as loopbackRouterChoice, ut as buildRunEnv } from "./routing-BAAST9vT.mjs";
10
- import { i as getRegistryBackend, r as createStorageBackend } from "./factory-DjAAsqr_.mjs";
11
- import { c as ensureProxyRunning, l as proxyPort } from "./launch-Jh5NVeNe.mjs";
9
+ import { _ as resolveTarget, mt as loopbackRouterChoice, ut as buildRunEnv } from "./routing-DmkheCRH.mjs";
10
+ import { i as getRegistryBackend, r as createStorageBackend } from "./factory-B7nv75rC.mjs";
11
+ import { c as ensureProxyRunning, l as proxyPort } from "./launch-Di7N-J5X.mjs";
12
12
  import { n as fetchLiveSessions, r as sendToSession } from "./aibroker-client-CQPGqLxL.mjs";
13
- import { E as probeRouter, z as recordSystemJobStart } from "./run-CSC7mgPf.mjs";
14
- import { bt as psTableOrNull } from "./controls-CPoeudou.mjs";
15
- import { createReadStream, existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, renameSync, statSync, unlinkSync, writeFileSync } from "node:fs";
13
+ import { E as probeRouter, z as recordSystemJobStart } from "./run-BwZKBJZZ.mjs";
14
+ import { bt as psTableOrNull } from "./controls-JLm6g0yP.mjs";
15
+ import { n as isRealUserPrompt, t as extractUserPromptText } from "./session-usage-CPvXvSkw.mjs";
16
+ import { existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, renameSync, statSync, unlinkSync, writeFileSync } from "node:fs";
16
17
  import { randomUUID } from "node:crypto";
17
18
  import { basename, delimiter, dirname, join } from "node:path";
18
19
  import { homedir, setPriority, userInfo } from "node:os";
19
20
  import { spawn, spawnSync } from "node:child_process";
20
- import { createInterface } from "node:readline";
21
21
  import { copyFileSync as copyFileSync$1, existsSync as existsSync$1, linkSync as linkSync$1, mkdirSync as mkdirSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, renameSync as renameSync$1, writeFileSync as writeFileSync$1 } from "fs";
22
22
  import { basename as basename$1, join as join$1, resolve as resolve$1 } from "path";
23
23
  import { homedir as homedir$1 } from "os";
@@ -945,223 +945,6 @@ function startQuietWatcher() {
945
945
  if (timer.unref) timer.unref();
946
946
  }
947
947
 
948
- //#endregion
949
- //#region src/audit/session-usage.ts
950
- /**
951
- * session-usage.ts — parse the usage numbers out of a Claude Code session
952
- * (or subagent, or pai-worker event-mirror) JSONL transcript.
953
- *
954
- * All three log shapes share the same assistant-message envelope
955
- * ({ type: "assistant", message: { id, model, usage } }), so one parser
956
- * covers `pai audit tokens session` and the per-log readings feeding
957
- * `pai audit tokens spawn`.
958
- *
959
- * Streaming writes one JSONL line per content block of the same logical
960
- * turn, repeating message.id and usage each time — summing every line would
961
- * multiply usage by the block count. Keeping only the first line seen per
962
- * message.id is what the reference script (and this parser) count instead.
963
- */
964
- const USAGE_KEYS = [
965
- "cache_read_input_tokens",
966
- "cache_creation_input_tokens",
967
- "input_tokens",
968
- "output_tokens"
969
- ];
970
- function emptyTotals() {
971
- return {
972
- cache_read_input_tokens: 0,
973
- cache_creation_input_tokens: 0,
974
- input_tokens: 0,
975
- output_tokens: 0
976
- };
977
- }
978
- /**
979
- * `type:"system"` `subtype:"compact_boundary"` lines mark a compaction.
980
- * turnIndex is the count of assistant turns already folded when it fired,
981
- * so it lines up with the turn numbering the text/JSON report prints.
982
- */
983
- function isCompactBoundary(line) {
984
- return line.type === "system" && line.subtype === "compact_boundary";
985
- }
986
- function parseCompactionEvent(line, turnIndex) {
987
- const meta = line.compactMetadata;
988
- if (!meta || typeof meta.preTokens !== "number") return null;
989
- return {
990
- trigger: meta.trigger ?? "unknown",
991
- preTokens: meta.preTokens,
992
- turnIndex
993
- };
994
- }
995
- /**
996
- * `type:"system"` `subtype:"model_refusal_fallback"` lines mark an
997
- * automatic model switch fired by an API safety refusal (e.g. "cyber"
998
- * category), not a user or config choice — worth flagging separately since
999
- * it can rebuild the whole prompt cache mid-session.
1000
- */
1001
- function isModelFallback(line) {
1002
- return line.type === "system" && line.subtype === "model_refusal_fallback";
1003
- }
1004
- function parseFallbackEvent(line, turnIndex) {
1005
- return {
1006
- turnIndex,
1007
- from: line.originalModel ?? "unknown",
1008
- to: line.fallbackModel ?? "unknown",
1009
- category: line.apiRefusalCategory ?? "unknown",
1010
- scope: line.scope ?? "unknown"
1011
- };
1012
- }
1013
- /**
1014
- * Fold one already-parsed JSONL line into a report being accumulated.
1015
- * Exported separately so both the streaming file reader below and tests
1016
- * (which build fixtures as arrays of objects, not files) share one path.
1017
- * Returns the turn's context value when a new turn was counted, else null
1018
- * (non-assistant line, no usage, or a duplicate message.id already seen).
1019
- */
1020
- function foldAssistantLine(report, seenIds, line, threshold) {
1021
- if (line.type !== "assistant") return null;
1022
- const message = line.message;
1023
- const usage = message?.usage;
1024
- if (!usage) return null;
1025
- const id = message?.id ?? line.uuid;
1026
- if (id) {
1027
- if (seenIds.has(id)) return null;
1028
- seenIds.add(id);
1029
- }
1030
- report.turns++;
1031
- for (const key of USAGE_KEYS) {
1032
- const v = usage[key];
1033
- if (typeof v === "number") report.totals[key] += v;
1034
- }
1035
- const context = (Number(usage.cache_read_input_tokens) || 0) + (Number(usage.cache_creation_input_tokens) || 0) + (Number(usage.input_tokens) || 0);
1036
- if (report.firstTurnContext === null) {
1037
- report.firstTurnContext = context;
1038
- report.firstTurnAt = line.timestamp ?? null;
1039
- }
1040
- const atMs = line.timestamp ? Date.parse(line.timestamp) : NaN;
1041
- if (!Number.isNaN(atMs)) {
1042
- if (report.lastTurnAtMs !== null && atMs - report.lastTurnAtMs > 3600 * 1e3) report.idleGapsOver60min++;
1043
- report.lastTurnAtMs = atMs;
1044
- }
1045
- report.lastTurnContext = context;
1046
- report.maxContext = report.maxContext === null ? context : Math.max(report.maxContext, context);
1047
- if (context > threshold) report.turnsAboveThreshold++;
1048
- if ((Number(usage.cache_creation_input_tokens) || 0) > 2e4) report.cacheRebuildTurns++;
1049
- const model = message?.model ?? "unknown";
1050
- report.models[model] = (report.models[model] ?? 0) + 1;
1051
- if (report.lastModel !== null && report.lastModel !== model) report.modelSwitches.push({
1052
- turnIndex: report.turns,
1053
- from: report.lastModel,
1054
- to: model,
1055
- cacheRead: Number(usage.cache_read_input_tokens) || 0,
1056
- cacheCreation: Number(usage.cache_creation_input_tokens) || 0
1057
- });
1058
- report.lastModel = model;
1059
- const split = usage.cache_creation;
1060
- if (split) {
1061
- report.cacheCreationSplit.ephemeral5m += Number(split.ephemeral_5m_input_tokens) || 0;
1062
- report.cacheCreationSplit.ephemeral1h += Number(split.ephemeral_1h_input_tokens) || 0;
1063
- }
1064
- return context;
1065
- }
1066
- /**
1067
- * True for a real human-authored `type:"user"` prompt line: content is a
1068
- * plain string, or a content array with no `tool_result` block. Claude Code
1069
- * encodes tool results as `type:"user"` messages whose content array is
1070
- * entirely (or partly) tool_result blocks — those must not count as prompts.
1071
- */
1072
- function isRealUserPrompt(line) {
1073
- if (line.type !== "user") return false;
1074
- if (line.isMeta) return false;
1075
- if (line.origin?.kind && line.origin.kind !== "human") return false;
1076
- const content = line.message?.content;
1077
- if (typeof content === "string") return true;
1078
- if (Array.isArray(content)) return !content.some((block) => block?.type === "tool_result");
1079
- return false;
1080
- }
1081
- /** Plain text of a real user prompt: the string content, or its first text block. */
1082
- function extractUserPromptText(line) {
1083
- const content = line.message?.content;
1084
- if (typeof content === "string") return content;
1085
- if (Array.isArray(content)) return content.find((b) => b?.type === "text")?.text ?? "";
1086
- return "";
1087
- }
1088
- /**
1089
- * Parse a session/subagent/worker-event JSONL file into a usage report.
1090
- * `keepaliveWord`, when given, counts real user prompts whose text exactly
1091
- * matches it (trimmed) — the sessions.cacheKeepalive beat prompt — into
1092
- * `keepaliveBeats`; omitted, `keepaliveBeats` stays null.
1093
- */
1094
- async function parseSessionUsage(path, threshold = 2e5, keepaliveWord) {
1095
- const report = {
1096
- path,
1097
- sizeBytes: existsSync(path) ? readFileSync(path).byteLength : 0,
1098
- turns: 0,
1099
- totals: emptyTotals(),
1100
- models: {},
1101
- firstTurnContext: null,
1102
- lastTurnContext: null,
1103
- cacheCreationSplit: {
1104
- ephemeral5m: 0,
1105
- ephemeral1h: 0
1106
- },
1107
- avgContext: null,
1108
- maxContext: null,
1109
- turnsAboveThreshold: 0,
1110
- cacheRebuildTurns: 0,
1111
- userPrompts: 0,
1112
- promptExposure: 0,
1113
- compactions: [],
1114
- firstTurnAt: null,
1115
- lastModel: null,
1116
- modelSwitches: [],
1117
- fallbacks: [],
1118
- lastTurnAtMs: null,
1119
- idleGapsOver60min: 0,
1120
- keepaliveBeats: keepaliveWord ? 0 : null
1121
- };
1122
- const seenIds = /* @__PURE__ */ new Set();
1123
- let contextSum = 0;
1124
- const rl = createInterface({
1125
- input: createReadStream(path, "utf8"),
1126
- crlfDelay: Infinity
1127
- });
1128
- for await (const raw of rl) {
1129
- if (!raw.trim()) continue;
1130
- let obj;
1131
- try {
1132
- obj = JSON.parse(raw);
1133
- } catch {
1134
- continue;
1135
- }
1136
- if (obj.type === "user") {
1137
- if (isRealUserPrompt(obj)) {
1138
- report.userPrompts++;
1139
- if (keepaliveWord && extractUserPromptText(obj).trim() === keepaliveWord) report.keepaliveBeats = (report.keepaliveBeats ?? 0) + 1;
1140
- }
1141
- continue;
1142
- }
1143
- if (isCompactBoundary(obj)) {
1144
- const event = parseCompactionEvent(obj, report.turns);
1145
- if (event) report.compactions.push(event);
1146
- continue;
1147
- }
1148
- if (isModelFallback(obj)) {
1149
- report.fallbacks.push(parseFallbackEvent(obj, report.turns));
1150
- continue;
1151
- }
1152
- const context = foldAssistantLine(report, seenIds, obj, threshold);
1153
- if (context !== null) {
1154
- contextSum += context;
1155
- report.promptExposure += report.userPrompts;
1156
- }
1157
- }
1158
- report.avgContext = report.turns > 0 ? Math.round(contextSum / report.turns) : null;
1159
- return report;
1160
- }
1161
- function totalUsageTokens(totals) {
1162
- return totals.cache_read_input_tokens + totals.cache_creation_input_tokens + totals.input_tokens + totals.output_tokens;
1163
- }
1164
-
1165
948
  //#endregion
1166
949
  //#region src/daemon/session-keepalive.ts
1167
950
  /**
@@ -3777,10 +3560,30 @@ async function handleSessionSummary(payload) {
3777
3560
  process.stderr.write(`[session-summary] ${selectedModel} produced ${summaryText.length} char summary.\n`);
3778
3561
  const notePath = writeSessionNote(cwd, summaryText, extracted.filesModified, sessionId);
3779
3562
  if (notePath) process.stderr.write(`[session-summary] Session note written: ${basename(notePath)}\n`);
3563
+ const effectiveSlug = projectSlug ?? basename(cwd);
3564
+ const projectId = projectSlug ? await lookupProjectId(projectSlug) : null;
3565
+ if (storageBackend?.supportsPostgresFeatures) try {
3566
+ await storageBackend.storeObservation({
3567
+ session_id: sessionId ?? cwd,
3568
+ project_id: projectId,
3569
+ project_slug: effectiveSlug,
3570
+ type: "discovery",
3571
+ title: `session summary (${selectedModel})`,
3572
+ narrative: summaryText.slice(0, 2e3),
3573
+ tool_name: "session-summary",
3574
+ files_read: [],
3575
+ files_modified: extracted.filesModified,
3576
+ concepts: [],
3577
+ source: "daemon",
3578
+ fidelity: "inferred"
3579
+ });
3580
+ } catch (err) {
3581
+ process.stderr.write(`[session-summary] Summary observation failed: ${err}\n`);
3582
+ }
3780
3583
  await extractAndStoreTriples({
3781
3584
  summaryText,
3782
- projectSlug: projectSlug ?? basename(cwd),
3783
- projectId: projectSlug ? await lookupProjectId(projectSlug) : null,
3585
+ projectSlug: effectiveSlug,
3586
+ projectId,
3784
3587
  sessionId: sessionId ?? cwd,
3785
3588
  gitLog,
3786
3589
  model: selectedModel
@@ -4341,5 +4144,5 @@ function reexecBackground() {
4341
4144
  }
4342
4145
 
4343
4146
  //#endregion
4344
- export { setStartTime as $, indexSchedulerTimer as A, readQuiet as At, setDaemonConfig as B, appendCheckpointToNote as Bt, migrateSummaryCooldowns as C, runSessionKeepaliveTick as Ct, embedInProgress as D, deferIfQuiet as Dt, daemonConfig as E, totalUsageTokens as Et, lastVaultIndexTime as F, removeDaemonPidfile as Ft, setLastEmbedPass as G, restartRouter as Gt, setEmbedSchedulerTimer as H, findLatestNote as Ht, notificationConfig as I, resolveDaemonPid as It, setLastIndexTime as J, setLastEmbedTime as K, passFailures as L, writeDaemonPidfile as Lt, lastEmbedTime as M, startQuietWatcher as Mt, lastIndexPass as N, writeQuiet as Nt, embedSchedulerTimer as O, describeQuiet as Ot, lastIndexTime as P, LAUNCHD_LABEL as Pt, setShutdownRequested as Q, registryBackend as R, readContextHandoverCache as Rt, handleSessionSummary as S, loadSessionKeepaliveState as St, cacheKeepaliveTimer as T, parseSessionUsage as Tt, setIndexInProgress as U, findNotesDir$1 as Ut, setEmbedInProgress as V, applyContinue as Vt, setIndexSchedulerTimer as W, readBodyFile as Wt, setNotificationConfig as X, setLastVaultIndexTime as Y, setRegistryBackend as Z, markFailed as _, buildWakeupContext as _t, runPassChild as a, vaultIndexInProgress as at, findLatestJsonl as b, reapJob as bt, NonRetryableError as c, addWorkToSessionNote as ct, enqueue as d, getCurrentNotePath as dt, setStorageBackend as et, enqueueCoalesced as f, archiveSessionFilesToSessionsDir as ft, markCompleted as g, vaultIndexEnabled as gt, loadQueue as h, obsidianEnabled as ht, reexecBackground as i, storageBackend as it, lastEmbedPass as j, registerQuietRunner as jt, indexInProgress as k, nextOccurrence as kt, cleanup as l, appendCheckpoint as lt, hasPendingOrProcessingOfType as m, OBSIDIAN_DISABLED_MESSAGE as mt, buildPassCommand as n, shutdownRequested as nt, backfillKgFromNotes as o, sessionIdFromTranscript as ot, getStats as p, findNotesDir as pt, setLastIndexPass as q, cliEntry as r, startTime as rt, migrateKgBackfillState as s, updateTodoContinue as st, PassSpawnError as t, setVaultIndexInProgress as tt, dequeue as u, finalizeSessionNote as ut, migrateWorkQueue as v, migrateIdentityFile as vt, spawnSummarizer as w, sessionKeepaliveLedgerSummary as wt, getGitContext as x, sweepOrphans as xt, contentToText as y, jobPaths as yt, setCacheKeepaliveTimer as z, writeContextHandoverCache as zt };
4345
- //# sourceMappingURL=indexer-backend-Cll7le4P.mjs.map
4147
+ export { setStartTime as $, indexSchedulerTimer as A, startQuietWatcher as At, setDaemonConfig as B, findLatestNote as Bt, migrateSummaryCooldowns as C, runSessionKeepaliveTick as Ct, embedInProgress as D, nextOccurrence as Dt, daemonConfig as E, describeQuiet as Et, lastVaultIndexTime as F, writeDaemonPidfile as Ft, setLastEmbedPass as G, setEmbedSchedulerTimer as H, readBodyFile as Ht, notificationConfig as I, readContextHandoverCache as It, setLastIndexTime as J, setLastEmbedTime as K, passFailures as L, writeContextHandoverCache as Lt, lastEmbedTime as M, LAUNCHD_LABEL as Mt, lastIndexPass as N, removeDaemonPidfile as Nt, embedSchedulerTimer as O, readQuiet as Ot, lastIndexTime as P, resolveDaemonPid as Pt, setShutdownRequested as Q, registryBackend as R, appendCheckpointToNote as Rt, handleSessionSummary as S, loadSessionKeepaliveState as St, cacheKeepaliveTimer as T, deferIfQuiet as Tt, setIndexInProgress as U, restartRouter as Ut, setEmbedInProgress as V, findNotesDir$1 as Vt, setIndexSchedulerTimer as W, setNotificationConfig as X, setLastVaultIndexTime as Y, setRegistryBackend as Z, markFailed as _, buildWakeupContext as _t, runPassChild as a, vaultIndexInProgress as at, findLatestJsonl as b, reapJob as bt, NonRetryableError as c, addWorkToSessionNote as ct, enqueue as d, getCurrentNotePath as dt, setStorageBackend as et, enqueueCoalesced as f, archiveSessionFilesToSessionsDir as ft, markCompleted as g, vaultIndexEnabled as gt, loadQueue as h, obsidianEnabled as ht, reexecBackground as i, storageBackend as it, lastEmbedPass as j, writeQuiet as jt, indexInProgress as k, registerQuietRunner as kt, cleanup as l, appendCheckpoint as lt, hasPendingOrProcessingOfType as m, OBSIDIAN_DISABLED_MESSAGE as mt, buildPassCommand as n, shutdownRequested as nt, backfillKgFromNotes as o, sessionIdFromTranscript as ot, getStats as p, findNotesDir as pt, setLastIndexPass as q, cliEntry as r, startTime as rt, migrateKgBackfillState as s, updateTodoContinue as st, PassSpawnError as t, setVaultIndexInProgress as tt, dequeue as u, finalizeSessionNote as ut, migrateWorkQueue as v, migrateIdentityFile as vt, spawnSummarizer as w, sessionKeepaliveLedgerSummary as wt, getGitContext as x, sweepOrphans as xt, contentToText as y, jobPaths as yt, setCacheKeepaliveTimer as z, applyContinue as zt };
4148
+ //# sourceMappingURL=indexer-backend-BdjeL4P8.mjs.map
@@ -155,4 +155,4 @@ var PaiClient = class {
155
155
 
156
156
  //#endregion
157
157
  export { PaiClient as n, IPC_SOCKET_PATH as t };
158
- //# sourceMappingURL=ipc-client-CaiGJnSM.mjs.map
158
+ //# sourceMappingURL=ipc-client-CnYEF31R.mjs.map
@@ -1,3 +1,3 @@
1
- import { n as PaiClient, t as IPC_SOCKET_PATH } from "./ipc-client-CaiGJnSM.mjs";
1
+ import { n as PaiClient, t as IPC_SOCKET_PATH } from "./ipc-client-CnYEF31R.mjs";
2
2
 
3
3
  export { IPC_SOCKET_PATH, PaiClient };
@@ -3,7 +3,7 @@ import { i as ledgerPath } from "./paths-CHifubDh.mjs";
3
3
  import { D as pidAlive, P as waitForTerminalStatus, k as saveStatus, v as loadStatus, w as ownsPid, y as loadStatuses } from "./status-ggJ7lgVg.mjs";
4
4
  import { i as itermUuid } from "./scope-D-h6F6DN.mjs";
5
5
  import { a as buildsDir, d as releaseBuildsOf, t as callerIdentity } from "./caller-identity-yLFb7CKq.mjs";
6
- import { n as callerDescription, s as requestKill, t as appendStopEvent } from "./endreason-C577xIQz.mjs";
6
+ import { n as callerDescription, s as requestKill, t as appendStopEvent } from "./endreason-BC-v05H_.mjs";
7
7
  import { readFileSync } from "node:fs";
8
8
  import { join } from "node:path";
9
9
  import { homedir } from "node:os";
@@ -257,4 +257,4 @@ async function killTree(logDir, id, opts = {}) {
257
257
 
258
258
  //#endregion
259
259
  export { killTree as i, isOwner as n, killRefusal as r, descendantsLeavesFirst as t };
260
- //# sourceMappingURL=kill-tree-EWYaEk5v.mjs.map
260
+ //# sourceMappingURL=kill-tree-DleMNZX3.mjs.map
@@ -4,7 +4,7 @@ import "./paths-CHifubDh.mjs";
4
4
  import "./status-ggJ7lgVg.mjs";
5
5
  import "./scope-D-h6F6DN.mjs";
6
6
  import "./caller-identity-yLFb7CKq.mjs";
7
- import "./endreason-C577xIQz.mjs";
8
- import { i as killTree, n as isOwner, r as killRefusal, t as descendantsLeavesFirst } from "./kill-tree-EWYaEk5v.mjs";
7
+ import "./endreason-BC-v05H_.mjs";
8
+ import { i as killTree, n as isOwner, r as killRefusal, t as descendantsLeavesFirst } from "./kill-tree-DleMNZX3.mjs";
9
9
 
10
10
  export { killTree };
@@ -1,5 +1,5 @@
1
1
  import { I as LOOPBACK_HOST, _ as maskKey, a as MODEL_CAPABILITIES, b as nativeOrchestratorModel, c as WorkersConfigError, j as readWorkersSection, p as getProviderOrNative, t as ANTHROPIC_NATIVE, y as nativeAnthropicProvider } from "./config-XpZWOYOG.mjs";
2
- import { _t as nativeRoutePreflight, b as SESSION_PROVIDER_ENV, ut as buildRunEnv, yt as pinnedSettingsArgs } from "./routing-BAAST9vT.mjs";
2
+ import { _t as nativeRoutePreflight, b as SESSION_PROVIDER_ENV, ut as buildRunEnv, yt as pinnedSettingsArgs } from "./routing-DmkheCRH.mjs";
3
3
  import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
4
4
  import { dirname, join } from "node:path";
5
5
  import { spawn } from "node:child_process";
@@ -258,4 +258,4 @@ function maskLaunchEnv(env) {
258
258
 
259
259
  //#endregion
260
260
  export { detectCurrentProviderName as a, ensureProxyRunning as c, detectCurrentModel as i, proxyPort as l, buildLaunchPlan as n, launchableProviderNames as o, buildLaunchRows as r, maskLaunchEnv as s, LaunchError as t, stopProxy as u };
261
- //# sourceMappingURL=launch-Jh5NVeNe.mjs.map
261
+ //# sourceMappingURL=launch-Di7N-J5X.mjs.map
@@ -1,6 +1,6 @@
1
1
  import { i as err } from "./utils-J2b9y8PC.mjs";
2
2
  import { j as readWorkersSection, t as ANTHROPIC_NATIVE, vt as stripModelVariant } from "./config-XpZWOYOG.mjs";
3
- import { _t as nativeRoutePreflight, b as SESSION_PROVIDER_ENV, dt as claudeCommand, gt as nativeLaunchSettingsArgs, ht as nativeLaunchEnv, ut as buildRunEnv, xt as routeVerdictLine, yt as pinnedSettingsArgs } from "./routing-BAAST9vT.mjs";
3
+ import { _t as nativeRoutePreflight, b as SESSION_PROVIDER_ENV, dt as claudeCommand, gt as nativeLaunchSettingsArgs, ht as nativeLaunchEnv, ut as buildRunEnv, xt as routeVerdictLine, yt as pinnedSettingsArgs } from "./routing-DmkheCRH.mjs";
4
4
  import { closeSync, copyFileSync, existsSync, fstatSync, linkSync, openSync, readSync, realpathSync } from "node:fs";
5
5
  import { join } from "node:path";
6
6
  import chalk from "chalk";
@@ -740,4 +740,4 @@ function launchInDir(dir, name, opts = {}) {
740
740
 
741
741
  //#endregion
742
742
  export { providerResumePlan as a, resumeOfferBlock as c, printExitDir as d, probeResume as i, resumeRouteFor as l, launchInDir as n, restoreTopLevel as o, launchPrompt as r, resumeArgvText as s, hasConversation as t, transcriptModelFor as u };
743
- //# sourceMappingURL=launch-CXVlZjHt.mjs.map
743
+ //# sourceMappingURL=launch-DlZTKE3u.mjs.map
@@ -239,4 +239,4 @@ function unsetConfigValueOp(dottedPath) {
239
239
 
240
240
  //#endregion
241
241
  export { listConfigOp as a, getConfigValueOp as i, formatConfigGetOutput as n, setConfigValueOp as o, formatConfigSource as r, unsetConfigValueOp as s, MainConfigOpsError as t };
242
- //# sourceMappingURL=main-config-ops-BEMpuhDz.mjs.map
242
+ //# sourceMappingURL=main-config-ops-kTXR8Pyv.mjs.map
@@ -4,7 +4,7 @@ import "./config-Bu1_vbY8.mjs";
4
4
  import "./paths-CHifubDh.mjs";
5
5
  import "./status-ggJ7lgVg.mjs";
6
6
  import { d as terminalHasName } from "./scope-D-h6F6DN.mjs";
7
- import "./routing-BAAST9vT.mjs";
7
+ import "./routing-DmkheCRH.mjs";
8
8
  import "./tool-errors-7E13StWd.mjs";
9
9
  import "./wait-ByV0OyMZ.mjs";
10
10
  import "./local-tiers-BE4jGaMa.mjs";
@@ -12,9 +12,9 @@ import "./caller-identity-yLFb7CKq.mjs";
12
12
  import "./capacity-DEveQdFV.mjs";
13
13
  import "./local-instances-DOxSgT_L.mjs";
14
14
  import "./local-candidate-DLdwQt0s.mjs";
15
- import { c as resumeOfferBlock, l as resumeRouteFor, n as launchInDir } from "./launch-CXVlZjHt.mjs";
15
+ import { c as resumeOfferBlock, l as resumeRouteFor, n as launchInDir } from "./launch-DlZTKE3u.mjs";
16
16
  import { i as switchToSession, n as fetchLiveSessions } from "./aibroker-client-CQPGqLxL.mjs";
17
- import { s as scanSessions, t as fmtAge } from "./session-scan-W-gbwJHM.mjs";
17
+ import { s as scanSessions, t as fmtAge } from "./session-scan-DUn10MBd.mjs";
18
18
  import { createReadStream, existsSync, realpathSync } from "node:fs";
19
19
  import { basename, join } from "node:path";
20
20
  import chalk from "chalk";
@@ -600,7 +600,7 @@ async function openMatch(entry, allSessions, dryRun, resume, auto) {
600
600
  }
601
601
  async function getRegisteredProjects(all = false) {
602
602
  try {
603
- const { getRegistryBackend } = await import("./factory-Bsib-qDG.mjs");
603
+ const { getRegistryBackend } = await import("./factory-Bs9imVMq.mjs");
604
604
  return await (await getRegistryBackend()).listProjectsWithSessionStats(all ? {} : { status: "active" });
605
605
  } catch {
606
606
  return [];
@@ -784,4 +784,4 @@ async function cmdMain(query, pickN, opts) {
784
784
 
785
785
  //#endregion
786
786
  export { cmdMain };
787
- //# sourceMappingURL=main-resolver-3Ns1HPmS.mjs.map
787
+ //# sourceMappingURL=main-resolver-yp_puSSb.mjs.map
@@ -3,7 +3,7 @@ import "./config-Bu1_vbY8.mjs";
3
3
  import "./paths-CHifubDh.mjs";
4
4
  import "./status-ggJ7lgVg.mjs";
5
5
  import "./scope-D-h6F6DN.mjs";
6
- import { $ as parseFootprint, B as MODEL_INVENTORY_MAX_AGE_MS, G as fmtMem, H as ProbeHold, J as inventoryRows, K as fmtMemMapped, Q as modelLabel, R as DOWN_AFTER_MISSES, U as computeInventory, V as MODEL_INVENTORY_REFRESH_MS, W as currentInventory, X as liveDeps, Y as inventoryText, Z as modelKind, at as readInventoryInput, ct as writeInventory, et as parseSizeMb, it as readInventory, nt as processTreeMemory, ot as readModelLabels, q as inventoryPath, rt as processTreeRssMb, st as startInventoryRefresh, tt as parseTable, z as INVENTORY_HEADERS } from "./routing-BAAST9vT.mjs";
6
+ import { $ as parseFootprint, B as MODEL_INVENTORY_MAX_AGE_MS, G as fmtMem, H as ProbeHold, J as inventoryRows, K as fmtMemMapped, Q as modelLabel, R as DOWN_AFTER_MISSES, U as computeInventory, V as MODEL_INVENTORY_REFRESH_MS, W as currentInventory, X as liveDeps, Y as inventoryText, Z as modelKind, at as readInventoryInput, ct as writeInventory, et as parseSizeMb, it as readInventory, nt as processTreeMemory, ot as readModelLabels, q as inventoryPath, rt as processTreeRssMb, st as startInventoryRefresh, tt as parseTable, z as INVENTORY_HEADERS } from "./routing-DmkheCRH.mjs";
7
7
  import "./tool-errors-7E13StWd.mjs";
8
8
  import "./wait-ByV0OyMZ.mjs";
9
9
  import "./local-tiers-BE4jGaMa.mjs";
@@ -7,7 +7,7 @@ import "./status-ggJ7lgVg.mjs";
7
7
  import "./pool-Dh-q3iJi.mjs";
8
8
  import "./helpers-CRuBUas3.mjs";
9
9
  import "./scope-D-h6F6DN.mjs";
10
- import "./routing-BAAST9vT.mjs";
10
+ import "./routing-DmkheCRH.mjs";
11
11
  import "./tool-errors-7E13StWd.mjs";
12
12
  import "./wait-ByV0OyMZ.mjs";
13
13
  import { g as planStart, m as parseLocalConfig, o as defaultLauncher, y as shellQuote } from "./local-tiers-BE4jGaMa.mjs";
@@ -15,28 +15,28 @@ import "./caller-identity-yLFb7CKq.mjs";
15
15
  import "./capacity-DEveQdFV.mjs";
16
16
  import "./local-instances-DOxSgT_L.mjs";
17
17
  import "./local-candidate-DLdwQt0s.mjs";
18
- import "./factory-DjAAsqr_.mjs";
19
- import "./postgres-C6ti4haA.mjs";
18
+ import "./factory-B7nv75rC.mjs";
19
+ import "./postgres-DNIOQijl.mjs";
20
20
  import "./embedding-gate-6rZrWRXa.mjs";
21
21
  import "./embeddings-BVq3esBF.mjs";
22
22
  import "./router-CQSc3lk3.mjs";
23
- import "./launch-Jh5NVeNe.mjs";
24
- import "./health-Dnym-qcT.mjs";
25
- import "./run-CSC7mgPf.mjs";
26
- import "./controls-CPoeudou.mjs";
27
- import "./endreason-C577xIQz.mjs";
28
- import "./render-BYmQkuLd.mjs";
23
+ import "./launch-Di7N-J5X.mjs";
24
+ import "./health-C4FQmkJn.mjs";
25
+ import "./run-BwZKBJZZ.mjs";
26
+ import "./controls-JLm6g0yP.mjs";
27
+ import "./endreason-BC-v05H_.mjs";
28
+ import "./render-C84BqQRC.mjs";
29
29
  import "./operator-CyuB3aVw.mjs";
30
- import "./kill-tree-EWYaEk5v.mjs";
30
+ import "./kill-tree-DleMNZX3.mjs";
31
31
  import "./pool-cli-BggU8GRp.mjs";
32
- import "./pane-audit-DKQt71s4.mjs";
33
- import "./providers-CblTFrhz.mjs";
34
- import { H as canBind, U as sizeOnDiskGb, V as allocatePort, at as defaultRegistryCtx, f as killInstance, g as portListeners, ot as hashText, p as launchDetached, st as saveRegistry, u as healthOk } from "./worker-config-CJhEMk19.mjs";
35
- import "./main-config-ops-BEMpuhDz.mjs";
36
- import "./cockpit-actions-BBHeyEZI.mjs";
37
- import "./ipc-client-CaiGJnSM.mjs";
38
- import "./embed-pass-DIWjA68P.mjs";
39
- import "./fallback-DFlItw1Z.mjs";
32
+ import "./pane-audit-Lqy9N_Ki.mjs";
33
+ import "./fallback-CBWpp2F2.mjs";
34
+ import "./providers-C9QC0TtO.mjs";
35
+ import { H as canBind, U as sizeOnDiskGb, V as allocatePort, ct as saveRegistry, f as killInstance, g as portListeners, ot as defaultRegistryCtx, p as launchDetached, st as hashText, u as healthOk } from "./worker-config-eY5Qy4vl.mjs";
36
+ import "./main-config-ops-kTXR8Pyv.mjs";
37
+ import "./cockpit-actions-OodH_vx_.mjs";
38
+ import "./ipc-client-CnYEF31R.mjs";
39
+ import "./embed-pass-e64AwDCa.mjs";
40
40
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
41
41
  import { basename, join } from "node:path";
42
42
  import { homedir } from "node:os";
@@ -332,4 +332,4 @@ async function smokeTest(cfg, name, d = {}) {
332
332
 
333
333
  //#endregion
334
334
  export { addModel };
335
- //# sourceMappingURL=models-add-C1QIc1DA.mjs.map
335
+ //# sourceMappingURL=models-add-TVni3A7V.mjs.map
@@ -3,8 +3,9 @@ import { wt as appendLedger } from "./config-XpZWOYOG.mjs";
3
3
  import { i as ledgerPath } from "./paths-CHifubDh.mjs";
4
4
  import { C as nowStamp, M as spawnTimeOf, T as ownsPidCached, b as loadStatusesCached, g as isLive, h as isChatPane, v as loadStatus, w as ownsPid } from "./status-ggJ7lgVg.mjs";
5
5
  import { i as itermUuid } from "./scope-D-h6F6DN.mjs";
6
- import { At as recordPath, Ct as PANE_EXEC_PID_ENV, Dt as pidAlive, L as fmtElapsed, Mt as panePolicy, Ot as readExit, St as PANE_EXEC_ENV, Tt as listRecords, V as loadPlanStatuses, _t as paneTitle, dt as osascript, kt as readRecord, mt as realPaneOps, nt as closePaneForWorker, st as loadRegistry, tt as closeOwnPane, vt as writePaneTitle, wt as exitFilePath } from "./controls-CPoeudou.mjs";
7
- import { i as killTree } from "./kill-tree-EWYaEk5v.mjs";
6
+ import { At as recordPath, Ct as PANE_EXEC_PID_ENV, Dt as pidAlive, L as fmtElapsed, Mt as panePolicy, Ot as readExit, St as PANE_EXEC_ENV, Tt as listRecords, V as loadPlanStatuses, _t as paneTitle, dt as osascript, kt as readRecord, mt as realPaneOps, nt as closePaneForWorker, st as loadRegistry, tt as closeOwnPane, vt as writePaneTitle, wt as exitFilePath } from "./controls-JLm6g0yP.mjs";
7
+ import { s as requestKill, t as appendStopEvent } from "./endreason-BC-v05H_.mjs";
8
+ import { i as killTree } from "./kill-tree-DleMNZX3.mjs";
8
9
  import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
9
10
  import { join } from "node:path";
10
11
  import { execFileSync, spawn } from "node:child_process";
@@ -532,7 +533,17 @@ async function stopUnpaned(logDir, id, why, stop, now) {
532
533
  reason
533
534
  })))(id, why).catch(() => void 0);
534
535
  }
535
- /** A pid is the launch's own only when it started within two minutes of the record and, for the wrapper, runs `pane exec <id>`. */
536
+ const LAUNCH_PID_SLACK_MS = 12e4;
537
+ /**
538
+ * Whether a process started at `startMs` fits the launch. The wrapper starts when the pane opens (`openedMs`), the child when
539
+ * the command starts (`startedMs`); a run that queued for a provider slot between the two has them minutes apart, so each side
540
+ * is measured against its own stamp.
541
+ */
542
+ function launchPidFresh(startMs, r, side) {
543
+ const at = side === "wrapper" ? r.openedMs ?? r.startedMs : r.startedMs;
544
+ return Math.abs(startMs - at) <= LAUNCH_PID_SLACK_MS;
545
+ }
546
+ /** A pid is the launch's own only when it started within two minutes of its side's launch and, for the wrapper, runs `pane exec <id>`. */
536
547
  function ownsLaunchPid(pid, r, side) {
537
548
  try {
538
549
  const env = {
@@ -548,7 +559,7 @@ function ownsLaunchPid(pid, r, side) {
548
559
  encoding: "utf8",
549
560
  env
550
561
  }).trim());
551
- if (Number.isNaN(start) || Math.abs(start - r.startedMs) > 12e4) return false;
562
+ if (Number.isNaN(start) || !launchPidFresh(start, r, side)) return false;
552
563
  if (side === "wrapper") return execFileSync("ps", [
553
564
  "-o",
554
565
  "command=",
@@ -617,6 +628,13 @@ async function auditLaunches(logDir, d = {}, now = /* @__PURE__ */ new Date()) {
617
628
  action: "wrapper killed, pane closed"
618
629
  });
619
630
  } else if (!ex && r.wrapper && !wrapperUp && childUp) {
631
+ const why = "pane audit: wrapper (the pane) is gone, child killed";
632
+ requestKill(logDir, ledger, r.id, "pane audit", true, why);
633
+ appendStopEvent(logDir, r.id, {
634
+ killed_by: "pane audit",
635
+ forced: true,
636
+ reason: why
637
+ });
620
638
  kill(r.child, "SIGKILL", true);
621
639
  appendLedger(ledger, "PANE-ORPHAN", {
622
640
  id: r.id,
@@ -743,4 +761,4 @@ function renderPaneAudit(verdicts) {
743
761
 
744
762
  //#endregion
745
763
  export { readAudit as a, followPaneRun as c, loadPaneRunStatuses as d, paneRunRows as f, listItermTabs as i, isPaneRunId as l, runInPane as m, auditTick as n, renderPaneAudit as o, renderPaneRunLines as p, closeFinishedPanes as r, runningProcs as s, auditPanes as t, loadPaneRunStatus as u };
746
- //# sourceMappingURL=pane-audit-DKQt71s4.mjs.map
764
+ //# sourceMappingURL=pane-audit-Lqy9N_Ki.mjs.map
@@ -6,7 +6,7 @@ import { S as newWorkerId, nt as shortText, tt as parseRunnerArgs, v as loadStat
6
6
  import "./pool-Dh-q3iJi.mjs";
7
7
  import "./helpers-CRuBUas3.mjs";
8
8
  import "./scope-D-h6F6DN.mjs";
9
- import "./routing-BAAST9vT.mjs";
9
+ import "./routing-DmkheCRH.mjs";
10
10
  import "./tool-errors-7E13StWd.mjs";
11
11
  import "./wait-ByV0OyMZ.mjs";
12
12
  import "./local-tiers-BE4jGaMa.mjs";
@@ -14,20 +14,20 @@ import "./caller-identity-yLFb7CKq.mjs";
14
14
  import "./capacity-DEveQdFV.mjs";
15
15
  import "./local-instances-DOxSgT_L.mjs";
16
16
  import "./local-candidate-DLdwQt0s.mjs";
17
- import "./factory-DjAAsqr_.mjs";
18
- import "./postgres-C6ti4haA.mjs";
17
+ import "./factory-B7nv75rC.mjs";
18
+ import "./postgres-DNIOQijl.mjs";
19
19
  import "./embedding-gate-6rZrWRXa.mjs";
20
20
  import "./embeddings-BVq3esBF.mjs";
21
21
  import "./router-CQSc3lk3.mjs";
22
- import "./launch-Jh5NVeNe.mjs";
23
- import { V as printResult, t as runWorker } from "./run-CSC7mgPf.mjs";
24
- import "./controls-CPoeudou.mjs";
25
- import "./endreason-C577xIQz.mjs";
26
- import "./render-BYmQkuLd.mjs";
22
+ import "./launch-Di7N-J5X.mjs";
23
+ import { V as printResult, t as runWorker } from "./run-BwZKBJZZ.mjs";
24
+ import "./controls-JLm6g0yP.mjs";
25
+ import "./endreason-BC-v05H_.mjs";
26
+ import "./render-C84BqQRC.mjs";
27
27
  import "./operator-CyuB3aVw.mjs";
28
- import "./kill-tree-EWYaEk5v.mjs";
28
+ import "./kill-tree-DleMNZX3.mjs";
29
29
  import "./pool-cli-BggU8GRp.mjs";
30
- import { n as swapPromptArg } from "./chain-7n9Gx56r.mjs";
30
+ import { n as swapPromptArg } from "./chain-D7PFur8Y.mjs";
31
31
  import { existsSync, mkdirSync, readFileSync } from "node:fs";
32
32
  import { join } from "node:path";
33
33
 
@@ -307,4 +307,4 @@ function printPlannerSummary(logDir, plannerId, results, merged, conflicted, fmt
307
307
 
308
308
  //#endregion
309
309
  export { runPlanner };
310
- //# sourceMappingURL=planner-BmFACdLa.mjs.map
310
+ //# sourceMappingURL=planner-j77ndkBf.mjs.map
@@ -1,6 +1,6 @@
1
1
  import "./config-Bu1_vbY8.mjs";
2
2
  import "./helpers-CRuBUas3.mjs";
3
- import { o as buildPgTsQuery, t as PostgresBackend } from "./postgres-C6ti4haA.mjs";
3
+ import { o as buildPgTsQuery, t as PostgresBackend } from "./postgres-DNIOQijl.mjs";
4
4
  import "./embedding-gate-6rZrWRXa.mjs";
5
5
  import "./embeddings-BVq3esBF.mjs";
6
6