audrey 0.20.0 → 0.23.1

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 (156) hide show
  1. package/CHANGELOG.md +191 -0
  2. package/README.md +216 -117
  3. package/SECURITY.md +29 -0
  4. package/dist/mcp-server/config.d.ts +29 -4
  5. package/dist/mcp-server/config.d.ts.map +1 -1
  6. package/dist/mcp-server/config.js +100 -17
  7. package/dist/mcp-server/config.js.map +1 -1
  8. package/dist/mcp-server/index.d.ts +302 -25
  9. package/dist/mcp-server/index.d.ts.map +1 -1
  10. package/dist/mcp-server/index.js +1077 -74
  11. package/dist/mcp-server/index.js.map +1 -1
  12. package/dist/src/adaptive.d.ts.map +1 -1
  13. package/dist/src/adaptive.js +3 -1
  14. package/dist/src/adaptive.js.map +1 -1
  15. package/dist/src/affect.d.ts +4 -1
  16. package/dist/src/affect.d.ts.map +1 -1
  17. package/dist/src/affect.js +6 -4
  18. package/dist/src/affect.js.map +1 -1
  19. package/dist/src/audrey.d.ts +58 -4
  20. package/dist/src/audrey.d.ts.map +1 -1
  21. package/dist/src/audrey.js +469 -62
  22. package/dist/src/audrey.js.map +1 -1
  23. package/dist/src/capsule.d.ts +2 -1
  24. package/dist/src/capsule.d.ts.map +1 -1
  25. package/dist/src/capsule.js +14 -4
  26. package/dist/src/capsule.js.map +1 -1
  27. package/dist/src/causal.d.ts.map +1 -1
  28. package/dist/src/causal.js +20 -2
  29. package/dist/src/causal.js.map +1 -1
  30. package/dist/src/confidence.d.ts.map +1 -1
  31. package/dist/src/confidence.js +3 -0
  32. package/dist/src/confidence.js.map +1 -1
  33. package/dist/src/consolidate.d.ts +1 -0
  34. package/dist/src/consolidate.d.ts.map +1 -1
  35. package/dist/src/consolidate.js +35 -19
  36. package/dist/src/consolidate.js.map +1 -1
  37. package/dist/src/controller.d.ts +38 -0
  38. package/dist/src/controller.d.ts.map +1 -0
  39. package/dist/src/controller.js +169 -0
  40. package/dist/src/controller.js.map +1 -0
  41. package/dist/src/db.d.ts.map +1 -1
  42. package/dist/src/db.js +12 -0
  43. package/dist/src/db.js.map +1 -1
  44. package/dist/src/decay.d.ts.map +1 -1
  45. package/dist/src/decay.js +57 -50
  46. package/dist/src/decay.js.map +1 -1
  47. package/dist/src/embedding.d.ts.map +1 -1
  48. package/dist/src/embedding.js +31 -3
  49. package/dist/src/embedding.js.map +1 -1
  50. package/dist/src/encode.d.ts +9 -2
  51. package/dist/src/encode.d.ts.map +1 -1
  52. package/dist/src/encode.js +21 -8
  53. package/dist/src/encode.js.map +1 -1
  54. package/dist/src/export.d.ts.map +1 -1
  55. package/dist/src/export.js +5 -3
  56. package/dist/src/export.js.map +1 -1
  57. package/dist/src/feedback.d.ts +29 -0
  58. package/dist/src/feedback.d.ts.map +1 -0
  59. package/dist/src/feedback.js +123 -0
  60. package/dist/src/feedback.js.map +1 -0
  61. package/dist/src/forget.d.ts.map +1 -1
  62. package/dist/src/forget.js +58 -50
  63. package/dist/src/forget.js.map +1 -1
  64. package/dist/src/fts.js +1 -1
  65. package/dist/src/fts.js.map +1 -1
  66. package/dist/src/hybrid-recall.d.ts +2 -1
  67. package/dist/src/hybrid-recall.d.ts.map +1 -1
  68. package/dist/src/hybrid-recall.js +35 -26
  69. package/dist/src/hybrid-recall.js.map +1 -1
  70. package/dist/src/impact.d.ts +47 -0
  71. package/dist/src/impact.d.ts.map +1 -0
  72. package/dist/src/impact.js +146 -0
  73. package/dist/src/impact.js.map +1 -0
  74. package/dist/src/import.d.ts +177 -1
  75. package/dist/src/import.d.ts.map +1 -1
  76. package/dist/src/import.js +206 -17
  77. package/dist/src/import.js.map +1 -1
  78. package/dist/src/index.d.ts +8 -0
  79. package/dist/src/index.d.ts.map +1 -1
  80. package/dist/src/index.js +4 -0
  81. package/dist/src/index.js.map +1 -1
  82. package/dist/src/interference.d.ts +5 -2
  83. package/dist/src/interference.d.ts.map +1 -1
  84. package/dist/src/interference.js +27 -20
  85. package/dist/src/interference.js.map +1 -1
  86. package/dist/src/llm.d.ts.map +1 -1
  87. package/dist/src/llm.js +1 -0
  88. package/dist/src/llm.js.map +1 -1
  89. package/dist/src/migrate.d.ts.map +1 -1
  90. package/dist/src/migrate.js +21 -9
  91. package/dist/src/migrate.js.map +1 -1
  92. package/dist/src/preflight.d.ts +52 -0
  93. package/dist/src/preflight.d.ts.map +1 -0
  94. package/dist/src/preflight.js +221 -0
  95. package/dist/src/preflight.js.map +1 -0
  96. package/dist/src/profile.d.ts +23 -0
  97. package/dist/src/profile.d.ts.map +1 -0
  98. package/dist/src/profile.js +51 -0
  99. package/dist/src/profile.js.map +1 -0
  100. package/dist/src/promote.d.ts.map +1 -1
  101. package/dist/src/promote.js +2 -3
  102. package/dist/src/promote.js.map +1 -1
  103. package/dist/src/prompts.d.ts.map +1 -1
  104. package/dist/src/prompts.js +76 -47
  105. package/dist/src/prompts.js.map +1 -1
  106. package/dist/src/recall.d.ts +9 -6
  107. package/dist/src/recall.d.ts.map +1 -1
  108. package/dist/src/recall.js +182 -40
  109. package/dist/src/recall.js.map +1 -1
  110. package/dist/src/redact.d.ts +7 -1
  111. package/dist/src/redact.d.ts.map +1 -1
  112. package/dist/src/redact.js +94 -11
  113. package/dist/src/redact.js.map +1 -1
  114. package/dist/src/reflexes.d.ts +35 -0
  115. package/dist/src/reflexes.d.ts.map +1 -0
  116. package/dist/src/reflexes.js +87 -0
  117. package/dist/src/reflexes.js.map +1 -0
  118. package/dist/src/rollback.d.ts.map +1 -1
  119. package/dist/src/rollback.js +9 -4
  120. package/dist/src/rollback.js.map +1 -1
  121. package/dist/src/routes.d.ts +1 -0
  122. package/dist/src/routes.d.ts.map +1 -1
  123. package/dist/src/routes.js +267 -11
  124. package/dist/src/routes.js.map +1 -1
  125. package/dist/src/rules-compiler.d.ts.map +1 -1
  126. package/dist/src/rules-compiler.js +36 -6
  127. package/dist/src/rules-compiler.js.map +1 -1
  128. package/dist/src/server.d.ts +2 -1
  129. package/dist/src/server.d.ts.map +1 -1
  130. package/dist/src/server.js +42 -4
  131. package/dist/src/server.js.map +1 -1
  132. package/dist/src/tool-trace.d.ts.map +1 -1
  133. package/dist/src/tool-trace.js +42 -29
  134. package/dist/src/tool-trace.js.map +1 -1
  135. package/dist/src/types.d.ts +28 -1
  136. package/dist/src/types.d.ts.map +1 -1
  137. package/dist/src/ulid.d.ts.map +1 -1
  138. package/dist/src/ulid.js +52 -2
  139. package/dist/src/ulid.js.map +1 -1
  140. package/dist/src/utils.d.ts.map +1 -1
  141. package/dist/src/utils.js +8 -1
  142. package/dist/src/utils.js.map +1 -1
  143. package/dist/src/validate.d.ts +2 -0
  144. package/dist/src/validate.d.ts.map +1 -1
  145. package/dist/src/validate.js +60 -29
  146. package/dist/src/validate.js.map +1 -1
  147. package/docs/assets/audrey-feature-grid.jpg +0 -0
  148. package/docs/assets/audrey-logo.svg +45 -0
  149. package/docs/assets/audrey-wordmark.png +0 -0
  150. package/examples/ollama-memory-agent.js +326 -0
  151. package/package.json +35 -22
  152. package/docs/assets/benchmarks/local-benchmark.svg +0 -45
  153. package/docs/assets/benchmarks/operations-benchmark.svg +0 -45
  154. package/docs/assets/benchmarks/published-memory-standards.svg +0 -50
  155. package/docs/benchmarking.md +0 -151
  156. package/docs/production-readiness.md +0 -124
