audrey 0.16.1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +146 -724
  3. package/dist/mcp-server/config.d.ts +20 -0
  4. package/dist/mcp-server/config.d.ts.map +1 -0
  5. package/dist/mcp-server/config.js +125 -0
  6. package/dist/mcp-server/config.js.map +1 -0
  7. package/dist/mcp-server/index.d.ts +100 -0
  8. package/dist/mcp-server/index.d.ts.map +1 -0
  9. package/dist/mcp-server/index.js +1113 -0
  10. package/dist/mcp-server/index.js.map +1 -0
  11. package/dist/src/adaptive.d.ts +7 -0
  12. package/dist/src/adaptive.d.ts.map +1 -0
  13. package/dist/src/adaptive.js +49 -0
  14. package/dist/src/adaptive.js.map +1 -0
  15. package/dist/src/affect.d.ts +19 -0
  16. package/dist/src/affect.d.ts.map +1 -0
  17. package/dist/src/affect.js +72 -0
  18. package/dist/src/affect.js.map +1 -0
  19. package/dist/src/audrey.d.ts +140 -0
  20. package/dist/src/audrey.d.ts.map +1 -0
  21. package/dist/src/audrey.js +564 -0
  22. package/dist/src/audrey.js.map +1 -0
  23. package/dist/src/capsule.d.ts +68 -0
  24. package/dist/src/capsule.d.ts.map +1 -0
  25. package/dist/src/capsule.js +311 -0
  26. package/dist/src/capsule.js.map +1 -0
  27. package/dist/src/causal.d.ts +28 -0
  28. package/dist/src/causal.d.ts.map +1 -0
  29. package/dist/src/causal.js +65 -0
  30. package/dist/src/causal.js.map +1 -0
  31. package/dist/src/confidence.d.ts +12 -0
  32. package/dist/src/confidence.d.ts.map +1 -0
  33. package/dist/src/confidence.js +63 -0
  34. package/dist/src/confidence.js.map +1 -0
  35. package/dist/src/consolidate.d.ts +8 -0
  36. package/dist/src/consolidate.d.ts.map +1 -0
  37. package/dist/src/consolidate.js +218 -0
  38. package/dist/src/consolidate.js.map +1 -0
  39. package/dist/src/context.d.ts +3 -0
  40. package/dist/src/context.d.ts.map +1 -0
  41. package/dist/src/context.js +19 -0
  42. package/dist/src/context.js.map +1 -0
  43. package/dist/src/db.d.ts +12 -0
  44. package/dist/src/db.d.ts.map +1 -0
  45. package/dist/src/db.js +380 -0
  46. package/dist/src/db.js.map +1 -0
  47. package/dist/src/decay.d.ts +7 -0
  48. package/dist/src/decay.d.ts.map +1 -0
  49. package/dist/src/decay.js +68 -0
  50. package/dist/src/decay.js.map +1 -0
  51. package/dist/src/embedding.d.ts +57 -0
  52. package/dist/src/embedding.d.ts.map +1 -0
  53. package/dist/src/embedding.js +254 -0
  54. package/dist/src/embedding.js.map +1 -0
  55. package/dist/src/encode.d.ts +15 -0
  56. package/dist/src/encode.d.ts.map +1 -0
  57. package/dist/src/encode.js +36 -0
  58. package/dist/src/encode.js.map +1 -0
  59. package/dist/src/events.d.ts +69 -0
  60. package/dist/src/events.d.ts.map +1 -0
  61. package/dist/src/events.js +149 -0
  62. package/dist/src/events.js.map +1 -0
  63. package/dist/src/export.d.ts +3 -0
  64. package/dist/src/export.d.ts.map +1 -0
  65. package/dist/src/export.js +46 -0
  66. package/dist/src/export.js.map +1 -0
  67. package/dist/src/forget.d.ts +11 -0
  68. package/dist/src/forget.d.ts.map +1 -0
  69. package/dist/src/forget.js +105 -0
  70. package/dist/src/forget.js.map +1 -0
  71. package/dist/src/fts.d.ts +34 -0
  72. package/dist/src/fts.d.ts.map +1 -0
  73. package/dist/src/fts.js +117 -0
  74. package/dist/src/fts.js.map +1 -0
  75. package/dist/src/hybrid-recall.d.ts +37 -0
  76. package/dist/src/hybrid-recall.d.ts.map +1 -0
  77. package/dist/src/hybrid-recall.js +213 -0
  78. package/dist/src/hybrid-recall.js.map +1 -0
  79. package/dist/src/import.d.ts +4 -0
  80. package/dist/src/import.d.ts.map +1 -0
  81. package/dist/src/import.js +127 -0
  82. package/dist/src/import.js.map +1 -0
  83. package/dist/src/index.d.ts +22 -0
  84. package/dist/src/index.d.ts.map +1 -0
  85. package/{src → dist/src}/index.js +5 -13
  86. package/dist/src/index.js.map +1 -0
  87. package/dist/src/interference.d.ts +13 -0
  88. package/dist/src/interference.d.ts.map +1 -0
  89. package/dist/src/interference.js +45 -0
  90. package/dist/src/interference.js.map +1 -0
  91. package/dist/src/introspect.d.ts +4 -0
  92. package/dist/src/introspect.d.ts.map +1 -0
  93. package/dist/src/introspect.js +40 -0
  94. package/dist/src/introspect.js.map +1 -0
  95. package/dist/src/llm.d.ts +38 -0
  96. package/dist/src/llm.d.ts.map +1 -0
  97. package/dist/src/llm.js +167 -0
  98. package/dist/src/llm.js.map +1 -0
  99. package/dist/src/migrate.d.ts +6 -0
  100. package/dist/src/migrate.d.ts.map +1 -0
  101. package/dist/src/migrate.js +51 -0
  102. package/dist/src/migrate.js.map +1 -0
  103. package/dist/src/promote.d.ts +40 -0
  104. package/dist/src/promote.d.ts.map +1 -0
  105. package/dist/src/promote.js +200 -0
  106. package/dist/src/promote.js.map +1 -0
  107. package/dist/src/prompts.d.ts +16 -0
  108. package/dist/src/prompts.d.ts.map +1 -0
  109. package/{src → dist/src}/prompts.js +172 -203
  110. package/dist/src/prompts.js.map +1 -0
  111. package/dist/src/recall.d.ts +9 -0
  112. package/dist/src/recall.d.ts.map +1 -0
  113. package/dist/src/recall.js +432 -0
  114. package/dist/src/recall.js.map +1 -0
  115. package/dist/src/redact.d.ts +27 -0
  116. package/dist/src/redact.d.ts.map +1 -0
  117. package/dist/src/redact.js +228 -0
  118. package/dist/src/redact.js.map +1 -0
  119. package/dist/src/rollback.d.ts +8 -0
  120. package/dist/src/rollback.d.ts.map +1 -0
  121. package/dist/src/rollback.js +33 -0
  122. package/dist/src/rollback.js.map +1 -0
  123. package/dist/src/routes.d.ts +7 -0
  124. package/dist/src/routes.d.ts.map +1 -0
  125. package/dist/src/routes.js +226 -0
  126. package/dist/src/routes.js.map +1 -0
  127. package/dist/src/rules-compiler.d.ts +20 -0
  128. package/dist/src/rules-compiler.d.ts.map +1 -0
  129. package/dist/src/rules-compiler.js +143 -0
  130. package/dist/src/rules-compiler.js.map +1 -0
  131. package/dist/src/server.d.ts +12 -0
  132. package/dist/src/server.d.ts.map +1 -0
  133. package/dist/src/server.js +22 -0
  134. package/dist/src/server.js.map +1 -0
  135. package/dist/src/tool-trace.d.ts +37 -0
  136. package/dist/src/tool-trace.d.ts.map +1 -0
  137. package/dist/src/tool-trace.js +142 -0
  138. package/dist/src/tool-trace.js.map +1 -0
  139. package/dist/src/types.d.ts +446 -0
  140. package/dist/src/types.d.ts.map +1 -0
  141. package/dist/src/types.js +6 -0
  142. package/dist/src/types.js.map +1 -0
  143. package/dist/src/ulid.d.ts +3 -0
  144. package/dist/src/ulid.d.ts.map +1 -0
  145. package/dist/src/ulid.js +11 -0
  146. package/dist/src/ulid.js.map +1 -0
  147. package/dist/src/utils.d.ts +10 -0
  148. package/dist/src/utils.d.ts.map +1 -0
  149. package/dist/src/utils.js +41 -0
  150. package/dist/src/utils.js.map +1 -0
  151. package/dist/src/validate.d.ts +22 -0
  152. package/dist/src/validate.d.ts.map +1 -0
  153. package/dist/src/validate.js +109 -0
  154. package/dist/src/validate.js.map +1 -0
  155. package/docs/assets/benchmarks/local-benchmark.svg +45 -0
  156. package/docs/assets/benchmarks/operations-benchmark.svg +45 -0
  157. package/docs/assets/benchmarks/published-memory-standards.svg +50 -0
  158. package/docs/benchmarking.md +151 -0
  159. package/docs/production-readiness.md +124 -0
  160. package/examples/fintech-ops-demo.js +67 -0
  161. package/examples/healthcare-ops-demo.js +67 -0
  162. package/examples/stripe-demo.js +105 -0
  163. package/package.json +53 -13
  164. package/mcp-server/config.js +0 -80
  165. package/mcp-server/index.js +0 -729
  166. package/src/adaptive.js +0 -53
  167. package/src/affect.js +0 -64
  168. package/src/audrey.js +0 -604
  169. package/src/causal.js +0 -95
  170. package/src/confidence.js +0 -120
  171. package/src/consolidate.js +0 -265
  172. package/src/context.js +0 -15
  173. package/src/db.js +0 -370
  174. package/src/decay.js +0 -84
  175. package/src/embedding.js +0 -256
  176. package/src/encode.js +0 -63
  177. package/src/export.js +0 -67
  178. package/src/forget.js +0 -111
  179. package/src/import.js +0 -245
  180. package/src/interference.js +0 -51
  181. package/src/introspect.js +0 -48
  182. package/src/llm.js +0 -246
  183. package/src/migrate.js +0 -58
  184. package/src/recall.js +0 -352
  185. package/src/rollback.js +0 -42
  186. package/src/ulid.js +0 -18
  187. package/src/utils.js +0 -38
  188. package/src/validate.js +0 -172
