@remnic/core 9.3.660 → 9.3.662

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 (180) hide show
  1. package/dist/access-cli.js +10 -10
  2. package/dist/access-http.d.ts +5 -5
  3. package/dist/access-http.js +10 -10
  4. package/dist/access-mcp.d.ts +5 -5
  5. package/dist/access-mcp.js +9 -9
  6. package/dist/{access-service-D_nbpexW.d.ts → access-service-D0SLB4MH.d.ts} +2 -2
  7. package/dist/access-service.d.ts +5 -5
  8. package/dist/access-service.js +8 -8
  9. package/dist/action-confidence.d.ts +1 -1
  10. package/dist/active-memory-bridge.d.ts +1 -1
  11. package/dist/active-recall.d.ts +1 -1
  12. package/dist/behavior-learner.d.ts +1 -1
  13. package/dist/behavior-signals.d.ts +1 -1
  14. package/dist/bootstrap.d.ts +3 -3
  15. package/dist/briefing.d.ts +1 -1
  16. package/dist/buffer-surprise-report.d.ts +1 -1
  17. package/dist/buffer.d.ts +1 -1
  18. package/dist/calibration.d.ts +1 -1
  19. package/dist/causal-behavior.d.ts +1 -1
  20. package/dist/causal-consolidation.d.ts +1 -1
  21. package/dist/{chunk-7H7J3ZWN.js → chunk-2KDQI363.js} +2 -2
  22. package/dist/{chunk-R2EBP6CM.js → chunk-35HP3TGR.js} +5 -5
  23. package/dist/{chunk-FWIROLS6.js → chunk-44VFF3BB.js} +18 -16
  24. package/dist/chunk-44VFF3BB.js.map +1 -0
  25. package/dist/{chunk-OYXVENIS.js → chunk-4KDLCMLK.js} +3 -3
  26. package/dist/{chunk-MO77TWPS.js → chunk-5AYAZN45.js} +2 -2
  27. package/dist/{chunk-7PCZGNG2.js → chunk-6RHNCKHG.js} +113 -24
  28. package/dist/chunk-6RHNCKHG.js.map +1 -0
  29. package/dist/{chunk-RP2U54GG.js → chunk-DFAXGZKI.js} +2 -2
  30. package/dist/{chunk-6G5JEN55.js → chunk-FZC2WSDB.js} +2 -2
  31. package/dist/{chunk-2EVZ5EN6.js → chunk-HSCJYHYV.js} +6 -6
  32. package/dist/{chunk-B57QYSWN.js → chunk-TGOOJCGA.js} +109 -16
  33. package/dist/chunk-TGOOJCGA.js.map +1 -0
  34. package/dist/{chunk-UNLHHTKN.js → chunk-WOQIHC67.js} +10 -2
  35. package/dist/chunk-WOQIHC67.js.map +1 -0
  36. package/dist/{chunk-5PLUC5OB.js → chunk-WSQG37DV.js} +2 -2
  37. package/dist/{chunk-M3VYPE2H.js → chunk-YNQ6DFSV.js} +1 -1
  38. package/dist/chunk-YNQ6DFSV.js.map +1 -0
  39. package/dist/{chunk-256W7AXC.js → chunk-YYQRVNSV.js} +2 -2
  40. package/dist/{chunk-GRYAECRV.js → chunk-ZJH723NM.js} +2 -2
  41. package/dist/{cli-aYxSuPvP.d.ts → cli-C6twwe84.d.ts} +3 -3
  42. package/dist/cli.d.ts +5 -5
  43. package/dist/cli.js +13 -13
  44. package/dist/compounding/engine.d.ts +1 -1
  45. package/dist/compounding/preference-consolidator.d.ts +1 -1
  46. package/dist/compression-optimizer.d.ts +1 -1
  47. package/dist/config.d.ts +1 -1
  48. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  49. package/dist/connectors/codex-materialize.d.ts +1 -1
  50. package/dist/connectors/index.d.ts +1 -1
  51. package/dist/consolidation-provenance-check.d.ts +1 -1
  52. package/dist/consolidation-undo.d.ts +1 -1
  53. package/dist/contradiction/index.d.ts +1 -1
  54. package/dist/conversation-index/backend.d.ts +1 -1
  55. package/dist/conversation-index/chunker.d.ts +1 -1
  56. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  57. package/dist/conversation-index/indexer.d.ts +1 -1
  58. package/dist/conversation-index/search.d.ts +1 -1
  59. package/dist/day-summary.d.ts +1 -1
  60. package/dist/delinearize.d.ts +1 -1
  61. package/dist/direct-answer-wiring.d.ts +1 -1
  62. package/dist/direct-answer.d.ts +1 -1
  63. package/dist/embedding-fallback.d.ts +1 -1
  64. package/dist/enrichment/index.d.ts +1 -1
  65. package/dist/entity-retrieval.d.ts +1 -1
  66. package/dist/entity-schema.d.ts +1 -1
  67. package/dist/explicit-capture.d.ts +3 -3
  68. package/dist/extraction-judge-telemetry.d.ts +1 -1
  69. package/dist/extraction-judge-training.d.ts +1 -1
  70. package/dist/extraction-judge.d.ts +1 -1
  71. package/dist/extraction.d.ts +1 -1
  72. package/dist/fallback-llm.d.ts +1 -1
  73. package/dist/identity-continuity.d.ts +1 -1
  74. package/dist/importance.d.ts +1 -1
  75. package/dist/index.d.ts +8 -8
  76. package/dist/index.js +15 -15
  77. package/dist/intent.d.ts +1 -1
  78. package/dist/lcm/engine.d.ts +1 -1
  79. package/dist/lcm/index.d.ts +1 -1
  80. package/dist/lcm/tools.d.ts +1 -1
  81. package/dist/lifecycle.d.ts +1 -1
  82. package/dist/live-connectors-runner.d.ts +1 -1
  83. package/dist/local-llm.d.ts +1 -1
  84. package/dist/maintenance/memory-governance.d.ts +1 -1
  85. package/dist/mcp-memory-inspector-app.d.ts +5 -5
  86. package/dist/memory-action-policy.d.ts +1 -1
  87. package/dist/memory-cache.d.ts +1 -1
  88. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  89. package/dist/memory-projection-store.d.ts +1 -1
  90. package/dist/memory-provenance.d.ts +1 -1
  91. package/dist/memory-worth-outcomes.d.ts +1 -1
  92. package/dist/models-json.d.ts +1 -1
  93. package/dist/namespaces/migrate.d.ts +1 -1
  94. package/dist/namespaces/migrate.js +8 -8
  95. package/dist/namespaces/principal.d.ts +1 -1
  96. package/dist/namespaces/search.d.ts +1 -1
  97. package/dist/namespaces/search.js +7 -7
  98. package/dist/namespaces/storage.d.ts +1 -1
  99. package/dist/native-knowledge.d.ts +1 -1
  100. package/dist/operator-toolkit.d.ts +1 -1
  101. package/dist/operator-toolkit.js +9 -9
  102. package/dist/{orchestrator-D1wcmPNj.d.ts → orchestrator-Cg1UkvmO.d.ts} +2 -2
  103. package/dist/orchestrator.d.ts +3 -3
  104. package/dist/orchestrator.js +9 -9
  105. package/dist/patterns-cli.d.ts +1 -1
  106. package/dist/policy-runtime.d.ts +1 -1
  107. package/dist/qmd-recall-cache.d.ts +1 -1
  108. package/dist/qmd.d.ts +50 -2
  109. package/dist/qmd.js +8 -2
  110. package/dist/recall-disclosure-escalation.d.ts +1 -1
  111. package/dist/recall-explain-renderer.d.ts +2 -1
  112. package/dist/recall-planner-llm.d.ts +1 -1
  113. package/dist/recall-state.d.ts +17 -1
  114. package/dist/recall-state.js +1 -1
  115. package/dist/recall-tag-filter.d.ts +1 -1
  116. package/dist/recall-xray-cli.d.ts +1 -1
  117. package/dist/recall-xray-renderer.d.ts +1 -1
  118. package/dist/recall-xray.d.ts +1 -1
  119. package/dist/resolve-auth-token.d.ts +1 -1
  120. package/dist/retrieval-agents.d.ts +1 -1
  121. package/dist/retrieval-tiers.d.ts +1 -1
  122. package/dist/routing/engine.d.ts +1 -1
  123. package/dist/routing/store.d.ts +1 -1
  124. package/dist/search/embed-helper.d.ts +1 -1
  125. package/dist/search/factory.d.ts +1 -1
  126. package/dist/search/factory.js +6 -6
  127. package/dist/search/index.d.ts +1 -1
  128. package/dist/search/index.js +6 -6
  129. package/dist/search/lancedb-backend.d.ts +1 -1
  130. package/dist/search/lancedb-backend.js +2 -2
  131. package/dist/search/meilisearch-backend.d.ts +1 -1
  132. package/dist/search/meilisearch-backend.js +2 -2
  133. package/dist/search/noop-backend.d.ts +1 -1
  134. package/dist/search/orama-backend.d.ts +1 -1
  135. package/dist/search/orama-backend.js +2 -2
  136. package/dist/search/port.d.ts +21 -2
  137. package/dist/search/port.js +1 -1
  138. package/dist/search/remote-backend.d.ts +1 -1
  139. package/dist/{semantic-consolidation-MWOdNtSE.d.ts → semantic-consolidation-BICZvQ3C.d.ts} +1 -1
  140. package/dist/semantic-consolidation.d.ts +2 -2
  141. package/dist/semantic-rule-verifier.d.ts +1 -1
  142. package/dist/session-observer-bands.d.ts +1 -1
  143. package/dist/session-observer-state.d.ts +1 -1
  144. package/dist/shared-context/manager.d.ts +1 -1
  145. package/dist/signal.d.ts +1 -1
  146. package/dist/storage.d.ts +1 -1
  147. package/dist/summarizer.d.ts +1 -1
  148. package/dist/summary-snapshot.d.ts +1 -1
  149. package/dist/temporal-supersession.d.ts +1 -1
  150. package/dist/temporal-validity.d.ts +1 -1
  151. package/dist/threading.d.ts +1 -1
  152. package/dist/tier-migration.d.ts +1 -1
  153. package/dist/tier-routing.d.ts +1 -1
  154. package/dist/topics.d.ts +1 -1
  155. package/dist/transcript.d.ts +1 -1
  156. package/dist/{types-CgcCpUrf.d.ts → types-D96bCB3C.d.ts} +1 -1
  157. package/dist/types.d.ts +1 -1
  158. package/dist/utility-runtime.d.ts +1 -1
  159. package/package.json +3 -2
  160. package/scripts/build-with-heap.mjs +25 -0
  161. package/src/namespaces/search.ts +16 -0
  162. package/src/orchestrator.ts +144 -3
  163. package/src/qmd.ts +137 -18
  164. package/src/recall-state.ts +47 -21
  165. package/src/search/port.ts +25 -0
  166. package/dist/chunk-7PCZGNG2.js.map +0 -1
  167. package/dist/chunk-B57QYSWN.js.map +0 -1
  168. package/dist/chunk-FWIROLS6.js.map +0 -1
  169. package/dist/chunk-M3VYPE2H.js.map +0 -1
  170. package/dist/chunk-UNLHHTKN.js.map +0 -1
  171. /package/dist/{chunk-7H7J3ZWN.js.map → chunk-2KDQI363.js.map} +0 -0
  172. /package/dist/{chunk-R2EBP6CM.js.map → chunk-35HP3TGR.js.map} +0 -0
  173. /package/dist/{chunk-OYXVENIS.js.map → chunk-4KDLCMLK.js.map} +0 -0
  174. /package/dist/{chunk-MO77TWPS.js.map → chunk-5AYAZN45.js.map} +0 -0
  175. /package/dist/{chunk-RP2U54GG.js.map → chunk-DFAXGZKI.js.map} +0 -0
  176. /package/dist/{chunk-6G5JEN55.js.map → chunk-FZC2WSDB.js.map} +0 -0
  177. /package/dist/{chunk-2EVZ5EN6.js.map → chunk-HSCJYHYV.js.map} +0 -0
  178. /package/dist/{chunk-5PLUC5OB.js.map → chunk-WSQG37DV.js.map} +0 -0
  179. /package/dist/{chunk-256W7AXC.js.map → chunk-YYQRVNSV.js.map} +0 -0
  180. /package/dist/{chunk-GRYAECRV.js.map → chunk-ZJH723NM.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Orchestrator
3
- } from "./chunk-B57QYSWN.js";
3
+ } from "./chunk-TGOOJCGA.js";
4
4
  import "./chunk-4SKKVWLQ.js";
