@loreai/core 0.15.0 → 0.17.0

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 (155) hide show
  1. package/README.md +11 -0
  2. package/dist/bun/agents-file.d.ts +13 -1
  3. package/dist/bun/agents-file.d.ts.map +1 -1
  4. package/dist/bun/config.d.ts +20 -1
  5. package/dist/bun/config.d.ts.map +1 -1
  6. package/dist/bun/data.d.ts +174 -0
  7. package/dist/bun/data.d.ts.map +1 -0
  8. package/dist/bun/db.d.ts +65 -0
  9. package/dist/bun/db.d.ts.map +1 -1
  10. package/dist/bun/distillation.d.ts +49 -6
  11. package/dist/bun/distillation.d.ts.map +1 -1
  12. package/dist/bun/embedding-vendor.d.ts +66 -0
  13. package/dist/bun/embedding-vendor.d.ts.map +1 -0
  14. package/dist/bun/embedding-worker-types.d.ts +66 -0
  15. package/dist/bun/embedding-worker-types.d.ts.map +1 -0
  16. package/dist/bun/embedding-worker.d.ts +16 -0
  17. package/dist/bun/embedding-worker.d.ts.map +1 -0
  18. package/dist/bun/embedding-worker.js +100 -0
  19. package/dist/bun/embedding-worker.js.map +7 -0
  20. package/dist/bun/embedding.d.ts +91 -8
  21. package/dist/bun/embedding.d.ts.map +1 -1
  22. package/dist/bun/git.d.ts +47 -0
  23. package/dist/bun/git.d.ts.map +1 -0
  24. package/dist/bun/gradient.d.ts +19 -1
  25. package/dist/bun/gradient.d.ts.map +1 -1
  26. package/dist/bun/index.d.ts +9 -6
  27. package/dist/bun/index.d.ts.map +1 -1
  28. package/dist/bun/index.js +13205 -11259
  29. package/dist/bun/index.js.map +4 -4
  30. package/dist/bun/lat-reader.d.ts +1 -1
  31. package/dist/bun/lat-reader.d.ts.map +1 -1
  32. package/dist/bun/ltm.d.ts.map +1 -1
  33. package/dist/bun/markdown.d.ts +11 -0
  34. package/dist/bun/markdown.d.ts.map +1 -1
  35. package/dist/bun/prompt.d.ts +1 -1
  36. package/dist/bun/prompt.d.ts.map +1 -1
  37. package/dist/bun/recall.d.ts +53 -0
  38. package/dist/bun/recall.d.ts.map +1 -1
  39. package/dist/bun/search.d.ts +29 -0
  40. package/dist/bun/search.d.ts.map +1 -1
  41. package/dist/bun/temporal.d.ts +2 -0
  42. package/dist/bun/temporal.d.ts.map +1 -1
  43. package/dist/bun/types.d.ts +15 -0
  44. package/dist/bun/types.d.ts.map +1 -1
  45. package/dist/bun/worker-model.d.ts +15 -80
  46. package/dist/bun/worker-model.d.ts.map +1 -1
  47. package/dist/node/agents-file.d.ts +13 -1
  48. package/dist/node/agents-file.d.ts.map +1 -1
  49. package/dist/node/config.d.ts +20 -1
  50. package/dist/node/config.d.ts.map +1 -1
  51. package/dist/node/data.d.ts +174 -0
  52. package/dist/node/data.d.ts.map +1 -0
  53. package/dist/node/db.d.ts +65 -0
  54. package/dist/node/db.d.ts.map +1 -1
  55. package/dist/node/distillation.d.ts +49 -6
  56. package/dist/node/distillation.d.ts.map +1 -1
  57. package/dist/node/embedding-vendor.d.ts +66 -0
  58. package/dist/node/embedding-vendor.d.ts.map +1 -0
  59. package/dist/node/embedding-worker-types.d.ts +66 -0
  60. package/dist/node/embedding-worker-types.d.ts.map +1 -0
  61. package/dist/node/embedding-worker.d.ts +16 -0
  62. package/dist/node/embedding-worker.d.ts.map +1 -0
  63. package/dist/node/embedding-worker.js +100 -0
  64. package/dist/node/embedding-worker.js.map +7 -0
  65. package/dist/node/embedding.d.ts +91 -8
  66. package/dist/node/embedding.d.ts.map +1 -1
  67. package/dist/node/git.d.ts +47 -0
  68. package/dist/node/git.d.ts.map +1 -0
  69. package/dist/node/gradient.d.ts +19 -1
  70. package/dist/node/gradient.d.ts.map +1 -1
  71. package/dist/node/index.d.ts +9 -6
  72. package/dist/node/index.d.ts.map +1 -1
  73. package/dist/node/index.js +13205 -11259
  74. package/dist/node/index.js.map +4 -4
  75. package/dist/node/lat-reader.d.ts +1 -1
  76. package/dist/node/lat-reader.d.ts.map +1 -1
  77. package/dist/node/ltm.d.ts.map +1 -1
  78. package/dist/node/markdown.d.ts +11 -0
  79. package/dist/node/markdown.d.ts.map +1 -1
  80. package/dist/node/prompt.d.ts +1 -1
  81. package/dist/node/prompt.d.ts.map +1 -1
  82. package/dist/node/recall.d.ts +53 -0
  83. package/dist/node/recall.d.ts.map +1 -1
  84. package/dist/node/search.d.ts +29 -0
  85. package/dist/node/search.d.ts.map +1 -1
  86. package/dist/node/temporal.d.ts +2 -0
  87. package/dist/node/temporal.d.ts.map +1 -1
  88. package/dist/node/types.d.ts +15 -0
  89. package/dist/node/types.d.ts.map +1 -1
  90. package/dist/node/worker-model.d.ts +15 -80
  91. package/dist/node/worker-model.d.ts.map +1 -1
  92. package/dist/types/agents-file.d.ts +13 -1
  93. package/dist/types/agents-file.d.ts.map +1 -1
  94. package/dist/types/config.d.ts +20 -1
  95. package/dist/types/config.d.ts.map +1 -1
  96. package/dist/types/data.d.ts +174 -0
  97. package/dist/types/data.d.ts.map +1 -0
  98. package/dist/types/db.d.ts +65 -0
  99. package/dist/types/db.d.ts.map +1 -1
  100. package/dist/types/distillation.d.ts +49 -6
  101. package/dist/types/distillation.d.ts.map +1 -1
  102. package/dist/types/embedding-vendor.d.ts +66 -0
  103. package/dist/types/embedding-vendor.d.ts.map +1 -0
  104. package/dist/types/embedding-worker-types.d.ts +66 -0
  105. package/dist/types/embedding-worker-types.d.ts.map +1 -0
  106. package/dist/types/embedding-worker.d.ts +16 -0
  107. package/dist/types/embedding-worker.d.ts.map +1 -0
  108. package/dist/types/embedding.d.ts +91 -8
  109. package/dist/types/embedding.d.ts.map +1 -1
  110. package/dist/types/git.d.ts +47 -0
  111. package/dist/types/git.d.ts.map +1 -0
  112. package/dist/types/gradient.d.ts +19 -1
  113. package/dist/types/gradient.d.ts.map +1 -1
  114. package/dist/types/index.d.ts +9 -6
  115. package/dist/types/index.d.ts.map +1 -1
  116. package/dist/types/lat-reader.d.ts +1 -1
  117. package/dist/types/lat-reader.d.ts.map +1 -1
  118. package/dist/types/ltm.d.ts.map +1 -1
  119. package/dist/types/markdown.d.ts +11 -0
  120. package/dist/types/markdown.d.ts.map +1 -1
  121. package/dist/types/prompt.d.ts +1 -1
  122. package/dist/types/prompt.d.ts.map +1 -1
  123. package/dist/types/recall.d.ts +53 -0
  124. package/dist/types/recall.d.ts.map +1 -1
  125. package/dist/types/search.d.ts +29 -0
  126. package/dist/types/search.d.ts.map +1 -1
  127. package/dist/types/temporal.d.ts +2 -0
  128. package/dist/types/temporal.d.ts.map +1 -1
  129. package/dist/types/types.d.ts +15 -0
  130. package/dist/types/types.d.ts.map +1 -1
  131. package/dist/types/worker-model.d.ts +15 -80
  132. package/dist/types/worker-model.d.ts.map +1 -1
  133. package/package.json +5 -2
  134. package/src/agents-file.ts +87 -4
  135. package/src/config.ts +68 -5
  136. package/src/curator.ts +2 -2
  137. package/src/data.ts +768 -0
  138. package/src/db.ts +386 -7
  139. package/src/distillation.ts +178 -35
  140. package/src/embedding-vendor.ts +102 -0
  141. package/src/embedding-worker-types.ts +82 -0
  142. package/src/embedding-worker.ts +185 -0
  143. package/src/embedding.ts +607 -61
  144. package/src/git.ts +144 -0
  145. package/src/gradient.ts +174 -17
  146. package/src/index.ts +20 -0
  147. package/src/lat-reader.ts +5 -11
  148. package/src/ltm.ts +17 -44
  149. package/src/markdown.ts +15 -0
  150. package/src/prompt.ts +1 -2
  151. package/src/recall.ts +401 -70
  152. package/src/search.ts +71 -1
  153. package/src/temporal.ts +42 -35
  154. package/src/types.ts +15 -0
  155. package/src/worker-model.ts +17 -363
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/embedding-worker.ts"],
4
+ "sourcesContent": ["/**\n * Embedding worker thread \u2014 runs fastembed/ONNX inference off the main thread.\n *\n * This file is the entry point for a `node:worker_threads` Worker spawned by\n * `LocalProvider` in `embedding.ts`. It owns the `FlagEmbedding` ONNX model\n * and processes embed requests sequentially from a priority queue. Moving\n * inference here keeps the main thread's event loop free \u2014 HTTP requests,\n * SSE streams, and session APIs are no longer blocked during embedding.\n *\n * Communication uses `parentPort` message passing with structured clone.\n * Float32Array vectors are sent back directly (Bun preserves identity).\n *\n * @see embedding-worker-types.ts for the message protocol.\n */\n\nimport { parentPort, workerData } from \"node:worker_threads\";\nimport type {\n WorkerInbound,\n WorkerOutbound,\n WorkerInitData,\n EmbedRequest,\n} from \"./embedding-worker-types\";\n\n// ---------------------------------------------------------------------------\n// workerData\n// ---------------------------------------------------------------------------\n\nconst { modelName, vendorModel } = workerData as WorkerInitData;\n\n// ---------------------------------------------------------------------------\n// Model lifecycle \u2014 lazy init on first embed request\n// ---------------------------------------------------------------------------\n\n/** The fastembed model, typed to the subset of methods we use. */\ntype FastembedModel = {\n queryEmbed(text: string): Promise<number[]>;\n passageEmbed(texts: string[], batchSize?: number): AsyncGenerator<number[][]>;\n};\n\nlet model: FastembedModel | null = null;\nlet initPromise: Promise<void> | null = null;\nlet initFailed = false;\nlet initError: string | null = null;\n\n/**\n * Ensure the fastembed model is loaded. Lazy \u2014 first call triggers the\n * dynamic import + FlagEmbedding.init(), subsequent calls return immediately.\n * On failure, marks the worker as permanently broken and posts `init-error`.\n */\nasync function ensureModel(): Promise<FastembedModel> {\n if (model) return model;\n if (initFailed) throw new Error(initError ?? \"fastembed init previously failed\");\n\n if (!initPromise) {\n initPromise = (async () => {\n const fastembed = await import(\"fastembed\");\n const { EmbeddingModel, FlagEmbedding } = fastembed;\n\n let m: unknown;\n if (vendorModel) {\n // Binary mode: use pre-extracted model files.\n m = await FlagEmbedding.init({\n model: EmbeddingModel.CUSTOM,\n modelAbsoluteDirPath: vendorModel.modelAbsoluteDirPath,\n modelName: vendorModel.modelName,\n });\n } else {\n // npm mode: resolve model name against fastembed's enum.\n const enumValue = (EmbeddingModel as Record<string, string>)[modelName];\n m = await FlagEmbedding.init({\n model: enumValue ?? modelName,\n } as { model: typeof EmbeddingModel.BGESmallENV15 });\n }\n model = m as FastembedModel;\n })().catch((err) => {\n initFailed = true;\n initError = err instanceof Error ? err.message : String(err);\n initPromise = null;\n // Notify main thread \u2014 all pending + future requests should fail.\n post({ type: \"init-error\", error: initError });\n throw err;\n });\n }\n\n await initPromise;\n if (!model) throw new Error(\"model init completed but model is null\");\n return model;\n}\n\n// ---------------------------------------------------------------------------\n// Priority queue \u2014 high-priority (recall) jumps ahead of normal (backfill)\n// ---------------------------------------------------------------------------\n\nconst queue: EmbedRequest[] = [];\nlet processing = false;\n\n/**\n * Enqueue an embed request. High-priority requests are inserted after any\n * existing high-priority items but before all normal-priority items (FIFO\n * within each priority level). Triggers drain if not already running.\n */\nfunction enqueue(msg: EmbedRequest): void {\n if (msg.priority === \"high\") {\n // Insert after the last \"high\" item \u2014 keeps FIFO within high priority.\n let insertAt = 0;\n while (insertAt < queue.length && queue[insertAt].priority === \"high\") {\n insertAt++;\n }\n queue.splice(insertAt, 0, msg);\n } else {\n queue.push(msg);\n }\n drain();\n}\n\n/**\n * Process queued requests one at a time. ONNX inference is synchronous\n * inside the NAPI call, so parallelism within the worker buys nothing.\n * The queue gives us a natural point to interleave high-priority requests\n * between normal-priority batches.\n */\nasync function drain(): Promise<void> {\n if (processing) return;\n processing = true;\n\n while (queue.length > 0) {\n const req = queue.shift()!;\n await processEmbed(req);\n }\n\n processing = false;\n}\n\n// ---------------------------------------------------------------------------\n// Embed processing\n// ---------------------------------------------------------------------------\n\nasync function processEmbed(req: EmbedRequest): Promise<void> {\n try {\n const m = await ensureModel();\n\n let vectors: Float32Array[];\n\n if (req.inputType === \"query\" && req.texts.length === 1) {\n // Single query \u2014 use queryEmbed for better quality.\n const vec = await m.queryEmbed(req.texts[0]);\n vectors = [new Float32Array(vec)];\n } else {\n // Batch document embedding via async generator.\n vectors = [];\n for await (const batch of m.passageEmbed(req.texts)) {\n for (const vec of batch) {\n vectors.push(new Float32Array(vec));\n }\n }\n }\n\n post({ type: \"result\", id: req.id, vectors });\n } catch (err) {\n // Don't re-post init-error \u2014 it was already sent in ensureModel().\n if (!initFailed) {\n const msg = err instanceof Error ? err.message : String(err);\n post({ type: \"error\", id: req.id, error: msg });\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Message handling\n// ---------------------------------------------------------------------------\n\nfunction post(msg: WorkerOutbound): void {\n parentPort!.postMessage(msg);\n}\n\nparentPort!.on(\"message\", (msg: WorkerInbound) => {\n switch (msg.type) {\n case \"embed\":\n enqueue(msg);\n break;\n case \"shutdown\":\n process.exit(0);\n break;\n }\n});\n"],
5
+ "mappings": ";AAeA,SAAS,YAAY,kBAAkB;AAYvC,IAAM,EAAE,WAAW,YAAY,IAAI;AAYnC,IAAI,QAA+B;AACnC,IAAI,cAAoC;AACxC,IAAI,aAAa;AACjB,IAAI,YAA2B;AAO/B,eAAe,cAAuC;AACpD,MAAI,MAAO,QAAO;AAClB,MAAI,WAAY,OAAM,IAAI,MAAM,aAAa,kCAAkC;AAE/E,MAAI,CAAC,aAAa;AAChB,mBAAe,YAAY;AACzB,YAAM,YAAY,MAAM,OAAO,WAAW;AAC1C,YAAM,EAAE,gBAAgB,cAAc,IAAI;AAE1C,UAAI;AACJ,UAAI,aAAa;AAEf,YAAI,MAAM,cAAc,KAAK;AAAA,UAC3B,OAAO,eAAe;AAAA,UACtB,sBAAsB,YAAY;AAAA,UAClC,WAAW,YAAY;AAAA,QACzB,CAAC;AAAA,MACH,OAAO;AAEL,cAAM,YAAa,eAA0C,SAAS;AACtE,YAAI,MAAM,cAAc,KAAK;AAAA,UAC3B,OAAO,aAAa;AAAA,QACtB,CAAmD;AAAA,MACrD;AACA,cAAQ;AAAA,IACV,GAAG,EAAE,MAAM,CAAC,QAAQ;AAClB,mBAAa;AACb,kBAAY,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,oBAAc;AAEd,WAAK,EAAE,MAAM,cAAc,OAAO,UAAU,CAAC;AAC7C,YAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,QAAM;AACN,MAAI,CAAC,MAAO,OAAM,IAAI,MAAM,wCAAwC;AACpE,SAAO;AACT;AAMA,IAAM,QAAwB,CAAC;AAC/B,IAAI,aAAa;AAOjB,SAAS,QAAQ,KAAyB;AACxC,MAAI,IAAI,aAAa,QAAQ;AAE3B,QAAI,WAAW;AACf,WAAO,WAAW,MAAM,UAAU,MAAM,QAAQ,EAAE,aAAa,QAAQ;AACrE;AAAA,IACF;AACA,UAAM,OAAO,UAAU,GAAG,GAAG;AAAA,EAC/B,OAAO;AACL,UAAM,KAAK,GAAG;AAAA,EAChB;AACA,QAAM;AACR;AAQA,eAAe,QAAuB;AACpC,MAAI,WAAY;AAChB,eAAa;AAEb,SAAO,MAAM,SAAS,GAAG;AACvB,UAAM,MAAM,MAAM,MAAM;AACxB,UAAM,aAAa,GAAG;AAAA,EACxB;AAEA,eAAa;AACf;AAMA,eAAe,aAAa,KAAkC;AAC5D,MAAI;AACF,UAAM,IAAI,MAAM,YAAY;AAE5B,QAAI;AAEJ,QAAI,IAAI,cAAc,WAAW,IAAI,MAAM,WAAW,GAAG;AAEvD,YAAM,MAAM,MAAM,EAAE,WAAW,IAAI,MAAM,CAAC,CAAC;AAC3C,gBAAU,CAAC,IAAI,aAAa,GAAG,CAAC;AAAA,IAClC,OAAO;AAEL,gBAAU,CAAC;AACX,uBAAiB,SAAS,EAAE,aAAa,IAAI,KAAK,GAAG;AACnD,mBAAW,OAAO,OAAO;AACvB,kBAAQ,KAAK,IAAI,aAAa,GAAG,CAAC;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAEA,SAAK,EAAE,MAAM,UAAU,IAAI,IAAI,IAAI,QAAQ,CAAC;AAAA,EAC9C,SAAS,KAAK;AAEZ,QAAI,CAAC,YAAY;AACf,YAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,WAAK,EAAE,MAAM,SAAS,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC;AAAA,IAChD;AAAA,EACF;AACF;AAMA,SAAS,KAAK,KAA2B;AACvC,aAAY,YAAY,GAAG;AAC7B;AAEA,WAAY,GAAG,WAAW,CAAC,QAAuB;AAChD,UAAQ,IAAI,MAAM;AAAA,IAChB,KAAK;AACH,cAAQ,GAAG;AACX;AAAA,IACF,KAAK;AACH,cAAQ,KAAK,CAAC;AACd;AAAA,EACJ;AACF,CAAC;",
6
+ "names": []
7
+ }
@@ -11,19 +11,83 @@ export interface EmbeddingProvider {
11
11
  embed(texts: string[], inputType: "document" | "query"): Promise<Float32Array[]>;
12
12
  readonly maxBatchSize: number;
13
13
  }
