@tekmidian/pai 0.34.1 → 0.35.1

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 (42) hide show
  1. package/dist/{auto-route-lDk1q_2h.mjs → auto-route-DVM3U2ZY.mjs} +1 -1
  2. package/dist/{auto-route-lDk1q_2h.mjs.map → auto-route-DVM3U2ZY.mjs.map} +1 -1
  3. package/dist/cli/index.mjs +3 -3
  4. package/dist/cli/program.mjs +3 -3
  5. package/dist/{config-CcdkNSWa.mjs → config-BSkVcvfq.mjs} +2 -1
  6. package/dist/{config-CcdkNSWa.mjs.map → config-BSkVcvfq.mjs.map} +1 -1
  7. package/dist/daemon/index.mjs +5 -5
  8. package/dist/{daemon-COSnvTY1.mjs → daemon-Hnu6-HDD.mjs} +42 -19
  9. package/dist/daemon-Hnu6-HDD.mjs.map +1 -0
  10. package/dist/daemon-mcp/index.mjs +23 -9
  11. package/dist/daemon-mcp/index.mjs.map +1 -1
  12. package/dist/{factory-CDjViCff.mjs → factory-BGH0COXb.mjs} +5 -5
  13. package/dist/{factory-CDjViCff.mjs.map → factory-BGH0COXb.mjs.map} +1 -1
  14. package/dist/hooks/stop-hook.mjs +1 -1
  15. package/dist/hooks/stop-hook.mjs.map +2 -2
  16. package/dist/link-boost-QFLrJwD6.mjs +34 -0
  17. package/dist/link-boost-QFLrJwD6.mjs.map +1 -0
  18. package/dist/{pick-T4sZPpFh.mjs → pick-aWhenqjE.mjs} +48 -28
  19. package/dist/{pick-T4sZPpFh.mjs.map → pick-aWhenqjE.mjs.map} +1 -1
  20. package/dist/{postgres-CYQuLAfD.mjs → postgres-BALUE11K.mjs} +1 -1
  21. package/dist/{postgres-CYQuLAfD.mjs.map → postgres-BALUE11K.mjs.map} +1 -1
  22. package/dist/{query-feedback-ytPNVJWt.mjs → query-feedback-D4U56Hz6.mjs} +1 -1
  23. package/dist/{query-feedback-ytPNVJWt.mjs.map → query-feedback-D4U56Hz6.mjs.map} +1 -1
  24. package/dist/skills/Consolidate/SKILL.md +22 -8
  25. package/dist/{sqlite-R0pIbTmj.mjs → sqlite-C6FHnMkn.mjs} +1 -1
  26. package/dist/{sqlite-R0pIbTmj.mjs.map → sqlite-C6FHnMkn.mjs.map} +1 -1
  27. package/dist/{tools-B5t3lZ7v.mjs → tools-C1lCHerL.mjs} +27 -12
  28. package/dist/tools-C1lCHerL.mjs.map +1 -0
  29. package/dist/{vault-indexer-D04KuFhI.mjs → vault-indexer-CUF9edbW.mjs} +1 -1
  30. package/dist/{vault-indexer-D04KuFhI.mjs.map → vault-indexer-CUF9edbW.mjs.map} +1 -1
  31. package/dist/{work-queue-worker-DgoTjWfd.mjs → work-queue-worker-BcDGAcF3.mjs} +43 -9
  32. package/dist/work-queue-worker-BcDGAcF3.mjs.map +1 -0
  33. package/dist/{zettelkasten-DePb0LVI.mjs → zettelkasten-W-h8G2is.mjs} +2 -2
  34. package/dist/{zettelkasten-DePb0LVI.mjs.map → zettelkasten-W-h8G2is.mjs.map} +1 -1
  35. package/docs/vm-bootstrap.md +88 -0
  36. package/package.json +1 -1
  37. package/src/hooks/session-stop.sh +41 -0
  38. package/src/hooks/ts/stop/stop-hook.ts +17 -1
  39. package/statusline-command.sh +9 -3
  40. package/dist/daemon-COSnvTY1.mjs.map +0 -1
  41. package/dist/tools-B5t3lZ7v.mjs.map +0 -1
  42. package/dist/work-queue-worker-DgoTjWfd.mjs.map +0 -1
