@tekmidian/pai 0.66.2 → 0.66.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/dist/{aibroker-client-CHEEvJZW.mjs → aibroker-client-Ck3p3k_-.mjs} +1 -1
  2. package/dist/{aibroker-client-Dfv7j1Od.mjs → aibroker-client-WCZi_tn-.mjs} +2 -2
  3. package/dist/{aibroker-client-Dfv7j1Od.mjs.map → aibroker-client-WCZi_tn-.mjs.map} +1 -1
  4. package/dist/{chain-D5876UQX.mjs → chain-BhPwBDXB.mjs} +3 -3
  5. package/dist/{chain-D5876UQX.mjs.map → chain-BhPwBDXB.mjs.map} +1 -1
  6. package/dist/cli/index.mjs +13 -13
  7. package/dist/cli/program.mjs +13 -13
  8. package/dist/{config-DKIA7wgF.mjs → config-CnsDMETf.mjs} +1 -1
  9. package/dist/{config-C-LiGlop.mjs → config-Ddc4DIPk.mjs} +5 -3
  10. package/dist/config-Ddc4DIPk.mjs.map +1 -0
  11. package/dist/{context-handover-cache-9PGvXRIw.mjs → context-handover-cache-BbCYQUGo.mjs} +244 -10
  12. package/dist/context-handover-cache-BbCYQUGo.mjs.map +1 -0
  13. package/dist/daemon/index.mjs +11 -11
  14. package/dist/{daemon-BUgNvMUh.mjs → daemon-DzXOfieK.mjs} +37 -18
  15. package/dist/daemon-DzXOfieK.mjs.map +1 -0
  16. package/dist/daemon-UJtRscyO.mjs +18 -0
  17. package/dist/daemon-mcp/index.mjs +9 -9
  18. package/dist/{embeddings-CEBGrzwu.mjs → embeddings-D0WOQpYR.mjs} +1 -1
  19. package/dist/{embeddings-DOLZnT1X.mjs → embeddings-DMVzpvRZ.mjs} +18 -9
  20. package/dist/embeddings-DMVzpvRZ.mjs.map +1 -0
  21. package/dist/{factory-Ypf8r0fK.mjs → factory-CXFHwvcv.mjs} +5 -5
  22. package/dist/{factory-Ypf8r0fK.mjs.map → factory-CXFHwvcv.mjs.map} +1 -1
  23. package/dist/{factory-DrBg24UT.mjs → factory-CnKsU6zX.mjs} +4 -4
  24. package/dist/{fallback-D51R4shY.mjs → fallback-CoooFqyA.mjs} +4 -4
  25. package/dist/{fallback-D51R4shY.mjs.map → fallback-CoooFqyA.mjs.map} +1 -1
  26. package/dist/hooks/block-sleep-poll.mjs +6 -5
  27. package/dist/hooks/block-sleep-poll.mjs.map +3 -3
  28. package/dist/hooks/context-compression-hook.mjs +1 -0
  29. package/dist/hooks/context-compression-hook.mjs.map +2 -2
  30. package/dist/hooks/load-project-context.mjs +6 -5
  31. package/dist/hooks/load-project-context.mjs.map +3 -3
  32. package/dist/hooks/post-compact-inject.mjs +6 -5
  33. package/dist/hooks/post-compact-inject.mjs.map +3 -3
  34. package/dist/hooks/route-agents-to-worker.mjs +6 -5
  35. package/dist/hooks/route-agents-to-worker.mjs.map +3 -3
  36. package/dist/hooks/security-validator.mjs +1 -0
  37. package/dist/hooks/security-validator.mjs.map +2 -2
  38. package/dist/hooks/whisper-rules.mjs +1 -0
  39. package/dist/hooks/whisper-rules.mjs.map +2 -2
  40. package/dist/hooks/worker-guard.mjs +6 -5
  41. package/dist/hooks/worker-guard.mjs.map +3 -3
  42. package/dist/hooks/worker-proxy.mjs +6 -5
  43. package/dist/hooks/worker-proxy.mjs.map +3 -3
  44. package/dist/hooks/worker-status-line.mjs +6 -5
  45. package/dist/hooks/worker-status-line.mjs.map +3 -3
  46. package/dist/hooks/worker-supervision.mjs +6 -5
  47. package/dist/hooks/worker-supervision.mjs.map +3 -3
  48. package/dist/{ipc-client-BLYX51nG.mjs → ipc-client-DkxRay-o.mjs} +2 -2
  49. package/dist/{ipc-client-BLYX51nG.mjs.map → ipc-client-DkxRay-o.mjs.map} +1 -1
  50. package/dist/main-resolver-DrHtx8iW.mjs +7 -0
  51. package/dist/{main-resolver-kVkMJZUD.mjs → main-resolver-SfGGg1DB.mjs} +6 -6
  52. package/dist/{main-resolver-kVkMJZUD.mjs.map → main-resolver-SfGGg1DB.mjs.map} +1 -1
  53. package/dist/{pai-home-Cm9rcJgX.mjs → pai-home-UncxWxlX.mjs} +1 -1
  54. package/dist/{pai-home-Cm9rcJgX.mjs.map → pai-home-UncxWxlX.mjs.map} +1 -1
  55. package/dist/{planner-D5yt0EfA.mjs → planner-C43lzcw5.mjs} +8 -8
  56. package/dist/{planner-D5yt0EfA.mjs.map → planner-C43lzcw5.mjs.map} +1 -1
  57. package/dist/postgres-B2BEBT-J.mjs +5 -0
  58. package/dist/{postgres-D3xc2RB4.mjs → postgres-BxmyQHoA.mjs} +53 -5
  59. package/dist/postgres-BxmyQHoA.mjs.map +1 -0
  60. package/dist/{program-DIXRtAFy.mjs → program-DB-hoyfW.mjs} +124 -172
  61. package/dist/program-DB-hoyfW.mjs.map +1 -0
  62. package/dist/{query-feedback-B7FYE4JR.mjs → query-feedback-BPdapXKd.mjs} +2 -2
  63. package/dist/{query-feedback-B7FYE4JR.mjs.map → query-feedback-BPdapXKd.mjs.map} +1 -1
  64. package/dist/{run-env-Bnmf6bRI.mjs → run-env-CQRnxNht.mjs} +3 -3
  65. package/dist/{run-env-Bnmf6bRI.mjs.map → run-env-CQRnxNht.mjs.map} +1 -1
  66. package/dist/{run-CLYTOm0x.mjs → run-wi5NEkJd.mjs} +118 -9
  67. package/dist/run-wi5NEkJd.mjs.map +1 -0
  68. package/dist/{runtime-paths-D3FKAm69.mjs → runtime-paths-Bw3Jk8qJ.mjs} +4 -2
  69. package/dist/runtime-paths-Bw3Jk8qJ.mjs.map +1 -0
  70. package/dist/{zettelkasten-BhZMvmoK.mjs → zettelkasten-BRIaHzFm.mjs} +2 -2
  71. package/dist/{zettelkasten-BhZMvmoK.mjs.map → zettelkasten-BRIaHzFm.mjs.map} +1 -1
  72. package/dist/{zettelkasten-BwV1pluL.mjs → zettelkasten-G0-ZTybr.mjs} +3 -3
  73. package/docs/commands/memory.md +2 -0
  74. package/package.json +1 -1
  75. package/dist/config-C-LiGlop.mjs.map +0 -1
  76. package/dist/context-handover-cache-9PGvXRIw.mjs.map +0 -1
  77. package/dist/daemon-BUgNvMUh.mjs.map +0 -1
  78. package/dist/daemon-DL0eglMJ.mjs +0 -18
  79. package/dist/embeddings-DOLZnT1X.mjs.map +0 -1
  80. package/dist/main-resolver-BYgP86C1.mjs +0 -7
  81. package/dist/postgres-BmLr0MUm.mjs +0 -5
  82. package/dist/postgres-D3xc2RB4.mjs.map +0 -1
  83. package/dist/program-DIXRtAFy.mjs.map +0 -1
  84. package/dist/run-CLYTOm0x.mjs.map +0 -1
  85. package/dist/runtime-paths-D3FKAm69.mjs.map +0 -1