@@ -2,7 +2,7 @@ import { generateId } from './ulid.js';
2
2
  import { sourceReliability } from './confidence.js';
3
3
  import { arousalSalienceBoost } from './affect.js';
4
4
  import { insertFTSEpisode } from './fts.js';
5
- export async function encodeEpisode(db, embeddingProvider, { content, source, salience = 0.5, causal, tags, supersedes, context = {}, affect = {}, arousalWeight = 0.3, private: isPrivate = false, }) {
5
+ export async function encodeEpisode(db, embeddingProvider, { content, source, agent = 'default', salience = 0.5, causal, tags, supersedes, context = {}, affect = {}, arousalWeight = 0.3, private: isPrivate = false, }, options = {}) {
6
6
  if (!content || typeof content !== 'string')
7
7
  throw new Error('content must be a non-empty string');
8
8
  if (salience < 0 || salience > 1)
@@ -10,27 +10,40 @@ export async function encodeEpisode(db, embeddingProvider, { content, source, sa
10
10
  if (tags && !Array.isArray(tags))
11
11
  throw new Error('tags must be an array');
12
12
  const reliability = sourceReliability(source);
13
- const vector = await embeddingProvider.embed(content);
14
- const embeddingBuffer = embeddingProvider.vectorToBuffer(vector);
13
+ const profile = options.profile;
14
+ const vector = options.vector ?? (profile
15
+ ? await profile.measure('encode.embedding', () => embeddingProvider.embed(content))
16
+ : await embeddingProvider.embed(content));
17
+ const embeddingBuffer = profile
18
+ ? profile.measureSync('encode.vector_to_buffer', () => embeddingProvider.vectorToBuffer(vector))
19
+ : embeddingProvider.vectorToBuffer(vector);
20
+ options.onVector?.(vector, embeddingBuffer);
15
21
  const id = generateId();
16
22
  const now = new Date().toISOString();
17
23
  const boost = arousalSalienceBoost(affect.arousal);
18
- const effectiveSalience = Math.min(1.0, salience + (boost * arousalWeight));
24
+ // Clamp both ends a sufficiently negative arousal boost can drive salience
25
+ // below 0, which propagates as a negative confidence multiplier downstream.
26
+ const effectiveSalience = Math.max(0, Math.min(1.0, salience + (boost * arousalWeight)));
19
27
  const insertAndLink = db.transaction(() => {
20
28
  db.prepare(`
21
29
  INSERT INTO episodes (
22
- id, content, embedding, source, source_reliability, salience, context, affect,
30
+ id, content, embedding, source, agent, source_reliability, salience, context, affect,
23
31
  tags, causal_trigger, causal_consequence, created_at,
24
32
  embedding_model, embedding_version, supersedes, "private"
25
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
26
- `).run(id, content, embeddingBuffer, source, reliability, effectiveSalience, JSON.stringify(context), JSON.stringify(affect), tags ? JSON.stringify(tags) : null, causal?.trigger || null, causal?.consequence || null, now, embeddingProvider.modelName, embeddingProvider.modelVersion, supersedes || null, isPrivate ? 1 : 0);
33
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
34
+ `).run(id, content, embeddingBuffer, source, agent, reliability, effectiveSalience, JSON.stringify(context), JSON.stringify(affect), tags ? JSON.stringify(tags) : null, causal?.trigger || null, causal?.consequence || null, now, embeddingProvider.modelName, embeddingProvider.modelVersion, supersedes || null, isPrivate ? 1 : 0);
27
35
  db.prepare('INSERT INTO vec_episodes(id, embedding, source, consolidated) VALUES (?, ?, ?, ?)').run(id, embeddingBuffer, source, BigInt(0));
28
36
  insertFTSEpisode(db, id, content, tags ?? null);
29
37
  if (supersedes) {
30
38
  db.prepare('UPDATE episodes SET superseded_by = ? WHERE id = ?').run(id, supersedes);
31
39
  }
32
40
  });
33
- insertAndLink();
41
+ if (profile) {
42
+ profile.measureSync('encode.write_episode', () => insertAndLink());
43
+ }
44
+ else {
45
+ insertAndLink();
46
+ }
34
47
  return id;
35
48
  }
36
49
  //# sourceMappingURL=encode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"encode.js","sourceRoot":"","sources":["../../src/encode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAqB,EACrB,iBAAoC,EACpC,EACE,OAAO,EACP,MAAM,EACN,QAAQ,GAAG,GAAG,EACd,MAAM,EACN,IAAI,EACJ,UAAU,EACV,OAAO,GAAG,EAAE,EACZ,MAAM,GAAG,EAAE,EACX,aAAa,GAAG,GAAG,EACnB,OAAO,EAAE,SAAS,GAAG,KAAK,GAY3B;IAED,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACnG,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtF,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAE3E,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,iBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC;IAE5E,MAAM,aAAa,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QACxC,EAAE,CAAC,OAAO,CAAC;;;;;;KAMV,CAAC,CAAC,GAAG,CACJ,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EACpE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EACtB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAClC,MAAM,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,EAAE,WAAW,IAAI,IAAI,EACpD,GAAG,EAAE,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,CAAC,YAAY,EAChE,UAAU,IAAI,IAAI,EAClB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAClB,CAAC;QACF,EAAE,CAAC,OAAO,CACR,mFAAmF,CACpF,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;QAChD,IAAI,UAAU,EAAE,CAAC;YACf,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QACvF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"encode.js","sourceRoot":"","sources":["../../src/encode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/export.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AA2GtC,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CA0D5D"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/export.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAiItC,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CA+D5D"}
@@ -5,17 +5,17 @@ import { safeJsonParse } from './utils.js';
5
5
  const __dirname = dirname(fileURLToPath(import.meta.url));
6
6
  const pkg = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8'));
7
7
  export function exportMemories(db) {
8
- const episodes = db.prepare('SELECT id, content, source, source_reliability, salience, context, affect, tags, causal_trigger, causal_consequence, created_at, embedding_model, embedding_version, supersedes, superseded_by, consolidated, "private" FROM episodes').all().map(ep => ({
8
+ const episodes = db.prepare('SELECT id, content, source, agent, source_reliability, salience, context, affect, tags, causal_trigger, causal_consequence, created_at, embedding_model, embedding_version, supersedes, superseded_by, consolidated, "private" FROM episodes').all().map(ep => ({
9
9
  ...ep,
10
10
  tags: safeJsonParse(ep.tags, null),
11
11
  context: safeJsonParse(ep.context, null),
12
12
  affect: safeJsonParse(ep.affect, null),
13
13
  }));
14
- const semantics = db.prepare('SELECT id, content, state, conditions, evidence_episode_ids, evidence_count, supporting_count, contradicting_count, source_type_diversity, consolidation_checkpoint, embedding_model, embedding_version, consolidation_model, consolidation_prompt_hash, created_at, last_reinforced_at, retrieval_count, challenge_count, interference_count, salience FROM semantics').all().map(sem => ({
14
+ const semantics = db.prepare('SELECT id, content, agent, state, conditions, evidence_episode_ids, evidence_count, supporting_count, contradicting_count, source_type_diversity, consolidation_checkpoint, embedding_model, embedding_version, consolidation_model, consolidation_prompt_hash, created_at, last_reinforced_at, retrieval_count, challenge_count, interference_count, salience FROM semantics').all().map(sem => ({
15
15
  ...sem,
16
16
  evidence_episode_ids: safeJsonParse(sem.evidence_episode_ids, []),
17
17
  }));
18
- const procedures = db.prepare('SELECT id, content, state, trigger_conditions, evidence_episode_ids, success_count, failure_count, embedding_model, embedding_version, created_at, last_reinforced_at, retrieval_count, interference_count, salience FROM procedures').all().map(proc => ({
18
+ const procedures = db.prepare('SELECT id, content, agent, state, trigger_conditions, evidence_episode_ids, success_count, failure_count, embedding_model, embedding_version, created_at, last_reinforced_at, retrieval_count, interference_count, salience FROM procedures').all().map(proc => ({
19
19
  ...proc,
20
20
  evidence_episode_ids: safeJsonParse(proc.evidence_episode_ids, []),
21
21
  }));
@@ -28,6 +28,7 @@ export function exportMemories(db) {
28
28
  output_memory_ids: safeJsonParse(run.output_memory_ids, []),
29
29
  }));
30
30
  const consolidationMetrics = db.prepare('SELECT id, run_id, min_cluster_size, similarity_threshold, episodes_evaluated, clusters_found, principles_extracted, created_at FROM consolidation_metrics').all();
31
+ const memoryEvents = db.prepare('SELECT id, session_id, event_type, source, actor_agent, tool_name, input_hash, output_hash, outcome, error_summary, cwd, file_fingerprints, redaction_state, metadata, created_at FROM memory_events').all();
31
32
  const configRows = db.prepare('SELECT key, value FROM audrey_config').all();
32
33
  const config = Object.fromEntries(configRows.map(r => [r.key, r.value]));
33
34
  return {
@@ -40,6 +41,7 @@ export function exportMemories(db) {
40
41
  contradictions,
41
42
  consolidationRuns,
42
43
  consolidationMetrics,
44
+ memoryEvents,
43
45
  config,
44
46
  };
45
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type Database from 'better-sqlite3';
2
+ export type MemoryValidateOutcome = 'used' | 'helpful' | 'wrong';
3
+ export interface MemoryValidateInput {
4
+ id: string;
5
+ outcome: MemoryValidateOutcome;
6
+ }
7
+ export type MemoryType = 'episodic' | 'semantic' | 'procedural';
8
+ export interface MemoryValidateResult {
9
+ id: string;
10
+ type: MemoryType;
11
+ outcome: MemoryValidateOutcome;
12
+ salience: number;
13
+ usageCount: number;
14
+ retrievalCount: number | null;
15
+ challengeCount: number | null;
16
+ state: string | null;
17
+ }
18
+ /**
19
+ * Apply an agent-supplied feedback signal to a memory. The closed-loop
20
+ * primitive — agents tell Audrey "this memory was helpful / wrong / I used
21
+ * it" and Audrey nudges salience and bookkeeping accordingly.
22
+ *
23
+ * Idempotent semantics: each call applies one delta. Callers that want
24
+ * single-tap-per-recall behavior should dedupe upstream.
25
+ *
26
+ * Returns `null` if no memory matches the id.
27
+ */
28
+ export declare function applyFeedback(db: Database.Database, input: MemoryValidateInput): MemoryValidateResult | null;
29
+ //# sourceMappingURL=feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,qBAAqB,CAAC;CAChC;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AA4DD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,GAAG,IAAI,CA2E5G"}
@@ -0,0 +1,123 @@
1
+ const SALIENCE_DELTA = {
2
+ used: 0.02,
3
+ helpful: 0.05,
4
+ wrong: -0.10,
5
+ };
6
+ const RETRIEVAL_BUMP = {
7
+ used: 0,
8
+ helpful: 1,
9
+ wrong: 0,
10
+ };
11
+ const CHALLENGE_BUMP = {
12
+ used: 0,
13
+ helpful: 0,
14
+ wrong: 1,
15
+ };
16
+ const TABLES = [
17
+ { type: 'episodic', name: 'episodes' },
18
+ { type: 'semantic', name: 'semantics' },
19
+ { type: 'procedural', name: 'procedures' },
20
+ ];
21
+ function clampSalience(value) {
22
+ if (value < 0)
23
+ return 0;
24
+ if (value > 1)
25
+ return 1;
26
+ return value;
27
+ }
28
+ function findRow(db, id) {
29
+ for (const { type, name } of TABLES) {
30
+ const hasState = name !== 'episodes';
31
+ const hasRetrieval = name !== 'episodes';
32
+ const hasChallenge = name === 'semantics';
33
+ const cols = [
34
+ 'id',
35
+ 'salience',
36
+ 'usage_count',
37
+ hasRetrieval ? 'retrieval_count' : 'NULL AS retrieval_count',
38
+ hasChallenge ? 'challenge_count' : 'NULL AS challenge_count',
39
+ hasState ? 'state' : 'NULL AS state',
40
+ ].join(', ');
41
+ const row = db.prepare(`SELECT ${cols} FROM ${name} WHERE id = ?`).get(id);
42
+ if (row)
43
+ return { type, row };
44
+ }
45
+ return null;
46
+ }
47
+ /**
48
+ * Apply an agent-supplied feedback signal to a memory. The closed-loop
49
+ * primitive — agents tell Audrey "this memory was helpful / wrong / I used
50
+ * it" and Audrey nudges salience and bookkeeping accordingly.
51
+ *
52
+ * Idempotent semantics: each call applies one delta. Callers that want
53
+ * single-tap-per-recall behavior should dedupe upstream.
54
+ *
55
+ * Returns `null` if no memory matches the id.
56
+ */
57
+ export function applyFeedback(db, input) {
58
+ const located = findRow(db, input.id);
59
+ if (!located)
60
+ return null;
61
+ const { type, row } = located;
62
+ const tableName = TABLES.find(t => t.type === type).name;
63
+ const nowISO = new Date().toISOString();
64
+ const currentSalience = row.salience ?? 0.5;
65
+ const newSalience = clampSalience(currentSalience + SALIENCE_DELTA[input.outcome]);
66
+ const newUsageCount = (row.usage_count ?? 0) + 1;
67
+ // For semantics/procedures we keep retrieval_count + last_reinforced_at in
68
+ // sync with the existing recall reinforcement path so the confidence math
69
+ // stays coherent. For episodes those columns don't exist; only usage_count
70
+ // and salience move.
71
+ if (tableName === 'episodes') {
72
+ db.prepare(`UPDATE ${tableName} SET salience = ?, usage_count = ?, last_used_at = ? WHERE id = ?`).run(newSalience, newUsageCount, nowISO, input.id);
73
+ }
74
+ else if (tableName === 'semantics') {
75
+ const newRetrieval = (row.retrieval_count ?? 0) + RETRIEVAL_BUMP[input.outcome];
76
+ const newChallenge = (row.challenge_count ?? 0) + CHALLENGE_BUMP[input.outcome];
77
+ const lastReinforced = RETRIEVAL_BUMP[input.outcome] > 0 ? nowISO : null;
78
+ if (lastReinforced) {
79
+ db.prepare(`UPDATE ${tableName} SET salience = ?, usage_count = ?, last_used_at = ?, retrieval_count = ?, last_reinforced_at = ?, challenge_count = ? WHERE id = ?`).run(newSalience, newUsageCount, nowISO, newRetrieval, lastReinforced, newChallenge, input.id);
80
+ }
81
+ else {
82
+ db.prepare(`UPDATE ${tableName} SET salience = ?, usage_count = ?, last_used_at = ?, retrieval_count = ?, challenge_count = ? WHERE id = ?`).run(newSalience, newUsageCount, nowISO, newRetrieval, newChallenge, input.id);
83
+ }
84
+ }
85
+ else {
86
+ const newRetrieval = (row.retrieval_count ?? 0) + RETRIEVAL_BUMP[input.outcome];
87
+ const lastReinforced = RETRIEVAL_BUMP[input.outcome] > 0 ? nowISO : null;
88
+ if (lastReinforced) {
89
+ db.prepare(`UPDATE ${tableName} SET salience = ?, usage_count = ?, last_used_at = ?, retrieval_count = ?, last_reinforced_at = ? WHERE id = ?`).run(newSalience, newUsageCount, nowISO, newRetrieval, lastReinforced, input.id);
90
+ }
91
+ else {
92
+ db.prepare(`UPDATE ${tableName} SET salience = ?, usage_count = ?, last_used_at = ?, retrieval_count = ? WHERE id = ?`).run(newSalience, newUsageCount, nowISO, newRetrieval, input.id);
93
+ }
94
+ }
95
+ // Re-read the row so we report committed state, not in-memory deltas. The
96
+ // row could have been forgotten/superseded by a concurrent caller between
97
+ // the UPDATE above and now; in that rare case fall back to the values we
98
+ // just wrote rather than crashing with a non-null assertion.
99
+ const fresh = findRow(db, input.id)?.row;
100
+ if (!fresh) {
101
+ return {
102
+ id: input.id,
103
+ type,
104
+ outcome: input.outcome,
105
+ salience: newSalience,
106
+ usageCount: newUsageCount,
107
+ retrievalCount: null,
108
+ challengeCount: null,
109
+ state: null,
110
+ };
111
+ }
112
+ return {
113
+ id: input.id,
114
+ type,
115
+ outcome: input.outcome,
116
+ salience: fresh.salience ?? newSalience,
117
+ usageCount: fresh.usage_count ?? newUsageCount,
118
+ retrievalCount: fresh.retrieval_count,
119
+ challengeCount: fresh.challenge_count,
120
+ state: fresh.state,
121
+ };
122
+ }
123
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/feedback.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../src/forget.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AAa3F,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,EAAE,KAAa,EAAE,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,YAAY,CAyCd;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAoChE;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,MAAM,EACb,EAAE,aAAmB,EAAE,KAAa,EAAE,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACvF,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAmC9B"}
1
+ {"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../src/forget.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AAa3F,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,EAAE,KAAa,EAAE,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,YAAY,CA6Cd;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,WAAW,CA0ChE;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,MAAM,EACb,EAAE,aAAmB,EAAE,KAAa,EAAE,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACvF,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAmC9B"}
@@ -1,73 +1,81 @@
1
1
  import { deleteFTSEpisode, deleteFTSSemantic, deleteFTSProcedure } from './fts.js';
2
2
  export function forgetMemory(db, id, { purge = false } = {}) {
3
- const episode = db.prepare('SELECT id FROM episodes WHERE id = ?').get(id);
4
- if (episode) {
5
- if (purge) {
6
- db.prepare('DELETE FROM vec_episodes WHERE id = ?').run(id);
7
- db.prepare('DELETE FROM episodes WHERE id = ?').run(id);
3
+ const performForget = db.transaction(() => {
4
+ const episode = db.prepare('SELECT id FROM episodes WHERE id = ?').get(id);
5
+ if (episode) {
6
+ if (purge) {
7
+ db.prepare('DELETE FROM vec_episodes WHERE id = ?').run(id);
8
+ db.prepare('DELETE FROM episodes WHERE id = ?').run(id);
9
+ }
10
+ else {
11
+ db.prepare("UPDATE episodes SET superseded_by = 'forgotten' WHERE id = ?").run(id);
12
+ db.prepare('DELETE FROM vec_episodes WHERE id = ?').run(id);
13
+ }
14
+ deleteFTSEpisode(db, id);
15
+ return { id, type: 'episodic', purged: purge };
8
16
  }
9
- else {
10
- db.prepare("UPDATE episodes SET superseded_by = 'forgotten' WHERE id = ?").run(id);
11
- db.prepare('DELETE FROM vec_episodes WHERE id = ?').run(id);
17
+ const semantic = db.prepare('SELECT id FROM semantics WHERE id = ?').get(id);
18
+ if (semantic) {
19
+ if (purge) {
20
+ db.prepare('DELETE FROM vec_semantics WHERE id = ?').run(id);
21
+ db.prepare('DELETE FROM semantics WHERE id = ?').run(id);
22
+ }
23
+ else {
24
+ db.prepare("UPDATE semantics SET state = 'superseded' WHERE id = ?").run(id);
25
+ db.prepare('DELETE FROM vec_semantics WHERE id = ?').run(id);
26
+ }
27
+ deleteFTSSemantic(db, id);
28
+ return { id, type: 'semantic', purged: purge };
12
29
  }
13
- deleteFTSEpisode(db, id);
14
- return { id, type: 'episodic', purged: purge };
15
- }
16
- const semantic = db.prepare('SELECT id FROM semantics WHERE id = ?').get(id);
17
- if (semantic) {
18
- if (purge) {
19
- db.prepare('DELETE FROM vec_semantics WHERE id = ?').run(id);
20
- db.prepare('DELETE FROM semantics WHERE id = ?').run(id);
30
+ const procedure = db.prepare('SELECT id FROM procedures WHERE id = ?').get(id);
31
+ if (procedure) {
32
+ if (purge) {
33
+ db.prepare('DELETE FROM vec_procedures WHERE id = ?').run(id);
34
+ db.prepare('DELETE FROM procedures WHERE id = ?').run(id);
35
+ }
36
+ else {
37
+ db.prepare("UPDATE procedures SET state = 'superseded' WHERE id = ?").run(id);
38
+ db.prepare('DELETE FROM vec_procedures WHERE id = ?').run(id);
39
+ }
40
+ deleteFTSProcedure(db, id);
41
+ return { id, type: 'procedural', purged: purge };
21
42
  }
22
- else {
23
- db.prepare("UPDATE semantics SET state = 'superseded' WHERE id = ?").run(id);
24
- db.prepare('DELETE FROM vec_semantics WHERE id = ?').run(id);
25
- }
26
- deleteFTSSemantic(db, id);
27
- return { id, type: 'semantic', purged: purge };
28
- }
29
- const procedure = db.prepare('SELECT id FROM procedures WHERE id = ?').get(id);
30
- if (procedure) {
31
- if (purge) {
32
- db.prepare('DELETE FROM vec_procedures WHERE id = ?').run(id);
33
- db.prepare('DELETE FROM procedures WHERE id = ?').run(id);
34
- }
35
- else {
36
- db.prepare("UPDATE procedures SET state = 'superseded' WHERE id = ?").run(id);
37
- db.prepare('DELETE FROM vec_procedures WHERE id = ?').run(id);
38
- }
39
- deleteFTSProcedure(db, id);
40
- return { id, type: 'procedural', purged: purge };
41
- }
42
- throw new Error(`Memory not found: ${id}`);
43
+ throw new Error(`Memory not found: ${id}`);
44
+ });
45
+ return performForget();
43
46
  }
44
47
  export function purgeMemories(db) {
45
- const deadEpisodes = db.prepare('SELECT id FROM episodes WHERE superseded_by IS NOT NULL').all();
46
- const deadSemantics = db.prepare("SELECT id FROM semantics WHERE state IN ('superseded', 'dormant', 'rolled_back')").all();
47
- const deadProcedures = db.prepare("SELECT id FROM procedures WHERE state IN ('superseded', 'dormant', 'rolled_back')").all();
48
+ const selectDeadEpisodes = db.prepare('SELECT id FROM episodes WHERE superseded_by IS NOT NULL');
49
+ const selectDeadSemantics = db.prepare("SELECT id FROM semantics WHERE state IN ('superseded', 'dormant', 'rolled_back')");
50
+ const selectDeadProcedures = db.prepare("SELECT id FROM procedures WHERE state IN ('superseded', 'dormant', 'rolled_back')");
51
+ let episodes = 0;
52
+ let semantics = 0;
53
+ let procedures = 0;
54
+ // Read inside the transaction so we never delete something a concurrent
55
+ // writer just resurrected, and so the returned counts match what we
56
+ // actually purged.
48
57
  const purgeAll = db.transaction(() => {
49
- for (const row of deadEpisodes) {
58
+ for (const row of selectDeadEpisodes.all()) {
50
59
  db.prepare('DELETE FROM vec_episodes WHERE id = ?').run(row.id);
51
60
  db.prepare('DELETE FROM episodes WHERE id = ?').run(row.id);
52
61
  deleteFTSEpisode(db, row.id);
62
+ episodes++;
53
63
  }
54
- for (const row of deadSemantics) {
64
+ for (const row of selectDeadSemantics.all()) {
55
65
  db.prepare('DELETE FROM vec_semantics WHERE id = ?').run(row.id);
56
66
  db.prepare('DELETE FROM semantics WHERE id = ?').run(row.id);
57
67
  deleteFTSSemantic(db, row.id);
68
+ semantics++;
58
69
  }
59
- for (const row of deadProcedures) {
70
+ for (const row of selectDeadProcedures.all()) {
60
71
  db.prepare('DELETE FROM vec_procedures WHERE id = ?').run(row.id);
61
72
  db.prepare('DELETE FROM procedures WHERE id = ?').run(row.id);
62
73
  deleteFTSProcedure(db, row.id);
74
+ procedures++;
63
75
  }
64
76
  });
65
77
  purgeAll();
66
- return {
67
- episodes: deadEpisodes.length,
68
- semantics: deadSemantics.length,
69
- procedures: deadProcedures.length,
70
- };
78
+ return { episodes, semantics, procedures };
71
79
  }
72
80
  export async function forgetByQuery(db, embeddingProvider, query, { minSimilarity = 0.9, purge = false } = {}) {
73
81
  const queryVector = await embeddingProvider.embed(query);
@@ -83,14 +91,14 @@ export async function forgetByQuery(db, embeddingProvider, query, { minSimilarit
83
91
  const semMatch = db.prepare(`
84
92
  SELECT s.id, (1.0 - v.distance) AS similarity, 'semantic' AS type
85
93
  FROM vec_semantics v JOIN semantics s ON s.id = v.id
86
- WHERE v.embedding MATCH ? AND k = 1 AND (v.state = 'active' OR v.state = 'context_dependent')
94
+ WHERE v.embedding MATCH ? AND k = 1 AND (s.state = 'active' OR s.state = 'context_dependent')
87
95
  `).get(queryBuffer);
88
96
  if (semMatch)
89
97
  candidates.push(semMatch);
90
98
  const procMatch = db.prepare(`
91
99
  SELECT p.id, (1.0 - v.distance) AS similarity, 'procedural' AS type
92
100
  FROM vec_procedures v JOIN procedures p ON p.id = v.id
93
- WHERE v.embedding MATCH ? AND k = 1 AND (v.state = 'active' OR v.state = 'context_dependent')
101
+ WHERE v.embedding MATCH ? AND k = 1 AND (p.state = 'active' OR p.state = 'context_dependent')
94
102
  `).get(queryBuffer);
95
103
  if (procMatch)
96
104
  candidates.push(procMatch);
@@ -1 +1 @@
1
- {"version":3,"file":"forget.js","sourceRoot":"","sources":["../../src/forget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forget.js","sourceRoot":"","sources":["../../src/forget.ts"],"names":[],"mappings":"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"}
package/dist/src/fts.js CHANGED
@@ -107,7 +107,7 @@ export function backfillFTS(db) {
107
107
  */
108
108
  export function sanitizeFTSQuery(query) {
109
109
  return query
110
- .replace(/[*"(){}[\]^~\:]/g, ' ')
110
+ .replace(/[^\p{L}\p{N}_]+/gu, ' ')
111
111
  .replace(/\bAND\b|\bOR\b|\bNOT\b|\bNEAR\b/gi, ' ')
112
112
  .trim()
113
113
  .split(/\s+/)
@@ -1 +1 @@
1
- {"version":3,"file":"fts.js","sourceRoot":"","sources":["../../src/fts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fts.js","sourceRoot":"","sources":["../../src/fts.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@
17
17
  */
18
18
  import Database from 'better-sqlite3';
19
19
  import type { MemoryType, RecallResult, RetrievalMode } from './types.js';
20
- export declare function ftsIdsByType(db: Database.Database, query: string, types: MemoryType[], limit: number): Map<MemoryType, string[]>;
20
+ export declare function ftsIdsByType(db: Database.Database, query: string, types: MemoryType[], limit: number, agentFilter?: string | undefined): Map<MemoryType, string[]>;
21
21
  export interface FuseFilters {
22
22
  tags?: string[];
23
23
  sources?: string[];
@@ -32,6 +32,7 @@ export interface FuseInput {
32
32
  includeDormant?: boolean;
33
33
  minConfidence?: number;
34
34
  filters?: FuseFilters;
35
+ agentFilter?: string;
35
36
  }
36
37
  export declare function fuseResults(db: Database.Database, input: FuseInput): RecallResult[];
37
38
  //# sourceMappingURL=hybrid-recall.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hybrid-recall.d.ts","sourceRoot":"","sources":["../../src/hybrid-recall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA4C1E,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EAAE,EACnB,KAAK,EAAE,MAAM,GACZ,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAqB3B;AAwED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAyBD,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,YAAY,EAAE,CA+DnF"}
1
+ {"version":3,"file":"hybrid-recall.d.ts","sourceRoot":"","sources":["../../src/hybrid-recall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA+C1E,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,MAAM,GAAG,SAAqB,GAC1C,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAiB3B;AA8ED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA8BD,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,YAAY,EAAE,CA+DnF"}