@@ -0,0 +1,34 @@
1
+ //#region src/memory/link-boost.ts
2
+ /**
3
+ * Re-rank results by inbound links *from other results in the same set*.
4
+ *
5
+ * Returns a new array, sorted by the adjusted score. Input is not mutated.
6
+ * Results whose paths carry no inbound links are unchanged, so a corpus with
7
+ * no links at all is a no-op rather than a distortion.
8
+ */
9
+ function applyLinkBoost(results, edges, opts) {
10
+ const weight = opts?.weight ?? .25;
11
+ if (results.length === 0 || edges.length === 0 || weight === 0) return [...results];
12
+ const paths = new Set(results.map((r) => r.path));
13
+ const inbound = /* @__PURE__ */ new Map();
14
+ for (const e of edges) {
15
+ if (e.sourcePath === e.targetPath) continue;
16
+ if (!paths.has(e.sourcePath) || !paths.has(e.targetPath)) continue;
17
+ inbound.set(e.targetPath, (inbound.get(e.targetPath) ?? 0) + 1);
18
+ }
19
+ if (inbound.size === 0) return [...results];
20
+ const maxInbound = Math.max(...inbound.values());
21
+ return results.map((r) => {
22
+ const links = inbound.get(r.path) ?? 0;
23
+ if (links === 0) return { ...r };
24
+ const factor = 1 + weight * (links / maxInbound);
25
+ return {
26
+ ...r,
27
+ score: r.score * factor
28
+ };
29
+ }).sort((a, b) => b.score - a.score);
30
+ }
31
+
32
+ //#endregion
33
+ export { applyLinkBoost };
34
+ //# sourceMappingURL=link-boost-QFLrJwD6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-boost-QFLrJwD6.mjs","names":[],"sources":["../src/memory/link-boost.ts"],"sourcesContent":["/**\n * Rank search results by how the corpus links to them, not only by similarity.\n *\n * Why this exists: the store holds 33,709 wikilinks that are *facts* — one note\n * pointing at another, written by a person — alongside 2.4M chunks whose only\n * ranking signal is embedding similarity. Similarity answers \"what reads like\n * the query\". It cannot answer \"which of these is the one the others refer\n * back to\", which is usually the note worth reading first.\n *\n * The boost is deliberately query-local: it counts links *between the results\n * themselves*, not global popularity. A note linked by many other notes that\n * also match the query is a hub for that question. A note linked by half the\n * vault is merely popular, which is not the same thing and would flatten every\n * ranking toward the same few index pages.\n *\n * Links cost nothing to maintain — no embedding pass, no model call — so this\n * signal stays correct while the embedding backlog drains, and works for chunks\n * that have no embedding at all.\n */\n\nimport type { SearchResult } from \"./search.js\";\n\n/** A directed link between two note paths, as stored in vault_links. */\nexport interface LinkEdge {\n sourcePath: string;\n targetPath: string;\n}\n\nexport interface LinkBoostOptions {\n /**\n * How much the boost may move a result, as a fraction of its current score.\n * 0.25 means the most-linked result gains 25%. Kept modest by default: the\n * link graph is a supporting signal, and a note nobody links to can still be\n * the right answer.\n */\n weight?: number;\n}\n\n/**\n * Re-rank results by inbound links *from other results in the same set*.\n *\n * Returns a new array, sorted by the adjusted score. Input is not mutated.\n * Results whose paths carry no inbound links are unchanged, so a corpus with\n * no links at all is a no-op rather than a distortion.\n */\nexport function applyLinkBoost(\n results: SearchResult[],\n edges: LinkEdge[],\n opts?: LinkBoostOptions,\n): SearchResult[] {\n const weight = opts?.weight ?? 0.25;\n if (results.length === 0 || edges.length === 0 || weight === 0) {\n return [...results];\n }\n\n // Only links whose BOTH ends are in the result set count. An edge pointing\n // out of the set says nothing about the relative rank of results inside it.\n const paths = new Set(results.map((r) => r.path));\n const inbound = new Map<string, number>();\n for (const e of edges) {\n if (e.sourcePath === e.targetPath) continue; // self-links are noise\n if (!paths.has(e.sourcePath) || !paths.has(e.targetPath)) continue;\n inbound.set(e.targetPath, (inbound.get(e.targetPath) ?? 0) + 1);\n }\n if (inbound.size === 0) return [...results];\n\n // Normalise against the most-linked result so the boost is bounded by\n // `weight` regardless of corpus size. Without this, a densely linked project\n // would swamp similarity entirely while a sparse one would see no effect.\n const maxInbound = Math.max(...inbound.values());\n\n return results\n .map((r) => {\n const links = inbound.get(r.path) ?? 0;\n if (links === 0) return { ...r };\n const factor = 1 + weight * (links / maxInbound);\n return { ...r, score: r.score * factor };\n })\n .sort((a, b) => b.score - a.score);\n}\n"],"mappings":";;;;;;;;AA6CA,SAAgB,eACd,SACA,OACA,MACgB;CAChB,MAAM,SAAS,MAAM,UAAU;AAC/B,KAAI,QAAQ,WAAW,KAAK,MAAM,WAAW,KAAK,WAAW,EAC3D,QAAO,CAAC,GAAG,QAAQ;CAKrB,MAAM,QAAQ,IAAI,IAAI,QAAQ,KAAK,MAAM,EAAE,KAAK,CAAC;CACjD,MAAM,0BAAU,IAAI,KAAqB;AACzC,MAAK,MAAM,KAAK,OAAO;AACrB,MAAI,EAAE,eAAe,EAAE,WAAY;AACnC,MAAI,CAAC,MAAM,IAAI,EAAE,WAAW,IAAI,CAAC,MAAM,IAAI,EAAE,WAAW,CAAE;AAC1D,UAAQ,IAAI,EAAE,aAAa,QAAQ,IAAI,EAAE,WAAW,IAAI,KAAK,EAAE;;AAEjE,KAAI,QAAQ,SAAS,EAAG,QAAO,CAAC,GAAG,QAAQ;CAK3C,MAAM,aAAa,KAAK,IAAI,GAAG,QAAQ,QAAQ,CAAC;AAEhD,QAAO,QACJ,KAAK,MAAM;EACV,MAAM,QAAQ,QAAQ,IAAI,EAAE,KAAK,IAAI;AACrC,MAAI,UAAU,EAAG,QAAO,EAAE,GAAG,GAAG;EAChC,MAAM,SAAS,IAAI,UAAU,QAAQ;AACrC,SAAO;GAAE,GAAG;GAAG,OAAO,EAAE,QAAQ;GAAQ;GACxC,CACD,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM"}
@@ -10,8 +10,8 @@ import { n as formatDetection, r as formatDetectionJson, t as detectProject } fr
10
10
  import { _ as transcriptFiles, a as readBodyFile, c as loadScanConfig, d as saveScanConfig, f as upsertProject, g as scanTranscriptFolders, h as findMovedProjects, i as findNotesDir$1, m as claudeProjectsDir, n as applyContinue, o as extractAndStoreTriples, p as upsertSession, r as findLatestNote, s as cmdScan, t as appendCheckpointToNote, u as resolveHome } from "./checkpoint-block-D3rm4dAJ.mjs";