@@ -1,16 +1,18 @@
1
1
  import { c as ok, g as warn, i as err, n as dim, r as encodeDir, s as now, t as bold } from "./utils-DddRwMsG.mjs";
2
2
  import { a as slugify, i as parseSessionFilename, n as decodeEncodedDir, t as buildEncodedDirMap } from "./migrate-Bq0esMOa.mjs";
3
3
  import { n as ensurePaiMarker, t as discoverPaiMarkers } from "./pai-marker-DXVpFsYz.mjs";
4
- import { i as getRegistryBackend } from "./factory-Ypf8r0fK.mjs";
5
- import { y as writeJsonAtomic } from "./config-C-LiGlop.mjs";
6
- import { a as paiHomePath, o as resolvePaiFile, r as migratePaiFile } from "./pai-home-Cm9rcJgX.mjs";
7
- import { D as readWorkersSection, k as resolveModelCapability, t as buildRunEnv, v as defaultWorkersConfig } from "./run-env-Bnmf6bRI.mjs";
8
- import { C as itermUuid, F as appendLedger, P as worktreesDir, T as sessionMapPath, ct as resolveTarget, lt as ensureNoMcpConfig, nt as DEFAULT_PROXY_PORT, pt as workersLogDir, rt as ensureProxyRunning } from "./run-CLYTOm0x.mjs";
9
- import { i as sendToSession, n as fetchLiveSessions } from "./aibroker-client-Dfv7j1Od.mjs";
4
+ import { i as getRegistryBackend } from "./factory-CXFHwvcv.mjs";
5
+ import { y as writeJsonAtomic } from "./config-Ddc4DIPk.mjs";
6
+ import { a as paiHomePath, o as resolvePaiFile, r as migratePaiFile } from "./pai-home-UncxWxlX.mjs";
7
+ import { r as daemonPidPath } from "./runtime-paths-Bw3Jk8qJ.mjs";
8
+ import { D as readWorkersSection, k as resolveModelCapability, t as buildRunEnv, v as defaultWorkersConfig } from "./run-env-CQRnxNht.mjs";
9
+ import { C as itermUuid, L as appendLedger, N as worktreesDir, T as sessionMapPath, at as ensureProxyRunning, dt as ensureNoMcpConfig, it as DEFAULT_PROXY_PORT, mt as workersLogDir, ut as resolveTarget } from "./run-wi5NEkJd.mjs";
10
+ import { i as sendToSession, n as fetchLiveSessions } from "./aibroker-client-WCZi_tn-.mjs";
10
11
  import { createReadStream, existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, renameSync, statSync, unlinkSync, writeFileSync } from "node:fs";
