@remnic/core 9.3.690 → 9.3.692

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 (294) hide show
  1. package/dist/access-boundary.d.ts +7 -6
  2. package/dist/access-boundary.js +21 -21
  3. package/dist/access-cli.js +49 -47
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.d.ts +7 -6
  6. package/dist/access-http.js +26 -26
  7. package/dist/access-mcp.d.ts +7 -6
  8. package/dist/access-mcp.js +23 -23
  9. package/dist/access-operations.d.ts +7 -6
  10. package/dist/access-operations.js +22 -22
  11. package/dist/{access-service-Dujr3MTm.d.ts → access-service-DvApf9LZ.d.ts} +2 -2
  12. package/dist/access-service.d.ts +7 -6
  13. package/dist/access-service.js +20 -20
  14. package/dist/access-surface-catalog.d.ts +7 -6
  15. package/dist/action-confidence.d.ts +1 -1
  16. package/dist/active-memory-bridge.d.ts +1 -1
  17. package/dist/active-recall.d.ts +1 -1
  18. package/dist/active-recall.js +1 -1
  19. package/dist/adapters/index.js +4 -4
  20. package/dist/adapters/registry.js +2 -2
  21. package/dist/{auto-sync-NUQWSFQD.js → auto-sync-RWXT6P5M.js} +5 -5
  22. package/dist/behavior-learner.d.ts +1 -1
  23. package/dist/behavior-signals.d.ts +1 -1
  24. package/dist/bootstrap.d.ts +6 -5
  25. package/dist/briefing.d.ts +1 -1
  26. package/dist/briefing.js +5 -5
  27. package/dist/buffer-surprise-report.d.ts +1 -1
  28. package/dist/buffer.d.ts +1 -1
  29. package/dist/calibration.d.ts +1 -1
  30. package/dist/calibration.js +2 -2
  31. package/dist/capabilities.d.ts +1 -1
  32. package/dist/{catalog-CKPtJ114.d.ts → catalog-BEWLjdOr.d.ts} +1 -1
  33. package/dist/causal-behavior.d.ts +1 -1
  34. package/dist/causal-consolidation.d.ts +1 -1
  35. package/dist/causal-consolidation.js +8 -8
  36. package/dist/{chunk-GTDH3IUH.js → chunk-2D27ODNX.js} +2 -2
  37. package/dist/{chunk-46URPRE6.js → chunk-2EN5WZQB.js} +2 -2
  38. package/dist/{chunk-3K37VPM3.js → chunk-3BRA3N5A.js} +2 -2
  39. package/dist/{chunk-RTFAZOIR.js → chunk-3VVH6ZQW.js} +2 -2
  40. package/dist/{chunk-ZU7N3S6V.js → chunk-4IQNAOP3.js} +6 -142
  41. package/dist/chunk-4IQNAOP3.js.map +1 -0
  42. package/dist/{chunk-FIVDN2SM.js → chunk-4RGWCRIJ.js} +4 -4
  43. package/dist/{chunk-AGJH5ISO.js → chunk-5KBNNUXS.js} +2 -2
  44. package/dist/{chunk-X7RLU5CR.js → chunk-66HROLW5.js} +2 -2
  45. package/dist/chunk-6C2BMUZA.js +444 -0
  46. package/dist/chunk-6C2BMUZA.js.map +1 -0
  47. package/dist/{chunk-TYF3D4MS.js → chunk-6ZNIUGXB.js} +11 -11
  48. package/dist/{chunk-UPIBE2DK.js → chunk-ADUAF5EV.js} +2 -2
  49. package/dist/{chunk-LLONI6PY.js → chunk-AFWEUTMS.js} +2 -2
  50. package/dist/{chunk-ZUDM75KG.js → chunk-DCWIQFNA.js} +4 -4
  51. package/dist/{chunk-OMKUJTVJ.js → chunk-DO7MDZMU.js} +4 -4
  52. package/dist/{chunk-NGFEWFNK.js → chunk-DQHZA7Y3.js} +1 -1
  53. package/dist/chunk-DQHZA7Y3.js.map +1 -0
  54. package/dist/{chunk-LXIEXSHU.js → chunk-E6BOD3UJ.js} +2 -2
  55. package/dist/{chunk-OBXTMFZQ.js → chunk-ECZPWSB5.js} +2 -2
  56. package/dist/{chunk-CWE74HRG.js → chunk-FM7KLRKN.js} +3 -3
  57. package/dist/{chunk-BFVPIKDY.js → chunk-GCOSQBQ2.js} +3 -3
  58. package/dist/chunk-HXNMDPHN.js +149 -0
  59. package/dist/chunk-HXNMDPHN.js.map +1 -0
  60. package/dist/{chunk-MDYG7VI7.js → chunk-IREVVFTM.js} +10 -1
  61. package/dist/{chunk-MDYG7VI7.js.map → chunk-IREVVFTM.js.map} +1 -1
  62. package/dist/{chunk-RKNJBZ55.js → chunk-JBPKEARU.js} +4 -4
  63. package/dist/{chunk-CP2NZQLT.js → chunk-KYH53EFD.js} +6 -6
  64. package/dist/{chunk-LQ6JI4VH.js → chunk-LD53WPMU.js} +4 -4
  65. package/dist/{chunk-SB6CQTKP.js → chunk-MCV2DD6F.js} +2 -2
  66. package/dist/{chunk-3FC6LW6T.js → chunk-MRFVMSTR.js} +2 -2
  67. package/dist/{chunk-WDXCNJSF.js → chunk-MXZWKOOR.js} +2 -2
  68. package/dist/{chunk-NSVXK7M5.js → chunk-NEILAC3H.js} +3 -3
  69. package/dist/{chunk-RGNEARXW.js → chunk-NUZ3N445.js} +7 -7
  70. package/dist/{chunk-WROKD3XC.js → chunk-O4ZIV62T.js} +35 -35
  71. package/dist/{chunk-PHZKALOE.js → chunk-QFG23CRE.js} +2 -2
  72. package/dist/{chunk-A4HH2EWA.js → chunk-QVG4LAQO.js} +2 -2
  73. package/dist/{chunk-54PVJDO5.js → chunk-SAC5V6JT.js} +2 -2
  74. package/dist/{chunk-XKUKJIOY.js → chunk-SEK4XIDN.js} +6 -6
  75. package/dist/{chunk-5CEJH5ZN.js → chunk-TAPSNIMA.js} +4 -4
  76. package/dist/{chunk-2N6UNJSX.js → chunk-U2OBZSGG.js} +2 -2
  77. package/dist/{chunk-BKAMHZYR.js → chunk-UOCLRM74.js} +2 -2
  78. package/dist/{chunk-A7UZR6RA.js → chunk-UTUYAPLY.js} +14 -1
  79. package/dist/chunk-UTUYAPLY.js.map +1 -0
  80. package/dist/{chunk-Z7KILAOU.js → chunk-V56S3A23.js} +19 -19
  81. package/dist/{chunk-CUNTLEJP.js → chunk-VFVG4NS2.js} +30 -9
  82. package/dist/chunk-VFVG4NS2.js.map +1 -0
  83. package/dist/{chunk-UD5OKH4J.js → chunk-W4ELOUNX.js} +2 -2
  84. package/dist/{chunk-CE6CBRCV.js → chunk-W4MICQIZ.js} +89 -407
  85. package/dist/chunk-W4MICQIZ.js.map +1 -0
  86. package/dist/{chunk-GR77Z2BM.js → chunk-WIKNVFBS.js} +2 -2
  87. package/dist/{chunk-WRFKZEO6.js → chunk-YQGHW5ML.js} +4 -4
  88. package/dist/{chunk-67MMWC74.js → chunk-ZLXGFAML.js} +2 -2
  89. package/dist/{cli-BkDp6WNi.d.ts → cli-BjsY9Le7.d.ts} +3 -3
  90. package/dist/cli.d.ts +8 -7
  91. package/dist/cli.js +45 -44
  92. package/dist/compounding/engine.d.ts +1 -1
  93. package/dist/compounding/engine.js +5 -5
  94. package/dist/compounding/preference-consolidator.d.ts +1 -1
  95. package/dist/compression-optimizer.d.ts +1 -1
  96. package/dist/config.d.ts +1 -1
  97. package/dist/config.js +1 -1
  98. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  99. package/dist/connectors/codex-materialize-runner.js +5 -5
  100. package/dist/connectors/codex-materialize.d.ts +1 -1
  101. package/dist/connectors/index.d.ts +1 -1
  102. package/dist/connectors/index.js +5 -5
  103. package/dist/consolidation-provenance-check.d.ts +1 -1
  104. package/dist/consolidation-undo.d.ts +1 -1
  105. package/dist/contradiction/index.d.ts +1 -1
  106. package/dist/conversation-index/backend.d.ts +1 -1
  107. package/dist/conversation-index/backend.js +2 -2
  108. package/dist/conversation-index/chunker.d.ts +1 -1
  109. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  110. package/dist/conversation-index/indexer.d.ts +1 -1
  111. package/dist/conversation-index/search.d.ts +1 -1
  112. package/dist/day-summary.d.ts +1 -1
  113. package/dist/delinearize.d.ts +1 -1
  114. package/dist/direct-answer-wiring.d.ts +1 -1
  115. package/dist/direct-answer.d.ts +1 -1
  116. package/dist/embedding-fallback.d.ts +1 -1
  117. package/dist/enrichment/index.d.ts +1 -1
  118. package/dist/entity-retrieval.d.ts +1 -1
  119. package/dist/entity-retrieval.js +5 -5
  120. package/dist/entity-schema.d.ts +1 -1
  121. package/dist/event-time.d.ts +35 -0
  122. package/dist/event-time.js +325 -0
  123. package/dist/event-time.js.map +1 -0
  124. package/dist/explicit-capture.d.ts +6 -5
  125. package/dist/extraction-judge-telemetry.d.ts +1 -1
  126. package/dist/extraction-judge-training.d.ts +1 -1
  127. package/dist/extraction-judge.d.ts +1 -1
  128. package/dist/extraction-judge.js +3 -3
  129. package/dist/extraction.d.ts +1 -1
  130. package/dist/extraction.js +3 -3
  131. package/dist/fallback-llm.d.ts +1 -1
  132. package/dist/fallback-llm.js +2 -2
  133. package/dist/identity-continuity.d.ts +1 -1
  134. package/dist/importance.d.ts +1 -1
  135. package/dist/index.d.ts +11 -10
  136. package/dist/index.js +77 -75
  137. package/dist/index.js.map +1 -1
  138. package/dist/intent.d.ts +1 -1
  139. package/dist/lcm/engine.d.ts +1 -1
  140. package/dist/lcm/index.d.ts +1 -1
  141. package/dist/lcm/tools.d.ts +1 -1
  142. package/dist/lifecycle.d.ts +1 -1
  143. package/dist/live-connectors-runner.d.ts +1 -1
  144. package/dist/local-llm.d.ts +1 -1
  145. package/dist/maintenance/memory-governance.d.ts +1 -1
  146. package/dist/maintenance/memory-governance.js +5 -5
  147. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +5 -5
  148. package/dist/maintenance/rebuild-memory-projection.js +6 -6
  149. package/dist/mcp-memory-inspector-app.d.ts +7 -6
  150. package/dist/memory-action-policy.d.ts +1 -1
  151. package/dist/memory-cache.d.ts +1 -1
  152. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  153. package/dist/memory-projection-store.d.ts +1 -1
  154. package/dist/memory-provenance.d.ts +1 -1
  155. package/dist/memory-worth-outcomes.d.ts +1 -1
  156. package/dist/models-json.d.ts +1 -1
  157. package/dist/namespaces/migrate.d.ts +2 -2
  158. package/dist/namespaces/migrate.js +15 -15
  159. package/dist/namespaces/principal.d.ts +1 -1
  160. package/dist/namespaces/search.d.ts +1 -1
  161. package/dist/namespaces/search.js +9 -9
  162. package/dist/namespaces/storage.d.ts +2 -2
  163. package/dist/namespaces/storage.js +5 -5
  164. package/dist/native-knowledge.d.ts +1 -1
  165. package/dist/operator-toolkit.d.ts +1 -1
  166. package/dist/operator-toolkit.js +20 -19
  167. package/dist/orchestration/maintenance.d.ts +112 -0
  168. package/dist/orchestration/maintenance.js +39 -0
  169. package/dist/orchestration/maintenance.js.map +1 -0
  170. package/dist/{orchestrator-B7ixmUkP.d.ts → orchestrator-CNJCYjZ1.d.ts} +12 -36
  171. package/dist/orchestrator.d.ts +5 -4
  172. package/dist/orchestrator.js +42 -40
  173. package/dist/patterns-cli.d.ts +1 -1
  174. package/dist/policy-runtime.d.ts +1 -1
  175. package/dist/provenance.d.ts +1 -1
  176. package/dist/qmd-recall-cache.d.ts +1 -1
  177. package/dist/qmd.d.ts +1 -1
  178. package/dist/recall-disclosure-escalation.d.ts +1 -1
  179. package/dist/recall-explain-renderer.d.ts +1 -1
  180. package/dist/recall-explain-renderer.js +3 -3
  181. package/dist/recall-planner-llm.d.ts +1 -1
  182. package/dist/recall-planner-llm.js +2 -2
  183. package/dist/recall-state.d.ts +1 -1
  184. package/dist/recall-tag-filter.d.ts +1 -1
  185. package/dist/recall-xray-cli.d.ts +1 -1
  186. package/dist/recall-xray-cli.js +4 -4
  187. package/dist/recall-xray-renderer.d.ts +1 -1
  188. package/dist/recall-xray-renderer.js +3 -3
  189. package/dist/recall-xray.d.ts +1 -1
  190. package/dist/recall-xray.js +2 -2
  191. package/dist/resolve-auth-token.d.ts +1 -1
  192. package/dist/resume-bundles.js +2 -2
  193. package/dist/retrieval-agents.d.ts +1 -1
  194. package/dist/retrieval-tiers.d.ts +1 -1
  195. package/dist/routing/engine.d.ts +1 -1
  196. package/dist/routing/store.d.ts +1 -1
  197. package/dist/search/embed-helper.d.ts +1 -1
  198. package/dist/search/factory.d.ts +1 -1
  199. package/dist/search/factory.js +8 -8
  200. package/dist/search/index.d.ts +1 -1
  201. package/dist/search/index.js +13 -13
  202. package/dist/search/lancedb-backend.d.ts +1 -1
  203. package/dist/search/lancedb-backend.js +2 -2
  204. package/dist/search/meilisearch-backend.d.ts +1 -1
  205. package/dist/search/meilisearch-backend.js +2 -2
  206. package/dist/search/noop-backend.d.ts +1 -1
  207. package/dist/search/orama-backend.d.ts +1 -1
  208. package/dist/search/orama-backend.js +2 -2
  209. package/dist/search/port.d.ts +1 -1
  210. package/dist/search/remote-backend.d.ts +1 -1
  211. package/dist/{semantic-consolidation-CWch5uM7.d.ts → semantic-consolidation-D5U0Mrdb.d.ts} +1 -1
  212. package/dist/semantic-consolidation.d.ts +2 -2
  213. package/dist/semantic-consolidation.js +6 -6
  214. package/dist/semantic-rule-promotion.js +5 -5
  215. package/dist/semantic-rule-verifier.d.ts +1 -1
  216. package/dist/semantic-rule-verifier.js +5 -5
  217. package/dist/session-observer-bands.d.ts +1 -1
  218. package/dist/session-observer-state.d.ts +1 -1
  219. package/dist/shared-context/manager.d.ts +1 -1
  220. package/dist/signal.d.ts +1 -1
  221. package/dist/storage.d.ts +3 -1
  222. package/dist/storage.js +4 -4
  223. package/dist/summarizer.d.ts +1 -1
  224. package/dist/summarizer.js +3 -3
  225. package/dist/summary-snapshot.d.ts +1 -1
  226. package/dist/temporal-supersession.d.ts +1 -1
  227. package/dist/temporal-supersession.js +2 -2
  228. package/dist/temporal-validity.d.ts +22 -2
  229. package/dist/temporal-validity.js +3 -1
  230. package/dist/threading.d.ts +1 -1
  231. package/dist/tier-migration.d.ts +1 -1
  232. package/dist/tier-routing.d.ts +1 -1
  233. package/dist/topics.d.ts +1 -1
  234. package/dist/transcript.d.ts +1 -1
  235. package/dist/{types-Dm5xxVrr.d.ts → types-2NoBoRBM.d.ts} +38 -0
  236. package/dist/types.d.ts +1 -1
  237. package/dist/types.js +1 -1
  238. package/dist/utility-runtime.d.ts +1 -1
  239. package/dist/verified-recall.js +5 -5
  240. package/package.json +12 -2
  241. package/src/bitemporal-frontmatter.test.ts +177 -0
  242. package/src/config.ts +13 -0
  243. package/src/event-time.test.ts +514 -0
  244. package/src/event-time.ts +548 -0
  245. package/src/orchestration/maintenance.test.ts +738 -0
  246. package/src/orchestration/maintenance.ts +557 -0
  247. package/src/orchestrator-flush.test.ts +0 -599
  248. package/src/orchestrator.ts +60 -420
  249. package/src/storage.ts +34 -0
  250. package/src/temporal-validity.ts +34 -0
  251. package/src/types.ts +38 -0
  252. package/dist/chunk-A7UZR6RA.js.map +0 -1
  253. package/dist/chunk-CE6CBRCV.js.map +0 -1
  254. package/dist/chunk-CUNTLEJP.js.map +0 -1
  255. package/dist/chunk-NGFEWFNK.js.map +0 -1
  256. package/dist/chunk-ZU7N3S6V.js.map +0 -1
  257. /package/dist/{auto-sync-NUQWSFQD.js.map → auto-sync-RWXT6P5M.js.map} +0 -0
  258. /package/dist/{chunk-GTDH3IUH.js.map → chunk-2D27ODNX.js.map} +0 -0
  259. /package/dist/{chunk-46URPRE6.js.map → chunk-2EN5WZQB.js.map} +0 -0
  260. /package/dist/{chunk-3K37VPM3.js.map → chunk-3BRA3N5A.js.map} +0 -0
  261. /package/dist/{chunk-RTFAZOIR.js.map → chunk-3VVH6ZQW.js.map} +0 -0
  262. /package/dist/{chunk-FIVDN2SM.js.map → chunk-4RGWCRIJ.js.map} +0 -0
  263. /package/dist/{chunk-AGJH5ISO.js.map → chunk-5KBNNUXS.js.map} +0 -0
  264. /package/dist/{chunk-X7RLU5CR.js.map → chunk-66HROLW5.js.map} +0 -0
  265. /package/dist/{chunk-TYF3D4MS.js.map → chunk-6ZNIUGXB.js.map} +0 -0
  266. /package/dist/{chunk-UPIBE2DK.js.map → chunk-ADUAF5EV.js.map} +0 -0
  267. /package/dist/{chunk-LLONI6PY.js.map → chunk-AFWEUTMS.js.map} +0 -0
  268. /package/dist/{chunk-ZUDM75KG.js.map → chunk-DCWIQFNA.js.map} +0 -0
  269. /package/dist/{chunk-OMKUJTVJ.js.map → chunk-DO7MDZMU.js.map} +0 -0
  270. /package/dist/{chunk-LXIEXSHU.js.map → chunk-E6BOD3UJ.js.map} +0 -0
  271. /package/dist/{chunk-OBXTMFZQ.js.map → chunk-ECZPWSB5.js.map} +0 -0
  272. /package/dist/{chunk-CWE74HRG.js.map → chunk-FM7KLRKN.js.map} +0 -0
  273. /package/dist/{chunk-BFVPIKDY.js.map → chunk-GCOSQBQ2.js.map} +0 -0
  274. /package/dist/{chunk-RKNJBZ55.js.map → chunk-JBPKEARU.js.map} +0 -0
  275. /package/dist/{chunk-CP2NZQLT.js.map → chunk-KYH53EFD.js.map} +0 -0
  276. /package/dist/{chunk-LQ6JI4VH.js.map → chunk-LD53WPMU.js.map} +0 -0
  277. /package/dist/{chunk-SB6CQTKP.js.map → chunk-MCV2DD6F.js.map} +0 -0
  278. /package/dist/{chunk-3FC6LW6T.js.map → chunk-MRFVMSTR.js.map} +0 -0
  279. /package/dist/{chunk-WDXCNJSF.js.map → chunk-MXZWKOOR.js.map} +0 -0
  280. /package/dist/{chunk-NSVXK7M5.js.map → chunk-NEILAC3H.js.map} +0 -0
  281. /package/dist/{chunk-RGNEARXW.js.map → chunk-NUZ3N445.js.map} +0 -0
  282. /package/dist/{chunk-WROKD3XC.js.map → chunk-O4ZIV62T.js.map} +0 -0
  283. /package/dist/{chunk-PHZKALOE.js.map → chunk-QFG23CRE.js.map} +0 -0
  284. /package/dist/{chunk-A4HH2EWA.js.map → chunk-QVG4LAQO.js.map} +0 -0
  285. /package/dist/{chunk-54PVJDO5.js.map → chunk-SAC5V6JT.js.map} +0 -0
  286. /package/dist/{chunk-XKUKJIOY.js.map → chunk-SEK4XIDN.js.map} +0 -0
  287. /package/dist/{chunk-5CEJH5ZN.js.map → chunk-TAPSNIMA.js.map} +0 -0
  288. /package/dist/{chunk-2N6UNJSX.js.map → chunk-U2OBZSGG.js.map} +0 -0
  289. /package/dist/{chunk-BKAMHZYR.js.map → chunk-UOCLRM74.js.map} +0 -0
  290. /package/dist/{chunk-Z7KILAOU.js.map → chunk-V56S3A23.js.map} +0 -0
  291. /package/dist/{chunk-UD5OKH4J.js.map → chunk-W4ELOUNX.js.map} +0 -0
  292. /package/dist/{chunk-GR77Z2BM.js.map → chunk-WIKNVFBS.js.map} +0 -0
  293. /package/dist/{chunk-WRFKZEO6.js.map → chunk-YQGHW5ML.js.map} +0 -0
  294. /package/dist/{chunk-67MMWC74.js.map → chunk-ZLXGFAML.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/temporal-validity.ts"],"sourcesContent":["/**\n * Temporal validity helpers (issue #680).\n *\n * `valid_at` / `invalid_at` are explicit ISO 8601 timestamps that mark when a\n * fact begins and ends being authoritative. These helpers centralize the\n * read-time defaulting rules so every call site (recall filter, supersession\n * write, tests) agrees on the canonical semantics:\n *\n * - `effectiveValidAt(fm)` — the moment this fact starts being true.\n * Falls back to `created` when `valid_at` is absent so legacy memories\n * written before #680 still participate in `as_of` filtering without\n * a backfill migration.\n * - `effectiveInvalidAt(fm)` — the moment this fact stops being true.\n * Returns `undefined` when no `invalid_at` is set; supersession logic\n * populates it on the older fact when a newer one replaces it.\n * - `isValidAsOf(fm, asOfMs)` — true when the fact was authoritative at\n * `asOfMs` (a numeric timestamp in ms). Half-open interval semantics:\n * `valid_at <= asOf < invalid_at`. Strings are parsed via\n * `Date.parse()` so timezone-suffixed ISO strings compare correctly\n * (CLAUDE.md gotcha — never compare ISO strings lexicographically).\n *\n * Boundary case: when `invalid_at === asOf`, the fact is treated as NOT\n * valid (the upper bound is exclusive), which matches the supersession\n * model — at the instant a successor's `valid_at` fires, the predecessor\n * is no longer authoritative.\n */\nimport type { MemoryFrontmatter } from \"./types.js\";\n\nexport function effectiveValidAt(fm: Pick<MemoryFrontmatter, \"valid_at\" | \"created\">): string {\n // `created` is required on every memory (see types.ts), so the fallback\n // chain always terminates. Trimming guards against whitespace-only\n // overrides written by legacy tooling.\n const explicit = fm.valid_at?.trim();\n if (explicit && explicit.length > 0) return explicit;\n return fm.created;\n}\n\nexport function effectiveInvalidAt(\n fm: Pick<MemoryFrontmatter, \"invalid_at\" | \"supersededAt\" | \"status\">,\n): string | undefined {\n const explicit = fm.invalid_at?.trim();\n if (explicit && explicit.length > 0) return explicit;\n // Cursor Medium rounds 1+2 on PR #713: legacy data written before\n // #680 has `status: superseded` and `supersededAt` populated, but\n // no `invalid_at`. With the new `as_of` filter bypassing the\n // supersession status check, those legacy predecessors would\n // otherwise be treated as \"always valid\" and surface alongside\n // their successors at every historical pin. Fall back to\n // `supersededAt` so the half-open `[valid_at, invalid_at)`\n // interval still terminates for legacy supersedes without\n // requiring a backfill migration.\n //\n // BOUNDARY APPROXIMATION: `supersededAt` is when the supersession\n // write fired, which may post-date the successor's true\n // `valid_at` (consolidation runs on its own cadence). So the\n // legacy predecessor stays visible from `valid_at` through\n // `supersededAt` rather than the tighter `valid_at` through\n // successor-`valid_at` window. We accept this intentionally: the\n // alternative — successor-aware coordination — would require\n // threading the successor through every call site, and \"show the\n // legacy fact a bit too long\" is a clear win over \"drop legacy\n // facts entirely from `as_of`\". New data (post-#680) writes\n // `invalid_at` directly and is unaffected.\n if (fm.status === \"superseded\") {\n const legacy = fm.supersededAt?.trim();\n if (legacy && legacy.length > 0) return legacy;\n }\n return undefined;\n}\n\n/**\n * Returns true when the fact was authoritative at `asOfMs` (parsed\n * milliseconds since epoch). Half-open semantics: a fact is valid in\n * `[valid_at, invalid_at)`.\n *\n * If `valid_at` cannot be parsed, the fact is conservatively treated as\n * NOT valid at the requested point — we never silently default a corrupt\n * timestamp to \"always true\" because that would let bad data leak past\n * the historical filter (CLAUDE.md gotcha #34: distinguish empty from\n * malformed).\n */\nexport function isValidAsOf(\n fm: Pick<\n MemoryFrontmatter,\n \"valid_at\" | \"invalid_at\" | \"created\" | \"supersededAt\" | \"status\"\n >,\n asOfMs: number,\n): boolean {\n if (!Number.isFinite(asOfMs)) return true;\n const validAtMs = Date.parse(effectiveValidAt(fm));\n if (!Number.isFinite(validAtMs)) return false;\n if (validAtMs > asOfMs) return false;\n const invalidAt = effectiveInvalidAt(fm);\n if (invalidAt === undefined) return true;\n const invalidAtMs = Date.parse(invalidAt);\n // Unparseable invalid_at — conservatively keep the fact (we can read\n // valid_at, so we know the fact was at some point true; corrupt\n // invalid_at is not a reason to hide it).\n if (!Number.isFinite(invalidAtMs)) return true;\n // Half-open: at exactly invalid_at, the fact is no longer valid.\n return invalidAtMs > asOfMs;\n}\n\n/**\n * Parse and validate an `as_of` value supplied at an input boundary\n * (CLI flag, HTTP query param, MCP field). Returns parsed milliseconds\n * on success; throws a `RangeError` with a helpful message on malformed\n * input. CLAUDE.md rule 51 — never silently default invalid input.\n */\nexport function parseAsOfTimestamp(raw: unknown): number {\n if (typeof raw !== \"string\" || raw.trim().length === 0) {\n throw new RangeError(\n `as_of must be a non-empty ISO 8601 timestamp string (got: ${typeof raw === \"string\" ? `\"${raw}\"` : typeof raw})`,\n );\n }\n const ms = Date.parse(raw);\n if (!Number.isFinite(ms)) {\n throw new RangeError(\n `as_of must be a parseable ISO 8601 timestamp (got: \"${raw}\")`,\n );\n }\n return ms;\n}\n"],"mappings":";AA4BO,SAAS,iBAAiB,IAA6D;AAI5F,QAAM,WAAW,GAAG,UAAU,KAAK;AACnC,MAAI,YAAY,SAAS,SAAS,EAAG,QAAO;AAC5C,SAAO,GAAG;AACZ;AAEO,SAAS,mBACd,IACoB;AACpB,QAAM,WAAW,GAAG,YAAY,KAAK;AACrC,MAAI,YAAY,SAAS,SAAS,EAAG,QAAO;AAsB5C,MAAI,GAAG,WAAW,cAAc;AAC9B,UAAM,SAAS,GAAG,cAAc,KAAK;AACrC,QAAI,UAAU,OAAO,SAAS,EAAG,QAAO;AAAA,EAC1C;AACA,SAAO;AACT;AAaO,SAAS,YACd,IAIA,QACS;AACT,MAAI,CAAC,OAAO,SAAS,MAAM,EAAG,QAAO;AACrC,QAAM,YAAY,KAAK,MAAM,iBAAiB,EAAE,CAAC;AACjD,MAAI,CAAC,OAAO,SAAS,SAAS,EAAG,QAAO;AACxC,MAAI,YAAY,OAAQ,QAAO;AAC/B,QAAM,YAAY,mBAAmB,EAAE;AACvC,MAAI,cAAc,OAAW,QAAO;AACpC,QAAM,cAAc,KAAK,MAAM,SAAS;AAIxC,MAAI,CAAC,OAAO,SAAS,WAAW,EAAG,QAAO;AAE1C,SAAO,cAAc;AACvB;AAQO,SAAS,mBAAmB,KAAsB;AACvD,MAAI,OAAO,QAAQ,YAAY,IAAI,KAAK,EAAE,WAAW,GAAG;AACtD,UAAM,IAAI;AAAA,MACR,6DAA6D,OAAO,QAAQ,WAAW,IAAI,GAAG,MAAM,OAAO,GAAG;AAAA,IAChH;AAAA,EACF;AACA,QAAM,KAAK,KAAK,MAAM,GAAG;AACzB,MAAI,CAAC,OAAO,SAAS,EAAE,GAAG;AACxB,UAAM,IAAI;AAAA,MACR,uDAAuD,GAAG;AAAA,IAC5D;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/temporal-validity.ts"],"sourcesContent":["/**\n * Temporal validity helpers (issue #680).\n *\n * `valid_at` / `invalid_at` are explicit ISO 8601 timestamps that mark when a\n * fact begins and ends being authoritative. These helpers centralize the\n * read-time defaulting rules so every call site (recall filter, supersession\n * write, tests) agrees on the canonical semantics:\n *\n * - `effectiveValidAt(fm)` — the moment this fact starts being true.\n * Falls back to `created` when `valid_at` is absent so legacy memories\n * written before #680 still participate in `as_of` filtering without\n * a backfill migration.\n * - `effectiveInvalidAt(fm)` — the moment this fact stops being true.\n * Returns `undefined` when no `invalid_at` is set; supersession logic\n * populates it on the older fact when a newer one replaces it.\n * - `isValidAsOf(fm, asOfMs)` — true when the fact was authoritative at\n * `asOfMs` (a numeric timestamp in ms). Half-open interval semantics:\n * `valid_at <= asOf < invalid_at`. Strings are parsed via\n * `Date.parse()` so timezone-suffixed ISO strings compare correctly\n * (CLAUDE.md gotcha — never compare ISO strings lexicographically).\n *\n * Boundary case: when `invalid_at === asOf`, the fact is treated as NOT\n * valid (the upper bound is exclusive), which matches the supersession\n * model — at the instant a successor's `valid_at` fires, the predecessor\n * is no longer authoritative.\n */\nimport type { MemoryFrontmatter } from \"./types.js\";\n\nexport function effectiveValidAt(fm: Pick<MemoryFrontmatter, \"valid_at\" | \"created\">): string {\n // `created` is required on every memory (see types.ts), so the fallback\n // chain always terminates. Trimming guards against whitespace-only\n // overrides written by legacy tooling.\n const explicit = fm.valid_at?.trim();\n if (explicit && explicit.length > 0) return explicit;\n return fm.created;\n}\n\nexport function effectiveInvalidAt(\n fm: Pick<MemoryFrontmatter, \"invalid_at\" | \"supersededAt\" | \"status\">,\n): string | undefined {\n const explicit = fm.invalid_at?.trim();\n if (explicit && explicit.length > 0) return explicit;\n // Cursor Medium rounds 1+2 on PR #713: legacy data written before\n // #680 has `status: superseded` and `supersededAt` populated, but\n // no `invalid_at`. With the new `as_of` filter bypassing the\n // supersession status check, those legacy predecessors would\n // otherwise be treated as \"always valid\" and surface alongside\n // their successors at every historical pin. Fall back to\n // `supersededAt` so the half-open `[valid_at, invalid_at)`\n // interval still terminates for legacy supersedes without\n // requiring a backfill migration.\n //\n // BOUNDARY APPROXIMATION: `supersededAt` is when the supersession\n // write fired, which may post-date the successor's true\n // `valid_at` (consolidation runs on its own cadence). So the\n // legacy predecessor stays visible from `valid_at` through\n // `supersededAt` rather than the tighter `valid_at` through\n // successor-`valid_at` window. We accept this intentionally: the\n // alternative — successor-aware coordination — would require\n // threading the successor through every call site, and \"show the\n // legacy fact a bit too long\" is a clear win over \"drop legacy\n // facts entirely from `as_of`\". New data (post-#680) writes\n // `invalid_at` directly and is unaffected.\n if (fm.status === \"superseded\") {\n const legacy = fm.supersededAt?.trim();\n if (legacy && legacy.length > 0) return legacy;\n }\n return undefined;\n}\n\n/**\n * Returns true when the fact was authoritative at `asOfMs` (parsed\n * milliseconds since epoch). Half-open semantics: a fact is valid in\n * `[valid_at, invalid_at)`.\n *\n * If `valid_at` cannot be parsed, the fact is conservatively treated as\n * NOT valid at the requested point — we never silently default a corrupt\n * timestamp to \"always true\" because that would let bad data leak past\n * the historical filter (CLAUDE.md gotcha #34: distinguish empty from\n * malformed).\n */\nexport function isValidAsOf(\n fm: Pick<\n MemoryFrontmatter,\n \"valid_at\" | \"invalid_at\" | \"created\" | \"supersededAt\" | \"status\"\n >,\n asOfMs: number,\n): boolean {\n if (!Number.isFinite(asOfMs)) return true;\n const validAtMs = Date.parse(effectiveValidAt(fm));\n if (!Number.isFinite(validAtMs)) return false;\n if (validAtMs > asOfMs) return false;\n const invalidAt = effectiveInvalidAt(fm);\n if (invalidAt === undefined) return true;\n const invalidAtMs = Date.parse(invalidAt);\n // Unparseable invalid_at — conservatively keep the fact (we can read\n // valid_at, so we know the fact was at some point true; corrupt\n // invalid_at is not a reason to hide it).\n if (!Number.isFinite(invalidAtMs)) return true;\n // Half-open: at exactly invalid_at, the fact is no longer valid.\n return invalidAtMs > asOfMs;\n}\n\n/**\n * Bi-temporal injection filter (issue #1578).\n *\n * Returns `true` when the fact's event-time interval has already ended before\n * `nowMs` — i.e. it is no longer *true in the world* and should leave the\n * default injection candidate set (it remains findable by explicit search\n * and `as_of` queries, mirroring the lifecycle-filter escape-hatch principle\n * in AGENTS.md §16). Gated by `temporalBiTemporal`; the escape hatch\n * `temporalExpiredInInjection` re-admits expired facts when a deployment\n * prefers the older always-inject behavior.\n *\n * Semantics: a fact is expired-now when `invalid_at` is present and\n * `invalid_at <= nowMs` (the exclusive upper bound has passed). Absent\n * `invalid_at` means \"still valid\" — never expired. This is the\n * status-orthogonal complement of `isValidAsOf` for the wall-clock instant:\n * an `active` memory can be validity-expired, and a `superseded` one can\n * still be validity-valid within its historical window (issue pitfall: the\n * filter is status-orthogonal).\n */\nexport function isValidityExpiredNow(\n fm: Pick<MemoryFrontmatter, \"invalid_at\">,\n nowMs: number,\n): boolean {\n if (!Number.isFinite(nowMs)) return false;\n const invalidAt = fm.invalid_at?.trim();\n if (!invalidAt || invalidAt.length === 0) return false;\n const invalidAtMs = Date.parse(invalidAt);\n // Unparseable invalid_at — conservatively keep the fact (do not filter on\n // corrupt data; the as_of path already handles malformed bounds).\n if (!Number.isFinite(invalidAtMs)) return false;\n // Half-open interval end has passed: [valid_at, invalid_at) ended.\n return invalidAtMs <= nowMs;\n}\n\n/**\n * Parse and validate an `as_of` value supplied at an input boundary\n * (CLI flag, HTTP query param, MCP field). Returns parsed milliseconds\n * on success; throws a `RangeError` with a helpful message on malformed\n * input. CLAUDE.md rule 51 — never silently default invalid input.\n */\nexport function parseAsOfTimestamp(raw: unknown): number {\n if (typeof raw !== \"string\" || raw.trim().length === 0) {\n throw new RangeError(\n `as_of must be a non-empty ISO 8601 timestamp string (got: ${typeof raw === \"string\" ? `\"${raw}\"` : typeof raw})`,\n );\n }\n const ms = Date.parse(raw);\n if (!Number.isFinite(ms)) {\n throw new RangeError(\n `as_of must be a parseable ISO 8601 timestamp (got: \"${raw}\")`,\n );\n }\n return ms;\n}\n"],"mappings":";AA4BO,SAAS,iBAAiB,IAA6D;AAI5F,QAAM,WAAW,GAAG,UAAU,KAAK;AACnC,MAAI,YAAY,SAAS,SAAS,EAAG,QAAO;AAC5C,SAAO,GAAG;AACZ;AAEO,SAAS,mBACd,IACoB;AACpB,QAAM,WAAW,GAAG,YAAY,KAAK;AACrC,MAAI,YAAY,SAAS,SAAS,EAAG,QAAO;AAsB5C,MAAI,GAAG,WAAW,cAAc;AAC9B,UAAM,SAAS,GAAG,cAAc,KAAK;AACrC,QAAI,UAAU,OAAO,SAAS,EAAG,QAAO;AAAA,EAC1C;AACA,SAAO;AACT;AAaO,SAAS,YACd,IAIA,QACS;AACT,MAAI,CAAC,OAAO,SAAS,MAAM,EAAG,QAAO;AACrC,QAAM,YAAY,KAAK,MAAM,iBAAiB,EAAE,CAAC;AACjD,MAAI,CAAC,OAAO,SAAS,SAAS,EAAG,QAAO;AACxC,MAAI,YAAY,OAAQ,QAAO;AAC/B,QAAM,YAAY,mBAAmB,EAAE;AACvC,MAAI,cAAc,OAAW,QAAO;AACpC,QAAM,cAAc,KAAK,MAAM,SAAS;AAIxC,MAAI,CAAC,OAAO,SAAS,WAAW,EAAG,QAAO;AAE1C,SAAO,cAAc;AACvB;AAqBO,SAAS,qBACd,IACA,OACS;AACT,MAAI,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AACpC,QAAM,YAAY,GAAG,YAAY,KAAK;AACtC,MAAI,CAAC,aAAa,UAAU,WAAW,EAAG,QAAO;AACjD,QAAM,cAAc,KAAK,MAAM,SAAS;AAGxC,MAAI,CAAC,OAAO,SAAS,WAAW,EAAG,QAAO;AAE1C,SAAO,eAAe;AACxB;AAQO,SAAS,mBAAmB,KAAsB;AACvD,MAAI,OAAO,QAAQ,YAAY,IAAI,KAAK,EAAE,WAAW,GAAG;AACtD,UAAM,IAAI;AAAA,MACR,6DAA6D,OAAO,QAAQ,WAAW,IAAI,GAAG,MAAM,OAAO,GAAG;AAAA,IAChH;AAAA,EACF;AACA,QAAM,KAAK,KAAK,MAAM,GAAG;AACzB,MAAI,CAAC,OAAO,SAAS,EAAE,GAAG;AACxB,UAAM,IAAI;AAAA,MACR,uDAAuD,GAAG;AAAA,IAC5D;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