5
5
  import "./chunk-7HYPN2GC.js";
6
6
  import "./chunk-666A3MOW.js";
@@ -37,7 +37,7 @@ import "./chunk-452WDNFO.js";
37
37
  import "./chunk-E3VODCC3.js";
38
38
  import "./chunk-YDBIWGNI.js";
39
39
  import "./chunk-7DHTMOND.js";
40
- import "./chunk-FWIROLS6.js";
40
+ import "./chunk-44VFF3BB.js";
41
41
  import "./chunk-ZZTOURJI.js";
42
42
  import "./chunk-XKXKSQU7.js";
43
43
  import "./chunk-3GPTTA4J.js";
@@ -122,7 +122,7 @@ import "./chunk-OADWQ5CR.js";
122
122
  import "./chunk-7WV3F5DQ.js";
123
123
  import {
124
124
  EngramAccessService
125
- } from "./chunk-RP2U54GG.js";
125
+ } from "./chunk-DFAXGZKI.js";
126
126
  import "./chunk-GDASG7NC.js";
127
127
  import "./chunk-GDB4J2H3.js";
128
128
  import "./chunk-DHGSZ3UD.js";
@@ -136,14 +136,14 @@ import "./chunk-5RIRL3XL.js";
136
136
  import "./chunk-JGSKJHF7.js";
137
137
  import "./chunk-FF4KLI5W.js";
138
138
  import "./chunk-2MXEVL75.js";
139
- import "./chunk-UNLHHTKN.js";
140
- import "./chunk-R2EBP6CM.js";
141
- import "./chunk-6G5JEN55.js";
139
+ import "./chunk-WOQIHC67.js";
140
+ import "./chunk-35HP3TGR.js";
141
+ import "./chunk-FZC2WSDB.js";
142
142
  import "./chunk-CYEPCZN5.js";
143
- import "./chunk-GRYAECRV.js";
143
+ import "./chunk-ZJH723NM.js";
144
144
  import "./chunk-JOASJWQR.js";
145
145
  import "./chunk-RN7MUWON.js";
146
- import "./chunk-5PLUC5OB.js";
146
+ import "./chunk-WSQG37DV.js";
147
147
  import "./chunk-Q4CAQGKQ.js";
148
148
  import "./chunk-CINZGPSJ.js";
149
149
  import "./chunk-ZFXCQPNO.js";
@@ -151,8 +151,8 @@ import "./chunk-7OGJQP7T.js";
151
151
  import "./chunk-E6ZDCOHM.js";
152
152
  import "./chunk-OIF36KGD.js";
153
153
  import "./chunk-7DTASS5T.js";
154
- import "./chunk-7PCZGNG2.js";
155
- import "./chunk-M3VYPE2H.js";
154
+ import "./chunk-6RHNCKHG.js";
155
+ import "./chunk-YNQ6DFSV.js";
156
156
  import "./chunk-BMFZLLNI.js";
157
157
  import "./chunk-CI7RKSRE.js";
158
158
  import "./chunk-6HMYUWXR.js";
@@ -1,11 +1,11 @@
1
1
  import { IncomingMessage } from 'node:http';
2
- import { E as EngramAccessService } from './access-service-D_nbpexW.js';
2
+ import { E as EngramAccessService } from './access-service-D0SLB4MH.js';
3
3
  import { ResolvedIdentity } from './adapters/types.js';
4
4
  import { AdapterRegistry } from './adapters/registry.js';
5
5
  import './storage.js';
6
6
  import './page-versioning.js';
7
7
  import './consolidation-operator.js';
8
- import './types-CgcCpUrf.js';
8
+ import './types-D96bCB3C.js';
9
9
  import './types-ByK7T3L6.js';
10
10
  import './index-DJ9QWMw-.js';
11
11
  import './memory-projection-store.js';
@@ -15,16 +15,16 @@ import 'better-sqlite3';
15
15
  import './types-B1VHaf2w.js';
16
16
  import './recall-explain-renderer.js';
17
17
  import './recall-state.js';
18
+ import './search/port.js';
18
19
  import './recall-xray.js';
19
20
  import './memory-provenance.js';
20
21
  import './user-model.js';
21
22
  import './recall-audit-anomaly.js';
