agent-working-memory 0.15.6 → 0.15.7

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
@@ -171,10 +171,11 @@ compatible, and the store is the same SQLite file before and after.
171
171
 
172
172
  ---
173
173
 
174
- ## What's new — v0.15.6
174
+ ## What's new — v0.15.7
175
175
 
176
176
  | | |
177
177
  |---|---|
178
+ | **0.15.6–7** | **Data-loss fix.** The default store used to sit inside the installed npm package, where `npm install -g` deletes it on upgrade. It is now `~/.awm/memory.db`; re-running `awm setup` copies an affected store to safety and `awm doctor` fails on it. 0.15.7 corrects the docs that still taught the old location |
178
179
  | **0.15.x** | Runs as a **Claude Code plugin** and a **Claude Desktop extension**, both sharing one store with the CLI. Installs from npm with no GitHub access — `awm plugin` prints the two lines to paste. Every write now records which client produced it (`client=claude-code`) |
179
180
  | **0.14.6** | `awm setup` caught up with four releases of engine changes it had silently fallen behind. Added the release checks that now block on that kind of drift |
180
181
  | **0.14.5** | Benchmark instrument corrected: the eval had been querying as the wrong agent, so a product feature scored as a ranking failure. The real identifier baseline is **92.7%**, not 68% |
@@ -283,18 +284,18 @@ local ONNX via `@huggingface/transformers` — bge-small-en-v1.5 embeddings, ms-
283
284
  flan-t5-small expansion. Node 22+.
284
285
 
285
286
  ```bash
286
- npx vitest run # 781 tests
287
+ npx vitest run # 789 tests
287
288
  npm run bench # benchmark suites
288
289
  npm run build:plugin # regenerate the Claude Code plugin from src/
289
290
  npm run test:docker # clean-room install of the packed tarball
290
- npm run test:linux # build + full suite on Linux (781/781)
291
+ npm run test:linux # build + full suite on Linux (789/789)
291
292
  ```
292
293
 
293
294
  ---
294
295
 
295
296
  ## Status
296
297
 
297
- Active development, v0.15.6. Core retrieval, consolidation, MCP integration, hooks, task
298
+ Active development, v0.15.7. Core retrieval, consolidation, MCP integration, hooks, task
298
299
  management, and the HTTP API are stable and in daily production use. PGlite backend stable;
299
300
  networked Postgres experimental.
300
301
 
package/dist/cli.js CHANGED
@@ -39,50 +39,50 @@ catch { /* No .env file */ }
39
39
  const args = process.argv.slice(2);
40
40
  const command = args[0];
