@tekmidian/pai 0.66.7 → 0.66.8

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 (93) hide show
  1. package/dist/{aibroker-client-BevXY1Zz.mjs → aibroker-client-BfnVwGZl.mjs} +3 -3
  2. package/dist/{aibroker-client-BevXY1Zz.mjs.map → aibroker-client-BfnVwGZl.mjs.map} +1 -1
  3. package/dist/{aibroker-client-CxTpL_u7.mjs → aibroker-client-C-O3Fflh.mjs} +1 -1
  4. package/dist/{auto-route-BVeAp0fl.mjs → auto-route-D8TBDNqb.mjs} +3 -3
  5. package/dist/{auto-route-BVeAp0fl.mjs.map → auto-route-D8TBDNqb.mjs.map} +1 -1
  6. package/dist/auto-route-DCxTKz19.mjs +7 -0
  7. package/dist/{chain-8hFKr23C.mjs → chain-BL4khGgy.mjs} +4 -3
  8. package/dist/{chain-8hFKr23C.mjs.map → chain-BL4khGgy.mjs.map} +1 -1
  9. package/dist/cli/index.mjs +20 -17
  10. package/dist/cli/index.mjs.map +1 -1
  11. package/dist/cli/program.mjs +19 -16
  12. package/dist/{config-sfaArCsl.mjs → config-DjZELvoA.mjs} +2 -2
  13. package/dist/{config-sfaArCsl.mjs.map → config-DjZELvoA.mjs.map} +1 -1
  14. package/dist/{run-env-CkAmx3lb.mjs → config-Dpe2JlbY.mjs} +5 -114
  15. package/dist/config-Dpe2JlbY.mjs.map +1 -0
  16. package/dist/{config-UWtzLpXi.mjs → config-yomayAwe.mjs} +1 -1
  17. package/dist/{context-handover-cache-Bb-H_mTa.mjs → context-handover-cache-DFqxNh-H.mjs} +27 -12
  18. package/dist/context-handover-cache-DFqxNh-H.mjs.map +1 -0
  19. package/dist/daemon/index.mjs +20 -16
  20. package/dist/daemon/index.mjs.map +1 -1
  21. package/dist/{daemon-CkbX-hV7.mjs → daemon-CsR1S_Qr.mjs} +20 -19
  22. package/dist/{daemon-CkbX-hV7.mjs.map → daemon-CsR1S_Qr.mjs.map} +1 -1
  23. package/dist/daemon-WrncnGua.mjs +23 -0
  24. package/dist/daemon-mcp/index.mjs +15 -13
  25. package/dist/daemon-mcp/index.mjs.map +1 -1
  26. package/dist/{embedding-gate-BVrr0BgS.mjs → embedding-gate-DqbKvn56.mjs} +4 -4
  27. package/dist/{embedding-gate-BVrr0BgS.mjs.map → embedding-gate-DqbKvn56.mjs.map} +1 -1
  28. package/dist/{embedding-gate-Crj8awk7.mjs → embedding-gate-SJMCPwxG.mjs} +3 -3
  29. package/dist/{embeddings-DFl88_y-.mjs → embeddings-BUjZMD9F.mjs} +1 -1
  30. package/dist/{embeddings-DFl88_y-.mjs.map → embeddings-BUjZMD9F.mjs.map} +1 -1
  31. package/dist/{embeddings-BuA7v4lk.mjs → embeddings-DrJ-ewfi.mjs} +1 -1
  32. package/dist/{env-DqTjeKoA.mjs → env-CPCNHz3i.mjs} +1 -1
  33. package/dist/{env-DqTjeKoA.mjs.map → env-CPCNHz3i.mjs.map} +1 -1
  34. package/dist/factory-DjtXElOI.mjs +9 -0
  35. package/dist/{factory-mNBitkL_.mjs → factory-yElzJc6f.mjs} +10 -10
  36. package/dist/{factory-mNBitkL_.mjs.map → factory-yElzJc6f.mjs.map} +1 -1
  37. package/dist/{fallback-DdC1_s2d.mjs → fallback-2yWDDYiT.mjs} +5 -4
  38. package/dist/{fallback-DdC1_s2d.mjs.map → fallback-2yWDDYiT.mjs.map} +1 -1
  39. package/dist/{helpers-CZsi_49C.mjs → helpers-B9LHRJ8R.mjs} +1 -1
  40. package/dist/{helpers-CZsi_49C.mjs.map → helpers-B9LHRJ8R.mjs.map} +1 -1
  41. package/dist/index.d.mts.map +1 -1
  42. package/dist/index.mjs +7 -4
  43. package/dist/{ipc-client-BgSzY9QJ.mjs → ipc-client-DVZ_EGnu.mjs} +2 -2
  44. package/dist/{ipc-client-BgSzY9QJ.mjs.map → ipc-client-DVZ_EGnu.mjs.map} +1 -1
  45. package/dist/main-resolver-DjQsexge.mjs +8 -0
  46. package/dist/{main-resolver-DEXky_Km.mjs → main-resolver-Dxvn4Mv8.mjs} +7 -6
  47. package/dist/{main-resolver-DEXky_Km.mjs.map → main-resolver-Dxvn4Mv8.mjs.map} +1 -1
  48. package/dist/{pai-marker-DXVpFsYz.mjs → pai-marker-1B7iC7oq.mjs} +121 -3
  49. package/dist/pai-marker-1B7iC7oq.mjs.map +1 -0
  50. package/dist/{planner-DBoB5GtC.mjs → planner-CspP59ya.mjs} +13 -11
  51. package/dist/{planner-DBoB5GtC.mjs.map → planner-CspP59ya.mjs.map} +1 -1
  52. package/dist/{postgres-D-96lgE1.mjs → postgres-CCAGq1qp.mjs} +5 -5
  53. package/dist/{postgres-D-96lgE1.mjs.map → postgres-CCAGq1qp.mjs.map} +1 -1
  54. package/dist/postgres-CzkEPfAm.mjs +7 -0
  55. package/dist/{program-BXns_5kO.mjs → program-cWqZI0_L.mjs} +77 -119
  56. package/dist/program-cWqZI0_L.mjs.map +1 -0
  57. package/dist/{query-feedback-VI7Cl-Lr.mjs → query-feedback-GPeVGvIa.mjs} +2 -2
  58. package/dist/{query-feedback-VI7Cl-Lr.mjs.map → query-feedback-GPeVGvIa.mjs.map} +1 -1
  59. package/dist/{reranker-3lnggwgq.mjs → reranker-BTiOia8Y.mjs} +1 -1
  60. package/dist/{reranker-3lnggwgq.mjs.map → reranker-BTiOia8Y.mjs.map} +1 -1
  61. package/dist/{reranker-CZ2mP4cf.mjs → reranker-YwDT2n5e.mjs} +1 -1
  62. package/dist/{router-dfjlaOMI.mjs → router-Bk_ySIZT.mjs} +2 -2
  63. package/dist/{router-dfjlaOMI.mjs.map → router-Bk_ySIZT.mjs.map} +1 -1
  64. package/dist/router-DyiZNI6o.mjs +3 -0
  65. package/dist/{run-DPwQkRwh.mjs → run-BZNdpUGQ.mjs} +126 -1795
  66. package/dist/run-BZNdpUGQ.mjs.map +1 -0
  67. package/dist/run-env-Cd0Son-Y.mjs +115 -0
  68. package/dist/run-env-Cd0Son-Y.mjs.map +1 -0
  69. package/dist/{runtime-paths-BiEi_gaG.mjs → runtime-paths-DkZoxofH.mjs} +1 -1
  70. package/dist/{runtime-paths-BiEi_gaG.mjs.map → runtime-paths-DkZoxofH.mjs.map} +1 -1
  71. package/dist/{search-CNAGTiJP.mjs → search-cPDj-9fO.mjs} +2 -2
  72. package/dist/{search-CNAGTiJP.mjs.map → search-cPDj-9fO.mjs.map} +1 -1
  73. package/dist/{sources-BxXbzpAJ.mjs → sources-CvvzNZad.mjs} +1 -1
  74. package/dist/{sources-BxXbzpAJ.mjs.map → sources-CvvzNZad.mjs.map} +1 -1
  75. package/dist/{stop-words-DtxaTWU_.mjs → stop-words-LtkS-Pej.mjs} +1 -1
  76. package/dist/{stop-words-DtxaTWU_.mjs.map → stop-words-LtkS-Pej.mjs.map} +1 -1
  77. package/dist/worktree-CwMRTa0H.mjs +1578 -0
  78. package/dist/worktree-CwMRTa0H.mjs.map +1 -0
  79. package/dist/{zettelkasten-wh2Yy1nS.mjs → zettelkasten-DSIe6wpF.mjs} +4 -4
  80. package/dist/{zettelkasten-wh2Yy1nS.mjs.map → zettelkasten-DSIe6wpF.mjs.map} +1 -1
  81. package/dist/{zettelkasten-CzcPzEsL.mjs → zettelkasten-DtkAvA18.mjs} +5 -5
  82. package/package.json +1 -1
  83. package/dist/auto-route-CboBqsN3.mjs +0 -3
  84. package/dist/context-handover-cache-Bb-H_mTa.mjs.map +0 -1
  85. package/dist/daemon-BXTn2EgV.mjs +0 -19
  86. package/dist/factory-XrH66erA.mjs +0 -9
  87. package/dist/main-resolver-CobQGm2B.mjs +0 -7
  88. package/dist/pai-marker-DXVpFsYz.mjs.map +0 -1
  89. package/dist/postgres-TedJP3yF.mjs +0 -7
  90. package/dist/program-BXns_5kO.mjs.map +0 -1
  91. package/dist/router-CKn9e0fo.mjs +0 -3
  92. package/dist/run-DPwQkRwh.mjs.map +0 -1
  93. package/dist/run-env-CkAmx3lb.mjs.map +0 -1
