pi-para 0.5.2 → 0.5.5

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 (175) hide show
  1. package/ARCHITECTURE.md +160 -0
  2. package/CHANGELOG.md +29 -0
  3. package/CONFIGURATION.md +243 -0
  4. package/README.md +140 -237
  5. package/SETUP.md +196 -112
  6. package/STRUCTURE.md +140 -0
  7. package/dist/atomic-write.d.ts +2 -0
  8. package/dist/atomic-write.d.ts.map +1 -0
  9. package/dist/atomic-write.js +18 -0
  10. package/dist/atomic-write.js.map +1 -0
  11. package/dist/capture.d.ts +4 -4
  12. package/dist/capture.d.ts.map +1 -1
  13. package/dist/capture.js +1 -1
  14. package/dist/capture.js.map +1 -1
  15. package/dist/cli-legacy.d.ts +4 -0
  16. package/dist/cli-legacy.d.ts.map +1 -0
  17. package/dist/cli-legacy.js +41 -0
  18. package/dist/cli-legacy.js.map +1 -0
  19. package/dist/cli.d.ts +2 -9
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +135 -29
  22. package/dist/cli.js.map +1 -1
  23. package/dist/commands.d.ts +3 -3
  24. package/dist/commands.d.ts.map +1 -1
  25. package/dist/commands.js +189 -256
  26. package/dist/commands.js.map +1 -1
  27. package/dist/config.d.ts +104 -0
  28. package/dist/config.d.ts.map +1 -0
  29. package/dist/config.js +242 -0
  30. package/dist/config.js.map +1 -0
  31. package/dist/context.d.ts +4 -2
  32. package/dist/context.d.ts.map +1 -1
  33. package/dist/context.js +29 -7
  34. package/dist/context.js.map +1 -1
  35. package/dist/credentials.d.ts +27 -0
  36. package/dist/credentials.d.ts.map +1 -0
  37. package/dist/credentials.js +85 -0
  38. package/dist/credentials.js.map +1 -0
  39. package/dist/daemon.d.ts +1 -1
  40. package/dist/daemon.d.ts.map +1 -1
  41. package/dist/doctor.d.ts +20 -0
  42. package/dist/doctor.d.ts.map +1 -0
  43. package/dist/doctor.js +171 -0
  44. package/dist/doctor.js.map +1 -0
  45. package/dist/gepa/index.js +1 -1
  46. package/dist/gepa/index.js.map +1 -1
  47. package/dist/index.d.ts +3 -3
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +102 -37
  50. package/dist/index.js.map +1 -1
  51. package/dist/maintainer.d.ts +2 -2
  52. package/dist/maintainer.d.ts.map +1 -1
  53. package/dist/maintainer.js +2 -2
  54. package/dist/maintainer.js.map +1 -1
  55. package/dist/model-resolver.d.ts +30 -0
  56. package/dist/model-resolver.d.ts.map +1 -0
  57. package/dist/model-resolver.js +71 -0
  58. package/dist/model-resolver.js.map +1 -0
  59. package/dist/paths.d.ts +20 -0
  60. package/dist/paths.d.ts.map +1 -0
  61. package/dist/paths.js +33 -0
  62. package/dist/paths.js.map +1 -0
  63. package/dist/processor.d.ts +2 -2
  64. package/dist/processor.d.ts.map +1 -1
  65. package/dist/processor.js +2 -2
  66. package/dist/processor.js.map +1 -1
  67. package/dist/qmd-providers.d.ts +12 -0
  68. package/dist/qmd-providers.d.ts.map +1 -0
  69. package/dist/qmd-providers.js +45 -0
  70. package/dist/qmd-providers.js.map +1 -0
  71. package/dist/query.d.ts +1 -1
  72. package/dist/query.d.ts.map +1 -1
  73. package/dist/query.js +14 -1
  74. package/dist/query.js.map +1 -1
  75. package/dist/repair.d.ts +11 -0
  76. package/dist/repair.d.ts.map +1 -0
  77. package/dist/repair.js +41 -0
  78. package/dist/repair.js.map +1 -0
  79. package/dist/scheduler/controls.d.ts +35 -0
  80. package/dist/scheduler/controls.d.ts.map +1 -0
  81. package/dist/scheduler/controls.js +98 -0
  82. package/dist/scheduler/controls.js.map +1 -0
  83. package/dist/scheduler/index.d.ts +48 -0
  84. package/dist/scheduler/index.d.ts.map +1 -0
  85. package/dist/scheduler/index.js +193 -0
  86. package/dist/scheduler/index.js.map +1 -0
  87. package/dist/scheduler/leases.d.ts +22 -0
  88. package/dist/scheduler/leases.d.ts.map +1 -0
  89. package/dist/scheduler/leases.js +74 -0
  90. package/dist/scheduler/leases.js.map +1 -0
  91. package/dist/scheduler/session-capture.d.ts +33 -0
  92. package/dist/scheduler/session-capture.d.ts.map +1 -0
  93. package/dist/scheduler/session-capture.js +108 -0
  94. package/dist/scheduler/session-capture.js.map +1 -0
  95. package/dist/scheduler/state.d.ts +56 -0
  96. package/dist/scheduler/state.d.ts.map +1 -0
  97. package/dist/scheduler/state.js +210 -0
  98. package/dist/scheduler/state.js.map +1 -0
  99. package/dist/session-tools.d.ts +1 -1
  100. package/dist/session-tools.d.ts.map +1 -1
  101. package/dist/settings.d.ts +19 -0
  102. package/dist/settings.d.ts.map +1 -0
  103. package/dist/settings.js +106 -0
  104. package/dist/settings.js.map +1 -0
  105. package/dist/setup.d.ts +29 -0
  106. package/dist/setup.d.ts.map +1 -0
  107. package/dist/setup.js +90 -0
  108. package/dist/setup.js.map +1 -0
  109. package/dist/status.d.ts +22 -0
  110. package/dist/status.d.ts.map +1 -0
  111. package/dist/status.js +93 -0
  112. package/dist/status.js.map +1 -0
  113. package/dist/store.d.ts +23 -8
  114. package/dist/store.d.ts.map +1 -1
  115. package/dist/store.js +89 -34
  116. package/dist/store.js.map +1 -1
  117. package/dist/summarize.d.ts +6 -2
  118. package/dist/summarize.d.ts.map +1 -1
  119. package/dist/summarize.js +60 -25
  120. package/dist/summarize.js.map +1 -1
  121. package/dist/templates/prompts.d.ts +1 -1
  122. package/dist/templates/prompts.d.ts.map +1 -1
  123. package/dist/templates/prompts.js +1 -1
  124. package/dist/tools.d.ts +5 -5
  125. package/dist/tools.d.ts.map +1 -1
  126. package/dist/tools.js +243 -78
  127. package/dist/tools.js.map +1 -1
  128. package/dist/wiki-tool-guidance.d.ts +6 -0
  129. package/dist/wiki-tool-guidance.d.ts.map +1 -0
  130. package/dist/wiki-tool-guidance.js +70 -0
  131. package/dist/wiki-tool-guidance.js.map +1 -0
  132. package/dist/wiki.d.ts +6 -1
  133. package/dist/wiki.d.ts.map +1 -1
  134. package/dist/wiki.js +88 -19
  135. package/dist/wiki.js.map +1 -1
  136. package/package.json +80 -15
  137. package/scripts/install.ps1 +44 -0
  138. package/scripts/install.sh +62 -0
  139. package/scripts/smoke-install.mjs +61 -0
  140. package/skills/para/SKILL.md +1 -1
  141. package/skills/setup/SKILL.md +1 -1
  142. package/src/atomic-write.ts +17 -0
  143. package/src/capture.ts +4 -4
  144. package/src/cli-legacy.ts +43 -0
  145. package/src/cli.ts +133 -28
  146. package/src/commands.ts +203 -243
  147. package/src/config.ts +355 -0
  148. package/src/context.ts +29 -14
  149. package/src/credentials.ts +100 -0
  150. package/src/daemon.ts +1 -1
  151. package/src/doctor.ts +204 -0
  152. package/src/gepa/index.ts +1 -1
  153. package/src/index.ts +119 -40
  154. package/src/maintainer.ts +4 -4
  155. package/src/model-resolver.ts +96 -0
  156. package/src/paths.ts +48 -0
  157. package/src/processor.ts +4 -4
  158. package/src/qmd-providers.ts +63 -0
  159. package/src/query.ts +15 -1
  160. package/src/repair.ts +49 -0
  161. package/src/scheduler/controls.ts +125 -0
  162. package/src/scheduler/index.ts +210 -0
  163. package/src/scheduler/leases.ts +98 -0
  164. package/src/scheduler/session-capture.ts +146 -0
  165. package/src/scheduler/state.ts +304 -0
  166. package/src/session-tools.ts +1 -1
  167. package/src/settings.ts +126 -0
  168. package/src/setup.ts +116 -0
  169. package/src/status.ts +115 -0
  170. package/src/store.ts +116 -31
  171. package/src/summarize.ts +72 -16
  172. package/src/templates/prompts.ts +1 -1
  173. package/src/tools.ts +280 -90
  174. package/src/wiki-tool-guidance.ts +84 -0
  175. package/src/wiki.ts +98 -26
