agentfootprint 1.14.0 → 1.15.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/dist/esm/memory/pipeline/auto.js +177 -0
- package/dist/esm/memory/pipeline/auto.js.map +1 -0
- package/dist/esm/memory/pipeline/index.js +1 -0
- package/dist/esm/memory/pipeline/index.js.map +1 -1
- package/dist/esm/memory.barrel.js +1 -0
- package/dist/esm/memory.barrel.js.map +1 -1
- package/dist/memory/pipeline/auto.js +181 -0
- package/dist/memory/pipeline/auto.js.map +1 -0
- package/dist/memory/pipeline/index.js +3 -1
- package/dist/memory/pipeline/index.js.map +1 -1
- package/dist/memory.barrel.js +3 -1
- package/dist/memory.barrel.js.map +1 -1
- package/dist/types/memory/pipeline/auto.d.ts +60 -0
- package/dist/types/memory/pipeline/auto.d.ts.map +1 -0
- package/dist/types/memory/pipeline/index.d.ts +2 -0
- package/dist/types/memory/pipeline/index.d.ts.map +1 -1
- package/dist/types/memory.barrel.d.ts +2 -0
- package/dist/types/memory.barrel.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* autoPipeline — opinionated preset combining facts + beats on one store.
|
|
3
|
+
*
|
|
4
|
+
* The one-line default for "I want memory — just make it good."
|
|
5
|
+
*
|
|
6
|
+
* READ : LoadAll → split by payload shape → FormatAuto
|
|
7
|
+
* (one system msg with facts block + narrative paragraph)
|
|
8
|
+
*
|
|
9
|
+
* WRITE : LoadFacts → ExtractFacts → WriteFacts
|
|
10
|
+
* → ExtractBeats → WriteBeats
|
|
11
|
+
*
|
|
12
|
+
* Facts carry "what's currently true" (identity, preferences,
|
|
13
|
+
* commitments — dedup on key). Beats carry "what happened" (traceable
|
|
14
|
+
* summaries — append-only). Together they cover the two memory shapes
|
|
15
|
+
* that matter for long-running agents without forcing the consumer to
|
|
16
|
+
* compose three presets by hand.
|
|
17
|
+
*
|
|
18
|
+
* **Default extractors**: zero-LLM-cost defaults so `autoPipeline({ store })`
|
|
19
|
+
* works out of the box:
|
|
20
|
+
* - facts: `patternFactExtractor()` (regex heuristics, free)
|
|
21
|
+
* - beats: `heuristicExtractor()` (keyword heuristics, free)
|
|
22
|
+
*
|
|
23
|
+
* Pass `provider` to upgrade BOTH to LLM-backed extractors in one
|
|
24
|
+
* knob — `llmFactExtractor({ provider })` and `llmExtractor({ provider })`.
|
|
25
|
+
* The same cheap model (e.g. `claude-haiku-4-5`) handles both extraction
|
|
26
|
+
* calls per turn.
|
|
27
|
+
*
|
|
28
|
+
* **Why not include raw messages?** Raw messages come from the agent's
|
|
29
|
+
* ongoing conversation state — they don't need a memory strategy. This
|
|
30
|
+
* preset focuses on the two *compressed / deduplicated* shapes. Layer on
|
|
31
|
+
* `defaultPipeline` or `semanticPipeline` manually if you want raw recall.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* import { Agent, anthropic } from 'agentfootprint';
|
|
36
|
+
* import { autoPipeline, InMemoryStore } from 'agentfootprint/memory';
|
|
37
|
+
*
|
|
38
|
+
* // Free defaults — regex + heuristics, no LLM cost.
|
|
39
|
+
* const pipeline = autoPipeline({ store: new InMemoryStore() });
|
|
40
|
+
*
|
|
41
|
+
* // Or upgrade both extractors in one knob:
|
|
42
|
+
* const hq = autoPipeline({
|
|
43
|
+
* store: new InMemoryStore(),
|
|
44
|
+
* provider: anthropic('claude-haiku-4-5'),
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* const agent = Agent.create({ provider: anthropic('claude-sonnet-4-5') })
|
|
48
|
+
* .system('You remember the user across turns.')
|
|
49
|
+
* .memoryPipeline(pipeline)
|
|
50
|
+
* .build();
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
import { flowChart } from 'footprintjs';
|
|
54
|
+
import { extractFacts, writeFacts, loadFacts, patternFactExtractor, llmFactExtractor, isFactId, } from '../facts';
|
|
55
|
+
import { extractBeats, writeBeats, heuristicExtractor, llmExtractor, isNarrativeBeat, } from '../beats';
|
|
56
|
+
const DEFAULT_FACTS_HEADER = 'Known facts about the user:';
|
|
57
|
+
const DEFAULT_LEAD_IN = 'From earlier: ';
|
|
58
|
+
const DEFAULT_LOAD_LIMIT = 200;
|
|
59
|
+
/** Escape `</memory>` in user-controlled text to prevent tag-escape injection. */
|
|
60
|
+
function escapeMemoryTag(text) {
|
|
61
|
+
return text.replace(/<\/memory>/gi, '</m\u200Demory>');
|
|
62
|
+
}
|
|
63
|
+
function renderValue(v) {
|
|
64
|
+
if (typeof v === 'string')
|
|
65
|
+
return v;
|
|
66
|
+
try {
|
|
67
|
+
return JSON.stringify(v);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return String(v);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Emit a single system message combining facts (key/value block) and
|
|
75
|
+
* beats (narrative paragraph). Empty sections are skipped; when BOTH
|
|
76
|
+
* are empty, `formatted = []` (no injection).
|
|
77
|
+
*/
|
|
78
|
+
function renderAutoMessage(facts, beats, opts) {
|
|
79
|
+
const sections = [];
|
|
80
|
+
if (facts.length > 0) {
|
|
81
|
+
const lines = facts.map((entry) => {
|
|
82
|
+
const f = entry.value;
|
|
83
|
+
const value = escapeMemoryTag(renderValue(f.value));
|
|
84
|
+
const conf = opts.showConfidence && typeof f.confidence === 'number'
|
|
85
|
+
? ` (conf ${f.confidence.toFixed(2)})`
|
|
86
|
+
: '';
|
|
87
|
+
return `- ${f.key}: ${value}${conf}`;
|
|
88
|
+
});
|
|
89
|
+
sections.push(`${opts.factsHeader}\n\n${lines.join('\n')}`);
|
|
90
|
+
}
|
|
91
|
+
if (beats.length > 0) {
|
|
92
|
+
const sentences = beats.map((entry) => {
|
|
93
|
+
const beat = entry.value;
|
|
94
|
+
const text = escapeMemoryTag(beat.summary.trim());
|
|
95
|
+
const withRefs = opts.showRefs && beat.refs.length > 0 ? `${text} (refs: ${beat.refs.join(', ')})` : text;
|
|
96
|
+
return /[.!?]$/.test(withRefs) ? withRefs : `${withRefs}.`;
|
|
97
|
+
});
|
|
98
|
+
sections.push(`${opts.leadIn}${sentences.join(' ')}`);
|
|
99
|
+
}
|
|
100
|
+
if (sections.length === 0)
|
|
101
|
+
return [];
|
|
102
|
+
return [{ role: 'system', content: sections.join('\n\n') }];
|
|
103
|
+
}
|
|
104
|
+
export function autoPipeline(config) {
|
|
105
|
+
const factExtractor = config.factExtractor ??
|
|
106
|
+
(config.provider ? llmFactExtractor({ provider: config.provider }) : patternFactExtractor());
|
|
107
|
+
const beatExtractor = config.beatExtractor ??
|
|
108
|
+
(config.provider ? llmExtractor({ provider: config.provider }) : heuristicExtractor());
|
|
109
|
+
const loadLimit = config.loadLimit ?? DEFAULT_LOAD_LIMIT;
|
|
110
|
+
const factsHeader = config.factsHeader ?? DEFAULT_FACTS_HEADER;
|
|
111
|
+
const leadIn = config.narrativeLeadIn ?? DEFAULT_LEAD_IN;
|
|
112
|
+
const showConfidence = config.showConfidence ?? false;
|
|
113
|
+
const showRefs = config.showRefs ?? false;
|
|
114
|
+
// ── READ subflow ────────────────────────────────────────────
|
|
115
|
+
// One combined load + split stage. Keeps the subflow short and
|
|
116
|
+
// avoids pulling `loadRecent` + `pickByBudget` (which were designed
|
|
117
|
+
// for single-payload pipelines) into a mixed-payload context.
|
|
118
|
+
const read = flowChart('LoadAll', async (scope) => {
|
|
119
|
+
const listOpts = {
|
|
120
|
+
limit: loadLimit,
|
|
121
|
+
...(config.tiers && { tiers: config.tiers }),
|
|
122
|
+
};
|
|
123
|
+
const { entries } = await config.store.list(scope.identity, listOpts);
|
|
124
|
+
const loadedFacts = [];
|
|
125
|
+
const loadedBeats = [];
|
|
126
|
+
for (const entry of entries) {
|
|
127
|
+
if (isFactId(entry.id)) {
|
|
128
|
+
loadedFacts.push(entry);
|
|
129
|
+
}
|
|
130
|
+
else if (isNarrativeBeat(entry.value)) {
|
|
131
|
+
loadedBeats.push(entry);
|
|
132
|
+
}
|
|
133
|
+
// Other payloads (raw messages) are intentionally ignored —
|
|
134
|
+
// auto() is the "compressed + deduped" preset.
|
|
135
|
+
}
|
|
136
|
+
// Stores typically return most-recently-updated first. Beats are
|
|
137
|
+
// more readable oldest-first (chronological narrative), so
|
|
138
|
+
// reverse before injection. Facts render as a list, order-agnostic.
|
|
139
|
+
scope.loadedFacts = loadedFacts;
|
|
140
|
+
scope.loadedBeats = [...loadedBeats].reverse();
|
|
141
|
+
}, 'load-all', undefined, 'Load facts + beats from the shared store; split by payload shape')
|
|
142
|
+
.addFunction('FormatAuto', async (scope) => {
|
|
143
|
+
const facts = (scope.loadedFacts ?? []);
|
|
144
|
+
const beats = (scope.loadedBeats ?? []);
|
|
145
|
+
scope.formatted = renderAutoMessage(facts, beats, {
|
|
146
|
+
factsHeader,
|
|
147
|
+
leadIn,
|
|
148
|
+
showConfidence,
|
|
149
|
+
showRefs,
|
|
150
|
+
});
|
|
151
|
+
}, 'format-auto', 'Emit one system message with facts block + narrative paragraph')
|
|
152
|
+
.build();
|
|
153
|
+
// ── WRITE subflow ───────────────────────────────────────────
|
|
154
|
+
// LoadFacts first so the (possibly LLM-backed) fact extractor sees
|
|
155
|
+
// existing facts via scope.loadedFacts and can update rather than
|
|
156
|
+
// duplicate. Then extract+write facts, then extract+write beats.
|
|
157
|
+
const write = flowChart('LoadFacts', loadFacts({
|
|
158
|
+
store: config.store,
|
|
159
|
+
limit: loadLimit,
|
|
160
|
+
...(config.tiers && { tiers: config.tiers }),
|
|
161
|
+
}), 'load-facts', undefined, 'Surface existing facts for update-awareness')
|
|
162
|
+
.addFunction('ExtractFacts', extractFacts({
|
|
163
|
+
extractor: factExtractor,
|
|
164
|
+
...(config.writeTier && { tier: config.writeTier }),
|
|
165
|
+
...(config.writeTtlMs !== undefined && { ttlMs: config.writeTtlMs }),
|
|
166
|
+
}), 'extract-facts', 'Distill scope.newMessages into stable Fact entries')
|
|
167
|
+
.addFunction('WriteFacts', writeFacts({ store: config.store }), 'write-facts', 'Persist facts via store.putMany (overwrite on key collision)')
|
|
168
|
+
.addFunction('ExtractBeats', extractBeats({
|
|
169
|
+
extractor: beatExtractor,
|
|
170
|
+
...(config.writeTier && { tier: config.writeTier }),
|
|
171
|
+
...(config.writeTtlMs !== undefined && { ttlMs: config.writeTtlMs }),
|
|
172
|
+
}), 'extract-beats', 'Compress scope.newMessages into NarrativeBeat entries')
|
|
173
|
+
.addFunction('WriteBeats', writeBeats({ store: config.store }), 'write-beats', 'Persist beats via store.putMany')
|
|
174
|
+
.build();
|
|
175
|
+
return { read, write };
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=auto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../../../../src/memory/pipeline/auto.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/memory/pipeline/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/memory/pipeline/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -38,6 +38,7 @@ export { ephemeralPipeline } from './memory/pipeline';
|
|
|
38
38
|
export { narrativePipeline } from './memory/pipeline';
|
|
39
39
|
export { semanticPipeline } from './memory/pipeline';
|
|
40
40
|
export { factPipeline } from './memory/pipeline';
|
|
41
|
+
export { autoPipeline } from './memory/pipeline';
|
|
41
42
|
export { cosineSimilarity, mockEmbedder } from './memory/embedding';
|
|
42
43
|
export { embedMessages, loadRelevant } from './memory/embedding';
|
|
43
44
|
export { asImportance, isNarrativeBeat, heuristicExtractor, llmExtractor, extractBeats, writeBeats, formatAsNarrative, } from './memory/beats';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.barrel.js","sourceRoot":"","sources":["../../src/memory.barrel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAItD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAUzE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAI/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAK9E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAYjE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAWxB,OAAO,EACL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,SAAS,EACT,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAUxB,+DAA+D;AAC/D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"memory.barrel.js","sourceRoot":"","sources":["../../src/memory.barrel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAItD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAUzE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAI/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAK9E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAYjE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAWxB,OAAO,EACL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,SAAS,EACT,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAUxB,+DAA+D;AAC/D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.autoPipeline = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* autoPipeline — opinionated preset combining facts + beats on one store.
|
|
6
|
+
*
|
|
7
|
+
* The one-line default for "I want memory — just make it good."
|
|
8
|
+
*
|
|
9
|
+
* READ : LoadAll → split by payload shape → FormatAuto
|
|
10
|
+
* (one system msg with facts block + narrative paragraph)
|
|
11
|
+
*
|
|
12
|
+
* WRITE : LoadFacts → ExtractFacts → WriteFacts
|
|
13
|
+
* → ExtractBeats → WriteBeats
|
|
14
|
+
*
|
|
15
|
+
* Facts carry "what's currently true" (identity, preferences,
|
|
16
|
+
* commitments — dedup on key). Beats carry "what happened" (traceable
|
|
17
|
+
* summaries — append-only). Together they cover the two memory shapes
|
|
18
|
+
* that matter for long-running agents without forcing the consumer to
|
|
19
|
+
* compose three presets by hand.
|
|
20
|
+
*
|
|
21
|
+
* **Default extractors**: zero-LLM-cost defaults so `autoPipeline({ store })`
|
|
22
|
+
* works out of the box:
|
|
23
|
+
* - facts: `patternFactExtractor()` (regex heuristics, free)
|
|
24
|
+
* - beats: `heuristicExtractor()` (keyword heuristics, free)
|
|
25
|
+
*
|
|
26
|
+
* Pass `provider` to upgrade BOTH to LLM-backed extractors in one
|
|
27
|
+
* knob — `llmFactExtractor({ provider })` and `llmExtractor({ provider })`.
|
|
28
|
+
* The same cheap model (e.g. `claude-haiku-4-5`) handles both extraction
|
|
29
|
+
* calls per turn.
|
|
30
|
+
*
|
|
31
|
+
* **Why not include raw messages?** Raw messages come from the agent's
|
|
32
|
+
* ongoing conversation state — they don't need a memory strategy. This
|
|
33
|
+
* preset focuses on the two *compressed / deduplicated* shapes. Layer on
|
|
34
|
+
* `defaultPipeline` or `semanticPipeline` manually if you want raw recall.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* import { Agent, anthropic } from 'agentfootprint';
|
|
39
|
+
* import { autoPipeline, InMemoryStore } from 'agentfootprint/memory';
|
|
40
|
+
*
|
|
41
|
+
* // Free defaults — regex + heuristics, no LLM cost.
|
|
42
|
+
* const pipeline = autoPipeline({ store: new InMemoryStore() });
|
|
43
|
+
*
|
|
44
|
+
* // Or upgrade both extractors in one knob:
|
|
45
|
+
* const hq = autoPipeline({
|
|
46
|
+
* store: new InMemoryStore(),
|
|
47
|
+
* provider: anthropic('claude-haiku-4-5'),
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* const agent = Agent.create({ provider: anthropic('claude-sonnet-4-5') })
|
|
51
|
+
* .system('You remember the user across turns.')
|
|
52
|
+
* .memoryPipeline(pipeline)
|
|
53
|
+
* .build();
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
const footprintjs_1 = require("footprintjs");
|
|
57
|
+
const facts_1 = require("../facts");
|
|
58
|
+
const beats_1 = require("../beats");
|
|
59
|
+
const DEFAULT_FACTS_HEADER = 'Known facts about the user:';
|
|
60
|
+
const DEFAULT_LEAD_IN = 'From earlier: ';
|
|
61
|
+
const DEFAULT_LOAD_LIMIT = 200;
|
|
62
|
+
/** Escape `</memory>` in user-controlled text to prevent tag-escape injection. */
|
|
63
|
+
function escapeMemoryTag(text) {
|
|
64
|
+
return text.replace(/<\/memory>/gi, '</m\u200Demory>');
|
|
65
|
+
}
|
|
66
|
+
function renderValue(v) {
|
|
67
|
+
if (typeof v === 'string')
|
|
68
|
+
return v;
|
|
69
|
+
try {
|
|
70
|
+
return JSON.stringify(v);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return String(v);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Emit a single system message combining facts (key/value block) and
|
|
78
|
+
* beats (narrative paragraph). Empty sections are skipped; when BOTH
|
|
79
|
+
* are empty, `formatted = []` (no injection).
|
|
80
|
+
*/
|
|
81
|
+
function renderAutoMessage(facts, beats, opts) {
|
|
82
|
+
const sections = [];
|
|
83
|
+
if (facts.length > 0) {
|
|
84
|
+
const lines = facts.map((entry) => {
|
|
85
|
+
const f = entry.value;
|
|
86
|
+
const value = escapeMemoryTag(renderValue(f.value));
|
|
87
|
+
const conf = opts.showConfidence && typeof f.confidence === 'number'
|
|
88
|
+
? ` (conf ${f.confidence.toFixed(2)})`
|
|
89
|
+
: '';
|
|
90
|
+
return `- ${f.key}: ${value}${conf}`;
|
|
91
|
+
});
|
|
92
|
+
sections.push(`${opts.factsHeader}\n\n${lines.join('\n')}`);
|
|
93
|
+
}
|
|
94
|
+
if (beats.length > 0) {
|
|
95
|
+
const sentences = beats.map((entry) => {
|
|
96
|
+
const beat = entry.value;
|
|
97
|
+
const text = escapeMemoryTag(beat.summary.trim());
|
|
98
|
+
const withRefs = opts.showRefs && beat.refs.length > 0 ? `${text} (refs: ${beat.refs.join(', ')})` : text;
|
|
99
|
+
return /[.!?]$/.test(withRefs) ? withRefs : `${withRefs}.`;
|
|
100
|
+
});
|
|
101
|
+
sections.push(`${opts.leadIn}${sentences.join(' ')}`);
|
|
102
|
+
}
|
|
103
|
+
if (sections.length === 0)
|
|
104
|
+
return [];
|
|
105
|
+
return [{ role: 'system', content: sections.join('\n\n') }];
|
|
106
|
+
}
|
|
107
|
+
function autoPipeline(config) {
|
|
108
|
+
const factExtractor = config.factExtractor ??
|
|
109
|
+
(config.provider ? (0, facts_1.llmFactExtractor)({ provider: config.provider }) : (0, facts_1.patternFactExtractor)());
|
|
110
|
+
const beatExtractor = config.beatExtractor ??
|
|
111
|
+
(config.provider ? (0, beats_1.llmExtractor)({ provider: config.provider }) : (0, beats_1.heuristicExtractor)());
|
|
112
|
+
const loadLimit = config.loadLimit ?? DEFAULT_LOAD_LIMIT;
|
|
113
|
+
const factsHeader = config.factsHeader ?? DEFAULT_FACTS_HEADER;
|
|
114
|
+
const leadIn = config.narrativeLeadIn ?? DEFAULT_LEAD_IN;
|
|
115
|
+
const showConfidence = config.showConfidence ?? false;
|
|
116
|
+
const showRefs = config.showRefs ?? false;
|
|
117
|
+
// ── READ subflow ────────────────────────────────────────────
|
|
118
|
+
// One combined load + split stage. Keeps the subflow short and
|
|
119
|
+
// avoids pulling `loadRecent` + `pickByBudget` (which were designed
|
|
120
|
+
// for single-payload pipelines) into a mixed-payload context.
|
|
121
|
+
const read = (0, footprintjs_1.flowChart)('LoadAll', async (scope) => {
|
|
122
|
+
const listOpts = {
|
|
123
|
+
limit: loadLimit,
|
|
124
|
+
...(config.tiers && { tiers: config.tiers }),
|
|
125
|
+
};
|
|
126
|
+
const { entries } = await config.store.list(scope.identity, listOpts);
|
|
127
|
+
const loadedFacts = [];
|
|
128
|
+
const loadedBeats = [];
|
|
129
|
+
for (const entry of entries) {
|
|
130
|
+
if ((0, facts_1.isFactId)(entry.id)) {
|
|
131
|
+
loadedFacts.push(entry);
|
|
132
|
+
}
|
|
133
|
+
else if ((0, beats_1.isNarrativeBeat)(entry.value)) {
|
|
134
|
+
loadedBeats.push(entry);
|
|
135
|
+
}
|
|
136
|
+
// Other payloads (raw messages) are intentionally ignored —
|
|
137
|
+
// auto() is the "compressed + deduped" preset.
|
|
138
|
+
}
|
|
139
|
+
// Stores typically return most-recently-updated first. Beats are
|
|
140
|
+
// more readable oldest-first (chronological narrative), so
|
|
141
|
+
// reverse before injection. Facts render as a list, order-agnostic.
|
|
142
|
+
scope.loadedFacts = loadedFacts;
|
|
143
|
+
scope.loadedBeats = [...loadedBeats].reverse();
|
|
144
|
+
}, 'load-all', undefined, 'Load facts + beats from the shared store; split by payload shape')
|
|
145
|
+
.addFunction('FormatAuto', async (scope) => {
|
|
146
|
+
const facts = (scope.loadedFacts ?? []);
|
|
147
|
+
const beats = (scope.loadedBeats ?? []);
|
|
148
|
+
scope.formatted = renderAutoMessage(facts, beats, {
|
|
149
|
+
factsHeader,
|
|
150
|
+
leadIn,
|
|
151
|
+
showConfidence,
|
|
152
|
+
showRefs,
|
|
153
|
+
});
|
|
154
|
+
}, 'format-auto', 'Emit one system message with facts block + narrative paragraph')
|
|
155
|
+
.build();
|
|
156
|
+
// ── WRITE subflow ───────────────────────────────────────────
|
|
157
|
+
// LoadFacts first so the (possibly LLM-backed) fact extractor sees
|
|
158
|
+
// existing facts via scope.loadedFacts and can update rather than
|
|
159
|
+
// duplicate. Then extract+write facts, then extract+write beats.
|
|
160
|
+
const write = (0, footprintjs_1.flowChart)('LoadFacts', (0, facts_1.loadFacts)({
|
|
161
|
+
store: config.store,
|
|
162
|
+
limit: loadLimit,
|
|
163
|
+
...(config.tiers && { tiers: config.tiers }),
|
|
164
|
+
}), 'load-facts', undefined, 'Surface existing facts for update-awareness')
|
|
165
|
+
.addFunction('ExtractFacts', (0, facts_1.extractFacts)({
|
|
166
|
+
extractor: factExtractor,
|
|
167
|
+
...(config.writeTier && { tier: config.writeTier }),
|
|
168
|
+
...(config.writeTtlMs !== undefined && { ttlMs: config.writeTtlMs }),
|
|
169
|
+
}), 'extract-facts', 'Distill scope.newMessages into stable Fact entries')
|
|
170
|
+
.addFunction('WriteFacts', (0, facts_1.writeFacts)({ store: config.store }), 'write-facts', 'Persist facts via store.putMany (overwrite on key collision)')
|
|
171
|
+
.addFunction('ExtractBeats', (0, beats_1.extractBeats)({
|
|
172
|
+
extractor: beatExtractor,
|
|
173
|
+
...(config.writeTier && { tier: config.writeTier }),
|
|
174
|
+
...(config.writeTtlMs !== undefined && { ttlMs: config.writeTtlMs }),
|
|
175
|
+
}), 'extract-beats', 'Compress scope.newMessages into NarrativeBeat entries')
|
|
176
|
+
.addFunction('WriteBeats', (0, beats_1.writeBeats)({ store: config.store }), 'write-beats', 'Persist beats via store.putMany')
|
|
177
|
+
.build();
|
|
178
|
+
return { read, write };
|
|
179
|
+
}
|
|
180
|
+
exports.autoPipeline = autoPipeline;
|
|
181
|
+
//# sourceMappingURL=auto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../../../src/memory/pipeline/auto.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.factPipeline = exports.semanticPipeline = exports.narrativePipeline = exports.ephemeralPipeline = exports.defaultPipeline = void 0;
|
|
3
|
+
exports.autoPipeline = exports.factPipeline = exports.semanticPipeline = exports.narrativePipeline = exports.ephemeralPipeline = exports.defaultPipeline = void 0;
|
|
4
4
|
var default_1 = require("./default");
|
|
5
5
|
Object.defineProperty(exports, "defaultPipeline", { enumerable: true, get: function () { return default_1.defaultPipeline; } });
|
|
6
6
|
var ephemeral_1 = require("./ephemeral");
|
|
@@ -11,4 +11,6 @@ var semantic_1 = require("./semantic");
|
|
|
11
11
|
Object.defineProperty(exports, "semanticPipeline", { enumerable: true, get: function () { return semantic_1.semanticPipeline; } });
|
|
12
12
|
var fact_1 = require("./fact");
|
|
13
13
|
Object.defineProperty(exports, "factPipeline", { enumerable: true, get: function () { return fact_1.factPipeline; } });
|
|
14
|
+
var auto_1 = require("./auto");
|
|
15
|
+
Object.defineProperty(exports, "autoPipeline", { enumerable: true, get: function () { return auto_1.autoPipeline; } });
|
|
14
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/pipeline/index.ts"],"names":[],"mappings":";;;AACA,qCAA4C;AAAnC,0GAAA,eAAe,OAAA;AAExB,yCAAgD;AAAvC,8GAAA,iBAAiB,OAAA;AAE1B,yCAAgD;AAAvC,8GAAA,iBAAiB,OAAA;AAE1B,uCAA8C;AAArC,4GAAA,gBAAgB,OAAA;AAEzB,+BAAsC;AAA7B,oGAAA,YAAY,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/pipeline/index.ts"],"names":[],"mappings":";;;AACA,qCAA4C;AAAnC,0GAAA,eAAe,OAAA;AAExB,yCAAgD;AAAvC,8GAAA,iBAAiB,OAAA;AAE1B,yCAAgD;AAAvC,8GAAA,iBAAiB,OAAA;AAE1B,uCAA8C;AAArC,4GAAA,gBAAgB,OAAA;AAEzB,+BAAsC;AAA7B,oGAAA,YAAY,OAAA;AAErB,+BAAsC;AAA7B,oGAAA,YAAY,OAAA"}
|
package/dist/memory.barrel.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* });
|
|
27
27
|
*/
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.mountMemoryPipeline = exports.mountMemoryWrite = exports.mountMemoryRead = exports.formatFacts = exports.loadFacts = exports.writeFacts = exports.extractFacts = exports.llmFactExtractor = exports.patternFactExtractor = exports.asConfidence = exports.isFact = exports.isFactId = exports.factId = exports.formatAsNarrative = exports.writeBeats = exports.extractBeats = exports.llmExtractor = exports.heuristicExtractor = exports.isNarrativeBeat = exports.asImportance = exports.loadRelevant = exports.embedMessages = exports.mockEmbedder = exports.cosineSimilarity = exports.factPipeline = exports.semanticPipeline = exports.narrativePipeline = exports.ephemeralPipeline = exports.defaultPipeline = exports.countMessageTokens = exports.approximateTokenCounter = exports.summarize = exports.formatDefault = exports.pickByBudget = exports.writeMessages = exports.loadRecent = exports.InMemoryStore = exports.computeDecayFactors = exports.computeDecayFactor = exports.identityNamespace = void 0;
|
|
29
|
+
exports.mountMemoryPipeline = exports.mountMemoryWrite = exports.mountMemoryRead = exports.formatFacts = exports.loadFacts = exports.writeFacts = exports.extractFacts = exports.llmFactExtractor = exports.patternFactExtractor = exports.asConfidence = exports.isFact = exports.isFactId = exports.factId = exports.formatAsNarrative = exports.writeBeats = exports.extractBeats = exports.llmExtractor = exports.heuristicExtractor = exports.isNarrativeBeat = exports.asImportance = exports.loadRelevant = exports.embedMessages = exports.mockEmbedder = exports.cosineSimilarity = exports.autoPipeline = exports.factPipeline = exports.semanticPipeline = exports.narrativePipeline = exports.ephemeralPipeline = exports.defaultPipeline = exports.countMessageTokens = exports.approximateTokenCounter = exports.summarize = exports.formatDefault = exports.pickByBudget = exports.writeMessages = exports.loadRecent = exports.InMemoryStore = exports.computeDecayFactors = exports.computeDecayFactor = exports.identityNamespace = void 0;
|
|
30
30
|
var identity_1 = require("./memory/identity");
|
|
31
31
|
Object.defineProperty(exports, "identityNamespace", { enumerable: true, get: function () { return identity_1.identityNamespace; } });
|
|
32
32
|
var entry_1 = require("./memory/entry");
|
|
@@ -57,6 +57,8 @@ var pipeline_4 = require("./memory/pipeline");
|
|
|
57
57
|
Object.defineProperty(exports, "semanticPipeline", { enumerable: true, get: function () { return pipeline_4.semanticPipeline; } });
|
|
58
58
|
var pipeline_5 = require("./memory/pipeline");
|
|
59
59
|
Object.defineProperty(exports, "factPipeline", { enumerable: true, get: function () { return pipeline_5.factPipeline; } });
|
|
60
|
+
var pipeline_6 = require("./memory/pipeline");
|
|
61
|
+
Object.defineProperty(exports, "autoPipeline", { enumerable: true, get: function () { return pipeline_6.autoPipeline; } });
|
|
60
62
|
var embedding_1 = require("./memory/embedding");
|
|
61
63
|
Object.defineProperty(exports, "cosineSimilarity", { enumerable: true, get: function () { return embedding_1.cosineSimilarity; } });
|
|
62
64
|
Object.defineProperty(exports, "mockEmbedder", { enumerable: true, get: function () { return embedding_1.mockEmbedder; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.barrel.js","sourceRoot":"","sources":["../src/memory.barrel.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;AAIH,8CAAsD;AAA7C,6GAAA,iBAAiB,OAAA;AAI1B,wCAAyE;AAAhE,2GAAA,kBAAkB,OAAA;AAAE,4GAAA,mBAAmB,OAAA;AAUhD,wCAA+C;AAAtC,sGAAA,aAAa,OAAA;AAItB,0CAA6C;AAApC,oGAAA,UAAU,OAAA;AAEnB,0CAAgD;AAAvC,uGAAA,aAAa,OAAA;AAEtB,0CAA+C;AAAtC,sGAAA,YAAY,OAAA;AAErB,0CAAgD;AAAvC,uGAAA,aAAa,OAAA;AAEtB,0CAA4C;AAAnC,mGAAA,SAAS,OAAA;AAElB,0CAA8E;AAArE,iHAAA,uBAAuB,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AAKpD,8CAAoD;AAA3C,2GAAA,eAAe,OAAA;AAExB,8CAAsD;AAA7C,6GAAA,iBAAiB,OAAA;AAE1B,8CAAsD;AAA7C,6GAAA,iBAAiB,OAAA;AAE1B,8CAAqD;AAA5C,4GAAA,gBAAgB,OAAA;AAEzB,8CAAiD;AAAxC,wGAAA,YAAY,OAAA;AAKrB,gDAAoE;AAA3D,6GAAA,gBAAgB,OAAA;AAAE,yGAAA,YAAY,OAAA;AAEvC,gDAAiE;AAAxD,0GAAA,aAAa,OAAA;AAAE,yGAAA,YAAY,OAAA;AAYpC,wCAQwB;AAPtB,qGAAA,YAAY,OAAA;AACZ,wGAAA,eAAe,OAAA;AACf,2GAAA,kBAAkB,OAAA;AAClB,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AACZ,mGAAA,UAAU,OAAA;AACV,0GAAA,iBAAiB,OAAA;AAYnB,wCAWwB;AAVtB,+FAAA,MAAM,OAAA;AACN,iGAAA,QAAQ,OAAA;AACR,+FAAA,MAAM,OAAA;AACN,qGAAA,YAAY,OAAA;AACZ,6GAAA,oBAAoB,OAAA;AACpB,yGAAA,gBAAgB,OAAA;AAChB,qGAAA,YAAY,OAAA;AACZ,mGAAA,UAAU,OAAA;AACV,kGAAA,SAAS,OAAA;AACT,oGAAA,WAAW,OAAA;AAWb,+DAA+D;AAC/D,sCAAuF;AAA9E,uGAAA,eAAe,OAAA;AAAE,wGAAA,gBAAgB,OAAA;AAAE,2GAAA,mBAAmB,OAAA"}
|
|
1
|
+
{"version":3,"file":"memory.barrel.js","sourceRoot":"","sources":["../src/memory.barrel.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;AAIH,8CAAsD;AAA7C,6GAAA,iBAAiB,OAAA;AAI1B,wCAAyE;AAAhE,2GAAA,kBAAkB,OAAA;AAAE,4GAAA,mBAAmB,OAAA;AAUhD,wCAA+C;AAAtC,sGAAA,aAAa,OAAA;AAItB,0CAA6C;AAApC,oGAAA,UAAU,OAAA;AAEnB,0CAAgD;AAAvC,uGAAA,aAAa,OAAA;AAEtB,0CAA+C;AAAtC,sGAAA,YAAY,OAAA;AAErB,0CAAgD;AAAvC,uGAAA,aAAa,OAAA;AAEtB,0CAA4C;AAAnC,mGAAA,SAAS,OAAA;AAElB,0CAA8E;AAArE,iHAAA,uBAAuB,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AAKpD,8CAAoD;AAA3C,2GAAA,eAAe,OAAA;AAExB,8CAAsD;AAA7C,6GAAA,iBAAiB,OAAA;AAE1B,8CAAsD;AAA7C,6GAAA,iBAAiB,OAAA;AAE1B,8CAAqD;AAA5C,4GAAA,gBAAgB,OAAA;AAEzB,8CAAiD;AAAxC,wGAAA,YAAY,OAAA;AAErB,8CAAiD;AAAxC,wGAAA,YAAY,OAAA;AAKrB,gDAAoE;AAA3D,6GAAA,gBAAgB,OAAA;AAAE,yGAAA,YAAY,OAAA;AAEvC,gDAAiE;AAAxD,0GAAA,aAAa,OAAA;AAAE,yGAAA,YAAY,OAAA;AAYpC,wCAQwB;AAPtB,qGAAA,YAAY,OAAA;AACZ,wGAAA,eAAe,OAAA;AACf,2GAAA,kBAAkB,OAAA;AAClB,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AACZ,mGAAA,UAAU,OAAA;AACV,0GAAA,iBAAiB,OAAA;AAYnB,wCAWwB;AAVtB,+FAAA,MAAM,OAAA;AACN,iGAAA,QAAQ,OAAA;AACR,+FAAA,MAAM,OAAA;AACN,qGAAA,YAAY,OAAA;AACZ,6GAAA,oBAAoB,OAAA;AACpB,yGAAA,gBAAgB,OAAA;AAChB,qGAAA,YAAY,OAAA;AACZ,mGAAA,UAAU,OAAA;AACV,kGAAA,SAAS,OAAA;AACT,oGAAA,WAAW,OAAA;AAWb,+DAA+D;AAC/D,sCAAuF;AAA9E,uGAAA,eAAe,OAAA;AAAE,wGAAA,gBAAgB,OAAA;AAAE,2GAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { LLMProvider } from '../../types';
|
|
2
|
+
import type { MemoryStore } from '../store';
|
|
3
|
+
import type { MemoryEntry } from '../entry';
|
|
4
|
+
import type { MemoryPipeline } from './types';
|
|
5
|
+
import { type FactPipelineState, type FactExtractor } from '../facts';
|
|
6
|
+
import { type NarrativeBeat, type BeatExtractor, type ExtractBeatsState } from '../beats';
|
|
7
|
+
export interface AutoPipelineConfig {
|
|
8
|
+
/** The store both extractors share. */
|
|
9
|
+
readonly store: MemoryStore;
|
|
10
|
+
/**
|
|
11
|
+
* When present, upgrades both fact AND beat extraction to LLM-backed
|
|
12
|
+
* variants. Typically a cheap/fast model like Claude Haiku. Omit to
|
|
13
|
+
* use the free heuristic + regex defaults.
|
|
14
|
+
*/
|
|
15
|
+
readonly provider?: LLMProvider;
|
|
16
|
+
/**
|
|
17
|
+
* Override the fact extractor explicitly. Takes precedence over
|
|
18
|
+
* `provider`. Use when you want facts via LLM but beats via heuristic,
|
|
19
|
+
* or vice-versa.
|
|
20
|
+
*/
|
|
21
|
+
readonly factExtractor?: FactExtractor;
|
|
22
|
+
/**
|
|
23
|
+
* Override the beat extractor explicitly. Takes precedence over
|
|
24
|
+
* `provider`.
|
|
25
|
+
*/
|
|
26
|
+
readonly beatExtractor?: BeatExtractor;
|
|
27
|
+
/**
|
|
28
|
+
* Upper bound on the `store.list` page size during read. Large enough
|
|
29
|
+
* to fit typical identity+history; raise for long-lived agents with
|
|
30
|
+
* dozens of fact categories and hundreds of beats. Default `200`.
|
|
31
|
+
*/
|
|
32
|
+
readonly loadLimit?: number;
|
|
33
|
+
/** Tier filter for read. */
|
|
34
|
+
readonly tiers?: ReadonlyArray<'hot' | 'warm' | 'cold'>;
|
|
35
|
+
/** Tier to tag newly written entries (both facts and beats). */
|
|
36
|
+
readonly writeTier?: 'hot' | 'warm' | 'cold';
|
|
37
|
+
/** TTL in ms applied to newly written entries. */
|
|
38
|
+
readonly writeTtlMs?: number;
|
|
39
|
+
/** Header for the facts block in the injected system message. */
|
|
40
|
+
readonly factsHeader?: string;
|
|
41
|
+
/** Lead-in phrase for the narrative paragraph. Default `"From earlier: "`. */
|
|
42
|
+
readonly narrativeLeadIn?: string;
|
|
43
|
+
/**
|
|
44
|
+
* When `true`, appends `(conf 0.xx)` after each fact. Off by default
|
|
45
|
+
* — confidence is noise for the LLM in typical flows.
|
|
46
|
+
*/
|
|
47
|
+
readonly showConfidence?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* When `true`, appends `(refs: msg-x-y, ...)` after each beat line.
|
|
50
|
+
* Off by default.
|
|
51
|
+
*/
|
|
52
|
+
readonly showRefs?: boolean;
|
|
53
|
+
}
|
|
54
|
+
/** State used by the auto pipeline's subflows. */
|
|
55
|
+
export interface AutoPipelineState extends FactPipelineState, ExtractBeatsState {
|
|
56
|
+
/** Beats loaded from the store during auto-READ. */
|
|
57
|
+
loadedBeats?: readonly MemoryEntry<NarrativeBeat>[];
|
|
58
|
+
}
|
|
59
|
+
export declare function autoPipeline(config: AutoPipelineConfig): MemoryPipeline;
|
|
60
|
+
//# sourceMappingURL=auto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../../../src/memory/pipeline/auto.ts"],"names":[],"mappings":"AAsDA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAQL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;IAEhC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IAEvC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;IAExD,gEAAgE;IAChE,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAE7C,kDAAkD;IAClD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,iEAAiE;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,8EAA8E;IAC9E,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,kDAAkD;AAClD,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB,EAAE,iBAAiB;IAC7E,oDAAoD;IACpD,WAAW,CAAC,EAAE,SAAS,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;CACrD;AAiED,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CAoHvE"}
|
|
@@ -9,4 +9,6 @@ export { semanticPipeline } from './semantic';
|
|
|
9
9
|
export type { SemanticPipelineConfig } from './semantic';
|
|
10
10
|
export { factPipeline } from './fact';
|
|
11
11
|
export type { FactPipelineConfig } from './fact';
|
|
12
|
+
export { autoPipeline } from './auto';
|
|
13
|
+
export type { AutoPipelineConfig, AutoPipelineState } from './auto';
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/memory/pipeline/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,YAAY,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/memory/pipeline/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,YAAY,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -54,6 +54,8 @@ export { semanticPipeline } from './memory/pipeline';
|
|
|
54
54
|
export type { SemanticPipelineConfig } from './memory/pipeline';
|
|
55
55
|
export { factPipeline } from './memory/pipeline';
|
|
56
56
|
export type { FactPipelineConfig } from './memory/pipeline';
|
|
57
|
+
export { autoPipeline } from './memory/pipeline';
|
|
58
|
+
export type { AutoPipelineConfig, AutoPipelineState } from './memory/pipeline';
|
|
57
59
|
export type { Embedder, EmbedArgs, EmbedBatchArgs } from './memory/embedding';
|
|
58
60
|
export { cosineSimilarity, mockEmbedder } from './memory/embedding';
|
|
59
61
|
export type { MockEmbedderOptions } from './memory/embedding';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.barrel.d.ts","sourceRoot":"","sources":["../../src/memory.barrel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGzE,YAAY,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"memory.barrel.d.ts","sourceRoot":"","sources":["../../src/memory.barrel.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED