@remnic/core 9.69.38 → 9.69.39

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 (245) hide show
  1. package/dist/access-admin-ops-surface.d.ts +2 -2
  2. package/dist/access-admin-ops-surface.js +18 -18
  3. package/dist/access-authorization-probe.d.ts +2 -2
  4. package/dist/access-authorization-probe.js +19 -19
  5. package/dist/access-boundary.d.ts +2 -2
  6. package/dist/access-boundary.js +18 -18
  7. package/dist/access-cli.js +67 -66
  8. package/dist/access-cli.js.map +1 -1
  9. package/dist/access-extraction-force-flush.d.ts +2 -2
  10. package/dist/access-extraction-force-flush.js +18 -18
  11. package/dist/access-http-briefing.d.ts +2 -2
  12. package/dist/access-http-briefing.js +19 -19
  13. package/dist/access-http-lcm-compaction.d.ts +2 -2
  14. package/dist/access-http-lifecycle-flush.d.ts +2 -2
  15. package/dist/access-http-offline-stream.d.ts +2 -2
  16. package/dist/access-http-query.js +20 -20
  17. package/dist/access-http.d.ts +3 -3
  18. package/dist/access-http.js +35 -35
  19. package/dist/access-identity-continuity-surface.d.ts +1 -1
  20. package/dist/access-identity-continuity-surface.js +18 -18
  21. package/dist/access-lcm-surface.d.ts +2 -2
  22. package/dist/access-lcm-surface.js +18 -18
  23. package/dist/access-mcp.d.ts +2 -2
  24. package/dist/access-mcp.js +25 -25
  25. package/dist/access-namespace-preflight.js +18 -18
  26. package/dist/access-observe-transcript.d.ts +1 -1
  27. package/dist/access-observe-write-surface.d.ts +2 -2
  28. package/dist/access-observe-write-surface.js +18 -18
  29. package/dist/access-offline-manifest.d.ts +1 -1
  30. package/dist/access-operations-batch.js +19 -19
  31. package/dist/access-operations.d.ts +2 -2
  32. package/dist/access-operations.js +24 -24
  33. package/dist/access-recall-concurrency.d.ts +2 -2
  34. package/dist/access-recall-concurrency.js +18 -18
  35. package/dist/access-recall-response.d.ts +2 -2
  36. package/dist/access-recall-response.js +18 -18
  37. package/dist/access-recall-surface.d.ts +2 -2
  38. package/dist/access-recall-surface.js +18 -18
  39. package/dist/{access-service-gBcdRUHY.d.ts → access-service-MY4bsr_Q.d.ts} +1 -1
  40. package/dist/access-service-helpers.d.ts +2 -2
  41. package/dist/access-service.d.ts +2 -2
  42. package/dist/access-service.js +18 -18
  43. package/dist/access-surface-catalog.d.ts +2 -2
  44. package/dist/access-surface-catalog.js +20 -20
  45. package/dist/active-recall.js +2 -2
  46. package/dist/adapters/index.js +4 -4
  47. package/dist/adapters/registry.js +2 -2
  48. package/dist/bootstrap.d.ts +1 -1
  49. package/dist/briefing.js +7 -7
  50. package/dist/causal-consolidation.js +8 -8
  51. package/dist/{chunk-2PTNJTBE.js → chunk-2ZTDRNCS.js} +2 -2
  52. package/dist/{chunk-BX4EOMKT.js → chunk-3EKVN2OP.js} +2 -2
  53. package/dist/{chunk-DPMTLJCT.js → chunk-3NPNBVFR.js} +2 -2
  54. package/dist/{chunk-OKO57IXB.js → chunk-4JVQRFZD.js} +4 -4
  55. package/dist/{chunk-6PRY6CLC.js → chunk-4RZLTZVM.js} +1 -1
  56. package/dist/{chunk-PPQEP4OH.js → chunk-54NX5EG4.js} +2 -2
  57. package/dist/{chunk-2OGTN37H.js → chunk-5SPCMAUC.js} +3 -3
  58. package/dist/{chunk-TUKGXQ5T.js → chunk-5YCNDC3C.js} +2 -2
  59. package/dist/chunk-6AGWBKQU.js +94 -0
  60. package/dist/chunk-6AGWBKQU.js.map +1 -0
  61. package/dist/{chunk-BJEJUOGM.js → chunk-6YAIN5XJ.js} +2 -2
  62. package/dist/{chunk-X2NFFBTO.js → chunk-A7GQBJP5.js} +4 -4
  63. package/dist/{chunk-ZKZFFWLV.js → chunk-AAZEKXUP.js} +2 -2
  64. package/dist/{chunk-6ZMNTRU3.js → chunk-AENM6GKU.js} +2 -2
  65. package/dist/{chunk-7S53BPTU.js → chunk-CZTPU65V.js} +8 -8
  66. package/dist/{chunk-UQNYPK7G.js → chunk-D545Z7UH.js} +2 -2
  67. package/dist/{chunk-GT4ZHOKT.js → chunk-ENBPQEVU.js} +2 -2
  68. package/dist/{chunk-TRHBQVVO.js → chunk-EYKIDK33.js} +11 -11
  69. package/dist/{chunk-EY5JAWZC.js → chunk-F4EHXVP7.js} +2 -2
  70. package/dist/{chunk-474DL7UB.js → chunk-FNHLI2RE.js} +3 -3
  71. package/dist/{chunk-2MT4ADLQ.js → chunk-FWWWUPOE.js} +2 -2
  72. package/dist/{chunk-M3MYMWXG.js → chunk-FXHOZGSE.js} +2 -2
  73. package/dist/{chunk-VHOSM5G4.js → chunk-GG5FHZJJ.js} +2 -2
  74. package/dist/{chunk-CBFYCDYO.js → chunk-GI4ZBWPQ.js} +3 -3
  75. package/dist/{chunk-KDFDXEXZ.js → chunk-GMIQV6DD.js} +2 -2
  76. package/dist/{chunk-XGRXQR6T.js → chunk-IL6ODG6M.js} +2 -2
  77. package/dist/{chunk-XWLLFKHM.js → chunk-IQEJIOEU.js} +7 -7
  78. package/dist/{chunk-MLWMR2GE.js → chunk-JKKII6GX.js} +2 -2
  79. package/dist/{chunk-T32B72QX.js → chunk-JTQR6L2N.js} +2 -2
  80. package/dist/{chunk-BRZWWUCJ.js → chunk-LMLGBG6H.js} +2 -2
  81. package/dist/{chunk-3OYSIVOO.js → chunk-LPYYY4AP.js} +152 -112
  82. package/dist/chunk-LPYYY4AP.js.map +1 -0
  83. package/dist/{chunk-A6CKMIPK.js → chunk-MUTVRKKY.js} +8 -8
  84. package/dist/{chunk-JPOX2AJB.js → chunk-NXGSONWM.js} +2 -2
  85. package/dist/{chunk-GGAXFTNH.js → chunk-O4M4BDIJ.js} +2 -2
  86. package/dist/{chunk-VV4ZVUE6.js → chunk-O76F5QPP.js} +2 -2
  87. package/dist/{chunk-G43PMSME.js → chunk-OPBFP4TF.js} +3 -3
  88. package/dist/{chunk-JNSENHV5.js → chunk-PCOVEDPK.js} +3 -3
  89. package/dist/{chunk-VMNCZ627.js → chunk-Q432REND.js} +2 -2
  90. package/dist/{chunk-QMWKENNK.js → chunk-Q4AUIFUA.js} +4 -4
  91. package/dist/{chunk-74AHCL56.js → chunk-Q7CLGFA7.js} +2 -2
  92. package/dist/{chunk-5AERZWJD.js → chunk-QTQ6XKGT.js} +3 -3
  93. package/dist/{chunk-K5DA5TRG.js → chunk-RLJHJQUY.js} +2 -2
  94. package/dist/{chunk-GQQVEH6V.js → chunk-TA4C3XB7.js} +2 -2
  95. package/dist/{chunk-V6G2PSXA.js → chunk-TNZNSMVJ.js} +26 -26
  96. package/dist/{chunk-JA2QJOAX.js → chunk-TSP5WH72.js} +2 -2
  97. package/dist/{chunk-NWMUSKED.js → chunk-UHRZ324M.js} +3 -3
  98. package/dist/{chunk-62QIQEUC.js → chunk-UZEHHXYC.js} +13 -13
  99. package/dist/{chunk-TTSJ7WUC.js → chunk-VBSNUH4J.js} +2 -2
  100. package/dist/{chunk-R4VAUNNC.js → chunk-VJIE4D2I.js} +2 -2
  101. package/dist/{chunk-BYZKLEWG.js → chunk-VSL63CFJ.js} +5 -5
  102. package/dist/{chunk-4B3HBIFX.js → chunk-WBM2MVBK.js} +2 -2
  103. package/dist/{chunk-ULDBGA5W.js → chunk-WIWLX65T.js} +2 -2
  104. package/dist/{chunk-XN6XT6GR.js → chunk-X4TD4O2F.js} +2 -2
  105. package/dist/{chunk-UIOIDW3L.js → chunk-XH3HGI2N.js} +2 -2
  106. package/dist/chunk-YDVAM7S4.js +221 -0
  107. package/dist/chunk-YDVAM7S4.js.map +1 -0
  108. package/dist/{chunk-VELCIWJZ.js → chunk-YKREX63Z.js} +19 -10
  109. package/dist/chunk-YKREX63Z.js.map +1 -0
  110. package/dist/{chunk-HVS7TH2Y.js → chunk-ZBW7A667.js} +2 -2
  111. package/dist/{cli-BNg-TAlz.d.ts → cli-DGq0MNpO.d.ts} +2 -2
  112. package/dist/cli.d.ts +3 -3
  113. package/dist/cli.js +49 -49
  114. package/dist/coding/export-okf-codegraph.js +6 -6
  115. package/dist/compounding/engine.js +7 -7
  116. package/dist/config.js +2 -2
  117. package/dist/connectors/codex-materialize-runner.js +7 -7
  118. package/dist/connectors/index.js +7 -7
  119. package/dist/convergence-refresh.js +9 -9
  120. package/dist/corpus-watermark.js +9 -9
  121. package/dist/deep-recall-http-glue.d.ts +2 -2
  122. package/dist/deep-recall-mcp-tools.d.ts +2 -2
  123. package/dist/entity-retrieval.js +7 -7
  124. package/dist/explicit-capture.d.ts +1 -1
  125. package/dist/external-wiki-access.d.ts +2 -2
  126. package/dist/external-wiki-access.js +19 -19
  127. package/dist/external-wiki-mcp-tools.d.ts +2 -2
  128. package/dist/extraction.js +7 -7
  129. package/dist/harmonic-retrieval.js +1 -1
  130. package/dist/index.d.ts +6 -6
  131. package/dist/index.js +78 -69
  132. package/dist/lcm/engine.js +2 -2
  133. package/dist/lcm/index.js +4 -4
  134. package/dist/location/index.js +9 -9
  135. package/dist/maintenance/memory-governance.js +7 -7
  136. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +7 -7
  137. package/dist/maintenance/rebuild-memory-projection.js +8 -8
  138. package/dist/mcp-memory-inspector-app.d.ts +2 -2
  139. package/dist/memory-subject-cli.d.ts +2 -2
  140. package/dist/memory-subject.d.ts +2 -2
  141. package/dist/namespaces/migrate.js +8 -8
  142. package/dist/namespaces/search.js +4 -4
  143. package/dist/namespaces/storage.js +7 -7
  144. package/dist/operator-doctor-corpus.js +10 -10
  145. package/dist/operator-toolkit.js +17 -17
  146. package/dist/orchestration/maintenance.js +15 -15
  147. package/dist/{orchestrator-DocO0_hw.d.ts → orchestrator-ComHLm49.d.ts} +13 -2
  148. package/dist/orchestrator.d.ts +1 -1
  149. package/dist/orchestrator.js +67 -66
  150. package/dist/{public-http-C0FoTiL_.d.ts → public-http-CuK4_Cb1.d.ts} +1 -1
  151. package/dist/recall-state-view-admission.js +4 -4
  152. package/dist/recall-state-view-anchors.d.ts +85 -0
  153. package/dist/recall-state-view-anchors.js +21 -0
  154. package/dist/recall-state-view-anchors.js.map +1 -0
  155. package/dist/recall-state-view-inject.js +2 -2
  156. package/dist/recall-state-view-render.js +2 -2
  157. package/dist/recall-state-view-widen.js +2 -2
  158. package/dist/recall-state-view-wire.js +3 -3
  159. package/dist/recall-state-view.d.ts +37 -1
  160. package/dist/recall-state-view.js +11 -3
  161. package/dist/resume-bundles.js +3 -3
  162. package/dist/search/factory.js +3 -3
  163. package/dist/search/index.js +7 -7
  164. package/dist/semantic-consolidation.js +8 -8
  165. package/dist/semantic-rule-promotion.js +7 -7
  166. package/dist/semantic-rule-verifier.js +7 -7
  167. package/dist/source-agent-qualifier.js +7 -7
  168. package/dist/standup/build.js +7 -7
  169. package/dist/storage.js +6 -6
  170. package/dist/support-passport/index.d.ts +5 -5
  171. package/dist/support-passport/index.js +21 -21
  172. package/dist/transfer/export-okf.js +7 -7
  173. package/dist/verified-recall.js +7 -7
  174. package/dist/who-knows-cli.d.ts +2 -2
  175. package/dist/who-knows-cli.js +8 -8
  176. package/dist/who-knows.d.ts +2 -2
  177. package/dist/who-knows.js +7 -7
  178. package/package.json +2 -2
  179. package/src/orchestration/recall-internal.ts +91 -74
  180. package/src/orchestration/recall-rerank-coordinator.ts +41 -4
  181. package/src/orchestration/recall-search-pipeline.ts +25 -18
  182. package/src/orchestration/recall-state-view-pipeline.test.ts +89 -0
  183. package/src/recall-rerank-coordinator.test.ts +153 -0
  184. package/src/recall-state-view-anchors.ts +163 -0
  185. package/src/recall-state-view-widen.ts +21 -7
  186. package/src/recall-state-view-zero-diff.test.ts +30 -0
  187. package/src/recall-state-view.test.ts +161 -0
  188. package/src/recall-state-view.ts +206 -35
  189. package/src/trust-score-recall-paths.test.ts +1 -1
  190. package/dist/chunk-255PC37A.js +0 -120
  191. package/dist/chunk-255PC37A.js.map +0 -1
  192. package/dist/chunk-3OYSIVOO.js.map +0 -1
  193. package/dist/chunk-VELCIWJZ.js.map +0 -1
  194. /package/dist/{chunk-2PTNJTBE.js.map → chunk-2ZTDRNCS.js.map} +0 -0
  195. /package/dist/{chunk-BX4EOMKT.js.map → chunk-3EKVN2OP.js.map} +0 -0
  196. /package/dist/{chunk-DPMTLJCT.js.map → chunk-3NPNBVFR.js.map} +0 -0
  197. /package/dist/{chunk-OKO57IXB.js.map → chunk-4JVQRFZD.js.map} +0 -0
  198. /package/dist/{chunk-6PRY6CLC.js.map → chunk-4RZLTZVM.js.map} +0 -0
  199. /package/dist/{chunk-PPQEP4OH.js.map → chunk-54NX5EG4.js.map} +0 -0
  200. /package/dist/{chunk-2OGTN37H.js.map → chunk-5SPCMAUC.js.map} +0 -0
  201. /package/dist/{chunk-TUKGXQ5T.js.map → chunk-5YCNDC3C.js.map} +0 -0
  202. /package/dist/{chunk-BJEJUOGM.js.map → chunk-6YAIN5XJ.js.map} +0 -0
  203. /package/dist/{chunk-X2NFFBTO.js.map → chunk-A7GQBJP5.js.map} +0 -0
  204. /package/dist/{chunk-ZKZFFWLV.js.map → chunk-AAZEKXUP.js.map} +0 -0
  205. /package/dist/{chunk-6ZMNTRU3.js.map → chunk-AENM6GKU.js.map} +0 -0
  206. /package/dist/{chunk-7S53BPTU.js.map → chunk-CZTPU65V.js.map} +0 -0
  207. /package/dist/{chunk-UQNYPK7G.js.map → chunk-D545Z7UH.js.map} +0 -0
  208. /package/dist/{chunk-GT4ZHOKT.js.map → chunk-ENBPQEVU.js.map} +0 -0
  209. /package/dist/{chunk-TRHBQVVO.js.map → chunk-EYKIDK33.js.map} +0 -0
  210. /package/dist/{chunk-EY5JAWZC.js.map → chunk-F4EHXVP7.js.map} +0 -0
  211. /package/dist/{chunk-474DL7UB.js.map → chunk-FNHLI2RE.js.map} +0 -0
  212. /package/dist/{chunk-2MT4ADLQ.js.map → chunk-FWWWUPOE.js.map} +0 -0
  213. /package/dist/{chunk-M3MYMWXG.js.map → chunk-FXHOZGSE.js.map} +0 -0
  214. /package/dist/{chunk-VHOSM5G4.js.map → chunk-GG5FHZJJ.js.map} +0 -0
  215. /package/dist/{chunk-CBFYCDYO.js.map → chunk-GI4ZBWPQ.js.map} +0 -0
  216. /package/dist/{chunk-KDFDXEXZ.js.map → chunk-GMIQV6DD.js.map} +0 -0
  217. /package/dist/{chunk-XGRXQR6T.js.map → chunk-IL6ODG6M.js.map} +0 -0
  218. /package/dist/{chunk-XWLLFKHM.js.map → chunk-IQEJIOEU.js.map} +0 -0
  219. /package/dist/{chunk-MLWMR2GE.js.map → chunk-JKKII6GX.js.map} +0 -0
  220. /package/dist/{chunk-T32B72QX.js.map → chunk-JTQR6L2N.js.map} +0 -0
  221. /package/dist/{chunk-BRZWWUCJ.js.map → chunk-LMLGBG6H.js.map} +0 -0
  222. /package/dist/{chunk-A6CKMIPK.js.map → chunk-MUTVRKKY.js.map} +0 -0
  223. /package/dist/{chunk-JPOX2AJB.js.map → chunk-NXGSONWM.js.map} +0 -0
  224. /package/dist/{chunk-GGAXFTNH.js.map → chunk-O4M4BDIJ.js.map} +0 -0
  225. /package/dist/{chunk-VV4ZVUE6.js.map → chunk-O76F5QPP.js.map} +0 -0
  226. /package/dist/{chunk-G43PMSME.js.map → chunk-OPBFP4TF.js.map} +0 -0
  227. /package/dist/{chunk-JNSENHV5.js.map → chunk-PCOVEDPK.js.map} +0 -0
  228. /package/dist/{chunk-VMNCZ627.js.map → chunk-Q432REND.js.map} +0 -0
  229. /package/dist/{chunk-QMWKENNK.js.map → chunk-Q4AUIFUA.js.map} +0 -0
  230. /package/dist/{chunk-74AHCL56.js.map → chunk-Q7CLGFA7.js.map} +0 -0
  231. /package/dist/{chunk-5AERZWJD.js.map → chunk-QTQ6XKGT.js.map} +0 -0
  232. /package/dist/{chunk-K5DA5TRG.js.map → chunk-RLJHJQUY.js.map} +0 -0
  233. /package/dist/{chunk-GQQVEH6V.js.map → chunk-TA4C3XB7.js.map} +0 -0
  234. /package/dist/{chunk-V6G2PSXA.js.map → chunk-TNZNSMVJ.js.map} +0 -0
  235. /package/dist/{chunk-JA2QJOAX.js.map → chunk-TSP5WH72.js.map} +0 -0
  236. /package/dist/{chunk-NWMUSKED.js.map → chunk-UHRZ324M.js.map} +0 -0
  237. /package/dist/{chunk-62QIQEUC.js.map → chunk-UZEHHXYC.js.map} +0 -0
  238. /package/dist/{chunk-TTSJ7WUC.js.map → chunk-VBSNUH4J.js.map} +0 -0
  239. /package/dist/{chunk-R4VAUNNC.js.map → chunk-VJIE4D2I.js.map} +0 -0
  240. /package/dist/{chunk-BYZKLEWG.js.map → chunk-VSL63CFJ.js.map} +0 -0
  241. /package/dist/{chunk-4B3HBIFX.js.map → chunk-WBM2MVBK.js.map} +0 -0
  242. /package/dist/{chunk-ULDBGA5W.js.map → chunk-WIWLX65T.js.map} +0 -0
  243. /package/dist/{chunk-XN6XT6GR.js.map → chunk-X4TD4O2F.js.map} +0 -0
  244. /package/dist/{chunk-UIOIDW3L.js.map → chunk-XH3HGI2N.js.map} +0 -0
  245. /package/dist/{chunk-HVS7TH2Y.js.map → chunk-ZBW7A667.js.map} +0 -0