@@ -0,0 +1,564 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import { createDatabase, closeDatabase } from './db.js';
3
+ import { createEmbeddingProvider } from './embedding.js';
4
+ import { createLLMProvider } from './llm.js';
5
+ import { encodeEpisode } from './encode.js';
6
+ import { recall as recallFn, recallStream as recallStreamFn } from './recall.js';
7
+ import { validateMemory } from './validate.js';
8
+ import { runConsolidation } from './consolidate.js';
9
+ import { applyDecay } from './decay.js';
10
+ import { rollbackConsolidation, getConsolidationHistory } from './rollback.js';
11
+ import { forgetMemory, forgetByQuery as forgetByQueryFn, purgeMemories } from './forget.js';
12
+ import { introspect as introspectFn } from './introspect.js';
13
+ import { buildContextResolutionPrompt, buildReflectionPrompt } from './prompts.js';
14
+ import { exportMemories } from './export.js';
15
+ import { importMemories } from './import.js';
16
+ import { suggestConsolidationParams as suggestParamsFn } from './adaptive.js';
17
+ import { reembedAll } from './migrate.js';
18
+ import { applyInterference } from './interference.js';
19
+ import { detectResonance } from './affect.js';
20
+ import { observeTool } from './tool-trace.js';
21
+ import { listEvents, countEvents, recentFailures, } from './events.js';
22
+ import { buildCapsule } from './capsule.js';
23
+ import { findPromotionCandidates, } from './promote.js';
24
+ import { renderAllRules } from './rules-compiler.js';
25
+ import { insertEvent } from './events.js';
26
+ import { mkdirSync, writeFileSync, existsSync } from 'node:fs';
27
+ import { dirname, join, resolve as pathResolve } from 'node:path';
28
+ export class Audrey extends EventEmitter {
29
+ agent;
30
+ dataDir;
31
+ embeddingProvider;
32
+ db;
33
+ llmProvider;
34
+ confidenceConfig;
35
+ consolidationConfig;
36
+ decayConfig;
37
+ interferenceConfig;
38
+ contextConfig;
39
+ affectConfig;
40
+ autoReflect;
41
+ _migrationPending;
42
+ _autoConsolidateTimer;
43
+ _closed;
44
+ constructor({ dataDir = './audrey-data', agent = 'default', embedding = { provider: 'mock', dimensions: 64 }, llm, confidence = {}, consolidation = {}, decay = {}, interference = {}, context = {}, affect = {}, autoReflect = false, } = {}) {
45
+ super();
46
+ const dormantThreshold = decay.dormantThreshold ?? 0.1;
47
+ if (dormantThreshold < 0 || dormantThreshold > 1) {
48
+ throw new Error(`dormantThreshold must be between 0 and 1, got: ${dormantThreshold}`);
49
+ }
50
+ const minEpisodes = consolidation.minEpisodes ?? 3;
51
+ if (!Number.isInteger(minEpisodes) || minEpisodes < 1) {
52
+ throw new Error(`minEpisodes must be a positive integer, got: ${minEpisodes}`);
53
+ }
54
+ this.agent = agent;
55
+ this.dataDir = dataDir;
56
+ this.embeddingProvider = createEmbeddingProvider(embedding);
57
+ const { db, migrated } = createDatabase(dataDir, { dimensions: this.embeddingProvider.dimensions });
58
+ this.db = db;
59
+ this._migrationPending = migrated;
60
+ this.llmProvider = llm ? createLLMProvider(llm) : null;
61
+ this.confidenceConfig = {
62
+ weights: confidence.weights,
63
+ halfLives: confidence.halfLives,
64
+ sourceReliability: confidence.sourceReliability,
65
+ interferenceWeight: interference.weight ?? 0.1,
66
+ contextWeight: context.weight ?? 0.3,
67
+ affectWeight: affect.weight ?? 0.2,
68
+ };
69
+ this.consolidationConfig = {
70
+ minEpisodes: consolidation.minEpisodes || 3,
71
+ };
72
+ this.decayConfig = { dormantThreshold: decay.dormantThreshold || 0.1 };
73
+ this._autoConsolidateTimer = null;
74
+ this._closed = false;
75
+ this.interferenceConfig = {
76
+ enabled: interference.enabled ?? true,
77
+ k: interference.k ?? 5,
78
+ threshold: interference.threshold ?? 0.6,
79
+ weight: interference.weight ?? 0.1,
80
+ };
81
+ this.contextConfig = {
82
+ enabled: context.enabled ?? true,
83
+ weight: context.weight ?? 0.3,
84
+ };
85
+ this.affectConfig = {
86
+ enabled: affect.enabled ?? true,
87
+ weight: affect.weight ?? 0.2,
88
+ arousalWeight: affect.arousalWeight ?? 0.3,
89
+ resonance: {
90
+ enabled: affect.resonance?.enabled ?? true,
91
+ k: affect.resonance?.k ?? 5,
92
+ threshold: affect.resonance?.threshold ?? 0.5,
93
+ affectThreshold: affect.resonance?.affectThreshold ?? 0.6,
94
+ },
95
+ };
96
+ this.autoReflect = autoReflect;
97
+ }
98
+ async _ensureMigrated() {
99
+ if (!this._migrationPending)
100
+ return;
101
+ const counts = await reembedAll(this.db, this.embeddingProvider);
102
+ this._migrationPending = false;
103
+ this.emit('migration', counts);
104
+ }
105
+ _emitValidation(id, params) {
106
+ validateMemory(this.db, this.embeddingProvider, { id, ...params }, {
107
+ llmProvider: this.llmProvider,
108
+ })
109
+ .then(validation => {
110
+ if (validation.action === 'reinforced') {
111
+ this.emit('reinforcement', {
112
+ episodeId: id,
113
+ targetId: validation.semanticId,
114
+ similarity: validation.similarity,
115
+ });
116
+ }
117
+ else if (validation.action === 'contradiction') {
118
+ this.emit('contradiction', {
119
+ episodeId: id,
120
+ contradictionId: validation.contradictionId,
121
+ semanticId: validation.semanticId,
122
+ similarity: validation.similarity,
123
+ resolution: validation.resolution,
124
+ });
125
+ }
126
+ })
127
+ .catch(err => this.emit('error', err));
128
+ }
129
+ async encode(params) {
130
+ await this._ensureMigrated();
131
+ const encodeParams = { ...params, arousalWeight: this.affectConfig.arousalWeight };
132
+ const id = await encodeEpisode(this.db, this.embeddingProvider, encodeParams);
133
+ this.emit('encode', { id, ...params });
134
+ if (this.interferenceConfig.enabled) {
135
+ applyInterference(this.db, this.embeddingProvider, id, params, this.interferenceConfig)
136
+ .then(affected => {
137
+ if (affected.length > 0) {
138
+ this.emit('interference', { episodeId: id, affected });
139
+ }
140
+ })
141
+ .catch(err => this.emit('error', err));
142
+ }
143
+ if (this.affectConfig.enabled && this.affectConfig.resonance.enabled && params.affect?.valence !== undefined) {
144
+ detectResonance(this.db, this.embeddingProvider, id, params, this.affectConfig.resonance)
145
+ .then(echoes => {
146
+ if (echoes.length > 0) {
147
+ this.emit('resonance', { episodeId: id, affect: params.affect, echoes });
148
+ }
149
+ })
150
+ .catch(err => this.emit('error', err));
151
+ }
152
+ this._emitValidation(id, params);
153
+ return id;
154
+ }
155
+ async reflect(turns) {
156
+ if (!this.llmProvider)
157
+ return { encoded: 0, memories: [], skipped: 'no llm provider' };
158
+ const prompt = buildReflectionPrompt(turns);
159
+ let raw;
160
+ try {
161
+ raw = await this.llmProvider.chat(prompt);
162
+ }
163
+ catch (err) {
164
+ this.emit('error', err);
165
+ return { encoded: 0, memories: [], skipped: 'llm error' };
166
+ }
167
+ let parsed;
168
+ try {
169
+ parsed = JSON.parse(raw);
170
+ }
171
+ catch {
172
+ return { encoded: 0, memories: [], skipped: 'invalid llm response' };
173
+ }
174
+ const memories = parsed.memories ?? [];
175
+ let encoded = 0;
176
+ for (const mem of memories) {
177
+ if (!mem.content || !mem.source)
178
+ continue;
179
+ try {
180
+ await this.encode({
181
+ content: mem.content,
182
+ source: mem.source,
183
+ salience: mem.salience,
184
+ tags: mem.tags,
185
+ private: mem.private ?? false,
186
+ affect: mem.affect ?? undefined,
187
+ });
188
+ encoded++;
189
+ }
190
+ catch (err) {
191
+ this.emit('error', err);
192
+ }
193
+ }
194
+ return { encoded, memories: memories };
195
+ }
196
+ async encodeBatch(paramsList) {
197
+ await this._ensureMigrated();
198
+ const ids = [];
199
+ for (const params of paramsList) {
200
+ const id = await encodeEpisode(this.db, this.embeddingProvider, params);
201
+ ids.push(id);
202
+ this.emit('encode', { id, ...params });
203
+ }
204
+ for (let i = 0; i < ids.length; i++) {
205
+ this._emitValidation(ids[i], paramsList[i]);
206
+ }
207
+ return ids;
208
+ }
209
+ async recall(query, options = {}) {
210
+ await this._ensureMigrated();
211
+ return recallFn(this.db, this.embeddingProvider, query, {
212
+ ...options,
213
+ confidenceConfig: this._recallConfig(options),
214
+ });
215
+ }
216
+ async *recallStream(query, options = {}) {
217
+ await this._ensureMigrated();
218
+ yield* recallStreamFn(this.db, this.embeddingProvider, query, {
219
+ ...options,
220
+ confidenceConfig: this._recallConfig(options),
221
+ });
222
+ }
223
+ _recallConfig(options) {
224
+ let config = options.confidenceConfig ?? this.confidenceConfig;
225
+ if (this.contextConfig.enabled && options.context) {
226
+ config = { ...config, retrievalContext: options.context };
227
+ }
228
+ if (this.affectConfig.enabled && options.mood) {
229
+ config = { ...config, retrievalMood: options.mood };
230
+ }
231
+ return config;
232
+ }
233
+ async consolidate(options = {}) {
234
+ await this._ensureMigrated();
235
+ const result = await runConsolidation(this.db, this.embeddingProvider, {
236
+ minClusterSize: options.minClusterSize || this.consolidationConfig.minEpisodes,
237
+ similarityThreshold: options.similarityThreshold || 0.80,
238
+ extractPrinciple: options.extractPrinciple,
239
+ llmProvider: options.llmProvider || this.llmProvider || undefined,
240
+ });
241
+ const run = db_prepare_get_status(this.db, result.runId);
242
+ const output = { ...result, status: run?.status || 'completed' };
243
+ this.emit('consolidation', output);
244
+ return output;
245
+ }
246
+ decay(options = {}) {
247
+ const result = applyDecay(this.db, {
248
+ dormantThreshold: options.dormantThreshold || this.decayConfig.dormantThreshold,
249
+ halfLives: options.halfLives ?? this.confidenceConfig.halfLives,
250
+ });
251
+ this.emit('decay', result);
252
+ return result;
253
+ }
254
+ rollback(runId) {
255
+ const result = rollbackConsolidation(this.db, runId);
256
+ this.emit('rollback', { runId, ...result });
257
+ return result;
258
+ }
259
+ async resolveTruth(contradictionId) {
260
+ if (!this.llmProvider) {
261
+ throw new Error('resolveTruth requires an LLM provider');
262
+ }
263
+ const contradiction = this.db.prepare('SELECT * FROM contradictions WHERE id = ?').get(contradictionId);
264
+ if (!contradiction)
265
+ throw new Error(`Contradiction not found: ${contradictionId}`);
266
+ const claimA = this._loadClaimContent(contradiction.claim_a_id, contradiction.claim_a_type);
267
+ const claimB = this._loadClaimContent(contradiction.claim_b_id, contradiction.claim_b_type);
268
+ const messages = buildContextResolutionPrompt(claimA, claimB);
269
+ const result = await this.llmProvider.json(messages);
270
+ const now = new Date().toISOString();
271
+ const newState = result.resolution === 'context_dependent' ? 'context_dependent' : 'resolved';
272
+ this.db.prepare(`
273
+ UPDATE contradictions SET state = ?, resolution = ?, resolved_at = ?
274
+ WHERE id = ?
275
+ `).run(newState, JSON.stringify(result), now, contradictionId);
276
+ if (result.resolution === 'a_wins' && contradiction.claim_a_type === 'semantic') {
277
+ this.db.prepare("UPDATE semantics SET state = 'active' WHERE id = ?").run(contradiction.claim_a_id);
278
+ }
279
+ if (result.resolution === 'b_wins' && contradiction.claim_b_type === 'semantic') {
280
+ this.db.prepare("UPDATE semantics SET state = 'active' WHERE id = ?").run(contradiction.claim_b_id);
281
+ }
282
+ if (result.resolution === 'context_dependent') {
283
+ if (contradiction.claim_a_type === 'semantic' && result.conditions) {
284
+ this.db.prepare("UPDATE semantics SET state = 'context_dependent', conditions = ? WHERE id = ?")
285
+ .run(JSON.stringify(result.conditions), contradiction.claim_a_id);
286
+ }
287
+ }
288
+ return result;
289
+ }
290
+ _loadClaimContent(claimId, claimType) {
291
+ if (claimType === 'semantic') {
292
+ const row = this.db.prepare('SELECT content FROM semantics WHERE id = ?').get(claimId);
293
+ if (!row)
294
+ throw new Error(`Semantic memory not found: ${claimId}`);
295
+ return row.content;
296
+ }
297
+ else if (claimType === 'episodic') {
298
+ const row = this.db.prepare('SELECT content FROM episodes WHERE id = ?').get(claimId);
299
+ if (!row)
300
+ throw new Error(`Episode not found: ${claimId}`);
301
+ return row.content;
302
+ }
303
+ throw new Error(`Unknown claim type: ${claimType}`);
304
+ }
305
+ consolidationHistory() {
306
+ return getConsolidationHistory(this.db);
307
+ }
308
+ introspect() {
309
+ return introspectFn(this.db);
310
+ }
311
+ memoryStatus() {
312
+ const episodes = this.db.prepare('SELECT COUNT(*) as c FROM episodes').get().c;
313
+ const semantics = this.db.prepare('SELECT COUNT(*) as c FROM semantics').get().c;
314
+ const procedures = this.db.prepare('SELECT COUNT(*) as c FROM procedures').get().c;
315
+ const searchableEpisodes = this.db.prepare('SELECT COUNT(*) as c FROM episodes WHERE embedding IS NOT NULL').get().c;
316
+ const searchableSemantics = this.db.prepare('SELECT COUNT(*) as c FROM semantics WHERE embedding IS NOT NULL').get().c;
317
+ const searchableProcedures = this.db.prepare('SELECT COUNT(*) as c FROM procedures WHERE embedding IS NOT NULL').get().c;
318
+ let vecEpisodes = 0, vecSemantics = 0, vecProcedures = 0;
319
+ try {
320
+ vecEpisodes = this.db.prepare('SELECT COUNT(*) as c FROM vec_episodes').get().c;
321
+ vecSemantics = this.db.prepare('SELECT COUNT(*) as c FROM vec_semantics').get().c;
322
+ vecProcedures = this.db.prepare('SELECT COUNT(*) as c FROM vec_procedures').get().c;
323
+ }
324
+ catch {
325
+ // vec tables may not exist if no dimensions configured
326
+ }
327
+ const dimsRow = this.db.prepare("SELECT value FROM audrey_config WHERE key = 'dimensions'").get();
328
+ const dimensions = dimsRow ? parseInt(dimsRow.value, 10) : null;
329
+ const versionRow = this.db.prepare("SELECT value FROM audrey_config WHERE key = 'schema_version'").get();
330
+ const schemaVersion = versionRow ? parseInt(versionRow.value, 10) : 0;
331
+ const device = this.embeddingProvider._actualDevice
332
+ ?? this.embeddingProvider.device
333
+ ?? null;
334
+ const healthy = episodes === vecEpisodes
335
+ && semantics === vecSemantics
336
+ && procedures === vecProcedures;
337
+ const reembedRecommended = searchableEpisodes !== vecEpisodes
338
+ || searchableSemantics !== vecSemantics
339
+ || searchableProcedures !== vecProcedures;
340
+ return {
341
+ episodes,
342
+ vec_episodes: vecEpisodes,
343
+ semantics,
344
+ vec_semantics: vecSemantics,
345
+ procedures,
346
+ vec_procedures: vecProcedures,
347
+ searchable_episodes: searchableEpisodes,
348
+ searchable_semantics: searchableSemantics,
349
+ searchable_procedures: searchableProcedures,
350
+ dimensions,
351
+ schema_version: schemaVersion,
352
+ device: device ?? null,
353
+ healthy,
354
+ reembed_recommended: reembedRecommended,
355
+ };
356
+ }
357
+ async greeting({ context, recentLimit = 10, principleLimit = 5, identityLimit = 5 } = {}) {
358
+ const recent = this.db.prepare('SELECT id, content, source, tags, salience, created_at FROM episodes WHERE "private" = 0 ORDER BY created_at DESC LIMIT ?').all(recentLimit);
359
+ const principles = this.db.prepare('SELECT id, content, salience, created_at FROM semantics WHERE state = ? ORDER BY salience DESC LIMIT ?').all('active', principleLimit);
360
+ const identity = this.db.prepare('SELECT id, content, tags, salience, created_at FROM episodes WHERE "private" = 1 ORDER BY created_at DESC LIMIT ?').all(identityLimit);
361
+ const unresolved = this.db.prepare("SELECT id, content, tags, salience, created_at FROM episodes WHERE tags LIKE '%unresolved%' AND salience > 0.3 ORDER BY created_at DESC LIMIT 10").all();
362
+ const rawAffectRows = this.db.prepare("SELECT affect FROM episodes WHERE affect IS NOT NULL AND affect != '{}' ORDER BY created_at DESC LIMIT 20").all();
363
+ const affectParsed = rawAffectRows
364
+ .map(r => { try {
365
+ return JSON.parse(r.affect);
366
+ }
367
+ catch {
368
+ return null;
369
+ } })
370
+ .filter((a) => a !== null && a.valence !== undefined);
371
+ let mood;
372
+ if (affectParsed.length === 0) {
373
+ mood = { valence: 0, arousal: 0, samples: 0 };
374
+ }
375
+ else {
376
+ const sumV = affectParsed.reduce((s, a) => s + (a.valence ?? 0), 0);
377
+ const sumA = affectParsed.reduce((s, a) => s + (a.arousal ?? 0), 0);
378
+ mood = {
379
+ valence: sumV / affectParsed.length,
380
+ arousal: sumA / affectParsed.length,
381
+ samples: affectParsed.length,
382
+ };
383
+ }
384
+ const result = { recent, principles, mood, unresolved, identity };
385
+ if (context) {
386
+ result.contextual = await this.recall(context, { limit: 5, includePrivate: true });
387
+ }
388
+ return result;
389
+ }
390
+ async dream(options = {}) {
391
+ await this._ensureMigrated();
392
+ const consolidation = await this.consolidate({
393
+ minClusterSize: options.minClusterSize,
394
+ similarityThreshold: options.similarityThreshold,
395
+ });
396
+ const decay = this.decay({
397
+ dormantThreshold: options.dormantThreshold,
398
+ });
399
+ const stats = this.introspect();
400
+ const result = {
401
+ consolidation,
402
+ decay,
403
+ stats,
404
+ };
405
+ this.emit('dream', result);
406
+ return result;
407
+ }
408
+ export() {
409
+ return exportMemories(this.db);
410
+ }
411
+ async import(snapshot) {
412
+ return importMemories(this.db, this.embeddingProvider, snapshot);
413
+ }
414
+ startAutoConsolidate(intervalMs, options = {}) {
415
+ if (intervalMs < 1000) {
416
+ throw new Error('Auto-consolidation interval must be at least 1000ms');
417
+ }
418
+ if (this._autoConsolidateTimer) {
419
+ throw new Error('Auto-consolidation is already running');
420
+ }
421
+ this._autoConsolidateTimer = setInterval(() => {
422
+ this.consolidate(options).catch(err => this.emit('error', err));
423
+ }, intervalMs);
424
+ if (typeof this._autoConsolidateTimer.unref === 'function') {
425
+ this._autoConsolidateTimer.unref();
426
+ }
427
+ }
428
+ stopAutoConsolidate() {
429
+ if (this._autoConsolidateTimer) {
430
+ clearInterval(this._autoConsolidateTimer);
431
+ this._autoConsolidateTimer = null;
432
+ }
433
+ }
434
+ suggestConsolidationParams() {
435
+ return suggestParamsFn(this.db);
436
+ }
437
+ forget(id, options = {}) {
438
+ const result = forgetMemory(this.db, id, options);
439
+ this.emit('forget', result);
440
+ return result;
441
+ }
442
+ async forgetByQuery(query, options = {}) {
443
+ await this._ensureMigrated();
444
+ const result = await forgetByQueryFn(this.db, this.embeddingProvider, query, options);
445
+ if (result)
446
+ this.emit('forget', result);
447
+ return result;
448
+ }
449
+ purge() {
450
+ const result = purgeMemories(this.db);
451
+ this.emit('purge', result);
452
+ return result;
453
+ }
454
+ close() {
455
+ if (this._closed)
456
+ return;
457
+ this._closed = true;
458
+ this.stopAutoConsolidate();
459
+ closeDatabase(this.db);
460
+ }
461
+ async waitForIdle() {
462
+ return Promise.resolve();
463
+ }
464
+ observeTool(input) {
465
+ const result = observeTool(this.db, {
466
+ ...input,
467
+ actorAgent: input.actorAgent ?? this.agent,
468
+ });
469
+ this.emit('tool-observed', result.event);
470
+ return result;
471
+ }
472
+ listEvents(query = {}) {
473
+ return listEvents(this.db, query);
474
+ }
475
+ countEvents(query = {}) {
476
+ return countEvents(this.db, query);
477
+ }
478
+ recentFailures(options = {}) {
479
+ return recentFailures(this.db, options);
480
+ }
481
+ async capsule(query, options = {}) {
482
+ const capsule = await buildCapsule(this, query, options);
483
+ this.emit('capsule', capsule);
484
+ return capsule;
485
+ }
486
+ findPromotionCandidates(options = {}) {
487
+ return findPromotionCandidates(this.db, options);
488
+ }
489
+ async promote(options = {}) {
490
+ const target = options.target ?? 'claude-rules';
491
+ if (target !== 'claude-rules') {
492
+ throw new Error(`promote target "${target}" is not implemented yet. PR 4 v1 ships claude-rules only.`);
493
+ }
494
+ const candidates = findPromotionCandidates(this.db, {
495
+ minConfidence: options.minConfidence,
496
+ minEvidence: options.minEvidence,
497
+ limit: options.limit,
498
+ target,
499
+ });
500
+ const dryRun = options.dryRun ?? !options.yes;
501
+ const projectDir = pathResolve(options.projectDir ?? process.cwd());
502
+ const promotedAt = new Date().toISOString();
503
+ const docs = renderAllRules(candidates, promotedAt);
504
+ const applied = [];
505
+ if (!dryRun) {
506
+ for (let i = 0; i < candidates.length; i++) {
507
+ const candidate = candidates[i];
508
+ const doc = docs[i];
509
+ const absolutePath = join(projectDir, doc.relativePath);
510
+ mkdirSync(dirname(absolutePath), { recursive: true });
511
+ const overwritten = existsSync(absolutePath);
512
+ writeFileSync(absolutePath, doc.body, 'utf-8');
513
+ insertEvent(this.db, {
514
+ eventType: 'Promotion',
515
+ source: 'promote-command',
516
+ actorAgent: this.agent,
517
+ toolName: target,
518
+ outcome: 'succeeded',
519
+ cwd: projectDir,
520
+ fileFingerprints: [doc.relativePath],
521
+ redactionState: 'clean',
522
+ metadata: {
523
+ memory_ids: [candidate.memory_id],
524
+ memory_type: candidate.memory_type,
525
+ candidate_id: candidate.candidate_id,
526
+ confidence: Number(candidate.confidence.toFixed(3)),
527
+ evidence_count: candidate.evidence_count,
528
+ failure_prevented: candidate.failure_prevented,
529
+ score: Number(candidate.score.toFixed(2)),
530
+ target,
531
+ absolute_path: absolutePath,
532
+ relative_path: doc.relativePath,
533
+ overwritten,
534
+ },
535
+ });
536
+ applied.push({
537
+ candidate_id: candidate.candidate_id,
538
+ memory_id: candidate.memory_id,
539
+ target,
540
+ relative_path: doc.relativePath,
541
+ absolute_path: absolutePath,
542
+ overwritten,
543
+ });
544
+ }
545
+ }
546
+ const result = {
547
+ target,
548
+ dry_run: dryRun,
549
+ project_dir: projectDir,
550
+ promoted_at: promotedAt,
551
+ candidates: candidates.map((c, i) => ({
552
+ ...c,
553
+ rendered_path: docs[i].relativePath,
554
+ })),
555
+ applied,
556
+ };
557
+ this.emit('promote', result);
558
+ return result;
559
+ }
560
+ }
561
+ function db_prepare_get_status(db, runId) {
562
+ return db.prepare('SELECT status FROM consolidation_runs WHERE id = ?').get(runId);
563
+ }
564
+ //# sourceMappingURL=audrey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audrey.js","sourceRoot":"","sources":["../../src/audrey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Memory Capsule — structured, evidence-backed retrieval packet.
3
+ *
4
+ * Replaces "loose list of relevant memories" with a ranked, categorized,
5
+ * token-budgeted, explainable packet organized into nine sections:
6
+ * must_follow — rules the agent must respect this turn
7
+ * project_facts — stable facts about entities/concepts in the project
8
+ * user_preferences — how this user works (told-by-user or tagged preference)
9
+ * procedures — procedural memories the agent should apply
10
+ * risks — recent failures + memories tagged risk/warning/failure
11
+ * recent_changes — memories created or reinforced in the last N hours
12
+ * contradictions — open contradictions in the memory store
13
+ * uncertain_or_disputed — low-confidence or disputed-state memories
14
+ * evidence — IDs of every memory referenced in the other sections
15
+ *
16
+ * Every entry carries a `reason` explaining why it was included.
17
+ */
18
+ import type { Audrey } from './audrey.js';
19
+ import type { RecallOptions, MemoryState } from './types.js';
20
+ export type CapsuleMode = 'balanced' | 'conservative' | 'aggressive';
21
+ export interface CapsuleOptions {
22
+ limit?: number;
23
+ budgetChars?: number;
24
+ mode?: CapsuleMode;
25
+ recentChangeWindowHours?: number;
26
+ includeRisks?: boolean;
27
+ includeContradictions?: boolean;
28
+ recall?: RecallOptions;
29
+ }
30
+ export type CapsuleEntryType = 'episode' | 'semantic' | 'procedural' | 'tool_failure' | 'contradiction';
31
+ export interface CapsuleEntry {
32
+ memory_id: string;
33
+ memory_type: CapsuleEntryType;
34
+ content: string;
35
+ confidence: number;
36
+ scope?: string;
37
+ evidence?: string[];
38
+ reason: string;
39
+ source?: string;
40
+ tags?: string[];
41
+ state?: MemoryState;
42
+ created_at?: string;
43
+ recommended_action?: string;
44
+ }
45
+ export interface MemoryCapsule {
46
+ query: string;
47
+ generated_at: string;
48
+ budget_chars: number;
49
+ used_chars: number;
50
+ truncated: boolean;
51
+ policy: {
52
+ mode: CapsuleMode;
53
+ recent_change_window_hours: number;
54
+ };
55
+ sections: {
56
+ must_follow: CapsuleEntry[];
57
+ project_facts: CapsuleEntry[];
58
+ user_preferences: CapsuleEntry[];
59
+ procedures: CapsuleEntry[];
60
+ risks: CapsuleEntry[];
61
+ recent_changes: CapsuleEntry[];
62
+ contradictions: CapsuleEntry[];
63
+ uncertain_or_disputed: CapsuleEntry[];
64
+ };
65
+ evidence_ids: string[];
66
+ }
67
+ export declare function buildCapsule(audrey: Audrey, query: string, options?: CapsuleOptions): Promise<MemoryCapsule>;
68
+ //# sourceMappingURL=capsule.d.ts.map