@@ -1,3 +1,6 @@
1
+ import {
2
+ ReplitAdapter
3
+ } from "./chunk-TMSXWOBZ.js";
1
4
  import {
2
5
  ClaudeCodeAdapter
3
6
  } from "./chunk-J64TK33U.js";
@@ -7,9 +10,6 @@ import {
7
10
  import {
8
11
  HermesAdapter
9
12
  } from "./chunk-42NQ7AVG.js";
10
- import {
11
- ReplitAdapter
12
- } from "./chunk-TMSXWOBZ.js";
13
13
 
14
14
  // src/adapters/registry.ts
15
15
  var AdapterRegistry = class {
@@ -53,4 +53,4 @@ var AdapterRegistry = class {
53
53
  export {
54
54
  AdapterRegistry
55
55
  };
56
- //# sourceMappingURL=chunk-RKNJBZ55.js.map
56
+ //# sourceMappingURL=chunk-JBPKEARU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listNamespaces
3
- } from "./chunk-CWE74HRG.js";
3
+ } from "./chunk-FM7KLRKN.js";
4
4
  import {
5
5
  runConsolidationProvenanceCheck
6
6
  } from "./chunk-7XH7VJN4.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-YBPYIAA5.js";
10
10
  import {
11
11
  summarizeNamespaceMaintenanceHealth
12
- } from "./chunk-ZU7N3S6V.js";
12
+ } from "./chunk-HXNMDPHN.js";
13
13
  import {
14
14
  analyzeSessionIntegrity,
15
15
  applySessionRepair,
@@ -35,17 +35,17 @@ import {
35
35
  } from "./chunk-3PY7VHV7.js";
36
36
  import {
37
37
  parseConfig
38
- } from "./chunk-A7UZR6RA.js";
38
+ } from "./chunk-UTUYAPLY.js";
39
39
  import {
40
40
  listMemoryGovernanceRuns,
41
41
  readMemoryGovernanceRunArtifact
42
- } from "./chunk-54PVJDO5.js";
42
+ } from "./chunk-SAC5V6JT.js";
43
43
  import {
44
44
  analyzeGraphHealth
45
45
  } from "./chunk-KF74X62T.js";