@@ -0,0 +1,221 @@
1
+ import {
2
+ coerceBooleanLike
3
+ } from "./chunk-PQVCH2AE.js";
4
+
5
+ // src/recall-state-view.ts
6
+ var DEFAULT_RECALL_STATE_VIEWS = false;
7
+ var CHANGE_WORDS = ["switch", "switches", "switched", "switching", "change", "changes", "changed", "changing"];
8
+ var CHANGE_PHRASE_RE = /\bwhen\s+did\b|\bused\s+to\b/;
9
+ var CHANGE_WORD_RE = new RegExp(`\\b(?:${CHANGE_WORDS.join("|")})\\b`);
10
+ var EVENT_POINTER_RE = /\b(?:before|after)\s+(?:the|a|an|this|that|these|those)\b/;
11
+ function parseRecallStateViews(raw) {
12
+ return coerceBooleanLike(raw, "recallStateViews") === true;
13
+ }
14
+ function isChangeOrientedQuery(query) {
15
+ const lower = query.toLowerCase();
16
+ return CHANGE_PHRASE_RE.test(lower) || CHANGE_WORD_RE.test(lower) || EVENT_POINTER_RE.test(lower);
17
+ }
18
+ function shouldWidenSuperseded(successorId, candidateIds) {
19
+ return typeof successorId === "string" && successorId.length > 0 && candidateIds.has(successorId);
20
+ }
21
+ function formatSupersededPrefix(date, successorId) {
22
+ return `[superseded ${date} by ${successorId}]`;
23
+ }
24
+ function resultStateViewId(result) {
25
+ return result.id ?? result.docid ?? "";
26
+ }
27
+ function stateViewKey(namespace, id) {
28
+ return `${typeof namespace === "string" ? namespace : ""}\0${id}`;
29
+ }
30
+ function resultStateViewKey(result) {
31
+ const id = resultStateViewId(result);
32
+ return id ? stateViewKey(result.namespace, id) : "";
33
+ }
34
+ function stateViewIdFromKey(key) {
35
+ const sep = key.indexOf("\0");
36
+ return sep === -1 ? key : key.slice(sep + 1);
37
+ }
38
+ function buildSuccessorMap(results, chains) {
39
+ const byPred = /* @__PURE__ */ new Map();
40
+ const link = (predKey, succKey, overwrite) => {
41
+ if (!predKey || !succKey) return;
42
+ if (overwrite || !byPred.has(predKey)) byPred.set(predKey, succKey);
43
+ };
44
+ for (const chain of chains) {
45
+ if (chain.predecessorId && chain.successorId) {
46
+ link(
47
+ stateViewKey(chain.namespace, chain.predecessorId),
48
+ stateViewKey(chain.namespace, chain.successorId),
49
+ false
50
+ );
51
+ }
52
+ }
53
+ for (const result of results) {
54
+ const key = resultStateViewKey(result);
55
+ if (key && result.supersedes) {
56
+ link(stateViewKey(result.namespace, result.supersedes), key, false);
57
+ }
58
+ }
59
+ for (const result of results) {
60
+ const key = resultStateViewKey(result);
61
+ if (key && result.supersededBy) {
62
+ link(key, stateViewKey(result.namespace, result.supersededBy), true);
63
+ }
64
+ }
65
+ return byPred;
66
+ }
67
+ function successorLinkOf(result, byPred) {
68
+ const key = resultStateViewKey(result);
69
+ return {
70
+ superseded: result.status === "superseded" || Boolean(result.supersededBy) || byPred.has(key),
71
+ successorKey: result.supersededBy ? stateViewKey(result.namespace, result.supersededBy) : byPred.get(key)
72
+ };
73
+ }
74
+ function labelFor(key, result, byPred, admittedIds, asOfMs) {
75
+ const { successorKey } = successorLinkOf(result, byPred);
76
+ const isPred = shouldWidenSuperseded(successorKey, admittedIds);
77
+ let isSucc = false;
78
+ for (const [predId, succId] of byPred) {
79
+ if (succId === key && admittedIds.has(predId)) {
80
+ isSucc = true;
81
+ break;
82
+ }
83
+ }
84
+ if (isPred && isSucc) return "transition";
85
+ if (isPred) return "historical";
86
+ if (isSucc) return "current";
87
+ if (result.status === "superseded") {
88
+ return asOfMs === null ? "historical" : snapshotStateLabel(result, asOfMs);
89
+ }
90
+ return "current";
91
+ }
92
+ function snapshotStateLabel(result, asOfMs) {
93
+ const invalidAtMs = Date.parse(result.invalidAt ?? "");
94
+ const boundaryMs = Number.isFinite(invalidAtMs) ? invalidAtMs : Date.parse(result.supersededAt ?? "");
95
+ return Number.isFinite(boundaryMs) && boundaryMs <= asOfMs ? "historical" : "current";
96
+ }
97
+ function annotateStateView(results, query, chains, options = {}) {
98
+ const enabled = options.enabled === true;
99
+ if (!enabled || !isChangeOrientedQuery(query)) return results;
100
+ const asOfMs = typeof options.asOfMs === "number" && Number.isFinite(options.asOfMs) ? options.asOfMs : null;
101
+ const byPred = buildSuccessorMap(results, chains);
102
+ const candidateIds = /* @__PURE__ */ new Set();
103
+ for (const result of results) {
104
+ const key = resultStateViewKey(result);
105
+ if (key) candidateIds.add(key);
106
+ }
107
+ let admitted;
108
+ if (asOfMs !== null) {
109
+ admitted = results.slice();
110
+ } else {
111
+ admitted = [];
112
+ for (const result of results) {
113
+ const { superseded, successorKey } = successorLinkOf(result, byPred);
114
+ if (!superseded || shouldWidenSuperseded(successorKey, candidateIds)) {
115
+ admitted.push(result);
116
+ }
117
+ }
118
+ let admittedIds2 = new Set(admitted.map(resultStateViewKey).filter(Boolean));
119
+ for (let changed = true; changed; ) {
120
+ changed = false;
121
+ for (let i = admitted.length - 1; i >= 0; i -= 1) {
122
+ const row = admitted[i];
123
+ const { superseded, successorKey } = successorLinkOf(row, byPred);
124
+ if (superseded && !shouldWidenSuperseded(successorKey, admittedIds2)) {
125
+ admitted.splice(i, 1);
126
+ changed = true;
127
+ }
128
+ }
129
+ if (changed) admittedIds2 = new Set(admitted.map(resultStateViewKey).filter(Boolean));
130
+ }
131
+ }
132
+ const admittedIds = new Set(admitted.map(resultStateViewKey).filter(Boolean));
133
+ return admitted.map((result) => {
134
+ const key = resultStateViewKey(result);
135
+ const { successorKey } = successorLinkOf(result, byPred);
136
+ const stateLabel = labelFor(key, result, byPred, admittedIds, asOfMs);
137
+ if (result.supersededBy || !successorKey) return { ...result, stateLabel };
138
+ return { ...result, stateLabel, supersededBy: stateViewIdFromKey(successorKey) };
139
+ });
140
+ }
141
+ function reconcileStateViewPairs(results) {
142
+ const byPred = buildSuccessorMap(results, []);
143
+ let kept = results.slice();
144
+ for (let changed = true; changed; ) {
145
+ changed = false;
146
+ const keptKeys = new Set(kept.map(resultStateViewKey).filter(Boolean));
147
+ const next = [];
148
+ for (const row of kept) {
149
+ const { superseded, successorKey } = successorLinkOf(row, byPred);
150
+ if (superseded && !shouldWidenSuperseded(successorKey, keptKeys)) {
151
+ changed = true;
152
+ continue;
153
+ }
154
+ next.push(row);
155
+ }
156
+ if (changed) kept = next;
157
+ }
158
+ return kept;
159
+ }
160
+ function capStateViewPackets(ordered, limit) {
161
+ const safeLimit = typeof limit === "number" && Number.isFinite(limit) ? Math.max(0, Math.floor(limit)) : 0;
162
+ if (safeLimit === 0) return [];
163
+ if (ordered.length === 0) return [];
164
+ const byPred = buildSuccessorMap(ordered, []);
165
+ const parent = /* @__PURE__ */ new Map();
166
+ const root = (key) => {
167
+ let current = key;
168
+ for (; ; ) {
169
+ const up = parent.get(current);
170
+ if (up === void 0 || up === current) {
171
+ parent.set(current, current);
172
+ return current;
173
+ }
174
+ current = up;
175
+ }
176
+ };
177
+ const union = (a, b) => {
178
+ const ra = root(a);
179
+ const rb = root(b);
180
+ if (ra !== rb) parent.set(ra, rb);
181
+ };
182
+ const keys = [];
183
+ const keyToIndex = /* @__PURE__ */ new Map();
184
+ for (let i = 0; i < ordered.length; i += 1) {
185
+ const key = resultStateViewKey(ordered[i]) || `#idx${i}`;
186
+ keys.push(key);
187
+ if (!parent.has(key)) parent.set(key, key);
188
+ const first = keyToIndex.get(key);
189
+ if (first !== void 0) union(keys[first], key);
190
+ else keyToIndex.set(key, i);
191
+ }
192
+ for (const [predKey, succKey] of byPred) {
193
+ const predIdx = keyToIndex.get(predKey);
194
+ const succIdx = keyToIndex.get(succKey);
195
+ if (predIdx !== void 0 && succIdx !== void 0) union(keys[predIdx], keys[succIdx]);
196
+ }
197
+ const selectedRoots = /* @__PURE__ */ new Set();
198
+ for (let i = 0; i < ordered.length && selectedRoots.size < safeLimit; i += 1) {
199
+ selectedRoots.add(root(keys[i]));
200
+ }
201
+ const selected = [];
202
+ for (let i = 0; i < ordered.length; i += 1) {
203
+ if (selectedRoots.has(root(keys[i]))) selected.push(ordered[i]);
204
+ }
205
+ return selected;
206
+ }
207
+
208
+ export {
209
+ DEFAULT_RECALL_STATE_VIEWS,
210
+ parseRecallStateViews,
211
+ isChangeOrientedQuery,
212
+ shouldWidenSuperseded,
213
+ formatSupersededPrefix,
214
+ resultStateViewId,
215
+ stateViewKey,
216
+ resultStateViewKey,
217
+ annotateStateView,
218
+ reconcileStateViewPairs,
219
+ capStateViewPackets
220
+ };
221
+ //# sourceMappingURL=chunk-YDVAM7S4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/recall-state-view.ts"],"sourcesContent":["/**\n * Recall state views (issue #1952).\n *\n * Config key: `recallStateViews` (default false). When false, annotateStateView\n * is identity: same array reference, no `stateLabel`. config.ts is at its\n * fileSizeGrandfather ceiling, so parseConfig wiring waits for a later PR.\n * Call `parseRecallStateViews` at the recall seam when that lands.\n *\n * Change-intent morphology lives here (do not grow intent.ts). A superseded\n * memory is admitted only when its successor is also in the candidate set.\n *\n * #2859 — chain identities are namespace-qualified (`namespace\\0id`): the\n * same id in two namespaces never cross-anchors. The reverse chain derives\n * from the successor's `supersedes` back-pointer when a predecessor lacks\n * `supersededBy`, and asOf snapshot labels use the temporal validity\n * boundary (predecessor `invalidAt` / successor `validAt`), not the\n * `supersededAt` write time.\n */\nimport { coerceBooleanLike } from \"./connectors/coerce.js\";\n\nexport type StateLabel = \"current\" | \"historical\" | \"transition\";\n\nexport interface StateViewChain {\n predecessorId: string;\n successorId: string;\n supersededAt?: string;\n /** #2859 — namespace scope; a chain link never crosses namespaces. */\n namespace?: string;\n}\n\nexport interface StateViewResult {\n id?: string;\n docid?: string;\n status?: string;\n /** #2859 — namespace that owns this row; qualifies every chain identity. */\n namespace?: string;\n /** #2859 — back-pointer: id of the row this one replaced. */\n supersedes?: string;\n supersededBy?: string;\n supersededAt?: string;\n /** #2859 — fact validity start (frontmatter `valid_at`). */\n validAt?: string;\n /** #2859 — fact validity end (frontmatter `invalid_at`). */\n invalidAt?: string;\n stateLabel?: StateLabel;\n}\n\nexport const DEFAULT_RECALL_STATE_VIEWS = false;\n\nconst CHANGE_WORDS = [\"switch\", \"switches\", \"switched\", \"switching\", \"change\", \"changes\", \"changed\", \"changing\"];\n\n// Phrase matches are token-bounded: \"when Didi\" must not fire the\n// \"when did\" phrase, and \"confused to\" must not fire \"used to\".\nconst CHANGE_PHRASE_RE = /\\bwhen\\s+did\\b|\\bused\\s+to\\b/;\nconst CHANGE_WORD_RE = new RegExp(`\\\\b(?:${CHANGE_WORDS.join(\"|\")})\\\\b`);\n// Bare \"before\"/\"after\" are ordinary sequencing (\"before lunch\",\n// \"after install\"). They carry change intent only when they point at a\n// specific event through a determiner (\"before the move\", \"after the\n// cutover\").\nconst EVENT_POINTER_RE = /\\b(?:before|after)\\s+(?:the|a|an|this|that|these|those)\\b/;\n\nexport function parseRecallStateViews(raw: unknown): boolean {\n return coerceBooleanLike(raw, \"recallStateViews\") === true;\n}\n\nexport function isChangeOrientedQuery(query: string): boolean {\n const lower = query.toLowerCase();\n return CHANGE_PHRASE_RE.test(lower) || CHANGE_WORD_RE.test(lower) || EVENT_POINTER_RE.test(lower);\n}\n\nexport function shouldWidenSuperseded(\n successorId: string | undefined,\n candidateIds: ReadonlySet<string>,\n): boolean {\n return typeof successorId === \"string\" && successorId.length > 0 && candidateIds.has(successorId);\n}\n\nexport function formatSupersededPrefix(date: string, successorId: string): string {\n return `[superseded ${date} by ${successorId}]`;\n}\n\nexport function resultStateViewId(result: StateViewResult): string {\n return result.id ?? result.docid ?? \"\";\n}\n\n/**\n * #2859 — namespace-qualified chain identity. Namespace fanout can surface\n * the same id from two namespaces; every successor/admission match runs on\n * `namespace\\0id` keys so a row in one namespace can never anchor (or be\n * anchored by) an identically-named row in another.\n */\nexport function stateViewKey(namespace: string | undefined, id: string): string {\n return `${typeof namespace === \"string\" ? namespace : \"\"}\\u0000${id}`;\n}\n\nexport function resultStateViewKey(result: StateViewResult): string {\n const id = resultStateViewId(result);\n return id ? stateViewKey(result.namespace, id) : \"\";\n}\n\n/** Inverse of {@link stateViewKey}: the id after the namespace separator. */\nfunction stateViewIdFromKey(key: string): string {\n const sep = key.indexOf(\"\\u0000\");\n return sep === -1 ? key : key.slice(sep + 1);\n}\n\n/**\n * predecessorKey → successorKey, namespace-qualified. Precedence: explicit\n * chains, then successor rows' `supersedes` back-pointers (#2859 — derives\n * the reverse chain when the predecessor lacks `supersededBy`), then the\n * predecessor's own `supersededBy` (authoritative when present).\n */\nfunction buildSuccessorMap(\n results: readonly StateViewResult[],\n chains: readonly StateViewChain[],\n): Map<string, string> {\n const byPred = new Map<string, string>();\n const link = (predKey: string, succKey: string, overwrite: boolean): void => {\n if (!predKey || !succKey) return;\n if (overwrite || !byPred.has(predKey)) byPred.set(predKey, succKey);\n };\n for (const chain of chains) {\n if (chain.predecessorId && chain.successorId) {\n link(\n stateViewKey(chain.namespace, chain.predecessorId),\n stateViewKey(chain.namespace, chain.successorId),\n false,\n );\n }\n }\n for (const result of results) {\n const key = resultStateViewKey(result);\n if (key && result.supersedes) {\n link(stateViewKey(result.namespace, result.supersedes), key, false);\n }\n }\n for (const result of results) {\n const key = resultStateViewKey(result);\n if (key && result.supersededBy) {\n link(key, stateViewKey(result.namespace, result.supersededBy), true);\n }\n }\n return byPred;\n}\n\nfunction successorLinkOf(\n result: StateViewResult,\n byPred: ReadonlyMap<string, string>,\n): { superseded: boolean; successorKey: string | undefined } {\n const key = resultStateViewKey(result);\n return {\n superseded:\n result.status === \"superseded\" ||\n Boolean(result.supersededBy) ||\n byPred.has(key),\n successorKey: result.supersededBy\n ? stateViewKey(result.namespace, result.supersededBy)\n : byPred.get(key),\n };\n}\n\nfunction labelFor(\n key: string,\n result: StateViewResult,\n byPred: Map<string, string>,\n admittedIds: ReadonlySet<string>,\n asOfMs: number | null,\n): StateLabel {\n const { successorKey } = successorLinkOf(result, byPred);\n const isPred = shouldWidenSuperseded(successorKey, admittedIds);\n let isSucc = false;\n for (const [predId, succId] of byPred) {\n if (succId === key && admittedIds.has(predId)) {\n isSucc = true;\n break;\n }\n }\n if (isPred && isSucc) return \"transition\";\n if (isPred) return \"historical\";\n if (isSucc) return \"current\";\n if (result.status === \"superseded\") {\n // #1952 asOf mode: the successor is legitimately absent under the\n // historical pin (a linked successor takes the pair branches above).\n // The row was the live fact at the snapshot when the temporal\n // validity boundary postdates the pin (\"current\" relative to the\n // snapshot); already replaced at the pin is \"historical\". #2859: the\n // boundary is the fact's validity flip — `invalidAt` (the supersession\n // pipeline sets it to the successor's valid_at) — not the\n // `supersededAt` write time; legacy rows without a window fall back\n // to supersededAt.\n return asOfMs === null ? \"historical\" : snapshotStateLabel(result, asOfMs);\n }\n return \"current\";\n}\n\nfunction snapshotStateLabel(result: StateViewResult, asOfMs: number): StateLabel {\n const invalidAtMs = Date.parse(result.invalidAt ?? \"\");\n const boundaryMs = Number.isFinite(invalidAtMs)\n ? invalidAtMs\n : Date.parse(result.supersededAt ?? \"\");\n return Number.isFinite(boundaryMs) && boundaryMs <= asOfMs ? \"historical\" : \"current\";\n}\n\nexport function annotateStateView<T extends StateViewResult>(\n results: T[],\n query: string,\n chains: readonly StateViewChain[],\n options: { enabled?: boolean; asOfMs?: number } = {},\n): T[] {\n const enabled = options.enabled === true;\n if (!enabled || !isChangeOrientedQuery(query)) return results;\n // #1952 asOf mode: under a historical pin the pipeline's isValidAsOf\n // gate already decided validity at the pinned instant, so a predecessor\n // must not be discarded merely because its successor is absent under\n // the same filter. A valid asOf result is never emptied here.\n const asOfMs =\n typeof options.asOfMs === \"number\" && Number.isFinite(options.asOfMs)\n ? options.asOfMs\n : null;\n\n const byPred = buildSuccessorMap(results, chains);\n const candidateIds = new Set<string>();\n for (const result of results) {\n const key = resultStateViewKey(result);\n if (key) candidateIds.add(key);\n }\n let admitted: T[];\n if (asOfMs !== null) {\n admitted = results.slice();\n } else {\n admitted = [];\n for (const result of results) {\n const { superseded, successorKey } = successorLinkOf(result, byPred);\n if (!superseded || shouldWidenSuperseded(successorKey, candidateIds)) {\n admitted.push(result);\n }\n }\n\n // #1952 contract: superseded never appears without its successor. A\n // successor can itself be dropped (filtered elsewhere, or transitively\n // orphaned), so reconcile to a fixpoint instead of trusting the first pass.\n let admittedIds = new Set(admitted.map(resultStateViewKey).filter(Boolean));\n for (let changed = true; changed; ) {\n changed = false;\n for (let i = admitted.length - 1; i >= 0; i -= 1) {\n const row = admitted[i]!;\n const { superseded, successorKey } = successorLinkOf(row, byPred);\n if (superseded && !shouldWidenSuperseded(successorKey, admittedIds)) {\n admitted.splice(i, 1);\n changed = true;\n }\n }\n if (changed) admittedIds = new Set(admitted.map(resultStateViewKey).filter(Boolean));\n }\n }\n\n const admittedIds = new Set(admitted.map(resultStateViewKey).filter(Boolean));\n return admitted.map((result) => {\n const key = resultStateViewKey(result);\n const { successorKey } = successorLinkOf(result, byPred);\n const stateLabel = labelFor(key, result, byPred, admittedIds, asOfMs);\n if (result.supersededBy || !successorKey) return { ...result, stateLabel };\n return { ...result, stateLabel, supersededBy: stateViewIdFromKey(successorKey) };\n });\n}\n\n/**\n * #2859 — drop superseded rows whose successor is not in the pool BEFORE\n * the user cap/MMR runs, so post-cap orphan removal can never underfill\n * the result set. Reconciles to a fixpoint (a dropped successor orphans\n * its own predecessors). Rows with no successor links pass through in\n * order. ponytail: repeated full-pool passes are O(n²) on one long chain;\n * recall pools stay small, memoize per-key if pools ever grow.\n */\nexport function reconcileStateViewPairs<T extends StateViewResult>(results: readonly T[]): T[] {\n const byPred = buildSuccessorMap(results, []);\n let kept = results.slice();\n for (let changed = true; changed; ) {\n changed = false;\n const keptKeys = new Set(kept.map(resultStateViewKey).filter(Boolean));\n const next: T[] = [];\n for (const row of kept) {\n const { superseded, successorKey } = successorLinkOf(row, byPred);\n if (superseded && !shouldWidenSuperseded(successorKey, keptKeys)) {\n changed = true;\n continue;\n }\n next.push(row);\n }\n if (changed) kept = next;\n }\n return kept;\n}\n\n/**\n * #2859 — packet-counting cap. A predecessor/successor chain admitted\n * together is ONE complete evidence packet: it consumes a single slot of\n * the user cap, and the slice never splits a packet at the boundary (no\n * underfill from post-cap orphan removal). Rows keep their incoming\n * (MMR) order; packets are ordered by first appearance. Call\n * reconcileStateViewPairs first so orphans never consume a slot.\n */\nexport function capStateViewPackets<T extends StateViewResult>(\n ordered: readonly T[],\n limit: number,\n): T[] {\n const safeLimit =\n typeof limit === \"number\" && Number.isFinite(limit) ? Math.max(0, Math.floor(limit)) : 0;\n if (safeLimit === 0) return [];\n if (ordered.length === 0) return [];\n\n const byPred = buildSuccessorMap(ordered, []);\n // Union-find over row keys; blank-key rows become per-index singletons.\n const parent = new Map<string, string>();\n const root = (key: string): string => {\n let current = key;\n for (;;) {\n const up = parent.get(current);\n if (up === undefined || up === current) {\n parent.set(current, current);\n return current;\n }\n current = up;\n }\n };\n const union = (a: string, b: string): void => {\n const ra = root(a);\n const rb = root(b);\n if (ra !== rb) parent.set(ra, rb);\n };\n const keys: string[] = [];\n const keyToIndex = new Map<string, number>();\n for (let i = 0; i < ordered.length; i += 1) {\n // ponytail: blank-key rows must stay distinct singletons; index-keyed.\n const key = resultStateViewKey(ordered[i]!) || `#idx${i}`;\n keys.push(key);\n if (!parent.has(key)) parent.set(key, key);\n const first = keyToIndex.get(key);\n if (first !== undefined) union(keys[first]!, key);\n else keyToIndex.set(key, i);\n }\n for (const [predKey, succKey] of byPred) {\n const predIdx = keyToIndex.get(predKey);\n const succIdx = keyToIndex.get(succKey);\n if (predIdx !== undefined && succIdx !== undefined) union(keys[predIdx]!, keys[succIdx]!);\n }\n // Packets ordered by first appearance; admit whole packets until the cap.\n const selectedRoots = new Set<string>();\n for (let i = 0; i < ordered.length && selectedRoots.size < safeLimit; i += 1) {\n selectedRoots.add(root(keys[i]!));\n }\n const selected: T[] = [];\n for (let i = 0; i < ordered.length; i += 1) {\n if (selectedRoots.has(root(keys[i]!))) selected.push(ordered[i]!);\n }\n return selected;\n}\n"],"mappings":";;;;;AA+CO,IAAM,6BAA6B;AAE1C,IAAM,eAAe,CAAC,UAAU,YAAY,YAAY,aAAa,UAAU,WAAW,WAAW,UAAU;AAI/G,IAAM,mBAAmB;AACzB,IAAM,iBAAiB,IAAI,OAAO,SAAS,aAAa,KAAK,GAAG,CAAC,MAAM;AAKvE,IAAM,mBAAmB;AAElB,SAAS,sBAAsB,KAAuB;AAC3D,SAAO,kBAAkB,KAAK,kBAAkB,MAAM;AACxD;AAEO,SAAS,sBAAsB,OAAwB;AAC5D,QAAM,QAAQ,MAAM,YAAY;AAChC,SAAO,iBAAiB,KAAK,KAAK,KAAK,eAAe,KAAK,KAAK,KAAK,iBAAiB,KAAK,KAAK;AAClG;AAEO,SAAS,sBACd,aACA,cACS;AACT,SAAO,OAAO,gBAAgB,YAAY,YAAY,SAAS,KAAK,aAAa,IAAI,WAAW;AAClG;AAEO,SAAS,uBAAuB,MAAc,aAA6B;AAChF,SAAO,eAAe,IAAI,OAAO,WAAW;AAC9C;AAEO,SAAS,kBAAkB,QAAiC;AACjE,SAAO,OAAO,MAAM,OAAO,SAAS;AACtC;AAQO,SAAS,aAAa,WAA+B,IAAoB;AAC9E,SAAO,GAAG,OAAO,cAAc,WAAW,YAAY,EAAE,KAAS,EAAE;AACrE;AAEO,SAAS,mBAAmB,QAAiC;AAClE,QAAM,KAAK,kBAAkB,MAAM;AACnC,SAAO,KAAK,aAAa,OAAO,WAAW,EAAE,IAAI;AACnD;AAGA,SAAS,mBAAmB,KAAqB;AAC/C,QAAM,MAAM,IAAI,QAAQ,IAAQ;AAChC,SAAO,QAAQ,KAAK,MAAM,IAAI,MAAM,MAAM,CAAC;AAC7C;AAQA,SAAS,kBACP,SACA,QACqB;AACrB,QAAM,SAAS,oBAAI,IAAoB;AACvC,QAAM,OAAO,CAAC,SAAiB,SAAiB,cAA6B;AAC3E,QAAI,CAAC,WAAW,CAAC,QAAS;AAC1B,QAAI,aAAa,CAAC,OAAO,IAAI,OAAO,EAAG,QAAO,IAAI,SAAS,OAAO;AAAA,EACpE;AACA,aAAW,SAAS,QAAQ;AAC1B,QAAI,MAAM,iBAAiB,MAAM,aAAa;AAC5C;AAAA,QACE,aAAa,MAAM,WAAW,MAAM,aAAa;AAAA,QACjD,aAAa,MAAM,WAAW,MAAM,WAAW;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,aAAW,UAAU,SAAS;AAC5B,UAAM,MAAM,mBAAmB,MAAM;AACrC,QAAI,OAAO,OAAO,YAAY;AAC5B,WAAK,aAAa,OAAO,WAAW,OAAO,UAAU,GAAG,KAAK,KAAK;AAAA,IACpE;AAAA,EACF;AACA,aAAW,UAAU,SAAS;AAC5B,UAAM,MAAM,mBAAmB,MAAM;AACrC,QAAI,OAAO,OAAO,cAAc;AAC9B,WAAK,KAAK,aAAa,OAAO,WAAW,OAAO,YAAY,GAAG,IAAI;AAAA,IACrE;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,gBACP,QACA,QAC2D;AAC3D,QAAM,MAAM,mBAAmB,MAAM;AACrC,SAAO;AAAA,IACL,YACE,OAAO,WAAW,gBAClB,QAAQ,OAAO,YAAY,KAC3B,OAAO,IAAI,GAAG;AAAA,IAChB,cAAc,OAAO,eACjB,aAAa,OAAO,WAAW,OAAO,YAAY,IAClD,OAAO,IAAI,GAAG;AAAA,EACpB;AACF;AAEA,SAAS,SACP,KACA,QACA,QACA,aACA,QACY;AACZ,QAAM,EAAE,aAAa,IAAI,gBAAgB,QAAQ,MAAM;AACvD,QAAM,SAAS,sBAAsB,cAAc,WAAW;AAC9D,MAAI,SAAS;AACb,aAAW,CAAC,QAAQ,MAAM,KAAK,QAAQ;AACrC,QAAI,WAAW,OAAO,YAAY,IAAI,MAAM,GAAG;AAC7C,eAAS;AACT;AAAA,IACF;AAAA,EACF;AACA,MAAI,UAAU,OAAQ,QAAO;AAC7B,MAAI,OAAQ,QAAO;AACnB,MAAI,OAAQ,QAAO;AACnB,MAAI,OAAO,WAAW,cAAc;AAUlC,WAAO,WAAW,OAAO,eAAe,mBAAmB,QAAQ,MAAM;AAAA,EAC3E;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB,QAAyB,QAA4B;AAC/E,QAAM,cAAc,KAAK,MAAM,OAAO,aAAa,EAAE;AACrD,QAAM,aAAa,OAAO,SAAS,WAAW,IAC1C,cACA,KAAK,MAAM,OAAO,gBAAgB,EAAE;AACxC,SAAO,OAAO,SAAS,UAAU,KAAK,cAAc,SAAS,eAAe;AAC9E;AAEO,SAAS,kBACd,SACA,OACA,QACA,UAAkD,CAAC,GAC9C;AACL,QAAM,UAAU,QAAQ,YAAY;AACpC,MAAI,CAAC,WAAW,CAAC,sBAAsB,KAAK,EAAG,QAAO;AAKtD,QAAM,SACJ,OAAO,QAAQ,WAAW,YAAY,OAAO,SAAS,QAAQ,MAAM,IAChE,QAAQ,SACR;AAEN,QAAM,SAAS,kBAAkB,SAAS,MAAM;AAChD,QAAM,eAAe,oBAAI,IAAY;AACrC,aAAW,UAAU,SAAS;AAC5B,UAAM,MAAM,mBAAmB,MAAM;AACrC,QAAI,IAAK,cAAa,IAAI,GAAG;AAAA,EAC/B;AACA,MAAI;AACJ,MAAI,WAAW,MAAM;AACnB,eAAW,QAAQ,MAAM;AAAA,EAC3B,OAAO;AACL,eAAW,CAAC;AACZ,eAAW,UAAU,SAAS;AAC5B,YAAM,EAAE,YAAY,aAAa,IAAI,gBAAgB,QAAQ,MAAM;AACnE,UAAI,CAAC,cAAc,sBAAsB,cAAc,YAAY,GAAG;AACpE,iBAAS,KAAK,MAAM;AAAA,MACtB;AAAA,IACF;AAKA,QAAIA,eAAc,IAAI,IAAI,SAAS,IAAI,kBAAkB,EAAE,OAAO,OAAO,CAAC;AAC1E,aAAS,UAAU,MAAM,WAAW;AAClC,gBAAU;AACV,eAAS,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;AAChD,cAAM,MAAM,SAAS,CAAC;AACtB,cAAM,EAAE,YAAY,aAAa,IAAI,gBAAgB,KAAK,MAAM;AAChE,YAAI,cAAc,CAAC,sBAAsB,cAAcA,YAAW,GAAG;AACnE,mBAAS,OAAO,GAAG,CAAC;AACpB,oBAAU;AAAA,QACZ;AAAA,MACF;AACA,UAAI,QAAS,CAAAA,eAAc,IAAI,IAAI,SAAS,IAAI,kBAAkB,EAAE,OAAO,OAAO,CAAC;AAAA,IACrF;AAAA,EACF;AAEA,QAAM,cAAc,IAAI,IAAI,SAAS,IAAI,kBAAkB,EAAE,OAAO,OAAO,CAAC;AAC5E,SAAO,SAAS,IAAI,CAAC,WAAW;AAC9B,UAAM,MAAM,mBAAmB,MAAM;AACrC,UAAM,EAAE,aAAa,IAAI,gBAAgB,QAAQ,MAAM;AACvD,UAAM,aAAa,SAAS,KAAK,QAAQ,QAAQ,aAAa,MAAM;AACpE,QAAI,OAAO,gBAAgB,CAAC,aAAc,QAAO,EAAE,GAAG,QAAQ,WAAW;AACzE,WAAO,EAAE,GAAG,QAAQ,YAAY,cAAc,mBAAmB,YAAY,EAAE;AAAA,EACjF,CAAC;AACH;AAUO,SAAS,wBAAmD,SAA4B;AAC7F,QAAM,SAAS,kBAAkB,SAAS,CAAC,CAAC;AAC5C,MAAI,OAAO,QAAQ,MAAM;AACzB,WAAS,UAAU,MAAM,WAAW;AAClC,cAAU;AACV,UAAM,WAAW,IAAI,IAAI,KAAK,IAAI,kBAAkB,EAAE,OAAO,OAAO,CAAC;AACrE,UAAM,OAAY,CAAC;AACnB,eAAW,OAAO,MAAM;AACtB,YAAM,EAAE,YAAY,aAAa,IAAI,gBAAgB,KAAK,MAAM;AAChE,UAAI,cAAc,CAAC,sBAAsB,cAAc,QAAQ,GAAG;AAChE,kBAAU;AACV;AAAA,MACF;AACA,WAAK,KAAK,GAAG;AAAA,IACf;AACA,QAAI,QAAS,QAAO;AAAA,EACtB;AACA,SAAO;AACT;AAUO,SAAS,oBACd,SACA,OACK;AACL,QAAM,YACJ,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,CAAC,IAAI;AACzF,MAAI,cAAc,EAAG,QAAO,CAAC;AAC7B,MAAI,QAAQ,WAAW,EAAG,QAAO,CAAC;AAElC,QAAM,SAAS,kBAAkB,SAAS,CAAC,CAAC;AAE5C,QAAM,SAAS,oBAAI,IAAoB;AACvC,QAAM,OAAO,CAAC,QAAwB;AACpC,QAAI,UAAU;AACd,eAAS;AACP,YAAM,KAAK,OAAO,IAAI,OAAO;AAC7B,UAAI,OAAO,UAAa,OAAO,SAAS;AACtC,eAAO,IAAI,SAAS,OAAO;AAC3B,eAAO;AAAA,MACT;AACA,gBAAU;AAAA,IACZ;AAAA,EACF;AACA,QAAM,QAAQ,CAAC,GAAW,MAAoB;AAC5C,UAAM,KAAK,KAAK,CAAC;AACjB,UAAM,KAAK,KAAK,CAAC;AACjB,QAAI,OAAO,GAAI,QAAO,IAAI,IAAI,EAAE;AAAA,EAClC;AACA,QAAM,OAAiB,CAAC;AACxB,QAAM,aAAa,oBAAI,IAAoB;AAC3C,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAE1C,UAAM,MAAM,mBAAmB,QAAQ,CAAC,CAAE,KAAK,OAAO,CAAC;AACvD,SAAK,KAAK,GAAG;AACb,QAAI,CAAC,OAAO,IAAI,GAAG,EAAG,QAAO,IAAI,KAAK,GAAG;AACzC,UAAM,QAAQ,WAAW,IAAI,GAAG;AAChC,QAAI,UAAU,OAAW,OAAM,KAAK,KAAK,GAAI,GAAG;AAAA,QAC3C,YAAW,IAAI,KAAK,CAAC;AAAA,EAC5B;AACA,aAAW,CAAC,SAAS,OAAO,KAAK,QAAQ;AACvC,UAAM,UAAU,WAAW,IAAI,OAAO;AACtC,UAAM,UAAU,WAAW,IAAI,OAAO;AACtC,QAAI,YAAY,UAAa,YAAY,OAAW,OAAM,KAAK,OAAO,GAAI,KAAK,OAAO,CAAE;AAAA,EAC1F;AAEA,QAAM,gBAAgB,oBAAI,IAAY;AACtC,WAAS,IAAI,GAAG,IAAI,QAAQ,UAAU,cAAc,OAAO,WAAW,KAAK,GAAG;AAC5E,kBAAc,IAAI,KAAK,KAAK,CAAC,CAAE,CAAC;AAAA,EAClC;AACA,QAAM,WAAgB,CAAC;AACvB,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1C,QAAI,cAAc,IAAI,KAAK,KAAK,CAAC,CAAE,CAAC,EAAG,UAAS,KAAK,QAAQ,CAAC,CAAE;AAAA,EAClE;AACA,SAAO;AACT;","names":["admittedIds"]}
@@ -2,9 +2,10 @@ import {
2
2
  annotateStateView,
3
3
  isChangeOrientedQuery,
4
4
  parseRecallStateViews,
5
- resultStateViewId,
6
- shouldWidenSuperseded
7
- } from "./chunk-255PC37A.js";
5
+ resultStateViewKey,
6
+ shouldWidenSuperseded,
7
+ stateViewKey
8
+ } from "./chunk-YDVAM7S4.js";
8
9
 