14
- /** Reset cached provider — called when config changes. */
15
- export declare function resetProvider(): void;
14
+ /**
15
+ * Thrown when `LocalProvider` is requested but `fastembed` cannot be loaded.
16
+ * `fastembed` is an optionalDependency of `@loreai/core`: if its postinstall
17
+ * fails (e.g. CUDA 13 hits the upstream `onnxruntime-node` bug — see #185),
18
+ * the package install still succeeds but local embeddings are disabled.
19
+ * Callers in `recall.ts` / `ltm.ts` / `distillation.ts` already gate on
20
+ * `isAvailable()`, which flips to `false` after this error fires once.
21
+ */
22
+ export declare class LocalProviderUnavailableError extends Error {
23
+ constructor(cause?: unknown);
24
+ }
25
+ /** For tests: reset the fastembed probe cache. */
26
+ export declare function _resetFastembedProbe(): void;
27
+ /** For tests: simulate fastembed being unresolvable, without mocking the
28
+ * dynamic import. After this call, `tryLoadFastembed()` short-circuits to
29
+ * `null` and `isAvailable()` returns false for the local provider. */
30
+ export declare function _markFastembedUnavailable(): void;
31
+ /** Reset cached provider — called when config changes.
32
+ * Shuts down the worker thread if the current provider is a LocalProvider.
33
+ * Returns a promise that resolves once any worker has fully exited.
34
+ * Callers that need clean teardown (tests) should await the result. */
35
+ export declare function resetProvider(): Promise<void>;
36
+ /** Shut down the current provider and prevent any new provider from being
37
+ * created. After this call, `embed()` throws and `isAvailable()` returns
38
+ * false. Test-only: prevents fire-and-forget embeds (queued by other test
39
+ * files) from spawning a new worker after cleanup. */
40
+ export declare function _shutdownAndDisable(): Promise<void>;
41
+ /** Save the current cached provider reference (including the live worker)
42
+ * and clear the cache so the next `getProvider()` call creates a fresh one.
43
+ * Returns an opaque token that must be passed to `_restoreProvider()` to
44
+ * put the original provider back — without this, the worker is orphaned and
45
+ * a second ONNX load in the same Bun process will crash.
46
+ *
47
+ * Test-only helper: lets suites temporarily swap in a mock/unavailable
48
+ * provider without killing the real worker. */
49
+ export declare function _saveAndClearProvider(): unknown;
50
+ /** Restore a provider previously saved by `_saveAndClearProvider()`. Any
51
+ * provider created between save and restore is discarded (callers must
52
+ * ensure it's not a LocalProvider with a live worker — those suites only
53
+ * use `_markFastembedUnavailable()` so no worker is spawned). */
54
+ export declare function _restoreProvider(token: unknown): void;
55
+ /**
56
+ * Build a remote `EmbeddingProvider` from whichever API key is in env.
57
+ * Returns `null` when neither `VOYAGE_API_KEY` nor `OPENAI_API_KEY` is set,
58
+ * which is the signal for callers to fall through to FTS-only behaviour.
59
+ *
60
+ * Voyage wins ties because it's the higher-quality option for code search;
61
+ * users who want OpenAI specifically can pin `search.embeddings.provider`
62
+ * in `.lore.json` and skip the fallback path entirely.
63
+ */
64
+ export declare function pickRemoteFallback(): {
65
+ name: "voyage" | "openai";
66
+ provider: EmbeddingProvider;
67
+ } | null;
16
68
  /** Returns true if embedding is available.
17
69
  * Active when the configured provider's API key is set, unless explicitly
18
- * disabled via `search.embeddings.enabled: false` in .lore.json. */
70
+ * disabled via `search.embeddings.enabled: false` in .lore.json.
71
+ *
72
+ * For the `local` provider, also returns false once we've discovered the
73
+ * optional `fastembed` peer is missing — callers (recall, ltm, distillation)
74
+ * use this gate to skip embedding work and fall back to FTS-only search. */
19
75
  export declare function isAvailable(): boolean;