11
- import { homedir, tmpdir } from "node:os";
12
- import { basename, dirname, join, resolve } from "node:path";
12
+ import { homedir, setPriority, tmpdir, userInfo } from "node:os";
13
+ import { basename, delimiter, dirname, join, resolve } from "node:path";
13
14
  import { randomUUID } from "node:crypto";
15
+ import { spawn, spawnSync } from "node:child_process";
14
16
  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";
15
17
  import { basename as basename$1, join as join$1, resolve as resolve$1 } from "path";
16
18
  import { homedir as homedir$1 } from "os";
@@ -645,6 +647,149 @@ async function cmdScan(opts = {}) {
645
647
  } else process.stderr.write(`[registry-scan] ${result.projectsScanned} projects, ${result.sessionsScanned} sessions (${result.projectsNew}+${result.sessionsNew} new).\n`);
646
648
  }
647
649
 
650
+ //#endregion
651
+ //#region src/daemon/pass-priority.ts
652
+ /**
653
+ * pass-priority.ts — run heavy index/embed pass work at background priority.
654
+ *
655
+ * The daemon also serves MCP, so its own priority must stay normal. The heavy
656
+ * work runs in a child (`pai memory pass <name>`) spawned under
657
+ * `taskpolicy -b nice -n 19` (darwin) or `nice -n 19 ionice -c3` (linux);
658
+ * onnxruntime threads inherit the child's priority. The child reports over
659
+ * stdout as one JSON line: {ok:true,result} or {ok:false,error}.
660
+ */
661
+ function onPath(bin) {
662
+ return (process.env.PATH ?? "").split(delimiter).some((d) => d && existsSync(join(d, bin)));
663
+ }
664
+ /**
665
+ * Wrap `node <entry> <passArgs>` in the platform's low-priority incantation.
666
+ * Darwin uses nice 19, not 20: measured on macOS, node started with nice 20
667
+ * reverts to nice 0 within a second; 19 sticks.
668
+ */
669
+ function buildPassCommand(platform, node, entry, passArgs, have = onPath) {
670
+ const run = [
671
+ node,
672
+ entry,
673
+ ...passArgs
674
+ ];
675
+ let wrap;
676
+ if (platform === "darwin") wrap = have("taskpolicy") ? [
677
+ "taskpolicy",
678
+ "-b",
679
+ "nice",
680
+ "-n",
681
+ "19"
682
+ ] : [
683
+ "nice",
684
+ "-n",
685
+ "19"
686
+ ];
687
+ else if (platform === "win32") wrap = [];
688
+ else wrap = have("ionice") ? [
689
+ "nice",
690
+ "-n",
691
+ "19",
692
+ "ionice",
693
+ "-c3"
694
+ ] : [
695
+ "nice",
696
+ "-n",
697
+ "19"
698
+ ];
699
+ const [cmd, ...rest] = [...wrap, ...run];
700
+ return {
701
+ cmd,
702
+ args: rest
703
+ };
704
+ }
705
+ /** The CLI entry the child runs: dist/cli/index.mjs next to the daemon's dist. */
706
+ function cliEntry() {
707
+ return join(dirname(dirname(process.argv[1] ?? "")), "cli", "index.mjs");
708
+ }
709
+ /** Spawning itself failed (binary missing): the caller may fall back in-process. */
710
+ var PassSpawnError = class extends Error {};
711
+ const children = /* @__PURE__ */ new Set();
712
+ process.on("exit", () => children.forEach((c) => c.kill()));
713
+ /**
714
+ * Run one pass in a low-priority child. Resolves with the child's result;
715
+ * rejects with the child's error (pass failure) or PassSpawnError (no child).
716
+ */
717
+ function runPassChild(name, extraArgs = []) {
718
+ const { cmd, args } = buildPassCommand(process.platform, process.execPath, cliEntry(), [
719
+ "memory",
720
+ "pass",
721
+ name,
722
+ ...extraArgs
723
+ ]);
724
+ return new Promise((resolve, reject) => {
725
+ const child = spawn(cmd, args, {
726
+ stdio: [
727
+ "ignore",
728
+ "pipe",
729
+ "pipe"
730
+ ],
731
+ env: {
732
+ ...process.env,
733
+ PAI_PASS_BACKGROUND: "1"
734
+ }
735
+ });
736
+ children.add(child);
737
+ let out = "";
738
+ let err = "";
739
+ child.stdout.on("data", (d) => out += d);
740
+ child.stderr.on("data", (d) => err = (err + d).slice(-4e3));
741
+ child.on("error", (e) => {
742
+ children.delete(child);
743
+ reject(new PassSpawnError(`cannot spawn ${cmd}: ${e.message}`));
744
+ });
745
+ child.on("close", (code, signal) => {
746
+ children.delete(child);
747
+ const line = out.trim().split("\n").pop() ?? "";
748
+ let msg;
749
+ try {
750
+ msg = JSON.parse(line);
751
+ } catch {}
752
+ if (code === 0 && msg?.ok) return resolve(msg.result);
753
+ reject(new Error(msg?.error ?? `pass child ${name} exited ${code ?? signal}: ${err.trim().split("\n").pop() ?? ""}`));
754
+ });
755
+ });
756
+ }
757
+ /**
758
+ * Inside the wrapper, keep nice at 19: measured on macOS, node's nice resets
759
+ * to 0 about a second after start (5s re-apply interval holds it; the
760
+ * taskpolicy -b QoS is unaffected).
761
+ */
762
+ function holdNice() {
763
+ const apply = () => {
764
+ try {
765
+ setPriority(process.pid, 19);
766
+ } catch {}
767
+ };
768
+ apply();
769
+ setInterval(apply, 5e3).unref();
770
+ }
771
+ /**
772
+ * `--background` for CLI commands: re-exec this very command under the
773
+ * low-priority wrapper and exit with its status. Inside the re-exec (or a
774
+ * daemon-spawned pass child, which sets the same env) it only holds nice.
775
+ */
776
+ function reexecBackground() {
777
+ if (process.env.PAI_PASS_BACKGROUND === "1") return holdNice();
778
+ const { cmd, args } = buildPassCommand(process.platform, process.execPath, process.argv[1], process.argv.slice(2));
779
+ const r = spawnSync(cmd, args, {
780
+ stdio: "inherit",
781
+ env: {
782
+ ...process.env,
783
+ PAI_PASS_BACKGROUND: "1"
784
+ }
785
+ });
786
+ if (r.error) {
787
+ process.stderr.write(`--background: cannot spawn ${cmd} (${r.error.message}); running at normal priority\n`);
788
+ return;
789
+ }
790
+ process.exit(r.status ?? 1);
791
+ }
792
+
648
793
  //#endregion
