@tekmidian/pai 0.66.1 → 0.66.2

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 (158) hide show
  1. package/dist/{aibroker-client-B8c42Lh8.mjs → aibroker-client-CHEEvJZW.mjs} +2 -2
  2. package/dist/{aibroker-client-C5Fw7DNz.mjs → aibroker-client-Dfv7j1Od.mjs} +3 -3
  3. package/dist/{aibroker-client-C5Fw7DNz.mjs.map → aibroker-client-Dfv7j1Od.mjs.map} +1 -1
  4. package/dist/{auto-route-o0BOsXn7.mjs → auto-route-BnizyALK.mjs} +65 -4
  5. package/dist/auto-route-BnizyALK.mjs.map +1 -0
  6. package/dist/auto-route-D6fW1Q8z.mjs +3 -0
  7. package/dist/{chain-CZfKIEq9.mjs → chain-D5876UQX.mjs} +3 -4
  8. package/dist/{chain-CZfKIEq9.mjs.map → chain-D5876UQX.mjs.map} +1 -1
  9. package/dist/cli/index.mjs +18 -23
  10. package/dist/cli/index.mjs.map +1 -1
  11. package/dist/cli/program.mjs +17 -22
  12. package/dist/{config-BbLFD7Uf.mjs → config-C-LiGlop.mjs} +2 -2
  13. package/dist/{config-BbLFD7Uf.mjs.map → config-C-LiGlop.mjs.map} +1 -1
  14. package/dist/{config-YinjgXEJ.mjs → config-DKIA7wgF.mjs} +1 -1
  15. package/dist/{context-handover-cache-pkHzmL3c.mjs → context-handover-cache-9PGvXRIw.mjs} +984 -10
  16. package/dist/context-handover-cache-9PGvXRIw.mjs.map +1 -0
  17. package/dist/daemon/index.mjs +17 -19
  18. package/dist/daemon/index.mjs.map +1 -1
  19. package/dist/daemon-BUgNvMUh.mjs +5029 -0
  20. package/dist/daemon-BUgNvMUh.mjs.map +1 -0
  21. package/dist/daemon-DL0eglMJ.mjs +18 -0
  22. package/dist/daemon-mcp/index.mjs +12 -9
  23. package/dist/daemon-mcp/index.mjs.map +1 -1
  24. package/dist/{embeddings-CcscYWwk.mjs → embeddings-CEBGrzwu.mjs} +1 -1
  25. package/dist/{embeddings-Bx3q0QOY.mjs → embeddings-DOLZnT1X.mjs} +1 -1
  26. package/dist/{embeddings-Bx3q0QOY.mjs.map → embeddings-DOLZnT1X.mjs.map} +1 -1
  27. package/dist/{env-JNEIrQWg.mjs → env-DiolswKQ.mjs} +1 -1
  28. package/dist/{env-JNEIrQWg.mjs.map → env-DiolswKQ.mjs.map} +1 -1
  29. package/dist/factory-DrBg24UT.mjs +8 -0
  30. package/dist/factory-Ypf8r0fK.mjs +2892 -0
  31. package/dist/factory-Ypf8r0fK.mjs.map +1 -0
  32. package/dist/{fallback-CIiq2Raw.mjs → fallback-D51R4shY.mjs} +23 -11
  33. package/dist/fallback-D51R4shY.mjs.map +1 -0
  34. package/dist/{chunker-BH4i-F2b.mjs → helpers-CZsi_49C.mjs} +221 -2
  35. package/dist/helpers-CZsi_49C.mjs.map +1 -0
  36. package/dist/hooks/worker-status-line.mjs.map +2 -2
  37. package/dist/index.mjs +6 -7
  38. package/dist/{ipc-client-D16Xw6Uo.mjs → ipc-client-BLYX51nG.mjs} +2 -2
  39. package/dist/{ipc-client-D16Xw6Uo.mjs.map → ipc-client-BLYX51nG.mjs.map} +1 -1
  40. package/dist/main-resolver-BYgP86C1.mjs +7 -0
  41. package/dist/{main-resolver-DPPwHNtn.mjs → main-resolver-kVkMJZUD.mjs} +6 -6
  42. package/dist/{main-resolver-DPPwHNtn.mjs.map → main-resolver-kVkMJZUD.mjs.map} +1 -1
  43. package/dist/{migrate-BD7D8EEh.mjs → migrate-Bq0esMOa.mjs} +2 -2
  44. package/dist/{migrate-BD7D8EEh.mjs.map → migrate-Bq0esMOa.mjs.map} +1 -1
  45. package/dist/{pai-marker-D1MMswkz.mjs → pai-marker-DXVpFsYz.mjs} +1 -1
  46. package/dist/{pai-marker-D1MMswkz.mjs.map → pai-marker-DXVpFsYz.mjs.map} +1 -1
  47. package/dist/{planner-Dm5Acyo1.mjs → planner-D5yt0EfA.mjs} +10 -7
  48. package/dist/{planner-Dm5Acyo1.mjs.map → planner-D5yt0EfA.mjs.map} +1 -1
  49. package/dist/postgres-BmLr0MUm.mjs +5 -0
  50. package/dist/{postgres-Ceqsa64C.mjs → postgres-D3xc2RB4.mjs} +364 -9
  51. package/dist/postgres-D3xc2RB4.mjs.map +1 -0
  52. package/dist/{program-JJ0TwSHI.mjs → program-DIXRtAFy.mjs} +77 -70
  53. package/dist/program-DIXRtAFy.mjs.map +1 -0
  54. package/dist/{query-feedback-BIaZTTFO.mjs → query-feedback-B7FYE4JR.mjs} +1 -1
  55. package/dist/{query-feedback-BIaZTTFO.mjs.map → query-feedback-B7FYE4JR.mjs.map} +1 -1
  56. package/dist/{reranker-DKv80KO5.mjs → reranker-3lnggwgq.mjs} +1 -1
  57. package/dist/{reranker-DKv80KO5.mjs.map → reranker-3lnggwgq.mjs.map} +1 -1
  58. package/dist/{reranker-CFiEzHQu.mjs → reranker-CZ2mP4cf.mjs} +1 -1
  59. package/dist/router-BK-hFeQ6.mjs +3 -0
  60. package/dist/{router-a5G7q8_3.mjs → router-BaTbc9VX.mjs} +2 -2
  61. package/dist/{router-a5G7q8_3.mjs.map → router-BaTbc9VX.mjs.map} +1 -1
  62. package/dist/{run-BCpbxqA5.mjs → run-CLYTOm0x.mjs} +599 -22
  63. package/dist/run-CLYTOm0x.mjs.map +1 -0
  64. package/dist/{run-env-DRcp7A8K.mjs → run-env-Bnmf6bRI.mjs} +2 -2
  65. package/dist/{run-env-DRcp7A8K.mjs.map → run-env-Bnmf6bRI.mjs.map} +1 -1
  66. package/dist/{runtime-paths-CHTg3ywb.mjs → runtime-paths-D3FKAm69.mjs} +1 -1
  67. package/dist/{runtime-paths-CHTg3ywb.mjs.map → runtime-paths-D3FKAm69.mjs.map} +1 -1
  68. package/dist/{search-BOSphCJ1.mjs → search-CNAGTiJP.mjs} +2 -2
  69. package/dist/{search-BOSphCJ1.mjs.map → search-CNAGTiJP.mjs.map} +1 -1
  70. package/dist/{sources-CijVso3n.mjs → sources-CM2g-CLT.mjs} +2 -2
  71. package/dist/{sources-CijVso3n.mjs.map → sources-CM2g-CLT.mjs.map} +1 -1
  72. package/dist/{stop-words-BdQuaE9K.mjs → stop-words-DtxaTWU_.mjs} +1 -1
  73. package/dist/{stop-words-BdQuaE9K.mjs.map → stop-words-DtxaTWU_.mjs.map} +1 -1
  74. package/dist/{utils-C9HsYDpO.mjs → utils-DddRwMsG.mjs} +2 -2
  75. package/dist/{utils-C9HsYDpO.mjs.map → utils-DddRwMsG.mjs.map} +1 -1
  76. package/dist/{zettelkasten-CtGHQWPU.mjs → zettelkasten-BhZMvmoK.mjs} +149 -7
  77. package/dist/zettelkasten-BhZMvmoK.mjs.map +1 -0
  78. package/dist/zettelkasten-BwV1pluL.mjs +5 -0
  79. package/docs/commands/worker.md +2 -0
  80. package/package.json +1 -1
  81. package/dist/async-C2Bm_Lal.mjs +0 -300
  82. package/dist/async-C2Bm_Lal.mjs.map +0 -1
  83. package/dist/auto-route-o0BOsXn7.mjs.map +0 -1
  84. package/dist/chunker-BH4i-F2b.mjs.map +0 -1
  85. package/dist/clusters-BCtD3fbe.mjs +0 -169
  86. package/dist/clusters-BCtD3fbe.mjs.map +0 -1
  87. package/dist/context-handover-cache-pkHzmL3c.mjs.map +0 -1
  88. package/dist/daemon-DXlaVCkw.mjs +0 -1741
  89. package/dist/daemon-DXlaVCkw.mjs.map +0 -1
  90. package/dist/daemon-DyORmxZu.mjs +0 -19
  91. package/dist/detector-BEPFsINR.mjs +0 -3
  92. package/dist/detector-BRTtAWrM.mjs +0 -65
  93. package/dist/detector-BRTtAWrM.mjs.map +0 -1
  94. package/dist/factory-CNpPQQ-5.mjs +0 -249
  95. package/dist/factory-CNpPQQ-5.mjs.map +0 -1
  96. package/dist/factory-DY7x73mE.mjs +0 -3
  97. package/dist/fallback-CIiq2Raw.mjs.map +0 -1
  98. package/dist/federation-db-BTyoufBh.mjs +0 -139
  99. package/dist/federation-db-BTyoufBh.mjs.map +0 -1
  100. package/dist/federation-db-HfIFc7FG.mjs +0 -3
  101. package/dist/helpers-BRCJg0G3.mjs +0 -223
  102. package/dist/helpers-BRCJg0G3.mjs.map +0 -1
  103. package/dist/indexer-backend-DFF2FrYx.mjs +0 -5
  104. package/dist/indexer-backend-isSLg6yE.mjs +0 -1
  105. package/dist/kg-entity-DCOcsVFD.mjs +0 -29
  106. package/dist/kg-entity-DCOcsVFD.mjs.map +0 -1
  107. package/dist/latent-ideas-wwAXquGe.mjs +0 -191
  108. package/dist/latent-ideas-wwAXquGe.mjs.map +0 -1
  109. package/dist/link-boost-CnI7UVMJ.mjs +0 -34
  110. package/dist/link-boost-CnI7UVMJ.mjs.map +0 -1
  111. package/dist/main-resolver-BKz_OuEh.mjs +0 -7
  112. package/dist/merge-2gqRPFu2.mjs +0 -3
  113. package/dist/merge-DgU9OgZy.mjs +0 -6
  114. package/dist/merge-DgU9OgZy.mjs.map +0 -1
  115. package/dist/module-paths-DdRzbkUI.mjs +0 -44
  116. package/dist/module-paths-DdRzbkUI.mjs.map +0 -1
  117. package/dist/neighborhood-2FsmzoxG.mjs +0 -114
  118. package/dist/neighborhood-2FsmzoxG.mjs.map +0 -1
  119. package/dist/note-context-De63k8na.mjs +0 -106
  120. package/dist/note-context-De63k8na.mjs.map +0 -1
  121. package/dist/postgres-Ceqsa64C.mjs.map +0 -1
  122. package/dist/program-JJ0TwSHI.mjs.map +0 -1
  123. package/dist/query-feedback-B_iigYj-.mjs +0 -3
  124. package/dist/registry-db-C7voqML9.mjs +0 -213
  125. package/dist/registry-db-C7voqML9.mjs.map +0 -1
  126. package/dist/registry-db-JHPhA8vF.mjs +0 -3
  127. package/dist/registry-postgres-nOfyBSIW.mjs +0 -795
  128. package/dist/registry-postgres-nOfyBSIW.mjs.map +0 -1
  129. package/dist/registry-sqlite-DrCW1aRK.mjs +0 -593
  130. package/dist/registry-sqlite-DrCW1aRK.mjs.map +0 -1
  131. package/dist/router-CXUGsv85.mjs +0 -3
  132. package/dist/run-BCpbxqA5.mjs.map +0 -1
  133. package/dist/search-Bf3Kub3F.mjs +0 -3
  134. package/dist/server-DgmAHyFK.mjs +0 -403
  135. package/dist/server-DgmAHyFK.mjs.map +0 -1
  136. package/dist/session-keepalive-DxjTHGcK.mjs +0 -582
  137. package/dist/session-keepalive-DxjTHGcK.mjs.map +0 -1
  138. package/dist/sqlite-CqsTy6xo.mjs +0 -936
  139. package/dist/sqlite-CqsTy6xo.mjs.map +0 -1
  140. package/dist/state-DW8zdweW.mjs +0 -3
  141. package/dist/state-HyjqTihC.mjs +0 -76
  142. package/dist/state-HyjqTihC.mjs.map +0 -1
  143. package/dist/themes-CTaOj3e1.mjs +0 -148
  144. package/dist/themes-CTaOj3e1.mjs.map +0 -1
  145. package/dist/tools-BcOKPBtg.mjs +0 -1489
  146. package/dist/tools-BcOKPBtg.mjs.map +0 -1
  147. package/dist/tools-C-_l0o8Z.mjs +0 -6
  148. package/dist/trace-CtV0RO6n.mjs +0 -137
  149. package/dist/trace-CtV0RO6n.mjs.map +0 -1
  150. package/dist/utils-BrX9FLeK.mjs +0 -3
  151. package/dist/vault-indexer-BG1sEVyM.mjs +0 -537
  152. package/dist/vault-indexer-BG1sEVyM.mjs.map +0 -1
  153. package/dist/wakeup-D8n33hYV.mjs +0 -335
  154. package/dist/wakeup-D8n33hYV.mjs.map +0 -1
  155. package/dist/work-queue-worker-4tLa5gpQ.mjs +0 -567
  156. package/dist/work-queue-worker-4tLa5gpQ.mjs.map +0 -1
  157. package/dist/work-queue-worker-rFZvTO3p.mjs +0 -11
  158. package/dist/zettelkasten-CtGHQWPU.mjs.map +0 -1
