agentfootprint 8.7.0 → 8.9.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 (245) hide show
  1. package/AGENTS.md +12 -4
  2. package/CLAUDE.md +7 -3
  3. package/ai-instructions/claude-code/SKILL.md +1 -1
  4. package/ai-instructions/setup.sh +0 -0
  5. package/bin/agentfootprint-lint-tools.mjs +0 -0
  6. package/dist/adapters/memory/sqliteVector.js +875 -0
  7. package/dist/adapters/memory/sqliteVector.js.map +1 -0
  8. package/dist/core/Agent.js +6 -0
  9. package/dist/core/Agent.js.map +1 -1
  10. package/dist/core/agent/buildAgentChart.js +12 -1
  11. package/dist/core/agent/buildAgentChart.js.map +1 -1
  12. package/dist/core/agent/buildDynamicAgentChart.js +12 -1
  13. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  14. package/dist/core/agent/memoryRecallInjections.js +100 -10
  15. package/dist/core/agent/memoryRecallInjections.js.map +1 -1
  16. package/dist/core/agent/stages/deliver.js.map +1 -1
  17. package/dist/core/slots/buildSystemPromptSlot.js +10 -0
  18. package/dist/core/slots/buildSystemPromptSlot.js.map +1 -1
  19. package/dist/core/slots/helpers.js +12 -10
  20. package/dist/core/slots/helpers.js.map +1 -1
  21. package/dist/embedders/index.js +11 -0
  22. package/dist/embedders/index.js.map +1 -1
  23. package/dist/esm/adapters/memory/sqliteVector.d.ts +251 -0
  24. package/dist/esm/adapters/memory/sqliteVector.js +869 -0
  25. package/dist/esm/adapters/memory/sqliteVector.js.map +1 -0
  26. package/dist/esm/core/Agent.js +6 -0
  27. package/dist/esm/core/Agent.js.map +1 -1
  28. package/dist/esm/core/agent/buildAgentChart.js +13 -2
  29. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  30. package/dist/esm/core/agent/buildDynamicAgentChart.js +13 -2
  31. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  32. package/dist/esm/core/agent/memoryRecallInjections.d.ts +13 -3
  33. package/dist/esm/core/agent/memoryRecallInjections.js +101 -11
  34. package/dist/esm/core/agent/memoryRecallInjections.js.map +1 -1
  35. package/dist/esm/core/agent/stages/deliver.d.ts +6 -3
  36. package/dist/esm/core/agent/stages/deliver.js.map +1 -1
  37. package/dist/esm/core/slots/buildSystemPromptSlot.js +10 -0
  38. package/dist/esm/core/slots/buildSystemPromptSlot.js.map +1 -1
  39. package/dist/esm/core/slots/helpers.d.ts +11 -2
  40. package/dist/esm/core/slots/helpers.js +11 -9
  41. package/dist/esm/core/slots/helpers.js.map +1 -1
  42. package/dist/esm/embedders/index.js +11 -0
  43. package/dist/esm/embedders/index.js.map +1 -1
  44. package/dist/esm/events/payloads.d.ts +63 -0
  45. package/dist/esm/events/registry.d.ts +3 -1
  46. package/dist/esm/events/registry.js +2 -0
  47. package/dist/esm/events/registry.js.map +1 -1
  48. package/dist/esm/hosting/sqliteSessions.d.ts +7 -13
  49. package/dist/esm/hosting/sqliteSessions.js +8 -25
  50. package/dist/esm/hosting/sqliteSessions.js.map +1 -1
  51. package/dist/esm/index.d.ts +2 -1
  52. package/dist/esm/index.js +6 -1
  53. package/dist/esm/index.js.map +1 -1
  54. package/dist/esm/lib/fnv1a.d.ts +16 -0
  55. package/dist/esm/lib/fnv1a.js +24 -0
  56. package/dist/esm/lib/fnv1a.js.map +1 -0
  57. package/dist/esm/lib/injection-engine/types.d.ts +17 -0
  58. package/dist/esm/lib/injection-engine/types.js.map +1 -1
  59. package/dist/esm/lib/rag/defineRAG.d.ts +126 -26
  60. package/dist/esm/lib/rag/defineRAG.js +112 -25
  61. package/dist/esm/lib/rag/defineRAG.js.map +1 -1
  62. package/dist/esm/lib/rag/index.d.ts +1 -1
  63. package/dist/esm/lib/rag/index.js +1 -1
  64. package/dist/esm/lib/rag/index.js.map +1 -1
  65. package/dist/esm/lib/rag/indexDocuments.d.ts +26 -4
  66. package/dist/esm/lib/rag/indexDocuments.js +12 -1
  67. package/dist/esm/lib/rag/indexDocuments.js.map +1 -1
  68. package/dist/esm/lib/sqliteUnavailable.d.ts +55 -0
  69. package/dist/esm/lib/sqliteUnavailable.js +61 -0
  70. package/dist/esm/lib/sqliteUnavailable.js.map +1 -0
  71. package/dist/esm/memory/define.js +38 -2
  72. package/dist/esm/memory/define.js.map +1 -1
  73. package/dist/esm/memory/define.types.d.ts +93 -1
  74. package/dist/esm/memory/define.types.js +18 -0
  75. package/dist/esm/memory/define.types.js.map +1 -1
  76. package/dist/esm/memory/embedding/embedMessages.js +16 -0
  77. package/dist/esm/memory/embedding/embedMessages.js.map +1 -1
  78. package/dist/esm/memory/embedding/emitEmbedding.d.ts +38 -0
  79. package/dist/esm/memory/embedding/emitEmbedding.js +15 -0
  80. package/dist/esm/memory/embedding/emitEmbedding.js.map +1 -0
  81. package/dist/esm/memory/embedding/loadRelevant.d.ts +49 -15
  82. package/dist/esm/memory/embedding/loadRelevant.js +150 -7
  83. package/dist/esm/memory/embedding/loadRelevant.js.map +1 -1
  84. package/dist/esm/memory/embedding/mockEmbedder.js +4 -0
  85. package/dist/esm/memory/embedding/mockEmbedder.js.map +1 -1
  86. package/dist/esm/memory/embedding/types.d.ts +24 -0
  87. package/dist/esm/memory/index.d.ts +2 -1
  88. package/dist/esm/memory/index.js +2 -1
  89. package/dist/esm/memory/index.js.map +1 -1
  90. package/dist/esm/memory/pipeline/semantic.d.ts +15 -0
  91. package/dist/esm/memory/pipeline/semantic.js +3 -1
  92. package/dist/esm/memory/pipeline/semantic.js.map +1 -1
  93. package/dist/esm/memory/retrieval/index.d.ts +10 -0
  94. package/dist/esm/memory/retrieval/index.js +3 -0
  95. package/dist/esm/memory/retrieval/index.js.map +1 -0
  96. package/dist/esm/memory/retrieval/provenance.d.ts +43 -0
  97. package/dist/esm/memory/retrieval/provenance.js +60 -0
  98. package/dist/esm/memory/retrieval/provenance.js.map +1 -0
  99. package/dist/esm/memory/retrieval/topK.d.ts +67 -0
  100. package/dist/esm/memory/retrieval/topK.js +53 -0
  101. package/dist/esm/memory/retrieval/topK.js.map +1 -0
  102. package/dist/esm/memory/retrieval/types.d.ts +189 -0
  103. package/dist/esm/memory/retrieval/types.js +2 -0
  104. package/dist/esm/memory/retrieval/types.js.map +1 -0
  105. package/dist/esm/memory/stages/formatDefault.d.ts +52 -26
  106. package/dist/esm/memory/stages/formatDefault.js +118 -28
  107. package/dist/esm/memory/stages/formatDefault.js.map +1 -1
  108. package/dist/esm/memory/stages/pickByBudget.js +53 -3
  109. package/dist/esm/memory/stages/pickByBudget.js.map +1 -1
  110. package/dist/esm/memory/stages/types.d.ts +15 -0
  111. package/dist/esm/memory/wire/mountMemoryPipeline.d.ts +25 -0
  112. package/dist/esm/memory/wire/mountMemoryPipeline.js +11 -2
  113. package/dist/esm/memory/wire/mountMemoryPipeline.js.map +1 -1
  114. package/dist/esm/memory-providers.d.ts +2 -0
  115. package/dist/esm/memory-providers.js +8 -0
  116. package/dist/esm/memory-providers.js.map +1 -1
  117. package/dist/esm/observe.d.ts +2 -0
  118. package/dist/esm/observe.js +2 -0
  119. package/dist/esm/observe.js.map +1 -1
  120. package/dist/esm/recorders/core/EmbeddingRecorder.d.ts +19 -0
  121. package/dist/esm/recorders/core/EmbeddingRecorder.js +24 -0
  122. package/dist/esm/recorders/core/EmbeddingRecorder.js.map +1 -0
  123. package/dist/events/registry.js +2 -0
  124. package/dist/events/registry.js.map +1 -1
  125. package/dist/hosting/sqliteSessions.js +10 -27
  126. package/dist/hosting/sqliteSessions.js.map +1 -1
  127. package/dist/index.js +8 -1
  128. package/dist/index.js.map +1 -1
  129. package/dist/lib/fnv1a.js +28 -0
  130. package/dist/lib/fnv1a.js.map +1 -0
  131. package/dist/lib/injection-engine/types.js.map +1 -1
  132. package/dist/lib/rag/defineRAG.js +113 -26
  133. package/dist/lib/rag/defineRAG.js.map +1 -1
  134. package/dist/lib/rag/index.js +2 -1
  135. package/dist/lib/rag/index.js.map +1 -1
  136. package/dist/lib/rag/indexDocuments.js +12 -1
  137. package/dist/lib/rag/indexDocuments.js.map +1 -1
  138. package/dist/lib/sqliteUnavailable.js +65 -0
  139. package/dist/lib/sqliteUnavailable.js.map +1 -0
  140. package/dist/memory/define.js +38 -2
  141. package/dist/memory/define.js.map +1 -1
  142. package/dist/memory/define.types.js +21 -1
  143. package/dist/memory/define.types.js.map +1 -1
  144. package/dist/memory/embedding/embedMessages.js +16 -0
  145. package/dist/memory/embedding/embedMessages.js.map +1 -1
  146. package/dist/memory/embedding/emitEmbedding.js +19 -0
  147. package/dist/memory/embedding/emitEmbedding.js.map +1 -0
  148. package/dist/memory/embedding/loadRelevant.js +152 -8
  149. package/dist/memory/embedding/loadRelevant.js.map +1 -1
  150. package/dist/memory/embedding/mockEmbedder.js +4 -0
  151. package/dist/memory/embedding/mockEmbedder.js.map +1 -1
  152. package/dist/memory/index.js +5 -1
  153. package/dist/memory/index.js.map +1 -1
  154. package/dist/memory/pipeline/semantic.js +2 -0
  155. package/dist/memory/pipeline/semantic.js.map +1 -1
  156. package/dist/memory/retrieval/index.js +9 -0
  157. package/dist/memory/retrieval/index.js.map +1 -0
  158. package/dist/memory/retrieval/provenance.js +65 -0
  159. package/dist/memory/retrieval/provenance.js.map +1 -0
  160. package/dist/memory/retrieval/topK.js +57 -0
  161. package/dist/memory/retrieval/topK.js.map +1 -0
  162. package/dist/memory/retrieval/types.js +3 -0
  163. package/dist/memory/retrieval/types.js.map +1 -0
  164. package/dist/memory/stages/formatDefault.js +118 -28
  165. package/dist/memory/stages/formatDefault.js.map +1 -1
  166. package/dist/memory/stages/pickByBudget.js +53 -3
  167. package/dist/memory/stages/pickByBudget.js.map +1 -1
  168. package/dist/memory/wire/mountMemoryPipeline.js +11 -2
  169. package/dist/memory/wire/mountMemoryPipeline.js.map +1 -1
  170. package/dist/memory-providers.js +13 -1
  171. package/dist/memory-providers.js.map +1 -1
  172. package/dist/observe.js +4 -1
  173. package/dist/observe.js.map +1 -1
  174. package/dist/recorders/core/EmbeddingRecorder.js +28 -0
  175. package/dist/recorders/core/EmbeddingRecorder.js.map +1 -0
  176. package/dist/types/adapters/memory/sqliteVector.d.ts +252 -0
  177. package/dist/types/adapters/memory/sqliteVector.d.ts.map +1 -0
  178. package/dist/types/core/Agent.d.ts.map +1 -1
  179. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  180. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  181. package/dist/types/core/agent/memoryRecallInjections.d.ts +13 -3
  182. package/dist/types/core/agent/memoryRecallInjections.d.ts.map +1 -1
  183. package/dist/types/core/agent/stages/deliver.d.ts +6 -3
  184. package/dist/types/core/agent/stages/deliver.d.ts.map +1 -1
  185. package/dist/types/core/slots/buildSystemPromptSlot.d.ts.map +1 -1
  186. package/dist/types/core/slots/helpers.d.ts +11 -2
  187. package/dist/types/core/slots/helpers.d.ts.map +1 -1
  188. package/dist/types/embedders/index.d.ts.map +1 -1
  189. package/dist/types/events/payloads.d.ts +63 -0
  190. package/dist/types/events/payloads.d.ts.map +1 -1
  191. package/dist/types/events/registry.d.ts +3 -1
  192. package/dist/types/events/registry.d.ts.map +1 -1
  193. package/dist/types/hosting/sqliteSessions.d.ts +7 -13
  194. package/dist/types/hosting/sqliteSessions.d.ts.map +1 -1
  195. package/dist/types/index.d.ts +2 -1
  196. package/dist/types/index.d.ts.map +1 -1
  197. package/dist/types/lib/fnv1a.d.ts +17 -0
  198. package/dist/types/lib/fnv1a.d.ts.map +1 -0
  199. package/dist/types/lib/injection-engine/types.d.ts +17 -0
  200. package/dist/types/lib/injection-engine/types.d.ts.map +1 -1
  201. package/dist/types/lib/rag/defineRAG.d.ts +126 -26
  202. package/dist/types/lib/rag/defineRAG.d.ts.map +1 -1
  203. package/dist/types/lib/rag/index.d.ts +1 -1
  204. package/dist/types/lib/rag/index.d.ts.map +1 -1
  205. package/dist/types/lib/rag/indexDocuments.d.ts +26 -4
  206. package/dist/types/lib/rag/indexDocuments.d.ts.map +1 -1
  207. package/dist/types/lib/sqliteUnavailable.d.ts +56 -0
  208. package/dist/types/lib/sqliteUnavailable.d.ts.map +1 -0
  209. package/dist/types/memory/define.d.ts.map +1 -1
  210. package/dist/types/memory/define.types.d.ts +93 -1
  211. package/dist/types/memory/define.types.d.ts.map +1 -1
  212. package/dist/types/memory/embedding/embedMessages.d.ts.map +1 -1
  213. package/dist/types/memory/embedding/emitEmbedding.d.ts +39 -0
  214. package/dist/types/memory/embedding/emitEmbedding.d.ts.map +1 -0
  215. package/dist/types/memory/embedding/loadRelevant.d.ts +49 -15
  216. package/dist/types/memory/embedding/loadRelevant.d.ts.map +1 -1
  217. package/dist/types/memory/embedding/mockEmbedder.d.ts.map +1 -1
  218. package/dist/types/memory/embedding/types.d.ts +24 -0
  219. package/dist/types/memory/embedding/types.d.ts.map +1 -1
  220. package/dist/types/memory/index.d.ts +2 -1
  221. package/dist/types/memory/index.d.ts.map +1 -1
  222. package/dist/types/memory/pipeline/semantic.d.ts +15 -0
  223. package/dist/types/memory/pipeline/semantic.d.ts.map +1 -1
  224. package/dist/types/memory/retrieval/index.d.ts +11 -0
  225. package/dist/types/memory/retrieval/index.d.ts.map +1 -0
  226. package/dist/types/memory/retrieval/provenance.d.ts +44 -0
  227. package/dist/types/memory/retrieval/provenance.d.ts.map +1 -0
  228. package/dist/types/memory/retrieval/topK.d.ts +68 -0
  229. package/dist/types/memory/retrieval/topK.d.ts.map +1 -0
  230. package/dist/types/memory/retrieval/types.d.ts +190 -0
  231. package/dist/types/memory/retrieval/types.d.ts.map +1 -0
  232. package/dist/types/memory/stages/formatDefault.d.ts +52 -26
  233. package/dist/types/memory/stages/formatDefault.d.ts.map +1 -1
  234. package/dist/types/memory/stages/pickByBudget.d.ts.map +1 -1
  235. package/dist/types/memory/stages/types.d.ts +15 -0
  236. package/dist/types/memory/stages/types.d.ts.map +1 -1
  237. package/dist/types/memory/wire/mountMemoryPipeline.d.ts +25 -0
  238. package/dist/types/memory/wire/mountMemoryPipeline.d.ts.map +1 -1
  239. package/dist/types/memory-providers.d.ts +2 -0
  240. package/dist/types/memory-providers.d.ts.map +1 -1
  241. package/dist/types/observe.d.ts +2 -0
  242. package/dist/types/observe.d.ts.map +1 -1
  243. package/dist/types/recorders/core/EmbeddingRecorder.d.ts +20 -0
  244. package/dist/types/recorders/core/EmbeddingRecorder.d.ts.map +1 -0
  245. package/package.json +1 -1