22
23
  import './recall-audit.js';
23
24
  import './explicit-capture.js';
24
- import './orchestrator-D1wcmPNj.js';
25
+ import './orchestrator-Cg1UkvmO.js';
25
26
  import './briefing.js';
26
27
  import './buffer.js';
27
- import './search/port.js';
28
28
  import './transcript.js';
29
29
  import './session-integrity.js';
30
30
  import './summarizer.js';
@@ -46,7 +46,7 @@ import './lcm/archive.js';
46
46
  import './lcm/summarizer.js';
47
47
  import './lcm/dag.js';
48
48
  import './lcm/queue.js';
49
- import './semantic-consolidation-MWOdNtSE.js';
49
+ import './semantic-consolidation-BICZvQ3C.js';
50
50
  import './connectors/codex-materialize.js';
51
51
  import './logger.js';
52
52
  import './conversation-index/backend.js';
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EngramAccessHttpServer
3
- } from "./chunk-OYXVENIS.js";
3
+ } from "./chunk-4KDLCMLK.js";
4
4
  import "./chunk-SEDEKFYQ.js";
5
5
  import "./chunk-RKNJBZ55.js";
6
6
  import "./chunk-J64TK33U.js";
@@ -9,10 +9,10 @@ import "./chunk-42NQ7AVG.js";
9
9
  import "./chunk-TMSXWOBZ.js";
10
10
  import "./chunk-7RXCMVFQ.js";
11
11
  import "./chunk-7WV3F5DQ.js";
12
- import "./chunk-7H7J3ZWN.js";
12
+ import "./chunk-2KDQI363.js";
13
13
  import "./chunk-T4WDJPEZ.js";
14
14
  import "./chunk-D24OXEPB.js";
15
- import "./chunk-RP2U54GG.js";
15
+ import "./chunk-DFAXGZKI.js";
16
16
  import "./chunk-GDASG7NC.js";
17
17
  import "./chunk-GDB4J2H3.js";
18
18
  import "./chunk-DHGSZ3UD.js";
@@ -26,14 +26,14 @@ import "./chunk-5RIRL3XL.js";
26
26
  import "./chunk-JGSKJHF7.js";
27
27
  import "./chunk-FF4KLI5W.js";
28
28
  import "./chunk-2MXEVL75.js";
29
- import "./chunk-UNLHHTKN.js";
30
- import "./chunk-R2EBP6CM.js";
31
- import "./chunk-6G5JEN55.js";
29
+ import "./chunk-WOQIHC67.js";
30
+ import "./chunk-35HP3TGR.js";
31
+ import "./chunk-FZC2WSDB.js";
32
32
  import "./chunk-CYEPCZN5.js";
33
- import "./chunk-GRYAECRV.js";
33
+ import "./chunk-ZJH723NM.js";
34
34
  import "./chunk-JOASJWQR.js";
35
35
  import "./chunk-RN7MUWON.js";
36
- import "./chunk-5PLUC5OB.js";
36
+ import "./chunk-WSQG37DV.js";
37
37
  import "./chunk-Q4CAQGKQ.js";
38
38
  import "./chunk-CINZGPSJ.js";
39
39
  import "./chunk-ZFXCQPNO.js";
@@ -41,8 +41,8 @@ import "./chunk-7OGJQP7T.js";
41
41
  import "./chunk-E6ZDCOHM.js";
42
42
  import "./chunk-OIF36KGD.js";
43
43
  import "./chunk-7DTASS5T.js";
44
- import "./chunk-7PCZGNG2.js";
45
- import "./chunk-M3VYPE2H.js";
44
+ import "./chunk-6RHNCKHG.js";
45
+ import "./chunk-YNQ6DFSV.js";
46
46
  import "./chunk-BMFZLLNI.js";
47
47
  import "./chunk-CI7RKSRE.js";
48
48
  import "./chunk-6HMYUWXR.js";
@@ -1,9 +1,9 @@
1
1
  import { Readable, Writable } from 'node:stream';
2
- import { E as EngramAccessService } from './access-service-D_nbpexW.js';
2
+ import { E as EngramAccessService } from './access-service-D0SLB4MH.js';
3
3
  import './storage.js';
4
4
  import './page-versioning.js';
5
5
  import './consolidation-operator.js';
6
- import './types-CgcCpUrf.js';
6
+ import './types-D96bCB3C.js';
7
7
  import './types-ByK7T3L6.js';
8
8
  import './index-DJ9QWMw-.js';
9
9
  import './memory-projection-store.js';
@@ -13,16 +13,16 @@ import 'better-sqlite3';
13
13
  import './types-B1VHaf2w.js';
14
14
  import './recall-explain-renderer.js';
15
15
  import './recall-state.js';
16
+ import './search/port.js';
16
17
  import './recall-xray.js';
17
18
  import './memory-provenance.js';
18
19
  import './user-model.js';
19
20
  import './recall-audit-anomaly.js';
20
21
  import './recall-audit.js';
21
22
  import './explicit-capture.js';
22
- import './orchestrator-D1wcmPNj.js';
23
+ import './orchestrator-Cg1UkvmO.js';
23
24
  import './briefing.js';
24
25
  import './buffer.js';
25
- import './search/port.js';
26
26
  import './transcript.js';
27
27
  import './session-integrity.js';
28
28
  import './summarizer.js';
@@ -44,7 +44,7 @@ import './lcm/archive.js';
44
44
  import './lcm/summarizer.js';
45
45
  import './lcm/dag.js';
46
46
  import './lcm/queue.js';
47
- import './semantic-consolidation-MWOdNtSE.js';
47
+ import './semantic-consolidation-BICZvQ3C.js';
48
48
  import './connectors/codex-materialize.js';
49
49
  import './logger.js';
50
50
  import './conversation-index/backend.js';
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  EngramMcpServer
3
- } from "./chunk-7H7J3ZWN.js";
3
+ } from "./chunk-2KDQI363.js";
4
4
  import "./chunk-T4WDJPEZ.js";
5
5
  import "./chunk-D24OXEPB.js";
6
- import "./chunk-RP2U54GG.js";
6
+ import "./chunk-DFAXGZKI.js";
7
7
  import "./chunk-GDASG7NC.js";
8
8
  import "./chunk-GDB4J2H3.js";
9
9
  import "./chunk-DHGSZ3UD.js";
@@ -17,14 +17,14 @@ import "./chunk-5RIRL3XL.js";
17
17
  import "./chunk-JGSKJHF7.js";
18
18
  import "./chunk-FF4KLI5W.js";
19
19
  import "./chunk-2MXEVL75.js";
20
- import "./chunk-UNLHHTKN.js";
21
- import "./chunk-R2EBP6CM.js";
22
- import "./chunk-6G5JEN55.js";
20
+ import "./chunk-WOQIHC67.js";
21
+ import "./chunk-35HP3TGR.js";
22
+ import "./chunk-FZC2WSDB.js";
23
23
  import "./chunk-CYEPCZN5.js";
24
- import "./chunk-GRYAECRV.js";
24
+ import "./chunk-ZJH723NM.js";
25
25
  import "./chunk-JOASJWQR.js";
26
26
  import "./chunk-RN7MUWON.js";
27
- import "./chunk-5PLUC5OB.js";
27
+ import "./chunk-WSQG37DV.js";
28
28
  import "./chunk-Q4CAQGKQ.js";
29
29
  import "./chunk-CINZGPSJ.js";
30
30
  import "./chunk-ZFXCQPNO.js";
@@ -32,8 +32,8 @@ import "./chunk-7OGJQP7T.js";
32
32
  import "./chunk-E6ZDCOHM.js";
33
33
  import "./chunk-OIF36KGD.js";
34
34
  import "./chunk-7DTASS5T.js";
35
- import "./chunk-7PCZGNG2.js";
36
- import "./chunk-M3VYPE2H.js";
35
+ import "./chunk-6RHNCKHG.js";
36
+ import "./chunk-YNQ6DFSV.js";
37
37
  import "./chunk-BMFZLLNI.js";
38
38
  import "./chunk-CI7RKSRE.js";
39
39
  import "./chunk-6HMYUWXR.js";
@@ -1,12 +1,12 @@
1
1
  import { StorageManager } from './storage.js';
2
2
  import { a as Peer, b as PeerProfile } from './types-B1VHaf2w.js';
3
3
  import { RecallExplainJsonPayload } from './recall-explain-renderer.js';
