agentfootprint 8.7.0 → 8.8.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 (166) hide show
  1. package/AGENTS.md +12 -4
  2. package/CLAUDE.md +4 -2
  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/core/agent/buildAgentChart.js +12 -1
  7. package/dist/core/agent/buildAgentChart.js.map +1 -1
  8. package/dist/core/agent/buildDynamicAgentChart.js +12 -1
  9. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  10. package/dist/core/agent/memoryRecallInjections.js +100 -10
  11. package/dist/core/agent/memoryRecallInjections.js.map +1 -1
  12. package/dist/core/agent/stages/deliver.js.map +1 -1
  13. package/dist/core/slots/buildSystemPromptSlot.js +10 -0
  14. package/dist/core/slots/buildSystemPromptSlot.js.map +1 -1
  15. package/dist/core/slots/helpers.js +12 -10
  16. package/dist/core/slots/helpers.js.map +1 -1
  17. package/dist/esm/core/agent/buildAgentChart.js +13 -2
  18. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  19. package/dist/esm/core/agent/buildDynamicAgentChart.js +13 -2
  20. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  21. package/dist/esm/core/agent/memoryRecallInjections.d.ts +13 -3
  22. package/dist/esm/core/agent/memoryRecallInjections.js +101 -11
  23. package/dist/esm/core/agent/memoryRecallInjections.js.map +1 -1
  24. package/dist/esm/core/agent/stages/deliver.d.ts +6 -3
  25. package/dist/esm/core/agent/stages/deliver.js.map +1 -1
  26. package/dist/esm/core/slots/buildSystemPromptSlot.js +10 -0
  27. package/dist/esm/core/slots/buildSystemPromptSlot.js.map +1 -1
  28. package/dist/esm/core/slots/helpers.d.ts +11 -2
  29. package/dist/esm/core/slots/helpers.js +11 -9
  30. package/dist/esm/core/slots/helpers.js.map +1 -1
  31. package/dist/esm/events/payloads.d.ts +63 -0
  32. package/dist/esm/events/registry.d.ts +3 -1
  33. package/dist/esm/events/registry.js +2 -0
  34. package/dist/esm/events/registry.js.map +1 -1
  35. package/dist/esm/index.d.ts +2 -1
  36. package/dist/esm/index.js +6 -1
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/lib/fnv1a.d.ts +16 -0
  39. package/dist/esm/lib/fnv1a.js +24 -0
  40. package/dist/esm/lib/fnv1a.js.map +1 -0
  41. package/dist/esm/lib/injection-engine/types.d.ts +17 -0
  42. package/dist/esm/lib/injection-engine/types.js.map +1 -1
  43. package/dist/esm/lib/rag/defineRAG.d.ts +126 -26
  44. package/dist/esm/lib/rag/defineRAG.js +112 -25
  45. package/dist/esm/lib/rag/defineRAG.js.map +1 -1
  46. package/dist/esm/lib/rag/index.d.ts +1 -1
  47. package/dist/esm/lib/rag/index.js +1 -1
  48. package/dist/esm/lib/rag/index.js.map +1 -1
  49. package/dist/esm/memory/define.js +38 -2
  50. package/dist/esm/memory/define.js.map +1 -1
  51. package/dist/esm/memory/define.types.d.ts +93 -1
  52. package/dist/esm/memory/define.types.js +18 -0
  53. package/dist/esm/memory/define.types.js.map +1 -1
  54. package/dist/esm/memory/embedding/loadRelevant.d.ts +49 -15
  55. package/dist/esm/memory/embedding/loadRelevant.js +136 -7
  56. package/dist/esm/memory/embedding/loadRelevant.js.map +1 -1
  57. package/dist/esm/memory/index.d.ts +2 -1
  58. package/dist/esm/memory/index.js +2 -1
  59. package/dist/esm/memory/index.js.map +1 -1
  60. package/dist/esm/memory/pipeline/semantic.d.ts +15 -0
  61. package/dist/esm/memory/pipeline/semantic.js +3 -1
  62. package/dist/esm/memory/pipeline/semantic.js.map +1 -1
  63. package/dist/esm/memory/retrieval/index.d.ts +10 -0
  64. package/dist/esm/memory/retrieval/index.js +3 -0
  65. package/dist/esm/memory/retrieval/index.js.map +1 -0
  66. package/dist/esm/memory/retrieval/provenance.d.ts +43 -0
  67. package/dist/esm/memory/retrieval/provenance.js +60 -0
  68. package/dist/esm/memory/retrieval/provenance.js.map +1 -0
  69. package/dist/esm/memory/retrieval/topK.d.ts +67 -0
  70. package/dist/esm/memory/retrieval/topK.js +53 -0
  71. package/dist/esm/memory/retrieval/topK.js.map +1 -0
  72. package/dist/esm/memory/retrieval/types.d.ts +189 -0
  73. package/dist/esm/memory/retrieval/types.js +2 -0
  74. package/dist/esm/memory/retrieval/types.js.map +1 -0
  75. package/dist/esm/memory/stages/formatDefault.d.ts +52 -26
  76. package/dist/esm/memory/stages/formatDefault.js +118 -28
  77. package/dist/esm/memory/stages/formatDefault.js.map +1 -1
  78. package/dist/esm/memory/stages/pickByBudget.js +53 -3
  79. package/dist/esm/memory/stages/pickByBudget.js.map +1 -1
  80. package/dist/esm/memory/stages/types.d.ts +15 -0
  81. package/dist/esm/memory/wire/mountMemoryPipeline.d.ts +25 -0
  82. package/dist/esm/memory/wire/mountMemoryPipeline.js +11 -2
  83. package/dist/esm/memory/wire/mountMemoryPipeline.js.map +1 -1
  84. package/dist/events/registry.js +2 -0
  85. package/dist/events/registry.js.map +1 -1
  86. package/dist/index.js +8 -1
  87. package/dist/index.js.map +1 -1
  88. package/dist/lib/fnv1a.js +28 -0
  89. package/dist/lib/fnv1a.js.map +1 -0
  90. package/dist/lib/injection-engine/types.js.map +1 -1
  91. package/dist/lib/rag/defineRAG.js +113 -26
  92. package/dist/lib/rag/defineRAG.js.map +1 -1
  93. package/dist/lib/rag/index.js +2 -1
  94. package/dist/lib/rag/index.js.map +1 -1
  95. package/dist/memory/define.js +38 -2
  96. package/dist/memory/define.js.map +1 -1
  97. package/dist/memory/define.types.js +21 -1
  98. package/dist/memory/define.types.js.map +1 -1
  99. package/dist/memory/embedding/loadRelevant.js +138 -8
  100. package/dist/memory/embedding/loadRelevant.js.map +1 -1
  101. package/dist/memory/index.js +5 -1
  102. package/dist/memory/index.js.map +1 -1
  103. package/dist/memory/pipeline/semantic.js +2 -0
  104. package/dist/memory/pipeline/semantic.js.map +1 -1
  105. package/dist/memory/retrieval/index.js +9 -0
  106. package/dist/memory/retrieval/index.js.map +1 -0
  107. package/dist/memory/retrieval/provenance.js +65 -0
  108. package/dist/memory/retrieval/provenance.js.map +1 -0
  109. package/dist/memory/retrieval/topK.js +57 -0
  110. package/dist/memory/retrieval/topK.js.map +1 -0
  111. package/dist/memory/retrieval/types.js +3 -0
  112. package/dist/memory/retrieval/types.js.map +1 -0
  113. package/dist/memory/stages/formatDefault.js +118 -28
  114. package/dist/memory/stages/formatDefault.js.map +1 -1
  115. package/dist/memory/stages/pickByBudget.js +53 -3
  116. package/dist/memory/stages/pickByBudget.js.map +1 -1
  117. package/dist/memory/wire/mountMemoryPipeline.js +11 -2
  118. package/dist/memory/wire/mountMemoryPipeline.js.map +1 -1
  119. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  120. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  121. package/dist/types/core/agent/memoryRecallInjections.d.ts +13 -3
  122. package/dist/types/core/agent/memoryRecallInjections.d.ts.map +1 -1
  123. package/dist/types/core/agent/stages/deliver.d.ts +6 -3
  124. package/dist/types/core/agent/stages/deliver.d.ts.map +1 -1
  125. package/dist/types/core/slots/buildSystemPromptSlot.d.ts.map +1 -1
  126. package/dist/types/core/slots/helpers.d.ts +11 -2
  127. package/dist/types/core/slots/helpers.d.ts.map +1 -1
  128. package/dist/types/events/payloads.d.ts +63 -0
  129. package/dist/types/events/payloads.d.ts.map +1 -1
  130. package/dist/types/events/registry.d.ts +3 -1
  131. package/dist/types/events/registry.d.ts.map +1 -1
  132. package/dist/types/index.d.ts +2 -1
  133. package/dist/types/index.d.ts.map +1 -1
  134. package/dist/types/lib/fnv1a.d.ts +17 -0
  135. package/dist/types/lib/fnv1a.d.ts.map +1 -0
  136. package/dist/types/lib/injection-engine/types.d.ts +17 -0
  137. package/dist/types/lib/injection-engine/types.d.ts.map +1 -1
  138. package/dist/types/lib/rag/defineRAG.d.ts +126 -26
  139. package/dist/types/lib/rag/defineRAG.d.ts.map +1 -1
  140. package/dist/types/lib/rag/index.d.ts +1 -1
  141. package/dist/types/lib/rag/index.d.ts.map +1 -1
  142. package/dist/types/memory/define.d.ts.map +1 -1
  143. package/dist/types/memory/define.types.d.ts +93 -1
  144. package/dist/types/memory/define.types.d.ts.map +1 -1
  145. package/dist/types/memory/embedding/loadRelevant.d.ts +49 -15
  146. package/dist/types/memory/embedding/loadRelevant.d.ts.map +1 -1
  147. package/dist/types/memory/index.d.ts +2 -1
  148. package/dist/types/memory/index.d.ts.map +1 -1
  149. package/dist/types/memory/pipeline/semantic.d.ts +15 -0
  150. package/dist/types/memory/pipeline/semantic.d.ts.map +1 -1
  151. package/dist/types/memory/retrieval/index.d.ts +11 -0
  152. package/dist/types/memory/retrieval/index.d.ts.map +1 -0
  153. package/dist/types/memory/retrieval/provenance.d.ts +44 -0
  154. package/dist/types/memory/retrieval/provenance.d.ts.map +1 -0
  155. package/dist/types/memory/retrieval/topK.d.ts +68 -0
  156. package/dist/types/memory/retrieval/topK.d.ts.map +1 -0
  157. package/dist/types/memory/retrieval/types.d.ts +190 -0
  158. package/dist/types/memory/retrieval/types.d.ts.map +1 -0
  159. package/dist/types/memory/stages/formatDefault.d.ts +52 -26
  160. package/dist/types/memory/stages/formatDefault.d.ts.map +1 -1
  161. package/dist/types/memory/stages/pickByBudget.d.ts.map +1 -1
  162. package/dist/types/memory/stages/types.d.ts +15 -0
  163. package/dist/types/memory/stages/types.d.ts.map +1 -1
  164. package/dist/types/memory/wire/mountMemoryPipeline.d.ts +25 -0
  165. package/dist/types/memory/wire/mountMemoryPipeline.d.ts.map +1 -1
  166. package/package.json +1 -1