41
41
  function printUsage() {
42
- console.log(`
43
- AgentWorkingMemory — Cognitive memory for AI agents
44
-
45
- Usage:
46
- awm setup [target] [options] Configure AWM for an AI CLI
42
+ console.log(`
43
+ AgentWorkingMemory — Cognitive memory for AI agents
44
+
45
+ Usage:
46
+ awm setup [target] [options] Configure AWM for an AI CLI
47
47
  awm plugin Install as a Claude Code plugin (local, no GitHub)
48
- awm doctor [target|--all] Validate AWM integrations
49
- awm mcp Start MCP server (stdio)
50
- awm serve [--port <port>] Start HTTP API server
51
- awm health [--port <port>] Check server health
52
- awm export --db <path> [--agent <id>] [--output <file>] [--active-only]
53
- Export memories to JSON
54
- awm import <file> --db <path> [--remap-agent <id>] [--dedupe] [--dry-run]
55
- Import memories from JSON
56
- awm merge --target <db> --source <db> [--source ...]
57
- [--remap uuid=name] [--remap-all-uuids <name>]
58
- [--dedupe] [--dry-run] Merge multiple memory DBs
59
- awm migrate --from <sqlite.db> --to <pglite-dir> [--dry-run] [--verbose]
60
- Migrate SQLite DB to PGlite
61
-
62
- Setup targets:
63
- claude-code (default) .mcp.json + CLAUDE.md + hooks
64
- codex ~/.codex/config.toml + AGENTS.md
65
- cursor .cursor/mcp.json + .cursorrules
66
- http Connection info for HTTP API
67
-
68
- Setup options:
69
- --global Use global scope (recommended for claude-code)
70
- --agent-id <id> Agent identifier (default: project name)
71
- --db-path <path> Database path (default: <awm>/data/memory.db)
72
- --no-instructions Skip instruction file (CLAUDE.md, AGENTS.md, etc.)
73
- --no-claude-md Alias for --no-instructions
74
- --no-hooks Skip hook installation
75
- --no-prime Skip the UserPromptSubmit prime hook (auto-inject memories per prompt)
76
- --hook-port PORT Preferred sidecar port (default: 8401; each session walks upward when busy)
77
- --hook-port-range N Ports to try upward from --hook-port (default: 10)
78
- Re-running setup keeps your existing agent id, db path, port and any env you added.
79
-
80
- Examples:
81
- awm setup --global Claude Code, global (recommended)
82
- awm setup codex Codex CLI
83
- awm setup cursor Cursor IDE
84
- awm setup http Generic HTTP integration
85
- awm doctor --all Check all configured targets
48
+ awm doctor [target|--all] Validate AWM integrations
49
+ awm mcp Start MCP server (stdio)
50
+ awm serve [--port <port>] Start HTTP API server
51
+ awm health [--port <port>] Check server health
52
+ awm export --db <path> [--agent <id>] [--output <file>] [--active-only]
53
+ Export memories to JSON
54
+ awm import <file> --db <path> [--remap-agent <id>] [--dedupe] [--dry-run]
55
+ Import memories from JSON
56
+ awm merge --target <db> --source <db> [--source ...]
57
+ [--remap uuid=name] [--remap-all-uuids <name>]
58
+ [--dedupe] [--dry-run] Merge multiple memory DBs
59
+ awm migrate --from <sqlite.db> --to <pglite-dir> [--dry-run] [--verbose]
60
+ Migrate SQLite DB to PGlite
61
+
62
+ Setup targets:
63
+ claude-code (default) .mcp.json + CLAUDE.md + hooks
64
+ codex ~/.codex/config.toml + AGENTS.md
65
+ cursor .cursor/mcp.json + .cursorrules
66
+ http Connection info for HTTP API
67
+
68
+ Setup options:
69
+ --global Use global scope (recommended for claude-code)
70
+ --agent-id <id> Agent identifier (default: project name)
71
+ --db-path <path> Database path (default: ~/.awm/memory.db)
72
+ --no-instructions Skip instruction file (CLAUDE.md, AGENTS.md, etc.)
73
+ --no-claude-md Alias for --no-instructions
74
+ --no-hooks Skip hook installation
75
+ --no-prime Skip the UserPromptSubmit prime hook (auto-inject memories per prompt)
76
+ --hook-port PORT Preferred sidecar port (default: 8401; each session walks upward when busy)
77
+ --hook-port-range N Ports to try upward from --hook-port (default: 10)
78
+ Re-running setup keeps your existing agent id, db path, port and any env you added.
79
+
80
+ Examples:
81
+ awm setup --global Claude Code, global (recommended)
82
+ awm setup codex Codex CLI
83
+ awm setup cursor Cursor IDE
84
+ awm setup http Generic HTTP integration
85
+ awm doctor --all Check all configured targets
86
86
  `.trim());
87
87
  }
88
88
  // ─── SETUP ──────────────────────────────────────
@@ -169,20 +169,20 @@ async function setup() {
169
169
  The file was COPIED, not moved: the original is still there if you want to check it.
170
170
  Once you are satisfied, the old copy can be deleted.`);
171
171
  }
172
- console.log(`
173
- AWM configured for ${adapter.name}${isGlobal ? ' (global)' : ''}
174
-
175
- Agent ID: ${ctx.agentId}
176
- DB path: ${ctx.dbPath}
177
- ${configAction}
178
- ${instructionsAction}
179
- ${hooksAction}
180
- ${skillAction}
181
-
182
- Next steps:
183
- 1. Restart ${adapter.name} to pick up the MCP server
184
- 2. Memory tools will appear automatically${adapter.id === 'codex' ? ' (verify with /mcp)' : ''}
185
- 3. \`awm doctor\` checks the install and lists the live sidecars
172
+ console.log(`
173
+ AWM configured for ${adapter.name}${isGlobal ? ' (global)' : ''}
174
+
175
+ Agent ID: ${ctx.agentId}
176
+ DB path: ${ctx.dbPath}
177
+ ${configAction}
178
+ ${instructionsAction}
179
+ ${hooksAction}
180
+ ${skillAction}
181
+
182
+ Next steps:
183
+ 1. Restart ${adapter.name} to pick up the MCP server
184
+ 2. Memory tools will appear automatically${adapter.id === 'codex' ? ' (verify with /mcp)' : ''}
185
+ 3. \`awm doctor\` checks the install and lists the live sidecars
186
186
  `.trim());
187
187
  }
188
188
  // ─── PLUGIN ──────────────────────────────────────
@@ -683,10 +683,10 @@ async function mergeMemories() {
683
683
  existingHashes.add(contentHash(row.concept, row.content));
684
684
  console.log(`Target has ${existingHashes.size} unique memories (for dedupe)\n`);
685
685
  }
