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.
- package/AGENTS.md +12 -4
- package/CLAUDE.md +7 -3
- package/ai-instructions/claude-code/SKILL.md +1 -1
- package/ai-instructions/setup.sh +0 -0
- package/bin/agentfootprint-lint-tools.mjs +0 -0
- package/dist/adapters/memory/sqliteVector.js +875 -0
- package/dist/adapters/memory/sqliteVector.js.map +1 -0
- package/dist/core/Agent.js +6 -0
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js +12 -1
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +12 -1
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/core/agent/memoryRecallInjections.js +100 -10
- package/dist/core/agent/memoryRecallInjections.js.map +1 -1
- package/dist/core/agent/stages/deliver.js.map +1 -1
- package/dist/core/slots/buildSystemPromptSlot.js +10 -0
- package/dist/core/slots/buildSystemPromptSlot.js.map +1 -1
- package/dist/core/slots/helpers.js +12 -10
- package/dist/core/slots/helpers.js.map +1 -1
- package/dist/embedders/index.js +11 -0
- package/dist/embedders/index.js.map +1 -1
- package/dist/esm/adapters/memory/sqliteVector.d.ts +251 -0
- package/dist/esm/adapters/memory/sqliteVector.js +869 -0
- package/dist/esm/adapters/memory/sqliteVector.js.map +1 -0
- package/dist/esm/core/Agent.js +6 -0
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/buildAgentChart.js +13 -2
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +13 -2
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/core/agent/memoryRecallInjections.d.ts +13 -3
- package/dist/esm/core/agent/memoryRecallInjections.js +101 -11
- package/dist/esm/core/agent/memoryRecallInjections.js.map +1 -1
- package/dist/esm/core/agent/stages/deliver.d.ts +6 -3
- package/dist/esm/core/agent/stages/deliver.js.map +1 -1
- package/dist/esm/core/slots/buildSystemPromptSlot.js +10 -0
- package/dist/esm/core/slots/buildSystemPromptSlot.js.map +1 -1
- package/dist/esm/core/slots/helpers.d.ts +11 -2
- package/dist/esm/core/slots/helpers.js +11 -9
- package/dist/esm/core/slots/helpers.js.map +1 -1
- package/dist/esm/embedders/index.js +11 -0
- package/dist/esm/embedders/index.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +63 -0
- package/dist/esm/events/registry.d.ts +3 -1
- package/dist/esm/events/registry.js +2 -0
- package/dist/esm/events/registry.js.map +1 -1
- package/dist/esm/hosting/sqliteSessions.d.ts +7 -13
- package/dist/esm/hosting/sqliteSessions.js +8 -25
- package/dist/esm/hosting/sqliteSessions.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +6 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/fnv1a.d.ts +16 -0
- package/dist/esm/lib/fnv1a.js +24 -0
- package/dist/esm/lib/fnv1a.js.map +1 -0
- package/dist/esm/lib/injection-engine/types.d.ts +17 -0
- package/dist/esm/lib/injection-engine/types.js.map +1 -1
- package/dist/esm/lib/rag/defineRAG.d.ts +126 -26
- package/dist/esm/lib/rag/defineRAG.js +112 -25
- package/dist/esm/lib/rag/defineRAG.js.map +1 -1
- package/dist/esm/lib/rag/index.d.ts +1 -1
- package/dist/esm/lib/rag/index.js +1 -1
- package/dist/esm/lib/rag/index.js.map +1 -1
- package/dist/esm/lib/rag/indexDocuments.d.ts +26 -4
- package/dist/esm/lib/rag/indexDocuments.js +12 -1
- package/dist/esm/lib/rag/indexDocuments.js.map +1 -1
- package/dist/esm/lib/sqliteUnavailable.d.ts +55 -0
- package/dist/esm/lib/sqliteUnavailable.js +61 -0
- package/dist/esm/lib/sqliteUnavailable.js.map +1 -0
- package/dist/esm/memory/define.js +38 -2
- package/dist/esm/memory/define.js.map +1 -1
- package/dist/esm/memory/define.types.d.ts +93 -1
- package/dist/esm/memory/define.types.js +18 -0
- package/dist/esm/memory/define.types.js.map +1 -1
- package/dist/esm/memory/embedding/embedMessages.js +16 -0
- package/dist/esm/memory/embedding/embedMessages.js.map +1 -1
- package/dist/esm/memory/embedding/emitEmbedding.d.ts +38 -0
- package/dist/esm/memory/embedding/emitEmbedding.js +15 -0
- package/dist/esm/memory/embedding/emitEmbedding.js.map +1 -0
- package/dist/esm/memory/embedding/loadRelevant.d.ts +49 -15
- package/dist/esm/memory/embedding/loadRelevant.js +150 -7
- package/dist/esm/memory/embedding/loadRelevant.js.map +1 -1
- package/dist/esm/memory/embedding/mockEmbedder.js +4 -0
- package/dist/esm/memory/embedding/mockEmbedder.js.map +1 -1
- package/dist/esm/memory/embedding/types.d.ts +24 -0
- package/dist/esm/memory/index.d.ts +2 -1
- package/dist/esm/memory/index.js +2 -1
- package/dist/esm/memory/index.js.map +1 -1
- package/dist/esm/memory/pipeline/semantic.d.ts +15 -0
- package/dist/esm/memory/pipeline/semantic.js +3 -1
- package/dist/esm/memory/pipeline/semantic.js.map +1 -1
- package/dist/esm/memory/retrieval/index.d.ts +10 -0
- package/dist/esm/memory/retrieval/index.js +3 -0
- package/dist/esm/memory/retrieval/index.js.map +1 -0
- package/dist/esm/memory/retrieval/provenance.d.ts +43 -0
- package/dist/esm/memory/retrieval/provenance.js +60 -0
- package/dist/esm/memory/retrieval/provenance.js.map +1 -0
- package/dist/esm/memory/retrieval/topK.d.ts +67 -0
- package/dist/esm/memory/retrieval/topK.js +53 -0
- package/dist/esm/memory/retrieval/topK.js.map +1 -0
- package/dist/esm/memory/retrieval/types.d.ts +189 -0
- package/dist/esm/memory/retrieval/types.js +2 -0
- package/dist/esm/memory/retrieval/types.js.map +1 -0
- package/dist/esm/memory/stages/formatDefault.d.ts +52 -26
- package/dist/esm/memory/stages/formatDefault.js +118 -28
- package/dist/esm/memory/stages/formatDefault.js.map +1 -1
- package/dist/esm/memory/stages/pickByBudget.js +53 -3
- package/dist/esm/memory/stages/pickByBudget.js.map +1 -1
- package/dist/esm/memory/stages/types.d.ts +15 -0
- package/dist/esm/memory/wire/mountMemoryPipeline.d.ts +25 -0
- package/dist/esm/memory/wire/mountMemoryPipeline.js +11 -2
- package/dist/esm/memory/wire/mountMemoryPipeline.js.map +1 -1
- package/dist/esm/memory-providers.d.ts +2 -0
- package/dist/esm/memory-providers.js +8 -0
- package/dist/esm/memory-providers.js.map +1 -1
- package/dist/esm/observe.d.ts +2 -0
- package/dist/esm/observe.js +2 -0
- package/dist/esm/observe.js.map +1 -1
- package/dist/esm/recorders/core/EmbeddingRecorder.d.ts +19 -0
- package/dist/esm/recorders/core/EmbeddingRecorder.js +24 -0
- package/dist/esm/recorders/core/EmbeddingRecorder.js.map +1 -0
- package/dist/events/registry.js +2 -0
- package/dist/events/registry.js.map +1 -1
- package/dist/hosting/sqliteSessions.js +10 -27
- package/dist/hosting/sqliteSessions.js.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/fnv1a.js +28 -0
- package/dist/lib/fnv1a.js.map +1 -0
- package/dist/lib/injection-engine/types.js.map +1 -1
- package/dist/lib/rag/defineRAG.js +113 -26
- package/dist/lib/rag/defineRAG.js.map +1 -1
- package/dist/lib/rag/index.js +2 -1
- package/dist/lib/rag/index.js.map +1 -1
- package/dist/lib/rag/indexDocuments.js +12 -1
- package/dist/lib/rag/indexDocuments.js.map +1 -1
- package/dist/lib/sqliteUnavailable.js +65 -0
- package/dist/lib/sqliteUnavailable.js.map +1 -0
- package/dist/memory/define.js +38 -2
- package/dist/memory/define.js.map +1 -1
- package/dist/memory/define.types.js +21 -1
- package/dist/memory/define.types.js.map +1 -1
- package/dist/memory/embedding/embedMessages.js +16 -0
- package/dist/memory/embedding/embedMessages.js.map +1 -1
- package/dist/memory/embedding/emitEmbedding.js +19 -0
- package/dist/memory/embedding/emitEmbedding.js.map +1 -0
- package/dist/memory/embedding/loadRelevant.js +152 -8
- package/dist/memory/embedding/loadRelevant.js.map +1 -1
- package/dist/memory/embedding/mockEmbedder.js +4 -0
- package/dist/memory/embedding/mockEmbedder.js.map +1 -1
- package/dist/memory/index.js +5 -1
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/pipeline/semantic.js +2 -0
- package/dist/memory/pipeline/semantic.js.map +1 -1
- package/dist/memory/retrieval/index.js +9 -0
- package/dist/memory/retrieval/index.js.map +1 -0
- package/dist/memory/retrieval/provenance.js +65 -0
- package/dist/memory/retrieval/provenance.js.map +1 -0
- package/dist/memory/retrieval/topK.js +57 -0
- package/dist/memory/retrieval/topK.js.map +1 -0
- package/dist/memory/retrieval/types.js +3 -0
- package/dist/memory/retrieval/types.js.map +1 -0
- package/dist/memory/stages/formatDefault.js +118 -28
- package/dist/memory/stages/formatDefault.js.map +1 -1
- package/dist/memory/stages/pickByBudget.js +53 -3
- package/dist/memory/stages/pickByBudget.js.map +1 -1
- package/dist/memory/wire/mountMemoryPipeline.js +11 -2
- package/dist/memory/wire/mountMemoryPipeline.js.map +1 -1
- package/dist/memory-providers.js +13 -1
- package/dist/memory-providers.js.map +1 -1
- package/dist/observe.js +4 -1
- package/dist/observe.js.map +1 -1
- package/dist/recorders/core/EmbeddingRecorder.js +28 -0
- package/dist/recorders/core/EmbeddingRecorder.js.map +1 -0
- package/dist/types/adapters/memory/sqliteVector.d.ts +252 -0
- package/dist/types/adapters/memory/sqliteVector.d.ts.map +1 -0
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/memoryRecallInjections.d.ts +13 -3
- package/dist/types/core/agent/memoryRecallInjections.d.ts.map +1 -1
- package/dist/types/core/agent/stages/deliver.d.ts +6 -3
- package/dist/types/core/agent/stages/deliver.d.ts.map +1 -1
- package/dist/types/core/slots/buildSystemPromptSlot.d.ts.map +1 -1
- package/dist/types/core/slots/helpers.d.ts +11 -2
- package/dist/types/core/slots/helpers.d.ts.map +1 -1
- package/dist/types/embedders/index.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +63 -0
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/events/registry.d.ts +3 -1
- package/dist/types/events/registry.d.ts.map +1 -1
- package/dist/types/hosting/sqliteSessions.d.ts +7 -13
- package/dist/types/hosting/sqliteSessions.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/fnv1a.d.ts +17 -0
- package/dist/types/lib/fnv1a.d.ts.map +1 -0
- package/dist/types/lib/injection-engine/types.d.ts +17 -0
- package/dist/types/lib/injection-engine/types.d.ts.map +1 -1
- package/dist/types/lib/rag/defineRAG.d.ts +126 -26
- package/dist/types/lib/rag/defineRAG.d.ts.map +1 -1
- package/dist/types/lib/rag/index.d.ts +1 -1
- package/dist/types/lib/rag/index.d.ts.map +1 -1
- package/dist/types/lib/rag/indexDocuments.d.ts +26 -4
- package/dist/types/lib/rag/indexDocuments.d.ts.map +1 -1
- package/dist/types/lib/sqliteUnavailable.d.ts +56 -0
- package/dist/types/lib/sqliteUnavailable.d.ts.map +1 -0
- package/dist/types/memory/define.d.ts.map +1 -1
- package/dist/types/memory/define.types.d.ts +93 -1
- package/dist/types/memory/define.types.d.ts.map +1 -1
- package/dist/types/memory/embedding/embedMessages.d.ts.map +1 -1
- package/dist/types/memory/embedding/emitEmbedding.d.ts +39 -0
- package/dist/types/memory/embedding/emitEmbedding.d.ts.map +1 -0
- package/dist/types/memory/embedding/loadRelevant.d.ts +49 -15
- package/dist/types/memory/embedding/loadRelevant.d.ts.map +1 -1
- package/dist/types/memory/embedding/mockEmbedder.d.ts.map +1 -1
- package/dist/types/memory/embedding/types.d.ts +24 -0
- package/dist/types/memory/embedding/types.d.ts.map +1 -1
- package/dist/types/memory/index.d.ts +2 -1
- package/dist/types/memory/index.d.ts.map +1 -1
- package/dist/types/memory/pipeline/semantic.d.ts +15 -0
- package/dist/types/memory/pipeline/semantic.d.ts.map +1 -1
- package/dist/types/memory/retrieval/index.d.ts +11 -0
- package/dist/types/memory/retrieval/index.d.ts.map +1 -0
- package/dist/types/memory/retrieval/provenance.d.ts +44 -0
- package/dist/types/memory/retrieval/provenance.d.ts.map +1 -0
- package/dist/types/memory/retrieval/topK.d.ts +68 -0
- package/dist/types/memory/retrieval/topK.d.ts.map +1 -0
- package/dist/types/memory/retrieval/types.d.ts +190 -0
- package/dist/types/memory/retrieval/types.d.ts.map +1 -0
- package/dist/types/memory/stages/formatDefault.d.ts +52 -26
- package/dist/types/memory/stages/formatDefault.d.ts.map +1 -1
- package/dist/types/memory/stages/pickByBudget.d.ts.map +1 -1
- package/dist/types/memory/stages/types.d.ts +15 -0
- package/dist/types/memory/stages/types.d.ts.map +1 -1
- package/dist/types/memory/wire/mountMemoryPipeline.d.ts +25 -0
- package/dist/types/memory/wire/mountMemoryPipeline.d.ts.map +1 -1
- package/dist/types/memory-providers.d.ts +2 -0
- package/dist/types/memory-providers.d.ts.map +1 -1
- package/dist/types/observe.d.ts +2 -0
- package/dist/types/observe.d.ts.map +1 -1
- package/dist/types/recorders/core/EmbeddingRecorder.d.ts +20 -0
- package/dist/types/recorders/core/EmbeddingRecorder.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqliteSessions.js","sourceRoot":"","sources":["../../../src/hosting/sqliteSessions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"sqliteSessions.js","sourceRoot":"","sources":["../../../src/hosting/sqliteSessions.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -53,4 +53,5 @@ export { workflow, Workflow, type NextStepInput, type WorkflowOptions, } from '.
|
|
|
53
53
|
export { graph, Graph, type GraphEdge, type GraphInput, type GraphNode, type GraphOptions, type GraphOutput, } from './core-flow/Graph.js';
|
|
54
54
|
export { providerFromEnv, type ProviderKind, type CreateProviderOptions, type ProviderFromEnv, } from './adapters/llm/createProvider.js';
|
|
55
55
|
export * from './patterns/index.js';
|
|
56
|
-
export { defineRAG, type DefineRAGOptions, indexDocuments, type IndexDocumentsOptions, type RagDocument, } from './lib/rag/index.js';
|
|
56
|
+
export { defineRAG, DEFAULT_CORPUS_IDENTITY, type DefineRAGOptions, indexDocuments, type IndexDocumentsOptions, type RagDocument, } from './lib/rag/index.js';
|
|
57
|
+
export { topK, type TopKOptions, type RetrievalStrategy, type RetrievalEvidence, type RetrievedCandidate, type RetrievalRejectReason, } from './memory/retrieval/index.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -173,7 +173,12 @@ export * from './patterns/index.js';
|
|
|
173
173
|
// RAG — retrieval-augmented generation as a context-engineering flavor.
|
|
174
174
|
// Thin sugar over `defineMemory({ type: SEMANTIC, strategy: TOP_K })`
|
|
175
175
|
// plus the `indexDocuments` helper for seeding the corpus at startup.
|
|
176
|
-
export { defineRAG, indexDocuments, } from './lib/rag/index.js';
|
|
176
|
+
export { defineRAG, DEFAULT_CORPUS_IDENTITY, indexDocuments, } from './lib/rag/index.js';
|
|
177
|
+
// The retrieval seam (8.8.0) — what a retrieval considered, and the rule
|
|
178
|
+
// that decided what it kept. `topK` is the rule every release before this
|
|
179
|
+
// one applied without naming it. The record types are here because a
|
|
180
|
+
// consumer reading `agentfootprint.memory.retrieved` needs them.
|
|
181
|
+
export { topK, } from './memory/retrieval/index.js';
|
|
177
182
|
// MCP + tool dispatch. Tool sources — `mcpClient` / `mockMcpClient`,
|
|
178
183
|
// which connect to a Model Context Protocol server and expose its tools
|
|
179
184
|
// as agentfootprint `Tool[]` for `agent.tools(...)` — and the dispatch
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fnv1a — the one 32-bit content hash this library uses.
|
|
3
|
+
*
|
|
4
|
+
* Pattern: leaf utility (imports nothing).
|
|
5
|
+
* Role: shared by the slot composers (`core/slots/helpers.ts`, which
|
|
6
|
+
* re-exports it under the same name) and by the memory layer's
|
|
7
|
+
* retrieval record. It lives here rather than in either of them
|
|
8
|
+
* because `memory/` must not import `core/` — `core/` already
|
|
9
|
+
* imports `memory/`, and a second hash implementation is how two
|
|
10
|
+
* recordings of the same bytes end up disagreeing about their id.
|
|
11
|
+
* Emits: N/A.
|
|
12
|
+
*
|
|
13
|
+
* Not cryptographic and not meant to be: this identifies content for
|
|
14
|
+
* dedup and correlation inside one recording, never for authentication.
|
|
15
|
+
*/
|
|
16
|
+
export declare function fnv1a(input: string): string;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fnv1a — the one 32-bit content hash this library uses.
|
|
3
|
+
*
|
|
4
|
+
* Pattern: leaf utility (imports nothing).
|
|
5
|
+
* Role: shared by the slot composers (`core/slots/helpers.ts`, which
|
|
6
|
+
* re-exports it under the same name) and by the memory layer's
|
|
7
|
+
* retrieval record. It lives here rather than in either of them
|
|
8
|
+
* because `memory/` must not import `core/` — `core/` already
|
|
9
|
+
* imports `memory/`, and a second hash implementation is how two
|
|
10
|
+
* recordings of the same bytes end up disagreeing about their id.
|
|
11
|
+
* Emits: N/A.
|
|
12
|
+
*
|
|
13
|
+
* Not cryptographic and not meant to be: this identifies content for
|
|
14
|
+
* dedup and correlation inside one recording, never for authentication.
|
|
15
|
+
*/
|
|
16
|
+
export function fnv1a(input) {
|
|
17
|
+
let h = 2166136261;
|
|
18
|
+
for (let i = 0; i < input.length; i++) {
|
|
19
|
+
h ^= input.charCodeAt(i);
|
|
20
|
+
h = Math.imul(h, 16777619);
|
|
21
|
+
}
|
|
22
|
+
return (h >>> 0).toString(16);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=fnv1a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fnv1a.js","sourceRoot":"","sources":["../../../src/lib/fnv1a.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,IAAI,CAAC,GAAG,UAAU,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -271,6 +271,23 @@ export interface ActiveInjection {
|
|
|
271
271
|
* decision's own `?? 'never'` default then applies, as it always did.
|
|
272
272
|
*/
|
|
273
273
|
readonly cache?: import('../../cache/types.js').CachePolicy;
|
|
274
|
+
/**
|
|
275
|
+
* Why THIS piece of retrieved content earned its place (8.8.0).
|
|
276
|
+
*
|
|
277
|
+
* Present only on injections a retrieval produced — one per admitted
|
|
278
|
+
* chunk, carrying that chunk's own similarity score, its rank in the
|
|
279
|
+
* candidate pool, and the floor it had to clear. The slot composer
|
|
280
|
+
* copies these onto the `InjectionRecord`, which is what finally fills
|
|
281
|
+
* `ContextInjectedPayload.retrievalScore` / `.rankPosition` /
|
|
282
|
+
* `.threshold` — three fields declared since 2.x that nothing has ever
|
|
283
|
+
* written, because until the recall was split per chunk there was no
|
|
284
|
+
* single score for a record to carry.
|
|
285
|
+
*/
|
|
286
|
+
readonly retrieval?: {
|
|
287
|
+
readonly score: number;
|
|
288
|
+
readonly rank: number;
|
|
289
|
+
readonly threshold?: number;
|
|
290
|
+
};
|
|
274
291
|
readonly inject: {
|
|
275
292
|
readonly systemPrompt?: string;
|
|
276
293
|
readonly messages?: ReadonlyArray<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA8SH,wEAAwE;AACxE,MAAM,UAAU,sBAAsB,CAAC,GAAc;IACnD,qEAAqE;IACrE,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,IAAI,GAAG,GAAG,CAAC,QAEJ,CAAC;IACd,MAAM,GAAG,GAAoB;QAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAA6C,EAAE,CAAC;QAC7F,GAAG,CAAC,IAAI,EAAE,YAAY,IAAI;YACxB,YAAY,EAAE,IAAI,CAAC,YAA+C;SACnE,CAAC;QACF,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,IAAI;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAiC;SAC9C,CAAC;QACF,MAAM,EAAE;YACN,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACzE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI;gBACtB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE;oBACvB,WAAW,EAAE,GAAG,CAAC,EAAE;iBACpB,CAAC,CAAC;aACJ,CAAC;SACH;KACF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,23 +1,66 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* defineRAG —
|
|
2
|
+
* defineRAG — retrieval-augmented generation over a document corpus.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* strategy: TOP_K })` — the rename is for intent + ergonomics.
|
|
4
|
+
* Embed the user's question, retrieve the most similar chunks from a
|
|
5
|
+
* vector store, inject them into the system-prompt slot of the next LLM
|
|
6
|
+
* call. It is the same machinery as `defineMemory({ type: SEMANTIC,
|
|
7
|
+
* strategy: TOP_K })` — with three differences that are not cosmetic:
|
|
9
8
|
*
|
|
10
9
|
* defineMemory ─┬─► EPISODIC (raw conversation)
|
|
11
10
|
* ├─► SEMANTIC (extracted facts / RAG chunks)
|
|
12
11
|
* ├─► NARRATIVE (beats / summaries)
|
|
13
12
|
* └─► CAUSAL (footprintjs decision snapshots)
|
|
14
13
|
*
|
|
15
|
-
* defineRAG ─► SEMANTIC + TOP_K
|
|
16
|
-
*
|
|
14
|
+
* defineRAG ─► SEMANTIC + TOP_K, READ-ONLY, over a NAMED CORPUS,
|
|
15
|
+
* rendered as citable <source> blocks.
|
|
16
|
+
*
|
|
17
|
+
* ─── What changed in 8.8.0, and why ────────────────────────────────────
|
|
18
|
+
*
|
|
19
|
+
* **1. A corpus is read-only.** Until 8.8.0 `defineRAG` also mounted the
|
|
20
|
+
* semantic pipeline's WRITE half, which embedded every conversation turn
|
|
21
|
+
* and stored it in the same namespace as the documents. The consequence
|
|
22
|
+
* was measurable and bad: the user's own question, re-embedded, is the
|
|
23
|
+
* single best-scoring "document" in the corpus (cosine 1.0 against
|
|
24
|
+
* itself), so it came back as retrieval hit #1 and consumed a slot in
|
|
25
|
+
* the top-K budget that a real passage should have had. A corpus is not
|
|
26
|
+
* a conversation log. Nothing this retriever reads is written back.
|
|
27
|
+
*
|
|
28
|
+
* If you want conversation memory ALONGSIDE a corpus, that is what
|
|
29
|
+
* `defineMemory` is for, and the two are registered separately, each
|
|
30
|
+
* with its own store:
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* const agent = Agent.create({ provider })
|
|
34
|
+
* .rag(defineRAG({ id: 'product-docs', store: corpusStore, embedder }))
|
|
35
|
+
* .memory(defineMemory({
|
|
36
|
+
* id: 'chat',
|
|
37
|
+
* type: MEMORY_TYPES.EPISODIC,
|
|
38
|
+
* strategy: { kind: MEMORY_STRATEGIES.WINDOW, size: 10 },
|
|
39
|
+
* store: conversationStore,
|
|
40
|
+
* }))
|
|
41
|
+
* .build();
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* **2. The corpus has its own namespace.** A memory reads under the
|
|
45
|
+
* identity passed to `agent.run()`. For conversation recall that is
|
|
46
|
+
* right. For a shared corpus it was the reason the documented example
|
|
47
|
+
* retrieved NOTHING: `indexDocuments` writes under
|
|
48
|
+
* `{ conversationId: '_global' }` by default, while a run with no
|
|
49
|
+
* explicit identity gets `{ conversationId: 'run-<timestamp>-<n>' }` —
|
|
50
|
+
* so the write side and the read side never met, silently. `corpus`
|
|
51
|
+
* defaults to the same `'_global'` the indexer uses, so the documented
|
|
52
|
+
* example works with no extra arguments; pass it explicitly when you
|
|
53
|
+
* index per tenant.
|
|
54
|
+
*
|
|
55
|
+
* **3. Chunks are citable.** Retrieved passages render as
|
|
56
|
+
* `<source id="refunds.md#3" doc="refunds.md" score="0.81">` under a
|
|
57
|
+
* corpus header, instead of the conversation-recall shape that printed
|
|
58
|
+
* `role="unknown" turn="0"` on a page of a PDF and gave the model
|
|
59
|
+
* nothing to cite.
|
|
17
60
|
*
|
|
18
61
|
* Pattern: Composition over duplication — defineRAG returns a
|
|
19
62
|
* MemoryDefinition produced by defineMemory. No new engine
|
|
20
|
-
* code, no new slot subflow, no new
|
|
63
|
+
* code, no new slot subflow, no new stage.
|
|
21
64
|
*
|
|
22
65
|
* Role: Layer-3 context-engineering primitive. Lives next to
|
|
23
66
|
* defineSkill / defineSteering / defineInstruction / defineFact
|
|
@@ -25,27 +68,32 @@
|
|
|
25
68
|
* (RAG content is computed at runtime via async retrieval —
|
|
26
69
|
* can't fit the synchronous Injection.inject shape).
|
|
27
70
|
*
|
|
28
|
-
* Emits:
|
|
29
|
-
*
|
|
30
|
-
*
|
|
71
|
+
* Emits: `agentfootprint.memory.retrieved` (once per retrieval, with
|
|
72
|
+
* every candidate and its score — including the rejected ones),
|
|
73
|
+
* `agentfootprint.memory.attached` (once per chunk that reached
|
|
74
|
+
* the prompt), and `agentfootprint.context.injected` with
|
|
75
|
+
* `source: 'rag'` (once per chunk).
|
|
31
76
|
*
|
|
32
77
|
* @see ./indexDocuments.ts for the seeding helper
|
|
33
78
|
* @see ../../memory/define.ts for the underlying factory
|
|
79
|
+
* @see ../../memory/retrieval/ for the retrieval seam
|
|
34
80
|
* @see ../../memory/asRoleRefusal.ts for why `asRole` is refused, not honoured
|
|
35
81
|
*
|
|
36
|
-
* @example Basic usage
|
|
82
|
+
* @example Basic usage — works with no identity argument anywhere
|
|
37
83
|
* ```ts
|
|
38
|
-
* import {
|
|
39
|
-
import { InMemoryStore, mockEmbedder } from 'agentfootprint/memory'
|
|
40
|
-
import { mock } from 'agentfootprint/
|
|
84
|
+
* import { Agent, defineRAG, indexDocuments } from 'agentfootprint';
|
|
85
|
+
* import { InMemoryStore, mockEmbedder } from 'agentfootprint/memory';
|
|
86
|
+
* import { mock } from 'agentfootprint/providers';
|
|
41
87
|
*
|
|
42
88
|
* const embedder = mockEmbedder();
|
|
43
89
|
* const store = new InMemoryStore();
|
|
44
90
|
*
|
|
45
|
-
* // Seed the
|
|
91
|
+
* // Seed the corpus once at startup (defaults to the '_global' namespace).
|
|
46
92
|
* await indexDocuments(store, embedder, [
|
|
47
|
-
* { id: '
|
|
48
|
-
*
|
|
93
|
+
* { id: 'refunds.md#0', content: 'Refunds are processed within 3 business days.',
|
|
94
|
+
* metadata: { source: 'refunds.md' } },
|
|
95
|
+
* { id: 'pricing.md#0', content: 'Pro plan costs $20/month.',
|
|
96
|
+
* metadata: { source: 'pricing.md' } },
|
|
49
97
|
* ]);
|
|
50
98
|
*
|
|
51
99
|
* const docs = defineRAG({
|
|
@@ -60,11 +108,27 @@ import { mock } from 'agentfootprint/llm-providers';
|
|
|
60
108
|
* const agent = Agent.create({ provider: mock({ reply: 'ok' }), model: 'mock' })
|
|
61
109
|
* .rag(docs)
|
|
62
110
|
* .build();
|
|
111
|
+
*
|
|
112
|
+
* agent.on('agentfootprint.memory.retrieved', (e) => {
|
|
113
|
+
* // every candidate, admitted or not, with its score and its reason
|
|
114
|
+
* console.log(e.payload.candidates);
|
|
115
|
+
* });
|
|
116
|
+
*
|
|
117
|
+
* await agent.run({ message: 'How long do refunds take?' });
|
|
63
118
|
* ```
|
|
64
119
|
*/
|
|
65
120
|
import type { Embedder } from '../../memory/embedding/index.js';
|
|
66
121
|
import type { MemoryStore } from '../../memory/store/index.js';
|
|
122
|
+
import type { MemoryIdentity } from '../../memory/identity/index.js';
|
|
67
123
|
import type { MemoryDefinition } from '../../memory/define.types.js';
|
|
124
|
+
import type { RetrievalStrategy } from '../../memory/retrieval/index.js';
|
|
125
|
+
/**
|
|
126
|
+
* The namespace a corpus lives in unless told otherwise — the same one
|
|
127
|
+
* `indexDocuments` writes to by default. The two defaults are one value
|
|
128
|
+
* on purpose: index with no options, retrieve with no options, and the
|
|
129
|
+
* documents are found.
|
|
130
|
+
*/
|
|
131
|
+
export declare const DEFAULT_CORPUS_IDENTITY: MemoryIdentity;
|
|
68
132
|
export interface DefineRAGOptions {
|
|
69
133
|
/** Stable id. Becomes the scope-key suffix and the Lens label. */
|
|
70
134
|
readonly id: string;
|
|
@@ -78,13 +142,13 @@ export interface DefineRAGOptions {
|
|
|
78
142
|
* Vector-capable store containing the indexed corpus. Must implement
|
|
79
143
|
* `search()`. Use `indexDocuments(store, embedder, docs)` at startup
|
|
80
144
|
* to populate it. Ships with `InMemoryStore` for dev/tests; swap to
|
|
81
|
-
*
|
|
145
|
+
* a durable adapter in production.
|
|
82
146
|
*/
|
|
83
147
|
readonly store: MemoryStore;
|
|
84
148
|
/**
|
|
85
149
|
* Embedder used for the read-side query. Pass the SAME embedder
|
|
86
|
-
* instance (or one with the same `
|
|
87
|
-
* — cross-model similarity scores are not comparable.
|
|
150
|
+
* instance (or one with the same `embedderId`) that was used for
|
|
151
|
+
* indexing — cross-model similarity scores are not comparable.
|
|
88
152
|
*/
|
|
89
153
|
readonly embedder: Embedder;
|
|
90
154
|
/**
|
|
@@ -93,10 +157,28 @@ export interface DefineRAGOptions {
|
|
|
93
157
|
* embedder swap doesn't pollute results.
|
|
94
158
|
*/
|
|
95
159
|
readonly embedderId?: string;
|
|
160
|
+
/**
|
|
161
|
+
* The namespace this corpus lives in. Default
|
|
162
|
+
* `{ conversationId: '_global' }` — the same default `indexDocuments`
|
|
163
|
+
* writes to, so the plain path needs no argument on either side.
|
|
164
|
+
*
|
|
165
|
+
* A corpus is deliberately NOT scoped to the run's identity: it is
|
|
166
|
+
* shared by every conversation, and reading it under a per-run
|
|
167
|
+
* conversation id is the bug this default fixes.
|
|
168
|
+
*
|
|
169
|
+
* **Multi-tenant:** pass the tenant's identity here AND the same one to
|
|
170
|
+
* `indexDocuments({ identity })`. A namespace that holds nothing is now
|
|
171
|
+
* reported (`corpusEmpty` on `agentfootprint.memory.retrieved`, plus a
|
|
172
|
+
* one-time warning naming the namespace), so a mismatch is loud rather
|
|
173
|
+
* than an empty answer.
|
|
174
|
+
*/
|
|
175
|
+
readonly corpus?: MemoryIdentity;
|
|
96
176
|
/**
|
|
97
177
|
* Top-K chunks to retrieve per turn. Default 3 (balanced —
|
|
98
178
|
* defends against lost-in-the-middle while giving multiple
|
|
99
179
|
* perspectives). Increase for richer context, decrease for cost.
|
|
180
|
+
*
|
|
181
|
+
* Shorthand for `retrieval: topK({ k })`; the two EXCLUDE.
|
|
100
182
|
*/
|
|
101
183
|
readonly topK?: number;
|
|
102
184
|
/**
|
|
@@ -106,12 +188,29 @@ export interface DefineRAGOptions {
|
|
|
106
188
|
*
|
|
107
189
|
* Tuning note: 0.7 is a high bar for some embedders. Sentence-BERT
|
|
108
190
|
* relatives (`all-MiniLM-L6-v2`, etc.) often score 0.4–0.6 even on
|
|
109
|
-
* relevant chunks.
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
191
|
+
* relevant chunks. You no longer have to guess: the rejected
|
|
192
|
+
* candidates and their scores are on every
|
|
193
|
+
* `agentfootprint.memory.retrieved` event, so the right threshold is
|
|
194
|
+
* a number you can read off a run.
|
|
195
|
+
*
|
|
196
|
+
* Shorthand for `retrieval: topK({ threshold })`; the two EXCLUDE.
|
|
113
197
|
*/
|
|
114
198
|
readonly threshold?: number;
|
|
199
|
+
/**
|
|
200
|
+
* The retrieval rule, spelled out. Replaces `topK` + `threshold`
|
|
201
|
+
* entirely — passing both is refused, because they could disagree
|
|
202
|
+
* and the recording would then name a `k` the run did not use.
|
|
203
|
+
*
|
|
204
|
+
* ```ts
|
|
205
|
+
* import { topK } from 'agentfootprint/memory';
|
|
206
|
+
* defineRAG({ id, store, embedder, retrieval: topK({ k: 5, threshold: 0.55 }) });
|
|
207
|
+
* ```
|
|
208
|
+
*
|
|
209
|
+
* A cross-encoder re-ranker and a diversity (MMR) selector are the
|
|
210
|
+
* next two adapters behind this same interface; neither ships in
|
|
211
|
+
* 8.8.0, and the seam exists so that when they do, nothing else moves.
|
|
212
|
+
*/
|
|
213
|
+
readonly retrieval?: RetrievalStrategy;
|
|
115
214
|
}
|
|
116
215
|
/**
|
|
117
216
|
* Build a RAG context-engineering definition. The returned
|
|
@@ -120,5 +219,6 @@ export interface DefineRAGOptions {
|
|
|
120
219
|
*
|
|
121
220
|
* @throws when `store` does not implement `search()`. RAG requires a
|
|
122
221
|
* vector-capable adapter.
|
|
222
|
+
* @throws when `retrieval` is combined with `topK` or `threshold`.
|
|
123
223
|
*/
|
|
124
224
|
export declare function defineRAG(opts: DefineRAGOptions): MemoryDefinition;
|
|
@@ -1,23 +1,66 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* defineRAG —
|
|
2
|
+
* defineRAG — retrieval-augmented generation over a document corpus.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* strategy: TOP_K })` — the rename is for intent + ergonomics.
|
|
4
|
+
* Embed the user's question, retrieve the most similar chunks from a
|
|
5
|
+
* vector store, inject them into the system-prompt slot of the next LLM
|
|
6
|
+
* call. It is the same machinery as `defineMemory({ type: SEMANTIC,
|
|
7
|
+
* strategy: TOP_K })` — with three differences that are not cosmetic:
|
|
9
8
|
*
|
|
10
9
|
* defineMemory ─┬─► EPISODIC (raw conversation)
|
|
11
10
|
* ├─► SEMANTIC (extracted facts / RAG chunks)
|
|
12
11
|
* ├─► NARRATIVE (beats / summaries)
|
|
13
12
|
* └─► CAUSAL (footprintjs decision snapshots)
|
|
14
13
|
*
|
|
15
|
-
* defineRAG ─► SEMANTIC + TOP_K
|
|
16
|
-
*
|
|
14
|
+
* defineRAG ─► SEMANTIC + TOP_K, READ-ONLY, over a NAMED CORPUS,
|
|
15
|
+
* rendered as citable <source> blocks.
|
|
16
|
+
*
|
|
17
|
+
* ─── What changed in 8.8.0, and why ────────────────────────────────────
|
|
18
|
+
*
|
|
19
|
+
* **1. A corpus is read-only.** Until 8.8.0 `defineRAG` also mounted the
|
|
20
|
+
* semantic pipeline's WRITE half, which embedded every conversation turn
|
|
21
|
+
* and stored it in the same namespace as the documents. The consequence
|
|
22
|
+
* was measurable and bad: the user's own question, re-embedded, is the
|
|
23
|
+
* single best-scoring "document" in the corpus (cosine 1.0 against
|
|
24
|
+
* itself), so it came back as retrieval hit #1 and consumed a slot in
|
|
25
|
+
* the top-K budget that a real passage should have had. A corpus is not
|
|
26
|
+
* a conversation log. Nothing this retriever reads is written back.
|
|
27
|
+
*
|
|
28
|
+
* If you want conversation memory ALONGSIDE a corpus, that is what
|
|
29
|
+
* `defineMemory` is for, and the two are registered separately, each
|
|
30
|
+
* with its own store:
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* const agent = Agent.create({ provider })
|
|
34
|
+
* .rag(defineRAG({ id: 'product-docs', store: corpusStore, embedder }))
|
|
35
|
+
* .memory(defineMemory({
|
|
36
|
+
* id: 'chat',
|
|
37
|
+
* type: MEMORY_TYPES.EPISODIC,
|
|
38
|
+
* strategy: { kind: MEMORY_STRATEGIES.WINDOW, size: 10 },
|
|
39
|
+
* store: conversationStore,
|
|
40
|
+
* }))
|
|
41
|
+
* .build();
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* **2. The corpus has its own namespace.** A memory reads under the
|
|
45
|
+
* identity passed to `agent.run()`. For conversation recall that is
|
|
46
|
+
* right. For a shared corpus it was the reason the documented example
|
|
47
|
+
* retrieved NOTHING: `indexDocuments` writes under
|
|
48
|
+
* `{ conversationId: '_global' }` by default, while a run with no
|
|
49
|
+
* explicit identity gets `{ conversationId: 'run-<timestamp>-<n>' }` —
|
|
50
|
+
* so the write side and the read side never met, silently. `corpus`
|
|
51
|
+
* defaults to the same `'_global'` the indexer uses, so the documented
|
|
52
|
+
* example works with no extra arguments; pass it explicitly when you
|
|
53
|
+
* index per tenant.
|
|
54
|
+
*
|
|
55
|
+
* **3. Chunks are citable.** Retrieved passages render as
|
|
56
|
+
* `<source id="refunds.md#3" doc="refunds.md" score="0.81">` under a
|
|
57
|
+
* corpus header, instead of the conversation-recall shape that printed
|
|
58
|
+
* `role="unknown" turn="0"` on a page of a PDF and gave the model
|
|
59
|
+
* nothing to cite.
|
|
17
60
|
*
|
|
18
61
|
* Pattern: Composition over duplication — defineRAG returns a
|
|
19
62
|
* MemoryDefinition produced by defineMemory. No new engine
|
|
20
|
-
* code, no new slot subflow, no new
|
|
63
|
+
* code, no new slot subflow, no new stage.
|
|
21
64
|
*
|
|
22
65
|
* Role: Layer-3 context-engineering primitive. Lives next to
|
|
23
66
|
* defineSkill / defineSteering / defineInstruction / defineFact
|
|
@@ -25,27 +68,32 @@
|
|
|
25
68
|
* (RAG content is computed at runtime via async retrieval —
|
|
26
69
|
* can't fit the synchronous Injection.inject shape).
|
|
27
70
|
*
|
|
28
|
-
* Emits:
|
|
29
|
-
*
|
|
30
|
-
*
|
|
71
|
+
* Emits: `agentfootprint.memory.retrieved` (once per retrieval, with
|
|
72
|
+
* every candidate and its score — including the rejected ones),
|
|
73
|
+
* `agentfootprint.memory.attached` (once per chunk that reached
|
|
74
|
+
* the prompt), and `agentfootprint.context.injected` with
|
|
75
|
+
* `source: 'rag'` (once per chunk).
|
|
31
76
|
*
|
|
32
77
|
* @see ./indexDocuments.ts for the seeding helper
|
|
33
78
|
* @see ../../memory/define.ts for the underlying factory
|
|
79
|
+
* @see ../../memory/retrieval/ for the retrieval seam
|
|
34
80
|
* @see ../../memory/asRoleRefusal.ts for why `asRole` is refused, not honoured
|
|
35
81
|
*
|
|
36
|
-
* @example Basic usage
|
|
82
|
+
* @example Basic usage — works with no identity argument anywhere
|
|
37
83
|
* ```ts
|
|
38
|
-
* import {
|
|
39
|
-
import { InMemoryStore, mockEmbedder } from 'agentfootprint/memory'
|
|
40
|
-
import { mock } from 'agentfootprint/
|
|
84
|
+
* import { Agent, defineRAG, indexDocuments } from 'agentfootprint';
|
|
85
|
+
* import { InMemoryStore, mockEmbedder } from 'agentfootprint/memory';
|
|
86
|
+
* import { mock } from 'agentfootprint/providers';
|
|
41
87
|
*
|
|
42
88
|
* const embedder = mockEmbedder();
|
|
43
89
|
* const store = new InMemoryStore();
|
|
44
90
|
*
|
|
45
|
-
* // Seed the
|
|
91
|
+
* // Seed the corpus once at startup (defaults to the '_global' namespace).
|
|
46
92
|
* await indexDocuments(store, embedder, [
|
|
47
|
-
* { id: '
|
|
48
|
-
*
|
|
93
|
+
* { id: 'refunds.md#0', content: 'Refunds are processed within 3 business days.',
|
|
94
|
+
* metadata: { source: 'refunds.md' } },
|
|
95
|
+
* { id: 'pricing.md#0', content: 'Pro plan costs $20/month.',
|
|
96
|
+
* metadata: { source: 'pricing.md' } },
|
|
49
97
|
* ]);
|
|
50
98
|
*
|
|
51
99
|
* const docs = defineRAG({
|
|
@@ -60,11 +108,25 @@ import { mock } from 'agentfootprint/llm-providers';
|
|
|
60
108
|
* const agent = Agent.create({ provider: mock({ reply: 'ok' }), model: 'mock' })
|
|
61
109
|
* .rag(docs)
|
|
62
110
|
* .build();
|
|
111
|
+
*
|
|
112
|
+
* agent.on('agentfootprint.memory.retrieved', (e) => {
|
|
113
|
+
* // every candidate, admitted or not, with its score and its reason
|
|
114
|
+
* console.log(e.payload.candidates);
|
|
115
|
+
* });
|
|
116
|
+
*
|
|
117
|
+
* await agent.run({ message: 'How long do refunds take?' });
|
|
63
118
|
* ```
|
|
64
119
|
*/
|
|
65
120
|
import { MEMORY_TYPES, MEMORY_STRATEGIES } from '../../memory/define.types.js';
|
|
66
121
|
import { defineMemory } from '../../memory/define.js';
|
|
67
122
|
import { refuseAsRole } from '../../memory/asRoleRefusal.js';
|
|
123
|
+
/**
|
|
124
|
+
* The namespace a corpus lives in unless told otherwise — the same one
|
|
125
|
+
* `indexDocuments` writes to by default. The two defaults are one value
|
|
126
|
+
* on purpose: index with no options, retrieve with no options, and the
|
|
127
|
+
* documents are found.
|
|
128
|
+
*/
|
|
129
|
+
export const DEFAULT_CORPUS_IDENTITY = { conversationId: '_global' };
|
|
68
130
|
/**
|
|
69
131
|
* Build a RAG context-engineering definition. The returned
|
|
70
132
|
* `MemoryDefinition` is registered on the Agent via `.rag(definition)`
|
|
@@ -72,6 +134,7 @@ import { refuseAsRole } from '../../memory/asRoleRefusal.js';
|
|
|
72
134
|
*
|
|
73
135
|
* @throws when `store` does not implement `search()`. RAG requires a
|
|
74
136
|
* vector-capable adapter.
|
|
137
|
+
* @throws when `retrieval` is combined with `topK` or `threshold`.
|
|
75
138
|
*/
|
|
76
139
|
export function defineRAG(opts) {
|
|
77
140
|
if (!opts.id || opts.id.trim() === '') {
|
|
@@ -91,17 +154,41 @@ export function defineRAG(opts) {
|
|
|
91
154
|
throw new Error(`defineRAG[${opts.id}]: store must implement search(). ` +
|
|
92
155
|
'Pass a vector-capable adapter (InMemoryStore, pgvector, Pinecone, ...).');
|
|
93
156
|
}
|
|
157
|
+
if (opts.retrieval !== undefined) {
|
|
158
|
+
const shorthand = [];
|
|
159
|
+
if (opts.topK !== undefined)
|
|
160
|
+
shorthand.push('`topK`');
|
|
161
|
+
if (opts.threshold !== undefined)
|
|
162
|
+
shorthand.push('`threshold`');
|
|
163
|
+
if (shorthand.length > 0) {
|
|
164
|
+
throw new Error(`defineRAG[${opts.id}]: ${shorthand.join(' and ')} cannot be combined with \`retrieval\` ` +
|
|
165
|
+
'— they are two spellings of the same rule and could disagree. Keep ' +
|
|
166
|
+
`\`retrieval: ${opts.retrieval.name}({ ... })\` and drop ${shorthand.join('/')}.`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
94
169
|
return defineMemory({
|
|
95
170
|
id: opts.id,
|
|
96
171
|
...(opts.description !== undefined && { description: opts.description }),
|
|
97
172
|
type: MEMORY_TYPES.SEMANTIC,
|
|
98
|
-
strategy:
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
173
|
+
strategy: opts.retrieval !== undefined
|
|
174
|
+
? {
|
|
175
|
+
kind: MEMORY_STRATEGIES.TOP_K,
|
|
176
|
+
embedder: opts.embedder,
|
|
177
|
+
retrieval: opts.retrieval,
|
|
178
|
+
...(opts.embedderId !== undefined && { embedderId: opts.embedderId }),
|
|
179
|
+
}
|
|
180
|
+
: {
|
|
181
|
+
kind: MEMORY_STRATEGIES.TOP_K,
|
|
182
|
+
topK: opts.topK ?? 3,
|
|
183
|
+
threshold: opts.threshold ?? 0.7,
|
|
184
|
+
embedder: opts.embedder,
|
|
185
|
+
...(opts.embedderId !== undefined && { embedderId: opts.embedderId }),
|
|
186
|
+
},
|
|
104
187
|
store: opts.store,
|
|
188
|
+
// A corpus is not a conversation log — see the header.
|
|
189
|
+
readOnly: true,
|
|
190
|
+
corpus: opts.corpus ?? DEFAULT_CORPUS_IDENTITY,
|
|
191
|
+
flavor: 'rag',
|
|
105
192
|
});
|
|
106
193
|
}
|
|
107
194
|
//# sourceMappingURL=defineRAG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineRAG.js","sourceRoot":"","sources":["../../../../src/lib/rag/defineRAG.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"defineRAG.js","sourceRoot":"","sources":["../../../../src/lib/rag/defineRAG.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* flavor. ONE factory + ONE seeding helper. Composes over the memory
|
|
4
4
|
* subsystem (semantic + top-K + strict threshold).
|
|
5
5
|
*/
|
|
6
|
-
export { defineRAG, type DefineRAGOptions } from './defineRAG.js';
|
|
6
|
+
export { defineRAG, DEFAULT_CORPUS_IDENTITY, type DefineRAGOptions } from './defineRAG.js';
|
|
7
7
|
export { indexDocuments, type IndexDocumentsOptions, type RagDocument } from './indexDocuments.js';
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
* flavor. ONE factory + ONE seeding helper. Composes over the memory
|
|
4
4
|
* subsystem (semantic + top-K + strict threshold).
|
|
5
5
|
*/
|
|
6
|
-
export { defineRAG } from './defineRAG.js';
|
|
6
|
+
export { defineRAG, DEFAULT_CORPUS_IDENTITY } from './defineRAG.js';
|
|
7
7
|
export { indexDocuments } from './indexDocuments.js';
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/rag/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAyB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/rag/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAyB,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAgD,MAAM,qBAAqB,CAAC"}
|