@@ -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,29 +1,54 @@
1
1
  /**
2
2
  * loadRelevant — read-side stage that embeds a query and fetches the
3
- * top-k most similar entries from a vector-capable `MemoryStore`.
3
+ * most similar entries from a vector-capable `MemoryStore`.
4
4
  *
5
- * Reads from scope: `identity`, `newMessages` (or custom queryFrom)
6
- * Writes to scope: `loaded` (MemoryEntry[], ordered best-first — to be
7
- * narrowed by `pickByBudget` downstream)
5
+ * Reads from scope: `identity`, `messages` (or `newMessages`, or custom queryFrom)
6
+ * Writes to scope: `loaded` (MemoryEntry[], ordered best-first — narrowed
7
+ * by `pickByBudget` downstream)
8
+ * `retrieved` (RetrievalEvidence — what was considered,
9
+ * what was admitted, and why about each one)
8
10
  *
9
11
  * Query derivation:
10
- * Default: the last user message in `newMessages`. That's the natural
11
- * "what is the user asking about?" signal. Override with `queryFrom`
12
- * for custom retrieval (e.g., compose user + assistant content,
13
- * pull a summary, etc.).
12
+ * Default: the last user message. That's the natural "what is the user
13
+ * asking about?" signal. Override with `queryFrom` for custom retrieval.
14
14
  *
15
15
  * Empty behavior:
16
- * No query text → no search → `loaded = []`. Downstream
17
- * `pickByBudget` picks nothing and the formatter emits nothing — safe.
16
+ * No query text → no search → `loaded = []`. Downstream `pickByBudget`
17
+ * picks nothing and the formatter emits nothing — safe, and now
18
+ * RECORDED: the evidence still lands, saying the query was empty.
18
19
  *
19
20
  * Feature detection:
20
- * Throws at stage build time if the store doesn't implement
21
- * `search()`. Fail-loud — a semantic pipeline configured against a
22
- * non-vector store is a config bug, not a runtime condition.
21
+ * Throws at stage build time if the store doesn't implement `search()`.
22
+ * Fail-loud — a semantic pipeline configured against a non-vector store
23
+ * is a config bug, not a runtime condition.
24
+ *
25
+ * ─── Why the threshold moved out of the store (8.8.0) ──────────────────
26
+ *
27
+ * Until 8.8.0 the quality floor was passed to `store.search({ minScore })`,
28
+ * so every candidate that failed it was filtered INSIDE the store and never
29
+ * came back. The consequence was not a small one: a retrieval that injected
30
+ * nothing left no trace of what it nearly injected, and "why did the agent
31
+ * not read that passage" had no answer anywhere in the recording.
32
+ *
33
+ * The floor is now applied here, over a pool of `k + rejectWindow`. **This
34
+ * does not change which entries are admitted, ever.** Proof: `search`
35
+ * returns score-descending, and the pool is at least `k`. Either
36
+ *
37
+ * (a) every entry in the pool clears the floor — then the admitted set is
38
+ * the first `k` of them, which is exactly what `{ minScore, k }` would
39
+ * have returned; or
40
+ * (b) some entry at position p fails the floor — then every entry after p
41
+ * fails it too, so the pool already contains EVERY entry in the
42
+ * namespace that clears the floor, and admitting all of them (capped
43
+ * at `k`) is again exactly what `{ minScore, k }` would have returned.
44
+ *
45
+ * `rejectWindow` therefore only controls how many near-misses we can SHOW.
46
+ * It cannot change what the model sees.
23
47
  */
