audrey 0.17.0 → 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 (191) hide show
  1. package/README.md +129 -374
  2. package/dist/mcp-server/config.d.ts +20 -0
  3. package/dist/mcp-server/config.d.ts.map +1 -0
  4. package/dist/mcp-server/config.js +125 -0
  5. package/dist/mcp-server/config.js.map +1 -0
  6. package/dist/mcp-server/index.d.ts +100 -0
  7. package/dist/mcp-server/index.d.ts.map +1 -0
  8. package/dist/mcp-server/index.js +1113 -0
  9. package/dist/mcp-server/index.js.map +1 -0
  10. package/dist/src/adaptive.d.ts +7 -0
  11. package/dist/src/adaptive.d.ts.map +1 -0
  12. package/dist/src/adaptive.js +49 -0
  13. package/dist/src/adaptive.js.map +1 -0
  14. package/dist/src/affect.d.ts +19 -0
  15. package/dist/src/affect.d.ts.map +1 -0
  16. package/dist/src/affect.js +72 -0
  17. package/dist/src/affect.js.map +1 -0
  18. package/dist/src/audrey.d.ts +140 -0
  19. package/dist/src/audrey.d.ts.map +1 -0
  20. package/dist/src/audrey.js +564 -0
  21. package/dist/src/audrey.js.map +1 -0
  22. package/dist/src/capsule.d.ts +68 -0
  23. package/dist/src/capsule.d.ts.map +1 -0
  24. package/dist/src/capsule.js +311 -0
  25. package/dist/src/capsule.js.map +1 -0
  26. package/dist/src/causal.d.ts +28 -0
  27. package/dist/src/causal.d.ts.map +1 -0
  28. package/dist/src/causal.js +65 -0
  29. package/dist/src/causal.js.map +1 -0
  30. package/dist/src/confidence.d.ts +12 -0
  31. package/dist/src/confidence.d.ts.map +1 -0
  32. package/dist/src/confidence.js +63 -0
  33. package/dist/src/confidence.js.map +1 -0
  34. package/dist/src/consolidate.d.ts +8 -0
  35. package/dist/src/consolidate.d.ts.map +1 -0
  36. package/dist/src/consolidate.js +218 -0
  37. package/dist/src/consolidate.js.map +1 -0
  38. package/dist/src/context.d.ts +3 -0
  39. package/dist/src/context.d.ts.map +1 -0
  40. package/dist/src/context.js +19 -0
  41. package/dist/src/context.js.map +1 -0
  42. package/dist/src/db.d.ts +12 -0
  43. package/dist/src/db.d.ts.map +1 -0
  44. package/dist/src/db.js +380 -0
  45. package/dist/src/db.js.map +1 -0
  46. package/dist/src/decay.d.ts +7 -0
  47. package/dist/src/decay.d.ts.map +1 -0
  48. package/dist/src/decay.js +68 -0
  49. package/dist/src/decay.js.map +1 -0
  50. package/dist/src/embedding.d.ts +57 -0
  51. package/dist/src/embedding.d.ts.map +1 -0
  52. package/dist/src/embedding.js +254 -0
  53. package/dist/src/embedding.js.map +1 -0
  54. package/dist/src/encode.d.ts +15 -0
  55. package/dist/src/encode.d.ts.map +1 -0
  56. package/dist/src/encode.js +36 -0
  57. package/dist/src/encode.js.map +1 -0
  58. package/dist/src/events.d.ts +69 -0
  59. package/dist/src/events.d.ts.map +1 -0
  60. package/dist/src/events.js +149 -0
  61. package/dist/src/events.js.map +1 -0
  62. package/dist/src/export.d.ts +3 -0
  63. package/dist/src/export.d.ts.map +1 -0
  64. package/dist/src/export.js +46 -0
  65. package/dist/src/export.js.map +1 -0
  66. package/dist/src/forget.d.ts +11 -0
  67. package/dist/src/forget.d.ts.map +1 -0
  68. package/dist/src/forget.js +105 -0
  69. package/dist/src/forget.js.map +1 -0
  70. package/dist/src/fts.d.ts +34 -0
  71. package/dist/src/fts.d.ts.map +1 -0
  72. package/dist/src/fts.js +117 -0
  73. package/dist/src/fts.js.map +1 -0
  74. package/dist/src/hybrid-recall.d.ts +37 -0
  75. package/dist/src/hybrid-recall.d.ts.map +1 -0
  76. package/dist/src/hybrid-recall.js +213 -0
  77. package/dist/src/hybrid-recall.js.map +1 -0
  78. package/dist/src/import.d.ts +4 -0
  79. package/dist/src/import.d.ts.map +1 -0
  80. package/dist/src/import.js +127 -0
  81. package/dist/src/import.js.map +1 -0
  82. package/dist/src/index.d.ts +22 -0
  83. package/dist/src/index.d.ts.map +1 -0
  84. package/{src → dist/src}/index.js +5 -13
  85. package/dist/src/index.js.map +1 -0
  86. package/dist/src/interference.d.ts +13 -0
  87. package/dist/src/interference.d.ts.map +1 -0
  88. package/dist/src/interference.js +45 -0
  89. package/dist/src/interference.js.map +1 -0
  90. package/dist/src/introspect.d.ts +4 -0
  91. package/dist/src/introspect.d.ts.map +1 -0
  92. package/dist/src/introspect.js +40 -0
  93. package/dist/src/introspect.js.map +1 -0
  94. package/dist/src/llm.d.ts +38 -0
  95. package/dist/src/llm.d.ts.map +1 -0
  96. package/dist/src/llm.js +167 -0
  97. package/dist/src/llm.js.map +1 -0
  98. package/dist/src/migrate.d.ts +6 -0
  99. package/dist/src/migrate.d.ts.map +1 -0
  100. package/dist/src/migrate.js +51 -0
  101. package/dist/src/migrate.js.map +1 -0
  102. package/dist/src/promote.d.ts +40 -0
  103. package/dist/src/promote.d.ts.map +1 -0
  104. package/dist/src/promote.js +200 -0
  105. package/dist/src/promote.js.map +1 -0
  106. package/dist/src/prompts.d.ts +16 -0
  107. package/dist/src/prompts.d.ts.map +1 -0
  108. package/{src → dist/src}/prompts.js +172 -203
  109. package/dist/src/prompts.js.map +1 -0
  110. package/dist/src/recall.d.ts +9 -0
  111. package/dist/src/recall.d.ts.map +1 -0
  112. package/dist/src/recall.js +432 -0
  113. package/dist/src/recall.js.map +1 -0
  114. package/dist/src/redact.d.ts +27 -0
  115. package/dist/src/redact.d.ts.map +1 -0
  116. package/dist/src/redact.js +228 -0
  117. package/dist/src/redact.js.map +1 -0
  118. package/dist/src/rollback.d.ts +8 -0
  119. package/dist/src/rollback.d.ts.map +1 -0
  120. package/dist/src/rollback.js +33 -0
  121. package/dist/src/rollback.js.map +1 -0
  122. package/dist/src/routes.d.ts +7 -0
  123. package/dist/src/routes.d.ts.map +1 -0
  124. package/dist/src/routes.js +226 -0
  125. package/dist/src/routes.js.map +1 -0
  126. package/dist/src/rules-compiler.d.ts +20 -0
  127. package/dist/src/rules-compiler.d.ts.map +1 -0
  128. package/dist/src/rules-compiler.js +143 -0
  129. package/dist/src/rules-compiler.js.map +1 -0
  130. package/dist/src/server.d.ts +12 -0
  131. package/dist/src/server.d.ts.map +1 -0
  132. package/dist/src/server.js +22 -0
  133. package/dist/src/server.js.map +1 -0
  134. package/dist/src/tool-trace.d.ts +37 -0
  135. package/dist/src/tool-trace.d.ts.map +1 -0
  136. package/dist/src/tool-trace.js +142 -0
  137. package/dist/src/tool-trace.js.map +1 -0
  138. package/dist/src/types.d.ts +446 -0
  139. package/dist/src/types.d.ts.map +1 -0
  140. package/dist/src/types.js +6 -0
  141. package/dist/src/types.js.map +1 -0
  142. package/dist/src/ulid.d.ts +3 -0
  143. package/dist/src/ulid.d.ts.map +1 -0
  144. package/dist/src/ulid.js +11 -0
  145. package/dist/src/ulid.js.map +1 -0
  146. package/dist/src/utils.d.ts +10 -0
  147. package/dist/src/utils.d.ts.map +1 -0
  148. package/dist/src/utils.js +41 -0
  149. package/dist/src/utils.js.map +1 -0
  150. package/dist/src/validate.d.ts +22 -0
  151. package/dist/src/validate.d.ts.map +1 -0
  152. package/dist/src/validate.js +109 -0
  153. package/dist/src/validate.js.map +1 -0
  154. package/docs/production-readiness.md +28 -0
  155. package/examples/fintech-ops-demo.js +1 -1
  156. package/examples/healthcare-ops-demo.js +1 -1
  157. package/examples/stripe-demo.js +1 -1
  158. package/package.json +34 -13
  159. package/benchmarks/baselines.js +0 -169
  160. package/benchmarks/cases.js +0 -421
  161. package/benchmarks/reference-results.js +0 -70
  162. package/benchmarks/report.js +0 -255
  163. package/benchmarks/run.js +0 -514
  164. package/mcp-server/config.js +0 -133
  165. package/mcp-server/index.js +0 -1265
  166. package/mcp-server/serve.js +0 -482
  167. package/src/adaptive.js +0 -53
  168. package/src/affect.js +0 -64
  169. package/src/audrey.js +0 -642
  170. package/src/causal.js +0 -95
  171. package/src/confidence.js +0 -120
  172. package/src/consolidate.js +0 -281
  173. package/src/context.js +0 -15
  174. package/src/db.js +0 -391
  175. package/src/decay.js +0 -84
  176. package/src/embedding.js +0 -260
  177. package/src/encode.js +0 -69
  178. package/src/export.js +0 -67
  179. package/src/forget.js +0 -111
  180. package/src/fts.js +0 -134
  181. package/src/import.js +0 -273
  182. package/src/interference.js +0 -51
  183. package/src/introspect.js +0 -48
  184. package/src/llm.js +0 -249
  185. package/src/migrate.js +0 -58
  186. package/src/recall.js +0 -573
  187. package/src/rollback.js +0 -42
  188. package/src/ulid.js +0 -18
  189. package/src/utils.js +0 -63
  190. package/src/validate.js +0 -172
  191. package/types/index.d.ts +0 -434
@@ -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