@@ -1,29 +1,22 @@
1
- import { _ as warn$1, a as fmtDate, c as ok$1, d as resolvePath, f as scaffoldProjectDirs, g as smartDecodeDir, h as slugify, i as err, m as slugFromPath, n as dim$1, o as header, p as shortenPath, r as encodeDir, s as now, t as bold$1, u as renderTable } from "./utils-C9HsYDpO.mjs";
2
- import { a as slugify$1, i as parseSessionFilename } from "./migrate-BD7D8EEh.mjs";
3
- import { n as ensurePaiMarker } from "./pai-marker-D1MMswkz.mjs";
4
- import { t as STOP_WORDS } from "./stop-words-BdQuaE9K.mjs";
5
- import { t as applyRecencyBoost } from "./search-BOSphCJ1.mjs";
6
- import { n as resolveFromModule, t as packageRoot } from "./module-paths-DdRzbkUI.mjs";
7
- import { a as getStorageBackend, i as getRegistryBackend, r as createStorageBackend, s as humanDuration } from "./factory-CNpPQQ-5.mjs";
8
- import { a as formatDetectionJson, i as formatDetection, n as migrateIdentityFile, r as detectProject } from "./wakeup-D8n33hYV.mjs";
9
- import { B as claudeProjectsDir, C as findLatestNote, H as scanTranscriptFolders, I as resolveHome, L as saveScanConfig, M as cmdScan, N as loadScanConfig, P as migrateScanConfig, R as upsertProject, S as applyContinue, T as readBodyFile, U as transcriptFiles, V as findMovedProjects, d as migrateWorkQueue, g as migrateSummaryCooldowns, t as readContextHandoverCache, v as extractAndStoreTriples, w as findNotesDir$1, x as appendCheckpointToNote, z as upsertSession } from "./context-handover-cache-pkHzmL3c.mjs";
1
+ import { a as fmtDate, c as ok$1, d as scaffoldProjectDirs, f as shortenPath, g as warn$1, h as smartDecodeDir, i as err, l as renderTable, m as slugify, n as dim$1, o as header, p as slugFromPath, r as encodeDir, s as now, t as bold$1, u as resolvePath } from "./utils-DddRwMsG.mjs";
2
+ import { a as slugify$1, i as parseSessionFilename } from "./migrate-Bq0esMOa.mjs";
3
+ import { n as ensurePaiMarker } from "./pai-marker-DXVpFsYz.mjs";
4
+ import { t as STOP_WORDS } from "./stop-words-DtxaTWU_.mjs";
5
+ import { t as applyRecencyBoost } from "./search-CNAGTiJP.mjs";
6
+ import { o as packageRoot, r as indexProjectWithBackend, s as resolveFromModule } from "./postgres-D3xc2RB4.mjs";
7
+ import { a as getStorageBackend, c as MergeError, f as humanDuration, i as getRegistryBackend, l as federationDbPath, o as oldRegistryPath, r as createStorageBackend, s as registryDbPath, u as oldFederationPath } from "./factory-Ypf8r0fK.mjs";
8
+ import { b as OWNER_LABEL_PREFIX, c as migrateConfigFile, d as readMainConfigRaw, f as writeMainConfigRaw, h as resolvedMainConfigPath, l as paiConfigFilePath, m as migrateMainConfigToYaml, n as CONFIG_FILE$2, o as expandHome, p as MainConfigError, s as loadConfig, t as CONFIG_DIR, u as paiConfigYamlFilePath, v as readJsonStrict, x as UNROUTED, y as writeJsonAtomic } from "./config-C-LiGlop.mjs";
9
+ import { a as schedulerLogPath, i as paiSocketPath, n as daemonLogPath, r as daemonPidPath } from "./runtime-paths-D3FKAm69.mjs";
10
10
  import { a as paiHomePath, i as paiHomeDir, n as migratePaiDir, o as resolvePaiFile, r as migratePaiFile, t as PaiFileMigrationError } from "./pai-home-Cm9rcJgX.mjs";
