agent-working-memory 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +200 -238
  2. package/dist/adapters/common.d.ts +6 -0
  3. package/dist/adapters/common.d.ts.map +1 -1
  4. package/dist/adapters/common.js +457 -362
  5. package/dist/adapters/common.js.map +1 -1
  6. package/dist/api/routes.d.ts.map +1 -1
  7. package/dist/api/routes.js +24 -8
  8. package/dist/api/routes.js.map +1 -1
  9. package/dist/core/alias-map.d.ts +16 -0
  10. package/dist/core/alias-map.d.ts.map +1 -0
  11. package/dist/core/alias-map.js +102 -0
  12. package/dist/core/alias-map.js.map +1 -0
  13. package/dist/core/embeddings.d.ts +17 -0
  14. package/dist/core/embeddings.d.ts.map +1 -1
  15. package/dist/core/embeddings.js +52 -1
  16. package/dist/core/embeddings.js.map +1 -1
  17. package/dist/core/model-cache.d.ts +28 -0
  18. package/dist/core/model-cache.d.ts.map +1 -0
  19. package/dist/core/model-cache.js +50 -0
  20. package/dist/core/model-cache.js.map +1 -0
  21. package/dist/core/query-expander.d.ts.map +1 -1
  22. package/dist/core/query-expander.js +2 -0
  23. package/dist/core/query-expander.js.map +1 -1
  24. package/dist/core/recall-config.d.ts +52 -0
  25. package/dist/core/recall-config.d.ts.map +1 -0
  26. package/dist/core/recall-config.js +110 -0
  27. package/dist/core/recall-config.js.map +1 -0
  28. package/dist/core/rerank-window.d.ts +61 -0
  29. package/dist/core/rerank-window.d.ts.map +1 -0
  30. package/dist/core/rerank-window.js +153 -0
  31. package/dist/core/rerank-window.js.map +1 -0
  32. package/dist/core/rerank2.d.ts +62 -0
  33. package/dist/core/rerank2.d.ts.map +1 -0
  34. package/dist/core/rerank2.js +75 -0
  35. package/dist/core/rerank2.js.map +1 -0
  36. package/dist/core/reranker.d.ts.map +1 -1
  37. package/dist/core/reranker.js +2 -0
  38. package/dist/core/reranker.js.map +1 -1
  39. package/dist/core/retrieval-text.d.ts +55 -0
  40. package/dist/core/retrieval-text.d.ts.map +1 -0
  41. package/dist/core/retrieval-text.js +87 -0
  42. package/dist/core/retrieval-text.js.map +1 -0
  43. package/dist/core/temporal-query.d.ts +61 -0
  44. package/dist/core/temporal-query.d.ts.map +1 -0
  45. package/dist/core/temporal-query.js +168 -0
  46. package/dist/core/temporal-query.js.map +1 -0
  47. package/dist/core/token-budget.d.ts +75 -0
  48. package/dist/core/token-budget.d.ts.map +1 -0
  49. package/dist/core/token-budget.js +136 -0
  50. package/dist/core/token-budget.js.map +1 -0
  51. package/dist/core/whoami.d.ts +11 -0
  52. package/dist/core/whoami.d.ts.map +1 -1
  53. package/dist/core/whoami.js +10 -0
  54. package/dist/core/whoami.js.map +1 -1
  55. package/dist/core/write-pipeline.d.ts.map +1 -1
  56. package/dist/core/write-pipeline.js +6 -3
  57. package/dist/core/write-pipeline.js.map +1 -1
  58. package/dist/engine/activation.d.ts.map +1 -1
  59. package/dist/engine/activation.js +135 -32
  60. package/dist/engine/activation.js.map +1 -1
  61. package/dist/hooks/prime.d.ts +77 -0
  62. package/dist/hooks/prime.d.ts.map +1 -0
  63. package/dist/hooks/prime.js +92 -0
  64. package/dist/hooks/prime.js.map +1 -0
  65. package/dist/hooks/sidecar.d.ts.map +1 -1
  66. package/dist/hooks/sidecar.js +39 -0
  67. package/dist/hooks/sidecar.js.map +1 -1
  68. package/dist/mcp.js +134 -102
  69. package/dist/mcp.js.map +1 -1
  70. package/dist/storage/pglite.d.ts.map +1 -1
  71. package/dist/storage/pglite.js +10 -2
  72. package/dist/storage/pglite.js.map +1 -1
  73. package/dist/storage/postgres.d.ts.map +1 -1
  74. package/dist/storage/postgres.js +10 -2
  75. package/dist/storage/postgres.js.map +1 -1
  76. package/dist/storage/sqlite.d.ts.map +1 -1
  77. package/dist/storage/sqlite.js +12 -2
  78. package/dist/storage/sqlite.js.map +1 -1
  79. package/dist/types/engram.d.ts +7 -0
  80. package/dist/types/engram.d.ts.map +1 -1
  81. package/package.json +3 -2
  82. package/src/adapters/common.ts +666 -567
  83. package/src/api/routes.ts +1015 -999
  84. package/src/core/alias-map.ts +97 -0
  85. package/src/core/embeddings.ts +172 -113
  86. package/src/core/model-cache.ts +51 -0
  87. package/src/core/query-expander.ts +2 -0
  88. package/src/core/recall-config.ts +115 -0
  89. package/src/core/rerank-window.ts +158 -0
  90. package/src/core/rerank2.ts +82 -0
  91. package/src/core/reranker.ts +2 -0
  92. package/src/core/retrieval-text.ts +82 -0
  93. package/src/core/temporal-query.ts +193 -0
  94. package/src/core/token-budget.ts +160 -0
  95. package/src/core/whoami.ts +110 -92
  96. package/src/core/write-pipeline.ts +6 -3
  97. package/src/engine/activation.ts +1568 -1468
  98. package/src/hooks/prime.ts +136 -0
  99. package/src/hooks/sidecar.ts +43 -0
  100. package/src/mcp.ts +1422 -1387
  101. package/src/storage/pglite.ts +10 -2
  102. package/src/storage/postgres.ts +10 -2
  103. package/src/storage/sqlite.ts +12 -2
  104. package/src/types/engram.ts +7 -0