20
76
  /**
21
77
  * Generate embeddings for the given texts using the configured provider.
22
78
  *
79
+ * If the configured provider is `local` and `fastembed` turns out to be
80
+ * unavailable at runtime (failed install, vendor extraction blocked, etc.),
81
+ * automatically swap to a remote provider when `VOYAGE_API_KEY` or
82
+ * `OPENAI_API_KEY` is set in env. The swap is permanent for the rest of
83
+ * the process — `cachedProvider` is replaced so subsequent calls skip the
84
+ * local-then-fail path.
85
+ *
23
86
  * @param texts Array of texts to embed
24
87
  * @param inputType "document" for storage, "query" for search
25
88
  * @returns Float32Array per input text
26
- * @throws On API errors or missing provider
89
+ * @throws On API errors or when no provider (local or remote) is
90
+ * available
27
91
  */
28
92
  export declare function embed(texts: string[], inputType: "document" | "query"): Promise<Float32Array[]>;
29
93
  /**
@@ -64,6 +128,24 @@ export declare function embedKnowledgeEntry(id: string, title: string, content:
64
128
  * The distillation remains searchable via FTS even if embedding fails.
65
129
  */
66
130
  export declare function embedDistillation(id: string, observations: string): void;
131
+ /**
132
+ * Embed a temporal message and store the result in the DB.
133
+ * Fire-and-forget — errors are logged, never thrown.
134
+ * Only called for undistilled messages; once distilled, the embedding
135
+ * is NULLed (semantic content captured by distillation embedding).
136
+ */
137
+ export declare function embedTemporalMessage(id: string, content: string): void;
138
+ /**
139
+ * Search undistilled temporal messages with embeddings by cosine similarity.
140
+ * Returns top-k entries sorted by similarity descending.
141
+ *
142
+ * Only scans undistilled messages (distilled=0) — once a message is
143
+ * distilled, its semantic content is captured by the distillation
144
+ * embedding and the temporal embedding is cleared.
145
+ *
146
+ * Scoped to a single project. Optionally scoped to a single session.
147
+ */
148
+ export declare function vectorSearchTemporal(queryEmbedding: Float32Array, projectId: string, limit?: number, sessionId?: string): VectorHit[];
67
149
  /**
68
150
  * Check if embedding config has changed since the last backfill.
69
151
  * If so, clear all existing embeddings (they're incompatible) and
@@ -77,10 +159,11 @@ export declare function checkConfigChange(): boolean;
77
159
  *
78
160
  * This is the canonical entry point that every host adapter (OpenCode, Pi,
79
161
  * future ACP) should call once during init. It:
80
- * 1. Detects config changes (provider swap) and clears stale embeddings
81
- * 2. Backfills knowledge entries missing embeddings
82
- * 3. Backfills non-archived distillations missing embeddings
83
- * 4. Logs a one-line coverage summary to stderr (always visible, not gated)
162
+ * 1. Waits a short grace period so first-connect HTTP requests can finish
163
+ * 2. Detects config changes (provider swap) and clears stale embeddings
164
+ * 3. Backfills knowledge entries missing embeddings
165
+ * 4. Backfills non-archived distillations missing embeddings
166
+ * 5. Logs a one-line coverage summary to stderr (always visible, not gated)
84
167
  *
85
168
  * Fire-and-forget: callers should `.catch()` — embedding failures must not
86
169
  * block plugin initialization.
@@ -1 +1 @@
1
- {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../src/embedding.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAeH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACjF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAyPD,0DAA0D;AAC1D,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAMD;;qEAEqE;AACrE,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAMD;;;;;;;GAOG;AACH,wBAAsB,KAAK,CACzB,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,UAAU,GAAG,OAAO,GAC9B,OAAO,CAAC,YAAY,EAAE,CAAC,CAIzB;AAMD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAazE;AAMD,8DAA8D;AAC9D,wBAAgB,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAEhD;AAED,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,CAGhE;AAMD,KAAK,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,cAAc,EAAE,YAAY,EAC5B,KAAK,SAAK,GACT,SAAS,EAAE,CAcb;AAMD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,YAAY,EAC5B,KAAK,SAAK,GACT,SAAS,EAAE,CAgBb;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,IAAI,CAWN;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,GACnB,IAAI,CAUN;AAkBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAoC3C;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0CxD;AAMD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAuC1D;AAMD;;;;GAIG;AACH,wBAAsB,8BAA8B,IAAI,OAAO,CAAC,MAAM,CAAC,CAsCtE"}
1
+ {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../src/embedding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * git.ts — Git repository identification utilities.
3
+ *
4
+ * Extracts and normalizes git remote URLs to identify projects by their
5
+ * repository identity rather than filesystem path. This enables:
6
+ * - Worktree awareness: main checkout and worktrees share one project
7
+ * - Clone deduplication: same repo cloned to different paths is one project
8
+ * - Fork awareness: prefers `upstream` remote to unify forks with their source
9
+ *
10
+ * Remote URL normalization strips protocol, auth, and `.git` suffix to produce
11
+ * a stable canonical identifier (e.g. "github.com/user/repo") regardless of
12
+ * how the remote was configured (SSH, HTTPS, git://).
13
+ */
14
+ /**
15
+ * Normalize a git remote URL to a canonical form for comparison.
16
+ *
17
+ * Strips protocol, auth, `.git` suffix, and normalizes SSH ↔ HTTPS
18
+ * to produce a stable identifier regardless of how the remote was
19
+ * configured.
20
+ *
21
+ * Examples:
22
+ * git@github.com:user/repo.git → github.com/user/repo
23
+ * https://github.com/user/repo.git → github.com/user/repo
24
+ * ssh://git@github.com/user/repo → github.com/user/repo
25
+ * git://github.com/user/repo.git → github.com/user/repo
26
+ * https://user:token@github.com/user/repo → github.com/user/repo
27
+ */
28
+ export declare function normalizeRemoteUrl(url: string): string;
29
+ /**
30
+ * Clear the in-memory git remote cache.
31
+ *
32
+ * Intended for test harnesses that need deterministic behavior across
33
+ * test cases without leaking cached results.
34
+ */
35
+ export declare function clearGitRemoteCache(): void;
36
+ /**
37
+ * Get the canonical git remote URL for a repository at the given path.
38
+ *
39
+ * Prefers `upstream` remote (for forks) over `origin`, then falls back
40
+ * to any other remote. Returns null if the path is not in a git repo
41
+ * or has no remotes configured.
42
+ *
43
+ * Results are cached in-memory for the process lifetime to avoid repeated
44
+ * subprocess calls — `git remote -v` only runs once per unique path.
45
+ */
46
+ export declare function getGitRemote(path: string): string | null;
47
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA6BtD;AAaD;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA+CxD"}
@@ -1,5 +1,23 @@
1
1
  import type { LoreMessageWithParts } from "./types";