9
10
  // src/recall-state-view-widen.ts
10
11
  function widenRecallStateViews(results, query, config, pool = [], stateViewActive, asOfMs) {
@@ -13,19 +14,27 @@ function widenRecallStateViews(results, query, config, pool = [], stateViewActiv
13
14
  if (!enabled || !isChangeOrientedQuery(query)) return results;
14
15
  const asOfActive = typeof asOfMs === "number" && Number.isFinite(asOfMs);
15
16
  const candidateIds = /* @__PURE__ */ new Set();
17
+ const supersedesAnchors = /* @__PURE__ */ new Set();
16
18
  for (const result of results) {
17
- const id = resultStateViewId(result);
18
- if (id) candidateIds.add(id);
19
+ const key = resultStateViewKey(result);
20
+ if (!key) continue;
21
+ candidateIds.add(key);
22
+ if (result.supersedes) {
23
+ supersedesAnchors.add(stateViewKey(result.namespace, result.supersedes));
24
+ }
19
25
  }
20
26
  const seen = new Set(candidateIds);
21
27
  const extra = [];
22
28
  if (!asOfActive) {
23
29
  for (const item of pool) {
24
- const id = resultStateViewId(item);
25
- if (!id || seen.has(id)) continue;
26
- if (!shouldWidenSuperseded(item.supersededBy, candidateIds)) continue;
30
+ const key = resultStateViewKey(item);
31
+ if (!key || seen.has(key)) continue;
32
+ const successorKey = item.supersededBy ? stateViewKey(item.namespace, item.supersededBy) : void 0;
33
+ if (!shouldWidenSuperseded(successorKey, candidateIds) && !supersedesAnchors.has(key)) {
34
+ continue;
35
+ }
27
36
  extra.push(item);
28
- seen.add(id);
37
+ seen.add(key);
29
38
  }
30
39
  }
31
40
  return annotateStateView(extra.length > 0 ? results.concat(extra) : results, query, [], {
@@ -37,4 +46,4 @@ function widenRecallStateViews(results, query, config, pool = [], stateViewActiv
37
46
  export {
38
47
  widenRecallStateViews
39
48
  };
40
- //# sourceMappingURL=chunk-VELCIWJZ.js.map
49
+ //# sourceMappingURL=chunk-YKREX63Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/recall-state-view-widen.ts"],"sourcesContent":["/**\n * Recall state-view widening (issue #1952).\n *\n * When recallStateViews is on and the query is change-oriented, admit a\n * superseded memory only if its successor is already in the candidate set.\n * Flag off / non-change queries are identity.\n */\nimport {\n annotateStateView,\n isChangeOrientedQuery,\n parseRecallStateViews,\n resultStateViewKey,\n shouldWidenSuperseded,\n stateViewKey,\n type StateViewResult,\n} from \"./recall-state-view.js\";\n\nexport function widenRecallStateViews<T extends StateViewResult>(\n results: T[],\n query: string,\n config: unknown,\n pool: readonly T[] = [],\n /**\n * #1952 — per-request effective flag (per-call `stateView` OR config,\n * gated on change intent), computed once at recall entry and threaded\n * through. When `true` it wins over the config read so a per-call\n * override survives a global `false` at the inject seam. Callers that\n * omit it keep the legacy config-only behavior.\n */\n stateViewActive?: boolean,\n /**\n * #1952 — historical recall pin (epoch ms). When set, the pool is\n * never widened (pool rows did not survive the asOf validity filter,\n * so pulling a not-yet-valid successor into a historical snapshot\n * would be wrong) and annotation runs in asOf mode: a predecessor is\n * kept and labeled relative to the snapshot without requiring its\n * successor.\n */\n asOfMs?: number,\n): T[] {\n const raw =\n typeof config === \"object\" && config !== null && \"recallStateViews\" in config\n ? config.recallStateViews\n : undefined;\n const enabled = stateViewActive === true || parseRecallStateViews(raw);\n if (!enabled || !isChangeOrientedQuery(query)) return results;\n const asOfActive = typeof asOfMs === \"number\" && Number.isFinite(asOfMs);\n\n // #2859: matches are namespace-qualified, and a successor's `supersedes`\n // back-pointer anchors its predecessor even when the predecessor's own\n // `supersededBy` is absent.\n const candidateIds = new Set<string>();\n const supersedesAnchors = new Set<string>();\n for (const result of results) {\n const key = resultStateViewKey(result);\n if (!key) continue;\n candidateIds.add(key);\n if (result.supersedes) {\n supersedesAnchors.add(stateViewKey(result.namespace, result.supersedes));\n }\n }\n\n const seen = new Set(candidateIds);\n const extra: T[] = [];\n if (!asOfActive) {\n for (const item of pool) {\n const key = resultStateViewKey(item);\n if (!key || seen.has(key)) continue;\n const successorKey = item.supersededBy\n ? stateViewKey(item.namespace, item.supersededBy)\n : undefined;\n if (!shouldWidenSuperseded(successorKey, candidateIds) && !supersedesAnchors.has(key)) {\n continue;\n }\n extra.push(item);\n seen.add(key);\n }\n }\n\n return annotateStateView(extra.length > 0 ? results.concat(extra) : results, query, [], {\n enabled: true,\n ...(asOfActive ? { asOfMs } : {}),\n });\n}\n"],"mappings":";;;;;;;;;;AAiBO,SAAS,sBACd,SACA,OACA,QACA,OAAqB,CAAC,GAQtB,iBASA,QACK;AACL,QAAM,MACJ,OAAO,WAAW,YAAY,WAAW,QAAQ,sBAAsB,SACnE,OAAO,mBACP;AACN,QAAM,UAAU,oBAAoB,QAAQ,sBAAsB,GAAG;AACrE,MAAI,CAAC,WAAW,CAAC,sBAAsB,KAAK,EAAG,QAAO;AACtD,QAAM,aAAa,OAAO,WAAW,YAAY,OAAO,SAAS,MAAM;AAKvE,QAAM,eAAe,oBAAI,IAAY;AACrC,QAAM,oBAAoB,oBAAI,IAAY;AAC1C,aAAW,UAAU,SAAS;AAC5B,UAAM,MAAM,mBAAmB,MAAM;AACrC,QAAI,CAAC,IAAK;AACV,iBAAa,IAAI,GAAG;AACpB,QAAI,OAAO,YAAY;AACrB,wBAAkB,IAAI,aAAa,OAAO,WAAW,OAAO,UAAU,CAAC;AAAA,IACzE;AAAA,EACF;AAEA,QAAM,OAAO,IAAI,IAAI,YAAY;AACjC,QAAM,QAAa,CAAC;AACpB,MAAI,CAAC,YAAY;AACf,eAAW,QAAQ,MAAM;AACvB,YAAM,MAAM,mBAAmB,IAAI;AACnC,UAAI,CAAC,OAAO,KAAK,IAAI,GAAG,EAAG;AAC3B,YAAM,eAAe,KAAK,eACtB,aAAa,KAAK,WAAW,KAAK,YAAY,IAC9C;AACJ,UAAI,CAAC,sBAAsB,cAAc,YAAY,KAAK,CAAC,kBAAkB,IAAI,GAAG,GAAG;AACrF;AAAA,MACF;AACA,YAAM,KAAK,IAAI;AACf,WAAK,IAAI,GAAG;AAAA,IACd;AAAA,EACF;AAEA,SAAO,kBAAkB,MAAM,SAAS,IAAI,QAAQ,OAAO,KAAK,IAAI,SAAS,OAAO,CAAC,GAAG;AAAA,IACtF,SAAS;AAAA,IACT,GAAI,aAAa,EAAE,OAAO,IAAI,CAAC;AAAA,EACjC,CAAC;AACH;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SupportPassportError,
3
3
  getOperation
4
- } from "./chunk-62QIQEUC.js";
4
+ } from "./chunk-UZEHHXYC.js";
5
5
  import {
6
6
  abortError,
7
7
  isAbortError
@@ -499,4 +499,4 @@ export {
499
499
  buildSupportPassportPublicRequestHandler,
500
500
  composeSupportPassportExternalRequestHandlers
501
501
  };
502
- //# sourceMappingURL=chunk-HVS7TH2Y.js.map
502
+ //# sourceMappingURL=chunk-ZBW7A667.js.map
@@ -2,10 +2,10 @@ import { CompoundingPromotionReport } from './compounding/engine.js';
2
2
  import { ConversationIndexBackendInspection } from './conversation-index/backend.js';
3
3
  import { MigrateObservationsResult } from './maintenance/migrate-observations.js';
4
4
  import { M as MemoryFile, m as MemoryFrontmatter, x as MemoryStatus, ac as BehaviorSignalEvent, Q as QmdSearchResult, ah as BulkImportResult, am as MemoryActionEvent, K as MemoryLifecycleEvent } from './types-Cyr32ABj.js';
5
- import { C as ConversationIndexCoordinator, T as TierMigrationCoordinator, O as Orchestrator } from './orchestrator-DocO0_hw.js';
5
+ import { C as ConversationIndexCoordinator, T as TierMigrationCoordinator, O as Orchestrator } from './orchestrator-ComHLm49.js';
6
6
  import { S as StorageManager } from './storage-wvX01lht.js';
7
7
  import { TrustZoneDemoSeedResult, TrustZoneName, TrustZonePromotionResult, TrustZoneStoreStatus } from './trust-zones.js';
8
- import { f as EngramAccessService } from './access-service-gBcdRUHY.js';
8
+ import { f as EngramAccessService } from './access-service-MY4bsr_Q.js';
9
9
  import { Writable, Readable } from 'node:stream';
10
10
  import { ResolveSecretRefFn } from './resolve-auth-token.js';
11
11
  import { CausalTrajectoryStoreStatus } from './causal-trajectory.js';
package/dist/cli.d.ts CHANGED
@@ -2,11 +2,11 @@ import './compounding/engine.js';
2
2
  import './conversation-index/backend.js';
3
3
  import './maintenance/migrate-observations.js';
4
4
  import './types-Cyr32ABj.js';
5
- import './orchestrator-DocO0_hw.js';
5
+ import './orchestrator-ComHLm49.js';
6
6
  import './storage-wvX01lht.js';
7
7
  import './trust-zones.js';
8
- export { c as AccessHttpServeCliCommandOptions, d as ArchiveObservationsCliCommandOptions, e as AuditMemoryCliCommandOptions, B as BulkImportCliCommandOptions, C as CliApi, g as CliCommand, h as CliProgram, i as CompatCliCommandOptions, j as ConnectorsRunCliOutputOptions, k as ConversationIndexHealthCliOrchestrator, D as DashboardStartCliCommandOptions, l as DedupeCandidate, E as ExactDedupePlan, G as GraphHealthCliCommandOptions, M as MemoryActionAuditCliCommandOptions, m as MemoryActionAuditCliNamespaceSummary, n as MemoryActionAuditCliReport, o as MemoryGovernanceCliCommandOptions, q as MemoryGovernanceReportCliCommandOptions, s as MemoryGovernanceRestoreCliCommandOptions, t as MemoryReviewDispositionCliCommandOptions, u as MemoryTimelineCliCommandOptions, v as MigrateCliOrchestrator, w as MigrateCliReport, x as MigrateObservationsCliCommandOptions, P as PolicyDiffCliReport, y as PolicyDiffEntry, z as PolicyRollbackCliReport, F as PolicyStatusCliReport, H as PolicyTuningCliOrchestrator, R as RebuildMemoryLifecycleLedgerCliCommandOptions, I as RebuildMemoryProjectionCliCommandOptions, J as RebuildObservationsCliCommandOptions, K as RepairMemoryProjectionCliCommandOptions, L as ReplayCliCommandOptions, N as ReplayCliOrchestrator, O as RouteCliCommandOptions, S as SessionIntegrityCliCommandOptions, Q as SessionRepairCliCommandOptions, T as TailscaleStatusCliCommandOptions, U as TailscaleSyncCliCommandOptions, V as TierMigrateCliAdapter, W as TierMigrateCoordinatorCliAdapter, X as TierMigrateLegacyCliAdapter, Y as TierStatusCliAdapter, Z as TierStatusCoordinatorCliAdapter, _ as TierStatusLegacyCliAdapter, $ as TrainingExportCliCommandOptions, a0 as VerifyMemoryProjectionCliCommandOptions, a1 as WebDavServeCliCommandOptions, a2 as WorkProjectCliCommandOptions, a3 as WorkTaskCliCommandOptions, a4 as emitConnectorsRunCliResult, a5 as filterNormalMemorySearchResults, a6 as hasDestructivePurgeFailures, a7 as isNormalRetrievalVisibleMemory, a8 as listMemoryMarkdownFilePaths, a9 as parseDurationToMs, aa as parseStrictCliDate, ab as planAggressiveDuplicateDeletions, ac as planExactDuplicateDeletions, ad as registerCli, ae as resolveAccessPrincipalOverride, af as resolveMemoryDirForNamespace, ag as runAbstractionNodeStatusCliCommand, ah as runAccessHttpServeCliCommand, ai as runAccessHttpStatusCliCommand, aj as runAccessHttpStopCliCommand, ak as runAccessMcpServeCliCommand, al as runArchiveObservationsCliCommand, r as runAuditMemoryCliCommand, am as runBenchmarkBaselineReportCliCommand, an as runBenchmarkBaselineSnapshotCliCommand, ao as runBenchmarkCiGateCliCommand, ap as runBenchmarkImportCliCommand, aq as runBenchmarkStatusCliCommand, ar as runBenchmarkStoredBaselineCiGateCliCommand, as as runBenchmarkValidateCliCommand, b as runBulkImportCliCommand, at as runCausalTrajectoryStatusCliCommand, au as runCommitmentLifecycleCliCommand, av as runCommitmentRecordCliCommand, aw as runCommitmentSetStateCliCommand, ax as runCommitmentStatusCliCommand, ay as runCompatCliCommand, az as runCompoundingPromoteCliCommand, aA as runConversationIndexHealthCliCommand, aB as runConversationIndexInspectCliCommand, aC as runConversationIndexRebuildCliCommand, aD as runCueAnchorStatusCliCommand, aE as runDashboardStartCliCommand, aF as runDashboardStatusCliCommand, aG as runDashboardStopCliCommand, aH as runGraphHealthCliCommand, aI as runHarmonicSearchCliCommand, aJ as runMemoryActionAuditCliCommand, aK as runMemoryGovernanceCliCommand, aL as runMemoryGovernanceReportCliCommand, aM as runMemoryGovernanceRestoreCliCommand, aN as runMemoryReviewDispositionCliCommand, aO as runMemoryTimelineCliCommand, aP as runMigrateNormalizeFrontmatterCliCommand, aQ as runMigrateObservationsCliCommand, aR as runMigrateRechunkCliCommand, aS as runMigrateReextractCliCommand, aT as runMigrateRescoreImportanceCliCommand, aU as runObjectiveStateStatusCliCommand, aV as runPolicyDiffCliCommand, aW as runPolicyRollbackCliCommand, aX as runPolicyStatusCliCommand, aY as runRebuildMemoryLifecycleLedgerCliCommand, aZ as runRebuildMemoryProjectionCliCommand, a_ as runRebuildObservationsCliCommand, a$ as runRepairMemoryProjectionCliCommand, b0 as runReplayCliCommand, b1 as runResumeBundleBuildCliCommand, b2 as runResumeBundleRecordCliCommand, b3 as runResumeBundleStatusCliCommand, b4 as runRouteCliCommand, b5 as runSemanticRulePromoteCliCommand, b6 as runSemanticRuleVerifyCliCommand, b7 as runSessionCheckCliCommand, b8 as runSessionRepairCliCommand, b9 as runTailscaleStatusCliCommand, ba as runTailscaleSyncCliCommand, bb as runTierMigrateCliCommand, bc as runTierStatusCliCommand, bd as runTrainingExportCliCommand, be as runTrustZoneDemoSeedCliCommand, bf as runTrustZonePromoteCliCommand, bg as runTrustZoneStatusCliCommand, bh as runUtilityLearningCliCommand, bi as runUtilityLearningStatusCliCommand, bj as runUtilityTelemetryRecordCliCommand, bk as runUtilityTelemetryStatusCliCommand, bl as runVerifiedRecallSearchCliCommand, bm as runVerifyMemoryProjectionCliCommand, bn as runWebDavServeCliCommand, bo as runWebDavStopCliCommand, bp as runWorkProductRecallSearchCliCommand, bq as runWorkProductRecordCliCommand, br as runWorkProductStatusCliCommand, bs as runWorkProjectCliCommand, bt as runWorkTaskCliCommand } from './cli-BNg-TAlz.js';
9
- import './access-service-gBcdRUHY.js';
8
+ export { c as AccessHttpServeCliCommandOptions, d as ArchiveObservationsCliCommandOptions, e as AuditMemoryCliCommandOptions, B as BulkImportCliCommandOptions, C as CliApi, g as CliCommand, h as CliProgram, i as CompatCliCommandOptions, j as ConnectorsRunCliOutputOptions, k as ConversationIndexHealthCliOrchestrator, D as DashboardStartCliCommandOptions, l as DedupeCandidate, E as ExactDedupePlan, G as GraphHealthCliCommandOptions, M as MemoryActionAuditCliCommandOptions, m as MemoryActionAuditCliNamespaceSummary, n as MemoryActionAuditCliReport, o as MemoryGovernanceCliCommandOptions, q as MemoryGovernanceReportCliCommandOptions, s as MemoryGovernanceRestoreCliCommandOptions, t as MemoryReviewDispositionCliCommandOptions, u as MemoryTimelineCliCommandOptions, v as MigrateCliOrchestrator, w as MigrateCliReport, x as MigrateObservationsCliCommandOptions, P as PolicyDiffCliReport, y as PolicyDiffEntry, z as PolicyRollbackCliReport, F as PolicyStatusCliReport, H as PolicyTuningCliOrchestrator, R as RebuildMemoryLifecycleLedgerCliCommandOptions, I as RebuildMemoryProjectionCliCommandOptions, J as RebuildObservationsCliCommandOptions, K as RepairMemoryProjectionCliCommandOptions, L as ReplayCliCommandOptions, N as ReplayCliOrchestrator, O as RouteCliCommandOptions, S as SessionIntegrityCliCommandOptions, Q as SessionRepairCliCommandOptions, T as TailscaleStatusCliCommandOptions, U as TailscaleSyncCliCommandOptions, V as TierMigrateCliAdapter, W as TierMigrateCoordinatorCliAdapter, X as TierMigrateLegacyCliAdapter, Y as TierStatusCliAdapter, Z as TierStatusCoordinatorCliAdapter, _ as TierStatusLegacyCliAdapter, $ as TrainingExportCliCommandOptions, a0 as VerifyMemoryProjectionCliCommandOptions, a1 as WebDavServeCliCommandOptions, a2 as WorkProjectCliCommandOptions, a3 as WorkTaskCliCommandOptions, a4 as emitConnectorsRunCliResult, a5 as filterNormalMemorySearchResults, a6 as hasDestructivePurgeFailures, a7 as isNormalRetrievalVisibleMemory, a8 as listMemoryMarkdownFilePaths, a9 as parseDurationToMs, aa as parseStrictCliDate, ab as planAggressiveDuplicateDeletions, ac as planExactDuplicateDeletions, ad as registerCli, ae as resolveAccessPrincipalOverride, af as resolveMemoryDirForNamespace, ag as runAbstractionNodeStatusCliCommand, ah as runAccessHttpServeCliCommand, ai as runAccessHttpStatusCliCommand, aj as runAccessHttpStopCliCommand, ak as runAccessMcpServeCliCommand, al as runArchiveObservationsCliCommand, r as runAuditMemoryCliCommand, am as runBenchmarkBaselineReportCliCommand, an as runBenchmarkBaselineSnapshotCliCommand, ao as runBenchmarkCiGateCliCommand, ap as runBenchmarkImportCliCommand, aq as runBenchmarkStatusCliCommand, ar as runBenchmarkStoredBaselineCiGateCliCommand, as as runBenchmarkValidateCliCommand, b as runBulkImportCliCommand, at as runCausalTrajectoryStatusCliCommand, au as runCommitmentLifecycleCliCommand, av as runCommitmentRecordCliCommand, aw as runCommitmentSetStateCliCommand, ax as runCommitmentStatusCliCommand, ay as runCompatCliCommand, az as runCompoundingPromoteCliCommand, aA as runConversationIndexHealthCliCommand, aB as runConversationIndexInspectCliCommand, aC as runConversationIndexRebuildCliCommand, aD as runCueAnchorStatusCliCommand, aE as runDashboardStartCliCommand, aF as runDashboardStatusCliCommand, aG as runDashboardStopCliCommand, aH as runGraphHealthCliCommand, aI as runHarmonicSearchCliCommand, aJ as runMemoryActionAuditCliCommand, aK as runMemoryGovernanceCliCommand, aL as runMemoryGovernanceReportCliCommand, aM as runMemoryGovernanceRestoreCliCommand, aN as runMemoryReviewDispositionCliCommand, aO as runMemoryTimelineCliCommand, aP as runMigrateNormalizeFrontmatterCliCommand, aQ as runMigrateObservationsCliCommand, aR as runMigrateRechunkCliCommand, aS as runMigrateReextractCliCommand, aT as runMigrateRescoreImportanceCliCommand, aU as runObjectiveStateStatusCliCommand, aV as runPolicyDiffCliCommand, aW as runPolicyRollbackCliCommand, aX as runPolicyStatusCliCommand, aY as runRebuildMemoryLifecycleLedgerCliCommand, aZ as runRebuildMemoryProjectionCliCommand, a_ as runRebuildObservationsCliCommand, a$ as runRepairMemoryProjectionCliCommand, b0 as runReplayCliCommand, b1 as runResumeBundleBuildCliCommand, b2 as runResumeBundleRecordCliCommand, b3 as runResumeBundleStatusCliCommand, b4 as runRouteCliCommand, b5 as runSemanticRulePromoteCliCommand, b6 as runSemanticRuleVerifyCliCommand, b7 as runSessionCheckCliCommand, b8 as runSessionRepairCliCommand, b9 as runTailscaleStatusCliCommand, ba as runTailscaleSyncCliCommand, bb as runTierMigrateCliCommand, bc as runTierStatusCliCommand, bd as runTrainingExportCliCommand, be as runTrustZoneDemoSeedCliCommand, bf as runTrustZonePromoteCliCommand, bg as runTrustZoneStatusCliCommand, bh as runUtilityLearningCliCommand, bi as runUtilityLearningStatusCliCommand, bj as runUtilityTelemetryRecordCliCommand, bk as runUtilityTelemetryStatusCliCommand, bl as runVerifiedRecallSearchCliCommand, bm as runVerifyMemoryProjectionCliCommand, bn as runWebDavServeCliCommand, bo as runWebDavStopCliCommand, bp as runWorkProductRecallSearchCliCommand, bq as runWorkProductRecordCliCommand, br as runWorkProductStatusCliCommand, bs as runWorkProjectCliCommand, bt as runWorkTaskCliCommand } from './cli-DGq0MNpO.js';
9
+ import './access-service-MY4bsr_Q.js';
10
10
  import 'node:stream';
11
11
  import './resolve-auth-token.js';
12
12
  import './causal-trajectory.js';
package/dist/cli.js CHANGED
@@ -91,12 +91,12 @@ import {
91
91
  runWorkProductStatusCliCommand,
92
92
  runWorkProjectCliCommand,
93
93
  runWorkTaskCliCommand
94
- } from "./chunk-V6G2PSXA.js";
94
+ } from "./chunk-TNZNSMVJ.js";
95
+ import "./chunk-54BGIBCR.js";
95
96
  import "./chunk-H4CKS5B2.js";
96
97
  import "./chunk-MMACM5G2.js";
97
- import "./chunk-54BGIBCR.js";
98
98
  import "./chunk-FXZTL7F7.js";
99
- import "./chunk-TTSJ7WUC.js";
99
+ import "./chunk-VBSNUH4J.js";
100
100
  import "./chunk-BV2TIZ4F.js";
101
101
  import "./chunk-HDDRVXX4.js";
102
102
  import "./chunk-PYHOAXTI.js";
@@ -105,40 +105,40 @@ import "./chunk-OZKVVUJB.js";
105
105
  import "./chunk-2DL3OFLD.js";
106
106
  import "./chunk-G4IAEX6D.js";
107
107
  import "./chunk-2NLLXCJG.js";
108
- import "./chunk-UP6MOYCB.js";
109
108
  import "./chunk-765K3SAT.js";
109
+ import "./chunk-UP6MOYCB.js";
110
110
  import "./chunk-FGDKJJZS.js";
111
111
  import "./chunk-AJVLDJU6.js";
112
112
  import "./chunk-TBUEE7XF.js";
113
113
  import "./chunk-SZDLX763.js";
114
114
  import "./chunk-PYIFUBRK.js";
115
+ import "./chunk-TA4C3XB7.js";
115
116
  import "./chunk-DQTCGVFK.js";
116
117
  import "./chunk-YLBE6PLR.js";
117
118
  import "./chunk-IIFFC3RL.js";
118
119
  import "./chunk-AXFWMRKI.js";
119
- import "./chunk-GQQVEH6V.js";
120
120
  import "./chunk-UJX4I26O.js";
121
121
  import "./chunk-2524MOWK.js";
122
122
  import "./chunk-HSSERO3E.js";
123
123
  import "./chunk-NOUJNHWG.js";
124
124
  import "./chunk-W3K3HITK.js";
125
125
  import "./chunk-EBA5DA77.js";
126
- import "./chunk-ZKZFFWLV.js";
126
+ import "./chunk-AAZEKXUP.js";
127
127
  import "./chunk-HL4DB7TO.js";
128
128
  import "./chunk-OJP3N7UK.js";
129
- import "./chunk-GT4ZHOKT.js";
130
- import "./chunk-6ZMNTRU3.js";
131
- import "./chunk-4B3HBIFX.js";
129
+ import "./chunk-ENBPQEVU.js";
130
+ import "./chunk-AENM6GKU.js";
131
+ import "./chunk-WBM2MVBK.js";
132
132
  import "./chunk-G7NYVKD6.js";
133
133
  import "./chunk-AM4T6CHX.js";
134
134
  import "./chunk-4BCHFSC7.js";
135
135
  import "./chunk-3T74IZB3.js";
136
136
  import "./chunk-2LA3H54D.js";
137
- import "./chunk-A6CKMIPK.js";
138
- import "./chunk-474DL7UB.js";
137
+ import "./chunk-MUTVRKKY.js";
138
+ import "./chunk-FNHLI2RE.js";
139
139
  import "./chunk-KFY3SGN7.js";
140
140
  import "./chunk-CMTINOFS.js";
141
- import "./chunk-MLWMR2GE.js";
141
+ import "./chunk-JKKII6GX.js";
142
142
  import "./chunk-RMMVQQA6.js";
143
143
  import "./chunk-KXRX7YC2.js";
144
144
  import "./chunk-GGRRF4PZ.js";
@@ -152,7 +152,7 @@ import "./chunk-AUDJPF4N.js";
152
152
  import "./chunk-44442YCH.js";
153
153
  import "./chunk-Y4Z4I6WK.js";
154
154
  import "./chunk-2SGLMP2E.js";
155
- import "./chunk-NWMUSKED.js";
155
+ import "./chunk-UHRZ324M.js";
156
156
  import "./chunk-KJTKLXTH.js";
157
157
  import "./chunk-2DQ2XREU.js";
158
158
  import "./chunk-NHLLKEKK.js";
@@ -160,7 +160,7 @@ import "./chunk-OKTXM5H4.js";
160
160
  import "./chunk-B7RWBZXW.js";
161
161
  import "./chunk-YBPYIAA5.js";
162
162
  import "./chunk-6TBIWIAG.js";
163
- import "./chunk-2MT4ADLQ.js";
163
+ import "./chunk-FWWWUPOE.js";
164
164
  import "./chunk-ZKOPY4WW.js";
165
165
  import "./chunk-62OKGIJA.js";
166
166
  import "./chunk-5HYUUFMQ.js";
@@ -184,34 +184,34 @@ import "./chunk-KFZY2OFH.js";
184
184
  import "./chunk-YFTNZMGR.js";
185
185
  import "./chunk-C6WMSXCJ.js";
186
186
  import "./chunk-B32WYRXX.js";
187
- import "./chunk-TRHBQVVO.js";
187
+ import "./chunk-EYKIDK33.js";
188
188
  import "./chunk-V7IZKJI3.js";
189
189
  import "./chunk-XW2T4QAW.js";
190
- import "./chunk-QMWKENNK.js";
190
+ import "./chunk-Q4AUIFUA.js";
191
+ import "./chunk-J64TK33U.js";
191
192
  import "./chunk-RSUYKGGZ.js";
192
193
  import "./chunk-42NQ7AVG.js";
193
194
  import "./chunk-TMSXWOBZ.js";
194
- import "./chunk-TB6CBZ5V.js";
195
- import "./chunk-J64TK33U.js";
196
195
  import "./chunk-7RXCMVFQ.js";
196
+ import "./chunk-TB6CBZ5V.js";
197
197
  import "./chunk-3HSRWJTC.js";
198
198
  import "./chunk-TRLOFIQC.js";
199
- import "./chunk-JPOX2AJB.js";
200
- import "./chunk-HVS7TH2Y.js";
199
+ import "./chunk-NXGSONWM.js";
200
+ import "./chunk-ZBW7A667.js";
201
201
  import "./chunk-SRT6SHVZ.js";
202
- import "./chunk-2OGTN37H.js";
202
+ import "./chunk-5SPCMAUC.js";
203
203
  import "./chunk-EAARGPWI.js";
204
204
  import "./chunk-A5KNZSNA.js";
205
205
  import "./chunk-HUSTM6PU.js";
206
206
  import "./chunk-D24OXEPB.js";
207
- import "./chunk-BYZKLEWG.js";
208
- import "./chunk-JA2QJOAX.js";
209
- import "./chunk-UQNYPK7G.js";
210
- import "./chunk-JNSENHV5.js";
211
- import "./chunk-EY5JAWZC.js";
207
+ import "./chunk-VSL63CFJ.js";
208
+ import "./chunk-TSP5WH72.js";
209
+ import "./chunk-D545Z7UH.js";
210
+ import "./chunk-PCOVEDPK.js";
211
+ import "./chunk-F4EHXVP7.js";
212
212
  import "./chunk-7T4TOGMS.js";
213
213
  import "./chunk-7YQ6ESEA.js";
214
- import "./chunk-G43PMSME.js";
214
+ import "./chunk-OPBFP4TF.js";
215
215
  import "./chunk-SCXURCVT.js";
216
216
  import "./chunk-EQWEIIKQ.js";
217
217
  import "./chunk-JDX2OA4R.js";
@@ -222,22 +222,22 @@ import "./chunk-E4RMZGRS.js";
222
222
  import "./chunk-DGS34QSY.js";
223
223
  import "./chunk-ZQUVBZI4.js";
224
224
  import "./chunk-CK5KOVHW.js";
225
- import "./chunk-VV4ZVUE6.js";
226
- import "./chunk-PPQEP4OH.js";
225
+ import "./chunk-O76F5QPP.js";
226
+ import "./chunk-54NX5EG4.js";
227
227
  import "./chunk-AB3A7EFH.js";
228
228
  import "./chunk-QVSRE355.js";
229
- import "./chunk-DPMTLJCT.js";
229
+ import "./chunk-3NPNBVFR.js";
230
230
  import "./chunk-TIDEL77O.js";
231
231
  import "./chunk-GZ3R6XOE.js";
232
- import "./chunk-KDFDXEXZ.js";
233
- import "./chunk-62QIQEUC.js";
232
+ import "./chunk-GMIQV6DD.js";
233
+ import "./chunk-UZEHHXYC.js";
234
234
  import "./chunk-W4F3C7N7.js";
235
235
  import "./chunk-MPC7TYTZ.js";
236
236
  import "./chunk-ZHXSOMYH.js";
237
+ import "./chunk-CC37E3QM.js";
237
238
  import "./chunk-2J3V5QEO.js";
238
239
  import "./chunk-VQ7B2Q6M.js";
239
- import "./chunk-CC37E3QM.js";
240
- import "./chunk-BX4EOMKT.js";
240
+ import "./chunk-3EKVN2OP.js";
241
241
  import "./chunk-PJSK6OJM.js";
242
242
  import "./chunk-GNVZQ5JN.js";
243
243
  import "./chunk-YN2UN7N3.js";
@@ -252,7 +252,7 @@ import "./chunk-H7XKCNR6.js";
252
252
  import "./chunk-M6HBPLBA.js";
253
253
  import "./chunk-SOBJ6NEY.js";
254
254
  import "./chunk-ZEGL7YCC.js";
255
- import "./chunk-GGAXFTNH.js";
255
+ import "./chunk-O4M4BDIJ.js";
256
256
  import "./chunk-CVILPI77.js";
257
257
  import "./chunk-6WHJ2EAB.js";
258
258
  import "./chunk-AQEJKOKI.js";
@@ -261,7 +261,7 @@ import "./chunk-UD7UNYRD.js";
261
261
  import "./chunk-IISBCCWR.js";
262
262
  import "./chunk-2YA5N2BY.js";
263
263
  import "./chunk-HWLIMQE2.js";
264
- import "./chunk-6PRY6CLC.js";
264
+ import "./chunk-4RZLTZVM.js";
265
265
  import "./chunk-EI6V5UXY.js";
266
266
  import "./chunk-CEO4DONG.js";
267
267
  import "./chunk-SGUDMW2K.js";
@@ -282,12 +282,12 @@ import "./chunk-SV4Z2S67.js";
282
282
  import "./chunk-WTWQA7BB.js";
283
283
  import "./chunk-VZIAVM72.js";
284
284
  import "./chunk-HRATODNO.js";
285
- import "./chunk-XGRXQR6T.js";
286
- import "./chunk-CBFYCDYO.js";
287
- import "./chunk-VHOSM5G4.js";
285
+ import "./chunk-IL6ODG6M.js";
286
+ import "./chunk-GI4ZBWPQ.js";
287
+ import "./chunk-GG5FHZJJ.js";
288
288
  import "./chunk-UFGFMWAD.js";
289
289
  import "./chunk-BMWN7B3Y.js";
290
- import "./chunk-T32B72QX.js";
290
+ import "./chunk-JTQR6L2N.js";
291
291
  import "./chunk-5FAGCOZD.js";
292
292
  import "./chunk-EUT2WCWS.js";
293
293
  import "./chunk-2LSZVONP.js";
@@ -301,24 +301,24 @@ import "./chunk-CSAKJVXW.js";
301
301
  import "./chunk-K2XUWZBM.js";
302
302
  import "./chunk-OD4FM2U7.js";
303
303
  import "./chunk-ZY2MNJR6.js";
304
- import "./chunk-R4VAUNNC.js";
304
+ import "./chunk-VJIE4D2I.js";
305
305
  import "./chunk-3UXOZBHV.js";
306
306
  import "./chunk-V6EGNVUT.js";
307
- import "./chunk-TUKGXQ5T.js";
308
- import "./chunk-7S53BPTU.js";
309
- import "./chunk-UHVXE24Y.js";
307
+ import "./chunk-5YCNDC3C.js";
308
+ import "./chunk-CZTPU65V.js";
310
309
  import "./chunk-46WM6JX2.js";
310
+ import "./chunk-UHVXE24Y.js";
311
311
  import "./chunk-D5F7TKMH.js";
312
- import "./chunk-BJEJUOGM.js";
313
- import "./chunk-OKO57IXB.js";
312
+ import "./chunk-6YAIN5XJ.js";
313
+ import "./chunk-4JVQRFZD.js";
314
+ import "./chunk-TNSCIPBQ.js";
314
315
  import "./chunk-YQNNHLCG.js";
315
316
  import "./chunk-6KTXE6A3.js";
316
317
  import "./chunk-BD7JTBYP.js";
317
318
  import "./chunk-OB3XMWX5.js";
318
- import "./chunk-CYEPCZN5.js";
319
- import "./chunk-TNSCIPBQ.js";
320
319
  import "./chunk-4O6WRBGE.js";
321
320
  import "./chunk-GUMZC2BO.js";
321
+ import "./chunk-CYEPCZN5.js";
322
322
  import "./chunk-TFA6HPOA.js";
323
323
  import "./chunk-F4TWWUMP.js";
324
324
  import "./chunk-72A4L5JJ.js";
@@ -363,7 +363,7 @@ import "./chunk-6JMQR72P.js";
363
363
  import "./chunk-QLK3SL7Q.js";
364
364
  import "./chunk-FEHIOYML.js";
365
365
  import "./chunk-P32IDSHD.js";
366
- import "./chunk-255PC37A.js";
366
+ import "./chunk-YDVAM7S4.js";
367
367
  import "./chunk-WNIUPHWV.js";
368
368
  import "./chunk-IJ6WHMFB.js";
369
369
  import "./chunk-3SG4FGDV.js";