11
- import { b as OWNER_LABEL_PREFIX, c as migrateConfigFile, d as readMainConfigRaw, f as writeMainConfigRaw, h as resolvedMainConfigPath, l as paiConfigFilePath, m as migrateMainConfigToYaml, n as CONFIG_FILE$2, o as expandHome, p as MainConfigError, s as loadConfig, t as CONFIG_DIR, u as paiConfigYamlFilePath, v as readJsonStrict, x as UNROUTED, y as writeJsonAtomic } from "./config-BbLFD7Uf.mjs";
12
- import { a as schedulerLogPath, i as paiSocketPath, n as daemonLogPath, r as daemonPidPath } from "./runtime-paths-CHTg3ywb.mjs";
13
- import { B as DEFAULT_CONTEXT_WINDOW, C as maskKey, D as readWorkersSection, F as needsWorkersYamlRelocation, H as stripModelVariant, I as parseWorkersYamlDocument, L as relocateWorkersYaml, M as initWorkersYaml, N as inlineWorkersYamlKeys, P as migrateWorkersToYaml, R as workersYamlLegacyNotice, V as contextWindowFromModelId, b as getProviderOrNative, d as MODEL_CAPABILITIES, h as WorkersConfigError, p as PROVIDER_TAGS, r as ANTHROPIC_NATIVE, t as buildRunEnv, w as nativeAnthropicProvider, x as isModelCapability, y as expandHome$1, z as workersYamlPath } from "./run-env-DRcp7A8K.mjs";
14
- import { $ as parseRunnerArgs, A as mergeWorker, D as discardWorker, G as loadStatuses, H as isChatPane, I as UNLABELED, J as ownsPid, M as verifyWorker, O as gcWorktrees, P as appendLedger, Q as longInlinePromptHint, U as isLive, W as loadStatus, X as setWorkerLabel, Y as saveStatus, Z as waitForTerminalStatus, _ as callerDescription, c as handoffFromInside, f as checkPaneForWorker, g as markControlsHeld, h as clickrControlsArgv, i as usageContextTokens, it as expandMcpNames, j as uncommittedPaths, k as git, m as openPaneForWorker, n as runWorker, nt as projectLaunchConfig, o as parseWorkerReport, p as openFollowPane, r as testProvider, rt as describeMcp, tt as pinNotices, u as sayToWorker, y as requestKill } from "./run-BCpbxqA5.mjs";
15
- import { t as MergeError } from "./merge-DgU9OgZy.mjs";
16
- import { n as oldFederationPath, t as federationDbPath } from "./federation-db-BTyoufBh.mjs";
17
- import { r as registryDbPath, t as oldRegistryPath } from "./registry-db-C7voqML9.mjs";
18
- import { i as indexProjectWithBackend } from "./async-C2Bm_Lal.mjs";
19
- import { t as PaiClient } from "./ipc-client-D16Xw6Uo.mjs";
20
- import { A as getConfigValueOp, C as setWorkersEnabled, D as useProvider, E as updateProvider, M as setConfigValueOp, N as unsetConfigValueOp, O as MainConfigOpsError, S as setProviderModel, T as unsetClass, _ as removeProvider, a as followWorkers, b as setClass, c as statusLineOutput, d as addProvider, f as classTargetText, g as modelPrefsText, h as describeProviders, i as fallbackStatusText, j as listConfigOp, k as formatConfigGetOutput, l as readSpecPrompt, m as describeModels, n as fallbackOn, o as psOutput, p as describeCapabilities, r as fallbackStatus, s as replayOutput, t as fallbackOff, u as resolveSpecPath, v as resolveProviderName, w as unsetCapabilityPreference, x as setProviderEnabled, y as setCapabilityPreference } from "./fallback-CIiq2Raw.mjs";
21
- import { _ as resolveSessionByNameOrId, a as buildDeduped, c as hasConversation, d as providerResumePlan, f as restoreTopLevel, g as migrateSessionScanCache, h as fmtAge$1, l as launchInDir, m as printExitDir, o as normalizeName$2, p as resumeArgvText, s as renderDedupedSessions, t as cmdMain, u as launchPrompt, v as scanCacheFilePath, y as scanSessions } from "./main-resolver-DPPwHNtn.mjs";
22
- import { n as queriesDirPath, t as migrateQueriesDir } from "./query-feedback-BIaZTTFO.mjs";
23
- import { _ as statusPath, h as ledgerPath, m as eventsPath, n as ensureProxyRunning, p as ensureNoMcpConfig, r as stopProxy, t as DEFAULT_PROXY_PORT, v as workersLogDir } from "./server-DgmAHyFK.mjs";
24
- import { i as sendToSession, n as fetchLiveSessions, r as revealItermSession, t as callAiBroker } from "./aibroker-client-C5Fw7DNz.mjs";
25
- import { a as totalUsageTokens, i as parseSessionUsage, r as sessionKeepaliveLedgerSummary, t as loadSessionKeepaliveState } from "./session-keepalive-DxjTHGcK.mjs";
26
- import { t as runChain } from "./chain-CZfKIEq9.mjs";
11
+ import { At as formatDetectionJson, Ct as upsertSession, Dt as transcriptFiles, Et as scanTranscriptFolders, Ot as detectProject, St as upsertProject, Tt as findMovedProjects, _t as loadScanConfig, a as sessionKeepaliveLedgerSummary, at as findLatestNote, bt as resolveHome, et as extractAndStoreTriples, g as migrateWorkQueue, gt as cmdScan, ht as migrateIdentityFile, it as applyContinue, kt as formatDetection, o as parseSessionUsage, ot as findNotesDir$1, r as loadSessionKeepaliveState, rt as appendCheckpointToNote, s as totalUsageTokens, st as readBodyFile, t as readContextHandoverCache, vt as migrateScanConfig, wt as claudeProjectsDir, x as migrateSummaryCooldowns, xt as saveScanConfig } from "./context-handover-cache-9PGvXRIw.mjs";
12
+ import { B as DEFAULT_CONTEXT_WINDOW, C as maskKey, D as readWorkersSection, F as needsWorkersYamlRelocation, H as stripModelVariant, I as parseWorkersYamlDocument, L as relocateWorkersYaml, M as initWorkersYaml, N as inlineWorkersYamlKeys, P as migrateWorkersToYaml, R as workersYamlLegacyNotice, V as contextWindowFromModelId, b as getProviderOrNative, d as MODEL_CAPABILITIES, h as WorkersConfigError, p as PROVIDER_TAGS, r as ANTHROPIC_NATIVE, t as buildRunEnv, w as nativeAnthropicProvider, x as isModelCapability, y as expandHome$1, z as workersYamlPath } from "./run-env-Bnmf6bRI.mjs";
13
+ import { $ as longInlinePromptHint, A as git, F as appendLedger, G as loadStatus, K as loadStatuses, L as UNLABELED, M as uncommittedPaths, N as verifyWorker, O as discardWorker, Q as waitForTerminalStatus, U as isChatPane, W as isLive, X as saveStatus, Y as ownsPid, Z as setWorkerLabel, _ as markControlsHeld, _t as expandMcpNames, b as requestKill, c as handoffFromInside, dt as ledgerPath, et as parseRunnerArgs, f as checkPaneForWorker, ft as statusPath, g as clickrControlsArgv, gt as describeMcp, h as openPaneForWorker, ht as projectLaunchConfig, i as usageContextTokens, it as stopProxy, j as mergeWorker, k as gcWorktrees, lt as ensureNoMcpConfig, m as openFollowPane, mt as pinNotices, n as runWorker, nt as DEFAULT_PROXY_PORT, o as parseWorkerReport, p as closeEndedPanes, pt as workersLogDir, r as testProvider, rt as ensureProxyRunning, u as sayToWorker, ut as eventsPath, v as callerDescription } from "./run-CLYTOm0x.mjs";
14
+ import { t as PaiClient } from "./ipc-client-BLYX51nG.mjs";
15
+ import { A as getConfigValueOp, C as setWorkersEnabled, D as useProvider, E as updateProvider, M as setConfigValueOp, N as unsetConfigValueOp, O as MainConfigOpsError, S as setProviderModel, T as unsetClass, _ as removeProvider, a as followWorkers, b as setClass, c as statusLineOutput, d as addProvider, f as classTargetText, g as modelPrefsText, h as describeProviders, i as fallbackStatusText, j as listConfigOp, k as formatConfigGetOutput, l as readSpecPrompt, m as describeModels, n as fallbackOn, o as psOutput, p as describeCapabilities, r as fallbackStatus, s as replayOutput, t as fallbackOff, u as resolveSpecPath, v as resolveProviderName, w as unsetCapabilityPreference, x as setProviderEnabled, y as setCapabilityPreference } from "./fallback-D51R4shY.mjs";
16
+ import { _ as resolveSessionByNameOrId, a as buildDeduped, c as hasConversation, d as providerResumePlan, f as restoreTopLevel, g as migrateSessionScanCache, h as fmtAge$1, l as launchInDir, m as printExitDir, o as normalizeName$2, p as resumeArgvText, s as renderDedupedSessions, t as cmdMain, u as launchPrompt, v as scanCacheFilePath, y as scanSessions } from "./main-resolver-kVkMJZUD.mjs";
17
+ import { n as queriesDirPath, t as migrateQueriesDir } from "./query-feedback-B7FYE4JR.mjs";
18
+ import { i as sendToSession, n as fetchLiveSessions, r as revealItermSession, t as callAiBroker } from "./aibroker-client-Dfv7j1Od.mjs";
19
+ import { t as runChain } from "./chain-D5876UQX.mjs";
27
20
  import { appendFileSync, chmodSync, closeSync, copyFileSync, cpSync, createReadStream, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, readlinkSync, realpathSync, renameSync, statSync, symlinkSync, unlinkSync, writeFileSync } from "node:fs";