46
46
  import {
47
47
  StorageManager
48
- } from "./chunk-CUNTLEJP.js";
48
+ } from "./chunk-VFVG4NS2.js";
49
49
  import {
50
50
  lintWorkspaceFiles
51
51
  } from "./chunk-DM2T26WE.js";
@@ -1347,4 +1347,4 @@ export {
1347
1347
  runBenchmarkRecall,
1348
1348
  runOperatorRepair
1349
1349
  };
1350
- //# sourceMappingURL=chunk-CP2NZQLT.js.map
1350
+ //# sourceMappingURL=chunk-KYH53EFD.js.map
@@ -1,10 +1,10 @@
1
- import {
2
- scanMemoryDir
3
- } from "./chunk-AER6MT24.js";
4
1
  import {
5
2
  isSearchAborted,
6
3
  throwIfSearchAborted
7
4
  } from "./chunk-CINZGPSJ.js";
5
+ import {
6
+ scanMemoryDir
7
+ } from "./chunk-AER6MT24.js";
8
8
  import {
9
9
  resolveEnsureCollectionArgs
10
10
  } from "./chunk-YNQ6DFSV.js";
@@ -605,4 +605,4 @@ export {
605
605
  resolveOramaCollectionDbFilePath,
606
606
  OramaBackend
607
607
  };