@@ -0,0 +1,7 @@
1
+ import "./config-DjZELvoA.mjs";
2
+ import "./helpers-B9LHRJ8R.mjs";
3
+ import { o as buildPgTsQuery, t as PostgresBackend } from "./postgres-CCAGq1qp.mjs";
4
+ import "./embedding-gate-DqbKvn56.mjs";
5
+ import "./embeddings-BUjZMD9F.mjs";
6
+
7
+ export { PostgresBackend };
@@ -1,93 +1,40 @@
1
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
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 { c as resolveFromModule, i as retryTransient, n as embedChunksWithBackend, r as indexProjectWithBackend, s as packageRoot } from "./postgres-D-96lgE1.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-mNBitkL_.mjs";
8
- import { c as detectBackends, d as OLLAMA_DEFAULT_MODEL, f as OLLAMA_DEFAULT_URL, i as measureThroughput, o as BACKEND_IDS, p as OLLAMA_ID, s as createBackend, u as provisionOllama } from "./embedding-gate-BVrr0BgS.mjs";
9
- 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-sfaArCsl.mjs";
10
- import { a as schedulerLogPath, c as migratePaiFile, d as resolvePaiFile, i as paiSocketPath, l as paiHomeDir, n as daemonLogPath, o as PaiFileMigrationError, s as migratePaiDir, u as paiHomePath } from "./runtime-paths-BiEi_gaG.mjs";
11
- import { At as claudeProjectsDir, Ct as loadScanConfig, Dt as saveScanConfig, Et as resolveHome, Ft as formatDetection, It as formatDetectionJson, Mt as scanTranscriptFolders, Nt as transcriptFiles, Ot as upsertProject, Pt as detectProject, St as cmdScan, a as sessionKeepaliveLedgerSummary, bt as reexecBackground, ct as findLatestNote, jt as findMovedProjects, kt as upsertSession, l as resolveDaemonPid, lt as findNotesDir$1, o as parseSessionUsage, ot as appendCheckpointToNote, r as loadSessionKeepaliveState, rt as extractAndStoreTriples, s as totalUsageTokens, st as applyContinue, t as readContextHandoverCache, ut as readBodyFile, vt as migrateIdentityFile, w as migrateSummaryCooldowns, wt as migrateScanConfig, y as migrateWorkQueue } from "./context-handover-cache-Bb-H_mTa.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-CkAmx3lb.mjs";
13
- import { $ as saveStatus, A as gcWorktrees, B as UNLABELED, F as formatPending, I as pendingGate, J as loadStatus, K as isChatPane, L as pendingResults, M as mergeWorker, N as verifyWorker, Q as ownsPid, R as appendLedger, Y as loadStatuses, _ as clickrControlsArgv, _t as projectLaunchConfig, at as DEFAULT_PROXY_PORT, c as waitOn, d as sayToWorker, et as setWorkerLabel, ft as ensureNoMcpConfig, g as openPaneForWorker, gt as pinNotices, h as openFollowPane, ht as workersLogDir, i as usageContextTokens, k as discardWorker, l as handoffFromInside, m as closeEndedPanes, mt as ledgerPath, n as runWorker, nt as longInlinePromptHint, o as parseWorkerReport, ot as ensureProxyRunning, p as checkPaneForWorker, pt as eventsPath, q as isLive, r as testProvider, rt as parseRunnerArgs, st as stopProxy, tt as waitForTerminalStatus, v as markControlsHeld, vt as describeMcp, x as requestKill, y as callerDescription, yt as expandMcpNames } from "./run-DPwQkRwh.mjs";
14
- import { t as PaiClient } from "./ipc-client-BgSzY9QJ.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-DdC1_s2d.mjs";
16
- import { _ as resolveSessionByNameOrId, a as buildDeduped, c as hasConversation, d as providerResumePlan, f as restoreTopLevel, g as migrateSessionScanCache, h as fmtAge, 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-DEXky_Km.mjs";
17
- import { n as queriesDirPath, t as migrateQueriesDir } from "./query-feedback-VI7Cl-Lr.mjs";
18
- import { i as sendToSession, n as fetchLiveSessions, r as revealItermSession, t as callAiBroker } from "./aibroker-client-BevXY1Zz.mjs";
19
- import { t as runChain } from "./chain-8hFKr23C.mjs";
3
+ 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-DjZELvoA.mjs";
4
+ import { a as schedulerLogPath, c as migratePaiFile, d as resolvePaiFile, i as paiSocketPath, l as paiHomeDir, n as daemonLogPath, o as PaiFileMigrationError, s as migratePaiDir, u as paiHomePath } from "./runtime-paths-DkZoxofH.mjs";
5
+ import { A as initWorkersYaml, B as stripModelVariant, F as relocateWorkersYaml, I as workersYamlLegacyNotice, L as workersYamlPath, M as migrateWorkersToYaml, N as needsWorkersYamlRelocation, P as parseWorkersYamlDocument, R as DEFAULT_CONTEXT_WINDOW, S as nativeAnthropicProvider, T as readWorkersSection, _ as expandHome$1, d as PROVIDER_TAGS, j as inlineWorkersYamlKeys, l as MODEL_CAPABILITIES, p as WorkersConfigError, t as ANTHROPIC_NATIVE, v as getProviderOrNative, x as maskKey, y as isModelCapability, z as contextWindowFromModelId } from "./config-Dpe2JlbY.mjs";
6
+ import { D as isLive, E as isChatPane, F as setWorkerLabel, H as ensureNoMcpConfig, I as waitForTerminalStatus, M as ownsPid, O as loadStatus, P as saveStatus, R as longInlinePromptHint, U as eventsPath, W as ledgerPath, _ as appendLedger, g as pendingResults, h as pendingGate, k as loadStatuses, m as formatPending, n as discardWorker, q as workersLogDir, r as gcWorktrees, s as mergeWorker, u as verifyWorker, y as UNLABELED, z as parseRunnerArgs } from "./worktree-CwMRTa0H.mjs";
7
+ import { a as unregistrableReason, n as ensurePaiMarker, o as worktreeReason } from "./pai-marker-1B7iC7oq.mjs";
8
+ import { t as STOP_WORDS } from "./stop-words-LtkS-Pej.mjs";
9
+ import { t as applyRecencyBoost } from "./search-cPDj-9fO.mjs";
10
+ import { c as resolveFromModule, i as retryTransient, n as embedChunksWithBackend, r as indexProjectWithBackend, s as packageRoot } from "./postgres-CCAGq1qp.mjs";
11
+ 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-yElzJc6f.mjs";
12
+ import { c as detectBackends, d as OLLAMA_DEFAULT_MODEL, f as OLLAMA_DEFAULT_URL, i as measureThroughput, o as BACKEND_IDS, p as OLLAMA_ID, s as createBackend, u as provisionOllama } from "./embedding-gate-DqbKvn56.mjs";
13
+ import { At as claudeProjectsDir, Ct as loadScanConfig, Dt as saveScanConfig, Et as resolveHome, Ft as formatDetection, It as formatDetectionJson, Mt as scanTranscriptFolders, Nt as transcriptFiles, Ot as upsertProject, Pt as detectProject, St as cmdScan, a as sessionKeepaliveLedgerSummary, bt as reexecBackground, ct as findLatestNote, jt as findMovedProjects, kt as upsertSession, l as resolveDaemonPid, lt as findNotesDir$1, o as parseSessionUsage, ot as appendCheckpointToNote, r as loadSessionKeepaliveState, rt as extractAndStoreTriples, s as totalUsageTokens, st as applyContinue, t as readContextHandoverCache, ut as readBodyFile, vt as migrateIdentityFile, w as migrateSummaryCooldowns, wt as migrateScanConfig, y as migrateWorkQueue } from "./context-handover-cache-DFqxNh-H.mjs";
14
+ import { A as ensureProxyRunning, I as pinNotices, L as projectLaunchConfig, R as describeMcp, _ as clickrControlsArgv, c as waitOn, d as sayToWorker, g as openPaneForWorker, h as openFollowPane, i as usageContextTokens, j as stopProxy, k as DEFAULT_PROXY_PORT, l as handoffFromInside, m as closeEndedPanes, n as runWorker, o as parseWorkerReport, p as checkPaneForWorker, r as testProvider, v as markControlsHeld, x as requestKill, y as callerDescription, z as expandMcpNames } from "./run-BZNdpUGQ.mjs";
15
+ import { t as PaiClient } from "./ipc-client-DVZ_EGnu.mjs";
16
+ 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-2yWDDYiT.mjs";
17
+ import { _ as resolveSessionByNameOrId, a as buildDeduped, c as hasConversation, d as providerResumePlan, f as restoreTopLevel, g as migrateSessionScanCache, h as fmtAge, 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-Dxvn4Mv8.mjs";
18
+ import { n as queriesDirPath, t as migrateQueriesDir } from "./query-feedback-GPeVGvIa.mjs";
19
+ import { t as buildRunEnv } from "./run-env-Cd0Son-Y.mjs";
20
+ import { i as sendToSession, n as fetchLiveSessions, r as revealItermSession, t as callAiBroker } from "./aibroker-client-BfnVwGZl.mjs";
21
+ import { t as runChain } from "./chain-BL4khGgy.mjs";
20
22
  import { appendFileSync, chmodSync, closeSync, copyFileSync, cpSync, createReadStream, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, readlinkSync, realpathSync, renameSync, statSync, symlinkSync, unlinkSync, writeFileSync } from "node:fs";
21
23
  import { homedir, platform, tmpdir, userInfo } from "node:os";
22
24
  import { basename, dirname, join, relative, resolve, sep } from "node:path";
23
25
  import chalk from "chalk";
26
+ import { execFile, execFileSync, execSync, spawn, spawnSync } from "node:child_process";
27
+ import { parseDocument } from "yaml";
24
28
  import { createHash, randomUUID } from "node:crypto";
25
29
  import { Command, InvalidArgumentError } from "commander";
26
30
  import { fileURLToPath } from "node:url";
27
31
  import pg from "pg";
28
- import { execFile, execFileSync, execSync, spawn, spawnSync } from "node:child_process";
29
- import { parseDocument } from "yaml";
30
32
  import BetterSqlite3 from "better-sqlite3";
31
33
  import { createInterface } from "node:readline";
32
34
  import { createConnection } from "net";
33
35
  import { getEncoding } from "js-tiktoken";
34
36
  import { promisify } from "node:util";
35
37
 
36
- //#region src/registry/registrable.ts
37
- /**
38
- * registrable.ts — directories that must never become registered projects.
39
- *
40
- * A project is a durable thing. The registry, however, has been accepting
41
- * whatever directory a session happened to start in, and some of those
42
- * directories are disposable by construction. Measured on the real registry,
43
- * 2026-08-04:
44
- *
45
- * 08 - Others/MDF/Infrastruktur/.claude/worktrees/cool-haibt 1 session
46
- * 08 - Others/MDF/Infrastruktur/.claude/worktrees/strange-haibt 7 sessions
47
- * /private/tmp/ops-webui dead
48
- * /private/tmp/claude-501/-Users-…-AIBroker/aae854c6-… dead
49
- *
50
- * The worktrees are agent isolation directories, created to be removed. The temp
51
- * paths are exactly what their name says. Registering them attributes session
52
- * history to a location with no future, and lets `pai <name>` route someone into
53
- * a directory a cleanup can delete underneath them.
54
- *
55
- * So this refuses at the point of registration rather than reclassifying
56
- * afterwards. It is a guard, not a policy about what health should call things —
57
- * it stops the set growing while the vocabulary question (dead vs duplicate vs
58
- * misnamed vs ephemeral) is decided separately.
59
- *
60
- * Found by the AIBroker session while we were dividing up the dead-path work.
61
- */
62
- /** Path fragments that mark a location as disposable, with why. */
63
- const EPHEMERAL = [
64
- {
65
- fragment: `${sep}.claude${sep}worktrees${sep}`,
66
- because: "a git worktree created for agent isolation — it is meant to be removed"
67
- },
68
- {
69
- fragment: `${sep}private${sep}tmp${sep}`,
70
- because: "a system temp directory"
71
- },
72
- {
73
- fragment: `${sep}var${sep}folders${sep}`,
74
- because: "a macOS per-user temp directory"
75
- }
76
- ];
77
- /**
78
- * Why this path cannot be a project, or undefined if it can.
79
- *
80
- * Returns the reason rather than a boolean so the caller can tell the user which
81
- * rule caught them — "refused" without a reason invites someone to work around it
82
- * rather than move their project somewhere durable.
83
- */
84
- function unregistrableReason(rootPath) {
85
- const padded = rootPath.endsWith(sep) ? rootPath : rootPath + sep;
86
- for (const { fragment, because } of EPHEMERAL) if (padded.includes(fragment)) return because;
87
- if (padded.startsWith(`${sep}tmp${sep}`)) return "a system temp directory";
88
- }
89
-
90
- //#endregion
91
38
  //#region src/session/promote.ts
92
39
  /**
93
40
  * pai project promote --from-session <path> --to <new-project-path> [--name "Name"]
@@ -155,7 +102,7 @@ async function cmdPromote(opts) {
155
102
  console.error(dim$1(` Pick a durable location for the new project.`));
156
103
  process.exit(1);
157
104
  }
158
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
105
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
159
106
  const registryBackend = await getRegistryBackend();
160
107
  const encodedDir = encodeDir(targetPath);
161
108
  if (await registryBackend.getProjectBySlug(slug) ?? await registryBackend.getProjectByRootPath(targetPath) ?? await registryBackend.getProjectByEncodedDir(encodedDir)) {
@@ -1957,6 +1904,12 @@ async function cmdHere(name, opts = {}) {
1957
1904
  console.log(dim$1(`Would create ${finalSlug} (${name}) at ${target}`));
1958
1905
  return;
1959
1906
  }
1907
+ const unregistrable = worktreeReason(target);
1908
+ if (unregistrable) {
1909
+ console.error(err(`Not registering ${target}: it is ${unregistrable}.`));
1910
+ process.exitCode = 1;
1911
+ return;
1912
+ }
1960
1913
  const ts = now();
1961
1914
  await backend.createProject({
1962
1915
  slug: finalSlug,
@@ -2039,7 +1992,7 @@ async function cmdUnregister(slug, opts = {}) {
2039
1992
  //#region src/cli/commands/project/projects-index.ts
2040
1993
  function registerProjectsCommands(projectsCmd) {
2041
1994
  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) => {
2042
- const { cmdMain } = await import("./main-resolver-CobQGm2B.mjs");
1995
+ const { cmdMain } = await import("./main-resolver-DjQsexge.mjs");
2043
1996
  await cmdMain(void 0, void 0, opts);
2044
1997
  });
2045
1998
  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) => {
@@ -2193,7 +2146,12 @@ async function cmdMigrate$1() {
2193
2146
  const encodedDir = entry.encoded_dir;
2194
2147
  const slug = slugify$1(rootPath);
2195
2148
  try {
2196
- const { isNew, id } = await upsertProject(backend, slug, rootPath, encodedDir);
2149
+ const upserted = await upsertProject(backend, slug, rootPath, encodedDir);
2150
+ if (!upserted) {
2151
+ projectsSkipped++;
2152
+ continue;
2153
+ }
2154
+ const { isNew, id } = upserted;
2197
2155
  if (isNew) projectsNew++;
2198
2156
  else projectsSkipped++;
2199
2157
  const notes = entry.notes ?? [];
@@ -2905,8 +2863,8 @@ const DEFAULT_PAGE_SIZE = 500;
2905
2863
  async function runEmbed(backend, projectId, projectSlug, batchSize = 50, pageSize = DEFAULT_PAGE_SIZE) {
2906
2864
  const label = projectSlug ? `project ${projectSlug}` : "all projects";
2907
2865
  console.log(dim$1(`Generating embeddings for ${label} (this may take a while on first run)...`));
2908
- const { serializeEmbedding } = await import("./embeddings-BuA7v4lk.mjs");
2909
- const { gateBackend } = await import("./embedding-gate-Crj8awk7.mjs");
2866
+ const { serializeEmbedding } = await import("./embeddings-DrJ-ewfi.mjs");
2867
+ const { gateBackend } = await import("./embedding-gate-SJMCPwxG.mjs");
2910
2868
  const gate = await gateBackend(backend, { record: true });
2911
2869
  if (!gate.ok) {
2912
2870
  console.error(err(gate.reason));
@@ -3082,7 +3040,7 @@ function registerSearchCommand(memoryCmd) {
3082
3040
  let results;
3083
3041
  if (mode === "keyword") results = await backend.searchKeyword(query, searchOpts);
3084
3042
  else {
3085
- const { embedQuery } = await import("./embedding-gate-Crj8awk7.mjs");
3043
+ const { embedQuery } = await import("./embedding-gate-SJMCPwxG.mjs");
3086
3044
  console.log(dim$1("Generating query embedding..."));
3087
3045
  const q = await embedQuery(backend, query);
3088
3046
  const queryEmbedding = q.vec;
@@ -3132,7 +3090,7 @@ function registerSearchCommand(memoryCmd) {
3132
3090
  return;
3133
3091
  }
3134
3092
  if (opts.rerank !== false) {
3135
- const { rerankResults } = await import("./reranker-CZ2mP4cf.mjs");
3093
+ const { rerankResults } = await import("./reranker-YwDT2n5e.mjs");
3136
3094
  console.log(dim$1("Reranking with cross-encoder..."));
3137
3095
  results = await rerankResults(query, results, { topK: maxResults });
3138
3096
  }
@@ -3271,9 +3229,9 @@ function registerStatsCommands(memoryCmd) {
3271
3229
  //#region src/cli/commands/memory/sources-cmd.ts
3272
3230
  function registerSourcesCommand(memoryCmd) {
3273
3231
  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) => {
3274
- const { createStorageBackend } = await import("./factory-XrH66erA.mjs");
3275
- const { loadConfig } = await import("./config-UWtzLpXi.mjs");
3276
- const { cmdMemorySources } = await import("./sources-BxXbzpAJ.mjs");
3232
+ const { createStorageBackend } = await import("./factory-DjtXElOI.mjs");
3233
+ const { loadConfig } = await import("./config-yomayAwe.mjs");
3234
+ const { cmdMemorySources } = await import("./sources-CvvzNZad.mjs");
3277
3235
  let backend;
3278
3236
  try {
3279
3237
  backend = await createStorageBackend(loadConfig());
@@ -4107,8 +4065,8 @@ async function escalate(task, headline, detail, state, now, opts) {
4107
4065
  state.alarmedAt[task.id] = now;
4108
4066
  let delivered = false;
4109
4067
  try {
4110
- const { routeNotification } = await import("./router-CKn9e0fo.mjs");
4111
- const { loadConfig } = await import("./config-UWtzLpXi.mjs");
4068
+ const { routeNotification } = await import("./router-DyiZNI6o.mjs");
4069
+ const { loadConfig } = await import("./config-yomayAwe.mjs");
4112
4070
  delivered = (await routeNotification({
4113
4071
  event: "error",
4114
4072
  title: `PAI: ${headline}`,
@@ -4143,7 +4101,7 @@ async function escalate(task, headline, detail, state, now, opts) {
4143
4101
  async function alertParked(task, reason) {
4144
4102
  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").`;
4145
4103
  try {
4146
- const { callAiBroker } = await import("./aibroker-client-CxTpL_u7.mjs");
4104
+ const { callAiBroker } = await import("./aibroker-client-C-O3Fflh.mjs");
4147
4105
  await callAiBroker("pailot_send", { text }, 8e3);
4148
4106
  } catch (e) {
4149
4107
  console.error(`[pai-poller] parked-task alert not delivered to PAILot (${e instanceof Error ? e.message : String(e)}): ${text}`);
@@ -7239,8 +7197,8 @@ function cmdLogs(opts) {
7239
7197
  }
7240
7198
  function registerDaemonCommands(daemonCmd) {
7241
7199
  daemonCmd.command("serve").description("Start the PAI daemon in the foreground").action(async () => {
7242
- const { serve } = await import("./daemon-BXTn2EgV.mjs");
7243
- const { loadConfig: lc, ensureConfigDir } = await import("./config-UWtzLpXi.mjs");
7200
+ const { serve } = await import("./daemon-WrncnGua.mjs");
7201
+ const { loadConfig: lc, ensureConfigDir } = await import("./config-yomayAwe.mjs");
7244
7202
  ensureConfigDir();
7245
7203
  await serve(lc());
7246
7204
  });
@@ -9895,7 +9853,7 @@ async function cmdExplore(note, opts) {
9895
9853
  const depth = parseInt(opts.depth ?? "3", 10);
9896
9854
  const direction = opts.direction ?? "both";
9897
9855
  const mode = opts.mode ?? "all";
9898
- const { zettelExplore } = await import("./zettelkasten-CzcPzEsL.mjs");
9856
+ const { zettelExplore } = await import("./zettelkasten-DtkAvA18.mjs");
9899
9857
  const result = await zettelExplore(await getFedBackend(), {
9900
9858
  startNote: note,
9901
9859
  depth,
@@ -9960,7 +9918,7 @@ async function cmdHealth(opts) {
9960
9918
  const projectPath = opts.project;
9961
9919
  const recentDays = parseInt(opts.days ?? "30", 10);
9962
9920
  const includeTypes = opts.include ? opts.include.split(",").map((s) => s.trim()) : void 0;
9963
- const { zettelHealth } = await import("./zettelkasten-CzcPzEsL.mjs");
9921
+ const { zettelHealth } = await import("./zettelkasten-DtkAvA18.mjs");
9964
9922
  const result = await zettelHealth(await getFedBackend(), {
9965
9923
  scope,
9966
9924
  projectPath,
@@ -10031,7 +9989,7 @@ async function cmdSurprise(note, opts) {
10031
9989
  const limit = parseInt(opts.limit ?? "10", 10);
10032
9990
  const minSimilarity = parseFloat(opts.minSimilarity ?? "0.3");
10033
9991
  const minGraphDistance = parseInt(opts.minDistance ?? "3", 10);
10034
- const { zettelSurprise } = await import("./zettelkasten-CzcPzEsL.mjs");
9992
+ const { zettelSurprise } = await import("./zettelkasten-DtkAvA18.mjs");
10035
9993
  const backend = await getFedBackend();
10036
9994
  console.log();
10037
9995
  console.log(header(" PAI Zettel Surprise"));
@@ -10086,7 +10044,7 @@ async function cmdSuggest(note, opts) {
10086
10044
  const vaultProjectId = parseInt(opts.vaultProjectId, 10);
10087
10045
  const limit = parseInt(opts.limit ?? "5", 10);
10088
10046
  const excludeLinked = opts.excludeLinked !== false;
10089
- const { zettelSuggest } = await import("./zettelkasten-CzcPzEsL.mjs");
10047
+ const { zettelSuggest } = await import("./zettelkasten-DtkAvA18.mjs");
10090
10048
  const backend = await getFedBackend();
10091
10049
  console.log();
10092
10050
  console.log(header(" PAI Zettel Suggest"));
@@ -10139,7 +10097,7 @@ async function cmdConverse(question, opts) {
10139
10097
  const vaultProjectId = parseInt(opts.vaultProjectId, 10);
10140
10098
  const depth = parseInt(opts.depth ?? "2", 10);
10141
10099
  const limit = parseInt(opts.limit ?? "15", 10);
10142
- const { zettelConverse } = await import("./zettelkasten-CzcPzEsL.mjs");
10100
+ const { zettelConverse } = await import("./zettelkasten-DtkAvA18.mjs");
10143
10101
  const backend = await getFedBackend();
10144
10102
  console.log();
10145
10103
  console.log(header(" PAI Zettel Converse"));
@@ -10202,7 +10160,7 @@ async function cmdThemes(opts) {
10202
10160
  const minClusterSize = parseInt(opts.minSize ?? "3", 10);
10203
10161
  const maxThemes = parseInt(opts.maxThemes ?? "10", 10);
10204
10162
  const similarityThreshold = parseFloat(opts.threshold ?? "0.65");
10205
- const { zettelThemes } = await import("./zettelkasten-CzcPzEsL.mjs");
10163
+ const { zettelThemes } = await import("./zettelkasten-DtkAvA18.mjs");
10206
10164
  const backend = await getFedBackend();
10207
10165
  console.log();
10208
10166
  console.log(header(" PAI Zettel Themes"));
@@ -16274,7 +16232,7 @@ async function migrateToPostgres(opts = {}) {
16274
16232
  const dump = pgDump(container, pgConfig, dumpPath);
16275
16233
  if (!dump.ok) return refused(dump.reason, dryRun);
16276
16234
  }
16277
- const { PostgresBackend } = await import("./postgres-TedJP3yF.mjs");
16235
+ const { PostgresBackend } = await import("./postgres-CzkEPfAm.mjs");
16278
16236
  await PostgresBackend.ensureDatabase(pgConfig);
16279
16237
  const sqlite = new BetterSqlite3(sqliteFederationPath, { readonly: true });
16280
16238
  const registrySqlite = sqliteRegistryPath === sqliteFederationPath ? sqlite : new BetterSqlite3(sqliteRegistryPath, { readonly: true });
@@ -16845,7 +16803,7 @@ async function getSessionTags(registryBackend, sessionId) {
16845
16803
  * Session CRUD commands: list, info, rename, slug, tag, route, active, auto-route.
16846
16804
  */
16847
16805
  async function cmdList(projectSlug, opts) {
16848
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
16806
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
16849
16807
  const registryBackend = await getRegistryBackend();
16850
16808
  const limit = parseInt(opts.limit ?? "20", 10);
16851
16809
  let project;
@@ -16910,7 +16868,7 @@ async function cmdList(projectSlug, opts) {
16910
16868
  console.log(dim$1(` ${rows.length} session(s) shown (limit: ${limit})`));
16911
16869
  }
16912
16870
  async function cmdInfo(projectSlug, sessionNumber) {
16913
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
16871
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
16914
16872
  const registryBackend = await getRegistryBackend();
16915
16873
  const project = await getProject$1(registryBackend, projectSlug);
16916
16874
  if (!project) {
@@ -16934,7 +16892,7 @@ async function cmdInfo(projectSlug, sessionNumber) {
16934
16892
  console.log();
16935
16893
  }
16936
16894
  async function cmdRename(projectSlug, numberOrLatest, newSlug) {
16937
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
16895
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
16938
16896
  await cmdRenameWith(await getRegistryBackend(), projectSlug, numberOrLatest, newSlug);
16939
16897
  }
16940
16898
  async function cmdRenameWith(registryBackend, projectSlug, numberOrLatest, newSlug) {
@@ -16997,7 +16955,7 @@ async function cmdRenameWith(registryBackend, projectSlug, numberOrLatest, newSl
16997
16955
  console.log();
16998
16956
  }
16999
16957
  async function cmdSlug(projectSlug, numberOrLatest, opts) {
17000
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
16958
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
17001
16959
  const registryBackend = await getRegistryBackend();
17002
16960
  const project = await getProject$1(registryBackend, projectSlug);
17003
16961
  if (!project) {
@@ -17027,7 +16985,7 @@ async function cmdSlug(projectSlug, numberOrLatest, opts) {
17027
16985
  }
17028
16986
  }
17029
16987
  async function cmdTag(projectSlug, sessionNumber, rawTags) {
17030
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
16988
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
17031
16989
  const registryBackend = await getRegistryBackend();
17032
16990
  const project = await getProject$1(registryBackend, projectSlug);
17033
16991
  if (!project) {
@@ -17067,7 +17025,7 @@ async function cmdTag(projectSlug, sessionNumber, rawTags) {
17067
17025
  console.log();
17068
17026
  }
17069
17027
  async function cmdRoute(projectSlug, sessionNumber, targetProjectSlug, opts) {
17070
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
17028
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
17071
17029
  const registryBackend = await getRegistryBackend();
17072
17030
  const project = await getProject$1(registryBackend, projectSlug);
17073
17031
  if (!project) {
@@ -17109,7 +17067,7 @@ async function cmdRoute(projectSlug, sessionNumber, targetProjectSlug, opts) {
17109
17067
  console.log();
17110
17068
  }
17111
17069
  async function cmdActive(opts) {
17112
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
17070
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
17113
17071
  const registryBackend = await getRegistryBackend();
17114
17072
  const minutes = parseInt(opts.minutes ?? "60", 10);
17115
17073
  const cutoff = Date.now() - minutes * 60 * 1e3;
@@ -17196,9 +17154,9 @@ async function cmdActive(opts) {
17196
17154
  ], rows));
17197
17155
  }
17198
17156
  async function cmdAutoRoute(opts) {
17199
- const { autoRoute, formatAutoRouteJson } = await import("./auto-route-CboBqsN3.mjs");
17200
- const { getRegistryBackend, createStorageBackend } = await import("./factory-XrH66erA.mjs");
17201
- const { loadConfig } = await import("./config-UWtzLpXi.mjs");
17157
+ const { autoRoute, formatAutoRouteJson } = await import("./auto-route-DCxTKz19.mjs");
17158
+ const { getRegistryBackend, createStorageBackend } = await import("./factory-DjtXElOI.mjs");
17159
+ const { loadConfig } = await import("./config-yomayAwe.mjs");
17202
17160
  const config = loadConfig();
17203
17161
  const registryBackend = await getRegistryBackend();
17204
17162
  const federation = await createStorageBackend(config);
@@ -17434,7 +17392,7 @@ async function cmdPause(opts) {
17434
17392
  process.exitCode = 1;
17435
17393
  return;
17436
17394
  }
17437
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
17395
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
17438
17396
  const registryBackend = await getRegistryBackend();
17439
17397
  const cwd = process.cwd();
17440
17398
  const project = await resolveProjectByCwd(registryBackend, cwd);
@@ -17829,7 +17787,7 @@ function buildStopBody(project, sessionId) {
17829
17787
  }
17830
17788
  }
17831
17789
  async function cmdHandover(projectSlug, numberOrLatest, sessionId) {
17832
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
17790
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
17833
17791
  const registryBackend = await getRegistryBackend();
17834
17792
  let project;
17835
17793
  if (projectSlug) {
@@ -18125,7 +18083,7 @@ function touchSentinel(rootPath) {
18125
18083
  async function cmdAutosave(opts) {
18126
18084
  const minGap = parseInt(opts.minGap ?? String(DEFAULT_MIN_GAP), 10);
18127
18085
  const cwd = process.cwd();
18128
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
18086
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
18129
18087
  const registryBackend = await getRegistryBackend();
18130
18088
  const project = await resolveProjectByCwd(registryBackend, cwd);
18131
18089
  if (!project) return;
@@ -20501,8 +20459,8 @@ async function analyzeProject(registryBackend, project) {
20501
20459
  async function countVectorDbPaths(oldPaths) {
20502
20460
  if (oldPaths.length === 0) return 0;
20503
20461
  try {
20504
- const { loadConfig } = await import("./config-UWtzLpXi.mjs");
20505
- const { createStorageBackend } = await import("./factory-XrH66erA.mjs");
20462
+ const { loadConfig } = await import("./config-yomayAwe.mjs");
20463
+ const { createStorageBackend } = await import("./factory-DjtXElOI.mjs");
20506
20464
  const config = loadConfig();
20507
20465
  if (config.storageBackend !== "postgres") return 0;
20508
20466
  const backend = await createStorageBackend(config);
@@ -20519,8 +20477,8 @@ async function countVectorDbPaths(oldPaths) {
20519
20477
  async function updateVectorDbPaths(moves) {
20520
20478
  if (moves.length === 0) return 0;
20521
20479
  try {
20522
- const { loadConfig } = await import("./config-UWtzLpXi.mjs");
20523
- const { createStorageBackend } = await import("./factory-XrH66erA.mjs");
20480
+ const { loadConfig } = await import("./config-yomayAwe.mjs");
20481
+ const { createStorageBackend } = await import("./factory-DjtXElOI.mjs");
20524
20482
  const config = loadConfig();
20525
20483
  if (config.storageBackend !== "postgres") return 0;
20526
20484
  const backend = await createStorageBackend(config);
@@ -20607,7 +20565,7 @@ async function displayDryRun(plans) {
20607
20565
  console.log();
20608
20566
  }
20609
20567
  async function executeCleanup(plans, skipReindex) {
20610
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
20568
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
20611
20569
  const registryBackend = await getRegistryBackend();
20612
20570
  let deleted = 0;
20613
20571
  let renamed = 0;
@@ -20804,7 +20762,7 @@ async function executeCleanup(plans, skipReindex) {
20804
20762
  //#region src/cli/commands/session-cleanup/index.ts
20805
20763
  function registerSessionCleanupCommand(sessionCmd) {
20806
20764
  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) => {
20807
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
20765
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
20808
20766
  const registryBackend = await getRegistryBackend();
20809
20767
  const dryRun = !opts.execute;
20810
20768
  const skipReindex = opts.reindex === false;
@@ -20874,7 +20832,7 @@ function finalizeNote(notePath) {
20874
20832
  }
20875
20833
  async function cmdEnd(opts) {
20876
20834
  await cmdPause(opts);
20877
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
20835
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
20878
20836
  const registryBackend = await getRegistryBackend();
20879
20837
  const cwd = process.cwd();
20880
20838
  const project = await registryBackend.findProjectByCwdPrefix(cwd);
@@ -21322,7 +21280,7 @@ async function cmdFind(query, opts) {
21322
21280
  */
21323
21281
  async function getProjects(includeArchived) {
21324
21282
  try {
21325
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
21283
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
21326
21284
  const rows = await (await getRegistryBackend()).listProjectsWithSessionStats();
21327
21285
  return includeArchived ? rows : rows.filter((p) => p.status === "active");
21328
21286
  } catch {
@@ -21796,7 +21754,7 @@ async function cmdPick(opts = {}) {
21796
21754
  const onRemove = async (rec) => {
21797
21755
  if (!rec.slug) return false;
21798
21756
  try {
21799
- const { getRegistryBackend } = await import("./factory-XrH66erA.mjs");
21757
+ const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
21800
21758
  const registryBackend = await getRegistryBackend();
21801
21759
  const project = await registryBackend.getProjectBySlug(rec.slug);
21802
21760
  if (!project || project.status !== "active") return false;
@@ -22081,4 +22039,4 @@ claude() {
22081
22039
 
22082
22040
  //#endregion
22083
22041
  export { drainStdio as n, buildProgram as t };
22084
- //# sourceMappingURL=program-BXns_5kO.mjs.map
22042
+ //# sourceMappingURL=program-cWqZI0_L.mjs.map