4
- import { P as PluginConfig, at as ScopeProfileLayerId, au as ScopeProfilePromotionTarget, ah as DaySummaryResult, H as RecallPlanMode, K as RecallDisclosure, g as MemoryFile, n as MemoryLifecycleEvent, x as EntityFile, h as MemoryStatus, av as DreamsStatusResult, aw as DreamsPhase, ax as DreamsRunResult } from './types-CgcCpUrf.js';
4
+ import { P as PluginConfig, at as ScopeProfileLayerId, au as ScopeProfilePromotionTarget, ah as DaySummaryResult, H as RecallPlanMode, K as RecallDisclosure, g as MemoryFile, n as MemoryLifecycleEvent, x as EntityFile, h as MemoryStatus, av as DreamsStatusResult, aw as DreamsPhase, ax as DreamsRunResult } from './types-D96bCB3C.js';
5
5
  import { AnomalyDetectorResult } from './recall-audit-anomaly.js';
6
6
  import { ExplicitCaptureInput } from './explicit-capture.js';
7
7
  import { BudgetDecision } from './cross-namespace-budget.js';
8
8
  import { readMemoryGovernanceRunArtifact } from './maintenance/memory-governance.js';
9
- import { O as Orchestrator, I as IntentDebugSnapshot, G as GraphRecallSnapshot, P as PatternReinforcementResult, W as WearablesService } from './orchestrator-D1wcmPNj.js';
9
+ import { O as Orchestrator, I as IntentDebugSnapshot, G as GraphRecallSnapshot, P as PatternReinforcementResult, W as WearablesService } from './orchestrator-Cg1UkvmO.js';
10
10
  import { LiveConnectorsRunSummary } from './live-connectors-runner.js';
11
11
  import { LastRecallSnapshot } from './recall-state.js';
12
12
  import { GraphSnapshotRequest, GraphSnapshotResponse } from './graph-snapshot.js';
@@ -1,13 +1,13 @@
1
1
  import './storage.js';
2
2
  import './types-B1VHaf2w.js';
3
- export { C as CodingScopedWriteInput, h as ENGRAM_ACCESS_WRITE_SCHEMA_VERSION, i as EngramAccessActionConfidenceRequest, j as EngramAccessActionConfidenceResponse, k as EngramAccessBriefingRequest, l as EngramAccessBriefingResponse, m as EngramAccessCapsuleListResponse, n as EngramAccessDaySummaryRequest, o as EngramAccessEntityListResponse, p as EngramAccessEntityResponse, q as EngramAccessEntitySummary, r as EngramAccessHealthResponse, b as EngramAccessInputError, s as EngramAccessLcmCompactionFlushRequest, t as EngramAccessLcmCompactionFlushResponse, u as EngramAccessLcmCompactionRecordRequest, v as EngramAccessLcmCompactionRecordResponse, w as EngramAccessLcmSearchRequest, x as EngramAccessLcmSearchResponse, y as EngramAccessLcmStatusResponse, z as EngramAccessMaintenanceResponse, A as EngramAccessMemoryBrowseRequest, B as EngramAccessMemoryBrowseResponse, D as EngramAccessMemoryRecord, F as EngramAccessMemoryResponse, G as EngramAccessMemoryStoreRequest, H as EngramAccessMemorySummary, I as EngramAccessObserveMessage, J as EngramAccessObserveRequest, K as EngramAccessObserveResponse, L as EngramAccessOfflineSyncApplyFileContentRequest, M as EngramAccessOfflineSyncApplyFileContentResponse, N as EngramAccessOfflineSyncApplyRequest, O as EngramAccessOfflineSyncApplyResponse, Q as EngramAccessOfflineSyncFileContentRequest, R as EngramAccessOfflineSyncFileContentResponse, S as EngramAccessOfflineSyncFilesRequest, T as EngramAccessOfflineSyncFilesResponse, U as EngramAccessOfflineSyncSnapshotRequest, V as EngramAccessOfflineSyncSnapshotResponse, W as EngramAccessOfflineSyncSnapshotStreamResponse, X as EngramAccessQmdCollectionState, Y as EngramAccessQmdHealthResponse, Z as EngramAccessQualityResponse, _ as EngramAccessRecallExplainRequest, $ as EngramAccessRecallExplainResponse, a0 as EngramAccessRecallRequest, a as EngramAccessRecallResponse, a1 as EngramAccessReviewDispositionRequest, a2 as EngramAccessReviewDispositionResponse, a3 as EngramAccessReviewQueueResponse, a4 as EngramAccessScopeDebug, E as EngramAccessService, a5 as EngramAccessSetCodingContextRequest, a6 as EngramAccessSuggestionSubmitRequest, a7 as EngramAccessTimelineResponse, a8 as EngramAccessTrustZoneBrowseRequest, a9 as EngramAccessTrustZoneBrowseResponse, aa as EngramAccessTrustZoneDemoSeedRequest, ab as EngramAccessTrustZoneDemoSeedResponse, ac as EngramAccessTrustZonePromoteRequest, ad as EngramAccessTrustZonePromoteResponse, ae as EngramAccessTrustZoneRecordSummary, af as EngramAccessTrustZoneStatusResponse, ag as EngramAccessWriteEnvelope, ah as EngramAccessWriteResponse, ai as MemoryScopePlan, aj as shapeMemorySummary } from './access-service-D_nbpexW.js';
3
+ export { C as CodingScopedWriteInput, h as ENGRAM_ACCESS_WRITE_SCHEMA_VERSION, i as EngramAccessActionConfidenceRequest, j as EngramAccessActionConfidenceResponse, k as EngramAccessBriefingRequest, l as EngramAccessBriefingResponse, m as EngramAccessCapsuleListResponse, n as EngramAccessDaySummaryRequest, o as EngramAccessEntityListResponse, p as EngramAccessEntityResponse, q as EngramAccessEntitySummary, r as EngramAccessHealthResponse, b as EngramAccessInputError, s as EngramAccessLcmCompactionFlushRequest, t as EngramAccessLcmCompactionFlushResponse, u as EngramAccessLcmCompactionRecordRequest, v as EngramAccessLcmCompactionRecordResponse, w as EngramAccessLcmSearchRequest, x as EngramAccessLcmSearchResponse, y as EngramAccessLcmStatusResponse, z as EngramAccessMaintenanceResponse, A as EngramAccessMemoryBrowseRequest, B as EngramAccessMemoryBrowseResponse, D as EngramAccessMemoryRecord, F as EngramAccessMemoryResponse, G as EngramAccessMemoryStoreRequest, H as EngramAccessMemorySummary, I as EngramAccessObserveMessage, J as EngramAccessObserveRequest, K as EngramAccessObserveResponse, L as EngramAccessOfflineSyncApplyFileContentRequest, M as EngramAccessOfflineSyncApplyFileContentResponse, N as EngramAccessOfflineSyncApplyRequest, O as EngramAccessOfflineSyncApplyResponse, Q as EngramAccessOfflineSyncFileContentRequest, R as EngramAccessOfflineSyncFileContentResponse, S as EngramAccessOfflineSyncFilesRequest, T as EngramAccessOfflineSyncFilesResponse, U as EngramAccessOfflineSyncSnapshotRequest, V as EngramAccessOfflineSyncSnapshotResponse, W as EngramAccessOfflineSyncSnapshotStreamResponse, X as EngramAccessQmdCollectionState, Y as EngramAccessQmdHealthResponse, Z as EngramAccessQualityResponse, _ as EngramAccessRecallExplainRequest, $ as EngramAccessRecallExplainResponse, a0 as EngramAccessRecallRequest, a as EngramAccessRecallResponse, a1 as EngramAccessReviewDispositionRequest, a2 as EngramAccessReviewDispositionResponse, a3 as EngramAccessReviewQueueResponse, a4 as EngramAccessScopeDebug, E as EngramAccessService, a5 as EngramAccessSetCodingContextRequest, a6 as EngramAccessSuggestionSubmitRequest, a7 as EngramAccessTimelineResponse, a8 as EngramAccessTrustZoneBrowseRequest, a9 as EngramAccessTrustZoneBrowseResponse, aa as EngramAccessTrustZoneDemoSeedRequest, ab as EngramAccessTrustZoneDemoSeedResponse, ac as EngramAccessTrustZonePromoteRequest, ad as EngramAccessTrustZonePromoteResponse, ae as EngramAccessTrustZoneRecordSummary, af as EngramAccessTrustZoneStatusResponse, ag as EngramAccessWriteEnvelope, ah as EngramAccessWriteResponse, ai as MemoryScopePlan, aj as shapeMemorySummary } from './access-service-D0SLB4MH.js';
4
4
  import './recall-explain-renderer.js';