649
794
  //#region src/memory/wakeup.ts
650
795
  /**
@@ -3576,6 +3721,95 @@ function cleanup() {
3576
3721
  saveIfDirty();
3577
3722
  }
3578
3723
 
3724
+ //#endregion
3725
+ //#region src/daemon/daemon-pid.ts
3726
+ /**
3727
+ * daemon-pid.ts — the one way PAI finds the running daemon's PID.
3728
+ *
3729
+ * Never by command-line pattern: `pgrep -f` matches any process whose argv
3730
+ * mentions the text (a worker whose spec quotes it, an editor), and the caller
3731
+ * then signals the wrong process. The service manager knows the PID; when none
3732
+ * is in use (`pai daemon serve` in a container) the daemon's own pidfile does.
3733
+ */
3734
+ const LAUNCHD_LABEL = "com.pai.pai-daemon";
3735
+ const SYSTEMD_UNIT = "pai-daemon.service";
3736
+ /** `pid = N` from `launchctl print gui/<uid>/<label>`; undefined when not running. */
3737
+ function parseLaunchctlPid(out) {
3738
+ const m = /^\s*pid = (\d+)\s*$/m.exec(out);
3739
+ return m ? Number(m[1]) : void 0;
3740
+ }
3741
+ /** `MainPID=N` from `systemctl --user show -p MainPID`; 0 means not running. */
3742
+ function parseSystemdMainPid(out) {
3743
+ const n = Number(/^MainPID=(\d+)\s*$/m.exec(out)?.[1]);
3744
+ return n > 0 ? n : void 0;
3745
+ }
3746
+ const run = (cmd, args) => {
3747
+ const r = spawnSync(cmd, args, { encoding: "utf8" });
3748
+ return {
3749
+ status: r.status,
3750
+ stdout: r.stdout ?? ""
3751
+ };
3752
+ };
3753
+ /** Start time of a process (epoch ms) or undefined when it does not exist. */
3754
+ function processStart(pid, sh) {
3755
+ const r = sh("ps", [
3756
+ "-o",
3757
+ "lstart=",
3758
+ "-p",
3759
+ String(pid)
3760
+ ]);
3761
+ if (r.status !== 0 || !r.stdout.trim()) return void 0;
3762
+ const t = Date.parse(r.stdout.trim());
3763
+ return Number.isNaN(t) ? void 0 : t;
3764
+ }
3765
+ /**
3766
+ * PID from the pidfile, only if that process is alive and started no later
3767
+ * than the pidfile was written (ps start times have 1 s resolution). A process
3768
+ * that started after the file is a reused PID and is not the daemon.
3769
+ */
3770
+ function pidfilePid(path = daemonPidPath(), sh = run) {
3771
+ try {
3772
+ const pid = parseInt(readFileSync(path, "utf8").trim(), 10);
3773
+ if (!(pid > 0)) return void 0;
3774
+ const started = processStart(pid, sh);
3775
+ if (started === void 0 || started > statSync(path).mtimeMs + 2e3) return void 0;
3776
+ return pid;
3777
+ } catch {
3778
+ return;
3779
+ }
3780
+ }
3781
+ /** The running daemon's PID: service manager first, pidfile second, else undefined. */
3782
+ function resolveDaemonPid(plat = process.platform, sh = run, path = daemonPidPath()) {
3783
+ if (plat === "darwin") {
3784
+ const r = sh("launchctl", ["print", `gui/${process.getuid?.() ?? userInfo().uid}/${LAUNCHD_LABEL}`]);
3785
+ const pid = r.status === 0 ? parseLaunchctlPid(r.stdout) : void 0;
3786
+ if (pid) return pid;
3787
+ } else if (plat === "linux") {
3788
+ const r = sh("systemctl", [
3789
+ "--user",
3790
+ "show",
3791
+ "-p",
3792
+ "MainPID",
3793
+ SYSTEMD_UNIT
3794
+ ]);
3795
+ const pid = r.status === 0 ? parseSystemdMainPid(r.stdout) : void 0;
3796
+ if (pid) return pid;
3797
+ }
3798
+ return pidfilePid(path, sh);
3799
+ }
3800
+ function writeDaemonPidfile(path = daemonPidPath()) {
3801
+ try {
3802
+ mkdirSync(dirname(path), { recursive: true });
3803
+ writeFileSync(path, `${process.pid}\n`, "utf8");
3804
+ } catch {}
3805
+ }
3806
+ /** Remove the pidfile only if it is ours (a newer daemon may own it). */
3807
+ function removeDaemonPidfile(path = daemonPidPath()) {
3808
+ try {
3809
+ if (parseInt(readFileSync(path, "utf8").trim(), 10) === process.pid) unlinkSync(path);
3810
+ } catch {}
3811
+ }
3812
+
3579
3813
  //#endregion