@@ -16,6 +16,8 @@ import { dirname, join, resolve } from 'node:path';
16
16
  import { fileURLToPath } from 'node:url';
17
17
  import { VERSION } from '../version.js';
18
18
  import { getConfiguredBackend, getConfiguredPath } from '../storage/factory.js';
19
+ import { activeRecallConfig, recallConfigFingerprint } from './recall-config.js';
20
+ import { embeddingHealth } from './embeddings.js';
19
21
  function packageRoot() {
20
22
  // src/core/whoami.ts (dev) and dist/core/whoami.js (build) both sit two
21
23
  // levels below the package root.
@@ -46,6 +48,7 @@ export async function buildWhoami(store, agentId, surface) {
46
48
  http: Number.isFinite(httpPort) && httpPort > 0 ? httpPort : null,
47
49
  hookSidecar: Number.isFinite(hookPort) && hookPort > 0 ? hookPort : null,
48
50
  },
51
+ recall: { fingerprint: recallConfigFingerprint(), flags: activeRecallConfig() },
49
52
  siblingAgents: siblings,
50
53
  };
51
54
  }
@@ -58,6 +61,13 @@ export function formatWhoami(w) {
58
61
  `Store: ${w.storePath}`,
59
62
  `Code: ${w.codePath} (pid ${w.pid})`,
60
63
  `Ports: http=${w.ports.http ?? 'off'} hookSidecar=${w.ports.hookSidecar ?? 'off'}`,
64
+ `Recall config: ${w.recall.fingerprint}`,
65
+ ...(embeddingHealth().dimensionMismatches > 0
66
+ ? [`\u26a0 EMBEDDING INTEGRITY: ${embeddingHealth().dimensionMismatches} dimension mismatches ` +
67
+ `(expected ${embeddingHealth().expectedDimensions}d). Affected memories score 0 on the ` +
68
+ `vector channel — the corpus is probably half-migrated. Re-embed the whole store or ` +
69
+ `revert AWM_EMBED_MODEL/AWM_EMBED_DIMS.`]
70
+ : []),
61
71
  w.siblingAgents.length
62
72
  ? `Sibling agent spaces in this store: ${w.siblingAgents.join(', ')} — recall is scoped to '${w.agentId}'; other spaces need workspace recall, \`awm export --agent <id>\`, or a session configured for that agent.`
63
73
  : 'Sibling agent spaces in this store: none',
@@ -1 +1 @@
1
- {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/core/whoami.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,sCAAsC;AAEtC;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAqBhF,SAAS,WAAW;IAClB,wEAAwE;IACxE,iCAAiC;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAkB,EAClB,OAAe,EACf,OAAuB;IAEvB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,GAAG,CAAC;IACrG,IAAI,QAAQ,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;QACvC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC,CAAC,iDAAiD,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IACzD,OAAO;QACL,OAAO;QACP,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI;QAC5C,OAAO;QACP,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY;QAC1C,OAAO,EAAE,oBAAoB,EAAE;QAC/B,SAAS,EAAE,iBAAiB,EAAE;QAC9B,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,WAAW,EAAE;QACvB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE;YACL,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;YACjE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;SACzE;QACD,aAAa,EAAE,QAAQ;KACxB,CAAC;AACJ,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,YAAY,CAAC,CAAa;IACxC,OAAO;QACL,UAAU,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACzE,SAAS,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,OAAO,EAAE;QACjE,YAAY,CAAC,CAAC,OAAO,EAAE;QACvB,UAAU,CAAC,CAAC,SAAS,EAAE;QACvB,SAAS,CAAC,CAAC,QAAQ,SAAS,CAAC,CAAC,GAAG,GAAG;QACpC,eAAe,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,gBAAgB,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,EAAE;QAClF,CAAC,CAAC,aAAa,CAAC,MAAM;YACpB,CAAC,CAAC,uCAAuC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,OAAO,6GAA6G;YACpN,CAAC,CAAC,0CAA0C;KAC/C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/core/whoami.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"write-pipeline.d.ts","sourceRoot":"","sources":["../../src/core/write-pipeline.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,YAAY,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAOvB,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,uFAAuF;AACvF,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAC/C,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAY9C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,oBAAoB,EAAE,eAAe,EAAE,CAAC;IAC5D;;qEAEiE;IACjE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,uGAAuG;IACvG,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,uDAAuD;IACvD,aAAa,EAAE,aAAa,CAAC;IAC7B,kEAAkE;IAClE,SAAS,CAAC,EAAE;QACV,kBAAkB,EAAE,MAAM,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,iEAAiE;IACjE,WAAW,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,WAAW,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,WAAW,CAAC,CA4KtB"}
1
+ {"version":3,"file":"write-pipeline.d.ts","sourceRoot":"","sources":["../../src/core/write-pipeline.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,YAAY,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAQvB,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,uFAAuF;AACvF,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAC/C,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAY9C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,oBAAoB,EAAE,eAAe,EAAE,CAAC;IAC5D;;qEAEiE;IACjE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,uGAAuG;IACvG,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,uDAAuD;IACvD,aAAa,EAAE,aAAa,CAAC;IAC7B,kEAAkE;IAClE,SAAS,CAAC,EAAE;QACV,kBAAkB,EAAE,MAAM,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,iEAAiE;IACjE,WAAW,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,WAAW,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,WAAW,CAAC,CA4KtB"}
@@ -40,6 +40,7 @@ import { extractMetaTags } from './auto-tagger.js';
40
40
  import { extractEntitiesFromTags } from './entity-extract.js';
41
41
  import { reportWrite } from './write-telemetry.js';
42
42
  import { DEFAULT_AGENT_CONFIG } from '../types/agent.js';
43
+ import { buildRetrievalText } from './retrieval-text.js';
43
44
  /** Confidence floor below which a matched engram is treated as "decaying out". */
44
45
  export const HEALTHY_CONFIDENCE_FLOOR = 0.3;
45
46
  /** Confidence delta applied on reinforcement. Bounded by REINFORCE_CONFIDENCE_CEIL. */
@@ -106,7 +107,7 @@ export async function performWrite(engines, input) {
106
107
  let prewriteEmbedding = null;
107
108
  if (process.env.AWM_NOVELTY_EMBED !== '0') {
108
109
  try {
109
- prewriteEmbedding = await embed(`${input.concept} ${input.content}`);
110
+ prewriteEmbedding = await embed(buildRetrievalText(input.concept, input.content, input.tags));
110
111
  }
111
112
  catch { /* fall through — async embed will retry later */ }
112
113
  }
@@ -318,7 +319,9 @@ newConceptHint = '') {
318
319
  // beyond 512 tokens but the topic anchor (early content) drives
319
320
  // the vector for retrieval purposes.
320
321
  const conceptForEmbed = newConceptHint || matched.concept;
321
- const newVec = await embed(`${conceptForEmbed} ${mergedContent}`);
322
+ // The reinforced engram's OWN tags — `input` is not in scope here, and
323
+ // the stored tags are the right vocabulary for the stored memory anyway.
324
+ const newVec = await embed(buildRetrievalText(conceptForEmbed, mergedContent, matched.tags));
322
325
  await store.updateEmbedding(matched.id, newVec);
323
326
  }
324
327
  catch { /* merge is best-effort — confidence bump already landed */ }
@@ -446,7 +449,7 @@ prewriteEmbedding = null) {
446
449
  const alreadyEmbedded = prewriteEmbedding != null && prewriteEmbedding.length > 0;
447
450
  const shouldEmbed = (!isStructural || input.embed === true) && !alreadyEmbedded;
448
451
  if (shouldEmbed) {
449
- embed(`${input.concept} ${input.content}`)
452
+ embed(buildRetrievalText(input.concept, input.content, input.tags))
450
453
  .then(async (vec) => {
451
454
  try {
452
455
  await store.updateEmbedding(engram.id, vec);
@@ -1 +1 @@
1
- {"version":3,"file":"write-pipeline.js","sourceRoot":"","sources":["../../src/core/write-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write-pipeline.js","sourceRoot":"","sources":["../../src/core/write-pipeline.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"activation.d.ts","sourceRoot":"","sources":["../../src/engine/activation.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAA6C,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAKtG,OAAO,KAAK,EACF,gBAAgB,EAAE,eAAe,EAC1C,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAoIvE,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;IA66BnE;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAKnC;YAEY,SAAS;IA+FvB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;YACW,gBAAgB;IAwJ9B;;;;OAIG;IACG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBhF,OAAO,CAAC,OAAO;CAchB"}
1
+ {"version":3,"file":"activation.d.ts","sourceRoot":"","sources":["../../src/engine/activation.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAA6C,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAKtG,OAAO,KAAK,EACF,gBAAgB,EAAE,eAAe,EAC1C,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAwIvE,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;IA6gCnE;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAKnC;YAEY,SAAS;IA+FvB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;YACW,gBAAgB;IAwJ9B;;;;OAIG;IACG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBhF,OAAO,CAAC,OAAO;CAchB"}
@@ -35,6 +35,10 @@ import { embed, cosineSimilarity } from '../core/embeddings.js';
35
35
  import { rerank } from '../core/reranker.js';
36
36
  import { expandQuery } from '../core/query-expander.js';
37
37
  import { computeRecallConfidence } from './confidence.js';
38
+ import { reorderByReranker, rerank2Enabled, rerank2WindowSize } from '../core/rerank2.js';
39
+ import { buildRerankPassage, rerankTruncation, rerankWindowMode } from '../core/rerank-window.js';
40
+ import { parseTemporal, temporalEnabled, temporalBoost } from '../core/temporal-query.js';
41
+ import { aliasTermsFor } from '../core/alias-map.js';
38
42
  const ADAPTIVE_PRESETS = {
39
43
  targeted: {
40
44
  mode: 'targeted',
@@ -189,8 +193,25 @@ export class ActivationEngine {
189
193
  ? await this.store.getWorkspaceAgentIds(query.agentId, query.workspace)
190
194
  : [query.agentId];
191
195
  const isWorkspaceScoped = agentIds.length > 1;
192
- // Phase -1: Coref expansion — if query has pronouns, append recent entity names
196
+ // ── Phase -2: temporal expression ──
197
+ // Nothing downstream parses dates, so "from last Thursday" was being spent
198
+ // as ordinary BM25 tokens: diluting the subject terms and matching `date=`
199
+ // tags corpus-wide. Measured on the real store, adding a temporal cue COST
200
+ // 3-8pp of success@1 — the most selective thing the user said was a
201
+ // penalty. Stripping it recovers that; the window then PREFERS (never
202
+ // filters) candidates from the implied period. Oracle ceiling is +36.6pp.
193
203
  let queryContext = query.context;
204
+ let temporal = null;
205
+ if (temporalEnabled()) {
206
+ temporal = parseTemporal(query.context, query.asOf ?? Date.now());
207
+ // Strict no-op when nothing matched, and never strip the query to nothing.
208
+ if (temporal && temporal.stripped.trim().length >= 3) {
209
+ queryContext = temporal.stripped;
210
+ }
211
+ else if (temporal) {
212
+ temporal = null;
213
+ }
214
+ }
194
215
  const pronounPattern = /\b(she|he|they|her|his|him|their|it|that|this|there)\b/i;
195
216
  if (pronounPattern.test(queryContext)) {
196
217
  try {
@@ -208,11 +229,21 @@ export class ActivationEngine {
208
229
  }
209
230
  // Phase 0: Query expansion — add related terms to improve BM25 recall
210
231
  let searchContext = queryContext;
232
+ // Project-dialect aliases. Added to the BM25 SEARCH STRING ONLY — never to
233
+ // `queryTokens`, which drives textMatch scoring below. That scope IS
234
+ // guardrail 4 ("require at least one original query term"): a candidate
235
+ // matching only alias terms arrives with near-zero textMatch and is dropped
236
+ // by the existing minScore gate, while one that also matches an original
237
+ // term scores normally. Aliases buy REACH; original terms still decide
238
+ // RELEVANCE, so a hub alias cannot drag an irrelevant memory to the top.
239
+ const aliasAdded = aliasTermsFor(queryContext);
240
+ if (aliasAdded.length > 0)
241
+ searchContext = `${searchContext} ${aliasAdded.join(' ')}`;
211
242
  if (useExpansion) {
212
243
  let timer;
213
244
  try {
214
245
  searchContext = await Promise.race([
215
- expandQuery(query.context),
246
+ expandQuery(queryContext),
216
247
  new Promise((_, reject) => { timer = setTimeout(() => reject(new Error('expansion timeout')), 5000); }),
217
248
  ]);
218
249
  }
@@ -234,7 +265,8 @@ export class ActivationEngine {
234
265
  }
235
266
  // Phase 2: Parallel retrieval — dual BM25 + all active engrams
236
267
  // Two-pass BM25: (1) keyword-stripped query for precision, (2) expanded query for recall.
237
- const keywordQuery = Array.from(tokenize(query.context)).join(' ');
268
+ // Uses queryContext, not query.context: temporal words must not reach BM25.
269
+ const keywordQuery = Array.from(tokenize(queryContext)).join(' ');
238
270
  const bm25Keyword = keywordQuery.length > 2
239
271
  ? await this.store.searchBM25WithRankMultiAgent(agentIds, keywordQuery, limit * 3)
240
272
  : [];
@@ -272,7 +304,7 @@ export class ActivationEngine {
272
304
  const POOL_FILTER_DISABLED = process.env.AWM_DISABLE_POOL_FILTER === '1';
273
305
  const VECTOR_TOP_K = POOL_FILTER_DISABLED ? Number.MAX_SAFE_INTEGER : Math.max(50, limit * 5);
274
306
  // Tokenize query once (used by scoring)
275
- const queryTokens = tokenize(query.context);
307
+ const queryTokens = tokenize(queryContext);
276
308
  // Phase 3a: native vector search across agents — top-K by cosine.
277
309
  // Apply a candidate floor — BGE-small unit-norm vectors typically cluster
278
310
  // around 0.30-0.40 even for unrelated text, so we need a floor that
@@ -544,7 +576,21 @@ export class ActivationEngine {
544
576
  // Text/temporal weights adapt to query mode: targeted (0.75/0.25), exploratory (0.4/0.6).
545
577
  const temporalNorm = Math.min(softplus(decayScore + hebbianBoost), 3.0) / 3.0;
546
578
  const relevanceGate = textMatch > 0.1 ? textMatch : 0.0; // Proportional gate
547
- const composite = (adaptive.textWeight * textMatch + adaptive.temporalWeight * temporalNorm * relevanceGate + centralityBoost * relevanceGate + feedbackBonus * relevanceGate) * confidenceGate;
579
+ let composite = (adaptive.textWeight * textMatch + adaptive.temporalWeight * temporalNorm * relevanceGate + centralityBoost * relevanceGate + feedbackBonus * relevanceGate) * confidenceGate;
580
+ // In-window preference — applied in the MAIN scoring pass, which is what
581
+ // decides the topN cut. (An earlier version of this sat in the Rocchio
582
+ // feedback re-search branch and therefore did nothing: it only ever saw
583
+ // candidates that path newly discovered. Same trap as D11's boost-vs-
584
+ // inject finding — a boost can only reorder what is already a candidate.)
585
+ // Additive and scaled by textMatch, so a temporally-plausible memory
586
+ // rises while a subject-irrelevant one cannot be dragged in on date
587
+ // alone; out-of-window memories stay reachable on subject strength.
588
+ if (temporal) {
589
+ const createdMs = engram.createdAt.getTime();
590
+ if (createdMs >= temporal.from && createdMs < temporal.to) {
591
+ composite += temporalBoost() * Math.max(textMatch, 0.15);
592
+ }
593
+ }
548
594
  const phaseScores = {
549
595
  textMatch,
550
596
  vectorMatch,
@@ -605,7 +651,14 @@ export class ActivationEngine {
605
651
  const rh = associations.length > 0 ? Math.min(associations.reduce((s, a) => s + a.weight, 0) / associations.length, 0.5) : 0;
606
652
  const tn = Math.min(softplus(ds + rh), 3.0) / 3.0;
607
653
  const rg = tm > 0.1 ? tm : 0.0;
608
- const comp = (adaptive.textWeight * tm + adaptive.temporalWeight * tn * rg) * engram.confidence;
654
+ let comp = (adaptive.textWeight * tm + adaptive.temporalWeight * tn * rg) * engram.confidence;
655
+ // Same in-window preference as the main pass, for candidates this
656
+ // feedback re-search discovers.
657
+ if (temporal) {
658
+ const cms = engram.createdAt.getTime();
659
+ if (cms >= temporal.from && cms < temporal.to)
660
+ comp += temporalBoost() * Math.max(tm, 0.15);
661
+ }
609
662
  scored.push({ engram, score: comp, phaseScores: { textMatch: tm, vectorMatch: vm, decayScore: ds, hebbianBoost: rh, graphBoost: 0, confidenceGate: engram.confidence, composite: comp, rerankerScore: 0 }, associations });
610
663
  }
611
664
  }
@@ -842,22 +895,28 @@ export class ActivationEngine {
842
895
  }
843
896
  if (useReranker && !rerankSkipped && rerankPool.length > 0) {
844
897
  try {
845
- // Truncate content to ~400 chars before rerank (0.7.14+). Cross-encoders
846
- // have a 512-token max anyway and pad to the longest passage in the batch;
847
- // sending full content (some 5000+ chars) means everything pads to ~512
848
- // tokens. Truncation drops tokenization + inference cost ~3-4× on long
849
- // memory pools without losing rerank signal — the concept + first 400
850
- // chars carry the core meaning.
851
- const passages = rerankPool.map(r => {
852
- const concept = r.engram.concept;
853
- const content = r.engram.content.length > 400
854
- ? r.engram.content.slice(0, 400)
855
- : r.engram.content;
856
- return `${concept}: ${content}`;
857
- });
898
+ // Passage selection for the cross-encoder. Truncation exists for a real
899
+ // reason: cross-encoders pad to the longest passage in the batch, so one
900
+ // 5,000-char memory in a 40-item pool drags everything to ~512 tokens and
901
+ // costs 3-4x and the reranker is already ~90% of warm recall latency.
902
+ //
903
+ // But a PREFIX is the wrong budget to spend. On the live store, canonical
904
+ // memories are median 1,965 chars and 98.7% exceed 400, so the reranker
905
+ // cannot see 78.8% of their vocabulary; 99.9% of them carry identifiers
906
+ // only past char 400. tests/longmem-eval shows the consequence: moving an
907
+ // answer from char 150 to char 700 takes success@1 from 100% to 0%, with
908
+ // the gold's cross-encoder score collapsing 0.986 -> 0.000 while its BM25
909
+ // score barely moves — retrievable, but not rankable.
910
+ //
911
+ // AWM_RERANK_WINDOW=query spends the SAME budget on the window that
912
+ // actually contains the query terms. Cost is unchanged. See
913
+ // src/core/rerank-window.ts.
914
+ const rrBudget = rerankTruncation();
915
+ const rrMode = rerankWindowMode();
916
+ const passages = rerankPool.map(r => buildRerankPassage(r.engram.concept, r.engram.content, queryContext, rrBudget, rrMode, r.engram.tags));
858
917
  let rerankTimer;
859
918
  const rerankResults = await Promise.race([
860
- rerank(query.context, passages),
919
+ rerank(queryContext, passages),
861
920
  new Promise((_, reject) => { rerankTimer = setTimeout(() => reject(new Error('reranker timeout')), 10000); }),
862
921
  ]).finally(() => { if (rerankTimer)
863
922
  clearTimeout(rerankTimer); });
@@ -991,32 +1050,68 @@ export class ActivationEngine {
991
1050
  if (snippetTokens.length === 0)
992
1051
  return content.slice(0, len).trimEnd() + '…';
993
1052
  const lower = content.toLowerCase();
1053
+ // Each hit carries a WEIGHT, not a flat 1.
1054
+ //
1055
+ // Counting every hit equally makes the window land wherever the common
1056
+ // concept words cluster. A real query is concept words plus a rare
1057
+ // identifier ("... division mock d.requires_horse"); in a long memory the
1058
+ // concept words recur throughout while the identifier appears once, so
1059
+ // the densest-by-count window reliably misses the answer. Measured on the
1060
+ // real store: compact@200 delivered the answer only 20.9% of the time.
1061
+ //
1062
+ // AWM_SNIPPET_WEIGHT=rarity weights a hit by 1/(occurrences of that token
1063
+ // in THIS document), so one occurrence of a rare term outweighs many of a
1064
+ // common one. Doc-local: no corpus statistics, no extra queries, no
1065
+ // latency. Default OFF preserves the shipped behaviour exactly.
1066
+ const rarityMode = process.env.AWM_SNIPPET_WEIGHT === 'rarity' || process.env.AWM_SNIPPET_WEIGHT === 'anchor';
994
1067
  const hits = [];
1068
+ const hitW = [];
995
1069
  for (const tok of snippetTokens) {
1070
+ const positions = [];
996
1071
  let from = 0;
997
1072
  while (true) {
998
1073
  const idx = lower.indexOf(tok, from);
999
1074
  if (idx < 0)
1000
1075
  break;
1001
- hits.push(idx);
1076
+ positions.push(idx);
1002
1077
  from = idx + tok.length;
1003
1078
  }
1079
+ const w = rarityMode && positions.length > 0 ? 1 / positions.length : 1;
1080
+ for (const pos of positions) {
1081
+ hits.push(pos);
1082
+ hitW.push(w);
1083
+ }
1004
1084
  }
1005
1085
  if (hits.length === 0)
1006
1086
  return content.slice(0, len).trimEnd() + '…';
1007
- hits.sort((a, b) => a - b);
1008
- // Find the window of size `len` that contains the most hits, by
1009
- // sliding a window anchored on each hit.
1087
+ // Sort positions and weights together.
1088
+ const order = hits.map((h, i) => i).sort((a, b) => hits[a] - hits[b]);
1089
+ const sortedHits = order.map(i => hits[i]);
1090
+ const sortedW = order.map(i => hitW[i]);
1091
+ hits.length = 0;
1092
+ hits.push(...sortedHits);
1093
+ // Candidate anchors. Maximising a SUM of weights still lets a tight
1094
+ // cluster of common-word hits outweigh the single rare hit that actually
1095
+ // answers the query — rarity weighting alone moved sufficiency only
1096
+ // 20.9% -> 27.0% on the real store. `anchor` mode instead GUARANTEES the
1097
+ // rarest matched token is inside the window, then picks the best window
1098
+ // among those, so the answer-bearing term cannot be outvoted.
1099
+ const anchorMode = process.env.AWM_SNIPPET_WEIGHT === 'anchor';
1100
+ let anchorIdx = hits.map((_, i) => i);
1101
+ if (anchorMode) {
1102
+ const rarest = Math.max(...sortedW); // 1/occurrences: rarest == largest weight
1103
+ const only = anchorIdx.filter(i => sortedW[i] >= rarest - 1e-9);
1104
+ if (only.length > 0)
1105
+ anchorIdx = only;
1106
+ }
1010
1107
  let bestStart = hits[0];
1011
- let bestCount = 0;
1012
- for (let i = 0; i < hits.length; i++) {
1108
+ let bestCount = -1;
1109
+ for (const i of anchorIdx) {
1013
1110
  const start = Math.max(0, hits[i] - Math.floor(len / 4));
1014
1111
  let count = 0;
1015
- for (let j = i; j < hits.length; j++) {
1016
- if (hits[j] - start < len)
1017
- count++;
1018
- else
1019
- break;
1112
+ for (let j = 0; j < hits.length; j++) {
1113
+ if (hits[j] >= start && hits[j] - start < len)
1114
+ count += sortedW[j];
1020
1115
  }
1021
1116
  if (count > bestCount) {
1022
1117
  bestCount = count;
@@ -1040,7 +1135,15 @@ export class ActivationEngine {
1040
1135
  snippet = snippet.trimEnd() + '…';
1041
1136
  return snippet;
1042
1137
  };
1043
- const results = finalRanked
1138
+ // ── Phase 9b: SECOND-STAGE REORDER — "rerank the rerank" ──
1139
+ // See src/core/rerank2.ts for the measurement and the safety argument.
1140
+ // Placed here deliberately: after the agreement gate, after
1141
+ // computeRecallConfidence, and after the requireConfidence check, so it
1142
+ // cannot influence abstention. Default OFF (AWM_RERANK2=1).
1143
+ const ordered = rerank2Enabled()
1144
+ ? reorderByReranker(finalRanked, rerank2WindowSize())
1145
+ : finalRanked;
1146
+ const results = ordered
1044
1147
  .slice(0, limit)
1045
1148
  .map((r, idx) => {
1046
1149
  let summary;