5
- import './types-CgcCpUrf.js';
5
+ import './types-D96bCB3C.js';
6
6
  import './recall-audit-anomaly.js';
7
7
  import './explicit-capture.js';
8
8
  import './cross-namespace-budget.js';
9
9
  import './maintenance/memory-governance.js';
10
- import './orchestrator-D1wcmPNj.js';
10
+ import './orchestrator-Cg1UkvmO.js';
11
11
  import './live-connectors-runner.js';
12
12
  import './recall-state.js';
13
13
  import './graph-snapshot.js';
@@ -29,12 +29,12 @@ import './memory-projection-store.js';
29
29
  import './runtime/better-sqlite.js';
30
30
  import 'better-sqlite3';
31
31
  import './types-ByK7T3L6.js';
32
+ import './search/port.js';
32
33
  import './memory-provenance.js';
33
34
  import './user-model.js';
34
35
  import './recall-audit.js';
35
36
  import './briefing.js';
36
37
  import './buffer.js';
37
- import './search/port.js';
38
38
  import './transcript.js';
39
39
  import './session-integrity.js';
40
40
  import './summarizer.js';
@@ -52,7 +52,7 @@ import './lcm/archive.js';
52
52
  import './lcm/summarizer.js';
53
53
  import './lcm/dag.js';
54
54
  import './lcm/queue.js';
55
- import './semantic-consolidation-MWOdNtSE.js';
55
+ import './semantic-consolidation-BICZvQ3C.js';
56
56
  import './connectors/codex-materialize.js';
57
57
  import './logger.js';
58
58
  import './conversation-index/backend.js';
@@ -3,7 +3,7 @@ import {
3
3
  EngramAccessInputError,
4
4
  EngramAccessService,
5
5
  shapeMemorySummary
6
- } from "./chunk-RP2U54GG.js";
6
+ } from "./chunk-DFAXGZKI.js";
7
7
  import "./chunk-GDASG7NC.js";
8
8
  import "./chunk-GDB4J2H3.js";
9
9
  import "./chunk-DHGSZ3UD.js";
@@ -17,14 +17,14 @@ import "./chunk-5RIRL3XL.js";
17
17
  import "./chunk-JGSKJHF7.js";
18
18
  import "./chunk-FF4KLI5W.js";
19
19
  import "./chunk-2MXEVL75.js";
20
- import "./chunk-UNLHHTKN.js";
21
- import "./chunk-R2EBP6CM.js";
22
- import "./chunk-6G5JEN55.js";
20
+ import "./chunk-WOQIHC67.js";
21
+ import "./chunk-35HP3TGR.js";
22
+ import "./chunk-FZC2WSDB.js";
23
23
  import "./chunk-CYEPCZN5.js";
24
- import "./chunk-GRYAECRV.js";
24
+ import "./chunk-ZJH723NM.js";
25
25
  import "./chunk-JOASJWQR.js";
26
26
  import "./chunk-RN7MUWON.js";
27
- import "./chunk-5PLUC5OB.js";
27
+ import "./chunk-WSQG37DV.js";
28
28
  import "./chunk-Q4CAQGKQ.js";
29
29
  import "./chunk-CINZGPSJ.js";
30
30
  import "./chunk-ZFXCQPNO.js";
@@ -32,8 +32,8 @@ import "./chunk-7OGJQP7T.js";
32
32
  import "./chunk-E6ZDCOHM.js";
33
33
  import "./chunk-OIF36KGD.js";
34
34
  import "./chunk-7DTASS5T.js";
35
- import "./chunk-7PCZGNG2.js";
36
- import "./chunk-M3VYPE2H.js";
35
+ import "./chunk-6RHNCKHG.js";
36
+ import "./chunk-YNQ6DFSV.js";
37
37
  import "./chunk-BMFZLLNI.js";
38
38
  import "./chunk-CI7RKSRE.js";
39
39
  import "./chunk-6HMYUWXR.js";
@@ -1,5 +1,5 @@
1
1
  import { RetrievedMemoryCorrectionState, RetrievedMemorySafety } from './memory-provenance.js';
2
- import './types-CgcCpUrf.js';
2
+ import './types-D96bCB3C.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
5
5
  import './user-model.js';
@@ -1,4 +1,4 @@
1
- import { P as PluginConfig, g as MemoryFile } from './types-CgcCpUrf.js';
1
+ import { P as PluginConfig, g as MemoryFile } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { A as ActiveRecallChatType, a as ActiveRecallQueryMode, b as ActiveRecallPromptStyle, c as ActiveRecallThinking, d as ActiveRecallModelFallbackPolicy } from './types-CgcCpUrf.js';
1
+ import { A as ActiveRecallChatType, a as ActiveRecallQueryMode, b as ActiveRecallPromptStyle, c as ActiveRecallThinking, d as ActiveRecallModelFallbackPolicy } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { B as BehaviorSignalEvent, P as PluginConfig, e as BehaviorLoopPolicyState } from './types-CgcCpUrf.js';
1
+ import { B as BehaviorSignalEvent, P as PluginConfig, e as BehaviorLoopPolicyState } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { M as MemoryCategory, B as BehaviorSignalEvent } from './types-CgcCpUrf.js';
1
+ import { M as MemoryCategory, B as BehaviorSignalEvent } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,5 +1,5 @@
1
- import { P as PluginConfig } from './types-CgcCpUrf.js';
2
- import { O as Orchestrator } from './orchestrator-D1wcmPNj.js';
1
+ import { P as PluginConfig } from './types-D96bCB3C.js';
2
+ import { O as Orchestrator } from './orchestrator-Cg1UkvmO.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
5
5
  import './briefing.js';
@@ -37,7 +37,7 @@ import './lcm/archive.js';
37
37
  import './lcm/summarizer.js';
38
38
  import './lcm/dag.js';
39
39
  import './lcm/queue.js';
40
- import './semantic-consolidation-MWOdNtSE.js';
40
+ import './semantic-consolidation-BICZvQ3C.js';
41
41
  import './connectors/codex-materialize.js';
42
42
  import './logger.js';
43
43
  import './conversation-index/backend.js';
@@ -1,5 +1,5 @@
1
1
  import { StorageManager } from './storage.js';
2
- import { N as BriefingSections, O as BriefingFollowup, Q as BriefingFocus, S as CalendarSource, U as CalendarEvent, g as MemoryFile, V as BriefingActiveThread, W as BriefingResult, x as EntityFile, X as BriefingRecentEntity } from './types-CgcCpUrf.js';
2
+ import { N as BriefingSections, O as BriefingFollowup, S as BriefingFocus, U as CalendarSource, V as CalendarEvent, g as MemoryFile, W as BriefingActiveThread, X as BriefingResult, x as EntityFile, Y as BriefingRecentEntity } from './types-D96bCB3C.js';
3
3
  import './page-versioning.js';
4
4
  import './consolidation-operator.js';
5
5
  import './memory-projection-store.js';
@@ -1,4 +1,4 @@
1
- import { o as BufferSurpriseEvent } from './types-CgcCpUrf.js';
1
+ import { o as BufferSurpriseEvent } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
package/dist/buffer.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { StorageManager } from './storage.js';
2
- import { P as PluginConfig, Y as BufferTurn } from './types-CgcCpUrf.js';
2
+ import { P as PluginConfig, Z as BufferTurn } from './types-D96bCB3C.js';
3
3
  import './page-versioning.js';
4
4
  import './consolidation-operator.js';
5
5
  import './memory-projection-store.js';
@@ -1,5 +1,5 @@
1
1
  import { FallbackLlmClient } from './fallback-llm.js';
2
- import { G as GatewayConfig, f as AgentPersonaModelConfig } from './types-CgcCpUrf.js';
2
+ import { G as GatewayConfig, f as AgentPersonaModelConfig } from './types-D96bCB3C.js';
3
3
  import './resolve-provider-secret.js';
4
4
  import './types-ByK7T3L6.js';
5
5
  import './index-DJ9QWMw-.js';
@@ -2,7 +2,7 @@ import { CausalChainIndex } from './causal-chain.js';
2
2
  import { ConsolidatedPreference } from './compounding/preference-consolidator.js';
3
3
  import './causal-trajectory.js';
4
4
  import './objective-state.js';