28
21
  import { homedir, platform, tmpdir, userInfo } from "node:os";
29
22
  import { basename, dirname, join, relative, resolve, sep } from "node:path";
@@ -31,6 +24,7 @@ import chalk from "chalk";
31
24
  import { createHash, randomUUID } from "node:crypto";
32
25
  import { Command, InvalidArgumentError } from "commander";
33
26
  import { fileURLToPath } from "node:url";
27
+ import pg from "pg";
34
28
  import { execFile, execFileSync, execSync, spawn, spawnSync } from "node:child_process";
35
29
  import { parseDocument } from "yaml";
36
30
  import BetterSqlite3 from "better-sqlite3";
@@ -38,7 +32,6 @@ import { createInterface } from "node:readline";
38
32
  import { createConnection } from "net";
39
33
  import { getEncoding } from "js-tiktoken";
40
34
  import { promisify } from "node:util";
41
- import pg from "pg";
42
35
 
43
36
  //#region src/registry/registrable.ts
44
37
  /**
@@ -162,7 +155,7 @@ async function cmdPromote(opts) {
162
155
  console.error(dim$1(` Pick a durable location for the new project.`));
163
156
  process.exit(1);
164
157
  }
165
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
158
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
166
159
  const registryBackend = await getRegistryBackend();
167
160
  const encodedDir = encodeDir(targetPath);
168
161
  if (await registryBackend.getProjectBySlug(slug) ?? await registryBackend.getProjectByRootPath(targetPath) ?? await registryBackend.getProjectByEncodedDir(encodedDir)) {
@@ -2046,7 +2039,7 @@ async function cmdUnregister(slug, opts = {}) {
2046
2039
  //#region src/cli/commands/project/projects-index.ts
2047
2040
  function registerProjectsCommands(projectsCmd) {
2048
2041
  projectsCmd.command("list", { isDefault: true }).description("Show the unified deduped listing (same as `pai`).\nUse --all to include cold / zero-session / archived projects.").option("--all", "Show all entries including cold / zero-session / archived projects").option("-n, --n <count>", "Max rows to show", "20").action(async (opts) => {
2049
- const { cmdMain } = await import("./main-resolver-BKz_OuEh.mjs");
2042
+ const { cmdMain } = await import("./main-resolver-BYgP86C1.mjs");
2050
2043
  await cmdMain(void 0, void 0, opts);
2051
2044
  });
2052
2045
  projectsCmd.command("list-raw").description("Raw registry listing with slug, path, status, last_active columns").option("--all", "Include archived projects (default: active only)").option("--status <status>", "Filter by status: active | archived").option("--tag <tag>", "Filter by tag").option("--type <type>", "Filter by type").action(async (opts) => {
@@ -2912,7 +2905,7 @@ const DEFAULT_PAGE_SIZE = 500;
2912
2905
  async function runEmbed(backend, projectId, projectSlug, batchSize = 50, pageSize = DEFAULT_PAGE_SIZE) {
2913
2906
  const label = projectSlug ? `project ${projectSlug}` : "all projects";
2914
2907
  console.log(dim$1(`Generating embeddings for ${label} (this may take a while on first run)...`));
2915
- const { generateEmbeddings, serializeEmbedding } = await import("./embeddings-CcscYWwk.mjs");
2908
+ const { generateEmbeddings, serializeEmbedding } = await import("./embeddings-CEBGrzwu.mjs");
2916
2909
  const { chunks: totalEstimate } = projectId !== void 0 ? await backend.getProjectStats(projectId) : await backend.getStats();
2917
2910
  let done = 0;
2918
2911
  let after = null;
@@ -3076,7 +3069,7 @@ function registerSearchCommand(memoryCmd) {
3076
3069
  let results;
3077
3070
  if (mode === "keyword") results = await backend.searchKeyword(query, searchOpts);
3078
3071
  else {
3079
- const { generateEmbedding } = await import("./embeddings-CcscYWwk.mjs");
3072
+ const { generateEmbedding } = await import("./embeddings-CEBGrzwu.mjs");
3080
3073
  console.log(dim$1("Generating query embedding..."));
3081
3074
  const queryEmbedding = await generateEmbedding(query, true);
3082
3075
  if (mode === "semantic") results = await backend.searchSemantic(queryEmbedding, searchOpts);
@@ -3122,7 +3115,7 @@ function registerSearchCommand(memoryCmd) {
3122
3115
  return;
3123
3116
  }
3124
3117
  if (opts.rerank !== false) {
3125
- const { rerankResults } = await import("./reranker-CFiEzHQu.mjs");
3118
+ const { rerankResults } = await import("./reranker-CZ2mP4cf.mjs");
3126
3119
  console.log(dim$1("Reranking with cross-encoder..."));
3127
3120
  results = await rerankResults(query, results, { topK: maxResults });
3128
3121
  }
@@ -3261,9 +3254,9 @@ function registerStatsCommands(memoryCmd) {
3261
3254
  //#region src/cli/commands/memory/sources-cmd.ts
3262
3255
  function registerSourcesCommand(memoryCmd) {
3263
3256
  memoryCmd.command("sources").description("Show what the indexer has taken in: composition by source, which roots\ncontent enters from, the heaviest single files, and how many chunks are\nrewritten per day (which distinguishes a finite backlog from a treadmill).").option("--limit <n>", "Rows per section (default 8)", "8").action(async (opts) => {
3264
- const { createStorageBackend } = await import("./factory-DY7x73mE.mjs");
3265
- const { loadConfig } = await import("./config-YinjgXEJ.mjs");
3266
- const { cmdMemorySources } = await import("./sources-CijVso3n.mjs");
3257
+ const { createStorageBackend } = await import("./factory-DrBg24UT.mjs");
3258
+ const { loadConfig } = await import("./config-DKIA7wgF.mjs");
3259
+ const { cmdMemorySources } = await import("./sources-CM2g-CLT.mjs");
3267
3260
  let backend;
3268
3261
  try {
3269
3262
  backend = await createStorageBackend(loadConfig());
@@ -3963,8 +3956,8 @@ async function escalate(task, headline, detail, state, now, opts) {
3963
3956
  state.alarmedAt[task.id] = now;
3964
3957
  let delivered = false;
3965
3958
  try {
3966
- const { routeNotification } = await import("./router-CXUGsv85.mjs");
3967
- const { loadConfig } = await import("./config-YinjgXEJ.mjs");
3959
+ const { routeNotification } = await import("./router-BK-hFeQ6.mjs");
3960
+ const { loadConfig } = await import("./config-DKIA7wgF.mjs");
3968
3961
  delivered = (await routeNotification({
3969
3962
  event: "error",
3970
3963
  title: `PAI: ${headline}`,
@@ -3999,7 +3992,7 @@ async function escalate(task, headline, detail, state, now, opts) {
3999
3992
  async function alertParked(task, reason) {
4000
3993
  const text = `PAI parked "${task.title}" (${task.id}) — the scheduler will not retry it.\nReason: ${reason}\nTo release it: fix the cause, then move the due date — due_string, natural language only (e.g. "tomorrow 9am").`;
4001
3994
  try {
4002
- const { callAiBroker } = await import("./aibroker-client-B8c42Lh8.mjs");
3995
+ const { callAiBroker } = await import("./aibroker-client-CHEEvJZW.mjs");
4003
3996
  await callAiBroker("pailot_send", { text }, 8e3);
4004
3997
  } catch (e) {
4005
3998
  console.error(`[pai-poller] parked-task alert not delivered to PAILot (${e instanceof Error ? e.message : String(e)}): ${text}`);
@@ -6621,6 +6614,10 @@ function formatStorageHealth(s, now = Date.now()) {
6621
6614
  text: `${outage.attempts} attempts — ${outage.lastError}`
6622
6615
  });
6623
6616
  }
6617
+ for (const [name, f] of Object.entries(s.passFailures ?? {})) lines.push({
6618
+ severity: "error",
6619
+ text: `last ${name}: FAILED ${f.at} ${f.error}` + (f.gaveUp ? " (retries exhausted)" : ` (attempt ${f.attempts}, retrying)`)
6620
+ });
6624
6621
  const queue = queueLine(s.workQueue, outage !== null);
6625
6622
  if (queue) lines.push(queue);
6626
6623
  if (outage) lines.push({
@@ -7097,8 +7094,8 @@ function cmdLogs(opts) {
7097
7094
  }
7098
7095
  function registerDaemonCommands(daemonCmd) {
7099
7096
  daemonCmd.command("serve").description("Start the PAI daemon in the foreground").action(async () => {
7100
- const { serve } = await import("./daemon-DyORmxZu.mjs");
7101
- const { loadConfig: lc, ensureConfigDir } = await import("./config-YinjgXEJ.mjs");
7097
+ const { serve } = await import("./daemon-DL0eglMJ.mjs");
7098
+ const { loadConfig: lc, ensureConfigDir } = await import("./config-DKIA7wgF.mjs");
7102
7099
  ensureConfigDir();
7103
7100
  await serve(lc());
7104
7101
  });
@@ -9724,7 +9721,7 @@ async function cmdExplore(note, opts) {
9724
9721
  const depth = parseInt(opts.depth ?? "3", 10);
9725
9722
  const direction = opts.direction ?? "both";
9726
9723
  const mode = opts.mode ?? "all";
9727
- const { zettelExplore } = await import("./zettelkasten-CtGHQWPU.mjs");
9724
+ const { zettelExplore } = await import("./zettelkasten-BwV1pluL.mjs");
9728
9725
  const result = await zettelExplore(await getFedBackend(), {
9729
9726
  startNote: note,
9730
9727
  depth,
@@ -9789,7 +9786,7 @@ async function cmdHealth(opts) {
9789
9786
  const projectPath = opts.project;
9790
9787
  const recentDays = parseInt(opts.days ?? "30", 10);
9791
9788
  const includeTypes = opts.include ? opts.include.split(",").map((s) => s.trim()) : void 0;
9792
- const { zettelHealth } = await import("./zettelkasten-CtGHQWPU.mjs");
9789
+ const { zettelHealth } = await import("./zettelkasten-BwV1pluL.mjs");
9793
9790
  const result = await zettelHealth(await getFedBackend(), {
9794
9791
  scope,
9795
9792
  projectPath,
@@ -9860,7 +9857,7 @@ async function cmdSurprise(note, opts) {
9860
9857
  const limit = parseInt(opts.limit ?? "10", 10);
9861
9858
  const minSimilarity = parseFloat(opts.minSimilarity ?? "0.3");
9862
9859
  const minGraphDistance = parseInt(opts.minDistance ?? "3", 10);
9863
- const { zettelSurprise } = await import("./zettelkasten-CtGHQWPU.mjs");
9860
+ const { zettelSurprise } = await import("./zettelkasten-BwV1pluL.mjs");
9864
9861
  const backend = await getFedBackend();
9865
9862
  console.log();
9866
9863
  console.log(header(" PAI Zettel Surprise"));
@@ -9915,7 +9912,7 @@ async function cmdSuggest(note, opts) {
9915
9912
  const vaultProjectId = parseInt(opts.vaultProjectId, 10);
9916
9913
  const limit = parseInt(opts.limit ?? "5", 10);
9917
9914
  const excludeLinked = opts.excludeLinked !== false;
9918
- const { zettelSuggest } = await import("./zettelkasten-CtGHQWPU.mjs");
9915
+ const { zettelSuggest } = await import("./zettelkasten-BwV1pluL.mjs");
9919
9916
  const backend = await getFedBackend();
9920
9917
  console.log();
9921
9918
  console.log(header(" PAI Zettel Suggest"));
@@ -9968,7 +9965,7 @@ async function cmdConverse(question, opts) {
9968
9965
  const vaultProjectId = parseInt(opts.vaultProjectId, 10);
9969
9966
  const depth = parseInt(opts.depth ?? "2", 10);
9970
9967
  const limit = parseInt(opts.limit ?? "15", 10);
9971
- const { zettelConverse } = await import("./zettelkasten-CtGHQWPU.mjs");
9968
+ const { zettelConverse } = await import("./zettelkasten-BwV1pluL.mjs");
9972
9969
  const backend = await getFedBackend();
9973
9970
  console.log();
9974
9971
  console.log(header(" PAI Zettel Converse"));
@@ -10031,7 +10028,7 @@ async function cmdThemes(opts) {
10031
10028
  const minClusterSize = parseInt(opts.minSize ?? "3", 10);
10032
10029
  const maxThemes = parseInt(opts.maxThemes ?? "10", 10);
10033
10030
  const similarityThreshold = parseFloat(opts.threshold ?? "0.65");
10034
- const { zettelThemes } = await import("./zettelkasten-CtGHQWPU.mjs");
10031
+ const { zettelThemes } = await import("./zettelkasten-BwV1pluL.mjs");
10035
10032
  const backend = await getFedBackend();
10036
10033
  console.log();
10037
10034
  console.log(header(" PAI Zettel Themes"));
@@ -16106,7 +16103,7 @@ async function migrateToPostgres(opts = {}) {
16106
16103
  const dump = pgDump(container, pgConfig, dumpPath);
16107
16104
  if (!dump.ok) return refused(dump.reason, dryRun);
16108
16105
  }
16109
- const { PostgresBackend } = await import("./postgres-Ceqsa64C.mjs");
16106
+ const { PostgresBackend } = await import("./postgres-BmLr0MUm.mjs");
16110
16107
  await PostgresBackend.ensureDatabase(pgConfig);
16111
16108
  const sqlite = new BetterSqlite3(sqliteFederationPath, { readonly: true });
16112
16109
  const registrySqlite = sqliteRegistryPath === sqliteFederationPath ? sqlite : new BetterSqlite3(sqliteRegistryPath, { readonly: true });
@@ -16677,7 +16674,7 @@ async function getSessionTags(registryBackend, sessionId) {
16677
16674
  * Session CRUD commands: list, info, rename, slug, tag, route, active, auto-route.
16678
16675
  */