11
11
  import { a as schedulerLogPath, i as paiSocketPath, n as daemonLogPath, r as daemonPidPath } from "./runtime-paths-B0P1TvUr.mjs";
12
12
  import { t as PaiClient } from "./ipc-client-aVKVERjJ.mjs";
13
- import { a as expandHome, c as UNROUTED, i as ensureConfigDir, n as CONFIG_FILE$2, o as loadConfig, s as OWNER_LABEL_PREFIX, t as CONFIG_DIR } from "./config-CcdkNSWa.mjs";
14
- import { i as humanDuration, t as createStorageBackend } from "./factory-CDjViCff.mjs";
13
+ import { a as expandHome, c as UNROUTED, i as ensureConfigDir, n as CONFIG_FILE$2, o as loadConfig, s as OWNER_LABEL_PREFIX, t as CONFIG_DIR } from "./config-BSkVcvfq.mjs";
14
+ import { i as humanDuration, t as createStorageBackend } from "./factory-BGH0COXb.mjs";
15
15
  import { s as kgQuery } from "./kg-entity-r8duqhi9.mjs";
16
16
  import { _ as scanSessions, a as renderDedupedSessions, c as probeResume, d as callAiBroker, f as fetchLiveSessions, g as resolveSessionByNameOrId, h as fmtAge, i as normalizeName$2, l as restoreTopLevel, m as sendToSession, o as hasConversation, p as revealItermSession, r as buildDeduped, s as launchInDir, u as printExitDir } from "./main-resolver-CNSqU8wo.mjs";