24
48
  import type { TypedScope } from 'footprintjs';
25
49
  import type { MemoryStore } from '../store/index.js';
26
50
  import type { MemoryState } from '../stages/index.js';
51
+ import type { RetrievalStrategy } from '../retrieval/types.js';
27
52
  import type { Embedder } from './types.js';
28
53
  export interface LoadRelevantConfig {
29
54
  /** The vector-capable store. Must implement `search()`. */
@@ -43,9 +68,18 @@ export interface LoadRelevantConfig {
43
68
  /** Filter results by tier. */
44
69
  readonly tiers?: ReadonlyArray<'hot' | 'warm' | 'cold'>;
45
70
  /**
46
- * Extract the query text from scope. Default: the last user message
47
- * in `newMessages`. Override for custom retrieval signals.
71
+ * The rule that decides which candidates reach the prompt. Defaults to
72
+ * `topK({ k, threshold: minScore })` — i.e. `k` and `minScore` above are
73
+ * the shorthand, and this is the same rule spelled out. Pass a strategy
74
+ * to replace the rule entirely.
75
+ */
76
+ readonly retrieval?: RetrievalStrategy;
77
+ /**
78
+ * Extract the query text from scope. Default: the last user message.
79
+ * Override for custom retrieval signals.
48
80
  */
49
81
  readonly queryFrom?: (scope: TypedScope<MemoryState>) => string;
50
82
  }
51
83
  export declare function loadRelevant(config: LoadRelevantConfig): (scope: TypedScope<MemoryState>) => Promise<void>;
84
+ /** Test seam — the once-per-process warning is per PROCESS, which tests must be able to reset. */
85
+ export declare function __resetEmptyCorpusWarnings(): void;
@@ -1,3 +1,7 @@
1
+ import { identityNamespace } from '../identity/index.js';
2
+ import { fnv1a } from '../../lib/fnv1a.js';
3
+ import { chunkProvenance } from '../retrieval/provenance.js';
4
+ import { topK } from '../retrieval/topK.js';
1
5
  /**
2
6
  * Default query extractor — last user message.
3
7
  *
@@ -19,6 +23,12 @@ function defaultQueryFrom(scope) {
19
23
  }
20
24
  return '';
21
25
  }
26
+ /** Emit through the scope's emit channel when there is one (there always is under an Agent). */
27
+ function emit(scope, type, payload) {
28
+ const emitter = scope.$emit;
29
+ if (typeof emitter === 'function')
30
+ emitter.call(scope, type, payload);
31
+ }
22
32
  export function loadRelevant(config) {
23
33
  const { store, embedder } = config;
24
34
  if (!store.search) {
@@ -26,12 +36,43 @@ export function loadRelevant(config) {
26
36
  'Use a vector-capable adapter (InMemoryStore, pgvector, Pinecone, ...).');
27
37
  }
28
38
  const queryFrom = config.queryFrom ?? defaultQueryFrom;
29
- const k = config.k ?? 20;
39
+ // The shorthand and the strategy are two spellings of one rule; the
40
+ // strategy wins when both are present, and `defineMemory` refuses the
41
+ // contradiction before it ever gets here.
42
+ const strategy = config.retrieval ??
43
+ topK({
44
+ k: config.k ?? 20,
45
+ threshold: config.minScore === undefined ? null : config.minScore,
46
+ // With no explicit strategy there is no explicit reject window
47
+ // either; 10 near-misses is enough to diagnose a threshold without
48
+ // making every retrieval read a large page.
49
+ });
50
+ const poolSize = strategy.k + strategy.rejectWindow;
30
51
  return async (scope) => {
31
52
  const identity = scope.identity;
53
+ const namespace = identityNamespace(identity);
32
54
  const text = queryFrom(scope).trim();
55
+ const baseEvidence = {
56
+ queryHash: fnv1a(text),
57
+ k: strategy.k,
58
+ ...(strategy.threshold !== undefined && { threshold: strategy.threshold }),
59
+ ...(config.embedderId !== undefined && { embedderId: config.embedderId }),
60
+ selectionOrder: 'recency',
61
+ namespace,
62
+ };
33
63
  if (text.length === 0) {
34
64
  scope.loaded = [];
65
+ const emptyQuery = {
66
+ ...baseEvidence,
67
+ consideredCount: 0,
68
+ admittedCount: 0,
69
+ rejectedCount: 0,
70
+ candidates: [],
71
+ candidatesComplete: true,
72
+ // The corpus was never asked, so it cannot be reported empty.
73
+ corpusEmpty: false,
74
+ };
75
+ scope.retrieved = emptyQuery;
35
76
  return;
36
77
  }
37
78
  const signal = scope.$getEnv?.()?.signal;
@@ -42,15 +83,103 @@ export function loadRelevant(config) {
42
83
  // store.search optional on MemoryStore but required when an embedder
43
84
  // is configured (validated upstream by defineMemory).
44
85
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
45
- const results = await store.search(identity, queryVec, {
46
- k,
47
- ...(config.minScore !== undefined && { minScore: config.minScore }),
86
+ const results = (await store.search(identity, queryVec, {
87
+ k: poolSize,
88
+ // `minScore` is deliberately NOT forwarded — see the header proof.
48
89
  ...(config.tiers && { tiers: config.tiers }),
49
90
  ...(config.embedderId !== undefined && { embedderId: config.embedderId }),
91
+ text,
92
+ }));
93
+ // A store that ranks server-side may return entries without a usable
94
+ // score. We report that rather than printing a number we did not get.
95
+ const scoresUsable = results.every((r) => typeof r.score === 'number' && Number.isFinite(r.score));
96
+ const verdicts = scoresUsable
97
+ ? strategy.select(results.map((r) => ({ entry: r.entry, score: r.score })))
98
+ : // No comparable scores to rule on. The store already ranked, so we
99
+ // honour its order and take the first `k` — and say in the record
100
+ // that we could not see the candidates ourselves.
101
+ results.map((_, i) => ({ admitted: i < strategy.k }));
102
+ const admitted = [];
103
+ const candidates = [];
104
+ results.forEach((result, i) => {
105
+ // `verdicts` is built from `results` above, one per element.
106
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
107
+ const verdict = verdicts[i];
108
+ if (verdict.admitted)
109
+ admitted.push(result);
110
+ candidates.push({
111
+ id: result.entry.id,
112
+ score: result.score,
113
+ rank: i + 1,
114
+ admitted: verdict.admitted,
115
+ ...(verdict.reason !== undefined && { reason: verdict.reason }),
116
+ ...chunkProvenance(result.entry.value),
117
+ });
118
+ });
119
+ const evidence = {
120
+ ...baseEvidence,
121
+ ...(queryVec.length > 0 && { dimensions: queryVec.length }),
122
+ consideredCount: results.length,
123
+ admittedCount: admitted.length,
124
+ rejectedCount: results.length - admitted.length,
125
+ ...(scoresUsable
126
+ ? { candidates }
127
+ : {
128
+ candidatesOmittedReason: 'the store ranked this query server-side and returned no comparable scores',
129
+ }),
130
+ // The pool came back full, so there may be further below-threshold
131
+ // entries we never saw. This never weakens the ADMITTED set (see
132
+ // the header proof) — only the rejected list is a sample.
133
+ candidatesComplete: results.length < poolSize,
134
+ corpusEmpty: results.length === 0,
135
+ };
136
+ scope.loaded = admitted.map((r) => r.entry);
137
+ scope.retrieved = evidence;
138
+ // Telemetry rides the emit channel, never a commit payload. The
139
+ // memory bridge (`memoryRecorder`) is attached on every Agent run, so
140
+ // this reaches `agent.on('agentfootprint.memory.retrieved')` with no
141
+ // extra wiring. Which retriever fired is `meta.runtimeStageId`
142
+ // (`sf-memory-read-<id>/load-relevant#N`) — the house correlation model.
143
+ emit(scope, 'agentfootprint.memory.retrieved', {
144
+ queryHash: evidence.queryHash,
145
+ k: evidence.k,
146
+ ...(evidence.threshold !== undefined && { threshold: evidence.threshold }),
147
+ ...(evidence.embedderId !== undefined && { embedderId: evidence.embedderId }),
148
+ ...(evidence.dimensions !== undefined && { dimensions: evidence.dimensions }),
149
+ consideredCount: evidence.consideredCount,
150
+ admittedCount: evidence.admittedCount,
151
+ rejectedCount: evidence.rejectedCount,
152
+ ...(evidence.candidates !== undefined && { candidates: evidence.candidates }),
153
+ ...(evidence.candidatesOmittedReason !== undefined && {
154
+ candidatesOmittedReason: evidence.candidatesOmittedReason,
155
+ }),
156
+ candidatesComplete: evidence.candidatesComplete,
157
+ corpusEmpty: evidence.corpusEmpty,
158
+ namespace: evidence.namespace,
50
159
  });
51
- // Write loaded entries to scope in best-first order — downstream
52
- // pickByBudget further narrows by the token budget.
53
- scope.loaded = results.map((r) => r.entry);
160
+ // An empty namespace is almost never "the corpus has nothing to say".
161
+ // It is almost always "the corpus was indexed under a different
162
+ // identity than the one being queried" — the failure that used to be
163
+ // completely silent. Say it once per process, naming both sides.
164
+ if (evidence.corpusEmpty)
165
+ warnEmptyCorpus(namespace);
54
166
  };
55
167
  }
168
+ const warnedNamespaces = new Set();
169
+ function warnEmptyCorpus(namespace) {
170
+ if (warnedNamespaces.has(namespace))
171
+ return;
172
+ warnedNamespaces.add(namespace);
173
+ console.warn(`[agentfootprint] Semantic retrieval found NO entries at all in namespace '${namespace}'.\n` +
174
+ ` Nothing was injected, and the answer will come from the model alone.\n` +
175
+ ` The usual cause is that the corpus was indexed under a different identity than the one\n` +
176
+ ` being queried: indexDocuments() defaults to { conversationId: '_global' }, and a memory\n` +
177
+ ` reads under the identity passed to agent.run() unless the retriever declares its own\n` +
178
+ ` \`corpus\`. defineRAG() defaults \`corpus\` to { conversationId: '_global' } so the two\n` +
179
+ ` sides meet; pass \`corpus\` explicitly when you index per tenant.`);
180
+ }
181
+ /** Test seam — the once-per-process warning is per PROCESS, which tests must be able to reset. */
182
+ export function __resetEmptyCorpusWarnings() {
183
+ warnedNamespaces.clear();
184
+ }
56
185
  //# sourceMappingURL=loadRelevant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadRelevant.js","sourceRoot":"","sources":["../../../../src/memory/embedding/loadRelevant.ts"],"names":[],"mappings":"AA2DA;;;;;;;GAOG;AACH,SAAS,gBAAgB,CAAC,KAA8B;IACtD,MAAM,QAAQ,GAAG,KAAqD,CAAC;IACvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;IACzC,MAAM,MAAM,GACV,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAwB,CAAC;IAErF,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAChC,IAAI,CAAC,CAAC,OAAO;YAAE,OAAO,CAAC,CAAC,OAAO,CAAC;IAClC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,kEAAkE;YAChE,wEAAwE,CAC3E,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,gBAAgB,CAAC;IACvD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAEzB,OAAO,KAAK,EAAE,KAA8B,EAAiB,EAAE;QAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC;QACzC,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC;YACrC,IAAI;YACJ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9B,CAAC,CAAa,CAAC;QAEhB,qEAAqE;QACrE,sDAAsD;QACtD,oEAAoE;QACpE,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE;YACtD,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;YACnE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YAC5C,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;SAC1E,CAAC,CAAC;QAEH,iEAAiE;QACjE,oDAAoD;QACpD,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAA0B,CAAC;IACtE,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"loadRelevant.js","sourceRoot":"","sources":["../../../../src/memory/embedding/loadRelevant.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,8 @@ export * from './pipeline/index.js';
15
15
  export * from './stages/index.js';
16
16
  export * from './store/index.js';
17
17
  export * from './wire/index.js';
18
- export { MEMORY_TYPES, MEMORY_STRATEGIES, MEMORY_TIMING, SNAPSHOT_PROJECTIONS, MEMORY_INJECTION_KEY_PREFIX, isMemoryType, isMemoryStrategyKind, isMemoryTiming, isSnapshotProjection, memoryInjectionKey, isMemoryInjectionKey, type MemoryType, type MemoryStrategyKind, type MemoryTiming, type SnapshotProjection, type Strategy, type MemoryWindowStrategy, type BudgetStrategy, type SummarizeStrategy, type TopKStrategy, type ExtractStrategy, type DecayStrategy, type HybridStrategy, type MemoryDefinition, type DefineMemoryOptions, type DefineEpisodicOptions, type DefineSemanticOptions, type DefineNarrativeOptions, type DefineCausalOptions, type MemoryRedactionPolicy, } from './define.types.js';
18
+ export * from './retrieval/index.js';
19
+ export { MEMORY_TYPES, MEMORY_STRATEGIES, MEMORY_TIMING, SNAPSHOT_PROJECTIONS, MEMORY_INJECTION_KEY_PREFIX, RETRIEVAL_EVIDENCE_KEY_PREFIX, isMemoryType, isMemoryStrategyKind, isMemoryTiming, isSnapshotProjection, memoryInjectionKey, isMemoryInjectionKey, retrievalEvidenceKey, isRetrievalEvidenceKey, type MemoryType, type MemoryStrategyKind, type MemoryTiming, type SnapshotProjection, type Strategy, type MemoryWindowStrategy, type BudgetStrategy, type SummarizeStrategy, type TopKStrategy, type TopKShorthandStrategy, type TopKRetrievalStrategy, type MemoryFlavor, type ExtractStrategy, type DecayStrategy, type HybridStrategy, type MemoryDefinition, type DefineMemoryOptions, type DefineEpisodicOptions, type DefineSemanticOptions, type DefineNarrativeOptions, type DefineCausalOptions, type MemoryRedactionPolicy, } from './define.types.js';
19
20
  /**
20
21
  * @deprecated Since 7.27.1 — use `MemoryWindowStrategy`.
21
22
  *
@@ -15,7 +15,8 @@ export * from './pipeline/index.js';
15
15
  export * from './stages/index.js';
16
16
  export * from './store/index.js';
17
17
  export * from './wire/index.js';
18
+ export * from './retrieval/index.js';
18
19
  // Consumer-facing factory + const-objects for memory configuration.
19
- export { MEMORY_TYPES, MEMORY_STRATEGIES, MEMORY_TIMING, SNAPSHOT_PROJECTIONS, MEMORY_INJECTION_KEY_PREFIX, isMemoryType, isMemoryStrategyKind, isMemoryTiming, isSnapshotProjection, memoryInjectionKey, isMemoryInjectionKey, } from './define.types.js';
20
+ export { MEMORY_TYPES, MEMORY_STRATEGIES, MEMORY_TIMING, SNAPSHOT_PROJECTIONS, MEMORY_INJECTION_KEY_PREFIX, RETRIEVAL_EVIDENCE_KEY_PREFIX, isMemoryType, isMemoryStrategyKind, isMemoryTiming, isSnapshotProjection, memoryInjectionKey, isMemoryInjectionKey, retrievalEvidenceKey, isRetrievalEvidenceKey, } from './define.types.js';
20
21
  export { defineMemory } from './define.js';
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAEhC,oEAAoE;AACpE,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,2BAA2B,EAC3B,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GAoBrB,MAAM,mBAAmB,CAAC;AAY3B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AAErC,oEAAoE;AACpE,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,2BAA2B,EAC3B,6BAA6B,EAC7B,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,GAuBvB,MAAM,mBAAmB,CAAC;AAY3B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -1,3 +1,5 @@
1
+ import { type MemoryFormatFlavor } from '../stages/formatDefault.js';
2
+ import type { RetrievalStrategy } from '../retrieval/types.js';
1
3
  import type { MemoryStore } from '../store/index.js';
2
4
  import type { MemoryPipeline } from './types.js';
3
5
  import type { Embedder } from '../embedding/types.js';
@@ -29,6 +31,19 @@ export interface SemanticPipelineConfig {
29
31
  /** Forwarded to `formatDefault`. */
30
32
  readonly formatHeader?: string;
31
33
  readonly formatFooter?: string;
34
+ /**
35
+ * The retrieval rule (8.8.0). Replaces `k` + `minScore` above; see
36
+ * {@link RetrievalStrategy}. When absent, `topK({ k, threshold: minScore })`
37
+ * is built from those two — the same rule, spelled the old way.
38
+ */
39
+ readonly retrieval?: RetrievalStrategy;
40
+ /**
41
+ * Which claim the injected block makes (8.8.0). `'rag'` renders each
42
+ * entry as a citable `<source>` with its document, page and score;
43
+ * `'memory'` (default) keeps the conversation-recall `<memory>` shape
44
+ * byte for byte.
45
+ */
46
+ readonly flavor?: MemoryFormatFlavor;
32
47
  }
33
48
  /**
34
49
  * Build the semantic read + write pipelines sharing a single store.