16679
16676
  async function cmdList(projectSlug, opts) {
16680
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
16677
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
16681
16678
  const registryBackend = await getRegistryBackend();
16682
16679
  const limit = parseInt(opts.limit ?? "20", 10);
16683
16680
  let project;
@@ -16742,7 +16739,7 @@ async function cmdList(projectSlug, opts) {
16742
16739
  console.log(dim$1(` ${rows.length} session(s) shown (limit: ${limit})`));
16743
16740
  }
16744
16741
  async function cmdInfo(projectSlug, sessionNumber) {
16745
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
16742
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
16746
16743
  const registryBackend = await getRegistryBackend();
16747
16744
  const project = await getProject$1(registryBackend, projectSlug);
16748
16745
  if (!project) {
@@ -16766,7 +16763,7 @@ async function cmdInfo(projectSlug, sessionNumber) {
16766
16763
  console.log();
16767
16764
  }
16768
16765
  async function cmdRename(projectSlug, numberOrLatest, newSlug) {
16769
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
16766
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
16770
16767
  await cmdRenameWith(await getRegistryBackend(), projectSlug, numberOrLatest, newSlug);
16771
16768
  }
16772
16769
  async function cmdRenameWith(registryBackend, projectSlug, numberOrLatest, newSlug) {
@@ -16829,7 +16826,7 @@ async function cmdRenameWith(registryBackend, projectSlug, numberOrLatest, newSl
16829
16826
  console.log();
16830
16827
  }
16831
16828
  async function cmdSlug(projectSlug, numberOrLatest, opts) {
16832
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
16829
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
16833
16830
  const registryBackend = await getRegistryBackend();
16834
16831
  const project = await getProject$1(registryBackend, projectSlug);
16835
16832
  if (!project) {
@@ -16859,7 +16856,7 @@ async function cmdSlug(projectSlug, numberOrLatest, opts) {
16859
16856
  }
16860
16857
  }
16861
16858
  async function cmdTag(projectSlug, sessionNumber, rawTags) {
16862
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
16859
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
16863
16860
  const registryBackend = await getRegistryBackend();
16864
16861
  const project = await getProject$1(registryBackend, projectSlug);
16865
16862
  if (!project) {
@@ -16899,7 +16896,7 @@ async function cmdTag(projectSlug, sessionNumber, rawTags) {
16899
16896
  console.log();
16900
16897
  }
16901
16898
  async function cmdRoute(projectSlug, sessionNumber, targetProjectSlug, opts) {
16902
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
16899
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
16903
16900
  const registryBackend = await getRegistryBackend();
16904
16901
  const project = await getProject$1(registryBackend, projectSlug);
16905
16902
  if (!project) {
@@ -16941,7 +16938,7 @@ async function cmdRoute(projectSlug, sessionNumber, targetProjectSlug, opts) {
16941
16938
  console.log();
16942
16939
  }
16943
16940
  async function cmdActive(opts) {
16944
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
16941
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
16945
16942
  const registryBackend = await getRegistryBackend();
16946
16943
  const minutes = parseInt(opts.minutes ?? "60", 10);
16947
16944
  const cutoff = Date.now() - minutes * 60 * 1e3;
@@ -17028,9 +17025,9 @@ async function cmdActive(opts) {
17028
17025
  ], rows));
17029
17026
  }
17030
17027
  async function cmdAutoRoute(opts) {
17031
- const { autoRoute, formatAutoRouteJson } = await import("./auto-route-o0BOsXn7.mjs");
17032
- const { getRegistryBackend, createStorageBackend } = await import("./factory-DY7x73mE.mjs");
17033
- const { loadConfig } = await import("./config-YinjgXEJ.mjs");
17028
+ const { autoRoute, formatAutoRouteJson } = await import("./auto-route-D6fW1Q8z.mjs");
17029
+ const { getRegistryBackend, createStorageBackend } = await import("./factory-DrBg24UT.mjs");
17030
+ const { loadConfig } = await import("./config-DKIA7wgF.mjs");
17034
17031
  const config = loadConfig();
17035
17032
  const registryBackend = await getRegistryBackend();
17036
17033
  const federation = await createStorageBackend(config);
@@ -17266,7 +17263,7 @@ async function cmdPause(opts) {
17266
17263
  process.exitCode = 1;
17267
17264
  return;
17268
17265
  }
17269
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
17266
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
17270
17267
  const registryBackend = await getRegistryBackend();
17271
17268
  const cwd = process.cwd();
17272
17269
  const project = await resolveProjectByCwd(registryBackend, cwd);
@@ -17661,7 +17658,7 @@ function buildStopBody(project, sessionId) {
17661
17658
  }
17662
17659
  }
17663
17660
  async function cmdHandover(projectSlug, numberOrLatest, sessionId) {
17664
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
17661
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
17665
17662
  const registryBackend = await getRegistryBackend();
17666
17663
  let project;
17667
17664
  if (projectSlug) {
@@ -17957,7 +17954,7 @@ function touchSentinel(rootPath) {
17957
17954
  async function cmdAutosave(opts) {
17958
17955
  const minGap = parseInt(opts.minGap ?? String(DEFAULT_MIN_GAP), 10);
17959
17956
  const cwd = process.cwd();
17960
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
17957
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
17961
17958
  const registryBackend = await getRegistryBackend();
17962
17959
  const project = await resolveProjectByCwd(registryBackend, cwd);
17963
17960
  if (!project) return;
@@ -19365,10 +19362,20 @@ function registerWorkerCommands(workerCmd) {
19365
19362
  process.exitCode = code ?? 1;
19366
19363
  });
19367
19364
  });
19368
- workerCmd.command("pane [id]").description("Open the follow pane for a worker (tmux split when $TMUX is set, else iTerm2 on macOS, else prints the follow command)").option("--check", "Only report whether the pane is open, plus the profile file's path, font, and the hosting window's bounds").action(async (id, opts) => {
19365
+ workerCmd.command("pane [id]").description("Open the follow pane for a worker (tmux split when $TMUX is set, else iTerm2 on macOS, else prints the follow command)").option("--check", "Only report whether the pane is open, plus the profile file's path, font, and the hosting window's bounds").option("--close-ended", "Close every open follow pane whose worker has ended (registry, then iTerm/tmux discovery)").option("--dry-run", "With --close-ended: only list what would be closed").action(async (id, opts) => {
19369
19366
  try {
19370
19367
  const { workers } = readWorkersSection();
19371
19368
  const logDir = currentLogDir();
19369
+ if (opts.closeEnded) {
19370
+ const r = await closeEndedPanes(logDir, (wid) => {
19371
+ const st = loadStatus(logDir, wid);
19372
+ return st !== null && st.state !== "running";
19373
+ }, opts.dryRun === true);
19374
+ for (const l of r.closed) console.log(`${opts.dryRun ? "would close" : "closed"} ${l}`);
19375
+ for (const l of r.kept) console.log(`kept ${l}`);
19376
+ if (!r.closed.length) console.log("no ended worker panes open");
19377
+ return;
19378
+ }
19372
19379
  const term = process.env.ITERM_SESSION_ID ?? "";
19373
19380
  if (id) {
19374
19381
  const msg = opts.check ? await checkPaneForWorker(id, workers.pane.fontSize, term) : (await openPaneForWorker(logDir, workers, id, term)).message;
@@ -20394,8 +20401,8 @@ async function analyzeProject(registryBackend, project) {
20394
20401
  async function countVectorDbPaths(oldPaths) {
20395
20402
  if (oldPaths.length === 0) return 0;
20396
20403
  try {
20397
- const { loadConfig } = await import("./config-YinjgXEJ.mjs");
20398
- const { createStorageBackend } = await import("./factory-DY7x73mE.mjs");
20404
+ const { loadConfig } = await import("./config-DKIA7wgF.mjs");
20405
+ const { createStorageBackend } = await import("./factory-DrBg24UT.mjs");
20399
20406
  const config = loadConfig();
20400
20407
  if (config.storageBackend !== "postgres") return 0;
20401
20408
  const backend = await createStorageBackend(config);
@@ -20412,8 +20419,8 @@ async function countVectorDbPaths(oldPaths) {
20412
20419
  async function updateVectorDbPaths(moves) {
20413
20420
  if (moves.length === 0) return 0;
20414
20421
  try {
20415
- const { loadConfig } = await import("./config-YinjgXEJ.mjs");
20416
- const { createStorageBackend } = await import("./factory-DY7x73mE.mjs");
20422
+ const { loadConfig } = await import("./config-DKIA7wgF.mjs");
20423
+ const { createStorageBackend } = await import("./factory-DrBg24UT.mjs");
20417
20424
  const config = loadConfig();
20418
20425
  if (config.storageBackend !== "postgres") return 0;
20419
20426
  const backend = await createStorageBackend(config);
@@ -20500,7 +20507,7 @@ async function displayDryRun(plans) {
20500
20507
  console.log();
20501
20508
  }
20502
20509
  async function executeCleanup(plans, skipReindex) {
20503
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
20510
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
20504
20511
  const registryBackend = await getRegistryBackend();
20505
20512
  let deleted = 0;
20506
20513
  let renamed = 0;
@@ -20697,7 +20704,7 @@ async function executeCleanup(plans, skipReindex) {
20697
20704
  //#region src/cli/commands/session-cleanup/index.ts
20698
20705
  function registerSessionCleanupCommand(sessionCmd) {
20699
20706
  sessionCmd.command("cleanup [project-slug]").description("Clean up session notes: delete empties, auto-name unnamed, move into YYYY/MM/ hierarchy, renumber").option("--execute", "Actually perform the cleanup (default is dry-run)").option("--no-renumber", "Skip renumbering sessions after deletions").option("--no-reindex", "Skip triggering memory re-index after moves").action(async (projectSlug, opts) => {
20700
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
20707
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
20701
20708
  const registryBackend = await getRegistryBackend();
20702
20709
  const dryRun = !opts.execute;
20703
20710
  const skipReindex = opts.reindex === false;
@@ -20767,7 +20774,7 @@ function finalizeNote(notePath) {
20767
20774
  }
20768
20775
  async function cmdEnd(opts) {
20769
20776
  await cmdPause(opts);
20770
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
20777
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
20771
20778
  const registryBackend = await getRegistryBackend();
20772
20779
  const cwd = process.cwd();
20773
20780
  const project = await registryBackend.findProjectByCwdPrefix(cwd);
@@ -21215,7 +21222,7 @@ async function cmdFind(query, opts) {
21215
21222
  */
21216
21223
  async function getProjects(includeArchived) {
21217
21224
  try {
21218
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
21225
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
21219
21226
  const rows = await (await getRegistryBackend()).listProjectsWithSessionStats();
21220
21227
  return includeArchived ? rows : rows.filter((p) => p.status === "active");
21221
21228
  } catch {
@@ -21689,7 +21696,7 @@ async function cmdPick(opts = {}) {
21689
21696
  const onRemove = async (rec) => {
21690
21697
  if (!rec.slug) return false;
21691
21698
  try {
21692
- const { getRegistryBackend } = await import("./factory-DY7x73mE.mjs");
21699
+ const { getRegistryBackend } = await import("./factory-DrBg24UT.mjs");
21693
21700
  const registryBackend = await getRegistryBackend();
21694
21701
  const project = await registryBackend.getProjectBySlug(rec.slug);
21695
21702
  if (!project || project.status !== "active") return false;
@@ -21974,4 +21981,4 @@ claude() {
21974
21981
 
21975
21982
  //#endregion
21976
21983
  export { drainStdio as n, buildProgram as t };
21977
- //# sourceMappingURL=program-JJ0TwSHI.mjs.map
21984
+ //# sourceMappingURL=program-DIXRtAFy.mjs.map