17
17
  import { appendFileSync, chmodSync, copyFileSync, createReadStream, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, readlinkSync, realpathSync, renameSync, statSync, symlinkSync, unlinkSync, writeFileSync } from "node:fs";
@@ -2924,8 +2924,8 @@ function registerStatsCommands(memoryCmd, getDb) {
2924
2924
  //#region src/cli/commands/memory/sources-cmd.ts
2925
2925
  function registerSourcesCommand(memoryCmd) {
2926
2926
  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) => {
2927
- const { createStorageBackend } = await import("./factory-CDjViCff.mjs").then((n) => n.n);
2928
- const { loadConfig } = await import("./config-CcdkNSWa.mjs").then((n) => n.r);
2927
+ const { createStorageBackend } = await import("./factory-BGH0COXb.mjs").then((n) => n.n);
2928
+ const { loadConfig } = await import("./config-BSkVcvfq.mjs").then((n) => n.r);
2929
2929
  const { cmdMemorySources } = await import("./sources-BDwN0B8i.mjs");
2930
2930
  let backend;
2931
2931
  try {
@@ -3608,8 +3608,8 @@ function cmdLogs(opts) {
3608
3608
  }
3609
3609
  function registerDaemonCommands(daemonCmd) {
3610
3610
  daemonCmd.command("serve").description("Start the PAI daemon in the foreground").action(async () => {
3611
- const { serve } = await import("./daemon-COSnvTY1.mjs").then((n) => n.t);
3612
- const { loadConfig: lc, ensureConfigDir } = await import("./config-CcdkNSWa.mjs").then((n) => n.r);
3611
+ const { serve } = await import("./daemon-Hnu6-HDD.mjs").then((n) => n.t);
3612
+ const { loadConfig: lc, ensureConfigDir } = await import("./config-BSkVcvfq.mjs").then((n) => n.r);
3613
3613
  ensureConfigDir();
3614
3614
  await serve(lc());
3615
3615
  });
@@ -6997,7 +6997,7 @@ async function cmdExplore(note, opts) {
6997
6997
  const depth = parseInt(opts.depth ?? "3", 10);
6998
6998
  const direction = opts.direction ?? "both";
6999
6999
  const mode = opts.mode ?? "all";
7000
- const { zettelExplore } = await import("./zettelkasten-DePb0LVI.mjs");
7000
+ const { zettelExplore } = await import("./zettelkasten-W-h8G2is.mjs");
7001
7001
  const result = zettelExplore(getFedDb(), {
7002
7002
  startNote: note,
7003
7003
  depth,
@@ -7061,7 +7061,7 @@ async function cmdHealth(opts) {
7061
7061
  const projectPath = opts.project;
7062
7062
  const recentDays = parseInt(opts.days ?? "30", 10);
7063
7063
  const includeTypes = opts.include ? opts.include.split(",").map((s) => s.trim()) : void 0;
7064
- const { zettelHealth } = await import("./zettelkasten-DePb0LVI.mjs");
7064
+ const { zettelHealth } = await import("./zettelkasten-W-h8G2is.mjs");
7065
7065
  const result = zettelHealth(getFedDb(), {
7066
7066
  scope,
7067
7067
  projectPath,
@@ -7130,7 +7130,7 @@ async function cmdSurprise(note, opts) {
7130
7130
  const limit = parseInt(opts.limit ?? "10", 10);
7131
7131
  const minSimilarity = parseFloat(opts.minSimilarity ?? "0.3");
7132
7132
  const minGraphDistance = parseInt(opts.minDistance ?? "3", 10);
7133
- const { zettelSurprise } = await import("./zettelkasten-DePb0LVI.mjs");
7133
+ const { zettelSurprise } = await import("./zettelkasten-W-h8G2is.mjs");
7134
7134
  const db = getFedDb();
7135
7135
  console.log();
7136
7136
  console.log(header(" PAI Zettel Surprise"));
@@ -7183,7 +7183,7 @@ async function cmdSuggest(note, opts) {
7183
7183
  const vaultProjectId = parseInt(opts.vaultProjectId, 10);
7184
7184
  const limit = parseInt(opts.limit ?? "5", 10);
7185
7185
  const excludeLinked = opts.excludeLinked !== false;
7186
- const { zettelSuggest } = await import("./zettelkasten-DePb0LVI.mjs");
7186
+ const { zettelSuggest } = await import("./zettelkasten-W-h8G2is.mjs");
7187
7187
  const db = getFedDb();
7188
7188
  console.log();
7189
7189
  console.log(header(" PAI Zettel Suggest"));
@@ -7234,7 +7234,7 @@ async function cmdConverse(question, opts) {
7234
7234
  const vaultProjectId = parseInt(opts.vaultProjectId, 10);
7235
7235
  const depth = parseInt(opts.depth ?? "2", 10);
7236
7236
  const limit = parseInt(opts.limit ?? "15", 10);
7237
- const { zettelConverse } = await import("./zettelkasten-DePb0LVI.mjs");
7237
+ const { zettelConverse } = await import("./zettelkasten-W-h8G2is.mjs");
7238
7238
  const db = getFedDb();
7239
7239
  console.log();
7240
7240
  console.log(header(" PAI Zettel Converse"));
@@ -7295,7 +7295,7 @@ async function cmdThemes(opts) {
7295
7295
  const minClusterSize = parseInt(opts.minSize ?? "3", 10);
7296
7296
  const maxThemes = parseInt(opts.maxThemes ?? "10", 10);
7297
7297
  const similarityThreshold = parseFloat(opts.threshold ?? "0.65");
7298
- const { zettelThemes } = await import("./zettelkasten-DePb0LVI.mjs");
7298
+ const { zettelThemes } = await import("./zettelkasten-W-h8G2is.mjs");
7299
7299
  const db = getFedDb();
7300
7300
  console.log();
7301
7301
  console.log(header(" PAI Zettel Themes"));
@@ -8853,7 +8853,7 @@ async function escalate(task, headline, detail, state, now, opts) {
8853
8853
  let delivered = false;
8854
8854
  try {
8855
8855
  const { routeNotification } = await import("./router-i9S19Usg.mjs").then((n) => n.n);
8856
- const { loadConfig } = await import("./config-CcdkNSWa.mjs").then((n) => n.r);
8856
+ const { loadConfig } = await import("./config-BSkVcvfq.mjs").then((n) => n.r);
8857
8857
  delivered = (await routeNotification({
8858
8858
  event: "error",
8859
8859
  title: `PAI: ${headline}`,
@@ -11370,10 +11370,10 @@ function cmdActive(db, opts) {
11370
11370
  ], rows));
11371
11371
  }
11372
11372
  async function cmdAutoRoute(opts) {
11373
- const { autoRoute, formatAutoRoute, formatAutoRouteJson } = await import("./auto-route-lDk1q_2h.mjs");
11373
+ const { autoRoute, formatAutoRoute, formatAutoRouteJson } = await import("./auto-route-DVM3U2ZY.mjs");
11374
11374
  const { openRegistry } = await import("./db-BtuN768f.mjs").then((n) => n.t);
11375
- const { createStorageBackend } = await import("./factory-CDjViCff.mjs").then((n) => n.n);
11376
- const { loadConfig } = await import("./config-CcdkNSWa.mjs").then((n) => n.r);
11375
+ const { createStorageBackend } = await import("./factory-BGH0COXb.mjs").then((n) => n.n);
11376
+ const { loadConfig } = await import("./config-BSkVcvfq.mjs").then((n) => n.r);
11377
11377
  const config = loadConfig();
11378
11378
  const registryDb = openRegistry();
11379
11379
  const federation = await createStorageBackend(config);
@@ -12837,13 +12837,33 @@ function scanNotesDir(notesDir, dbByFilename) {
12837
12837
  }
12838
12838
  return candidates;
12839
12839
  }
12840
- function buildRenumberMap(survivors) {
12841
- const map = /* @__PURE__ */ new Map();
12842
- [...survivors].sort((a, b) => a.number - b.number).forEach((s, idx) => {
12843
- const newNum = idx + 1;
12844
- if (s.number !== newNum) map.set(s.number, newNum);
12845
- });
12846
- return map;
12840
+ /**
12841
+ * Renumbering is disabled. This always returns an empty map.
12842
+ *
12843
+ * It used to reassign every surviving note to its position in the sorted list
12844
+ * (`newNum = idx + 1`), which treats the number as a position. The number is
12845
+ * also the note's identity — handovers and other notes cite notes by number —
12846
+ * and a value that is both a position and an identity parts company with
12847
+ * itself the moment the set changes.
12848
+ *
12849
+ * What that cost, measured on a real corpus: deleting or adding one note
12850
+ * shifted the whole series, and because the number is also written into the H1
12851
+ * (`# Session 0006: ...`), the rewrite changed file *contents* as well as
12852
+ * names. Git could not pair them as renames — 0 of 262 rewritten notes were
12853
+ * byte-identical to anything in HEAD — so a single shift produced 261 deletions
12854
+ * plus 262 additions. The operator changed one source file and their prompt
12855
+ * reported 262 changes, which hides any real uncommitted work in the noise.
12856
+ *
12857
+ * Numbers are now minted once, at creation, and never reassigned. Gaps are
12858
+ * expected and harmless: a gap is information (a note was removed) and costs
12859
+ * nothing, whereas a renumber invalidates every existing reference silently.
12860
+ *
12861
+ * Kept as a function rather than deleted so the call site and the CleanupPlan
12862
+ * shape stay intact; collisions should be reported by the caller, never
12863
+ * resolved by shifting.
12864
+ */
12865
+ function buildRenumberMap(_survivors) {
12866
+ return /* @__PURE__ */ new Map();
12847
12867
  }
12848
12868
  function analyzeProject(db, project) {
12849
12869
  const notesDirPaths = findAllNotesDirs(project);
@@ -12880,8 +12900,8 @@ function analyzeProject(db, project) {
12880
12900
  async function countVectorDbPaths(oldPaths) {
12881
12901
  if (oldPaths.length === 0) return 0;
12882
12902
  try {
12883
- const { loadConfig } = await import("./config-CcdkNSWa.mjs").then((n) => n.r);
12884
- const { PostgresBackend } = await import("./postgres-CYQuLAfD.mjs");
12903
+ const { loadConfig } = await import("./config-BSkVcvfq.mjs").then((n) => n.r);
12904
+ const { PostgresBackend } = await import("./postgres-BALUE11K.mjs");
12885
12905
  const config = loadConfig();
12886
12906
  if (config.storageBackend !== "postgres") return 0;
12887
12907
  const pgBackend = new PostgresBackend(config.postgres ?? {});
@@ -12901,8 +12921,8 @@ async function countVectorDbPaths(oldPaths) {
12901
12921
  async function updateVectorDbPaths(moves) {
12902
12922
  if (moves.length === 0) return 0;
12903
12923
  try {
12904
- const { loadConfig } = await import("./config-CcdkNSWa.mjs").then((n) => n.r);
12905
- const { PostgresBackend } = await import("./postgres-CYQuLAfD.mjs");
12924
+ const { loadConfig } = await import("./config-BSkVcvfq.mjs").then((n) => n.r);
12925
+ const { PostgresBackend } = await import("./postgres-BALUE11K.mjs");
12906
12926
  const config = loadConfig();
12907
12927
  if (config.storageBackend !== "postgres") return 0;
12908
12928
  const pgBackend = new PostgresBackend(config.postgres ?? {});
@@ -14185,4 +14205,4 @@ async function cmdPick(db, opts = {}) {
14185
14205
 
14186
14206
  //#endregion
14187
14207
  export { registerProjectsCommands as A, registerRestoreCommands as C, registerIdentityCommands as D, registerMcpCommands as E, resolveIdentifier as M, registerMemoryCommands as O, registerSetupCommand as S, registerDaemonCommands as T, registerUpdateCommand as _, cmdEnd as a, registerZettelCommands as b, cmdGoto as c, registerHelpCommand as d, registerDbCommands as f, registerNotifyCommands as g, registerTaskCommands as h, cmdPauseAll as i, findMovedPath as j, registerRegistryCommands as k, cmdPause as l, registerTopicCommands as m, cmdFind as n, registerSessionCleanupCommand as o, registerKgCommands as p, cmdClearNames as r, registerSessionCommands as s, cmdPick as t, cmdList as u, registerSkillCommands as v, registerBackupCommands as w, registerObsidianCommands as x, registerObservationCommands as y };
14188
- //# sourceMappingURL=pick-T4sZPpFh.mjs.map
14208
+ //# sourceMappingURL=pick-aWhenqjE.mjs.map