686
- const insertAssoc = targetDb.prepare(`
687
- INSERT OR IGNORE INTO associations (id, from_engram_id, to_engram_id, weight, confidence, type,
688
- activation_count, created_at, last_activated)
689
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
686
+ const insertAssoc = targetDb.prepare(`
687
+ INSERT OR IGNORE INTO associations (id, from_engram_id, to_engram_id, weight, confidence, type,
688
+ activation_count, created_at, last_activated)
689
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
690
690
  `);
691
691
  let totalMemories = 0, totalAssociations = 0, totalSkipped = 0;
692
692
  try {
@@ -899,19 +899,19 @@ function onboardCmd() {
899
899
  if (!agentId)
900
900
  agentId = project;
901
901
  const { packPath, reviewPath, count } = runOnboard({ docs, repo, project, agentId, purpose, outDir });
902
- console.log(`
903
- AWM onboard — warm-start pack for "${project}"
904
-
905
- Scanned: ${docs.join(', ')}${repo ? ` (+repo ${repo})` : ''}
906
- Extracted: ${count} candidate memories (agent: ${agentId})
907
-
908
- Review: ${reviewPath}
909
- Pack: ${packPath}
910
-
911
- Next:
912
- 1. Edit the review file / pack as needed (delete noise, answer the interview questions).
913
- 2. Load it: awm import ${packPath} --db <path> --dedupe
914
- (embeddings backfill on the first consolidation — recall is warm immediately after)
902
+ console.log(`
903
+ AWM onboard — warm-start pack for "${project}"
904
+
905
+ Scanned: ${docs.join(', ')}${repo ? ` (+repo ${repo})` : ''}
906
+ Extracted: ${count} candidate memories (agent: ${agentId})
907
+
908
+ Review: ${reviewPath}
909
+ Pack: ${packPath}
910
+
911
+ Next:
912
+ 1. Edit the review file / pack as needed (delete noise, answer the interview questions).
913
+ 2. Load it: awm import ${packPath} --db <path> --dedupe
914
+ (embeddings backfill on the first consolidation — recall is warm immediately after)
915
915
  `.trimEnd());
916
916
  }
917
917
  // ─── Dispatch ──────────────────────────────────────
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-working-memory",
3
- "version": "0.15.6",
3
+ "version": "0.15.7",
4
4
  "description": "Persistent, local-first memory for AI agents. Selective by design: filters what's worth keeping, links what's related, and says nothing when it doesn't know. SQLite + ONNX, no cloud, no API keys.",
5
5
  "keywords": [
6
6
  "ai-agents",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "awm",
3
3
  "displayName": "Agent Working Memory",
4
- "version": "0.15.6",
4
+ "version": "0.15.7",
5
5
  "description": "Persistent, local-first memory for AI agents. Selective by design: filters what's worth keeping, links what's related, and says nothing when it doesn't know. SQLite + ONNX, no cloud, no API keys.",
6
6
  "author": {
7
7
  "name": "Robert Winter"
package/plugin/README.md CHANGED
@@ -22,7 +22,7 @@ The launcher defaults `AWM_DB_PATH` to `~/.awm/memory.db` — **the same file
22
22
  than quietly starting an empty one. Set `AWM_DB_PATH` yourself to override.
23
23
 
24
24
  It prefers an installed copy of the package (global, or a local `node_modules`) and falls
25
- back to `npx -p agent-working-memory@0.15.6`. The npx path rebuilds
25
+ back to `npx -p agent-working-memory@0.15.7`. The npx path rebuilds
26
26
  `better-sqlite3` on a cold cache, which is slow enough to look like a hang, so a real
27
27
  install is worth having:
28
28
 
@@ -6,7 +6,7 @@
6
6
  //
7
7
  // This is a REAL source file, not a string inside the generator, because it is real code:
8
8
  // it gets syntax-checked, linted and tested like everything else. `npm run build:plugin`
9
- // copies it to plugin/bin/ and substitutes 0.15.6.
9
+ // copies it to plugin/bin/ and substitutes 0.15.7.
10
10
  //
11
11
  // Two jobs a bare `mcpServers` entry in plugin.json cannot do:
12
12
  //
@@ -95,7 +95,7 @@ if (found) {
95
95
  const isWin = process.platform === 'win32';
96
96
  const child = spawn(
97
97
  isWin ? 'npx.cmd' : 'npx',
98
- ['-y', '-p', 'agent-working-memory@0.15.6', 'awm', 'mcp'],
98
+ ['-y', '-p', 'agent-working-memory@0.15.7', 'awm', 'mcp'],
99
99
  { stdio: 'inherit', env: process.env, shell: isWin }
100
100
  );
101
101
  child.on('error', (e) => {
@@ -10,7 +10,7 @@ description: >-
10
10
 
11
11
  # Agent Working Memory
12
12
 
13
- Generated from `src/adapters/common.ts` (AWM v0.15.6) — the same guidance
13
+ Generated from `src/adapters/common.ts` (AWM v0.15.7) — the same guidance
14
14
  `awm setup` writes into CLAUDE.md. Do not edit here; edit the source and re-run
15
15
  `npm run build:plugin`.
16
16