@@ -59,10 +59,15 @@ export interface IndexDocumentsOptions {
59
59
  */
60
60
  readonly identity?: MemoryIdentity;
61
61
  /**
62
- * Stable id of the embedder. Stored on each entry so a future
63
- * embedder swap doesn't silently mix similarity scores. Default:
64
- * `'default-embedder'` — pass an explicit id when you may rotate
65
- * embedders.
62
+ * Stable id of the embedder. Stored on each entry so a future embedder swap
63
+ * doesn't silently mix similarity scores.
64
+ *
65
+ * Defaults to the embedder's own `id` (8.9.0 — every shipped embedder sets
66
+ * one), and to `'default-embedder'` for a hand-written `Embedder` that has
67
+ * none. That default matters more with a durable store: it is half of the
68
+ * `'<id>@<dims>'` fingerprint `sqliteVectorStore` records per vector and
69
+ * refuses on, so an index built by `staticEmbedder()` will not silently
70
+ * accept vectors from `openaiEmbedder()`.
66
71
  */
67
72
  readonly embedderId?: string;
68
73
  /**
@@ -81,6 +86,23 @@ export interface IndexDocumentsOptions {
81
86
  * this through to abort batch indexing on shutdown / timeout.
82
87
  */
83
88
  readonly signal?: AbortSignal;
89
+ /**
90
+ * Called once with the cost of the embedding work this call did (8.9.0).
91
+ *
92
+ * `indexDocuments` runs at STARTUP, outside any agent run, so it has no
93
+ * emit channel to ride — there is no scope, no dispatcher and no
94
+ * `runtimeStageId` to correlate against. Rather than pretend otherwise, it
95
+ * hands the same payload the in-run stages emit as
96
+ * `agentfootprint.embedding.generated` straight to you, so the index-time
97
+ * half of the cost model is reportable from a boot script:
98
+ *
99
+ * ```ts
100
+ * await indexDocuments(store, embedder, docs, {
101
+ * onEmbedding: (e) => console.log(`embedded ${e.count} documents in ${e.durationMs}ms`),
102
+ * });
103
+ * ```
104
+ */
105
+ readonly onEmbedding?: (payload: import('../../events/payloads.js').EmbeddingGeneratedPayload) => void;
84
106
  /**
85
107
  * Max number of concurrent embed calls when the embedder doesn't
86
108
  * implement `embedBatch`. Default `8`. Without this cap, a 10K-doc
@@ -51,8 +51,11 @@ export async function indexDocuments(store, embedder, documents, options = {}) {
51
51
  if (!Array.isArray(documents) || documents.length === 0)
52
52
  return 0;
53
53
  const identity = options.identity ?? DEFAULT_IDENTITY;
54
- const embedderId = options.embedderId ?? 'default-embedder';
54
+ // The embedder's own name first: it is what a durable store fingerprints
55
+ // the namespace with, and an anonymous index cannot refuse a later swap.
56
+ const embedderId = options.embedderId ?? embedder.id ?? 'default-embedder';
55
57
  const now = Date.now();
58
+ const embedStartedAt = Date.now();
56
59
  const ttl = options.ttlMs ? now + options.ttlMs : undefined;
57
60
  // Embed in batch when supported, else fall back to capped-concurrency
58
61
  // single calls. Unlimited concurrency on a large corpus would
@@ -69,6 +72,14 @@ export async function indexDocuments(store, embedder, documents, options = {}) {
69
72
  const limit = Math.max(1, options.maxConcurrency ?? 8);
70
73
  vectors = await embedWithConcurrency(embedder, texts, limit, options.signal);
71
74
  }
75
+ options.onEmbedding?.({
76
+ model: embedderId,
77
+ provider: 'custom',
78
+ inputKind: 'document',
79
+ dimension: embedder.dimensions,
80
+ count: vectors.length,
81
+ durationMs: Date.now() - embedStartedAt,
82
+ });
72
83
  const entries = documents.map((doc, i) => {
73
84
  const vec = vectors[i];
74
85
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"indexDocuments.js","sourceRoot":"","sources":["../../../../src/lib/rag/indexDocuments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexDocuments.js","sourceRoot":"","sources":["../../../../src/lib/rag/indexDocuments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * lib/sqliteUnavailable — the one refusal for "this Node has no `node:sqlite`".
3
+ *
4
+ * Pattern: leaf error type (imports nothing).
5
+ * Role: shared by `hosting/sqliteSessions` and `adapters/memory/sqliteVector`.
6
+ * It lives here rather than in either of them because two adapters
7
+ * hitting the same missing module must raise the same error: a
8
+ * consumer catching `SqliteUnavailableError` should not have to know
9
+ * which of our stores was being constructed, and two classes of one
10
+ * name is a duplicate type the build refuses anyway.
11
+ * Emits: N/A.
12
+ *
13
+ * Node 20 does not have the module at all; Node 22.5 through 22.12 have it
14
+ * behind `--experimental-sqlite`; Node 22.13+ and 23.4+ have it as-is (still
15
+ * marked experimental by Node, which is why it prints a warning on first use).
16
+ *
17
+ * The refusal names the version you are on and the three ways out, because
18
+ * "cannot find module 'node:sqlite'" out of a library's guts tells you what
19
+ * broke and nothing about what to do.
20
+ *
21
+ * **There is deliberately no fallback.** Each caller supplies its own last
22
+ * sentence saying what a silent fallback would have looked like from the
23
+ * outside, because that sentence is the argument — not decoration.
24
+ */
25
+ /** What the refusal says about the caller that raised it. */
26
+ export interface SqliteUnavailableContext {
27
+ /** The factory the consumer actually wrote, e.g. `sqliteSessions()`. */
28
+ readonly factory: string;
29
+ /** The honest in-memory alternative, named so it can be reached for. */
30
+ readonly alternative: string;
31
+ /** Why falling back to that alternative silently would be worse than refusing. */
32
+ readonly whyNotFallback: string;
33
+ /** Which door the message belongs to, for the `[prefix]` tag. */
34
+ readonly door: string;
35
+ }
36
+ /**
37
+ * Raised when `node:sqlite` is not available in the running Node.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * try {
42
+ * const store = sqliteVectorStore({ file: './corpus.db' });
43
+ * } catch (err) {
44
+ * if (err instanceof SqliteUnavailableError) {
45
+ * console.error(`Node ${err.nodeVersion} cannot do this`, err.message);
46
+ * }
47
+ * }
48
+ * ```
49
+ */
50
+ export declare class SqliteUnavailableError extends Error {
51
+ readonly code: "ERR_SQLITE_UNAVAILABLE";
52
+ /** The Node version this process is running. */
53
+ readonly nodeVersion: string;
54
+ constructor(nodeVersion: string, reason: string, context?: SqliteUnavailableContext);
55
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * lib/sqliteUnavailable — the one refusal for "this Node has no `node:sqlite`".
3
+ *
4
+ * Pattern: leaf error type (imports nothing).
5
+ * Role: shared by `hosting/sqliteSessions` and `adapters/memory/sqliteVector`.
6
+ * It lives here rather than in either of them because two adapters
7
+ * hitting the same missing module must raise the same error: a
8
+ * consumer catching `SqliteUnavailableError` should not have to know
9
+ * which of our stores was being constructed, and two classes of one
10
+ * name is a duplicate type the build refuses anyway.
11
+ * Emits: N/A.
12
+ *
13
+ * Node 20 does not have the module at all; Node 22.5 through 22.12 have it
14
+ * behind `--experimental-sqlite`; Node 22.13+ and 23.4+ have it as-is (still
15
+ * marked experimental by Node, which is why it prints a warning on first use).
16
+ *
17
+ * The refusal names the version you are on and the three ways out, because
18
+ * "cannot find module 'node:sqlite'" out of a library's guts tells you what
19
+ * broke and nothing about what to do.
20
+ *
21
+ * **There is deliberately no fallback.** Each caller supplies its own last
22
+ * sentence saying what a silent fallback would have looked like from the
23
+ * outside, because that sentence is the argument — not decoration.
24
+ */
25
+ const SESSIONS_CONTEXT = {
26
+ door: 'hosting',
27
+ factory: 'sqliteSessions()',
28
+ alternative: 'memorySessions() — which keeps conversations in a Map and loses them on restart, and says so in its name',
29
+ whyNotFallback: 'a store that silently forgot every conversation on restart looks, from the outside, exactly like a brand-new user',
30
+ };
31
+ /**
32
+ * Raised when `node:sqlite` is not available in the running Node.
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * try {
37
+ * const store = sqliteVectorStore({ file: './corpus.db' });
38
+ * } catch (err) {
39
+ * if (err instanceof SqliteUnavailableError) {
40
+ * console.error(`Node ${err.nodeVersion} cannot do this`, err.message);
41
+ * }
42
+ * }
43
+ * ```
44
+ */
45
+ export class SqliteUnavailableError extends Error {
46
+ code = 'ERR_SQLITE_UNAVAILABLE';
47
+ /** The Node version this process is running. */
48
+ nodeVersion;
49
+ constructor(nodeVersion, reason, context = SESSIONS_CONTEXT) {
50
+ super(`[${context.door}] ${context.factory} needs Node's built-in 'node:sqlite' module, and this ` +
51
+ `process (Node ${nodeVersion}) does not have it (${reason}). ` +
52
+ `That module ships with Node 22.5 and newer: on Node 22.13+ (and 23.4+) it is ` +
53
+ `available as-is, and on Node 22.5–22.12 it is behind --experimental-sqlite. ` +
54
+ `So: upgrade Node, add that flag, or use ${context.alternative}. ` +
55
+ `This refuses rather than falling back to memory on your behalf: ` +
56
+ `${context.whyNotFallback}.`);
57
+ this.name = 'SqliteUnavailableError';
58
+ this.nodeVersion = nodeVersion;
59
+ }
60
+ }
61
+ //# sourceMappingURL=sqliteUnavailable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqliteUnavailable.js","sourceRoot":"","sources":["../../../src/lib/sqliteUnavailable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAcH,MAAM,gBAAgB,GAA6B;IACjD,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,kBAAkB;IAC3B,WAAW,EACT,0GAA0G;IAC5G,cAAc,EACZ,mHAAmH;CACtH,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACtC,IAAI,GAAG,wBAAiC,CAAC;IAClD,gDAAgD;IACvC,WAAW,CAAS;IAE7B,YACE,WAAmB,EACnB,MAAc,EACd,UAAoC,gBAAgB;QAEpD,KAAK,CACH,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,wDAAwD;YAC1F,iBAAiB,WAAW,uBAAuB,MAAM,KAAK;YAC9D,+EAA+E;YAC/E,8EAA8E;YAC9E,2CAA2C,OAAO,CAAC,WAAW,IAAI;YAClE,kEAAkE;YAClE,GAAG,OAAO,CAAC,cAAc,GAAG,CAC/B,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF"}
@@ -65,14 +65,21 @@ import { MEMORY_TYPES, MEMORY_STRATEGIES, MEMORY_TIMING, } from './define.types.
65
65
  export function defineMemory(options) {
66
66
  validate(options);
67
67
  const pipeline = buildPipeline(options);
68
+ // `readOnly` drops the write half entirely (8.8.0). Not "writes are
69
+ // skipped at runtime" — the subflow is never compiled and never mounted,
70
+ // so a read-only memory has no write stage in its chart, no write commit
71
+ // in its log, and nothing to disable later by accident.
72
+ const write = options.readOnly === true ? undefined : pipeline.write;
68
73
  const definition = {
69
74
  id: options.id,
70
75
  ...(options.description !== undefined && { description: options.description }),
71
76
  type: options.type,
72
77
  read: brandPipeline(pipeline.read),
73
- ...(pipeline.write !== undefined && { write: brandPipeline(pipeline.write) }),
78
+ ...(write !== undefined && { write: brandPipeline(write) }),
74
79
  timing: options.timing ?? MEMORY_TIMING.TURN_START,
75
80
  ...(options.redact !== undefined && { redact: options.redact }),
81
+ ...(options.corpus !== undefined && { corpus: options.corpus }),
82
+ ...(options.flavor !== undefined && { flavor: options.flavor }),
76
83
  ...(options.type === MEMORY_TYPES.CAUSAL &&
77
84
  options.projection !== undefined && {
78
85
  projection: options.projection,
@@ -93,6 +100,26 @@ function validate(options) {
93
100
  throw new Error(`defineMemory[id=${options.id}]: \`store\` is required. ` +
94
101
  'Pass `new InMemoryStore()` for dev/tests, or a backed store for production.');
95
102
  }
103
+ // The shorthand and the spelled-out rule EXCLUDE. Accepting both would
104
+ // mean one of two numbers silently loses, and the recording would name
105
+ // a `k` the run did not use.
106
+ // Read through a structural shape, not the union: the union's arms
107
+ // declare the OTHER spelling as `never`, so intersecting them here
108
+ // would make the very field this check reads unreadable.
109
+ const strategy = options.strategy;
110
+ if (strategy?.retrieval !== undefined) {
111
+ const shorthand = [];
112
+ if (strategy.topK !== undefined)
113
+ shorthand.push('`topK`');
114
+ if (strategy.threshold !== undefined)
115
+ shorthand.push('`threshold`');
116
+ if (shorthand.length > 0) {
117
+ throw new Error(`defineMemory[id=${options.id}]: ${shorthand.join(' and ')} cannot be combined with ` +
118
+ '`retrieval` — they are two spellings of the same rule and could disagree. ' +
119
+ `Keep the strategy (\`retrieval: ${strategy.retrieval.name}({ ... })\`) and drop ` +
120
+ `${shorthand.join('/')}, or drop \`retrieval\`.`);
121
+ }
122
+ }
96
123
  }
97
124
  // ─── Pipeline dispatch ─────────────────────────────────────────────
98
125
  function buildPipeline(options) {
@@ -177,8 +204,11 @@ function buildSemanticPipeline(options) {
177
204
  const config = {
178
205
  store: options.store,
179
206
  embedder: t.embedder,
180
- k: t.topK,
207
+ ...(t.topK !== undefined && { k: t.topK }),
181
208
  ...(t.threshold !== undefined && { minScore: t.threshold }),
209
+ ...(t.embedderId !== undefined && { embedderId: t.embedderId }),
210
+ ...(t.retrieval !== undefined && { retrieval: t.retrieval }),
211
+ ...(options.flavor !== undefined && { flavor: options.flavor }),
182
212
  };
183
213
  return semanticPipeline(config);
184
214
  }
@@ -268,6 +298,12 @@ function buildCausalPipeline(options) {
268
298
  'Pass `new InMemoryStore({ embedder })` for dev/tests, or a vector adapter ' +
269
299
  '(pgvector, Pinecone, Qdrant) for production.');
270
300
  }
301
+ // CAUSAL predates the retrieval seam and reads the shorthand only. A
302
+ // strategy passed here would be accepted and ignored, so it is refused.
303
+ if (s.retrieval !== undefined) {
304
+ throw new Error(`defineMemory[${options.id}]: CAUSAL type does not read \`retrieval\` — snapshot recall ` +
305
+ 'matches a stored query vector, not a document pool. Use `topK` + `threshold`.');
306
+ }
271
307
  const config = {
272
308
  store: options.store,
273
309
  embedder: s.embedder,
@@ -1 +1 @@
1
- {"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/memory/define.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/memory/define.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,8 @@
41
41
  import type { LLMProvider } from '../adapters/types.js';
42
42
  import type { Embedder } from './embedding/index.js';
43
43
  import type { MemoryStore } from './store/index.js';
44
+ import type { MemoryIdentity } from './identity/index.js';
45
+ import type { RetrievalStrategy } from './retrieval/types.js';
44
46
  /**
45
47
  * What shape of memory you're keeping.
46
48
  *
@@ -152,12 +154,44 @@ export interface SummarizeStrategy {
152
154
  * STRICT threshold: when no entry meets the threshold, return EMPTY.
153
155
  * No fallback — garbage in context is worse than no memory.
154
156
  */
155
- export interface TopKStrategy {
157
+ /**
158
+ * Top-K retrieval, in either of its two spellings — and never both.
159
+ *
160
+ * The arms EXCLUDE (8.8.0). `{ topK, threshold }` is the shorthand;
161
+ * `{ retrieval }` is the same rule written as a {@link RetrievalStrategy},
162
+ * which is also how a different rule gets in. Accepting both would mean
163
+ * one of two `k`s silently loses and the recording would name a `k` the
164
+ * run did not use — so the type refuses it at the keystroke, and
165
+ * `defineMemory` refuses it again at runtime for JavaScript callers.
166
+ */
167
+ export type TopKStrategy = TopKShorthandStrategy | TopKRetrievalStrategy;
168
+ /** The historical spelling: two loose numbers. Unchanged since 2.x. */
169
+ export interface TopKShorthandStrategy {
156
170
  readonly kind: typeof MEMORY_STRATEGIES.TOP_K;
157
171
  readonly topK: number;
158
172
  /** Min cosine similarity. Strict — no fallback below this. Default 0.7. */
159
173
  readonly threshold?: number;
160
174
  readonly embedder: Embedder;
175
+ /**
176
+ * Stable id of the embedder, filtered against `MemoryEntry.embeddingModel`
177
+ * at search time so a later embedder swap cannot silently mix two vector
178
+ * spaces. Pair it with the same value passed to `indexDocuments`.
179
+ *
180
+ * Wired in 8.8.0. `defineRAG` has accepted an `embedderId` since 7.x and
181
+ * never forwarded it — an option the run did not read.
182
+ */
183
+ readonly embedderId?: string;
184
+ readonly retrieval?: never;
185
+ }
186
+ /** The spelled-out rule (8.8.0) — and the seam a re-ranker will arrive through. */
187
+ export interface TopKRetrievalStrategy {
188
+ readonly kind: typeof MEMORY_STRATEGIES.TOP_K;
189
+ readonly embedder: Embedder;
190
+ readonly retrieval: RetrievalStrategy;
191
+ /** See {@link TopKShorthandStrategy.embedderId}. */
192
+ readonly embedderId?: string;
193
+ readonly topK?: never;
194
+ readonly threshold?: never;
161
195
  }
162
196
  /**
163
197
  * Extract — on WRITE, an LLM (or pattern matcher) distills entries from
@@ -234,7 +268,34 @@ export interface MemoryDefinition<T = unknown> {
234
268
  readonly redact?: MemoryRedactionPolicy;
235
269
  /** Snapshot projection — only meaningful when `type === CAUSAL`. */
236
270
  readonly projection?: SnapshotProjection;
271
+ /**
272
+ * The namespace this memory reads and writes (8.8.0).
273
+ *
274
+ * Absent — the historical behaviour, and still the right one for
275
+ * conversation memory — means "whatever identity the run was given",
276
+ * so each conversation remembers its own turns.
277
+ *
278
+ * Present means "always this namespace, whoever is asking", which is
279
+ * what a shared document corpus is: a corpus does not belong to a
280
+ * conversation, and reading it under a per-run conversation id is why
281
+ * `defineRAG`'s own documented example retrieved nothing at all before
282
+ * 8.8.0. `defineRAG` defaults it to `{ conversationId: '_global' }`,
283
+ * matching `indexDocuments`'s default so the two sides meet.
284
+ */
285
+ readonly corpus?: MemoryIdentity;
286
+ /**
287
+ * Which claim this memory's injected block makes (8.8.0). `'memory'`
288
+ * is conversation recall; `'rag'` is corpus retrieval, and it is the
289
+ * value that reaches the recording as `ContextInjectedPayload.source`.
290
+ *
291
+ * The event vocabulary has carried a `'rag'` source since 2.x and
292
+ * nothing ever emitted it — a declared value no run can produce is a
293
+ * gap in the contract, not a spare.
294
+ */
295
+ readonly flavor?: MemoryFlavor;
237
296
  }
297
+ /** What an injected memory block is claiming to be. */
298
+ export type MemoryFlavor = 'memory' | 'rag';
238
299
  /**
239
300
  * Opaque tag for the compiled flowchart the factory hands back.
240
301
  * The actual type is `FlowChart<MemoryState>` from footprintjs but we
@@ -256,6 +317,23 @@ export interface DefineMemoryOptionsBase {
256
317
  readonly strategy: Strategy;
257
318
  readonly timing?: MemoryTiming;
258
319
  readonly redact?: MemoryRedactionPolicy;
320
+ /**
321
+ * Read and write under THIS namespace instead of the run's identity
322
+ * (8.8.0). See {@link MemoryDefinition.corpus}.
323
+ */
324
+ readonly corpus?: MemoryIdentity;
325
+ /**
326
+ * Build a read-only memory (8.8.0): no write subflow is compiled, so
327
+ * nothing this memory sees is ever stored back.
328
+ *
329
+ * The reason it exists: a retrieval corpus and a conversation log are
330
+ * two different things sharing one pipeline. Writing the conversation
331
+ * into the corpus makes the user's own question the best-scoring
332
+ * "document" in it. `defineRAG` sets this.
333
+ */
334
+ readonly readOnly?: boolean;
335
+ /** Which claim the injected block makes. See {@link MemoryDefinition.flavor}. */
336
+ readonly flavor?: MemoryFlavor;
259
337
  }
260
338
  export interface DefineEpisodicOptions extends DefineMemoryOptionsBase {
261
339
  readonly type: typeof MEMORY_TYPES.EPISODIC;
@@ -286,3 +364,17 @@ export declare function isSnapshotProjection(value: string): value is SnapshotPr
286
364
  export declare const MEMORY_INJECTION_KEY_PREFIX: "memoryInjection_";
287
365
  export declare function memoryInjectionKey(id: string): string;
288
366
  export declare function isMemoryInjectionKey(key: string): boolean;
367
+ /**
368
+ * Scope-key prefix for the retrieval record a memory lifts to the parent
369
+ * scope (8.8.0), one key per memory id — the same layering rule as
370
+ * `memoryInjection_`.
371
+ *
372
+ * This key is the reason a backward slice can now reach a passage. It is
373
+ * ORDINARY root state, so `sliceForKey('finalContent')` walks the
374
+ * system-prompt write, and the record naming every candidate id and score
375
+ * is one hop away. Before 8.8.0 the scores existed only inside the memory
376
+ * subflow, which the root commit log never sees.
377
+ */
378
+ export declare const RETRIEVAL_EVIDENCE_KEY_PREFIX: "retrievalEvidence_";
379
+ export declare function retrievalEvidenceKey(id: string): string;
380
+ export declare function isRetrievalEvidenceKey(key: string): boolean;
@@ -126,4 +126,22 @@ export function memoryInjectionKey(id) {
126
126
  export function isMemoryInjectionKey(key) {
127
127
  return key.startsWith(MEMORY_INJECTION_KEY_PREFIX);
128
128
  }
129
+ /**
130
+ * Scope-key prefix for the retrieval record a memory lifts to the parent
131
+ * scope (8.8.0), one key per memory id — the same layering rule as
132
+ * `memoryInjection_`.
133
+ *
134
+ * This key is the reason a backward slice can now reach a passage. It is
135
+ * ORDINARY root state, so `sliceForKey('finalContent')` walks the
136
+ * system-prompt write, and the record naming every candidate id and score
137
+ * is one hop away. Before 8.8.0 the scores existed only inside the memory
138
+ * subflow, which the root commit log never sees.
139
+ */
140
+ export const RETRIEVAL_EVIDENCE_KEY_PREFIX = 'retrievalEvidence_';
141
+ export function retrievalEvidenceKey(id) {
142
+ return `${RETRIEVAL_EVIDENCE_KEY_PREFIX}${id}`;
143
+ }
144
+ export function isRetrievalEvidenceKey(key) {
145
+ return key.startsWith(RETRIEVAL_EVIDENCE_KEY_PREFIX);
146
+ }
129
147
  //# sourceMappingURL=define.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"define.types.js","sourceRoot":"","sources":["../../../src/memory/define.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAMH,uEAAuE;AAEvE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACR,CAAC;AAGX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACR,CAAC;AAGX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,YAAY;CAChB,CAAC;AAGX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;CACJ,CAAC;AAiOX,uEAAuE;AAEvE,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAQ,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAQ,MAAM,CAAC,MAAM,CAAC,aAAa,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAQ,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,uEAAuE;AAEvE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAA2B,CAAC;AAEvE,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,GAAG,2BAA2B,GAAG,EAAE,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,GAAG,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"define.types.js","sourceRoot":"","sources":["../../../src/memory/define.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAQH,uEAAuE;AAEvE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACR,CAAC;AAGX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACR,CAAC;AAGX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,YAAY;CAChB,CAAC;AAGX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;CACJ,CAAC;AAqTX,uEAAuE;AAEvE,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAQ,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAQ,MAAM,CAAC,MAAM,CAAC,aAAa,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAQ,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,uEAAuE;AAEvE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAA2B,CAAC;AAEvE,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,GAAG,2BAA2B,GAAG,EAAE,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,GAAG,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,oBAA6B,CAAC;AAE3E,MAAM,UAAU,oBAAoB,CAAC,EAAU;IAC7C,OAAO,GAAG,6BAA6B,GAAG,EAAE,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,OAAO,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC,CAAC;AACvD,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { emitEmbedding } from './emitEmbedding.js';
1
2
  /** Default: extract plaintext from any supported content shape. */
2
3
  function defaultTextFrom(message) {
3
4
  return message.content ?? '';
@@ -18,6 +19,7 @@ export function embedMessages(config) {
18
19
  }
19
20
  const texts = messages.map(textFrom);
20
21
  const signal = scope.$getEnv?.()?.signal;
22
+ const startedAt = Date.now();
21
23
  let vectors;
22
24
  if (embedder.embedBatch) {
23
25
  vectors = (await embedder.embedBatch({
@@ -28,6 +30,20 @@ export function embedMessages(config) {
28
30
  else {
29
31
  vectors = await Promise.all(texts.map((text) => embedder.embed({ text, ...(signal ? { signal } : {}) })));
30
32
  }
33
+ // The INDEX-time half of the two-phase cost model (8.9.0). Embedding cost
34
+ // splits in two — this side scales with the size of what you store, and
35
+ // the query side scales with traffic — and telling them apart is the whole
36
+ // reason for a durable index. `agentfootprint.embedding.generated` has been
37
+ // declared since 2.x with an `inputKind` field and no emitter; this is one
38
+ // of its two.
39
+ emitEmbedding(scope, {
40
+ model: config.embedderId ?? embedder.id ?? 'unknown',
41
+ provider: 'custom',
42
+ inputKind: 'document',
43
+ dimension: embedder.dimensions,
44
+ count: vectors.length,
45
+ durationMs: Date.now() - startedAt,
46
+ });
31
47
  scope.newMessageEmbeddings = vectors;
32
48
  if (config.embedderId !== undefined) {
33
49
  scope.newMessageEmbeddingModel = config.embedderId;
@@ -1 +1 @@
1
- {"version":3,"file":"embedMessages.js","sourceRoot":"","sources":["../../../../src/memory/embedding/embedMessages.ts"],"names":[],"mappings":"AA0DA,mEAAmE;AACnE,SAAS,eAAe,CAAC,OAAgB;IACvC,OAAO,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAA2B;IACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,eAAe,CAAC;IAEpD,OAAO,KAAK,EAAE,KAAqC,EAAiB,EAAE;QACpE,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAuB,CAAC;QACjE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC;QAEzC,IAAI,OAAmB,CAAC;QACxB,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC;gBACnC,KAAK;gBACL,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9B,CAAC,CAAe,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CACzB,KAAK,CAAC,GAAG,CACP,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAsB,CACvF,CACF,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,oBAAoB,GAAG,OAAO,CAAC;QACrC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,KAAK,CAAC,wBAAwB,GAAG,MAAM,CAAC,UAAU,CAAC;QACrD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"embedMessages.js","sourceRoot":"","sources":["../../../../src/memory/embedding/embedMessages.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAmCnD,mEAAmE;AACnE,SAAS,eAAe,CAAC,OAAgB;IACvC,OAAO,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAA2B;IACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,eAAe,CAAC;IAEpD,OAAO,KAAK,EAAE,KAAqC,EAAiB,EAAE;QACpE,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAuB,CAAC;QACjE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC;QAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,OAAmB,CAAC;QACxB,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC;gBACnC,KAAK;gBACL,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9B,CAAC,CAAe,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CACzB,KAAK,CAAC,GAAG,CACP,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAsB,CACvF,CACF,CAAC;QACJ,CAAC;QAED,0EAA0E;QAC1E,wEAAwE;QACxE,2EAA2E;QAC3E,4EAA4E;QAC5E,2EAA2E;QAC3E,cAAc;QACd,aAAa,CAAC,KAAK,EAAE;YACnB,KAAK,EAAE,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,EAAE,IAAI,SAAS;YACpD,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,UAAU;YACrB,SAAS,EAAE,QAAQ,CAAC,UAAU;YAC9B,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC,CAAC;QAEH,KAAK,CAAC,oBAAoB,GAAG,OAAO,CAAC;QACrC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,KAAK,CAAC,wBAAwB,GAAG,MAAM,CAAC,UAAU,CAAC;QACrD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * emitEmbedding — one place that reports an embedding call.
3
+ *
4
+ * Pattern: leaf helper over the emit channel.
5
+ * Role: memory/ layer. Both halves of the two-phase cost model go through
6
+ * it — `embedMessages` reports `'document'`, `loadRelevant` reports
7
+ * `'query'` — so the two can never drift into describing the same
8
+ * fact two different ways.
9
+ * Emits: `agentfootprint.embedding.generated`.
10
+ *
11
+ * ── Why this event matters more than it looks ───────────────────────────────
12
+ * Embedding cost is not one number. **Index time** embeds the corpus: it
13
+ * happens once, and its cost scales with how much you store. **Query time**
14
+ * embeds the user's question: it happens per retrieval, and its cost scales
15
+ * with traffic. `inputKind` is the field that separates them, and separating
16
+ * them is what makes "should this corpus live in a file?" a question with an
17
+ * arithmetic answer instead of a feeling.
18
+ *
19
+ * The payload has been declared since 2.x and nothing emitted it, so any
20
+ * dashboard built against it has been reading a flat line that meant "not
21
+ * wired", not "no cost".
22
+ *
23
+ * Telemetry rides the EMIT channel, never a commit payload — a cost report is
24
+ * an observation about a stage, not state the next stage reads.
25
+ */
26
+ import type { TypedScope } from 'footprintjs';
27
+ import type { EmbeddingGeneratedPayload } from '../../events/payloads.js';
28
+ /**
29
+ * Fire the event when the scope has an emit channel, and do nothing when it
30
+ * does not.
31
+ *
32
+ * A memory pipeline can be mounted outside an Agent (`mountMemoryRead` on a
33
+ * bare flowchart), and a stage that threw because nobody was listening would
34
+ * make observability a requirement rather than an option.
35
+ */
36
+ export declare function emitEmbedding(scope: TypedScope<Record<string, unknown>> | {
37
+ $emit?: unknown;
38
+ }, payload: EmbeddingGeneratedPayload): void;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Fire the event when the scope has an emit channel, and do nothing when it
3
+ * does not.
4
+ *
5
+ * A memory pipeline can be mounted outside an Agent (`mountMemoryRead` on a
6
+ * bare flowchart), and a stage that threw because nobody was listening would
7
+ * make observability a requirement rather than an option.
8
+ */
9
+ export function emitEmbedding(scope, payload) {
10
+ const emitter = scope.$emit;
11
+ if (typeof emitter === 'function') {
12
+ emitter.call(scope, 'agentfootprint.embedding.generated', payload);
13
+ }
14
+ }
15
+ //# sourceMappingURL=emitEmbedding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitEmbedding.js","sourceRoot":"","sources":["../../../../src/memory/embedding/emitEmbedding.ts"],"names":[],"mappings":"AA4BA;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAgE,EAChE,OAAkC;IAElC,MAAM,OAAO,GAAI,KAA8D,CAAC,KAAK,CAAC;IACtF,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,oCAAoC,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;AACH,CAAC"}