608
- //# sourceMappingURL=chunk-LQ6JI4VH.js.map
608
+ //# sourceMappingURL=chunk-LD53WPMU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-CUNTLEJP.js";
3
+ } from "./chunk-VFVG4NS2.js";
4
4
 
5
5
  // src/semantic-rule-promotion.ts
6
6
  import { createHash, randomUUID } from "crypto";
@@ -529,4 +529,4 @@ export {
529
529
  setSemanticRulePromotionTestHooks,
530
530
  promoteSemanticRuleFromMemory
531
531
  };
532
- //# sourceMappingURL=chunk-SB6CQTKP.js.map
532
+ //# sourceMappingURL=chunk-MCV2DD6F.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  effectiveValidAt
3
- } from "./chunk-MDYG7VI7.js";
3
+ } from "./chunk-IREVVFTM.js";
4
4
  import {
5
5
  log
6
6
  } from "./chunk-NU3CSQ4H.js";
@@ -238,4 +238,4 @@ export {
238
238
  applyTemporalSupersession,
239
239
  shouldFilterSupersededFromRecall
240
240
  };
241
- //# sourceMappingURL=chunk-3FC6LW6T.js.map
241
+ //# sourceMappingURL=chunk-MRFVMSTR.js.map
@@ -31,7 +31,7 @@ import {
31
31
  FallbackLlmClient,
32
32
  fallbackLlmRuntimeContextFromConfig,
33
33
  gatewayTaskChainOptions
34
- } from "./chunk-FIVDN2SM.js";
34
+ } from "./chunk-4RGWCRIJ.js";
35
35
  import {
36
36
  buildChatCompletionTokenLimit,
37
37
  shouldAssumeOpenAiChatCompletions
@@ -2328,4 +2328,4 @@ ${memoryList}` }
2328
2328
  export {
2329
2329
  ExtractionEngine
2330
2330
  };
2331
- //# sourceMappingURL=chunk-WDXCNJSF.js.map
2331
+ //# sourceMappingURL=chunk-MXZWKOOR.js.map
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-UDJLF3BO.js";
4
4
  import {
5
5
  defineOperation
6
- } from "./chunk-46URPRE6.js";
6
+ } from "./chunk-2EN5WZQB.js";
7
7
  import {
8
8
  DECISION_SUBCOMMANDS
9
- } from "./chunk-Z7KILAOU.js";
9
+ } from "./chunk-V56S3A23.js";
10
10
 
11
11
  // src/access-operations.ts
12
12
  import { z } from "zod";
@@ -150,4 +150,4 @@ export {
150
150
  codingArchitectureOperation,
151
151
  REGISTERED_OPERATIONS
152
152
  };
153
- //# sourceMappingURL=chunk-NSVXK7M5.js.map
153
+ //# sourceMappingURL=chunk-NEILAC3H.js.map
@@ -10,10 +10,14 @@ import {
10
10
  import {
11
11
  listMemoryGovernanceRuns,
12
12
  readMemoryGovernanceRunArtifact
13
- } from "./chunk-54PVJDO5.js";
13
+ } from "./chunk-SAC5V6JT.js";
14
14
  import {
15
15
  StorageManager
16
- } from "./chunk-CUNTLEJP.js";
16
+ } from "./chunk-VFVG4NS2.js";
17
+ import {
18
+ normalizeProjectionPreview,
19
+ normalizeProjectionTags
20
+ } from "./chunk-SCU65EZI.js";
17
21
  import {
18
22
  MEMORY_PROJECTION_SCHEMA_VERSION,
19
23
  getMemoryProjectionPath,
@@ -35,10 +39,6 @@ import {
35
39
  sortMemoryLifecycleEvents,
36
40
  toMemoryPathRel
37
41
  } from "./chunk-RULE4VG5.js";
38
- import {
39
- normalizeProjectionPreview,
40
- normalizeProjectionTags
41
- } from "./chunk-SCU65EZI.js";
42
42
 
43
43
  // src/maintenance/rebuild-memory-projection.ts
44
44
  import path from "path";
@@ -929,4 +929,4 @@ export {
929
929
  verifyMemoryProjection,
930
930
  repairMemoryProjection
931
931
  };
932
- //# sourceMappingURL=chunk-RGNEARXW.js.map
932
+ //# sourceMappingURL=chunk-NUZ3N445.js.map
@@ -1,12 +1,15 @@
1
- import {
2
- openclawReplayNormalizer
3
- } from "./chunk-7F7Z6MOS.js";
4
1
  import {
5
2
  chatgptReplayNormalizer
6
3
  } from "./chunk-MC4FJXPA.js";
7
4
  import {
8
5
  claudeReplayNormalizer
9
6
  } from "./chunk-LQHDIS7L.js";
7
+ import {
8
+ openclawReplayNormalizer
9
+ } from "./chunk-7F7Z6MOS.js";
10
+ import {
11
+ importSqlite
12
+ } from "./chunk-AGNBY3VG.js";
10
13
  import {
11
14
  exportJsonBundle
12
15
  } from "./chunk-UP6MOYCB.js";
@@ -16,9 +19,6 @@ import {
16
19
  import {
17
20
  importMarkdownBundle
18
21
  } from "./chunk-HDDRVXX4.js";
19
- import {
20
- importSqlite
21
- } from "./chunk-AGNBY3VG.js";
22
22
  import {
23
23
  detectImportFormat
24
24
  } from "./chunk-OZKVVUJB.js";
@@ -31,28 +31,28 @@ import {
31
31
  import {
32
32
  exportMarkdownBundle
33
33
  } from "./chunk-765K3SAT.js";
34
+ import {
35
+ buildReplayNormalizerRegistry,
36
+ clampBatchSize,
37
+ runReplay
38
+ } from "./chunk-HOJZMQ4J.js";
34
39
  import {
35
40
  TailscaleHelper
36
41
  } from "./chunk-EEC4PCG5.js";
37
42
  import {
38
43
  WebDavServer
39
44
  } from "./chunk-PYIFUBRK.js";
40
- import {
41
- buildReplayNormalizerRegistry,
42
- clampBatchSize,
43
- runReplay
44
- } from "./chunk-HOJZMQ4J.js";
45
45
  import {
46
46
  migrateObservations
47
47
  } from "./chunk-D6RIFG4O.js";
48
48
  import {
49
49
  rebuildMemoryLifecycleLedger
50
- } from "./chunk-GR77Z2BM.js";
50
+ } from "./chunk-WIKNVFBS.js";
51
51
  import {
52
52
  rebuildMemoryProjection,
53
53
  repairMemoryProjection,
54
54
  verifyMemoryProjection
55
- } from "./chunk-RGNEARXW.js";
55
+ } from "./chunk-NUZ3N445.js";
56
56
  import {
57
57
  rebuildObservations
58
58
  } from "./chunk-LZZNTPLR.js";
@@ -74,18 +74,18 @@ import {
74
74
  } from "./chunk-IQ7WCZRW.js";
75
75
  import {
76
76
  promoteSemanticRuleFromMemory
77
- } from "./chunk-SB6CQTKP.js";
77
+ } from "./chunk-MCV2DD6F.js";
78
+ import {
79
+ resolveAgentAccessAuthToken
80
+ } from "./chunk-TGQ2NTWH.js";
78
81
  import {
79
82
  buildResumeBundleFromState,
80
83
  getResumeBundleStatus,
81
84
  recordResumeBundle
82
- } from "./chunk-3K37VPM3.js";
85
+ } from "./chunk-3BRA3N5A.js";
83
86
  import {
84
87
  parseXrayCliOptions
85
- } from "./chunk-BFVPIKDY.js";
86
- import {
87
- resolveAgentAccessAuthToken
88
- } from "./chunk-TGQ2NTWH.js";
88
+ } from "./chunk-GCOSQBQ2.js";
89
89
  import {
90
90
  collectPatternMemories,
91
91
  explainPatternMemory,
@@ -102,22 +102,22 @@ import {
102
102
  runOperatorInventory,
103
103
  runOperatorRepair,
104
104
  runOperatorSetup
105
- } from "./chunk-CP2NZQLT.js";
105
+ } from "./chunk-KYH53EFD.js";
106
106
  import {
107
107
  listNamespaces,
108
108
  runNamespaceMigration,
109
109
  verifyNamespaces
110
- } from "./chunk-CWE74HRG.js";
110
+ } from "./chunk-FM7KLRKN.js";
111
111
  import {
112
112
  GraphDashboardServer
113
113
  } from "./chunk-YNDLCWXS.js";
114
- import {
115
- RoutingRulesStore
116
- } from "./chunk-WIWPSQYU.js";
117
114
  import {
118
115
  isReplaySource,
119
116
  normalizeReplaySessionKey
120
117
  } from "./chunk-2PRQG7PV.js";
118
+ import {
119
+ RoutingRulesStore
120
+ } from "./chunk-WIWPSQYU.js";
121
121
  import {
122
122
  getUtilityLearningStatus,
123
123
  learnUtilityPromotionWeights
@@ -128,13 +128,13 @@ import {
128
128
  } from "./chunk-TERNBNJB.js";
129
129
  import {
130
130
  searchVerifiedEpisodes
131
- } from "./chunk-RTFAZOIR.js";
131
+ } from "./chunk-3VVH6ZQW.js";
132
132
  import {
133
133
  ThreadingManager
134
134
  } from "./chunk-QRDOSYOR.js";
135
135
  import {
136
136
  searchVerifiedSemanticRules
137
- } from "./chunk-67MMWC74.js";
137
+ } from "./chunk-ZLXGFAML.js";
138
138
  import {
139
139
  getWorkProductLedgerStatus,
140
140
  recordWorkProductLedgerEntry,
@@ -149,7 +149,7 @@ import {
149
149
  } from "./chunk-33JBK2XP.js";
150
150
  import {
151
151
  formatNamespaceMaintenanceHealthText
152
- } from "./chunk-ZU7N3S6V.js";
152
+ } from "./chunk-HXNMDPHN.js";
153
153
  import {
154
154
  analyzeSessionIntegrity,
155
155
  applySessionRepair,
@@ -213,22 +213,22 @@ import {
213
213
  } from "./chunk-UQ7RN5HK.js";
214
214
  import {
215
215
  parseConfig
216
- } from "./chunk-A7UZR6RA.js";
216
+ } from "./chunk-UTUYAPLY.js";
217
217
  import {
218
218
  getAbstractionNodeStoreStatus
219
219
  } from "./chunk-OADWQ5CR.js";
220
220
  import {
221
221
  EngramAccessHttpServer
222
- } from "./chunk-XKUKJIOY.js";
222
+ } from "./chunk-SEK4XIDN.js";
223
223
  import {
224
224
  WearablesInputError
225
225
  } from "./chunk-7WV3F5DQ.js";
226
226
  import {
227
227
  EngramMcpServer
228
- } from "./chunk-OMKUJTVJ.js";
228
+ } from "./chunk-DO7MDZMU.js";
229
229
  import {
230
230
  EngramAccessService
231
- } from "./chunk-Z7KILAOU.js";
231
+ } from "./chunk-V56S3A23.js";
232
232
  import {
233
233
  WorkStorage
234
234
  } from "./chunk-GDB4J2H3.js";
@@ -236,7 +236,7 @@ import {
236
236
  parseRecallExplainFormat,
237
237
  renderRecallExplain,
238
238
  renderXray
239
- } from "./chunk-GTDH3IUH.js";
239
+ } from "./chunk-2D27ODNX.js";
240
240
  import {
241
241
  getTrustZoneStoreStatus,
242
242
  promoteTrustZoneRecord,
@@ -250,7 +250,7 @@ import {
250
250
  readMemoryGovernanceRunArtifact,
251
251
  restoreMemoryGovernanceRun,
252
252
  runMemoryGovernance
253
- } from "./chunk-54PVJDO5.js";
253
+ } from "./chunk-SAC5V6JT.js";
254
254
  import {
255
255
  analyzeGraphHealth
256
256
  } from "./chunk-KF74X62T.js";
@@ -263,7 +263,7 @@ import {
263
263
  import {
264
264
  RECALL_DISCLOSURE_LEVELS,
265
265
  isRecallDisclosure
266
- } from "./chunk-NGFEWFNK.js";
266
+ } from "./chunk-DQHZA7Y3.js";
267
267
  import {
268
268
  RECALL_FALLBACK_DIRS
269
269
  } from "./chunk-VS2IYZRU.js";
@@ -7326,4 +7326,4 @@ export {
7326
7326
  listMemoryMarkdownFilePaths,
7327
7327
  registerCli
7328
7328
  };
7329
- //# sourceMappingURL=chunk-WROKD3XC.js.map
7329
+ //# sourceMappingURL=chunk-O4ZIV62T.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runPostConsolidationMaterialize
3
- } from "./chunk-UPIBE2DK.js";
3
+ } from "./chunk-ADUAF5EV.js";
4
4
  import {
5
5
  discoverMemoryExtensions,
6
6
  renderExtensionsBlock,
@@ -217,4 +217,4 @@ export {
217
217
  buildExtensionsBlockForConsolidation,
218
218
  materializeAfterSemanticConsolidation
219
219
  };
220
- //# sourceMappingURL=chunk-PHZKALOE.js.map
220
+ //# sourceMappingURL=chunk-QFG23CRE.js.map
@@ -16,7 +16,7 @@ import {
16
16
  FallbackLlmClient,
17
17
  fallbackLlmRuntimeContextFromConfig,
18
18
  gatewayTaskChainOptions
19
- } from "./chunk-FIVDN2SM.js";
19
+ } from "./chunk-4RGWCRIJ.js";
20
20
  import {
21
21
  encodeStoragePathSegment,
22
22
  resolveSafeStoragePath
@@ -686,4 +686,4 @@ ${truncatedConversation}`;
686
686
  export {
687
687
  HourlySummarizer
688
688
  };
689
- //# sourceMappingURL=chunk-A4HH2EWA.js.map
689
+ //# sourceMappingURL=chunk-QVG4LAQO.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-CUNTLEJP.js";
3
+ } from "./chunk-VFVG4NS2.js";
4
4
  import {
5
5
  assertPathInsideRoot
6
6
  } from "./chunk-5GPPACXK.js";
