agent-working-memory 0.15.8 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +36 -0
- package/README.md +24 -12
- package/dist/adapters/common.d.ts +1 -1
- package/dist/adapters/common.d.ts.map +1 -1
- package/dist/adapters/common.js +33 -20
- package/dist/adapters/common.js.map +1 -1
- package/dist/core/embeddings.d.ts +1 -1
- package/dist/core/embeddings.js +1 -1
- package/dist/core/entity-extract.js +1 -1
- package/dist/core/query-expander.d.ts +4 -2
- package/dist/core/query-expander.d.ts.map +1 -1
- package/dist/core/query-expander.js +4 -2
- package/dist/core/query-expander.js.map +1 -1
- package/dist/core/recall-config.d.ts +1 -1
- package/dist/core/recall-config.d.ts.map +1 -1
- package/dist/core/recall-config.js +6 -1
- package/dist/core/recall-config.js.map +1 -1
- package/dist/core/recall-telemetry.d.ts +15 -0
- package/dist/core/recall-telemetry.d.ts.map +1 -0
- package/dist/core/recall-telemetry.js +108 -0
- package/dist/core/recall-telemetry.js.map +1 -0
- package/dist/core/rerank-window.d.ts +5 -4
- package/dist/core/rerank-window.d.ts.map +1 -1
- package/dist/core/rerank-window.js +5 -4
- package/dist/core/rerank-window.js.map +1 -1
- package/dist/core/reranker.d.ts +2 -1
- package/dist/core/reranker.d.ts.map +1 -1
- package/dist/core/reranker.js +23 -3
- package/dist/core/reranker.js.map +1 -1
- package/dist/core/salience.js +1 -1
- package/dist/core/salience.js.map +1 -1
- package/dist/core/token-budget.d.ts +2 -2
- package/dist/core/token-budget.js +2 -2
- package/dist/core/whoami.d.ts +1 -1
- package/dist/core/write-pipeline.d.ts.map +1 -1
- package/dist/core/write-pipeline.js +19 -0
- package/dist/core/write-pipeline.js.map +1 -1
- package/dist/engine/activation.d.ts +30 -13
- package/dist/engine/activation.d.ts.map +1 -1
- package/dist/engine/activation.js +159 -50
- package/dist/engine/activation.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +98 -98
- package/dist/mcp.js.map +1 -1
- package/dist/storage/pglite.d.ts +28 -0
- package/dist/storage/pglite.d.ts.map +1 -1
- package/dist/storage/pglite.js +55 -0
- package/dist/storage/pglite.js.map +1 -1
- package/dist/storage/postgres.d.ts +28 -0
- package/dist/storage/postgres.d.ts.map +1 -1
- package/dist/storage/postgres.js +55 -0
- package/dist/storage/postgres.js.map +1 -1
- package/dist/storage/sqlite.d.ts +28 -0
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +56 -0
- package/dist/storage/sqlite.js.map +1 -1
- package/llms.txt +437 -0
- package/package.json +7 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/README.md +1 -1
- package/plugin/bin/awm-mcp-launcher.cjs +2 -2
- package/plugin/skills/awm-memory/SKILL.md +33 -20
- package/src/adapters/common.ts +33 -20
- package/src/core/embeddings.ts +1 -1
- package/src/core/entity-extract.ts +1 -1
- package/src/core/query-expander.ts +4 -2
- package/src/core/recall-config.ts +6 -1
- package/src/core/recall-telemetry.ts +131 -0
- package/src/core/rerank-window.ts +159 -158
- package/src/core/reranker.ts +24 -3
- package/src/core/salience.ts +1 -1
- package/src/core/token-budget.ts +160 -160
- package/src/core/whoami.ts +120 -120
- package/src/core/write-pipeline.ts +36 -18
- package/src/engine/activation.ts +159 -51
- package/src/index.ts +1 -1
- package/src/mcp.ts +1475 -1475
- package/src/storage/pglite.ts +49 -0
- package/src/storage/postgres.ts +49 -0
- package/src/storage/sqlite.ts +51 -0
package/AGENTS.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# awm — Agent Instructions
|
|
2
|
+
|
|
3
|
+
> This file is the short version: when to call which tool. If you are a model
|
|
4
|
+
> and you need to actually understand or install AWM — how retrieval works, the
|
|
5
|
+
> configuration that is not optional, setup per scenario, and what breaks
|
|
6
|
+
> quietly when it is misconfigured — read [`llms.txt`](llms.txt) instead. It is
|
|
7
|
+
> written to be read whole.
|
|
8
|
+
|
|
9
|
+
## Memory (AWM)
|
|
10
|
+
You have persistent memory via the agent-working-memory MCP server.
|
|
11
|
+
|
|
12
|
+
### Lifecycle (always do these)
|
|
13
|
+
- Session start: call memory_restore to recover previous context
|
|
14
|
+
- Starting a task: call memory_task_begin (checkpoints + recalls relevant memories)
|
|
15
|
+
- Finishing a task: call memory_task_end with a summary
|
|
16
|
+
- Auto-checkpoint: hooks handle compaction, session end, and 15-min timer (no action needed)
|
|
17
|
+
|
|
18
|
+
### Write memory when:
|
|
19
|
+
- A project decision is made or changed
|
|
20
|
+
- A root cause is discovered after debugging
|
|
21
|
+
- A reusable implementation pattern is established
|
|
22
|
+
- A user preference, constraint, or requirement is clarified
|
|
23
|
+
- A prior assumption is found to be wrong
|
|
24
|
+
- A significant piece of work is completed
|
|
25
|
+
|
|
26
|
+
### Recall memory when:
|
|
27
|
+
- Starting work on a new task or subsystem
|
|
28
|
+
- Re-entering code you haven't touched recently
|
|
29
|
+
- After a failed attempt — check if there's prior knowledge
|
|
30
|
+
- Before refactoring or making architectural changes
|
|
31
|
+
- When a topic comes up that you might have prior context on
|
|
32
|
+
|
|
33
|
+
### Also:
|
|
34
|
+
- After using a recalled memory: call memory_feedback (useful/not-useful)
|
|
35
|
+
- To correct wrong info: call memory_retract or memory_supersede
|
|
36
|
+
- To track work items: memory_task_add, memory_task_update, memory_task_list, memory_task_next
|
package/README.md
CHANGED
|
@@ -20,20 +20,29 @@ Restart Claude Code. 19 tools appear. No cloud, no API keys, nothing leaves your
|
|
|
20
20
|
<p align="center">
|
|
21
21
|
<a href="https://github.com/CompleteIdeas/agent-working-memory/blob/master/docs/for-decision-makers.md"><b>Deciding whether to adopt it? →</b></a> ·
|
|
22
22
|
<a href="https://github.com/CompleteIdeas/agent-working-memory/blob/master/docs/walkthrough.md"><b>Want the mechanism walked through? →</b></a> ·
|
|
23
|
-
<a href="https://completeideas.github.io/agent-working-memory/"><b>Docs site →</b></a>
|
|
23
|
+
<a href="https://completeideas.github.io/agent-working-memory/"><b>Docs site →</b></a> ·
|
|
24
|
+
<a href="https://github.com/CompleteIdeas/agent-working-memory/blob/master/llms.txt"><b>Are you an LLM? Read llms.txt →</b></a>
|
|
24
25
|
</p>
|
|
25
26
|
|
|
26
27
|
---
|
|
27
28
|
|
|
28
29
|
## What it does, measured
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
Measured against a frozen copy of a **real work store — 29,853 engrams, 11,262 of them
|
|
32
|
+
retrievable**, which is the honest denominator for a retrieval score. Not synthetic data, and
|
|
33
|
+
not a corpus we can publish: it is a real store with real colleagues and real decisions in it,
|
|
34
|
+
so it is gitignored and so is everything derived from it.
|
|
35
|
+
|
|
36
|
+
What you *can* run: **`npm run bench:public`** scores the same runner through the same
|
|
37
|
+
ground-truth derivation against a synthetic corpus you rebuild yourself. It verifies the method,
|
|
38
|
+
not the figures — a synthetic corpus scores lower. Current numbers, stamped with the commit that
|
|
39
|
+
produced them, are in [`docs/benchmarks-current.md`](docs/benchmarks-current.md); every claim
|
|
40
|
+
below, what produced it, and **who can reproduce it** is in [`docs/claims.md`](docs/claims.md),
|
|
41
|
+
including the ones we think are weakest.
|
|
33
42
|
|
|
34
43
|
| | |
|
|
35
44
|
|---|---|
|
|
36
|
-
| **Returns the right memory first** | **
|
|
45
|
+
| **Returns the right memory first** | **93.0%** of identifier queries · **92.2%** of topic queries · **97.0%** in the top five |
|
|
37
46
|
| **Stays silent when it should** | **90.0%** correct abstention on questions about facts never stored |
|
|
38
47
|
| **Costs the same at any scale** | Scoped recall answers in **~630 tokens flat**. Carrying the store instead: ~1.3M tokens |
|
|
39
48
|
| **Lets a cheap model punch up** | Small model + AWM beat a frontier model on a 15-task domain workload: **14/15 vs 7/15**, at ~1/40th the cost |
|
|
@@ -97,8 +106,9 @@ trade-offs are in [`docs/plugin.md`](docs/plugin.md). Install the npm package ei
|
|
|
97
106
|
|
|
98
107
|
Requires **Node.js 22+**. Restart Claude Code.
|
|
99
108
|
|
|
100
|
-
**What to expect.** The first conversation
|
|
101
|
-
|
|
109
|
+
**What to expect.** The first conversation takes minutes rather than seconds while three ONNX
|
|
110
|
+
models download — **~600 MB** once, into a local cache (134 MB embedder + 92 MB reranker + 377 MB
|
|
111
|
+
query expander; nothing is bundled in the package). After that the agent has 19 memory tools, and the hooks save state on compaction
|
|
102
112
|
and session end without you doing anything. For the first day or two recall will be thin — it only
|
|
103
113
|
knows what has been written. That is the normal shape of it, not a fault.
|
|
104
114
|
|
|
@@ -171,10 +181,12 @@ compatible, and the store is the same SQLite file before and after.
|
|
|
171
181
|
|
|
172
182
|
---
|
|
173
183
|
|
|
174
|
-
## What's new — v0.
|
|
184
|
+
## What's new — v0.16.0
|
|
175
185
|
|
|
176
186
|
| | |
|
|
177
187
|
|---|---|
|
|
188
|
+
| **0.16.0** | Two recall defaults changed, each after being measured for the first time. A pseudo-relevance feedback pass that ran on **every** query is now opt-in — it cost 7% of every recall and bought nothing measurable across 950 probes. A reranker shortcut that had never once fired on any store benchmarked here is deleted; forced on, it cost success@1 93.0% → 91.7%. Identifier recall is now **93.0%** success@1 / **97.0%** success@5. Re-run `awm setup` for the corrected agent guidance |
|
|
189
|
+
| **0.15.9** | A memory that consolidation archived as a near-duplicate — even at high confidence — could never be reinforced again, so the same recurring fact kept spawning new copies instead of strengthening one. An archived match is now revived on reinforcement |
|
|
178
190
|
| **0.15.6–8** | **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 |
|
|
179
191
|
| **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`) |
|
|
180
192
|
| **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 |
|
|
@@ -268,7 +280,7 @@ The README points outward; it does not duplicate. Everything below is the author
|
|
|
268
280
|
|
|
269
281
|
| | |
|
|
270
282
|
|---|---|
|
|
271
|
-
| **All 19 MCP tools**,
|
|
283
|
+
| **All 19 MCP tools**, most HTTP endpoints with schemas (21 of 28 — the batch-write, checkpoint, export, agent-register and system routes are not yet written up), every environment variable with its measured effect | [`docs/reference.md`](docs/reference.md) |
|
|
272
284
|
| Architecture, pipelines, schema, backends (SQLite · PGlite · Postgres) | [`docs/architecture.md`](docs/architecture.md) · [`docs/pglite-feature-parity.md`](docs/pglite-feature-parity.md) |
|
|
273
285
|
| Current benchmark numbers, generated and stamped | [`docs/benchmarks-current.md`](docs/benchmarks-current.md) |
|
|
274
286
|
| What each eval suite measures, and the measurement caveats | [`docs/benchmarks.md`](docs/benchmarks.md) |
|
|
@@ -284,18 +296,18 @@ local ONNX via `@huggingface/transformers` — bge-small-en-v1.5 embeddings, ms-
|
|
|
284
296
|
flan-t5-small expansion. Node 22+.
|
|
285
297
|
|
|
286
298
|
```bash
|
|
287
|
-
npx vitest run #
|
|
299
|
+
npx vitest run # 802 tests
|
|
288
300
|
npm run bench # benchmark suites
|
|
289
301
|
npm run build:plugin # regenerate the Claude Code plugin from src/
|
|
290
302
|
npm run test:docker # clean-room install of the packed tarball
|
|
291
|
-
npm run test:linux # build + full suite on Linux (
|
|
303
|
+
npm run test:linux # build + full suite on Linux (802/802)
|
|
292
304
|
```
|
|
293
305
|
|
|
294
306
|
---
|
|
295
307
|
|
|
296
308
|
## Status
|
|
297
309
|
|
|
298
|
-
Active development, v0.
|
|
310
|
+
Active development, v0.16.0. Core retrieval, consolidation, MCP integration, hooks, task
|
|
299
311
|
management, and the HTTP API are stable and in daily production use. PGlite backend stable;
|
|
300
312
|
networked Postgres experimental.
|
|
301
313
|
|
|
@@ -25,7 +25,7 @@ export declare function resolveHookSecret(dbPath: string): string;
|
|
|
25
25
|
* Retrieval settings `awm setup` turns on for a new install (0.14.6).
|
|
26
26
|
*
|
|
27
27
|
* All three ship default-off in the engine so an existing process never changes
|
|
28
|
-
*
|
|
28
|
+
* behavior on upgrade, but the README has recommended them together since 0.14.0:
|
|
29
29
|
* second-stage rerank by the cross-encoder's own score, a 400-char rerank window
|
|
30
30
|
* on the densest query-term region (25% → 87.5% on long memories), and tags in the
|
|
31
31
|
* rerank passage (+7.4pp). A value the user already has in their config wins.
|
|
@@ -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;AAM/C,gEAAgE;AAChE,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAED,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;;;;;;;;;;GAcG;AACH,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;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI5D,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,cAAc,mHAAoH,CAAC;AAEhJ;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,OAAO,EAClB,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/F,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAkBA;AAED;;;;;;;;;;;GAWG;AACH,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,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC5C,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,YAAY,CA2Df;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAID;;;GAGG;AACH;;;;;;;;;;;;;GAaG;AACH;;iEAEiE;AACjE,eAAO,MAAM,aAAa,QAEsD,CAAC;AACjF,eAAO,MAAM,WAAW,+BAA+B,CAAC;AAOxD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACtE,MAAM,CAkFR;AAED,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/adapters/common.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,gEAAgE;AAChE,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAED,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;;;;;;;;;;GAcG;AACH,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;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI5D,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,cAAc,mHAAoH,CAAC;AAEhJ;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,OAAO,EAClB,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/F,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAkBA;AAED;;;;;;;;;;;GAWG;AACH,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,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC5C,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,YAAY,CA2Df;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAID;;;GAGG;AACH;;;;;;;;;;;;;GAaG;AACH;;iEAEiE;AACjE,eAAO,MAAM,aAAa,QAEsD,CAAC;AACjF,eAAO,MAAM,WAAW,+BAA+B,CAAC;AAOxD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACtE,MAAM,CAkFR;AAED,eAAO,MAAM,uBAAuB,QA2bvB,CAAC"}
|
package/dist/adapters/common.js
CHANGED
|
@@ -63,7 +63,7 @@ export function resolveHookSecret(dbPath) {
|
|
|
63
63
|
* Retrieval settings `awm setup` turns on for a new install (0.14.6).
|
|
64
64
|
*
|
|
65
65
|
* All three ship default-off in the engine so an existing process never changes
|
|
66
|
-
*
|
|
66
|
+
* behavior on upgrade, but the README has recommended them together since 0.14.0:
|
|
67
67
|
* second-stage rerank by the cross-encoder's own score, a 400-char rerank window
|
|
68
68
|
* on the densest query-term region (25% → 87.5% on long memories), and tags in the
|
|
69
69
|
* rerank passage (+7.4pp). A value the user already has in their config wins.
|
|
@@ -327,9 +327,11 @@ you write them; AWM stays current because every agent reads + writes the same st
|
|
|
327
327
|
than one filesystem search.
|
|
328
328
|
4. **As you learn things**: call \`memory_write\` proactively. Don't batch.
|
|
329
329
|
5. **Finishing a task**: call \`memory_task_end\` with a summary.
|
|
330
|
-
6. **Hooks do the rest.** \`awm setup\` installs
|
|
331
|
-
each prompt and injects what clears confidence (or nothing),
|
|
332
|
-
compaction and session end (plus a 15-min timer)
|
|
330
|
+
6. **Hooks do the rest.** \`awm setup\` installs five: a **prime** hook that recalls against
|
|
331
|
+
each prompt and injects what clears confidence (or nothing), checkpoint hooks on
|
|
332
|
+
compaction and session end (plus a 15-min timer), a local write/recall reminder on
|
|
333
|
+
Stop, and a reminder after Bash/PowerShell calls that a data change is not done
|
|
334
|
+
until it is written. Primed context arrives labeled
|
|
333
335
|
\`[class · age]\` — treat it by the volatility rubric, not as user input. If a turn
|
|
334
336
|
arrives with no primed context, that is a signal too: recall explicitly before
|
|
335
337
|
asserting anything.
|
|
@@ -357,9 +359,9 @@ extraction all see most strongly.
|
|
|
357
359
|
a noisy bucket where it competes with everything else in the area.
|
|
358
360
|
- **Include 2+ retrievable identifiers.** File paths, function names, table
|
|
359
361
|
columns, ticket IDs, exact error strings, the literal terms a future query
|
|
360
|
-
will use. \`
|
|
362
|
+
will use. \`SettlementService.closeRun()\` beats "the accounting code."
|
|
361
363
|
\`tblMemberDetails.activation_date\` beats "the activation column."
|
|
362
|
-
\`schema/072-
|
|
364
|
+
\`schema/072-settlement-lock.sql\` beats "the migration."
|
|
363
365
|
- **Write in the vocabulary of the future question.** When you imagine asking
|
|
364
366
|
this in three months, what nouns will you use? Use those nouns. Don't
|
|
365
367
|
paraphrase the user's domain language into your own neutral summary.
|
|
@@ -376,12 +378,14 @@ extraction all see most strongly.
|
|
|
376
378
|
Measured on an 11k-engram store: 94% of tagged memories are missing at
|
|
377
379
|
least one of their own topical terms from the body, and 66% of those
|
|
378
380
|
terms never appear in the text at all.
|
|
379
|
-
- **Tags are NOT a substitute for body text.**
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
381
|
+
- **Tags are NOT a substitute for body text.** The embedding is built from
|
|
382
|
+
\`concept + content\` only, so it never sees tags. BM25 indexes them. The
|
|
383
|
+
cross-encoder rerank passage sees ONLY \`topic=\`/\`proj=\`/\`project=\` tags, and
|
|
384
|
+
only when \`AWM_RERANK_TAGS=1\` — which \`awm setup\`, the plugin and the Desktop
|
|
385
|
+
bundle all switch on, so assume it is on — capped at 80 characters. So a word
|
|
386
|
+
that exists only as a tag is invisible to the embedding entirely, and
|
|
387
|
+
invisible to the ranker unless it is one of those three prefixes inside that
|
|
388
|
+
budget. Tag it *and* write it.
|
|
385
389
|
- **Reserve canonical for stable invariants.** Decisions, requirements,
|
|
386
390
|
hard facts, cross-agent shared context. Working class (default) is correct
|
|
387
391
|
for findings, observations, and progress notes. The canonical floor is
|
|
@@ -398,6 +402,10 @@ Every \`memory_write\` should pass these structured fields. AWM stores each as a
|
|
|
398
402
|
prefix-tag like \`proj=\`, \`topic=\`, \`intent=\`, etc. and uses them for BM25
|
|
399
403
|
and entity-bridge boosts at recall time.
|
|
400
404
|
|
|
405
|
+
(“Required” below means *required for good recall* — the MCP schema accepts every
|
|
406
|
+
one of these as optional, so a write without them succeeds and simply retrieves
|
|
407
|
+
worse.)
|
|
408
|
+
|
|
401
409
|
| Field | Required? | Format | Example |
|
|
402
410
|
|---|---|---|---|
|
|
403
411
|
| \`project\` | **YES** | one short word matching the current project | \`"EquiHub"\`, \`"AWM"\`, \`"USEA-Agent"\` |
|
|
@@ -407,12 +415,12 @@ and entity-bridge boosts at recall time.
|
|
|
407
415
|
| \`source\` | recommended | \`code-reading\` / \`debugging\` / \`discussion\` / \`research\` / \`testing\` / \`observation\` | \`"testing"\` |
|
|
408
416
|
| \`memory_class\` | when stable | \`canonical\` (source-of-truth, 0.7 floor, never staged) / \`working\` (default) / \`ephemeral\` | \`"canonical"\` |
|
|
409
417
|
| \`session_id\` | recommended | current conversation ID for entity-bridge boost | autogenerated |
|
|
410
|
-
| \`tags\` | when applicable | extra prefix-tags for IDs and dates | \`["ticket=
|
|
418
|
+
| \`tags\` | when applicable | extra prefix-tags for IDs and dates | \`["ticket=10001", "date=2026-05-11"]\` |
|
|
411
419
|
|
|
412
420
|
**Always add identifier tags when present in the content:**
|
|
413
421
|
- \`ticket=<id>\` for Freshdesk tickets
|
|
414
422
|
- \`member=<id>\` for member IDs
|
|
415
|
-
- \`
|
|
423
|
+
- \`asset=<id>\` for a domain record id
|
|
416
424
|
- \`usef=<id>\` for USEF lookups
|
|
417
425
|
- \`date=YYYY-MM-DD\` for temporal anchoring (ISO format)
|
|
418
426
|
- \`person=<Name>\` for stakeholder quotes / decisions
|
|
@@ -421,7 +429,7 @@ and entity-bridge boosts at recall time.
|
|
|
421
429
|
### Entity index — exact-match recall for named things (default off)
|
|
422
430
|
Structured identifier tags (\`ticket=\`, \`person=\`, \`horse=\`, \`member=\`, bare 4+ digit
|
|
423
431
|
ids, etc.) feed a dedicated entity inverted index, separate from BM25/embedding scoring.
|
|
424
|
-
A query naming an entity ("ticket
|
|
432
|
+
A query naming an entity ("ticket 10003", "Dana Whitfield") can reach the memory through
|
|
425
433
|
this index even when the wording doesn't lexically match — it's a deterministic exact
|
|
426
434
|
lookup, immune to vocabulary mismatch. Keep identifier tags exact and consistent for
|
|
427
435
|
this reason, not just for the BM25 boost described above.
|
|
@@ -621,14 +629,14 @@ memory_write(
|
|
|
621
629
|
\`\`\`
|
|
622
630
|
memory_write(
|
|
623
631
|
concept="EquiHub period-close BLOCKED check missing server-side",
|
|
624
|
-
content="apps/web/app/(
|
|
632
|
+
content="apps/web/app/(billing)/billing/settlement-lock/page.tsx had client-only BLOCKED enforcement. Fixed by adding server-side check in SettlementService.closeRun() per schema/072-settlement-lock.sql. Without server-side check a malicious request could bypass via direct API call.",
|
|
625
633
|
project="EquiHub",
|
|
626
634
|
topic="accounting",
|
|
627
635
|
intent="finding",
|
|
628
636
|
confidence_level="verified",
|
|
629
637
|
source="debugging",
|
|
630
638
|
memory_class="canonical",
|
|
631
|
-
tags=["ticket=
|
|
639
|
+
tags=["ticket=10001", "person=Robert", "date=2026-05-11", "topic=period-close", "topic=security"]
|
|
632
640
|
)
|
|
633
641
|
\`\`\`
|
|
634
642
|
|
|
@@ -676,7 +684,7 @@ For the comparison table (recall quality parity, BM25 vs \`ts_rank_cd\`,
|
|
|
676
684
|
multi-process guarantees), see \`docs/pglite-feature-parity.md\`.
|
|
677
685
|
|
|
678
686
|
### Diagnostics / escape hatches (env vars, only if you know why)
|
|
679
|
-
Each
|
|
687
|
+
Each optimization is gated by an env var so it can be disabled for A/B testing if a
|
|
680
688
|
regression appears in your workload. \`memory_whoami\` prints the active fingerprint.
|
|
681
689
|
|
|
682
690
|
Retrieval (set ON by \`awm setup\` since 0.14.6 — the measured-good configuration):
|
|
@@ -698,8 +706,13 @@ Recall pipeline:
|
|
|
698
706
|
no effect on the real-store benchmark, 0.14.5).
|
|
699
707
|
- \`AWM_DISABLE_SLIM_CACHE=1\` — disables the in-memory slim cache.
|
|
700
708
|
Reverts to per-recall SQL fetch + Buffer→Float32Array conversion.
|
|
701
|
-
- \`
|
|
702
|
-
|
|
709
|
+
- \`AWM_FEEDBACK_BM25=1\` — re-enables Rocchio pseudo-relevance feedback
|
|
710
|
+
(phase 3.5), a third BM25 pass over the query plus five terms harvested from
|
|
711
|
+
the top 3 results. Default OFF since 2026-10-09: measured at 6.7–7.0% of every
|
|
712
|
+
warm recall for no measurable accuracy — 3 gold ranks moved in 950 queries
|
|
713
|
+
across three suites, two of them the wrong way. On the public corpus — the only
|
|
714
|
+
suite with recall headroom left — it is inert per query, not just in aggregate:
|
|
715
|
+
0 of 200 queries differ in rank, top-1 or score.
|
|
703
716
|
- \`AWM_DISABLE_EXPANSION_CACHE=1\` — disables the query expansion skip
|
|
704
717
|
heuristic + LRU cache. Forces every recall through flan-t5-small.
|
|
705
718
|
|
|
@@ -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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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Embedding Engine - vector embeddings via the ML worker pool.
|
|
3
3
|
*
|
|
4
|
-
* Default model: bge-small-en-v1.5 (384 dimensions,
|
|
4
|
+
* Default model: bge-small-en-v1.5 (384 dimensions, 133MB ONNX, MTEB retrieval-optimized).
|
|
5
5
|
* Configurable via AWM_EMBED_MODEL env var.
|
|
6
6
|
*
|
|
7
7
|
* AWM 0.8.x: inference dispatches through ml-worker.ts. The worker_threads
|
package/dist/core/embeddings.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* Embedding Engine - vector embeddings via the ML worker pool.
|
|
5
5
|
*
|
|
6
|
-
* Default model: bge-small-en-v1.5 (384 dimensions,
|
|
6
|
+
* Default model: bge-small-en-v1.5 (384 dimensions, 133MB ONNX, MTEB retrieval-optimized).
|
|
7
7
|
* Configurable via AWM_EMBED_MODEL env var.
|
|
8
8
|
*
|
|
9
9
|
* AWM 0.8.x: inference dispatches through ml-worker.ts. The worker_threads
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Entity extraction for the entity inverted index (D9, 2026-07-30).
|
|
5
5
|
*
|
|
6
6
|
* v1 is deliberately conservative for precision: entities come ONLY from
|
|
7
|
-
* structured sources — prefix tags (`person=
|
|
7
|
+
* structured sources — prefix tags (`person=Avery`, `ticket=10002`) and
|
|
8
8
|
* auto-tagger `entity:` tags — never from free-text guessing. Each entity is
|
|
9
9
|
* normalized to `key:value` lowercase so lookups are exact.
|
|
10
10
|
*
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Query Expander - rewrites queries with synonyms and related terms.
|
|
3
3
|
*
|
|
4
|
-
* Uses Xenova/flan-t5-small
|
|
5
|
-
*
|
|
4
|
+
* Uses Xenova/flan-t5-small — a 141MB encoder plus a 233MB merged decoder, so
|
|
5
|
+
* 374MB of ONNX and a 377MB download with its tokenizer. By far the largest of
|
|
6
|
+
* the three models AWM fetches. Expands search queries with related terms that
|
|
7
|
+
* improve BM25 recall.
|
|
6
8
|
*
|
|
7
9
|
* AWM 0.8.x: inference dispatches through ml-worker.ts (currently in-process
|
|
8
10
|
* — worker_threads reverted because onnxruntime-node bindings cross isolate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-expander.d.ts","sourceRoot":"","sources":["../../src/core/query-expander.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"query-expander.d.ts","sourceRoot":"","sources":["../../src/core/query-expander.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAY,KAAK,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAqCvF,iCAAiC;AACjC,wBAAsB,WAAW,IAAI,OAAO,CAAC,2BAA2B,CAAC,CAExE;AAmBD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCxE;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* Query Expander - rewrites queries with synonyms and related terms.
|
|
5
5
|
*
|
|
6
|
-
* Uses Xenova/flan-t5-small
|
|
7
|
-
*
|
|
6
|
+
* Uses Xenova/flan-t5-small — a 141MB encoder plus a 233MB merged decoder, so
|
|
7
|
+
* 374MB of ONNX and a 377MB download with its tokenizer. By far the largest of
|
|
8
|
+
* the three models AWM fetches. Expands search queries with related terms that
|
|
9
|
+
* improve BM25 recall.
|
|
8
10
|
*
|
|
9
11
|
* AWM 0.8.x: inference dispatches through ml-worker.ts (currently in-process
|
|
10
12
|
* — worker_threads reverted because onnxruntime-node bindings cross isolate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-expander.js","sourceRoot":"","sources":["../../src/core/query-expander.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,sCAAsC;AACtC
|
|
1
|
+
{"version":3,"file":"query-expander.js","sourceRoot":"","sources":["../../src/core/query-expander.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
* Every environment flag that can change what `activate()` returns.
|
|
29
29
|
* Keep this list current — an unlisted flag is an invisible experiment.
|
|
30
30
|
*/
|
|
31
|
-
export declare const RECALL_FLAGS: readonly ["AWM_RERANK2", "AWM_RERANK2_K", "AWM_RERANK_WINDOW", "AWM_RERANK_TRUNC", "AWM_RERANK_POOL", "AWM_RERANK_TAGS", "AWM_RERANK_TAGS_LEN", "AWM_RETRIEVAL_TEXT", "AWM_ALIASES", "AWM_ALIAS_QUERY_CAP", "AWM_EMBED_MODEL", "AWM_EMBED_DIMS", "
|
|
31
|
+
export declare const RECALL_FLAGS: readonly ["AWM_RERANK2", "AWM_RERANK2_K", "AWM_RERANK_WINDOW", "AWM_RERANK_TRUNC", "AWM_RERANK_POOL", "AWM_RERANK_TAGS", "AWM_RERANK_TAGS_LEN", "AWM_RERANKER_DTYPE", "AWM_RETRIEVAL_TEXT", "AWM_ALIASES", "AWM_ALIAS_QUERY_CAP", "AWM_EMBED_MODEL", "AWM_EMBED_DIMS", "AWM_FEEDBACK_BM25", "AWM_SPREAD", "AWM_SPREAD_INJECT", "AWM_SPREAD_INHIBIT", "AWM_SPREAD_ITERS", "AWM_SPREAD_DAMPING", "AWM_SPREAD_BUDGET", "AWM_SPREAD_BOOST", "AWM_TOPN_MULT", "AWM_BROAD_EDGES", "AWM_ENTITY_FETCH", "AWM_ENTITY_INDEX_FETCH", "AWM_QUERY_BRIDGE", "AWM_AUTOTAG", "AWM_DISABLE_POOL_FILTER", "AWM_DISABLE_EXPANSION_CACHE", "AWM_DISABLE_SLIM_CACHE", "AWM_ABSTAIN_GATE_K"];
|
|
32
32
|
export type RecallFlag = (typeof RECALL_FLAGS)[number];
|
|
33
33
|
/** Only the flags actually set, in declaration order. */
|
|
34
34
|
export declare function activeRecallConfig(env?: NodeJS.ProcessEnv): Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall-config.d.ts","sourceRoot":"","sources":["../../src/core/recall-config.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;GAGG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"recall-config.d.ts","sourceRoot":"","sources":["../../src/core/recall-config.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;GAGG;AACH,eAAO,MAAM,YAAY,woBA4Cf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,yDAAyD;AACzD,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO/F;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAKpF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CAOvE"}
|
|
@@ -40,6 +40,10 @@ export const RECALL_FLAGS = [
|
|
|
40
40
|
'AWM_RERANK_POOL',
|
|
41
41
|
'AWM_RERANK_TAGS',
|
|
42
42
|
'AWM_RERANK_TAGS_LEN',
|
|
43
|
+
// Cross-encoder precision — changes every reranker score, so it changes order.
|
|
44
|
+
// Omitted until 2026-10-09, during which both arms of a dtype sweep printed the
|
|
45
|
+
// SAME arm= label; the whole point of this list is that that cannot happen.
|
|
46
|
+
'AWM_RERANKER_DTYPE',
|
|
43
47
|
// Derived retrieval text (embedding side)
|
|
44
48
|
'AWM_RETRIEVAL_TEXT',
|
|
45
49
|
// Project-dialect alias expansion
|
|
@@ -48,7 +52,8 @@ export const RECALL_FLAGS = [
|
|
|
48
52
|
// Embedding model — changes every stored vector, so it belongs here
|
|
49
53
|
'AWM_EMBED_MODEL',
|
|
50
54
|
'AWM_EMBED_DIMS',
|
|
51
|
-
|
|
55
|
+
// Rocchio pseudo-relevance feedback (phase 3.5)
|
|
56
|
+
'AWM_FEEDBACK_BM25',
|
|
52
57
|
// Spreading activation (D11 — parked)
|
|
53
58
|
'AWM_SPREAD',
|
|
54
59
|
'AWM_SPREAD_INJECT',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall-config.js","sourceRoot":"","sources":["../../src/core/recall-config.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,sCAAsC;AACtC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,kCAAkC;IAClC,aAAa;IACb,eAAe;IACf,kCAAkC;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,iBAAiB;IACjB,qBAAqB;IACrB,0CAA0C;IAC1C,oBAAoB;IACpB,kCAAkC;IAClC,aAAa;IACb,qBAAqB;IACrB,oEAAoE;IACpE,iBAAiB;IACjB,gBAAgB;IAChB,
|
|
1
|
+
{"version":3,"file":"recall-config.js","sourceRoot":"","sources":["../../src/core/recall-config.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,sCAAsC;AACtC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,kCAAkC;IAClC,aAAa;IACb,eAAe;IACf,kCAAkC;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,iBAAiB;IACjB,qBAAqB;IACrB,+EAA+E;IAC/E,gFAAgF;IAChF,4EAA4E;IAC5E,oBAAoB;IACpB,0CAA0C;IAC1C,oBAAoB;IACpB,kCAAkC;IAClC,aAAa;IACb,qBAAqB;IACrB,oEAAoE;IACpE,iBAAiB;IACjB,gBAAgB;IAChB,gDAAgD;IAChD,mBAAmB;IACnB,sCAAsC;IACtC,YAAY;IACZ,mBAAmB;IACnB,oBAAoB;IACpB,kBAAkB;IAClB,oBAAoB;IACpB,mBAAmB;IACnB,kBAAkB;IAClB,qCAAqC;IACrC,eAAe;IACf,iBAAiB;IACjB,kBAAkB;IAClB,wBAAwB;IACxB,kBAAkB;IAClB,aAAa;IACb,+CAA+C;IAC/C,yBAAyB;IACzB,6BAA6B;IAC7B,wBAAwB;IACxB,oBAAoB;CACZ,CAAC;AAIX,yDAAyD;AACzD,MAAM,UAAU,kBAAkB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACrE,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC1E,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAgC,EAChC,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,GAAG,GAA0E,EAAE,CAAC;IACtF,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface RecallProfiler {
|
|
2
|
+
/** Open a span. Nesting a span inside another breaks `unaccounted`. */
|
|
3
|
+
begin(label: string): void;
|
|
4
|
+
/** Close the most recent span with this label, accumulating its duration. */
|
|
5
|
+
end(label: string): void;
|
|
6
|
+
/** Record a scalar fact about this recall (pool size, counts, flags). */
|
|
7
|
+
note(key: string, value: number | string | boolean): void;
|
|
8
|
+
/** Emit the record. Safe to call once; later calls are ignored. */
|
|
9
|
+
finish(meta?: Record<string, number | string | boolean>): void;
|
|
10
|
+
}
|
|
11
|
+
/** One profiler per `activate()` call, or a shared no-op when disabled. */
|
|
12
|
+
export declare function startRecallProfile(): RecallProfiler;
|
|
13
|
+
/** Whether recall profiling is active — for callers that want to skip setup work. */
|
|
14
|
+
export declare function recallProfileEnabled(): boolean;
|
|
15
|
+
//# sourceMappingURL=recall-telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall-telemetry.d.ts","sourceRoot":"","sources":["../../src/core/recall-telemetry.ts"],"names":[],"mappings":"AA6CA,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6EAA6E;IAC7E,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yEAAyE;IACzE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IAC1D,mEAAmE;IACnE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;CAChE;AAoED,2EAA2E;AAC3E,wBAAgB,kBAAkB,IAAI,cAAc,CAEnD;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// Copyright 2026 Robert Winter / Complete Ideas
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
/**
|
|
4
|
+
* Recall-path telemetry — per-stage wall time for one `activate()` call.
|
|
5
|
+
*
|
|
6
|
+
* WHY THIS EXISTS
|
|
7
|
+
* ---------------
|
|
8
|
+
* The write path has had phase telemetry since D1 (`write-telemetry.ts`), but
|
|
9
|
+
* the READ path — the hot one, the one every latency claim in the docs is
|
|
10
|
+
* about — had only a single total. Every attribution of that total was
|
|
11
|
+
* therefore a reading of the code rather than a measurement, and two comments
|
|
12
|
+
* in this repository assert "the reranker is ~90% of warm recall latency"
|
|
13
|
+
* citing nothing but each other. This module exists so that number can be
|
|
14
|
+
* checked, and so a reviewer can check it too.
|
|
15
|
+
*
|
|
16
|
+
* USE
|
|
17
|
+
* ---
|
|
18
|
+
* AWM_PROFILE_RECALL=1 one stderr line per recall
|
|
19
|
+
* AWM_PROFILE_RECALL_OUT=path.jsonl append one JSON object per recall
|
|
20
|
+
*
|
|
21
|
+
* Both unset ⇒ `startRecallProfile()` returns a shared no-op and the only
|
|
22
|
+
* cost on the hot path is a handful of empty method calls.
|
|
23
|
+
*
|
|
24
|
+
* DESIGN
|
|
25
|
+
* ------
|
|
26
|
+
* Labels are FLAT and must not overlap: each `begin`/`end` pair measures a
|
|
27
|
+
* span that no other pair contains. That is what makes `unaccounted`
|
|
28
|
+
* (total minus the sum of all spans) meaningful — it is the synchronous
|
|
29
|
+
* JavaScript that no stage claims, and if it is large that is itself the
|
|
30
|
+
* finding. Repeated labels accumulate, so a per-agent loop can reuse one.
|
|
31
|
+
*
|
|
32
|
+
* Additive module: nothing here changes an existing export or code path.
|
|
33
|
+
*
|
|
34
|
+
* `node:fs` is imported statically. A lazy `require()` here was silently dead:
|
|
35
|
+
* this package is ESM, `require` is not defined, and the throw landed in the
|
|
36
|
+
* catch that exists so profiling can never break a recall — so the first run
|
|
37
|
+
* produced an empty capture and an honest-looking zero.
|
|
38
|
+
*/
|
|
39
|
+
import { appendFileSync } from 'node:fs';
|
|
40
|
+
const STDERR = process.env.AWM_PROFILE_RECALL === '1';
|
|
41
|
+
const OUT = process.env.AWM_PROFILE_RECALL_OUT || '';
|
|
42
|
+
const ON = STDERR || !!OUT;
|
|
43
|
+
const NOOP = {
|
|
44
|
+
begin() { }, end() { }, note() { }, finish() { },
|
|
45
|
+
};
|
|
46
|
+
class Profiler {
|
|
47
|
+
t0 = performance.now();
|
|
48
|
+
open = new Map();
|
|
49
|
+
sums = new Map();
|
|
50
|
+
calls = new Map();
|
|
51
|
+
notes = {};
|
|
52
|
+
done = false;
|
|
53
|
+
begin(label) {
|
|
54
|
+
this.open.set(label, performance.now());
|
|
55
|
+
}
|
|
56
|
+
end(label) {
|
|
57
|
+
const started = this.open.get(label);
|
|
58
|
+
if (started === undefined)
|
|
59
|
+
return; // unbalanced end — ignore, never throw
|
|
60
|
+
this.open.delete(label);
|
|
61
|
+
const ms = performance.now() - started;
|
|
62
|
+
this.sums.set(label, (this.sums.get(label) ?? 0) + ms);
|
|
63
|
+
this.calls.set(label, (this.calls.get(label) ?? 0) + 1);
|
|
64
|
+
}
|
|
65
|
+
note(key, value) {
|
|
66
|
+
this.notes[key] = value;
|
|
67
|
+
}
|
|
68
|
+
finish(meta = {}) {
|
|
69
|
+
if (this.done)
|
|
70
|
+
return;
|
|
71
|
+
this.done = true;
|
|
72
|
+
const totalMs = performance.now() - this.t0;
|
|
73
|
+
const stages = {};
|
|
74
|
+
let accounted = 0;
|
|
75
|
+
for (const [label, ms] of this.sums) {
|
|
76
|
+
stages[label] = Math.round(ms * 100) / 100;
|
|
77
|
+
accounted += ms;
|
|
78
|
+
}
|
|
79
|
+
const record = {
|
|
80
|
+
totalMs: Math.round(totalMs * 100) / 100,
|
|
81
|
+
unaccountedMs: Math.round((totalMs - accounted) * 100) / 100,
|
|
82
|
+
stages,
|
|
83
|
+
calls: Object.fromEntries(this.calls),
|
|
84
|
+
...this.notes,
|
|
85
|
+
...meta,
|
|
86
|
+
};
|
|
87
|
+
if (OUT) {
|
|
88
|
+
try {
|
|
89
|
+
appendFileSync(OUT, JSON.stringify(record) + '\n');
|
|
90
|
+
}
|
|
91
|
+
catch { /* profiling must never break a recall */ }
|
|
92
|
+
}
|
|
93
|
+
if (STDERR) {
|
|
94
|
+
const top = Object.entries(stages).sort((a, b) => b[1] - a[1]).slice(0, 6)
|
|
95
|
+
.map(([k, v]) => `${k}=${Math.round(v)}ms`).join(' ');
|
|
96
|
+
process.stderr.write(`[awm] recall ${Math.round(totalMs)}ms ${top} unaccounted=${Math.round(record.unaccountedMs)}ms\n`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** One profiler per `activate()` call, or a shared no-op when disabled. */
|
|
101
|
+
export function startRecallProfile() {
|
|
102
|
+
return ON ? new Profiler() : NOOP;
|
|
103
|
+
}
|
|
104
|
+
/** Whether recall profiling is active — for callers that want to skip setup work. */
|
|
105
|
+
export function recallProfileEnabled() {
|
|
106
|
+
return ON;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=recall-telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall-telemetry.js","sourceRoot":"","sources":["../../src/core/recall-telemetry.ts"],"names":[],"mappings":"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"}
|