5
- import './types-CgcCpUrf.js';
5
+ import './types-D96bCB3C.js';
6
6
  import './types-ByK7T3L6.js';
7
7
  import './index-DJ9QWMw-.js';
8
8
  import './lcm/engine.js';
@@ -1,4 +1,4 @@
1
- import { G as GatewayConfig, f as AgentPersonaModelConfig, P as PluginConfig, g as MemoryFile } from './types-CgcCpUrf.js';
1
+ import { G as GatewayConfig, f as AgentPersonaModelConfig, P as PluginConfig, g as MemoryFile } from './types-D96bCB3C.js';
2
2
  import { RolloutSummaryInput, MaterializeResult } from './connectors/codex-materialize.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-D24OXEPB.js";
12
12
  import {
13
13
  EngramAccessInputError
14
- } from "./chunk-RP2U54GG.js";
14
+ } from "./chunk-DFAXGZKI.js";
15
15
  import {
16
16
  projectTagProjectId
17
17
  } from "./chunk-GYSYLGNE.js";
@@ -3117,4 +3117,4 @@ ${body}`;
3117
3117
  export {
3118
3118
  EngramMcpServer
3119
3119
  };
3120
- //# sourceMappingURL=chunk-7H7J3ZWN.js.map
3120
+ //# sourceMappingURL=chunk-2KDQI363.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  MeilisearchBackend
3
- } from "./chunk-6G5JEN55.js";
3
+ } from "./chunk-FZC2WSDB.js";
4
4
  import {
5
5
  NoopSearchBackend
6
6
  } from "./chunk-CYEPCZN5.js";
7
7
  import {
8
8
  OramaBackend
9
- } from "./chunk-GRYAECRV.js";
9
+ } from "./chunk-ZJH723NM.js";
10
10
  import {
11
11
  RemoteSearchBackend
12
12
  } from "./chunk-JOASJWQR.js";
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-RN7MUWON.js";
16
16
  import {
17
17
  LanceDbBackend
18
- } from "./chunk-5PLUC5OB.js";
18
+ } from "./chunk-WSQG37DV.js";
19
19
  import {
20
20
  createConversationIndexBackend
21
21
  } from "./chunk-7OGJQP7T.js";
@@ -24,7 +24,7 @@ import {
24
24
  } from "./chunk-E6ZDCOHM.js";
25
25
  import {
26
26
  QmdClient
27
- } from "./chunk-7PCZGNG2.js";
27
+ } from "./chunk-6RHNCKHG.js";
28
28
  import {
29
29
  log
30
30
  } from "./chunk-2ODBA7MQ.js";
@@ -170,4 +170,4 @@ export {
170
170
  createConversationSearchBackend,
171
171
  createConversationIndexRuntime
172
172
  };
173
- //# sourceMappingURL=chunk-R2EBP6CM.js.map
173
+ //# sourceMappingURL=chunk-35HP3TGR.js.map
@@ -29,6 +29,20 @@ function clampGraphRecallExpandedEntries(entries, maxEntries = 64) {
29
29
  return out;
30
30
  }).filter((item) => item.path.length > 0 && item.namespace.length > 0).slice(0, limit);
31
31
  }
32
+ function snapshotMatchesExpectedIdentity(current, expected) {
33
+ if (!expected) return true;
34
+ if (typeof expected.writeNonce === "string" && expected.writeNonce.length > 0) {
35
+ return current.writeNonce === expected.writeNonce;
36
+ }
37
+ const hasExpectedTraceId = typeof expected.traceId === "string" && expected.traceId.length > 0;
38
+ if (hasExpectedTraceId) {
39
+ return current.traceId === expected.traceId;
40
+ }
41
+ if (expected.recordedAt !== void 0) {
42
+ return current.recordedAt === expected.recordedAt;
43
+ }
44
+ return true;
45
+ }
32
46
  function cloneTierExplain(tierExplain) {
33
47
  if (!tierExplain) return void 0;
34
48
  return structuredClone(tierExplain);
@@ -113,7 +127,8 @@ var LastRecallStore = class {
113
127
  identityInjectionMode: opts.identityInjection?.mode,
114
128
  identityInjectedChars: opts.identityInjection?.injectedChars,
115
129
  identityInjectionTruncated: opts.identityInjection?.truncated,
116
- tierExplain: opts.tierExplain
130
+ tierExplain: opts.tierExplain,
131
+ backendDegradations: opts.backendDegradations && opts.backendDegradations.length > 0 ? opts.backendDegradations : void 0
117
132
  };
118
133
  const snapshot = cloneLastRecallSnapshot(liveSnapshot);
119
134
  this.state[opts.sessionKey] = snapshot;
@@ -152,20 +167,7 @@ var LastRecallStore = class {
152
167
  async annotateTierExplain(sessionKey, tierExplain, expected) {
153
168
  const current = this.state[sessionKey];
154
169
  if (!current) return;
155
- if (expected) {
156
- if (typeof expected.writeNonce === "string" && expected.writeNonce.length > 0) {
157
- if (current.writeNonce !== expected.writeNonce) return;
158
- } else {
159
- const hasExpectedTraceId = typeof expected.traceId === "string" && expected.traceId.length > 0;
160
- const traceIdMatches = hasExpectedTraceId && current.traceId === expected.traceId;
161
- const recordedAtMatches = expected.recordedAt !== void 0 && current.recordedAt === expected.recordedAt;
162
- if (hasExpectedTraceId) {
163
- if (!traceIdMatches) return;
164
- } else if (expected.recordedAt !== void 0 && !recordedAtMatches) {
165
- return;
166
- }
167
- }
168
- }
170
+ if (!snapshotMatchesExpectedIdentity(current, expected)) return;
169
171
  this.state[sessionKey] = {
170
172
  ...current,
171
173
  tierExplain: cloneTierExplain(tierExplain)
@@ -258,4 +260,4 @@ export {
258
260
  LastRecallStore,
259
261
  TierMigrationStatusStore
260
262
  };
261
- //# sourceMappingURL=chunk-FWIROLS6.js.map
263
+ //# sourceMappingURL=chunk-44VFF3BB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/recall-state.ts"],"sourcesContent":["import { appendFile, mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { createHash, randomUUID } from \"node:crypto\";\nimport { log } from \"./logger.js\";\nimport { writeFileAtomically } from \"./maintenance/atomic-file.js\";\nimport type { SearchDegradation } from \"./search/port.js\";\nimport type {\n IdentityInjectionMode,\n RecallPlanMode,\n RecallTierExplain,\n} from \"./types.js\";\n\nexport interface LastRecallBudgetSummary {\n requestedTopK?: number;\n appliedTopK: number;\n recallBudgetChars: number;\n maxMemoryTokens: number;\n qmdFetchLimit?: number;\n qmdHybridFetchLimit?: number;\n finalContextChars?: number;\n truncated?: boolean;\n includedSections?: string[];\n omittedSections?: string[];\n}\n\nexport interface LastRecallSnapshot {\n sessionKey: string;\n recordedAt: string;\n queryHash: string;\n queryLen: number;\n memoryIds: string[];\n namespace?: string;\n recallNamespaces?: string[];\n traceId?: string;\n plannerMode?: RecallPlanMode;\n requestedMode?: RecallPlanMode;\n source?: string;\n fallbackUsed?: boolean;\n sourcesUsed?: string[];\n budgetsApplied?: LastRecallBudgetSummary;\n latencyMs?: number;\n resultPaths?: string[];\n policyVersion?: string;\n identityInjectionMode?: IdentityInjectionMode | \"none\";\n identityInjectedChars?: number;\n identityInjectionTruncated?: boolean;\n /**\n * Collision-safe write nonce. Random UUID set on every `record()`\n * call so the observation-mode direct-answer hook can detect stale\n * snapshots and avoid annotating a snapshot that a subsequent recall\n * already replaced (issue #518).\n */\n writeNonce?: string;\n /**\n * Optional tier-level explanation of how recall was served\n * (issue #518). Populated by orchestrator call sites that can\n * identify a concrete tier; surfaces expose the block via\n * `engram query --explain`, the `?explain=1` HTTP flag, and the\n * `remnic_recall_explain` MCP tool. Orthogonal to the existing\n * graph-path `recallExplain` operation.\n */\n tierExplain?: RecallTierExplain;\n /**\n * Backend degradations observed while serving this recall (issue #1536).\n * Present only when a search backend reported unavailable/loading/timeout\n * during the recall — distinguishing \"no matches\" from \"backend could not\n * answer\" (CLAUDE.md rule 34). Deliberately independent of `tierExplain`,\n * which is gated behind `recallDirectAnswerEnabled`.\n */\n backendDegradations?: SearchDegradation[];\n}\n\nexport interface GraphRecallExpandedEntry {\n path: string;\n score: number;\n namespace: string;\n seed: string;\n hopDepth: number;\n decayedWeight: number;\n graphType: \"entity\" | \"time\" | \"causal\";\n /**\n * Issue #681 PR 3/3 — confidence of the edge that produced this entry's\n * recorded provenance (strongest edge along the chosen entry path).\n * Range `[0, 1]`. Optional so persisted snapshots from older builds\n * round-trip through `clampGraphRecallExpandedEntries` without dropping.\n */\n edgeConfidence?: number;\n}\n\nexport function clampGraphRecallExpandedEntries(\n entries: unknown,\n maxEntries: number = 64,\n): GraphRecallExpandedEntry[] {\n const limit = Math.max(1, Math.floor(maxEntries));\n if (!Array.isArray(entries)) return [];\n return entries\n .filter((item): item is Record<string, unknown> => !!item && typeof item === \"object\")\n .map((item) => {\n const graphType: \"entity\" | \"time\" | \"causal\" =\n item.graphType === \"entity\" || item.graphType === \"time\" || item.graphType === \"causal\"\n ? item.graphType\n : \"entity\";\n const out: GraphRecallExpandedEntry = {\n path: typeof item.path === \"string\" ? item.path : \"\",\n score: typeof item.score === \"number\" && Number.isFinite(item.score) ? item.score : 0,\n namespace: typeof item.namespace === \"string\" ? item.namespace : \"\",\n seed: typeof item.seed === \"string\" ? item.seed : \"\",\n hopDepth:\n typeof item.hopDepth === \"number\" && Number.isFinite(item.hopDepth)\n ? Math.max(0, Math.floor(item.hopDepth))\n : 0,\n decayedWeight:\n typeof item.decayedWeight === \"number\" && Number.isFinite(item.decayedWeight)\n ? Math.max(0, item.decayedWeight)\n : 0,\n graphType,\n };\n // Issue #681 PR 3/3: clamp `edgeConfidence` into [0, 1] when present.\n // Older snapshots without the field round-trip cleanly via the\n // optional shape; legacy callers always rendered as 1.0.\n if (\n typeof item.edgeConfidence === \"number\" &&\n Number.isFinite(item.edgeConfidence)\n ) {\n out.edgeConfidence = Math.min(1, Math.max(0, item.edgeConfidence));\n }\n return out;\n })\n .filter((item) => item.path.length > 0 && item.namespace.length > 0)\n .slice(0, limit);\n}\n\ntype LastRecallState = Record<string, LastRecallSnapshot>;\ntype StateFileWriter = (filePath: string, content: string) => Promise<void>;\n\n/**\n * Deep-copy a RecallTierExplain block. Used by both the write path\n * (so caller mutation after `record()` cannot tear the persisted\n * snapshot) and the read path (so caller mutation after `get()` /\n * `getMostRecent()` cannot tear the in-memory store).\n *\n * Uses structuredClone so future additions to RecallTierExplain do\n * not silently share references through hand-enumerated fields —\n * matching the pattern used elsewhere in the codebase (e.g.,\n * qmd-recall-cache.ts). The payload is pure JSON-shaped data, so\n * structuredClone is both safe and complete here.\n */\n/**\n * Stale-snapshot identity guard shared by the annotate methods (issue #518):\n * a writeNonce match wins outright; otherwise traceId (when expected) and\n * recordedAt are compared. Extracted so every annotation surface applies\n * identical guards (CLAUDE.md rule 22).\n */\nfunction snapshotMatchesExpectedIdentity(\n current: LastRecallSnapshot,\n expected?: { writeNonce?: string; traceId?: string; recordedAt?: string },\n): boolean {\n if (!expected) return true;\n if (typeof expected.writeNonce === \"string\" && expected.writeNonce.length > 0) {\n return current.writeNonce === expected.writeNonce;\n }\n const hasExpectedTraceId =\n typeof expected.traceId === \"string\" && expected.traceId.length > 0;\n if (hasExpectedTraceId) {\n return current.traceId === expected.traceId;\n }\n if (expected.recordedAt !== undefined) {\n return current.recordedAt === expected.recordedAt;\n }\n return true;\n}\n\nfunction cloneTierExplain(\n tierExplain: RecallTierExplain | undefined,\n): RecallTierExplain | undefined {\n if (!tierExplain) return undefined;\n return structuredClone(tierExplain);\n}\n\n/**\n * Deep-copy a LastRecallSnapshot so callers that receive it cannot\n * mutate the store's internal state through mutable array/object\n * fields. Same structuredClone rationale as cloneTierExplain above.\n */\nfunction cloneLastRecallSnapshot(\n snapshot: LastRecallSnapshot | null,\n): LastRecallSnapshot | null {\n if (!snapshot) return null;\n return structuredClone(snapshot);\n}\n\nexport interface TierMigrationCycleSummary {\n trigger: \"extraction\" | \"maintenance\" | \"manual\";\n scanned: number;\n migrated: number;\n promoted: number;\n demoted: number;\n limit: number;\n dryRun: boolean;\n skipped?: string;\n errorCount?: number;\n}\n\nexport interface TierMigrationStatusSnapshot {\n updatedAt: string;\n lastCycle: TierMigrationCycleSummary | null;\n totals: {\n cycles: number;\n scanned: number;\n migrated: number;\n promoted: number;\n demoted: number;\n errors: number;\n };\n}\n\nconst DEFAULT_TIER_MIGRATION_STATUS: TierMigrationStatusSnapshot = {\n updatedAt: new Date(0).toISOString(),\n lastCycle: null,\n totals: {\n cycles: 0,\n scanned: 0,\n migrated: 0,\n promoted: 0,\n demoted: 0,\n errors: 0,\n },\n};\n\nexport class LastRecallStore {\n private readonly statePath: string;\n private readonly impressionsPath: string;\n private readonly writeStateFile: StateFileWriter;\n private state: LastRecallState = {};\n private stateWriteChain: Promise<void> = Promise.resolve();\n\n constructor(memoryDir: string, options: { writeStateFile?: StateFileWriter } = {}) {\n this.statePath = path.join(memoryDir, \"state\", \"last_recall.json\");\n this.impressionsPath = path.join(memoryDir, \"state\", \"recall_impressions.jsonl\");\n this.writeStateFile =\n options.writeStateFile ??\n (async (filePath, content) => {\n await writeFileAtomically(filePath, content);\n });\n }\n\n async load(): Promise<void> {\n try {\n const raw = await readFile(this.statePath, \"utf-8\");\n const parsed = JSON.parse(raw) as LastRecallState;\n if (parsed && typeof parsed === \"object\") this.state = parsed;\n } catch {\n this.state = {};\n }\n }\n\n get(sessionKey: string): LastRecallSnapshot | null {\n // Defensive copy: callers must not be able to mutate internal state\n // by reaching into array/object fields on the returned snapshot.\n return cloneLastRecallSnapshot(this.state[sessionKey] ?? null);\n }\n\n getMostRecent(): LastRecallSnapshot | null {\n const snapshots = Object.values(this.state);\n if (snapshots.length === 0) return null;\n // Secondary key on sessionKey keeps the sort stable when two\n // snapshots share a recordedAt timestamp (CLAUDE.md rule 19).\n snapshots.sort((a, b) => {\n const byTime = b.recordedAt.localeCompare(a.recordedAt);\n if (byTime !== 0) return byTime;\n return a.sessionKey.localeCompare(b.sessionKey);\n });\n return cloneLastRecallSnapshot(snapshots[0] ?? null);\n }\n\n /**\n * Persist last-recall snapshot and append an impression log entry.\n * Does not store raw query text; uses a stable hash for correlation.\n */\n async record(opts: {\n sessionKey: string;\n query: string;\n memoryIds: string[];\n namespace?: string;\n recallNamespaces?: string[];\n traceId?: string;\n plannerMode?: RecallPlanMode;\n requestedMode?: RecallPlanMode;\n source?: string;\n fallbackUsed?: boolean;\n sourcesUsed?: string[];\n budgetsApplied?: LastRecallBudgetSummary;\n latencyMs?: number;\n resultPaths?: string[];\n policyVersion?: string;\n appendImpression?: boolean;\n identityInjection?: {\n mode: IdentityInjectionMode | \"none\";\n injectedChars: number;\n truncated: boolean;\n };\n /**\n * Per-tier explain annotation (issue #518). When supplied, the\n * snapshot carries it so downstream surfaces (CLI / HTTP / MCP)\n * can render which retrieval tier served the query.\n */\n tierExplain?: RecallTierExplain;\n /**\n * Backend degradations observed while serving this recall (issue #1536).\n * Passed at record time so the published snapshot is born annotated —\n * a post-record annotation would leave a window where readers see the\n * snapshot without them (codex review on #1544).\n */\n backendDegradations?: SearchDegradation[];\n }): Promise<void> {\n const now = new Date().toISOString();\n const queryHash = createHash(\"sha256\").update(opts.query).digest(\"hex\");\n\n // Build the snapshot from opts, then deep-copy it via\n // cloneLastRecallSnapshot so caller arrays/objects passed in\n // `opts` cannot retain a live reference to the persisted state\n // and tear it after record() returns.\n const liveSnapshot: LastRecallSnapshot = {\n sessionKey: opts.sessionKey,\n recordedAt: now,\n queryHash,\n writeNonce: randomUUID(),\n queryLen: opts.query.length,\n memoryIds: opts.memoryIds,\n namespace: opts.namespace,\n recallNamespaces: opts.recallNamespaces,\n traceId: opts.traceId,\n plannerMode: opts.plannerMode,\n requestedMode: opts.requestedMode,\n source: opts.source,\n fallbackUsed: opts.fallbackUsed,\n sourcesUsed: opts.sourcesUsed,\n budgetsApplied: opts.budgetsApplied,\n latencyMs: opts.latencyMs,\n resultPaths: opts.resultPaths,\n policyVersion: opts.policyVersion,\n identityInjectionMode: opts.identityInjection?.mode,\n identityInjectedChars: opts.identityInjection?.injectedChars,\n identityInjectionTruncated: opts.identityInjection?.truncated,\n tierExplain: opts.tierExplain,\n backendDegradations:\n opts.backendDegradations && opts.backendDegradations.length > 0\n ? opts.backendDegradations\n : undefined,\n };\n // `cloneLastRecallSnapshot` handles `null` but that never applies\n // at this call site — the non-null assertion keeps the type\n // checker honest.\n const snapshot = cloneLastRecallSnapshot(liveSnapshot)!;\n\n this.state[opts.sessionKey] = snapshot;\n\n // Keep the state bounded; the impression log is append-only.\n const keys = Object.keys(this.state);\n if (keys.length > 50) {\n const ordered = keys\n .map((k) => ({ k, at: this.state[k]?.recordedAt ?? \"\" }))\n .sort((a, b) => b.at.localeCompare(a.at));\n for (const doomed of ordered.slice(50)) {\n delete this.state[doomed.k];\n }\n }\n\n try {\n await this.flushState();\n } catch (err) {\n log.debug(`last recall store write failed: ${err}`);\n }\n\n if (opts.appendImpression !== false) {\n try {\n await mkdir(path.dirname(this.impressionsPath), { recursive: true });\n await appendFile(this.impressionsPath, JSON.stringify(snapshot) + \"\\n\", \"utf-8\");\n } catch (err) {\n log.debug(`recall impressions append failed: ${err}`);\n }\n }\n }\n\n /**\n * Attach a RecallTierExplain block to the existing snapshot for a\n * session without rewriting the entire snapshot. Used by the\n * post-recall direct-answer annotation path (issue #518 slice 3c):\n * recallInternal records the snapshot first, then the orchestrator\n * fires the direct-answer tier in observation mode and annotates\n * the stored snapshot with whichever tier served the query.\n *\n * No-op when no snapshot exists for the given session; callers do\n * not need to guard on existence.\n */\n async annotateTierExplain(\n sessionKey: string,\n tierExplain: RecallTierExplain,\n expected?: { writeNonce?: string; traceId?: string; recordedAt?: string },\n ): Promise<void> {\n const current = this.state[sessionKey];\n if (!current) return;\n if (!snapshotMatchesExpectedIdentity(current, expected)) return;\n this.state[sessionKey] = {\n ...current,\n tierExplain: cloneTierExplain(tierExplain),\n };\n try {\n await this.flushState();\n } catch (err) {\n log.debug(`last recall tier-explain annotate failed: ${err}`);\n }\n }\n\n\n private flushState(): Promise<void> {\n const run = this.stateWriteChain.catch(() => undefined).then(async () => {\n await mkdir(path.dirname(this.statePath), { recursive: true });\n await this.writeStateFile(this.statePath, JSON.stringify(this.state, null, 2));\n });\n this.stateWriteChain = run.then(\n () => undefined,\n () => undefined,\n );\n return run;\n }\n}\n\nexport class TierMigrationStatusStore {\n private readonly statePath: string;\n private state: TierMigrationStatusSnapshot = structuredClone(DEFAULT_TIER_MIGRATION_STATUS);\n\n constructor(memoryDir: string) {\n this.statePath = path.join(memoryDir, \"state\", \"tier-migration-status.json\");\n }\n\n async load(): Promise<void> {\n try {\n const raw = await readFile(this.statePath, \"utf-8\");\n const parsed = JSON.parse(raw) as Partial<TierMigrationStatusSnapshot> | null;\n if (!parsed || typeof parsed !== \"object\") {\n this.state = structuredClone(DEFAULT_TIER_MIGRATION_STATUS);\n return;\n }\n const totals = parsed.totals && typeof parsed.totals === \"object\"\n ? parsed.totals\n : DEFAULT_TIER_MIGRATION_STATUS.totals;\n this.state = {\n updatedAt:\n typeof parsed.updatedAt === \"string\" && parsed.updatedAt.length > 0\n ? parsed.updatedAt\n : DEFAULT_TIER_MIGRATION_STATUS.updatedAt,\n lastCycle:\n parsed.lastCycle && typeof parsed.lastCycle === \"object\"\n ? (parsed.lastCycle as TierMigrationCycleSummary)\n : null,\n totals: {\n cycles: typeof totals.cycles === \"number\" && Number.isFinite(totals.cycles) ? totals.cycles : 0,\n scanned: typeof totals.scanned === \"number\" && Number.isFinite(totals.scanned) ? totals.scanned : 0,\n migrated: typeof totals.migrated === \"number\" && Number.isFinite(totals.migrated) ? totals.migrated : 0,\n promoted: typeof totals.promoted === \"number\" && Number.isFinite(totals.promoted) ? totals.promoted : 0,\n demoted: typeof totals.demoted === \"number\" && Number.isFinite(totals.demoted) ? totals.demoted : 0,\n errors: typeof totals.errors === \"number\" && Number.isFinite(totals.errors) ? totals.errors : 0,\n },\n };\n } catch {\n this.state = structuredClone(DEFAULT_TIER_MIGRATION_STATUS);\n }\n }\n\n get(): TierMigrationStatusSnapshot {\n return {\n updatedAt: this.state.updatedAt,\n lastCycle: this.state.lastCycle ? { ...this.state.lastCycle } : null,\n totals: { ...this.state.totals },\n };\n }\n\n async recordCycle(summary: TierMigrationCycleSummary): Promise<void> {\n const now = new Date().toISOString();\n const migratedDelta = summary.dryRun ? 0 : Math.max(0, summary.migrated);\n const promotedDelta = summary.dryRun ? 0 : Math.max(0, summary.promoted);\n const demotedDelta = summary.dryRun ? 0 : Math.max(0, summary.demoted);\n const next: TierMigrationStatusSnapshot = {\n updatedAt: now,\n lastCycle: { ...summary },\n totals: {\n cycles: this.state.totals.cycles + 1,\n scanned: this.state.totals.scanned + Math.max(0, summary.scanned),\n migrated: this.state.totals.migrated + migratedDelta,\n promoted: this.state.totals.promoted + promotedDelta,\n demoted: this.state.totals.demoted + demotedDelta,\n errors: this.state.totals.errors + Math.max(0, summary.errorCount ?? 0),\n },\n };\n this.state = next;\n try {\n await mkdir(path.dirname(this.statePath), { recursive: true });\n await writeFile(this.statePath, JSON.stringify(next, null, 2), \"utf-8\");\n } catch (err) {\n log.debug(`tier migration status write failed: ${err}`);\n }\n }\n}\n"],"mappings":"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","names":[]}