package/dist/store.d.ts CHANGED
@@ -1,13 +1,27 @@
1
1
  /**
2
- * qmd store lifecycle — manages the @picassio/qmd store instance.
2
+ * qmd store lifecycle — manages the qmd-engine store instance.
3
3
  *
4
4
  * Handles store creation/opening, search with scope filtering,
5
5
  * re-indexing after wiki changes, and embedding lifecycle.
6
6
  */
7
- import type { QMDStore } from "@picassio/qmd";
7
+ import type { QMDStore } from "qmd-engine";
8
+ import type { ParaUserConfig } from "./config.js";
8
9
  import type { PageFrontmatter, PageRef, ParaCategory } from "./wiki.js";
9
10
  import type { ProjectScope } from "./scope.js";
10
- export type { QMDStore } from "@picassio/qmd";
11
+ export type { QMDStore } from "qmd-engine";
12
+ export interface OpenStoreOptions {
13
+ paraConfig?: ParaUserConfig;
14
+ secretsPath?: string;
15
+ authStorage?: {
16
+ getApiKey(provider: string): Promise<string | undefined>;
17
+ };
18
+ /**
19
+ * Start slow vector embedding in the background after BM25 indexing.
20
+ * Pi session startup disables this so single-shot `pi -p` processes can exit
21
+ * promptly; callers can still invoke embedIfNeeded() explicitly.
22
+ */
23
+ backgroundEmbed?: boolean;
24
+ }
11
25
  export interface WikiSearchOptions {
12
26
  scope?: ProjectScope;
13
27
  category?: ParaCategory;
@@ -28,10 +42,10 @@ export interface WikiSearchResult {
28
42
  * - wiki: all .md files except raw/
29
43
  * - raw: .md files under raw/, not included in default queries
30
44
  *
31
- * Adds PARA category contexts, runs update() for BM25,
32
- * and schedules embed() in the background.
45
+ * Adds PARA category contexts and runs update() for BM25. When requested,
46
+ * also schedules embed() in the background.
33
47
  */
34
- export declare function openStore(wikiDir: string): Promise<QMDStore>;
48
+ export declare function openStore(wikiDir: string, opts?: OpenStoreOptions): Promise<QMDStore>;
35
49
  /**
36
50
  * Close the store. Awaits any pending embed operation (with timeout) first.
37
51
  */
@@ -39,8 +53,9 @@ export declare function closeStore(store: QMDStore): Promise<void>;
39
53
  /**
40
54
  * Search the wiki with scope and category filtering.
41
55
  *
42
- * Uses BM25 search (searchLex) which requires no LLM. Each result's
43
- * frontmatter is parsed to apply scope/category/archive filters.
56
+ * Uses vector search when an embedding index is available, merged with BM25
57
+ * lexical search for exact keyword matches. Each result's frontmatter is parsed
58
+ * to apply scope/category/archive filters.
44
59
  */
45
60
  export declare function searchWiki(store: QMDStore, query: string, opts: WikiSearchOptions): Promise<WikiSearchResult[]>;
46
61
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,eAAe,CAAC;AAGhE,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI9C,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,eAAe,CAAC;CAC9B;AAsCD;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAwDlE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/D;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoE7B;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;KAAE,CAAC;IAC3E;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,eAAe,CAAC;CAC9B;AA8DD;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkE/F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/D;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAqE7B;AAkCD;;;GAGG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE"}
package/dist/store.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * qmd store lifecycle — manages the @picassio/qmd store instance.
2
+ * qmd store lifecycle — manages the qmd-engine store instance.
3
3
  *
4
4
  * Handles store creation/opening, search with scope filtering,
5
5
  * re-indexing after wiki changes, and embedding lifecycle.
@@ -8,8 +8,9 @@ import { readFileSync, existsSync } from "node:fs";
8
8
  import { homedir } from "node:os";
9
9
  import { join } from "node:path";
10
10
  import { parse as parseYaml } from "yaml";
11
- import { createStore, extractSnippet } from "@picassio/qmd";
11
+ import { createStore, extractSnippet } from "qmd-engine";
12
12
  import { parseFrontmatter } from "./frontmatter.js";
13
+ import { buildQmdProvidersFromParaConfig } from "./qmd-providers.js";
13
14
  import { matchesScope } from "./scope.js";
14
15
  // -- PARA context descriptions -----------------------------------------------
15
16
  const PARA_CONTEXTS = {
@@ -21,6 +22,20 @@ const PARA_CONTEXTS = {
21
22
  const RAW_CONTEXT = "Immutable source material: articles, documents, notes. Not synthesized.";
22
23
  // -- Pending embed tracking --------------------------------------------------
23
24
  const pendingEmbeds = new WeakMap();
25
+ // -- qmd provider config -----------------------------------------------------
26
+ /**
27
+ * qmd-engine currently falls back to node-llama-cpp when no API provider is
28
+ * configured. pi-para never uses local LLMs, so provide an inert API endpoint
29
+ * whenever neither pi-para profiles nor legacy provider config exists. BM25
30
+ * search works without calling this endpoint; accidental vector/chat calls fail
31
+ * fast instead of downloading/building local models.
32
+ */
33
+ const NO_LOCAL_PROVIDERS = {
34
+ embed: {
35
+ url: "http://127.0.0.1:9",
36
+ model: "disabled-local-llm",
37
+ },
38
+ };
24
39
  // -- qmd config loading ------------------------------------------------------
25
40
  /**
26
41
  * Read providers from ~/.config/qmd/index.yml.
@@ -47,13 +62,21 @@ function loadQmdProviders() {
47
62
  * - wiki: all .md files except raw/
48
63
  * - raw: .md files under raw/, not included in default queries
49
64
  *
50
- * Adds PARA category contexts, runs update() for BM25,
51
- * and schedules embed() in the background.
65
+ * Adds PARA category contexts and runs update() for BM25. When requested,
66
+ * also schedules embed() in the background.
52
67
  */
53
- export async function openStore(wikiDir) {
54
- // Read providers from ~/.config/qmd/index.yml so external API providers
55
- // (embed, chat, rerank) are used instead of local GGUF models.
56
- const providers = loadQmdProviders();
68
+ export async function openStore(wikiDir, opts = {}) {
69
+ // Prefer pi-para's in-memory provider profiles. Legacy QMD YAML remains a
70
+ // fallback for migrated installs and tests that do not pass paraConfig.
71
+ const configuredProviders = opts.paraConfig
72
+ ? opts.paraConfig.qmd.providerConfig === "legacy-qmd-compatible"
73
+ ? loadQmdProviders()
74
+ : await buildQmdProvidersFromParaConfig(opts.paraConfig, {
75
+ secretsPath: opts.secretsPath,
76
+ authStorage: opts.authStorage,
77
+ })
78
+ : loadQmdProviders();
79
+ const providers = configuredProviders ?? NO_LOCAL_PROVIDERS;
57
80
  const store = await createStore({
58
81
  dbPath: join(wikiDir, ".qmd.sqlite"),
59
82
  config: {
@@ -69,7 +92,7 @@ export async function openStore(wikiDir) {
69
92
  includeByDefault: false,
70
93
  },
71
94
  },
72
- ...(providers ? { providers: providers } : {}),
95
+ providers: providers,
73
96
  },
74
97
  });
75
98
  // Add PARA category contexts to the wiki collection
@@ -80,26 +103,28 @@ export async function openStore(wikiDir) {
80
103
  await store.addContext("raw", "/", RAW_CONTEXT);
81
104
  // Sync filesystem -> BM25 index (fast, search ready immediately)
82
105
  await store.update();
83
- // Schedule embedding in background (non-blocking).
84
- // BM25 search works immediately; hybrid search improves once embed completes.
85
- // Suppress console.error from qmd's internal embed failures.
86
- const origError = console.error;
87
- const embedPromise = store.embed().then(() => {
88
- pendingEmbeds.delete(store);
89
- }).catch(() => {
90
- // Embedding failures are non-fatal — hybrid search degrades to BM25
91
- pendingEmbeds.delete(store);
92
- }).finally(() => {
93
- console.error = origError;
94
- });
95
- // Temporarily suppress embed error noise during background embed
96
- console.error = (...args) => {
97
- const msg = String(args[0] ?? "");
98
- if (msg.includes("embed error") || msg.includes("fetch failed"))
99
- return;
100
- origError(...args);
101
- };
102
- pendingEmbeds.set(store, embedPromise);
106
+ if (opts.backgroundEmbed !== false && opts.paraConfig?.qmd.embedEnabled !== false) {
107
+ // Schedule embedding in background (non-blocking).
108
+ // BM25 search works immediately; hybrid search improves once embed completes.
109
+ // Suppress console.error from qmd's internal embed failures.
110
+ const origError = console.error;
111
+ const embedPromise = store.embed().then(() => {
112
+ pendingEmbeds.delete(store);
113
+ }).catch(() => {
114
+ // Embedding failures are non-fatal — hybrid search degrades to BM25
115
+ pendingEmbeds.delete(store);
116
+ }).finally(() => {
117
+ console.error = origError;
118
+ });
119
+ // Temporarily suppress embed error noise during background embed
120
+ console.error = (...args) => {
121
+ const msg = String(args[0] ?? "");
122
+ if (msg.includes("embed error") || msg.includes("fetch failed"))
123
+ return;
124
+ origError(...args);
125
+ };
126
+ pendingEmbeds.set(store, embedPromise);
127
+ }
103
128
  return store;
104
129
  }
105
130
  /**
@@ -109,7 +134,10 @@ export async function closeStore(store) {
109
134
  const pending = pendingEmbeds.get(store);
110
135
  if (pending) {
111
136
  // Wait for pending embed with a short timeout — don't hang forever
112
- const timeout = new Promise((resolve) => setTimeout(resolve, 5_000));
137
+ const timeout = new Promise((resolve) => {
138
+ const timer = setTimeout(resolve, 5_000);
139
+ timer.unref?.();
140
+ });
113
141
  await Promise.race([pending, timeout]);
114
142
  pendingEmbeds.delete(store);
115
143
  }
@@ -118,8 +146,9 @@ export async function closeStore(store) {
118
146
  /**
119
147
  * Search the wiki with scope and category filtering.
120
148
  *
121
- * Uses BM25 search (searchLex) which requires no LLM. Each result's
122
- * frontmatter is parsed to apply scope/category/archive filters.
149
+ * Uses vector search when an embedding index is available, merged with BM25
150
+ * lexical search for exact keyword matches. Each result's frontmatter is parsed
151
+ * to apply scope/category/archive filters.
123
152
  */
124
153
  export async function searchWiki(store, query, opts) {
125
154
  const limit = opts.limit ?? 10;
@@ -135,12 +164,13 @@ export async function searchWiki(store, query, opts) {
135
164
  metadata.category = opts.category;
136
165
  }
137
166
  const fetchLimit = opts.scope ? limit * 3 : limit;
138
- const rawResults = await store.searchLex(query, {
167
+ const lexResults = await store.searchLex(query, {
139
168
  limit: fetchLimit,
140
169
  collection: "wiki",
141
170
  metadata: Object.keys(metadata).length > 0 ? metadata : undefined,
142
171
  graphBoost: opts.graphBoost ?? true,
143
172
  });
173
+ const rawResults = await mergeLexAndVectorResults(store, query, lexResults, fetchLimit);
144
174
  const results = [];
145
175
  for (const result of rawResults) {
146
176
  // Parse category and slug from the display path (e.g. "projects/auth-refactor.md")
@@ -167,7 +197,7 @@ export async function searchWiki(store, query, opts) {
167
197
  page: {
168
198
  category,
169
199
  slug,
170
- title: frontmatter.title || result.title,
200
+ title: frontmatter.title || result.title || slug,
171
201
  path: `${category}/${slug}.md`,
172
202
  },
173
203
  score: result.score,
@@ -179,6 +209,31 @@ export async function searchWiki(store, query, opts) {
179
209
  }
180
210
  return results;
181
211
  }
212
+ async function mergeLexAndVectorResults(store, query, lexResults, limit) {
213
+ let vecResults = [];
214
+ try {
215
+ const status = await store.getStatus();
216
+ const llm = store.internal.llm;
217
+ const embedModel = llm?.embedModelName;
218
+ if (status.hasVectorIndex && llm && embedModel) {
219
+ vecResults = await store.internal.searchVec(query, embedModel, limit, "wiki", llm);
220
+ }
221
+ }
222
+ catch {
223
+ // Semantic search is best-effort; lexical BM25 remains the reliable fallback.
224
+ }
225
+ const merged = new Map();
226
+ for (const result of lexResults) {
227
+ merged.set(result.displayPath, { ...result, score: result.score * 0.85 });
228
+ }
229
+ for (const result of vecResults) {
230
+ const existing = merged.get(result.displayPath);
231
+ if (!existing || result.score > existing.score) {
232
+ merged.set(result.displayPath, result);
233
+ }
234
+ }
235
+ return [...merged.values()].sort((a, b) => b.score - a.score).slice(0, limit * 2);
236
+ }
182
237
  /**
183
238
  * Re-index the store (fast filesystem scan). Makes new/changed
184
239
  * content BM25-searchable immediately. Call after wiki writes.
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ export interface SummarizeOptions {
27
27
  * (bashExecution, compactionSummary, branchSummary, etc.). Falls back to
28
28
  * a compatible reimplementation for plain user/assistant/toolResult messages.
29
29
  *
30
- * @param messages - AgentMessage[] from @mariozechner/pi-agent-core
30
+ * @param messages - AgentMessage[] from @earendil-works/pi-agent-core
31
31
  * @returns Serialized text in [User]: / [Assistant]: / [Tool result]: format
32
32
  */
33
33
  export declare function serializeSessionForWiki(messages: unknown[]): string;
@@ -52,5 +52,9 @@ export declare function generateSummary(content: string, options: SummarizeOptio
52
52
  * @param scope - Current project scope for context
53
53
  * @returns Prompt string for the LLM
54
54
  */
55
- export declare function generateOverviewPrompt(pages: WikiPage[], scope: ProjectScope): string;
55
+ export interface OverviewPromptOptions {
56
+ depth?: "brief" | "detailed";
57
+ maxChars?: number;
58
+ }
59
+ export declare function generateOverviewPrompt(pages: WikiPage[], scope: ProjectScope, options?: OverviewPromptOptions): string;
56
60
  //# sourceMappingURL=summarize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../src/summarize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAc/C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAuGD;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,OAAO,EAAE,GAClB,MAAM,CAYR;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,GACxB,MAAM,CA2DR;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,QAAQ,EAAE,EACjB,KAAK,EAAE,YAAY,GAClB,MAAM,CAqBR"}
1
+ {"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../src/summarize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAc/C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAuGD;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,OAAO,EAAE,GAClB,MAAM,CAYR;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,GACxB,MAAM,CA2DR;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,QAAQ,EAAE,EACjB,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAgCR"}
package/dist/summarize.js CHANGED
@@ -9,7 +9,7 @@
9
9
  * Functions here generate prompt strings — they do NOT call the LLM.
10
10
  * The caller (capture.ts, tools.ts) passes the prompt to a standalone Agent.
11
11
  */
12
- import { convertToLlm, serializeConversation, } from "@mariozechner/pi-coding-agent";
12
+ import { convertToLlm, serializeConversation, } from "@earendil-works/pi-coding-agent";
13
13
  import { SUMMARIZE_SYSTEM_PROMPT, ITERATIVE_UPDATE_PROMPT, OVERVIEW_PROMPT, CAPTURE_PROMPT, } from "./templates/prompts.js";
14
14
  // -- Constants ---------------------------------------------------------------
15
15
  /** Maximum characters for a tool result in serialized output. */
@@ -45,7 +45,7 @@ function extractTextContent(content) {
45
45
  }
46
46
  /**
47
47
  * Fallback serialization that mirrors pi's serializeConversation format.
48
- * Used when @mariozechner/pi-coding-agent is not available.
48
+ * Used when @earendil-works/pi-coding-agent is not available.
49
49
  *
50
50
  * Formats: [User]:, [Assistant]:, [Assistant thinking]:,
51
51
  * [Assistant tool calls]:, [Tool result]:
@@ -115,7 +115,7 @@ function serializeMessagesFallback(messages) {
115
115
  * (bashExecution, compactionSummary, branchSummary, etc.). Falls back to
116
116
  * a compatible reimplementation for plain user/assistant/toolResult messages.
117
117
  *
118
- * @param messages - AgentMessage[] from @mariozechner/pi-agent-core
118
+ * @param messages - AgentMessage[] from @earendil-works/pi-agent-core
119
119
  * @returns Serialized text in [User]: / [Assistant]: / [Tool result]: format
120
120
  */
121
121
  export function serializeSessionForWiki(messages) {
@@ -198,34 +198,69 @@ export function generateSummary(content, options) {
198
198
  ].join("\n");
199
199
  }
200
200
  }
201
- /**
202
- * Generate an overview prompt from multiple wiki pages.
203
- *
204
- * Used by /wiki-summarize and wiki_summarize tool to produce high-level
205
- * overviews of a category or the entire wiki.
206
- *
207
- * @param pages - Wiki pages to summarize
208
- * @param scope - Current project scope for context
209
- * @returns Prompt string for the LLM
210
- */
211
- export function generateOverviewPrompt(pages, scope) {
201
+ const DEFAULT_BRIEF_OVERVIEW_MAX_CHARS = 28_000;
202
+ const DEFAULT_DETAILED_OVERVIEW_MAX_CHARS = 80_000;
203
+ const BRIEF_EXCERPT_CHARS = 180;
204
+ const DETAILED_BODY_CHARS = 2_000;
205
+ export function generateOverviewPrompt(pages, scope, options = {}) {
206
+ const depth = options.depth ?? "brief";
207
+ const maxChars = options.maxChars ?? (depth === "detailed" ? DEFAULT_DETAILED_OVERVIEW_MAX_CHARS : DEFAULT_BRIEF_OVERVIEW_MAX_CHARS);
212
208
  const scopeInfo = `Current scope: ${scope.name} (tags: ${scope.include.join(", ")})`;
213
- const pageEntries = pages.map((page) => {
214
- const fm = page.frontmatter;
215
- return [
216
- `### ${fm.title} (${page.category}/${page.slug})`,
217
- `PARA: ${fm.para} | Scope: ${fm.scope.join(", ")} | Tags: ${fm.tags.join(", ")}`,
218
- "",
219
- page.body,
220
- ].join("\n");
221
- });
222
- return [
209
+ const header = [
223
210
  OVERVIEW_PROMPT,
224
211
  "",
225
212
  scopeInfo,
226
213
  `Total pages: ${pages.length}`,
214
+ `Input mode: ${depth === "detailed" ? "bounded detailed excerpts" : "compact metadata/excerpts"}`,
227
215
  "",
228
- ...pageEntries,
229
216
  ].join("\n");
217
+ const entries = [];
218
+ let usedChars = header.length;
219
+ let omitted = 0;
220
+ for (const page of pages) {
221
+ const entry = depth === "detailed" ? detailedPageEntry(page) : briefPageEntry(page);
222
+ if (usedChars + entry.length + 2 > maxChars) {
223
+ omitted++;
224
+ continue;
225
+ }
226
+ entries.push(entry);
227
+ usedChars += entry.length + 2;
228
+ }
229
+ const omittedNote = omitted > 0
230
+ ? `\n\n[${omitted} page(s) omitted to keep wiki_summarize within the context budget. Use a category, page path, or depth=\"detailed\" on a narrower target for more detail.]`
231
+ : "";
232
+ return `${header}${entries.join("\n\n")}${omittedNote}`;
233
+ }
234
+ function briefPageEntry(page) {
235
+ const fm = page.frontmatter;
236
+ const excerpt = firstUsefulExcerpt(page.body, BRIEF_EXCERPT_CHARS);
237
+ return [
238
+ `- ${fm.title} (${page.category}/${page.slug})`,
239
+ ` PARA: ${fm.para} | Scope: ${fm.scope.join(", ")} | Tags: ${fm.tags.join(", ") || "-"} | Updated: ${fm.updated ?? "-"}`,
240
+ excerpt ? ` Excerpt: ${excerpt}` : undefined,
241
+ fm.links?.length ? ` Links: ${fm.links.slice(0, 8).map((link) => `[[${link}]]`).join(", ")}` : undefined,
242
+ ].filter(Boolean).join("\n");
243
+ }
244
+ function detailedPageEntry(page) {
245
+ const fm = page.frontmatter;
246
+ return [
247
+ `### ${fm.title} (${page.category}/${page.slug})`,
248
+ `PARA: ${fm.para} | Scope: ${fm.scope.join(", ")} | Tags: ${fm.tags.join(", ")}`,
249
+ `Updated: ${fm.updated ?? "-"} | Links: ${(fm.links ?? []).slice(0, 12).map((link) => `[[${link}]]`).join(", ") || "-"}`,
250
+ "",
251
+ truncateForSummary(page.body, DETAILED_BODY_CHARS),
252
+ ].join("\n");
253
+ }
254
+ function firstUsefulExcerpt(body, maxChars) {
255
+ const cleaned = body
256
+ .split(/\r?\n/)
257
+ .map((line) => line.trim())
258
+ .filter((line) => line && !line.startsWith("#") && !/^[-*]\s*\[?\[?/.test(line))
259
+ .join(" ")
260
+ .replace(/\s+/g, " ")
261
+ .trim();
262
+ if (!cleaned)
263
+ return "";
264
+ return cleaned.length <= maxChars ? cleaned : `${cleaned.slice(0, maxChars - 1)}…`;
230
265
  }
231
266
  //# sourceMappingURL=summarize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"summarize.js","sourceRoot":"","sources":["../src/summarize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"summarize.js","sourceRoot":"","sources":["../src/summarize.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ export declare const INGEST_PROMPT = "Analyze the source content below and integ
26
26
  /**
27
27
  * Prompt sent when the LLM synthesizes an answer from wiki search results.
28
28
  */
29
- export declare const QUERY_PROMPT = "Read the retrieved wiki pages below and synthesize an answer to the user's question.\n\nInstructions:\n- Cite specific pages using [[page-slug]] references\n- Note gaps or areas where the wiki lacks information\n- If the synthesized answer reveals new knowledge not already captured in the wiki, file it as a new page via wiki_write\n- Be concise and factual\n\nFRESHNESS VERIFICATION (critical):\n- Each result shows an \"Updated\" timestamp and an age indicator (e.g. \"\u26A0\uFE0F STALE \u2014 45 days old\"). Treat pages not updated in >14 days with healthy skepticism.\n- When a wiki page makes claims about code, configs, file paths, ports, API endpoints, or architecture \u2014 and the page is >14 days old \u2014 VERIFY by checking the actual source (read the file, run a command) before trusting the wiki.\n- When you discover a wiki page contains outdated or incorrect information, IMMEDIATELY fix it with wiki_write(mode: \"edit\") so future queries get correct answers. This is the self-healing loop.\n- If you cannot verify a claim (e.g. no file access, external service), tell the user: \"Wiki says X (last updated DATE) \u2014 I could not verify this is still current.\"\n- Never silently pass along stale wiki content as fact. Either verify it or flag it.";
29
+ export declare const QUERY_PROMPT = "Read the retrieved wiki pages below and synthesize an answer to the user's question.\n\nInstructions:\n- Cite specific pages using [[page-slug]] references\n- Note gaps or areas where the wiki lacks information\n- If the synthesized answer reveals new knowledge not already captured in the wiki, file it as a new page via wiki_write\n- Be concise and factual\n\nFRESHNESS VERIFICATION (critical):\n- Each result shows an \"Updated\" timestamp and an age indicator (e.g. \"\u26A0\uFE0F STALE \u2014 45 days old\"). Treat pages not updated in >14 days with healthy skepticism.\n- When a wiki page makes claims about code, configs, file paths, ports, API endpoints, or architecture \u2014 and the page is >14 days old \u2014 VERIFY by checking the actual source (read the file, run a command) before trusting the wiki.\n- When you discover a wiki page contains outdated or incorrect information, IMMEDIATELY fix it with wiki_edit so future queries get correct answers. This is the self-healing loop.\n- If you cannot verify a claim (e.g. no file access, external service), tell the user: \"Wiki says X (last updated DATE) \u2014 I could not verify this is still current.\"\n- Never silently pass along stale wiki content as fact. Either verify it or flag it.";
30
30
  /**
31
31
  * System prompt for summarization — produces structured wiki pages from content.
32
32
  * Mirrors pi's SUMMARIZATION_SYSTEM_PROMPT but outputs wiki format.
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/templates/prompts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwB9C;AAmBD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,4vDAuBsF,CAAC;AAItH;;;GAGG;AACH,eAAO,MAAM,aAAa,i+CAqBqE,CAAC;AAIhG;;GAEG;AACH,eAAO,MAAM,YAAY,6vCAa4D,CAAC;AAItF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,gpBAoBY,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,siBASmB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,eAAe,uWAM+B,CAAC;AAI5D;;GAEG;AACH,eAAO,MAAM,WAAW,ilBAW6B,CAAC;AAItD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,8nEA2B4F,CAAC;AAE/H;;;GAGG;AACH,eAAO,MAAM,cAAc,48BAgB1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,8DAA8D,CAAC"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/templates/prompts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwB9C;AAmBD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,4vDAuBsF,CAAC;AAItH;;;GAGG;AACH,eAAO,MAAM,aAAa,i+CAqBqE,CAAC;AAIhG;;GAEG;AACH,eAAO,MAAM,YAAY,4uCAa4D,CAAC;AAItF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,gpBAoBY,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,siBASmB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,eAAe,uWAM+B,CAAC;AAI5D;;GAEG;AACH,eAAO,MAAM,WAAW,ilBAW6B,CAAC;AAItD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,8nEA2B4F,CAAC;AAE/H;;;GAGG;AACH,eAAO,MAAM,cAAc,48BAgB1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,8DAA8D,CAAC"}
@@ -129,7 +129,7 @@ Instructions:
129
129
  FRESHNESS VERIFICATION (critical):
130
130
  - Each result shows an "Updated" timestamp and an age indicator (e.g. "⚠️ STALE — 45 days old"). Treat pages not updated in >14 days with healthy skepticism.
131
131
  - When a wiki page makes claims about code, configs, file paths, ports, API endpoints, or architecture — and the page is >14 days old — VERIFY by checking the actual source (read the file, run a command) before trusting the wiki.
132
- - When you discover a wiki page contains outdated or incorrect information, IMMEDIATELY fix it with wiki_write(mode: "edit") so future queries get correct answers. This is the self-healing loop.
132
+ - When you discover a wiki page contains outdated or incorrect information, IMMEDIATELY fix it with wiki_edit so future queries get correct answers. This is the self-healing loop.
133
133
  - If you cannot verify a claim (e.g. no file access, external service), tell the user: "Wiki says X (last updated DATE) — I could not verify this is still current."
134
134
  - Never silently pass along stale wiki content as fact. Either verify it or flag it.`;
135
135
  // -- Summarize Prompts -------------------------------------------------------
package/dist/tools.d.ts CHANGED
@@ -6,21 +6,21 @@
6
6
  *
7
7
  * Factory functions (createXxxExecute) close over wikiDir and store — no ctx dependency.
8
8
  */
9
- import type { AgentTool } from "@mariozechner/pi-agent-core";
10
- import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
11
- import type { QMDStore } from "@picassio/qmd";
9
+ import type { AgentTool } from "@earendil-works/pi-agent-core";
10
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
11
+ import type { QMDStore } from "qmd-engine";
12
12
  import type { ProjectScope } from "./scope.js";
13
13
  /**
14
14
  * Register all wiki tools with the pi extension API.
15
15
  *
16
- * Tools: wiki_ingest, wiki_query, wiki_write, wiki_read,
16
+ * Tools: wiki_ingest, wiki_query, wiki_write, wiki_edit, wiki_read,
17
17
  * wiki_move, wiki_lint, wiki_summarize
18
18
  */
19
19
  export declare function registerTools(pi: ExtensionAPI, wikiDir: string, store: QMDStore, getScope: () => ProjectScope, markDirty: () => void, getGraphBoost?: () => boolean): void;
20
20
  /**
21
21
  * Create standalone AgentTool instances for the mini-agent (capture/lint/summarize).
22
22
  * Returns only the tools needed for autonomous wiki operations:
23
- * wiki_write, wiki_read, wiki_query, wiki_move.
23
+ * wiki_write, wiki_edit, wiki_read, wiki_query, wiki_move.
24
24
  */
25
25
  export declare function createStandaloneTools(wikiDir: string, store: QMDStore, getScope: () => ProjectScope, markDirty?: () => void): AgentTool[];
26
26
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,6BAA6B,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAi1B/C;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,MAAM,YAAY,EAC5B,SAAS,EAAE,MAAM,IAAI,EACrB,aAAa,CAAC,EAAE,MAAM,OAAO,GAC5B,IAAI,CA4VN;AAID;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,MAAM,YAAY,EAC5B,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,SAAS,EAAE,CA4Cb"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsgC/C;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,MAAM,YAAY,EAC5B,SAAS,EAAE,MAAM,IAAI,EACrB,aAAa,CAAC,EAAE,MAAM,OAAO,GAC5B,IAAI,CAgWN;AAID;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,MAAM,YAAY,EAC5B,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,SAAS,EAAE,CAiDb"}