3580
3814
  //#region src/audit/session-usage.ts
3581
3815
  /**
@@ -4177,5 +4411,5 @@ function writeContextHandoverCache(cache) {
4177
4411
  }
4178
4412
 
4179
4413
  //#endregion
4180
- export { vaultIndexInProgress as $, lastIndexTime as A, formatDetectionJson as At, setIndexSchedulerTimer as B, cacheKeepaliveTimer as C, upsertSession as Ct, indexInProgress as D, transcriptFiles as Dt, embedSchedulerTimer as E, scanTranscriptFolders as Et, setCacheKeepaliveTimer as F, setRegistryBackend as G, setLastIndexTime as H, setDaemonConfig as I, setStorageBackend as J, setShutdownRequested as K, setEmbedInProgress as L, notificationConfig as M, passFailures as N, indexSchedulerTimer as O, detectProject as Ot, registryBackend as P, storageBackend as Q, setEmbedSchedulerTimer as R, spawnSummarizer as S, upsertProject as St, embedInProgress as T, findMovedProjects as Tt, setLastVaultIndexTime as U, setLastEmbedTime as V, setNotificationConfig as W, shutdownRequested as X, setVaultIndexInProgress as Y, startTime as Z, contentToText as _, loadScanConfig as _t, sessionKeepaliveLedgerSummary as a, findLatestNote as at, handleSessionSummary as b, resolveHome as bt, cleanup as c, addWorkToSessionNote as ct, getStats as d, getCurrentNotePath as dt, extractAndStoreTriples$1 as et, hasPendingOrProcessingOfType as f, archiveSessionFilesToSessionsDir as ft, migrateWorkQueue as g, cmdScan as gt, markFailed as h, migrateIdentityFile as ht, runSessionKeepaliveTick as i, applyContinue as it, lastVaultIndexTime as j, lastEmbedTime as k, formatDetection as kt, dequeue as l, appendCheckpoint as lt, markCompleted as m, buildWakeupContext as mt, writeContextHandoverCache as n, updateTodoContinue as nt, parseSessionUsage as o, findNotesDir as ot, loadQueue as p, findNotesDir$1 as pt, setStartTime as q, loadSessionKeepaliveState as r, appendCheckpointToNote as rt, totalUsageTokens as s, readBodyFile as st, readContextHandoverCache as t, sessionIdFromTranscript as tt, enqueue as u, finalizeSessionNote as ut, findLatestJsonl as v, migrateScanConfig as vt, daemonConfig as w, claudeProjectsDir as wt, migrateSummaryCooldowns as x, saveScanConfig as xt, getGitContext as y, performScan as yt, setIndexInProgress as z };
4181
- //# sourceMappingURL=context-handover-cache-9PGvXRIw.mjs.map
4414
+ export { shutdownRequested as $, indexInProgress as A, claudeProjectsDir as At, setEmbedInProgress as B, handleSessionSummary as C, loadScanConfig as Ct, daemonConfig as D, saveScanConfig as Dt, cacheKeepaliveTimer as E, resolveHome as Et, notificationConfig as F, formatDetection as Ft, setLastIndexTime as G, setIndexInProgress as H, passFailures as I, formatDetectionJson as It, setRegistryBackend as J, setLastVaultIndexTime as K, registryBackend as L, lastEmbedTime as M, scanTranscriptFolders as Mt, lastIndexTime as N, transcriptFiles as Nt, embedInProgress as O, upsertProject as Ot, lastVaultIndexTime as P, detectProject as Pt, setVaultIndexInProgress as Q, setCacheKeepaliveTimer as R, getGitContext as S, cmdScan as St, spawnSummarizer as T, performScan as Tt, setIndexSchedulerTimer as U, setEmbedSchedulerTimer as V, setLastEmbedTime as W, setStartTime as X, setShutdownRequested as Y, setStorageBackend as Z, markCompleted as _, buildWakeupContext as _t, sessionKeepaliveLedgerSummary as a, updateTodoContinue as at, contentToText as b, reexecBackground as bt, removeDaemonPidfile as c, findLatestNote as ct, cleanup as d, addWorkToSessionNote as dt, startTime as et, dequeue as f, appendCheckpoint as ft, loadQueue as g, findNotesDir$1 as gt, hasPendingOrProcessingOfType as h, archiveSessionFilesToSessionsDir as ht, runSessionKeepaliveTick as i, sessionIdFromTranscript as it, indexSchedulerTimer as j, findMovedProjects as jt, embedSchedulerTimer as k, upsertSession as kt, resolveDaemonPid as l, findNotesDir as lt, getStats as m, getCurrentNotePath as mt, writeContextHandoverCache as n, vaultIndexInProgress as nt, parseSessionUsage as o, appendCheckpointToNote as ot, enqueue as p, finalizeSessionNote as pt, setNotificationConfig as q, loadSessionKeepaliveState as r, extractAndStoreTriples$1 as rt, totalUsageTokens as s, applyContinue as st, readContextHandoverCache as t, storageBackend as tt, writeDaemonPidfile as u, readBodyFile as ut, markFailed as v, migrateIdentityFile as vt, migrateSummaryCooldowns as w, migrateScanConfig as wt, findLatestJsonl as x, runPassChild as xt, migrateWorkQueue as y, PassSpawnError as yt, setDaemonConfig as z };
4415
+ //# sourceMappingURL=context-handover-cache-BbCYQUGo.mjs.map