2
2
  type MessageWithParts = LoreMessageWithParts;
3
+ /** Compute the context ceiling from a per-bust cost target and cache-write price per token. */
4
+ export declare function computeContextCap(targetBustCost: number, cacheWriteCostPerToken: number): number;
5
+ /** Set the static context ceiling. Called by the host adapter after computing
6
+ * from model pricing. The effective per-session cap may be lower due to
7
+ * dynamic adaptation (bust rate EMA). */
8
+ export declare function setMaxContextTokens(tokens: number): void;
9
+ /** Returns the current static ceiling (for external callers / tests). */
10
+ export declare function getMaxContextTokens(): number;
11
+ /**
12
+ * Feed cache usage data after each API response. Updates the per-session
13
+ * bust rate EMA and inter-bust interval, which adjust the effective context
14
+ * cap dynamically.
15
+ *
16
+ * @param cacheWrite - cache_creation_input_tokens from the API response
17
+ * @param cacheRead - cache_read_input_tokens from the API response
18
+ * @param sessionID - session that produced this response
19
+ */
20
+ export declare function updateBustRate(cacheWrite: number, cacheRead: number, sessionID?: string): void;
3
21
  type DistillationSnapshot = {
4
22
  /** Cached distillation rows from the most recent DB read */
5
23
  rows: Distillation[];
@@ -182,7 +200,7 @@ export type TransformResult = {
182
200
  distilledBudget: number;
183
201
  rawBudget: number;
184
202
  };
185
- export declare function needsUrgentDistillation(): boolean;
203
+ export declare function needsUrgentDistillation(sessionID: string): boolean;
186
204
  export declare function transform(input: {
187
205
  messages: MessageWithParts[];
188
206
  projectPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"gradient.d.ts","sourceRoot":"","sources":["../../src/gradient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gradient.d.ts","sourceRoot":"","sources":["../../src/gradient.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,24 @@
1
1
  export * as temporal from "./temporal";
2
2
  export * as ltm from "./ltm";
3
+ export * as data from "./data";
3
4
  export * as distillation from "./distillation";
4
5
  export * as curator from "./curator";
5
6
  export * as embedding from "./embedding";
7
+ export * as embeddingVendor from "./embedding-vendor";
6
8
  export * as latReader from "./lat-reader";
7
9
  export * as patternExtract from "./pattern-extract";
8
10
  export * as log from "./log";
9
- export { runRecall, RECALL_TOOL_DESCRIPTION, RECALL_PARAM_DESCRIPTIONS, type RecallInput, type RecallResult, type RecallScope, type ScoredDistillation, } from "./recall";
11
+ export { runRecall, searchRecall, recallById, RECALL_TOOL_DESCRIPTION, RECALL_PARAM_DESCRIPTIONS, type RecallInput, type RecallResult, type RecallScope, type ScoredDistillation, type TaggedResult, type ScoredTaggedResult, } from "./recall";
10
12
  export type { LoreMessage, LoreUserMessage, LoreAssistantMessage, LorePart, LoreTextPart, LoreReasoningPart, LoreToolPart, LoreGenericPart, LoreToolState, LoreToolStatePending, LoreToolStateRunning, LoreToolStateCompleted, LoreToolStateError, LoreMessageWithParts, LLMClient, } from "./types";
11
13
  export { isTextPart, isReasoningPart, isToolPart } from "./types";
12
14
  export { load, config, type LoreConfig } from "./config";
13
- export { db, ensureProject, isFirstRun, projectId, projectName, loadForceMinLayer, saveForceMinLayer, getMeta, setMeta, getInstanceId, close, } from "./db";
14
- export { transform, setModelLimits, setMaxLayer0Tokens, computeLayer0Cap, needsUrgentDistillation, calibrate, setLtmTokens, getLtmTokens, getLtmBudget, setForceMinLayer, getLastTransformedCount, getLastTransformEstimate, toolStripAnnotation, onIdleResume, getLastTurnAt, consumeCameOutOfIdle, setLastTurnAtForTest, inspectSessionState, } from "./gradient";
15
+ export { db, dbPath, ensureProject, isFirstRun, projectId, projectName, mergeProjectInternal, loadForceMinLayer, saveForceMinLayer, saveSessionCosts, loadSessionCosts, loadAllSessionCosts, type SessionCostSnapshot, getMeta, setMeta, getInstanceId, close, } from "./db";
16
+ export { normalizeRemoteUrl, getGitRemote, clearGitRemoteCache } from "./git";
17
+ export { transform, setModelLimits, setMaxLayer0Tokens, computeLayer0Cap, setMaxContextTokens, computeContextCap, getMaxContextTokens, updateBustRate, needsUrgentDistillation, calibrate, setLtmTokens, getLtmTokens, getLtmBudget, setForceMinLayer, getLastTransformedCount, getLastTransformEstimate, toolStripAnnotation, onIdleResume, getLastTurnAt, consumeCameOutOfIdle, setLastTurnAtForTest, inspectSessionState, } from "./gradient";
15
18
  export { formatKnowledge, formatDistillations, DISTILLATION_SYSTEM, distillationUser, RECURSIVE_SYSTEM, recursiveUser, CURATOR_SYSTEM, curatorUser, CONSOLIDATION_SYSTEM, consolidationUser, QUERY_EXPANSION_SYSTEM, COMPACT_SUMMARY_TEMPLATE, buildCompactPrompt, } from "./prompt";
16
- export { shouldImport, importFromFile, exportToFile, exportLoreFile, importLoreFile, shouldImportLoreFile, loreFileExists, LORE_FILE, } from "./agents-file";
19
+ export { shouldImport, importFromFile, exportToFile, exportLoreFile, importLoreFile, shouldImportLoreFile, loreFileExists, clearLoreFileCache, LORE_FILE, } from "./agents-file";
17
20
  export { workerSessionIDs, isWorkerSession } from "./worker";
18
21
  export * as workerModel from "./worker-model";
19
- export { ftsQuery, ftsQueryOr, EMPTY_QUERY, reciprocalRankFusion, expandQuery, extractTopTerms, exactTermMatchRank, } from "./search";
20
- export { serialize, inline, h, p, ul, lip, liph, t, root, strong, normalize, sanitizeSurrogates, unescapeMarkdown, } from "./markdown";
22
+ export { ftsQuery, ftsQueryOr, ftsQueryRelaxed, EMPTY_QUERY, reciprocalRankFusion, expandQuery, extractTopTerms, exactTermMatchRank, } from "./search";
23
+ export { serialize, inline, h, p, ul, lip, liph, t, root, strong, normalize, sanitizeSurrogates, unescapeMarkdown, renderMarkdown, } from "./markdown";
21
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,OAAO,EACL,SAAS,EACT,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EACL,EAAE,EACF,aAAa,EACb,UAAU,EACV,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,aAAa,EACb,KAAK,GACN,MAAM,MAAM,CAAC;AACd,OAAO,EACL,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,oBAAoB,EAGpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,SAAS,EACT,MAAM,EACN,CAAC,EACD,CAAC,EACD,EAAE,EACF,GAAG,EACH,IAAI,EACJ,CAAC,EACD,IAAI,EACJ,MAAM,EACN,SAAS,EACT,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}