@@ -751,4 +751,4 @@ export {
751
751
  listMemoryGovernanceRuns,
752
752
  readMemoryGovernanceRunArtifact
753
753
  };
754
- //# sourceMappingURL=chunk-54PVJDO5.js.map
754
+ //# sourceMappingURL=chunk-SAC5V6JT.js.map
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  AdapterRegistry
3
- } from "./chunk-RKNJBZ55.js";
3
+ } from "./chunk-JBPKEARU.js";
4
4
  import {
5
5
  WearablesInputError
6
6
  } from "./chunk-7WV3F5DQ.js";
7
7
  import {
8
8
  EngramMcpServer
9
- } from "./chunk-OMKUJTVJ.js";
9
+ } from "./chunk-DO7MDZMU.js";
10
10
  import {
11
11
  validateRequest
12
12
  } from "./chunk-UDJLF3BO.js";
13
13
  import {
14
14
  getOperation
15
- } from "./chunk-46URPRE6.js";
15
+ } from "./chunk-2EN5WZQB.js";
16
16
  import {
17
17
  EngramAccessInputError
18
- } from "./chunk-Z7KILAOU.js";
18
+ } from "./chunk-V56S3A23.js";
19
19
  import {
20
20
  projectTagProjectId
21
21
  } from "./chunk-7MOTEVAA.js";
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-DEUNUKTD.js";
28
28
  import {
29
29
  isRecallDisclosure
30
- } from "./chunk-NGFEWFNK.js";
30
+ } from "./chunk-DQHZA7Y3.js";
31
31
  import {
32
32
  OFFLINE_SYNC_APPLY_MAX_BODY_BYTES,
33
33
  OFFLINE_SYNC_FILE_CONTENT_MAX_CHUNK_BYTES,
@@ -2079,4 +2079,4 @@ function positiveIntQueryParam(value, label) {
2079
2079
  export {
2080
2080
  EngramAccessHttpServer
2081
2081
  };
2082
- //# sourceMappingURL=chunk-XKUKJIOY.js.map
2082
+ //# sourceMappingURL=chunk-SEK4XIDN.js.map
@@ -1,10 +1,10 @@
1
- import {
2
- scanMemoryDir
3
- } from "./chunk-AER6MT24.js";
4
1
  import {
5
2
  isSearchAborted,
6
3
  throwIfSearchAborted
7
4
  } from "./chunk-CINZGPSJ.js";
5
+ import {
6
+ scanMemoryDir
7
+ } from "./chunk-AER6MT24.js";
8
8
  import {
9
9
  resolveEnsureCollectionArgs
10
10
  } from "./chunk-YNQ6DFSV.js";
@@ -491,4 +491,4 @@ function isMissingVectorProviderColumnError(err) {
491
491
  export {
492
492
  LanceDbBackend
493
493
  };
494
- //# sourceMappingURL=chunk-5CEJH5ZN.js.map
494
+ //# sourceMappingURL=chunk-TAPSNIMA.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  compareEntityTimestamps,
6
6
  normalizeEntityName
7
- } from "./chunk-CUNTLEJP.js";
7
+ } from "./chunk-VFVG4NS2.js";
8
8
  import {
9
9
  sanitizeMemoryContent
10
10
  } from "./chunk-FVQJYWH7.js";
@@ -679,4 +679,4 @@ export {
679
679
  entityIndexVersion,
680
680
  entityRecentTranscriptLookbackHours
681
681
  };
682
- //# sourceMappingURL=chunk-2N6UNJSX.js.map
682
+ //# sourceMappingURL=chunk-U2OBZSGG.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-UFS7OXGL.js";
5
5
  import {
6
6
  StorageManager
7
- } from "./chunk-CUNTLEJP.js";
7
+ } from "./chunk-VFVG4NS2.js";
8
8
  import {
9
9
  parseContinuityImprovementLoops
10
10
  } from "./chunk-LDXUBPMO.js";
