agent-working-memory 0.7.6 → 0.7.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -389,6 +389,9 @@ npm run test:locomo # LoCoMo industry benchmark (28.2%)
389
389
  | `AWM_HOOK_SECRET` | *(none)* | Bearer token for hook auth |
390
390
  | `AWM_API_KEY` | *(none)* | Bearer token for HTTP API auth |
391
391
  | `AWM_INCOGNITO` | *(unset)* | Set to `1` to disable all tools |
392
+ | `AWM_COORDINATION` | *(unset)* | Set to `true` to enable hive coordination endpoints |
393
+ | `AWM_DISABLE_POOL_FILTER` | *(unset)* | Set to `1` to disable the candidate pool reduction (0.7.7+). Reverts recall to scoring all active candidates — slower but useful for A/B testing if a recall regression appears |
394
+ | `AWM_WORKSPACE` | *(unset)* | Default workspace for cross-agent recall in hive setups |
392
395
 
393
396
  ## Tech Stack
394
397
 
@@ -407,6 +410,14 @@ npm run test:locomo # LoCoMo industry benchmark (28.2%)
407
410
 
408
411
  All three ML models run locally via ONNX. No external API calls for retrieval. The entire system is a single SQLite file + a Node.js process.
409
412
 
413
+ ## What's New in v0.7.8
414
+
415
+ - **Install template updated for the 0.7.5/0.7.6/0.7.7 behaviors** — `awm setup` now writes a richer CLAUDE.md that teaches agents about memory classes (`canonical | working | ephemeral`), salience auto-promotion patterns (`detectUserFeedback` for stakeholder quotes, `detectVerifiedFinding` for operational records with action-verb + concrete IDs), and the new env-var escape hatches. Existing installs upgrade via `npm install -g agent-working-memory@latest && awm setup --global` then restart Claude Code. No functional code change in this release — version bumped solely so the new template ships.
416
+
417
+ ## What's New in v0.7.7
418
+
419
+ - **Recall latency 2.5s → 1.0s end-to-end (~50% on top of 0.7.6)** — phase-breakdown spike showed that after the 0.7.6 BM25 fix, the new bottleneck was `getAssociationsForBatch` over all ~10K candidates (68% of recall latency). Added a cheap pre-filter before deep scoring: candidates survive only if they have a BM25 hit, a cosine z-score above the gate, or concept-token overlap with the query. From ~10K candidates → typically 100-300 survivors. Graph-walk correctness preserved (it only boosts neighbors with `textMatch >= 0.05`, which would also pass this filter). Recall quality A/B verified: 8/8 top-1 matches, 90% top-5 overlap, 94% top-10 overlap on diverse queries. Set `AWM_DISABLE_POOL_FILTER=1` to revert. **Cumulative since 0.7.4 baseline: 11-23s → 0.9-1.6s (~10-15× faster).**
420
+
410
421
  ## What's New in v0.7.6
411
422
 
412
423
  - **Recall latency 11-23s → 2.5s end-to-end (~5× faster)** — measurement spike found the slow path was a SQLite query-plan trap, not vector search. The BM25 query `JOIN engrams_fts ON e.rowid + WHERE MATCH + ORDER BY rank LIMIT N` materialized all matching rows (with 1.5KB embedding blobs) before the LIMIT applied. CTE prefilter forces FTS5 LIMIT first, then joins only the top-K rowids. Same SQLite, same data, same results — 567× faster for wide OR queries (3682ms → 6.5ms verified). Also added `getAssociationsForBatch` to replace the per-candidate N+1 in the activation scoring loop. Top-K results are byte-identical to the old query (verified by the equivalence test in `spike/`).
@@ -457,7 +468,7 @@ See [CHANGELOG.md](CHANGELOG.md) for full details.
457
468
 
458
469
  ## Project Status
459
470
 
460
- AWM is in active development (v0.7.6). The core memory pipeline, consolidation system, multi-agent coordination, and MCP integration are stable and used daily in production coding workflows.
471
+ AWM is in active development (v0.7.8). The core memory pipeline, consolidation system, multi-agent coordination, and MCP integration are stable and used daily in production coding workflows.
461
472
 
462
473
  - Core retrieval and consolidation: **stable**
463
474
  - MCP tools and Claude Code integration: **stable**
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/adapters/common.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,gEAAgE;AAChE,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAOnF;AAED,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUxD;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,OAAO,GACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAkBA;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,YAAY,CA6Bf;AAED,sBAAsB;AACtB,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAID;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAqCvB,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/adapters/common.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,gEAAgE;AAChE,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAOnF;AAED,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUxD;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,OAAO,GACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAkBA;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,YAAY,CA6Bf;AAED,sBAAsB;AACtB,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAID;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAgFvB,CAAC"}
@@ -138,16 +138,59 @@ You have persistent memory via the agent-working-memory MCP server.
138
138
  - \`confidence_level\`: verified (tested), observed (read in code), assumed (reasoning)
139
139
  - \`intent\`: decision, finding, todo, question, or context
140
140
 
141
+ ### Memory classes (controls how strictly the salience filter gates the write)
142
+ - \`memory_class: canonical\` — source-of-truth memories. Floor 0.7 salience, never staged.
143
+ Use for: user-stated decisions, project requirements, verified architectural facts,
144
+ cross-agent shared context. **In a hive (multi-agent) setup, always use \`canonical\`
145
+ for writes that other agents must be able to recall** — the default \`working\` class
146
+ may get filtered.
147
+ - \`memory_class: working\` (default) — observations and findings. Salience-gated.
148
+ - \`memory_class: ephemeral\` — short-lived context that should decay quickly.
149
+
150
+ ### Salience auto-promotion (defense in depth)
151
+ The salience filter automatically promotes certain content patterns even if you forget
152
+ to set \`memory_class\` explicitly:
153
+ - **User feedback** — content starting with "Robert said…", "Katherine directed…",
154
+ "Nancy decided…" etc. auto-promotes to canonical. So quoting the user verbatim
155
+ always preserves the decision.
156
+ - **Verified operational records** — content with an action verb (Submitted, Finalized,
157
+ Completed, Reconciled, Triaged, Posted, Resolved, Stamped, Pushed, Deployed, Migrated,
158
+ Imported, Exported, Backfilled) plus 2+ concrete identifiers (ISO date \`YYYY-MM-DD\`,
159
+ or contextual numeric IDs like "event 18969", "ticket #18330", "USEF 341980") gets
160
+ a 0.45 salience floor. So batch summaries with real IDs survive even when topic
161
+ terms repeat.
162
+
163
+ If neither pattern applies and you want a memory to definitely survive, set
164
+ \`memory_class: canonical\` explicitly. Don't rely on auto-promotion for important writes.
165
+
141
166
  ### Recall memory when:
167
+ - **BEFORE stating ANY fact about how a system works** — recall first; if AWM doesn't
168
+ have it, read the code. Never guess and present it as fact.
169
+ - **BEFORE searching the filesystem** — recall first; AWM is faster and has cross-session
170
+ knowledge that file search doesn't.
142
171
  - Starting work on a new task or subsystem
143
172
  - Re-entering code you haven't touched recently
144
173
  - After a failed attempt — check if there's prior knowledge
145
174
  - Before refactoring or making architectural changes
146
175
  - When a topic comes up that you might have prior context on
147
176
 
177
+ Recall is fast (~1s typical). Use it freely.
178
+
179
+ ### Keep memory fresh
180
+ - After recalling a memory, if you observe the real state is different → call
181
+ \`memory_supersede\` immediately with the corrected version.
182
+ - After using a recalled memory: call \`memory_feedback\` (useful/not-useful) so the
183
+ activation engine learns what's valuable.
184
+ - If you discover a memory is factually wrong: \`memory_retract\` to remove it.
185
+
148
186
  ### Also:
149
- - After using a recalled memory: call memory_feedback (useful/not-useful) — strengthens useful associations
150
- - To correct wrong info: call memory_retract or memory_supersede
151
187
  - To track work items: memory_task_add, memory_task_update, memory_task_list, memory_task_next
188
+ - AWM is shared across all agents in real time. When any agent writes or supersedes a
189
+ memory, every other agent can recall it immediately.
190
+
191
+ ### Diagnostics / escape hatches (env vars, only if you know why)
192
+ - \`AWM_DISABLE_POOL_FILTER=1\` — disables the candidate pool reduction in recall (added
193
+ in 0.7.7 for ~50% speedup). Reverts to scoring all candidates. Use only if you suspect
194
+ a recall regression and want to A/B test against the pre-0.7.7 path.
152
195
  `.trimStart();
