@framers/agentos 0.1.201 → 0.1.203
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/memory/CognitiveMemoryManager.d.ts +22 -0
- package/dist/memory/CognitiveMemoryManager.d.ts.map +1 -1
- package/dist/memory/CognitiveMemoryManager.js +26 -0
- package/dist/memory/CognitiveMemoryManager.js.map +1 -1
- package/dist/memory/archive/IMemoryArchive.d.ts +179 -0
- package/dist/memory/archive/IMemoryArchive.d.ts.map +1 -0
- package/dist/memory/archive/IMemoryArchive.js +18 -0
- package/dist/memory/archive/IMemoryArchive.js.map +1 -0
- package/dist/memory/archive/SqlStorageMemoryArchive.d.ts +130 -0
- package/dist/memory/archive/SqlStorageMemoryArchive.d.ts.map +1 -0
- package/dist/memory/archive/SqlStorageMemoryArchive.js +243 -0
- package/dist/memory/archive/SqlStorageMemoryArchive.js.map +1 -0
- package/dist/memory/archive/index.d.ts +8 -0
- package/dist/memory/archive/index.d.ts.map +1 -0
- package/dist/memory/archive/index.js +7 -0
- package/dist/memory/archive/index.js.map +1 -0
- package/dist/memory/core/config.d.ts +11 -0
- package/dist/memory/core/config.d.ts.map +1 -1
- package/dist/memory/core/config.js.map +1 -1
- package/dist/memory/io/extension/MemoryToolsExtension.d.ts +6 -0
- package/dist/memory/io/extension/MemoryToolsExtension.d.ts.map +1 -1
- package/dist/memory/io/extension/MemoryToolsExtension.js.map +1 -1
- package/dist/memory/io/tools/RehydrateMemoryTool.d.ts +81 -0
- package/dist/memory/io/tools/RehydrateMemoryTool.d.ts.map +1 -0
- package/dist/memory/io/tools/RehydrateMemoryTool.js +94 -0
- package/dist/memory/io/tools/RehydrateMemoryTool.js.map +1 -0
- package/dist/memory/io/tools/index.d.ts +3 -0
- package/dist/memory/io/tools/index.d.ts.map +1 -1
- package/dist/memory/io/tools/index.js +2 -0
- package/dist/memory/io/tools/index.js.map +1 -1
- package/dist/memory/mechanisms/consolidation/TemporalGist.d.ts.map +1 -1
- package/dist/memory/mechanisms/consolidation/TemporalGist.js +21 -0
- package/dist/memory/mechanisms/consolidation/TemporalGist.js.map +1 -1
- package/dist/memory/mechanisms/retrieval/Reconsolidation.d.ts.map +1 -1
- package/dist/memory/mechanisms/retrieval/Reconsolidation.js +5 -1
- package/dist/memory/mechanisms/retrieval/Reconsolidation.js.map +1 -1
- package/dist/memory/mechanisms/types.d.ts +10 -0
- package/dist/memory/mechanisms/types.d.ts.map +1 -1
- package/dist/memory/pipeline/consolidation/ConsolidationPipeline.d.ts +6 -0
- package/dist/memory/pipeline/consolidation/ConsolidationPipeline.d.ts.map +1 -1
- package/dist/memory/pipeline/consolidation/ConsolidationPipeline.js +16 -0
- package/dist/memory/pipeline/consolidation/ConsolidationPipeline.js.map +1 -1
- package/dist/memory/pipeline/lifecycle/MemoryLifecycleManager.d.ts +11 -0
- package/dist/memory/pipeline/lifecycle/MemoryLifecycleManager.d.ts.map +1 -1
- package/dist/memory/pipeline/lifecycle/MemoryLifecycleManager.js +43 -5
- package/dist/memory/pipeline/lifecycle/MemoryLifecycleManager.js.map +1 -1
- package/dist/memory/pipeline/observation/PerspectiveObserver.d.ts +139 -0
- package/dist/memory/pipeline/observation/PerspectiveObserver.d.ts.map +1 -0
- package/dist/memory/pipeline/observation/PerspectiveObserver.js +164 -0
- package/dist/memory/pipeline/observation/PerspectiveObserver.js.map +1 -0
- package/dist/memory/pipeline/observation/perspective-prompt.d.ts +29 -0
- package/dist/memory/pipeline/observation/perspective-prompt.d.ts.map +1 -0
- package/dist/memory/pipeline/observation/perspective-prompt.js +64 -0
- package/dist/memory/pipeline/observation/perspective-prompt.js.map +1 -0
- package/dist/memory/retrieval/store/SqliteBrain.d.ts.map +1 -1
- package/dist/memory/retrieval/store/SqliteBrain.js +7 -0
- package/dist/memory/retrieval/store/SqliteBrain.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview PerspectiveObserver — multi-agent subjective memory encoding.
|
|
3
|
+
*
|
|
4
|
+
* Takes objective events and an array of witnesses, applies gating predicates,
|
|
5
|
+
* then produces per-witness first-person memory traces via LLM rewriting.
|
|
6
|
+
* Each witness's HEXACO traits, current mood, and relationships to entities
|
|
7
|
+
* in the event shape what they notice, feel, and remember.
|
|
8
|
+
*
|
|
9
|
+
* Standalone pipeline stage — sibling to ObservationCompressor and
|
|
10
|
+
* ObservationReflector, not an extension of either.
|
|
11
|
+
*
|
|
12
|
+
* @module agentos/memory/observation/PerspectiveObserver
|
|
13
|
+
* @see {@link ObservationCompressor} for note compression (different job).
|
|
14
|
+
* @see {@link ObservationReflector} for pattern extraction (different job).
|
|
15
|
+
*/
|
|
16
|
+
import { sha256 } from '../../core/util/crossPlatformCrypto.js';
|
|
17
|
+
import { buildPerspectiveSystemPrompt, buildPerspectiveUserPrompt, } from './perspective-prompt.js';
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Implementation
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
/**
|
|
22
|
+
* Multi-agent subjective memory encoder.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* const observer = new PerspectiveObserver({
|
|
27
|
+
* llmInvoker: (sys, usr) => callHaiku(sys, usr),
|
|
28
|
+
* });
|
|
29
|
+
* const result = await observer.rewrite(events, witnesses);
|
|
30
|
+
* for (const trace of result.traces) {
|
|
31
|
+
* await npcBrains.get(trace.witnessId)?.remember(trace.content, {
|
|
32
|
+
* type: 'episodic',
|
|
33
|
+
* tags: ['perspective-encoded'],
|
|
34
|
+
* });
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export class PerspectiveObserver {
|
|
39
|
+
constructor(config) {
|
|
40
|
+
this.llmInvoker = config.llmInvoker;
|
|
41
|
+
this.importanceThreshold = config.importanceThreshold ?? 0.3;
|
|
42
|
+
this.batchSize = config.batchSize ?? 10;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Rewrite objective events from each witness's perspective.
|
|
46
|
+
*
|
|
47
|
+
* Applies gating predicates, batches events per witness, invokes the LLM,
|
|
48
|
+
* and returns per-witness subjective traces. Failures fall back to objective
|
|
49
|
+
* encoding with a reason string.
|
|
50
|
+
*
|
|
51
|
+
* @param events - Objective events to rewrite.
|
|
52
|
+
* @param witnesses - Agents who witnessed the events.
|
|
53
|
+
* @returns Subjective traces + fallback records + LLM call count.
|
|
54
|
+
*/
|
|
55
|
+
async rewrite(events, witnesses) {
|
|
56
|
+
const traces = [];
|
|
57
|
+
const fallbacks = [];
|
|
58
|
+
let llmCallCount = 0;
|
|
59
|
+
// Pre-compute event hashes
|
|
60
|
+
const eventHashes = new Map();
|
|
61
|
+
for (const event of events) {
|
|
62
|
+
eventHashes.set(event.eventId, await sha256(event.content));
|
|
63
|
+
}
|
|
64
|
+
for (const witness of witnesses) {
|
|
65
|
+
// Gate: tier
|
|
66
|
+
if (witness.tier !== 'important') {
|
|
67
|
+
fallbacks.push({ witnessId: witness.agentId, reason: `Skipped: tier is '${witness.tier}', not 'important'` });
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
// Gate: filter events by importance and entity overlap
|
|
71
|
+
const qualifying = events.filter((e) => {
|
|
72
|
+
if (e.importance < this.importanceThreshold)
|
|
73
|
+
return false;
|
|
74
|
+
const witnessEntityNames = new Set(witness.relationships.map((r) => r.entityName.toLowerCase()));
|
|
75
|
+
const eventEntityNames = e.entities.map((n) => n.toLowerCase());
|
|
76
|
+
const hasOverlap = eventEntityNames.some((n) => witnessEntityNames.has(n));
|
|
77
|
+
const witnessNameInEvent = eventEntityNames.includes(witness.agentName.toLowerCase());
|
|
78
|
+
return hasOverlap || witnessNameInEvent;
|
|
79
|
+
});
|
|
80
|
+
if (qualifying.length === 0) {
|
|
81
|
+
const allBelowThreshold = events.every((e) => e.importance < this.importanceThreshold);
|
|
82
|
+
if (allBelowThreshold) {
|
|
83
|
+
fallbacks.push({ witnessId: witness.agentId, reason: 'Skipped: all events below importance threshold' });
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
fallbacks.push({ witnessId: witness.agentId, reason: 'Skipped: no entity overlap with witness relationships' });
|
|
87
|
+
}
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
// Batch events and invoke LLM per batch
|
|
91
|
+
const systemPrompt = buildPerspectiveSystemPrompt(witness);
|
|
92
|
+
const batches = this.chunk(qualifying, this.batchSize);
|
|
93
|
+
for (const batch of batches) {
|
|
94
|
+
const userPrompt = buildPerspectiveUserPrompt(batch);
|
|
95
|
+
try {
|
|
96
|
+
const response = await this.llmInvoker(systemPrompt, userPrompt);
|
|
97
|
+
llmCallCount++;
|
|
98
|
+
const parsed = this.parseResponse(response, batch.length);
|
|
99
|
+
if (!parsed) {
|
|
100
|
+
const reason = response.trim().startsWith('[')
|
|
101
|
+
? `Fallback: LLM returned wrong count (expected ${batch.length})`
|
|
102
|
+
: 'Fallback: LLM response failed to parse as JSON array';
|
|
103
|
+
fallbacks.push({ witnessId: witness.agentId, reason });
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
for (let i = 0; i < parsed.length; i++) {
|
|
107
|
+
const event = batch[i];
|
|
108
|
+
traces.push({
|
|
109
|
+
witnessId: witness.agentId,
|
|
110
|
+
content: parsed[i],
|
|
111
|
+
sourceEventId: event.eventId,
|
|
112
|
+
originalEventHash: eventHashes.get(event.eventId) ?? '',
|
|
113
|
+
perspectiveMetadata: {
|
|
114
|
+
hexacoSnapshot: { ...witness.hexaco },
|
|
115
|
+
moodSnapshot: { ...witness.mood },
|
|
116
|
+
relationshipSnapshot: witness.relationships.map((r) => ({ ...r })),
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
llmCallCount++;
|
|
123
|
+
fallbacks.push({
|
|
124
|
+
witnessId: witness.agentId,
|
|
125
|
+
reason: `Fallback: ${err instanceof Error ? err.message : String(err)}`,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return { traces, fallbacks, llmCallCount };
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Parse LLM response as a JSON array of strings.
|
|
134
|
+
*
|
|
135
|
+
* @param response - Raw LLM response text.
|
|
136
|
+
* @param expectedCount - Number of events in the batch.
|
|
137
|
+
* @returns Parsed string array, or null on failure.
|
|
138
|
+
*/
|
|
139
|
+
parseResponse(response, expectedCount) {
|
|
140
|
+
try {
|
|
141
|
+
const cleaned = response.replace(/^```json?\n?/m, '').replace(/\n?```$/m, '').trim();
|
|
142
|
+
const parsed = JSON.parse(cleaned);
|
|
143
|
+
if (!Array.isArray(parsed))
|
|
144
|
+
return null;
|
|
145
|
+
if (parsed.length !== expectedCount)
|
|
146
|
+
return null;
|
|
147
|
+
if (!parsed.every((item) => typeof item === 'string'))
|
|
148
|
+
return null;
|
|
149
|
+
return parsed;
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/** Split an array into chunks of `size`. */
|
|
156
|
+
chunk(arr, size) {
|
|
157
|
+
const chunks = [];
|
|
158
|
+
for (let i = 0; i < arr.length; i += size) {
|
|
159
|
+
chunks.push(arr.slice(i, i + size));
|
|
160
|
+
}
|
|
161
|
+
return chunks;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=PerspectiveObserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerspectiveObserver.js","sourceRoot":"","sources":["../../../../src/memory/pipeline/observation/PerspectiveObserver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Prompt builders for PerspectiveObserver LLM calls.
|
|
3
|
+
*
|
|
4
|
+
* Pure functions that produce the system and user prompts for per-witness
|
|
5
|
+
* first-person memory rewriting. Separated from PerspectiveObserver for
|
|
6
|
+
* testability.
|
|
7
|
+
*
|
|
8
|
+
* @module agentos/memory/observation/perspective-prompt
|
|
9
|
+
* @see {@link PerspectiveObserver} for the consuming class.
|
|
10
|
+
*/
|
|
11
|
+
import type { Witness, ObservedEvent } from './PerspectiveObserver.js';
|
|
12
|
+
/**
|
|
13
|
+
* Build the system prompt for a single witness.
|
|
14
|
+
*
|
|
15
|
+
* Encodes the witness's HEXACO personality, current mood, and relationships
|
|
16
|
+
* into instructions for first-person memory rewriting.
|
|
17
|
+
*
|
|
18
|
+
* @param witness - The witness whose perspective shapes the prompt.
|
|
19
|
+
* @returns System prompt string for the LLM call.
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildPerspectiveSystemPrompt(witness: Witness): string;
|
|
22
|
+
/**
|
|
23
|
+
* Build the user prompt containing the events to rewrite.
|
|
24
|
+
*
|
|
25
|
+
* @param events - Objective events to rewrite from the witness's perspective.
|
|
26
|
+
* @returns User prompt string listing events as a numbered list.
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildPerspectiveUserPrompt(events: ObservedEvent[]): string;
|
|
29
|
+
//# sourceMappingURL=perspective-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perspective-prompt.d.ts","sourceRoot":"","sources":["../../../../src/memory/pipeline/observation/perspective-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEvE;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAiCrE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAK1E"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Prompt builders for PerspectiveObserver LLM calls.
|
|
3
|
+
*
|
|
4
|
+
* Pure functions that produce the system and user prompts for per-witness
|
|
5
|
+
* first-person memory rewriting. Separated from PerspectiveObserver for
|
|
6
|
+
* testability.
|
|
7
|
+
*
|
|
8
|
+
* @module agentos/memory/observation/perspective-prompt
|
|
9
|
+
* @see {@link PerspectiveObserver} for the consuming class.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Build the system prompt for a single witness.
|
|
13
|
+
*
|
|
14
|
+
* Encodes the witness's HEXACO personality, current mood, and relationships
|
|
15
|
+
* into instructions for first-person memory rewriting.
|
|
16
|
+
*
|
|
17
|
+
* @param witness - The witness whose perspective shapes the prompt.
|
|
18
|
+
* @returns System prompt string for the LLM call.
|
|
19
|
+
*/
|
|
20
|
+
export function buildPerspectiveSystemPrompt(witness) {
|
|
21
|
+
const h = witness.hexaco;
|
|
22
|
+
const m = witness.mood;
|
|
23
|
+
const relBlock = witness.relationships.length > 0
|
|
24
|
+
? witness.relationships
|
|
25
|
+
.map((r) => `- ${r.entityName}: ${r.disposition} (trust: ${r.trustLevel})`)
|
|
26
|
+
.join('\n')
|
|
27
|
+
: '- No known relationships to entities in these events.';
|
|
28
|
+
return `You are encoding memories for ${witness.agentName}. Rewrite each event as this character's first-person memory. What stands out to THEM? What do they notice, feel, emphasize?
|
|
29
|
+
|
|
30
|
+
Personality (HEXACO, 0-1 scale):
|
|
31
|
+
- Honesty: ${h.honesty ?? 0.5} — low: spin things favorably; high: record things as they are
|
|
32
|
+
- Emotionality: ${h.emotionality ?? 0.5} — low: focus on facts; high: focus on feelings and atmosphere
|
|
33
|
+
- Extraversion: ${h.extraversion ?? 0.5} — low: internal monologue; high: focus on social dynamics
|
|
34
|
+
- Agreeableness: ${h.agreeableness ?? 0.5} — low: note conflicts, competition; high: note cooperation
|
|
35
|
+
- Conscientiousness: ${h.conscientiousness ?? 0.5} — low: skip details; high: note commitments, consequences
|
|
36
|
+
- Openness: ${h.openness ?? 0.5} — low: stick to what happened; high: wonder about implications
|
|
37
|
+
|
|
38
|
+
Current mood: valence=${m.valence}, arousal=${m.arousal}, dominance=${m.dominance}
|
|
39
|
+
|
|
40
|
+
Relationships:
|
|
41
|
+
${relBlock}
|
|
42
|
+
|
|
43
|
+
Rules:
|
|
44
|
+
1. Write 1-2 sentences per event, first person.
|
|
45
|
+
2. Personality MUST color the encoding — a suspicious character notices threats, an emotional character remembers how things felt, a conscientious character tracks who promised what.
|
|
46
|
+
3. Hostile relationships mean interpreting actions with suspicion.
|
|
47
|
+
4. Friendly relationships mean charitable interpretation.
|
|
48
|
+
5. Do NOT fabricate events that didn't happen. Rewrite perspective, not facts.
|
|
49
|
+
|
|
50
|
+
Output a JSON array of strings, one per event. No explanation.`;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Build the user prompt containing the events to rewrite.
|
|
54
|
+
*
|
|
55
|
+
* @param events - Objective events to rewrite from the witness's perspective.
|
|
56
|
+
* @returns User prompt string listing events as a numbered list.
|
|
57
|
+
*/
|
|
58
|
+
export function buildPerspectiveUserPrompt(events) {
|
|
59
|
+
const list = events
|
|
60
|
+
.map((e, i) => `${i + 1}. ${e.content}`)
|
|
61
|
+
.join('\n');
|
|
62
|
+
return `Events to encode:\n${list}`;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=perspective-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perspective-prompt.js","sourceRoot":"","sources":["../../../../src/memory/pipeline/observation/perspective-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC3D,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IACzB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAEvB,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;QAC/C,CAAC,CAAC,OAAO,CAAC,aAAa;aAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,WAAW,YAAY,CAAC,CAAC,UAAU,GAAG,CAAC;aAC1E,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,uDAAuD,CAAC;IAE5D,OAAO,iCAAiC,OAAO,CAAC,SAAS;;;aAG9C,CAAC,CAAC,OAAO,IAAI,GAAG;kBACX,CAAC,CAAC,YAAY,IAAI,GAAG;kBACrB,CAAC,CAAC,YAAY,IAAI,GAAG;mBACpB,CAAC,CAAC,aAAa,IAAI,GAAG;uBAClB,CAAC,CAAC,iBAAiB,IAAI,GAAG;cACnC,CAAC,CAAC,QAAQ,IAAI,GAAG;;wBAEP,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,SAAS;;;EAG/E,QAAQ;;;;;;;;;+DASqD,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAuB;IAChE,MAAM,IAAI,GAAG,MAAM;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;SACvC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,sBAAsB,IAAI,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteBrain.d.ts","sourceRoot":"","sources":["../../../../src/memory/retrieval/store/SqliteBrain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"SqliteBrain.d.ts","sourceRoot":"","sources":["../../../../src/memory/retrieval/store/SqliteBrain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,8BAA8B,CAAC;AA2QtC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,WAAW;IACtB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAM5C;;;;;OAKG;IACH,OAAO;IASP;;;;;;;;;;;;;;;;OAgBG;WACU,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA2BvD;;;;;OAKG;WACU,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQzD;;;;;;OAMG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI7E;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAIlF;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAI7E;;;;OAIG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC;;;;;;;;OAQG;IACG,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzE;;;;;OAKG;IACH,IAAI,OAAO,IAAI,cAAc,CAE5B;IAED;;;;OAIG;IACH,IAAI,QAAQ,IAAI,eAAe,CAE9B;IAMD;;;;OAIG;YACW,WAAW;IA4CzB;;;OAGG;YACW,SAAS;IAmBvB;;;;;OAKG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IASvD;;;;;;;;OAQG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD;;;;;;;;;;;;OAYG;IACG,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYhE;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
* @module memory/store/SqliteBrain
|
|
30
30
|
*/
|
|
31
31
|
import { resolveStorageAdapter, createStorageFeatures } from '@framers/sql-storage-adapter';
|
|
32
|
+
import { DDL_ARCHIVED_TRACES, DDL_ARCHIVED_TRACES_IDX_AGENT_TIME, DDL_ARCHIVED_TRACES_IDX_REASON, DDL_ARCHIVE_ACCESS_LOG, DDL_ARCHIVE_ACCESS_LOG_IDX, } from '../../archive/SqlStorageMemoryArchive.js';
|
|
32
33
|
// ---------------------------------------------------------------------------
|
|
33
34
|
// Constants
|
|
34
35
|
// ---------------------------------------------------------------------------
|
|
@@ -451,6 +452,12 @@ export class SqliteBrain {
|
|
|
451
452
|
DDL_CONVERSATIONS,
|
|
452
453
|
DDL_MESSAGES,
|
|
453
454
|
DDL_PROSPECTIVE_ITEMS,
|
|
455
|
+
// Memory archive tables (write-ahead cold storage for verbatim content)
|
|
456
|
+
DDL_ARCHIVED_TRACES,
|
|
457
|
+
DDL_ARCHIVED_TRACES_IDX_AGENT_TIME,
|
|
458
|
+
DDL_ARCHIVED_TRACES_IDX_REASON,
|
|
459
|
+
DDL_ARCHIVE_ACCESS_LOG,
|
|
460
|
+
DDL_ARCHIVE_ACCESS_LOG_IDX,
|
|
454
461
|
];
|
|
455
462
|
for (const statement of ddlStatements) {
|
|
456
463
|
await this._adapter.exec(statement);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteBrain.js","sourceRoot":"","sources":["../../../../src/memory/retrieval/store/SqliteBrain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAQH,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"SqliteBrain.js","sourceRoot":"","sources":["../../../../src/memory/retrieval/store/SqliteBrain.ts"],"names":[],"mappings":"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"}
|