@@ -1261,4 +1261,4 @@ export {
1261
1261
  defaultTierMigrationCycleBudget,
1262
1262
  CompoundingEngine
1263
1263
  };
1264
- //# sourceMappingURL=chunk-BKAMHZYR.js.map
1264
+ //# sourceMappingURL=chunk-UOCLRM74.js.map
@@ -1685,6 +1685,19 @@ function parseConfig(raw, rawOperatorConfig, runtimeSet) {
1685
1685
  // On by default
1686
1686
  temporalSupersessionIncludeInRecall: cfg.temporalSupersessionIncludeInRecall === true,
1687
1687
  // Off by default
1688
+ // Bi-temporal validity (issue #1578). Default `false` so recall behaves
1689
+ // byte-identically to pre-#1578 until an operator opts in. Uses coerceBool
1690
+ // (same as recallDirectAnswerEnabled below) so CLI string "true" works.
1691
+ //
1692
+ // CURRENT scope (this PR): the recall injection filter (expired-validity
1693
+ // facts leave default injection but stay findable by explicit search and
1694
+ // as_of queries) + the observedAt/eventTimeSource storage fields. The
1695
+ // extraction prompt → resolveEventTime write-time wiring lands in a
1696
+ // follow-on PR; until then, enabling the gate exercises the filter and
1697
+ // storage round-trip but new extractions are not yet event-time-resolved
1698
+ // (docs kept honest — review: wire resolver before exposing the gate).
1699
+ temporalBiTemporal: coerceBool(cfg.temporalBiTemporal) ?? false,
1700
+ temporalExpiredInInjection: coerceBool(cfg.temporalExpiredInInjection) ?? false,
1688
1701
  // Direct-answer retrieval tier (issue #518). Default off so the
1689
1702
  // recall path keeps least-privileged behavior unless operators
1690
1703
  // explicitly opt in.
@@ -3214,4 +3227,4 @@ export {
3214
3227
  VALID_MEMORY_CATEGORIES,
3215
3228
  parseConfig
3216
3229
  };
3217
- //# sourceMappingURL=chunk-A7UZR6RA.js.map
3230
+ //# sourceMappingURL=chunk-UTUYAPLY.js.map