153
196
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/adapters/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/adapters/common.ts"],"names":[],"mappings":"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"}
@@ -488,9 +488,9 @@ export function registerRoutes(app, deps) {
488
488
  const { agentId, all } = req.query;
489
489
  const includeAll = all === 'true';
490
490
  const db = store.getDb();
491
- let engramSql = `SELECT id, agent_id, concept, content, confidence, salience, access_count,
492
- last_accessed, created_at, salience_features, reason_codes, stage, ttl,
493
- retracted, retracted_by, retracted_at, tags
491
+ let engramSql = `SELECT id, agent_id, concept, content, confidence, salience, access_count,
492
+ last_accessed, created_at, salience_features, reason_codes, stage, ttl,
493
+ retracted, retracted_by, retracted_at, tags
494
494
  FROM engrams`;
495
495
  const conditions = [];
496
496
  const params = [];
@@ -508,7 +508,7 @@ export function registerRoutes(app, deps) {
508
508
  engramSql += ' ORDER BY created_at ASC';
509
509
  const engrams = db.prepare(engramSql).all(...params);
510
510
  const engramIds = new Set(engrams.map(e => e.id));
511
- const allAssocs = db.prepare(`SELECT id, from_engram_id, to_engram_id, weight, confidence, type, activation_count, created_at, last_activated
511
+ const allAssocs = db.prepare(`SELECT id, from_engram_id, to_engram_id, weight, confidence, type, activation_count, created_at, last_activated
512
512
  FROM associations`).all();
513
513
  const associations = allAssocs.filter(a => engramIds.has(a.from_engram_id) && engramIds.has(a.to_engram_id));
514
514
  return reply.send({
@@ -527,15 +527,15 @@ export function registerRoutes(app, deps) {
527
527
  const base = {
528
528
  status: 'ok',
529
529
  timestamp: new Date().toISOString(),
530
- version: '0.7.6',
530
+ version: '0.7.8',
531
531
  coordination: coordEnabled,
532
532
  };
533
533
  if (coordEnabled) {
534
534
  try {
535
535
  const db = deps.store.getDb();
536
- const stats = db.prepare(`SELECT
537
- (SELECT COUNT(*) FROM coord_agents WHERE status != 'dead') AS agents_alive,
538
- (SELECT COUNT(*) FROM coord_assignments WHERE status = 'pending') AS pending_tasks,
536
+ const stats = db.prepare(`SELECT
537
+ (SELECT COUNT(*) FROM coord_agents WHERE status != 'dead') AS agents_alive,
538
+ (SELECT COUNT(*) FROM coord_assignments WHERE status = 'pending') AS pending_tasks,
539
539
  (SELECT COUNT(*) FROM coord_locks) AS active_locks`).get();
540
540
  Object.assign(base, stats);
541
541
  }
package/dist/cli.js CHANGED
@@ -38,44 +38,44 @@ catch { /* No .env file */ }
38
38
  const args = process.argv.slice(2);
39
39
  const command = args[0];
40
40
  function printUsage() {
41
- console.log(`
42
- AgentWorkingMemory — Cognitive memory for AI agents
43
-
44
- Usage:
45
- awm setup [target] [options] Configure AWM for an AI CLI
46
- awm doctor [target|--all] Validate AWM integrations
47
- awm mcp Start MCP server (stdio)
48
- awm serve [--port <port>] Start HTTP API server
49
- awm health [--port <port>] Check server health
50
- awm export --db <path> [--agent <id>] [--output <file>] [--active-only]
51
- Export memories to JSON
52
- awm import <file> --db <path> [--remap-agent <id>] [--dedupe] [--dry-run]
53
- Import memories from JSON
54
- awm merge --target <db> --source <db> [--source ...]
55
- [--remap uuid=name] [--remap-all-uuids <name>]
56
- [--dedupe] [--dry-run] Merge multiple memory DBs
57
-
58
- Setup targets:
59
- claude-code (default) .mcp.json + CLAUDE.md + hooks
60
- codex ~/.codex/config.toml + AGENTS.md
61
- cursor .cursor/mcp.json + .cursorrules
62
- http Connection info for HTTP API
63
-
64
- Setup options:
65
- --global Use global scope (recommended for claude-code)
66
- --agent-id <id> Agent identifier (default: project name)
67
- --db-path <path> Database path (default: <awm>/data/memory.db)
68
- --no-instructions Skip instruction file (CLAUDE.md, AGENTS.md, etc.)
69
- --no-claude-md Alias for --no-instructions
70
- --no-hooks Skip hook installation
71
- --hook-port PORT Sidecar port for hooks (default: 8401)
72
-
73
- Examples:
74
- awm setup --global Claude Code, global (recommended)
75
- awm setup codex Codex CLI
76
- awm setup cursor Cursor IDE
77
- awm setup http Generic HTTP integration
78
- awm doctor --all Check all configured targets
41
+ console.log(`
42
+ AgentWorkingMemory — Cognitive memory for AI agents
43
+
44
+ Usage:
45
+ awm setup [target] [options] Configure AWM for an AI CLI
46
+ awm doctor [target|--all] Validate AWM integrations
47
+ awm mcp Start MCP server (stdio)
48
+ awm serve [--port <port>] Start HTTP API server
49
+ awm health [--port <port>] Check server health
50
+ awm export --db <path> [--agent <id>] [--output <file>] [--active-only]
51
+ Export memories to JSON
52
+ awm import <file> --db <path> [--remap-agent <id>] [--dedupe] [--dry-run]
53
+ Import memories from JSON
54
+ awm merge --target <db> --source <db> [--source ...]
55
+ [--remap uuid=name] [--remap-all-uuids <name>]
56
+ [--dedupe] [--dry-run] Merge multiple memory DBs
57
+
58
+ Setup targets:
59
+ claude-code (default) .mcp.json + CLAUDE.md + hooks
60
+ codex ~/.codex/config.toml + AGENTS.md
61
+ cursor .cursor/mcp.json + .cursorrules
62
+ http Connection info for HTTP API
63
+
64
+ Setup options:
65
+ --global Use global scope (recommended for claude-code)
66
+ --agent-id <id> Agent identifier (default: project name)
67
+ --db-path <path> Database path (default: <awm>/data/memory.db)
68
+ --no-instructions Skip instruction file (CLAUDE.md, AGENTS.md, etc.)
69
+ --no-claude-md Alias for --no-instructions
70
+ --no-hooks Skip hook installation
71
+ --hook-port PORT Sidecar port for hooks (default: 8401)
72
+
73
+ Examples:
74
+ awm setup --global Claude Code, global (recommended)
75
+ awm setup codex Codex CLI
76
+ awm setup cursor Cursor IDE
77
+ awm setup http Generic HTTP integration
78
+ awm doctor --all Check all configured targets
79
79
  `.trim());
80
80
  }
81
81
  // ─── SETUP ──────────────────────────────────────
@@ -133,18 +133,18 @@ async function setup() {
133
133
  const configAction = adapter.writeMcpConfig(ctx);
134
134
  const instructionsAction = adapter.writeInstructions(ctx, skipInstructions);
135
135
  const hooksAction = adapter.writeHooks(ctx, skipHooks);
136
- console.log(`
137
- AWM configured for ${adapter.name}${isGlobal ? ' (global)' : ''}
138
-
139
- Agent ID: ${ctx.agentId}
140
- DB path: ${ctx.dbPath}
141
- ${configAction}
142
- ${instructionsAction}
143
- ${hooksAction}
144
-
145
- Next steps:
146
- 1. Restart ${adapter.name} to pick up the MCP server
147
- 2. Memory tools will appear automatically${adapter.id === 'codex' ? ' (verify with /mcp)' : ''}
136
+ console.log(`
137
+ AWM configured for ${adapter.name}${isGlobal ? ' (global)' : ''}
138
+
139
+ Agent ID: ${ctx.agentId}
140
+ DB path: ${ctx.dbPath}
141
+ ${configAction}
142
+ ${instructionsAction}
143
+ ${hooksAction}
144
+
145
+ Next steps:
146
+ 1. Restart ${adapter.name} to pick up the MCP server
147
+ 2. Memory tools will appear automatically${adapter.id === 'codex' ? ' (verify with /mcp)' : ''}
148
148
  `.trim());
149
149
  }
150
150
  // ─── DOCTOR ──────────────────────────────────────
@@ -307,7 +307,7 @@ async function exportMemories() {
307
307
  // Collect unique agents
308
308
  const agents = [...new Set(memories.map((m) => m.agent_id))];
309
309
  const exportData = {
310
- version: '0.7.6',
310
+ version: '0.7.8',
311
311
  exported_at: new Date().toISOString(),
312
312
  source_db: dbPath,
313
313
  agent_filter: agentFilter,
@@ -372,23 +372,23 @@ async function importMemories() {
372
372
  const Database = (await import('better-sqlite3')).default;
373
373
  const db = new Database(dbPath);
374
374
  // Ensure tables exist in target
375
- db.exec(`
376
- CREATE TABLE IF NOT EXISTS engrams (
377
- id TEXT PRIMARY KEY, agent_id TEXT NOT NULL, concept TEXT NOT NULL, content TEXT NOT NULL,
378
- embedding BLOB, confidence REAL NOT NULL DEFAULT 0.5, salience REAL NOT NULL DEFAULT 0.5,
379
- access_count INTEGER NOT NULL DEFAULT 0, last_accessed TEXT NOT NULL, created_at TEXT NOT NULL,
380
- salience_features TEXT NOT NULL DEFAULT '{}', reason_codes TEXT NOT NULL DEFAULT '[]',
381
- stage TEXT NOT NULL DEFAULT 'active', ttl INTEGER, retracted INTEGER NOT NULL DEFAULT 0,
382
- retracted_by TEXT, retracted_at TEXT, tags TEXT NOT NULL DEFAULT '[]',
383
- episode_id TEXT, task_status TEXT, task_priority TEXT, blocked_by TEXT,
384
- memory_class TEXT NOT NULL DEFAULT 'working', superseded_by TEXT, supersedes TEXT
385
- );
386
- CREATE TABLE IF NOT EXISTS associations (
387
- id TEXT PRIMARY KEY, from_engram_id TEXT NOT NULL, to_engram_id TEXT NOT NULL,
388
- weight REAL NOT NULL DEFAULT 0.1, confidence REAL NOT NULL DEFAULT 0.5,
389
- type TEXT NOT NULL DEFAULT 'hebbian', activation_count INTEGER NOT NULL DEFAULT 0,
390
- created_at TEXT NOT NULL, last_activated TEXT
391
- );
375
+ db.exec(`
376
+ CREATE TABLE IF NOT EXISTS engrams (
377
+ id TEXT PRIMARY KEY, agent_id TEXT NOT NULL, concept TEXT NOT NULL, content TEXT NOT NULL,
378
+ embedding BLOB, confidence REAL NOT NULL DEFAULT 0.5, salience REAL NOT NULL DEFAULT 0.5,
379
+ access_count INTEGER NOT NULL DEFAULT 0, last_accessed TEXT NOT NULL, created_at TEXT NOT NULL,
380
+ salience_features TEXT NOT NULL DEFAULT '{}', reason_codes TEXT NOT NULL DEFAULT '[]',
381
+ stage TEXT NOT NULL DEFAULT 'active', ttl INTEGER, retracted INTEGER NOT NULL DEFAULT 0,
382
+ retracted_by TEXT, retracted_at TEXT, tags TEXT NOT NULL DEFAULT '[]',
383
+ episode_id TEXT, task_status TEXT, task_priority TEXT, blocked_by TEXT,
384
+ memory_class TEXT NOT NULL DEFAULT 'working', superseded_by TEXT, supersedes TEXT
385
+ );
386
+ CREATE TABLE IF NOT EXISTS associations (
387
+ id TEXT PRIMARY KEY, from_engram_id TEXT NOT NULL, to_engram_id TEXT NOT NULL,
388
+ weight REAL NOT NULL DEFAULT 0.1, confidence REAL NOT NULL DEFAULT 0.5,
389
+ type TEXT NOT NULL DEFAULT 'hebbian', activation_count INTEGER NOT NULL DEFAULT 0,
390
+ created_at TEXT NOT NULL, last_activated TEXT
391
+ );
392
392
  `);
393
393
  // Build dedup set if needed
394
394
  const existingHashes = new Set();
@@ -403,15 +403,15 @@ async function importMemories() {
403
403
  let imported = 0;
404
404
  let skippedDupes = 0;
405
405
  let skippedRetracted = 0;
406
- const insertMem = db.prepare(`
407
- INSERT INTO engrams (id, agent_id, concept, content, confidence, salience,
408
- access_count, last_accessed, created_at, stage, tags, memory_class,
409
- episode_id, task_status, task_priority, supersedes, superseded_by, retracted)
410
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
406
+ const insertMem = db.prepare(`
407
+ INSERT INTO engrams (id, agent_id, concept, content, confidence, salience,
408
+ access_count, last_accessed, created_at, stage, tags, memory_class,
409
+ episode_id, task_status, task_priority, supersedes, superseded_by, retracted)
410
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
411
411
  `);
412
- const insertAssoc = db.prepare(`
413
- INSERT INTO associations (id, from_engram_id, to_engram_id, weight, type, activation_count, created_at)
414
- VALUES (?, ?, ?, ?, ?, ?, datetime('now'))
412
+ const insertAssoc = db.prepare(`
413
+ INSERT INTO associations (id, from_engram_id, to_engram_id, weight, type, activation_count, created_at)
414
+ VALUES (?, ?, ?, ?, ?, ?, datetime('now'))
415
415
  `);
416
416
  const importTx = db.transaction(() => {
417
417
  // Import memories
@@ -514,21 +514,21 @@ async function mergeMemories() {
514
514
  targetDb.pragma('journal_mode = WAL');
515
515
  targetDb.pragma('foreign_keys = ON');
516
516
  // Ensure tables exist in target
517
- targetDb.exec(`
518
- CREATE TABLE IF NOT EXISTS engrams (
519
- id TEXT PRIMARY KEY, agent_id TEXT NOT NULL, concept TEXT NOT NULL, content TEXT NOT NULL,
520
- embedding BLOB, confidence REAL NOT NULL DEFAULT 0.5, salience REAL NOT NULL DEFAULT 0.5,
521
- access_count INTEGER NOT NULL DEFAULT 0, last_accessed TEXT NOT NULL, created_at TEXT NOT NULL,
522
- salience_features TEXT NOT NULL DEFAULT '{}', reason_codes TEXT NOT NULL DEFAULT '[]',
523
- stage TEXT NOT NULL DEFAULT 'active', ttl INTEGER, retracted INTEGER NOT NULL DEFAULT 0,
524
- retracted_by TEXT, retracted_at TEXT, tags TEXT NOT NULL DEFAULT '[]'
525
- );
526
- CREATE TABLE IF NOT EXISTS associations (
527
- id TEXT PRIMARY KEY, from_engram_id TEXT NOT NULL, to_engram_id TEXT NOT NULL,
528
- weight REAL NOT NULL DEFAULT 0.1, confidence REAL NOT NULL DEFAULT 0.5,
529
- type TEXT NOT NULL DEFAULT 'hebbian', activation_count INTEGER NOT NULL DEFAULT 0,
530
- created_at TEXT NOT NULL, last_activated TEXT NOT NULL
531
- );
517
+ targetDb.exec(`
518
+ CREATE TABLE IF NOT EXISTS engrams (
519
+ id TEXT PRIMARY KEY, agent_id TEXT NOT NULL, concept TEXT NOT NULL, content TEXT NOT NULL,
520
+ embedding BLOB, confidence REAL NOT NULL DEFAULT 0.5, salience REAL NOT NULL DEFAULT 0.5,
521
+ access_count INTEGER NOT NULL DEFAULT 0, last_accessed TEXT NOT NULL, created_at TEXT NOT NULL,
522
+ salience_features TEXT NOT NULL DEFAULT '{}', reason_codes TEXT NOT NULL DEFAULT '[]',
523
+ stage TEXT NOT NULL DEFAULT 'active', ttl INTEGER, retracted INTEGER NOT NULL DEFAULT 0,
524
+ retracted_by TEXT, retracted_at TEXT, tags TEXT NOT NULL DEFAULT '[]'
525
+ );
526
+ CREATE TABLE IF NOT EXISTS associations (
527
+ id TEXT PRIMARY KEY, from_engram_id TEXT NOT NULL, to_engram_id TEXT NOT NULL,
528
+ weight REAL NOT NULL DEFAULT 0.1, confidence REAL NOT NULL DEFAULT 0.5,
529
+ type TEXT NOT NULL DEFAULT 'hebbian', activation_count INTEGER NOT NULL DEFAULT 0,
530
+ created_at TEXT NOT NULL, last_activated TEXT NOT NULL
531
+ );
532
532
  `);
533
533
  // Build dedupe hash set from existing target memories
534
534
  const existingHashes = new Set();
@@ -538,16 +538,16 @@ async function mergeMemories() {
538
538
  existingHashes.add(contentHash(row.concept, row.content));
539
539
  console.log(`Target has ${existingHashes.size} unique memories (for dedupe)\n`);
540
540
  }
541
- const insertEngram = targetDb.prepare(`
542
- INSERT OR IGNORE INTO engrams (id, agent_id, concept, content, confidence, salience, access_count,
543
- last_accessed, created_at, salience_features, reason_codes, stage, ttl,
544
- retracted, retracted_by, retracted_at, tags)
545
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
541
+ const insertEngram = targetDb.prepare(`
542
+ INSERT OR IGNORE INTO engrams (id, agent_id, concept, content, confidence, salience, access_count,
543
+ last_accessed, created_at, salience_features, reason_codes, stage, ttl,
544
+ retracted, retracted_by, retracted_at, tags)
545
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
546
546
  `);
547
- const insertAssoc = targetDb.prepare(`
548
- INSERT OR IGNORE INTO associations (id, from_engram_id, to_engram_id, weight, confidence, type,
549
- activation_count, created_at, last_activated)
550
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
547
+ const insertAssoc = targetDb.prepare(`
548
+ INSERT OR IGNORE INTO associations (id, from_engram_id, to_engram_id, weight, confidence, type,
549
+ activation_count, created_at, last_activated)
550
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
551
551
  `);
552
552
  let totalMemories = 0, totalAssociations = 0, totalSkipped = 0;
553
553
  for (const sourcePath of sources) {
@@ -556,10 +556,10 @@ async function mergeMemories() {
556
556
  continue;
557
557
  }
558
558
  const sourceDb = new Database(sourcePath, { readonly: true });
559
- const engrams = sourceDb.prepare(`SELECT id, agent_id, concept, content, confidence, salience, access_count,
560
- last_accessed, created_at, salience_features, reason_codes, stage, ttl,
559
+ const engrams = sourceDb.prepare(`SELECT id, agent_id, concept, content, confidence, salience, access_count,
560
+ last_accessed, created_at, salience_features, reason_codes, stage, ttl,
561
561
  retracted, retracted_by, retracted_at, tags FROM engrams`).all();
562
- const assocs = sourceDb.prepare(`SELECT id, from_engram_id, to_engram_id, weight, confidence, type,
562
+ const assocs = sourceDb.prepare(`SELECT id, from_engram_id, to_engram_id, weight, confidence, type,
563
563
  activation_count, created_at, last_activated FROM associations`).all();
564
564
  const idMap = new Map();
565
565
  const skippedIds = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"activation.d.ts","sourceRoot":"","sources":["../../src/engine/activation.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,EAA6C,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAItG,OAAO,KAAK,EACF,gBAAgB,EAAE,eAAe,EAC1C,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAoIxD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;gBAEnC,KAAK,EAAE,WAAW;IAM9B;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAmfnE;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAKnC;IAEF,OAAO,CAAC,SAAS;IA+FjB;;;;OAIG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM;IAwBjE,OAAO,CAAC,OAAO;CAchB"}
1
+ {"version":3,"file":"activation.d.ts","sourceRoot":"","sources":["../../src/engine/activation.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,EAA6C,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAItG,OAAO,KAAK,EACF,gBAAgB,EAAE,eAAe,EAC1C,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAoIxD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;gBAEnC,KAAK,EAAE,WAAW;IAM9B;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAqiBnE;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAKnC;IAEF,OAAO,CAAC,SAAS;IA+FjB;;;;OAIG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM;IAwBjE,OAAO,CAAC,OAAO;CAchB"}
@@ -268,10 +268,64 @@ export class ActivationEngine {
268
268
  ? Math.sqrt(simValues.reduce((sum, s) => sum + (s - simMean) ** 2, 0) / simValues.length) : 0.15;
269
269
  // Floor stddev at 0.10 to prevent z-score inflation with small candidate pools
270
270
  const simStdDev = Math.max(rawStdDev, 0.10);
271
- // Phase 3b: Score each candidate with per-phase breakdown
272
- // Batch-fetch associations for all candidates at once (was N+1, now 1 query)
273
- const associationsByEngram = this.store.getAssociationsForBatch(candidates.map(e => e.id));
274
- const scored = candidates.map(engram => {
271
+ // Phase 3a': Cheap pre-filter deep scoring (with associations + tokenize-content
272
+ // + Hebbian/centrality) only runs for candidates that have a non-trivial signal
273
+ // we can verify cheaply. Anything that fails this filter would score below the
274
+ // relevance gate (textMatch > 0.1) anyway and produce a near-zero composite.
275
+ //
276
+ // Why: phase-breakdown spike (2026-05-08) showed assocBatch over 10K candidates
277
+ // costs 1500ms and represents 68% of recall latency. Most candidates have zero
278
+ // BM25 hit, low cosine similarity, and no concept-jaccard match — so fetching
279
+ // their associations and tokenizing their full content is wasted work.
280
+ //
281
+ // Survival criteria (any one):
282
+ // 1. BM25 hit (bm25Score > 0)
283
+ // 2. Cosine z-score above the gate (would produce non-zero vectorMatch)
284
+ // 3. Concept-token overlap with query (cheap to compute — concept is short)
285
+ //
286
+ // Graph walk preserves correctness: it only boosts neighbors whose own textMatch
287
+ // already passes the relevance floor (0.05-0.1), and any candidate meeting that
288
+ // floor would also pass this filter (they'd have either BM25, cosine, or concept
289
+ // jaccard match). So no graph-walkable target is lost.
290
+ //
291
+ // Disable via AWM_DISABLE_POOL_FILTER=1 (for A/B testing or if a regression appears)
292
+ const poolFilterEnabled = process.env.AWM_DISABLE_POOL_FILTER !== '1';
293
+ let filteredCandidates;
294
+ if (poolFilterEnabled) {
295
+ filteredCandidates = [];
296
+ for (const engram of candidates) {
297
+ const bm25 = bm25ScoreMap.get(engram.id) ?? 0;
298
+ if (bm25 > 0) {
299
+ filteredCandidates.push(engram);
300
+ continue;
301
+ }
302
+ const sim = rawCosineSims.get(engram.id);
303
+ if (sim !== undefined) {
304
+ const z = (sim - simMean) / simStdDev;
305
+ if (z > adaptive.zScoreGate) {
306
+ filteredCandidates.push(engram);
307
+ continue;
308
+ }
309
+ }
310
+ // Cheap concept jaccard — concepts are short (typically 3-8 tokens)
311
+ const conceptTokens = tokenize(engram.concept);
312
+ if (conceptTokens.size === 0)
313
+ continue;
314
+ let conceptOverlap = 0;
315
+ for (const w of conceptTokens)
316
+ if (queryTokens.has(w))
317
+ conceptOverlap++;
318
+ if (conceptOverlap > 0)
319
+ filteredCandidates.push(engram);
320
+ }
321
+ }
322
+ else {
323
+ filteredCandidates = candidates;
324
+ }
325
+ // Phase 3b: Score each filtered candidate with per-phase breakdown
326
+ // Batch-fetch associations only for survivors (was N+1 over 10K, now 1 query over ~200)
327
+ const associationsByEngram = this.store.getAssociationsForBatch(filteredCandidates.map(e => e.id));
328
+ const scored = filteredCandidates.map(engram => {
275
329
  const ageDays = (Date.now() - engram.createdAt.getTime()) / (1000 * 60 * 60 * 24);
276
330
  const associations = associationsByEngram.get(engram.id) ?? [];
277
331
  // --- Text relevance (keyword signals) ---
@@ -1 +1 @@
1
- {"version":3,"file":"activation.js","sourceRoot":"","sources":["../../src/engine/activation.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,sCAAsC;AACtC;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACtG,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAkBxD,MAAM,gBAAgB,GAAoE;IACxF,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,IAAI,EAAQ,8BAA8B;QACtD,cAAc,EAAE,IAAI;QACpB,iBAAiB,EAAE,GAAG,EAAE,oDAAoD;QAC5E,UAAU,EAAE,GAAG,EAAS,oDAAoD;QAC5E,SAAS,EAAE,CAAC,EAAY,6BAA6B;QACrD,UAAU,EAAE,GAAG,EAAS,sBAAsB;KAC/C;IACD,WAAW,EAAE;QACX,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,GAAG,EAAS,oBAAoB;QAC5C,cAAc,EAAE,GAAG,EAAK,uCAAuC;QAC/D,iBAAiB,EAAE,GAAG,EAAE,wCAAwC;QAChE,UAAU,EAAE,GAAG,EAAS,uCAAuC;QAC/D,SAAS,EAAE,EAAE,EAAW,mCAAmC;QAC3D,UAAU,EAAE,GAAG,EAAS,sBAAsB;KAC/C;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,GAAG;QACf,cAAc,EAAE,GAAG;QACnB,iBAAiB,EAAE,GAAG;QACtB,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,GAAG;KAChB;CACF,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEpC,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,sBAAsB;IACtB,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,aAAa,IAAI,CAAC,CAAC,CAAU,WAAW;IACxE,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,aAAa,IAAI,CAAC,CAAC,CAAU,YAAY;IACzE,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,aAAa,IAAI,CAAC,CAAC,CAAa,aAAa;IAC1E,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,aAAa,IAAI,CAAC,CAAC,CAAC,gBAAgB;IAC/E,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,aAAa,IAAI,CAAC,CAAC,CAAiB,iBAAiB;IAC/E,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,aAAa,IAAI,CAAC,CAAC,CAAe,aAAa;IAC3E,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAAE,aAAa,IAAI,CAAC,CAAC,CAAG,kBAAkB;IAE/E,qCAAqC;IACrC,IAAI,SAAS,IAAI,CAAC;QAAE,aAAa,IAAI,CAAC,CAAC;SAClC,IAAI,SAAS,IAAI,CAAC;QAAE,aAAa,IAAI,CAAC,CAAC;IAE5C,yCAAyC;IACzC,IAAI,yDAAyD,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,gBAAgB,IAAI,CAAC,CAAC;IACnG,IAAI,yFAAyF,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,gBAAgB,IAAI,CAAC,CAAC;IACjI,IAAI,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,gBAAgB,IAAI,CAAC,CAAC;IAE5E,uCAAuC;IACvC,IAAI,SAAS,GAAG,EAAE;QAAE,gBAAgB,IAAI,CAAC,CAAC;SACrC,IAAI,SAAS,GAAG,EAAE;QAAE,gBAAgB,IAAI,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,aAAa,GAAG,gBAAgB,CAAC;IAC9C,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IACjC,IAAI,IAAI,IAAI,CAAC,CAAC;QAAE,OAAO,aAAa,CAAC;IACrC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAsB;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC;IAClC,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IACpE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACxE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IACrE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IACjE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS;IAChE,SAAS,EAAE,OAAO,EAAE,OAAO;CAC5B,CAAC,CAAC;AAEH,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,GAAG,CACZ,IAAI,CAAC,WAAW,EAAE;SACf,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,OAAO,CAAC,CAAc,EAAE,CAAc;IAC7C,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,YAAY,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,YAAY,CAAC;IAC7C,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,OAAO,gBAAgB;IACnB,KAAK,CAAc;IACnB,kBAAkB,CAAqB;IACtC,cAAc,CAAwB;IAE/C,YAAY,KAAkB;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,IAAI,qBAAqB,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,KAAsB;QACnC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,6CAA6C;QACtF,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC;QAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC;QAChD,MAAM,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAE9C,2FAA2F;QAC3F,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS;YAC9B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;YACjE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAE9C,gFAAgF;QAChF,IAAI,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;QACjC,MAAM,cAAc,GAAG,yDAAyD,CAAC;QACjF,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC;qBACrE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;qBAC7C,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;qBACZ,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;qBAClF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;qBACvC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACf,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,YAAY,GAAG,GAAG,YAAY,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/D,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;QAC7B,CAAC;QAED,sEAAsE;QACtE,IAAI,aAAa,GAAG,YAAY,CAAC;QACjC,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,KAAgD,CAAC;YACrD,IAAI,CAAC;gBACH,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;oBACjC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC1B,IAAI,OAAO,CAAS,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;iBAChH,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,0DAA0D;YAC5D,CAAC;oBAAS,CAAC;gBACT,IAAI,KAAK;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,IAAI,cAAc,GAAoB,IAAI,CAAC;QAC3C,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,0DAA0D;QAC5D,CAAC;QAED,+DAA+D;QAC/D,0FAA0F;QAC1F,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;YACzC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,GAAG,CAAC,CAAC;YAC5E,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAEjG,8DAA8D;QAC9D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC/C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAe,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,CAAC,SAAS,GAAG,QAAQ,EAAE,CAAC;gBAC3B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC3C,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5E,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;SAC7C,CAAC,CAAC,CAAC;QAEJ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAC7C,QAAQ,EACR,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAC3C,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAChC,CAAC;QAEF,iCAAiC;QACjC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC/C,KAAK,MAAM,CAAC,IAAI,UAAU;YAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACpE,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACrD,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAEnD,qCAAqC;QACrC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEvC,sBAAsB;QACtB,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE5C,uEAAuE;QACvE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;QAChD,IAAI,cAAc,EAAE,CAAC;YACnB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;gBAChC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBACrB,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;YAClC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;YACpC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnG,+EAA+E;QAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAE5C,0DAA0D;QAC1D,6EAA6E;QAC7E,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3F,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACrC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAClF,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAE/D,2CAA2C;YAE3C,wDAAwD;YACxD,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAEnD,uDAAuD;YACvD,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAC3D,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,CAAC;YAEjE,kDAAkD;YAClD,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC;gBAC3C,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI;gBAChF,CAAC,CAAC,CAAC,CAAC;YACN,MAAM,YAAY,GAAG,cAAc,GAAG,GAAG,CAAC;YAE1C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,CAAC;YAErF,8CAA8C;YAC9C,+EAA+E;YAC/E,2FAA2F;YAC3F,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,SAAS,CAAC;gBAC9C,IAAI,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACjC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAED,qEAAqE;YACrE,mFAAmF;YACnF,yEAAyE;YACzE,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC;gBACnD,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,GAAG,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC;gBAC5H,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAExC,2BAA2B;YAE3B,iEAAiE;YACjE,sFAAsF;YACtF,gHAAgH;YAChH,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACnE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YACvE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,iBAAiB,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;YACtF,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;YAEnF,uEAAuE;YACvE,gDAAgD;YAChD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;gBACxC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM;gBAC1E,CAAC,CAAC,CAAC,CAAC;YACN,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAE/C,qEAAqE;YACrE,0EAA0E;YAC1E,yEAAyE;YACzE,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1E,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;gBAC7C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC,CAAC;YAEN,kDAAkD;YAClD,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC;YAEzC,yEAAyE;YACzE,6EAA6E;YAC7E,wEAAwE;YACxE,sDAAsD;YACtD,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI;gBAC5C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC,CAAC;YAEN,oDAAoD;YACpD,0FAA0F;YAC1F,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,YAAY,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;YAC9E,MAAM,aAAa,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,oBAAoB;YAC7E,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC,cAAc,GAAG,YAAY,GAAG,aAAa,GAAG,eAAe,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,CAAC,GAAG,cAAc,CAAC;YAEhM,MAAM,WAAW,GAAgB;gBAC/B,SAAS;gBACT,WAAW;gBACX,UAAU;gBACV,YAAY;gBACZ,UAAU,EAAE,CAAC,EAAE,oBAAoB;gBACnC,cAAc;gBACd,SAAS;gBACT,aAAa,EAAE,CAAC,EAAE,oBAAoB;aACvC,CAAC;YAEF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,oFAAoF;QACpF,oEAAoE;QACpE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;QACxF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC7C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;oBACvB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;wBAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;YACD,0CAA0C;YAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnE,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,QAAQ,EAAE,GAAG,aAAa,IAAI,UAAU,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBACpH,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;oBAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;wBACnC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;wBACxC,0BAA0B;wBAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;wBACxB,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;wBAClF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;wBAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;wBAC7C,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;wBACrC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;wBACnE,IAAI,EAAE,GAAG,CAAC,CAAC;wBACX,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACzI,IAAI,EAAE,EAAE,CAAC;4BACP,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,SAAS,CAAC;4BACrC,IAAI,CAAC,GAAG,QAAQ,CAAC,UAAU;gCAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;wBACjF,CAAC;wBACD,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;4BACzB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;4BACnE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBACrB,MAAM,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;wBAC5D,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7H,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;wBAClD,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;wBAC/B,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,EAAE,GAAG,QAAQ,CAAC,cAAc,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;wBAChG,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;oBAC7N,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,kFAAkF;QAClF,mFAAmF;QACnF,6EAA6E;QAC7E,CAAC;YACC,2FAA2F;YAC3F,uEAAuE;YACvE,6EAA6E;YAC7E,yEAAyE;YACzE,MAAM,iBAAiB,GAAG,MAAM;iBAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;iBAC3C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAErE,iEAAiE;YACjE,MAAM,aAAa,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEpD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;gBACrC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAE/D,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;oBACjC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;wBACnC,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;wBAC5B,qFAAqF;wBACrF,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;4BAAE,SAAS;wBACnG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;4BAAE,SAAS,CAAC,uCAAuC;wBAC7E,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACpB,CAAC;gBACH,CAAC;gBAED,iFAAiF;gBACjF,mFAAmF;gBACnF,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;oBAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;wBAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;wBAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;4BACnC,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;4BAC5B,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gCACtC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gCACZ,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;4BAC9C,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;oBACrC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;wBACnC,IAAI,IAAI,GAAG,OAAO;4BAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC;gBAED,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACxB,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;wBAC1B,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;4BAAE,SAAS;wBAE5C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;wBACjF,IAAI,cAAc,GAAG,CAAC,CAAC;wBACvB,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;4BAC5B,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gCAAE,cAAc,EAAE,CAAC;wBAC3C,CAAC;wBAED,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;4BACvB,sCAAsC;4BACtC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;4BACzD,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC;4BAC1B,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC;4BAC1C,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC;wBAC7C,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,0EAA0E;QAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEjE,uDAAuD;QACvD,MAAM,IAAI,GAAG,IAAI;aACd,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC;aAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAErC,6EAA6E;QAC7E,wEAAwE;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAE1D,IAAI,WAAW,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAClC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAC3C,CAAC;gBACF,IAAI,WAAsD,CAAC;gBAC3D,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;oBACvC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC;oBAC/B,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;iBACrH,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,WAAW;oBAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAElE,kDAAkD;gBAClD,mFAAmF;gBACnF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC7E,MAAM,eAAe,GAAG,CAAC,GAAG,YAAY,CAAC;gBAEzC,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;oBAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;oBAClC,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,EAAE,CAAC,KAAK,CAAC;oBAC1C,IAAI,CAAC,KAAK,GAAG,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC;gBACtF,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,+CAA+C;YACjD,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,+EAA+E;QAC/E,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrF,MAAM,SAAS,GAAG,cAAc;gBAC9B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBAC7D,CAAC,CAAC,CAAC,CAAC;YACN,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;YAElF,MAAM,MAAM,GAAG,OAAO,GAAG,GAAG,CAAC;YAC7B,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;YAClC,MAAM,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;YACtC,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEtF,MAAM,cAAc,GAAG,UAAU;iBAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC;iBACrC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,IAAI,CAAC;gBACvC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;gBACvC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAEtB,MAAM,YAAY,GAAG,cAAc,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBACzD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;gBACxB,CAAC,CAAC,GAAG,CAAC;YAER,wFAAwF;YACxF,MAAM,gBAAgB,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEzD,iFAAiF;YACjF,IAAI,gBAAgB,GAAG,gBAAgB,IAAI,YAAY,GAAG,CAAC,OAAO,GAAG,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC;gBACtF,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,wDAAwD;YACxD,IAAI,gBAAgB,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;gBAC1C,6EAA6E;gBAC7E,IAAI,mBAAmB,GAAG,CAAC,EAAE,CAAC;oBAC5B,OAAO,EAAE,CAAC;gBACZ,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;oBAC9B,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAED,qDAAqD;QACrD,IAAI,mBAAmB,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtD,MAAM,iBAAiB,GAAG,UAAU;iBACjC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC;iBACrC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;iBACrB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACf,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAC1F,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAE5G,IAAI,QAAQ,GAAG,mBAAmB,IAAI,CAAC,QAAQ,GAAG,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC;gBAC1E,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,wDAAwD;QACxD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,+CAA+C;YACrE,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,OAAO,GAAuB,UAAU;aAC3C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACT,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC;YAC1D,YAAY,EAAE,CAAC,CAAC,YAAY;SAC7B,CAAC,CAAC,CAAC;QAEN,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEnD,sGAAsG;QACtG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAChD,uEAAuE;YACvE,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,MAAM,WAAW,GAAuB,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC;YAClE,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAE1D,gCAAgC;YAChC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;gBAC5B,EAAE,EAAE,UAAU,EAAE;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,eAAe,EAAE,OAAO,CAAC,MAAM;gBAC/B,QAAQ,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnD,SAAS;gBACT,SAAS,EAAE,YAAY;aACxB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACK,MAAM,CAAU,aAAa,GAAG;QACtC,QAAQ,EAAE,IAAI,EAAI,uBAAuB;QACzC,QAAQ,EAAE,IAAI,EAAI,iBAAiB;QACnC,MAAM,EAAE,IAAI,EAAM,mCAAmC;QACrD,MAAM,EAAE,IAAI,EAAM,eAAe;KAClC,CAAC;IAEM,SAAS,CACf,MAAkG,EAClG,QAAgB,EAChB,UAAkB,EAClB,YAAoB,EAAE;QAEtB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,IAAI,CAAC;QAE7B,mDAAmD;QACnD,MAAM,UAAU,GAA6B;YAC3C,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;YACnC,QAAQ,EAAE,CAAC,UAAU,CAAC;YACtB,MAAM,EAAE,CAAC,QAAQ,CAAC;YAClB,MAAM,EAAE,CAAC,QAAQ,CAAC;SACnB,CAAC;QAEF,8DAA8D;QAC9D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,yBAAyB;QAEvE,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAChE,MAAM,WAAW,GAAG,gBAAgB,CAAC,aAAa,CAAC,SAAwD,CAAC,CAAC;YAC7G,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC;YAErE,YAAY;YACZ,MAAM,IAAI,GAAG,MAAM;iBAChB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC;iBAClD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;iBACjC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YAE1B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;YAEnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC9C,MAAM,QAAQ,GAAgB,EAAE,CAAC;gBAEjC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;oBACxB,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBAAE,SAAS;oBAC3C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAE7B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;wBAC/C,CAAC,CAAC,IAAI,CAAC,YAAY;wBACnB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAElD,8CAA8C;oBAC9C,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oBAE3E,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;wBAClC,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE;4BACtD,CAAC,CAAC,KAAK,CAAC,UAAU;4BAClB,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;wBAEvB,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;4BAAE,SAAS;wBACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAC1C,IAAI,CAAC,QAAQ;4BAAE,SAAS;wBAExB,MAAM,cAAc,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;wBAChD,IAAI,QAAQ,CAAC,WAAW,CAAC,SAAS,GAAG,cAAc;4BAAE,SAAS;wBAE9D,gDAAgD;wBAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;wBAC3D,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;wBAEhF,yEAAyE;wBACzE,IAAI,SAAS,KAAK,QAAQ;4BAAE,SAAS,IAAI,GAAG,CAAC;wBAE7C,iCAAiC;wBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,EAAE,IAAI,CAAC,CAAC;wBACtD,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;4BAClB,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;4BACtE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC1B,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBACjC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ;qBAClB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;qBACjC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CACxB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACnF,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;gBACrB,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,MAAM,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CAAC,QAAgB,EAAE,MAAe;QACtD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChF,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpF,MAAM,aAAa,GAAG,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAC;YAE9C,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACf,iCAAiC;gBACjC,MAAM,SAAS,GAAG,qBAAqB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;gBAC/D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBACzD,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,mEAAmE;gBACnE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB;gBAClF,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBACzD,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,OAAO,CAAC,MAAmB,EAAE,MAAc,EAAE,YAA2B;QAC9E,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrF,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/E,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxF,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC"}
1
+ {"version":3,"file":"activation.js","sourceRoot":"","sources":["../../src/engine/activation.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -175,7 +175,7 @@ async function main() {
175
175
  getExpander().catch(err => console.warn('Query expander model unavailable:', err.message));
176
176
  // Start server
177
177
  await app.listen({ port: PORT, host: '0.0.0.0' });
178
- console.log(`AgentWorkingMemory v0.7.6 listening on port ${PORT}`);
178
+ console.log(`AgentWorkingMemory v0.7.8 listening on port ${PORT}`);
179
179
  // Graceful shutdown
180
180
  const shutdown = async () => {
181
181
  clearInterval(backupTimer);
package/dist/mcp.js CHANGED
@@ -71,7 +71,7 @@ import { queryPeerDecisions, formatPeerDecisions } from './coordination/peer-dec
71
71
  const INCOGNITO = process.env.AWM_INCOGNITO === '1' || process.env.AWM_INCOGNITO === 'true';
72
72
  if (INCOGNITO) {
73
73
  console.error('AWM: incognito mode — all memory tools disabled, nothing will be recorded');
74
- const server = new McpServer({ name: 'agent-working-memory', version: '0.7.6' });
74
+ const server = new McpServer({ name: 'agent-working-memory', version: '0.7.8' });
75
75
  const transport = new StdioServerTransport();
76
76
  server.connect(transport).catch(err => {
77
77
  console.error('MCP server failed:', err);
@@ -102,7 +102,7 @@ else {
102
102
  let coordDb = null;
103
103
  const server = new McpServer({
104
104
  name: 'agent-working-memory',
105
- version: '0.7.6',
105
+ version: '0.7.8',
106
106
  });
107
107
  server.registerResource('awm-overview', 'awm://server/overview', {
108
108
  title: 'AWM Overview',
@@ -162,15 +162,15 @@ else {
162
162
  return 'unclassified';
163
163
  }
164
164
  // --- Tools ---
165
- server.tool('memory_write', `Store a memory. The salience filter decides whether it's worth keeping (active), needs more evidence (staging), or should be discarded.
166
-
167
- CALL THIS PROACTIVELY — do not wait to be asked. Write memories when you:
168
- - Discover something about the codebase, bugs, or architecture
169
- - Make a decision and want to remember why
170
- - Encounter and resolve an error
171
- - Learn a user preference or project pattern
172
- - Complete a significant piece of work
173
-
165
+ server.tool('memory_write', `Store a memory. The salience filter decides whether it's worth keeping (active), needs more evidence (staging), or should be discarded.
166
+
167
+ CALL THIS PROACTIVELY — do not wait to be asked. Write memories when you:
168
+ - Discover something about the codebase, bugs, or architecture
169
+ - Make a decision and want to remember why
170
+ - Encounter and resolve an error
171
+ - Learn a user preference or project pattern
172
+ - Complete a significant piece of work
173
+
174
174
  The concept should be a short label (3-8 words). The content should be the full detail.`, {
175
175
  concept: z.string().describe('Short label for this memory (3-8 words)'),
176
176
  content: z.string().describe('Full detail of what was learned'),
@@ -346,15 +346,15 @@ The concept should be a short label (3-8 words). The content should be the full
346
346
  }],
347
347
  };
348
348
  });
349
- server.tool('memory_recall', `Recall memories relevant to a query. Uses cognitive activation — not keyword search.
350
-
351
- ALWAYS call this when:
352
- - Starting work on a project or topic (recall what you know)
353
- - Debugging (recall similar errors and solutions)
354
- - Making decisions (recall past decisions and outcomes)
355
- - The user mentions a topic you might have stored memories about
356
-
357
- Accepts either "query" or "context" parameter — both work identically.
349
+ server.tool('memory_recall', `Recall memories relevant to a query. Uses cognitive activation — not keyword search.
350
+
351
+ ALWAYS call this when:
352
+ - Starting work on a project or topic (recall what you know)
353
+ - Debugging (recall similar errors and solutions)
354
+ - Making decisions (recall past decisions and outcomes)
355
+ - The user mentions a topic you might have stored memories about
356
+
357
+ Accepts either "query" or "context" parameter — both work identically.
358
358
  Returns the most relevant memories ranked by text relevance, temporal recency, and associative strength.`, {
359
359
  query: z.string().optional().describe('What to search for — describe the situation, question, or topic'),
360
360
  context: z.string().optional().describe('Alias for query (either works)'),
@@ -417,8 +417,8 @@ Returns the most relevant memories ranked by text relevance, temporal recency, a
417
417
  }],
418
418
  };
419
419
  });
420
- server.tool('memory_feedback', `Report whether a recalled memory was actually useful. This updates the memory's confidence score — useful memories become stronger, useless ones weaken.
421
-
420
+ server.tool('memory_feedback', `Report whether a recalled memory was actually useful. This updates the memory's confidence score — useful memories become stronger, useless ones weaken.
421
+
422
422
  Always call this after using a recalled memory so the system learns what's valuable.`, {
423
423
  engram_id: z.string().describe('ID of the memory (from memory_recall results)'),
424
424
  useful: z.boolean().describe('Was this memory actually helpful?'),
@@ -441,8 +441,8 @@ Always call this after using a recalled memory so the system learns what's valua
441
441
  }],
442
442
  };
443
443
  });
444
- server.tool('memory_retract', `Retract a memory that turned out to be wrong. Creates a correction and reduces confidence of related memories.
445
-
444
+ server.tool('memory_retract', `Retract a memory that turned out to be wrong. Creates a correction and reduces confidence of related memories.
445
+
446
446
  Use this when you discover a memory contains incorrect information.`, {
447
447
  engram_id: z.string().describe('ID of the wrong memory'),
448
448
  reason: z.string().describe('Why is this memory wrong?'),
@@ -466,13 +466,13 @@ Use this when you discover a memory contains incorrect information.`, {
466
466
  }],
467
467
  };
468
468
  });
469
- server.tool('memory_supersede', `Replace an outdated memory with a newer one. Unlike retraction (which marks memories as wrong), supersession marks the old memory as outdated but historically correct.
470
-
471
- Use this when:
472
- - A status or count has changed (e.g., "5 reviews done" → "7 reviews done")
473
- - Architecture or infrastructure evolved (e.g., "two-repo model" → "three-repo model")
474
- - A schedule or plan was updated
475
-
469
+ server.tool('memory_supersede', `Replace an outdated memory with a newer one. Unlike retraction (which marks memories as wrong), supersession marks the old memory as outdated but historically correct.
470
+
471
+ Use this when:
472
+ - A status or count has changed (e.g., "5 reviews done" → "7 reviews done")
473
+ - Architecture or infrastructure evolved (e.g., "two-repo model" → "three-repo model")
474
+ - A schedule or plan was updated
475
+
476
476
  The old memory stays in the database (searchable for history) but is heavily down-ranked in recall so the current version dominates.`, {
477
477
  old_engram_id: z.string().describe('ID of the outdated memory'),
478
478
  new_engram_id: z.string().describe('ID of the replacement memory'),
@@ -499,7 +499,7 @@ The old memory stays in the database (searchable for history) but is heavily dow
499
499
  }],
500
500
  };
501
501
  });
502
- server.tool('memory_stats', `Get memory health stats — how many memories, confidence levels, association count, and system performance.
502
+ server.tool('memory_stats', `Get memory health stats — how many memories, confidence levels, association count, and system performance.
503
503
  Also shows the activity log path so the user can tail it to see what's happening.`, {}, async () => {
504
504
  const metrics = evalEngine.computeMetrics(AGENT_ID);
505
505
  const checkpoint = store.getCheckpoint(AGENT_ID);
@@ -530,13 +530,13 @@ Also shows the activity log path so the user can tail it to see what's happening
530
530
  };
531
531
  });
532
532
  // --- Checkpointing Tools ---
533
- server.tool('memory_checkpoint', `Save your current execution state so you can recover after context compaction.
534
-
535
- ALWAYS call this before:
536
- - Long operations (multi-file generation, large refactors, overnight work)
537
- - Anything that might fill the context window
538
- - Switching to a different task
539
-
533
+ server.tool('memory_checkpoint', `Save your current execution state so you can recover after context compaction.
534
+
535
+ ALWAYS call this before:
536
+ - Long operations (multi-file generation, large refactors, overnight work)
537
+ - Anything that might fill the context window
538
+ - Switching to a different task
539
+
540
540
  Also call periodically during long sessions to avoid losing state. The state is saved per-agent and overwrites any previous checkpoint.`, {
541
541
  current_task: z.string().describe('What you are currently working on'),
542
542
  decisions: z.array(z.string()).optional().default([])
@@ -570,14 +570,14 @@ Also call periodically during long sessions to avoid losing state. The state is
570
570
  }],
571
571
  };
572
572
  });
573
- server.tool('memory_restore', `Restore your previous execution state after context compaction or at session start.
574
-
575
- Returns:
576
- - Your saved execution state (task, decisions, next steps, files)
577
- - Recently recalled memories for context
578
- - Your last write for continuity
579
- - How long you were idle
580
-
573
+ server.tool('memory_restore', `Restore your previous execution state after context compaction or at session start.
574
+
575
+ Returns:
576
+ - Your saved execution state (task, decisions, next steps, files)
577
+ - Recently recalled memories for context
578
+ - Your last write for continuity
579
+ - How long you were idle
580
+
581
581
  Use this at the start of every session or after compaction to pick up where you left off.`, {}, async () => {
582
582
  const checkpoint = store.getCheckpoint(AGENT_ID);
583
583
  const now = Date.now();
@@ -685,9 +685,9 @@ Use this at the start of every session or after compaction to pick up where you
685
685
  if (coordDb) {
686
686
  try {
687
687
  const myAgent = coordDb.prepare(`SELECT id FROM coord_agents WHERE name = ? AND status != 'dead' ORDER BY last_seen DESC LIMIT 1`).get(AGENT_ID);
688
- const peerDecisions = coordDb.prepare(`SELECT d.summary, a.name AS author_name, d.created_at
689
- FROM coord_decisions d JOIN coord_agents a ON d.author_id = a.id
690
- WHERE d.author_id != ? AND d.created_at > datetime('now', '-30 minutes')
688
+ const peerDecisions = coordDb.prepare(`SELECT d.summary, a.name AS author_name, d.created_at
689
+ FROM coord_decisions d JOIN coord_agents a ON d.author_id = a.id
690
+ WHERE d.author_id != ? AND d.created_at > datetime('now', '-30 minutes')
691
691
  ORDER BY d.created_at DESC LIMIT 10`).all(myAgent?.id ?? '');
692
692
  if (peerDecisions.length > 0) {
693
693
  parts.push(`\n**Peer decisions (last 30 min):**`);
@@ -706,13 +706,13 @@ Use this at the start of every session or after compaction to pick up where you
706
706
  };
707
707
  });
708
708
  // --- Task Management Tools ---
709
- server.tool('memory_task_add', `Create a task that you need to come back to. Tasks are memories with status and priority tracking.
710
-
711
- Use this when:
712
- - You identify work that needs doing but can't do it right now
713
- - The user mentions something to do later
714
- - You want to park a sub-task while focusing on something more urgent
715
-
709
+ server.tool('memory_task_add', `Create a task that you need to come back to. Tasks are memories with status and priority tracking.
710
+
711
+ Use this when:
712
+ - You identify work that needs doing but can't do it right now
713
+ - The user mentions something to do later
714
+ - You want to park a sub-task while focusing on something more urgent
715
+
716
716
  Tasks automatically get high salience so they won't be discarded.`, {
717
717
  concept: z.string().describe('Short task title (3-10 words)'),
718
718
  content: z.string().describe('Full task description — what needs doing, context, acceptance criteria'),
@@ -752,11 +752,11 @@ Tasks automatically get high salience so they won't be discarded.`, {
752
752
  }],
753
753
  };
754
754
  });
755
- server.tool('memory_task_update', `Update a task's status or priority. Use this to:
756
- - Start working on a task (open → in_progress)
757
- - Mark a task done (→ done)
758
- - Block a task on another (→ blocked)
759
- - Reprioritize (change priority)
755
+ server.tool('memory_task_update', `Update a task's status or priority. Use this to:
756
+ - Start working on a task (open → in_progress)
757
+ - Mark a task done (→ done)
758
+ - Block a task on another (→ blocked)
759
+ - Reprioritize (change priority)
760
760
  - Unblock a task (clear blocked_by)`, {
761
761
  task_id: z.string().describe('ID of the task to update'),
762
762
  status: z.enum(['open', 'in_progress', 'blocked', 'done']).optional()
@@ -786,8 +786,8 @@ Tasks automatically get high salience so they won't be discarded.`, {
786
786
  }],
787
787
  };
788
788
  });
789
- server.tool('memory_task_list', `List tasks with optional status filter. Shows tasks ordered by priority (urgent first).
790
-
789
+ server.tool('memory_task_list', `List tasks with optional status filter. Shows tasks ordered by priority (urgent first).
790
+
791
791
  Use at the start of a session to see what's pending, or to check blocked/done tasks.`, {
792
792
  status: z.enum(['open', 'in_progress', 'blocked', 'done']).optional()
793
793
  .describe('Filter by status (omit to see all active tasks)'),
@@ -813,10 +813,10 @@ Use at the start of a session to see what's pending, or to check blocked/done ta
813
813
  }],
814
814
  };
815
815
  });
816
- server.tool('memory_task_next', `Get the single most important task to work on next.
817
-
818
- Prioritizes: in_progress tasks first (finish what you started), then by priority level, then oldest first. Skips blocked and done tasks.
819
-
816
+ server.tool('memory_task_next', `Get the single most important task to work on next.
817
+
818
+ Prioritizes: in_progress tasks first (finish what you started), then by priority level, then oldest first. Skips blocked and done tasks.
819
+
820
820
  Use this when you finish a task or need to decide what to do next.`, {}, async () => {
821
821
  const next = store.getNextTask(AGENT_ID);
822
822
  if (!next) {
@@ -832,13 +832,13 @@ Use this when you finish a task or need to decide what to do next.`, {}, async (
832
832
  };
833
833
  });
834
834
  // --- Task Bracket Tools ---
835
- server.tool('memory_task_begin', `Signal that you're starting a significant task. Auto-checkpoints current state and recalls relevant memories.
836
-
837
- CALL THIS when starting:
838
- - A multi-step operation (doc generation, large refactor, migration)
839
- - Work on a new topic or project area
840
- - Anything that might fill the context window
841
-
835
+ server.tool('memory_task_begin', `Signal that you're starting a significant task. Auto-checkpoints current state and recalls relevant memories.
836
+
837
+ CALL THIS when starting:
838
+ - A multi-step operation (doc generation, large refactor, migration)
839
+ - Work on a new topic or project area
840
+ - Anything that might fill the context window
841
+
842
842
  This ensures your state is saved before you start, and primes recall with relevant context.`, {
843
843
  topic: z.string().describe('What task are you starting? (3-15 words)'),
844
844
  files: z.array(z.string()).optional().default([])
@@ -889,13 +889,13 @@ This ensures your state is saved before you start, and primes recall with releva
889
889
  }],
890
890
  };
891
891
  });
892
- server.tool('memory_task_end', `Signal that you've finished a significant task. Writes a summary memory and auto-checkpoints.
893
-
894
- CALL THIS when you finish:
895
- - A multi-step operation
896
- - Before switching to a different topic
897
- - At the end of a work session
898
-
892
+ server.tool('memory_task_end', `Signal that you've finished a significant task. Writes a summary memory and auto-checkpoints.
893
+
894
+ CALL THIS when you finish:
895
+ - A multi-step operation
896
+ - Before switching to a different topic
897
+ - At the end of a work session
898
+
899
899
  This captures what was accomplished so future sessions can recall it.`, {
900
900
  summary: z.string().describe('What was accomplished? Include key outcomes, decisions, and any issues.'),
901
901
  tags: z.array(z.string()).optional().default([])
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-working-memory",
3
- "version": "0.7.6",
3
+ "version": "0.7.8",
4
4
  "description": "Cognitive memory layer for AI agents — activation-based retrieval, salience filtering, associative connections",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -166,15 +166,58 @@ You have persistent memory via the agent-working-memory MCP server.
166
166
  - \`confidence_level\`: verified (tested), observed (read in code), assumed (reasoning)
167
167
  - \`intent\`: decision, finding, todo, question, or context
168
168
 
169
+ ### Memory classes (controls how strictly the salience filter gates the write)
170
+ - \`memory_class: canonical\` — source-of-truth memories. Floor 0.7 salience, never staged.
171
+ Use for: user-stated decisions, project requirements, verified architectural facts,
172
+ cross-agent shared context. **In a hive (multi-agent) setup, always use \`canonical\`
173
+ for writes that other agents must be able to recall** — the default \`working\` class
174
+ may get filtered.
175
+ - \`memory_class: working\` (default) — observations and findings. Salience-gated.
176
+ - \`memory_class: ephemeral\` — short-lived context that should decay quickly.
177
+
178
+ ### Salience auto-promotion (defense in depth)
179
+ The salience filter automatically promotes certain content patterns even if you forget
180
+ to set \`memory_class\` explicitly:
181
+ - **User feedback** — content starting with "Robert said…", "Katherine directed…",
182
+ "Nancy decided…" etc. auto-promotes to canonical. So quoting the user verbatim
183
+ always preserves the decision.
184
+ - **Verified operational records** — content with an action verb (Submitted, Finalized,
185
+ Completed, Reconciled, Triaged, Posted, Resolved, Stamped, Pushed, Deployed, Migrated,
186
+ Imported, Exported, Backfilled) plus 2+ concrete identifiers (ISO date \`YYYY-MM-DD\`,
187
+ or contextual numeric IDs like "event 18969", "ticket #18330", "USEF 341980") gets
188
+ a 0.45 salience floor. So batch summaries with real IDs survive even when topic
189
+ terms repeat.
190
+
191
+ If neither pattern applies and you want a memory to definitely survive, set
192
+ \`memory_class: canonical\` explicitly. Don't rely on auto-promotion for important writes.
193
+
169
194
  ### Recall memory when:
195
+ - **BEFORE stating ANY fact about how a system works** — recall first; if AWM doesn't
196
+ have it, read the code. Never guess and present it as fact.
197
+ - **BEFORE searching the filesystem** — recall first; AWM is faster and has cross-session
198
+ knowledge that file search doesn't.
170
199
  - Starting work on a new task or subsystem
171
200
  - Re-entering code you haven't touched recently
172
201
  - After a failed attempt — check if there's prior knowledge
173
202
  - Before refactoring or making architectural changes
174
203
  - When a topic comes up that you might have prior context on
175
204
 
205
+ Recall is fast (~1s typical). Use it freely.
206
+
207
+ ### Keep memory fresh
208
+ - After recalling a memory, if you observe the real state is different → call
209
+ \`memory_supersede\` immediately with the corrected version.
210
+ - After using a recalled memory: call \`memory_feedback\` (useful/not-useful) so the
211
+ activation engine learns what's valuable.
212
+ - If you discover a memory is factually wrong: \`memory_retract\` to remove it.
213
+
176
214
  ### Also:
177
- - After using a recalled memory: call memory_feedback (useful/not-useful) — strengthens useful associations
178
- - To correct wrong info: call memory_retract or memory_supersede
179
215
  - To track work items: memory_task_add, memory_task_update, memory_task_list, memory_task_next
216
+ - AWM is shared across all agents in real time. When any agent writes or supersedes a
217
+ memory, every other agent can recall it immediately.
218
+
219
+ ### Diagnostics / escape hatches (env vars, only if you know why)
220
+ - \`AWM_DISABLE_POOL_FILTER=1\` — disables the candidate pool reduction in recall (added
221
+ in 0.7.7 for ~50% speedup). Reverts to scoring all candidates. Use only if you suspect
222
+ a recall regression and want to A/B test against the pre-0.7.7 path.
180
223
  `.trimStart();
package/src/api/routes.ts CHANGED
@@ -705,7 +705,7 @@ export function registerRoutes(app: FastifyInstance, deps: MemoryDeps): void {
705
705
  const base: Record<string, unknown> = {
706
706
  status: 'ok',
707
707
  timestamp: new Date().toISOString(),
708
- version: '0.7.6',
708
+ version: '0.7.8',
709
709
  coordination: coordEnabled,
710
710
  };
711
711
  if (coordEnabled) {
package/src/cli.ts CHANGED
@@ -334,7 +334,7 @@ async function exportMemories() {
334
334
  const agents = [...new Set(memories.map((m: any) => m.agent_id))];
335
335
 
336
336
  const exportData = {
337
- version: '0.7.6',
337
+ version: '0.7.8',
338
338
  exported_at: new Date().toISOString(),
339
339
  source_db: dbPath,
340
340
  agent_filter: agentFilter,
@@ -293,10 +293,60 @@ export class ActivationEngine {
293
293
  // Floor stddev at 0.10 to prevent z-score inflation with small candidate pools
294
294
  const simStdDev = Math.max(rawStdDev, 0.10);
295
295
 
296
- // Phase 3b: Score each candidate with per-phase breakdown
297
- // Batch-fetch associations for all candidates at once (was N+1, now 1 query)
298
- const associationsByEngram = this.store.getAssociationsForBatch(candidates.map(e => e.id));
299
- const scored = candidates.map(engram => {
296
+ // Phase 3a': Cheap pre-filter deep scoring (with associations + tokenize-content
297
+ // + Hebbian/centrality) only runs for candidates that have a non-trivial signal
298
+ // we can verify cheaply. Anything that fails this filter would score below the
299
+ // relevance gate (textMatch > 0.1) anyway and produce a near-zero composite.
300
+ //
301
+ // Why: phase-breakdown spike (2026-05-08) showed assocBatch over 10K candidates
302
+ // costs 1500ms and represents 68% of recall latency. Most candidates have zero
303
+ // BM25 hit, low cosine similarity, and no concept-jaccard match — so fetching
304
+ // their associations and tokenizing their full content is wasted work.
305
+ //
306
+ // Survival criteria (any one):
307
+ // 1. BM25 hit (bm25Score > 0)
308
+ // 2. Cosine z-score above the gate (would produce non-zero vectorMatch)
309
+ // 3. Concept-token overlap with query (cheap to compute — concept is short)
310
+ //
311
+ // Graph walk preserves correctness: it only boosts neighbors whose own textMatch
312
+ // already passes the relevance floor (0.05-0.1), and any candidate meeting that
313
+ // floor would also pass this filter (they'd have either BM25, cosine, or concept
314
+ // jaccard match). So no graph-walkable target is lost.
315
+ //
316
+ // Disable via AWM_DISABLE_POOL_FILTER=1 (for A/B testing or if a regression appears)
317
+ const poolFilterEnabled = process.env.AWM_DISABLE_POOL_FILTER !== '1';
318
+ let filteredCandidates: Engram[];
319
+ if (poolFilterEnabled) {
320
+ filteredCandidates = [];
321
+ for (const engram of candidates) {
322
+ const bm25 = bm25ScoreMap.get(engram.id) ?? 0;
323
+ if (bm25 > 0) {
324
+ filteredCandidates.push(engram);
325
+ continue;
326
+ }
327
+ const sim = rawCosineSims.get(engram.id);
328
+ if (sim !== undefined) {
329
+ const z = (sim - simMean) / simStdDev;
330
+ if (z > adaptive.zScoreGate) {
331
+ filteredCandidates.push(engram);
332
+ continue;
333
+ }
334
+ }
335
+ // Cheap concept jaccard — concepts are short (typically 3-8 tokens)
336
+ const conceptTokens = tokenize(engram.concept);
337
+ if (conceptTokens.size === 0) continue;
338
+ let conceptOverlap = 0;
339
+ for (const w of conceptTokens) if (queryTokens.has(w)) conceptOverlap++;
340
+ if (conceptOverlap > 0) filteredCandidates.push(engram);
341
+ }
342
+ } else {
343
+ filteredCandidates = candidates;
344
+ }
345
+
346
+ // Phase 3b: Score each filtered candidate with per-phase breakdown
347
+ // Batch-fetch associations only for survivors (was N+1 over 10K, now 1 query over ~200)
348
+ const associationsByEngram = this.store.getAssociationsForBatch(filteredCandidates.map(e => e.id));
349
+ const scored = filteredCandidates.map(engram => {
300
350
  const ageDays = (Date.now() - engram.createdAt.getTime()) / (1000 * 60 * 60 * 24);
301
351
  const associations = associationsByEngram.get(engram.id) ?? [];
302
352
 
package/src/index.ts CHANGED
@@ -177,7 +177,7 @@ async function main() {
177
177
 
178
178
  // Start server
179
179
  await app.listen({ port: PORT, host: '0.0.0.0' });
180
- console.log(`AgentWorkingMemory v0.7.6 listening on port ${PORT}`);
180
+ console.log(`AgentWorkingMemory v0.7.8 listening on port ${PORT}`);
181
181
 
182
182
  // Graceful shutdown
183
183
  const shutdown = async () => {
package/src/mcp.ts CHANGED
@@ -78,7 +78,7 @@ const INCOGNITO = process.env.AWM_INCOGNITO === '1' || process.env.AWM_INCOGNITO
78
78
 
79
79
  if (INCOGNITO) {
80
80
  console.error('AWM: incognito mode — all memory tools disabled, nothing will be recorded');
81
- const server = new McpServer({ name: 'agent-working-memory', version: '0.7.6' });
81
+ const server = new McpServer({ name: 'agent-working-memory', version: '0.7.8' });
82
82
  const transport = new StdioServerTransport();
83
83
  server.connect(transport).catch(err => {
84
84
  console.error('MCP server failed:', err);
@@ -115,7 +115,7 @@ let coordDb: import('better-sqlite3').Database | null = null;
115
115
 
116
116
  const server = new McpServer({
117
117
  name: 'agent-working-memory',
118
- version: '0.7.6',
118
+ version: '0.7.8',
119
119
  });
120
120
 
121
121
  server.registerResource(