@remnic/core 9.3.725 → 9.3.727

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 (352) hide show
  1. package/dist/access-boundary.d.ts +5 -5
  2. package/dist/access-boundary.js +28 -27
  3. package/dist/access-cli.js +65 -63
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.d.ts +20 -5
  6. package/dist/access-http.js +34 -33
  7. package/dist/access-mcp.d.ts +5 -5
  8. package/dist/access-mcp.js +31 -30
  9. package/dist/access-operations-batch.js +29 -28
  10. package/dist/access-operations.d.ts +5 -5
  11. package/dist/access-operations.js +30 -29
  12. package/dist/{access-service-B2PlPtxh.d.ts → access-service-Bgpjxo4f.d.ts} +36 -4
  13. package/dist/access-service.d.ts +5 -5
  14. package/dist/access-service.js +27 -26
  15. package/dist/access-surface-catalog.d.ts +5 -5
  16. package/dist/action-confidence.d.ts +1 -1
  17. package/dist/active-memory-bridge.d.ts +1 -1
  18. package/dist/active-recall.d.ts +1 -1
  19. package/dist/active-recall.js +3 -3
  20. package/dist/adapters/index.js +4 -4
  21. package/dist/adapters/registry.js +2 -2
  22. package/dist/behavior-learner.d.ts +1 -1
  23. package/dist/behavior-signals.d.ts +1 -1
  24. package/dist/bootstrap.d.ts +4 -4
  25. package/dist/briefing.d.ts +1 -1
  26. package/dist/briefing.js +9 -8
  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/capabilities.d.ts +1 -1
  31. package/dist/{catalog-CzUb-GyD.d.ts → catalog-bMczlO2G.d.ts} +1 -1
  32. package/dist/causal-behavior.d.ts +1 -1
  33. package/dist/causal-consolidation.d.ts +1 -1
  34. package/dist/causal-consolidation.js +10 -9
  35. package/dist/causal-consolidation.js.map +1 -1
  36. package/dist/causal-trajectory-graph.d.ts +1 -1
  37. package/dist/{chunk-KGZF2VO3.js → chunk-27QQC7ZX.js} +80 -19
  38. package/dist/{chunk-KGZF2VO3.js.map → chunk-27QQC7ZX.js.map} +1 -1
  39. package/dist/{chunk-HCVWF657.js → chunk-2KAYTPPT.js} +12 -12
  40. package/dist/{chunk-4SF232E6.js → chunk-36SEDFAU.js} +19 -7
  41. package/dist/chunk-36SEDFAU.js.map +1 -0
  42. package/dist/{chunk-ZK2L72VN.js → chunk-37436GML.js} +2 -2
  43. package/dist/{chunk-SC2YAWRF.js → chunk-3TSTGI6F.js} +2 -2
  44. package/dist/{chunk-FACTVMXQ.js → chunk-4H4F3BFL.js} +2 -2
  45. package/dist/{chunk-WAFDHKES.js → chunk-4NOI577P.js} +2 -2
  46. package/dist/{chunk-YQMPUYHE.js → chunk-4NR2PDZ5.js} +2 -2
  47. package/dist/{chunk-TAPSNIMA.js → chunk-5CEJH5ZN.js} +4 -4
  48. package/dist/{chunk-FN6QP7JQ.js → chunk-6PY5YJAV.js} +100 -14
  49. package/dist/{chunk-FN6QP7JQ.js.map → chunk-6PY5YJAV.js.map} +1 -1
  50. package/dist/{chunk-PKMQK2WY.js → chunk-773DPI6T.js} +4 -4
  51. package/dist/{chunk-4R3CGCI5.js → chunk-7RLCCNHU.js} +15 -12
  52. package/dist/chunk-7RLCCNHU.js.map +1 -0
  53. package/dist/{chunk-XGTBNVIU.js → chunk-AAD2ZS6P.js} +11 -1
  54. package/dist/chunk-AAD2ZS6P.js.map +1 -0
  55. package/dist/{chunk-Z3FGC3QE.js → chunk-AQLOP5F4.js} +139 -30
  56. package/dist/chunk-AQLOP5F4.js.map +1 -0
  57. package/dist/{chunk-FXCIOLRB.js → chunk-ASKXIAHD.js} +2 -2
  58. package/dist/{chunk-5OPYYPJN.js → chunk-CBWI22JN.js} +2 -2
  59. package/dist/{chunk-ZOHMPFOB.js → chunk-CKFLLAIS.js} +3 -3
  60. package/dist/{chunk-GZQXOQQ2.js → chunk-CSRXQ6NB.js} +5 -5
  61. package/dist/{chunk-QR67FU5G.js → chunk-CTOQEZSN.js} +2 -2
  62. package/dist/{chunk-ZUDM75KG.js → chunk-DCWIQFNA.js} +4 -4
  63. package/dist/{chunk-6CWGS2LY.js → chunk-DKJCRGWM.js} +3 -3
  64. package/dist/{chunk-JJJCVCCQ.js → chunk-DMQWV6SQ.js} +2 -2
  65. package/dist/{chunk-F3XZN24Z.js → chunk-DRUDC2UX.js} +2 -2
  66. package/dist/{chunk-4WZ3J7M6.js → chunk-EY6MDMHK.js} +2 -2
  67. package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
  68. package/dist/{chunk-C4X4QGIO.js → chunk-G6NKALRN.js} +5 -2
  69. package/dist/chunk-G6NKALRN.js.map +1 -0
  70. package/dist/{chunk-6SQQOJ4U.js → chunk-GKRLPHPU.js} +2 -2
  71. package/dist/{chunk-D7EBTQ24.js → chunk-HOHVIVDR.js} +2 -2
  72. package/dist/{chunk-RKNJBZ55.js → chunk-JBPKEARU.js} +4 -4
  73. package/dist/{chunk-UBHVAGO7.js → chunk-JYLFZWUX.js} +2 -2
  74. package/dist/{chunk-LD53WPMU.js → chunk-LQ6JI4VH.js} +4 -4
  75. package/dist/chunk-LTHVM4XN.js +109 -0
  76. package/dist/chunk-LTHVM4XN.js.map +1 -0
  77. package/dist/{chunk-WM7DNKBD.js → chunk-M4V2JVSZ.js} +2 -2
  78. package/dist/{chunk-I2HL5M6T.js → chunk-MJIHJ7OG.js} +52 -52
  79. package/dist/{chunk-J334N6QV.js → chunk-MLKWJOAJ.js} +2 -2
  80. package/dist/{chunk-C6BWLYW5.js → chunk-N3VNUM4Z.js} +171 -79
  81. package/dist/chunk-N3VNUM4Z.js.map +1 -0
  82. package/dist/{chunk-DF3I6JGP.js → chunk-NSA5ZRUL.js} +15 -15
  83. package/dist/{chunk-VI5SGGXB.js → chunk-OEEW4KJA.js} +4 -4
  84. package/dist/{chunk-7AG54AF3.js → chunk-PUR2CKX2.js} +1 -1
  85. package/dist/chunk-PUR2CKX2.js.map +1 -0
  86. package/dist/{chunk-NT36GU6X.js → chunk-R7IYU5DZ.js} +2 -2
  87. package/dist/{chunk-TT5U3UDO.js → chunk-SNKPUJHR.js} +4 -4
  88. package/dist/{chunk-T55EGZSJ.js → chunk-UVPL565C.js} +2 -2
  89. package/dist/chunk-W5H6ZRPT.js +14 -0
  90. package/dist/chunk-W5H6ZRPT.js.map +1 -0
  91. package/dist/{chunk-YQGHW5ML.js → chunk-WRFKZEO6.js} +4 -4
  92. package/dist/{chunk-KLFYKC3K.js → chunk-XPHVAOBT.js} +195 -74
  93. package/dist/chunk-XPHVAOBT.js.map +1 -0
  94. package/dist/{chunk-H7HUQIY7.js → chunk-Y4YD5TYW.js} +3 -3
  95. package/dist/{chunk-MDBZTH7N.js → chunk-YKBHOBJK.js} +44 -10
  96. package/dist/chunk-YKBHOBJK.js.map +1 -0
  97. package/dist/{chunk-YUYPWJD3.js → chunk-YOLZS7NY.js} +2 -2
  98. package/dist/{chunk-6OIDDKAA.js → chunk-YTU7WKYN.js} +35 -9
  99. package/dist/chunk-YTU7WKYN.js.map +1 -0
  100. package/dist/{cli-IOlDHSBT.d.ts → cli-BLME420h.d.ts} +3 -3
  101. package/dist/cli.d.ts +6 -6
  102. package/dist/cli.js +60 -59
  103. package/dist/compat/codex-cli-fallback.d.ts +1 -0
  104. package/dist/compat/codex-cli-fallback.js +22 -0
  105. package/dist/compat/codex-cli-fallback.js.map +1 -0
  106. package/dist/compat/codex-thread-key.d.ts +1 -0
  107. package/dist/compat/codex-thread-key.js +18 -0
  108. package/dist/compat/codex-thread-key.js.map +1 -0
  109. package/dist/compounding/engine.d.ts +1 -1
  110. package/dist/compounding/engine.js +9 -8
  111. package/dist/compounding/preference-consolidator.d.ts +1 -1
  112. package/dist/compression-optimizer.d.ts +1 -1
  113. package/dist/config.d.ts +1 -1
  114. package/dist/config.js +3 -3
  115. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  116. package/dist/connectors/codex-materialize-runner.js +9 -8
  117. package/dist/connectors/codex-materialize.d.ts +1 -1
  118. package/dist/connectors/index.d.ts +1 -1
  119. package/dist/connectors/index.js +9 -8
  120. package/dist/consolidation-provenance-check.d.ts +1 -1
  121. package/dist/consolidation-undo.d.ts +1 -1
  122. package/dist/content-hash.d.ts +14 -0
  123. package/dist/content-hash.js +10 -0
  124. package/dist/content-hash.js.map +1 -0
  125. package/dist/contradiction/index.d.ts +1 -1
  126. package/dist/conversation-index/backend.d.ts +1 -1
  127. package/dist/conversation-index/backend.js +2 -2
  128. package/dist/conversation-index/chunker.d.ts +1 -1
  129. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  130. package/dist/conversation-index/indexer.d.ts +1 -1
  131. package/dist/conversation-index/search.d.ts +1 -1
  132. package/dist/dashboard-runtime.js +2 -2
  133. package/dist/day-summary.d.ts +1 -1
  134. package/dist/delinearize.d.ts +1 -1
  135. package/dist/direct-answer-wiring.d.ts +1 -1
  136. package/dist/direct-answer.d.ts +1 -1
  137. package/dist/embedding-fallback.d.ts +1 -1
  138. package/dist/enrichment/index.d.ts +1 -1
  139. package/dist/entity-retrieval.d.ts +1 -1
  140. package/dist/entity-retrieval.js +9 -8
  141. package/dist/entity-schema.d.ts +1 -1
  142. package/dist/explicit-capture.d.ts +4 -4
  143. package/dist/extraction-faithfulness.d.ts +1 -1
  144. package/dist/extraction-faithfulness.js +2 -2
  145. package/dist/extraction-judge-telemetry.d.ts +1 -1
  146. package/dist/extraction-judge-training.d.ts +1 -1
  147. package/dist/extraction-judge.d.ts +1 -1
  148. package/dist/extraction-redaction-rules.d.ts +33 -0
  149. package/dist/extraction-redaction-rules.js +14 -0
  150. package/dist/extraction-redaction-rules.js.map +1 -0
  151. package/dist/extraction.d.ts +1 -1
  152. package/dist/extraction.js +3 -3
  153. package/dist/faithfulness-config.d.ts +1 -0
  154. package/dist/faithfulness-config.js +1 -1
  155. package/dist/fallback-llm.d.ts +1 -1
  156. package/dist/{forget-OEE5OELK.js → forget-WYLR4ZFV.js} +2 -2
  157. package/dist/graph-dashboard-diff.d.ts +1 -1
  158. package/dist/graph-dashboard-key.d.ts +1 -1
  159. package/dist/graph-dashboard-parser.d.ts +1 -1
  160. package/dist/graph-edge-reinforcement.d.ts +1 -1
  161. package/dist/graph-snapshot.d.ts +1 -1
  162. package/dist/graph.d.ts +1 -1
  163. package/dist/identity-continuity.d.ts +1 -1
  164. package/dist/importance.d.ts +1 -1
  165. package/dist/index.d.ts +9 -9
  166. package/dist/index.js +107 -105
  167. package/dist/index.js.map +1 -1
  168. package/dist/intent.d.ts +1 -1
  169. package/dist/lcm/engine.d.ts +1 -1
  170. package/dist/lcm/engine.js +2 -2
  171. package/dist/lcm/index.d.ts +1 -1
  172. package/dist/lcm/index.js +4 -4
  173. package/dist/lcm/tools.d.ts +1 -1
  174. package/dist/lifecycle.d.ts +1 -1
  175. package/dist/live-connectors-runner.d.ts +1 -1
  176. package/dist/local-llm.d.ts +1 -1
  177. package/dist/local-model-endpoint.d.ts +9 -4
  178. package/dist/local-model-endpoint.js +1 -1
  179. package/dist/maintenance/memory-governance.d.ts +1 -1
  180. package/dist/maintenance/memory-governance.js +9 -8
  181. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +9 -8
  182. package/dist/maintenance/rebuild-memory-projection.js +10 -9
  183. package/dist/mcp-memory-inspector-app.d.ts +5 -5
  184. package/dist/memory-action-policy.d.ts +1 -1
  185. package/dist/memory-cache.d.ts +1 -1
  186. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  187. package/dist/memory-projection-store.d.ts +1 -1
  188. package/dist/memory-provenance.d.ts +1 -1
  189. package/dist/memory-worth-outcomes.d.ts +1 -1
  190. package/dist/models-json.d.ts +1 -1
  191. package/dist/namespaces/migrate.d.ts +2 -2
  192. package/dist/namespaces/migrate.js +19 -18
  193. package/dist/namespaces/principal.d.ts +1 -1
  194. package/dist/namespaces/search.d.ts +1 -1
  195. package/dist/namespaces/search.js +9 -9
  196. package/dist/namespaces/storage.d.ts +2 -2
  197. package/dist/namespaces/storage.js +9 -8
  198. package/dist/native-knowledge.d.ts +1 -1
  199. package/dist/operator-toolkit.d.ts +1 -1
  200. package/dist/operator-toolkit.js +28 -27
  201. package/dist/orchestration/maintenance.d.ts +2 -2
  202. package/dist/orchestration/maintenance.js +11 -10
  203. package/dist/{orchestrator-C_OMSIMZ.d.ts → orchestrator-DqPAz8ot.d.ts} +3 -3
  204. package/dist/orchestrator.d.ts +4 -4
  205. package/dist/orchestrator.js +51 -49
  206. package/dist/patterns-cli.d.ts +1 -1
  207. package/dist/policy-runtime.d.ts +1 -1
  208. package/dist/provenance.d.ts +1 -1
  209. package/dist/provenance.js +1 -1
  210. package/dist/qmd-recall-cache.d.ts +1 -1
  211. package/dist/qmd.d.ts +1 -1
  212. package/dist/recall-disclosure-escalation.d.ts +1 -1
  213. package/dist/recall-explain-renderer.d.ts +1 -1
  214. package/dist/recall-explain-renderer.js +3 -3
  215. package/dist/recall-planner-llm.d.ts +1 -1
  216. package/dist/recall-state.d.ts +1 -1
  217. package/dist/recall-tag-filter.d.ts +1 -1
  218. package/dist/recall-xray-cli.d.ts +1 -1
  219. package/dist/recall-xray-cli.js +4 -4
  220. package/dist/recall-xray-renderer.d.ts +1 -1
  221. package/dist/recall-xray-renderer.js +3 -3
  222. package/dist/recall-xray.d.ts +1 -1
  223. package/dist/recall-xray.js +2 -2
  224. package/dist/resolve-auth-token.d.ts +1 -1
  225. package/dist/resume-bundles.js +4 -4
  226. package/dist/retrieval-agents.d.ts +1 -1
  227. package/dist/retrieval-tiers.d.ts +1 -1
  228. package/dist/routing/engine.d.ts +1 -1
  229. package/dist/routing/store.d.ts +1 -1
  230. package/dist/schemas.d.ts +22 -22
  231. package/dist/search/embed-helper.d.ts +1 -1
  232. package/dist/search/factory.d.ts +1 -1
  233. package/dist/search/factory.js +8 -8
  234. package/dist/search/index.d.ts +1 -1
  235. package/dist/search/index.js +14 -14
  236. package/dist/search/lancedb-backend.d.ts +1 -1
  237. package/dist/search/lancedb-backend.js +2 -2
  238. package/dist/search/meilisearch-backend.d.ts +1 -1
  239. package/dist/search/meilisearch-backend.js +2 -2
  240. package/dist/search/noop-backend.d.ts +1 -1
  241. package/dist/search/orama-backend.d.ts +1 -1
  242. package/dist/search/orama-backend.js +2 -2
  243. package/dist/search/port.d.ts +1 -1
  244. package/dist/search/remote-backend.d.ts +1 -1
  245. package/dist/{semantic-consolidation-B8LiYtvx.d.ts → semantic-consolidation-Cl15ksZy.d.ts} +1 -1
  246. package/dist/semantic-consolidation.d.ts +2 -2
  247. package/dist/semantic-consolidation.js +10 -9
  248. package/dist/semantic-rule-promotion.js +9 -8
  249. package/dist/semantic-rule-verifier.d.ts +1 -1
  250. package/dist/semantic-rule-verifier.js +9 -8
  251. package/dist/session-observer-bands.d.ts +1 -1
  252. package/dist/session-observer-state.d.ts +1 -1
  253. package/dist/shared-context/manager.d.ts +1 -1
  254. package/dist/signal.d.ts +1 -1
  255. package/dist/storage.d.ts +3 -3
  256. package/dist/storage.js +9 -8
  257. package/dist/summarizer.d.ts +1 -1
  258. package/dist/summary-snapshot.d.ts +1 -1
  259. package/dist/temporal-supersession.d.ts +1 -1
  260. package/dist/temporal-validity.d.ts +1 -1
  261. package/dist/threading.d.ts +1 -1
  262. package/dist/tier-migration.d.ts +1 -1
  263. package/dist/tier-routing.d.ts +1 -1
  264. package/dist/topics.d.ts +1 -1
  265. package/dist/transcript.d.ts +1 -1
  266. package/dist/transfer/types.d.ts +12 -12
  267. package/dist/trust-score-stage.d.ts +1 -1
  268. package/dist/trust-score.d.ts +1 -1
  269. package/dist/{types-DmTaqob2.d.ts → types-ChQb9D6s.d.ts} +8 -0
  270. package/dist/types.d.ts +1 -1
  271. package/dist/types.js +1 -1
  272. package/dist/utility-runtime.d.ts +1 -1
  273. package/dist/verified-recall.js +9 -8
  274. package/package.json +26 -2
  275. package/src/access-http.ts +68 -1
  276. package/src/admin/admin-surfaces.test.ts +289 -0
  277. package/src/admin/admin-surfaces.ts +138 -7
  278. package/src/bitemporal-dedup-backfill.test.ts +294 -0
  279. package/src/chat/chat-engine.test.ts +66 -1
  280. package/src/chat/chat-http.test.ts +119 -1
  281. package/src/chat/chat-http.ts +252 -97
  282. package/src/chat/chat-session.ts +143 -7
  283. package/src/compat/codex-cli-fallback.ts +23 -0
  284. package/src/compat/codex-subpath-aliases.test.ts +93 -0
  285. package/src/compat/codex-thread-key.ts +23 -0
  286. package/src/config.test.ts +50 -0
  287. package/src/config.ts +21 -4
  288. package/src/content-hash.ts +24 -0
  289. package/src/correction/correction-access-wiring.ts +104 -19
  290. package/src/correction/correction-contract.ts +68 -10
  291. package/src/correction/correction-executor.test.ts +112 -2
  292. package/src/correction/correction-executor.ts +65 -5
  293. package/src/correction/correction-planner.test.ts +47 -0
  294. package/src/correction/correction-planner.ts +40 -1
  295. package/src/correction/correction-storage-integration.test.ts +183 -0
  296. package/src/extraction-faithfulness.test.ts +240 -0
  297. package/src/extraction-faithfulness.ts +58 -6
  298. package/src/extraction-redaction-rules.test.ts +213 -0
  299. package/src/extraction-redaction-rules.ts +208 -0
  300. package/src/faithfulness-config.ts +16 -1
  301. package/src/local-model-endpoint.ts +24 -3
  302. package/src/orchestrator.ts +252 -9
  303. package/src/provenance-extraction.test.ts +266 -0
  304. package/src/provenance.ts +66 -16
  305. package/src/storage.ts +6 -10
  306. package/src/types.ts +8 -0
  307. package/dist/chunk-4R3CGCI5.js.map +0 -1
  308. package/dist/chunk-4SF232E6.js.map +0 -1
  309. package/dist/chunk-6OIDDKAA.js.map +0 -1
  310. package/dist/chunk-7AG54AF3.js.map +0 -1
  311. package/dist/chunk-C4X4QGIO.js.map +0 -1
  312. package/dist/chunk-C6BWLYW5.js.map +0 -1
  313. package/dist/chunk-KLFYKC3K.js.map +0 -1
  314. package/dist/chunk-MDBZTH7N.js.map +0 -1
  315. package/dist/chunk-XGTBNVIU.js.map +0 -1
  316. package/dist/chunk-Z3FGC3QE.js.map +0 -1
  317. /package/dist/{chunk-HCVWF657.js.map → chunk-2KAYTPPT.js.map} +0 -0
  318. /package/dist/{chunk-ZK2L72VN.js.map → chunk-37436GML.js.map} +0 -0
  319. /package/dist/{chunk-SC2YAWRF.js.map → chunk-3TSTGI6F.js.map} +0 -0
  320. /package/dist/{chunk-FACTVMXQ.js.map → chunk-4H4F3BFL.js.map} +0 -0
  321. /package/dist/{chunk-WAFDHKES.js.map → chunk-4NOI577P.js.map} +0 -0
  322. /package/dist/{chunk-YQMPUYHE.js.map → chunk-4NR2PDZ5.js.map} +0 -0
  323. /package/dist/{chunk-TAPSNIMA.js.map → chunk-5CEJH5ZN.js.map} +0 -0
  324. /package/dist/{chunk-PKMQK2WY.js.map → chunk-773DPI6T.js.map} +0 -0
  325. /package/dist/{chunk-FXCIOLRB.js.map → chunk-ASKXIAHD.js.map} +0 -0
  326. /package/dist/{chunk-5OPYYPJN.js.map → chunk-CBWI22JN.js.map} +0 -0
  327. /package/dist/{chunk-ZOHMPFOB.js.map → chunk-CKFLLAIS.js.map} +0 -0
  328. /package/dist/{chunk-GZQXOQQ2.js.map → chunk-CSRXQ6NB.js.map} +0 -0
  329. /package/dist/{chunk-QR67FU5G.js.map → chunk-CTOQEZSN.js.map} +0 -0
  330. /package/dist/{chunk-ZUDM75KG.js.map → chunk-DCWIQFNA.js.map} +0 -0
  331. /package/dist/{chunk-6CWGS2LY.js.map → chunk-DKJCRGWM.js.map} +0 -0
  332. /package/dist/{chunk-JJJCVCCQ.js.map → chunk-DMQWV6SQ.js.map} +0 -0
  333. /package/dist/{chunk-F3XZN24Z.js.map → chunk-DRUDC2UX.js.map} +0 -0
  334. /package/dist/{chunk-4WZ3J7M6.js.map → chunk-EY6MDMHK.js.map} +0 -0
  335. /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
  336. /package/dist/{chunk-6SQQOJ4U.js.map → chunk-GKRLPHPU.js.map} +0 -0
  337. /package/dist/{chunk-D7EBTQ24.js.map → chunk-HOHVIVDR.js.map} +0 -0
  338. /package/dist/{chunk-RKNJBZ55.js.map → chunk-JBPKEARU.js.map} +0 -0
  339. /package/dist/{chunk-UBHVAGO7.js.map → chunk-JYLFZWUX.js.map} +0 -0
  340. /package/dist/{chunk-LD53WPMU.js.map → chunk-LQ6JI4VH.js.map} +0 -0
  341. /package/dist/{chunk-WM7DNKBD.js.map → chunk-M4V2JVSZ.js.map} +0 -0
  342. /package/dist/{chunk-I2HL5M6T.js.map → chunk-MJIHJ7OG.js.map} +0 -0
  343. /package/dist/{chunk-J334N6QV.js.map → chunk-MLKWJOAJ.js.map} +0 -0
  344. /package/dist/{chunk-DF3I6JGP.js.map → chunk-NSA5ZRUL.js.map} +0 -0
  345. /package/dist/{chunk-VI5SGGXB.js.map → chunk-OEEW4KJA.js.map} +0 -0
  346. /package/dist/{chunk-NT36GU6X.js.map → chunk-R7IYU5DZ.js.map} +0 -0
  347. /package/dist/{chunk-TT5U3UDO.js.map → chunk-SNKPUJHR.js.map} +0 -0
  348. /package/dist/{chunk-T55EGZSJ.js.map → chunk-UVPL565C.js.map} +0 -0
  349. /package/dist/{chunk-YQGHW5ML.js.map → chunk-WRFKZEO6.js.map} +0 -0
  350. /package/dist/{chunk-H7HUQIY7.js.map → chunk-Y4YD5TYW.js.map} +0 -0
  351. /package/dist/{chunk-YUYPWJD3.js.map → chunk-YOLZS7NY.js.map} +0 -0
  352. /package/dist/{forget-OEE5OELK.js.map → forget-WYLR4ZFV.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runPostConsolidationMaterialize
3
- } from "./chunk-ZK2L72VN.js";
3
+ } from "./chunk-37436GML.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-JJJCVCCQ.js.map
220
+ //# sourceMappingURL=chunk-DMQWV6SQ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isRecallDisclosure
3
- } from "./chunk-7AG54AF3.js";
3
+ } from "./chunk-PUR2CKX2.js";
4
4
  import {
5
5
  normalizeRetrievedMemoryProvenance
6
6
  } from "./chunk-I4WBNM3M.js";
@@ -292,4 +292,4 @@ export {
292
292
  RecallXrayBuilder,
293
293
  summarizeDisclosureTokens
294
294
  };
295
- //# sourceMappingURL=chunk-F3XZN24Z.js.map
295
+ //# sourceMappingURL=chunk-DRUDC2UX.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  StorageManager,
3
3
  normalizeEntityName
4
- } from "./chunk-4R3CGCI5.js";
4
+ } from "./chunk-7RLCCNHU.js";
5
5
  import {
6
6
  serializeMutations
7
7
  } from "./chunk-LTJAMRGI.js";
@@ -956,4 +956,4 @@ export {
956
956
  resolveBriefingSaveDir,
957
957
  briefingFilename
958
958
  };
959
- //# sourceMappingURL=chunk-4WZ3J7M6.js.map
959
+ //# sourceMappingURL=chunk-EY6MDMHK.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- diffGraphSnapshots
3
- } from "./chunk-AUDJPF4N.js";
4
1
  import {
5
2
  graphSnapshotFromMemoryDir
6
3
  } from "./chunk-44442YCH.js";
4
+ import {
5
+ diffGraphSnapshots
6
+ } from "./chunk-AUDJPF4N.js";
7
7
 
8
8
  // src/dashboard-runtime.ts
9
9
  import { createHash, timingSafeEqual } from "crypto";
@@ -370,4 +370,4 @@ var GraphDashboardServer = class {
370
370
  export {
371
371
  GraphDashboardServer
372
372
  };
373
- //# sourceMappingURL=chunk-YNDLCWXS.js.map
373
+ //# sourceMappingURL=chunk-EZ25VE3G.js.map
@@ -1,4 +1,5 @@
1
1
  import {
2
+ coerceBool,
2
3
  coerceNumber
3
4
  } from "./chunk-PHK3HARR.js";
4
5
 
@@ -38,12 +39,14 @@ function parseFaithfulnessGateConfig(cfg) {
38
39
  parseIntegerAtLeast(cfg.extractionFaithfulnessTimeoutMs, 8e3, 1, "extractionFaithfulnessTimeoutMs"),
39
40
  6e4
40
41
  );
42
+ const extractionFaithfulnessLocalParseFallback = coerceBool(cfg.extractionFaithfulnessLocalParseFallback) === true;
41
43
  return {
42
44
  extractionFaithfulnessGate,
43
45
  extractionFaithfulnessModel,
44
46
  extractionFaithfulnessBaseUrl,
45
47
  extractionFaithfulnessContextChars,
46
- extractionFaithfulnessTimeoutMs
48
+ extractionFaithfulnessTimeoutMs,
49
+ extractionFaithfulnessLocalParseFallback
47
50
  };
48
51
  }
49
52
  function parseCorrectionIntentConfig(cfg) {
@@ -57,4 +60,4 @@ export {
57
60
  parseFaithfulnessGateConfig,
58
61
  parseCorrectionIntentConfig
59
62
  };
60
- //# sourceMappingURL=chunk-C4X4QGIO.js.map
63
+ //# sourceMappingURL=chunk-G6NKALRN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/faithfulness-config.ts"],"sourcesContent":["/**\n * Faithfulness-gate + correction-intent config parsing (issue #1576 / #1585).\n *\n * Extracted verbatim from `config.ts` (a watchlisted god file) so the gate\n * config block can grow — the model-lab pointer keys\n * `extractionFaithfulnessBaseUrl` (#1585) and the correction-intent pointers\n * (`correctionIntentModel` / `correctionIntentBaseUrl`) — without growing the\n * god file. This is a behavior-preserving extraction (#1526-style): the\n * validation, defaults, and error messages are byte-identical to the inline\n * block it replaces, which the existing extraction-faithfulness + config\n * tests pin.\n *\n * Why a dedicated module (and not inline): the ratchet\n * (`scripts/check-ratchets.mjs`) forbids `config.ts` from growing, and the\n * model-lab integration needs three new optional keys. Centralizing the whole\n * gate+intent parsing here keeps it unit-testable in isolation and lets\n * `config.ts` spread the result in one line.\n */\n\nimport { coerceBool, coerceNumber } from \"./connectors/coerce.js\";\n\n/**\n * Parse a value as a strict integer >= `min`, throwing on anything else.\n *\n * Mirrors `parseIntegerAtLeast` in `config.ts` byte-for-byte (issue #1634:\n * reject non-numeric, <=0, non-integer, NaN, Infinity, booleans, objects —\n * gotcha #51). Reimplemented locally rather than exported from `config.ts`\n * so this module has no dependency on the god file (and vice versa).\n */\nfunction parseIntegerAtLeast(\n value: unknown,\n fallback: number,\n min: number,\n keyName: string,\n): number {\n if (value === undefined || value === null) return fallback;\n const coerced = coerceNumber(value);\n if (\n coerced === undefined ||\n !Number.isFinite(coerced) ||\n !Number.isInteger(coerced) ||\n coerced < min\n ) {\n throw new Error(\n `${keyName} must be an integer greater than or equal to ${min}; got ${JSON.stringify(value)}`,\n );\n }\n return coerced;\n}\n\n/**\n * Parse the extraction faithfulness gate config block.\n *\n * Returns exactly the `PluginConfig` fields this block owns. Defaults preserve\n * the byte-identical pre-feature pipeline (rule 39): gate \"off\", empty model\n * + base URL, context 400 chars, timeout 8000 ms. Invalid `gate` values reject\n * listing valid options (rule 51); invalid integers throw (issue #1634).\n *\n * `extractionFaithfulnessBaseUrl` (issue #1585) is the model-lab pointer: when\n * set together with `extractionFaithfulnessModel`, the gate routes to that\n * local openai-compatible endpoint before the configured chain; empty string\n * (default) preserves the existing routing exactly.\n */\nexport function parseFaithfulnessGateConfig(cfg: Record<string, unknown>): {\n extractionFaithfulnessGate: \"off\" | \"shadow\" | \"enforce\";\n extractionFaithfulnessModel: string;\n extractionFaithfulnessBaseUrl: string;\n extractionFaithfulnessContextChars: number;\n extractionFaithfulnessTimeoutMs: number;\n extractionFaithfulnessLocalParseFallback: boolean;\n} {\n const gateValue = cfg.extractionFaithfulnessGate;\n let extractionFaithfulnessGate: \"off\" | \"shadow\" | \"enforce\";\n if (gateValue === undefined || gateValue === null) {\n extractionFaithfulnessGate = \"off\";\n } else {\n // Present-but-invalid (true/1/{}) must reject, not silently disable the gate (Ob4RQ).\n const raw = typeof gateValue === \"string\" ? gateValue.trim().toLowerCase() : gateValue;\n if (raw === \"off\" || raw === \"shadow\" || raw === \"enforce\") {\n extractionFaithfulnessGate = raw;\n } else {\n throw new Error(\n `extractionFaithfulnessGate must be one of \"off\" | \"shadow\" | \"enforce\" (got ${JSON.stringify(gateValue)})`,\n );\n }\n }\n\n const extractionFaithfulnessModel =\n typeof cfg.extractionFaithfulnessModel === \"string\" ? cfg.extractionFaithfulnessModel : \"\";\n\n // Issue #1585: model-lab pointer. Empty default → gate uses its existing\n // routing chain (byte-identical). Non-empty + a model name → gate prefers\n // the local served endpoint, falling back to the chain on failure.\n const extractionFaithfulnessBaseUrl =\n typeof cfg.extractionFaithfulnessBaseUrl === \"string\"\n ? cfg.extractionFaithfulnessBaseUrl\n : \"\";\n\n const extractionFaithfulnessContextChars = Math.min(\n parseIntegerAtLeast(cfg.extractionFaithfulnessContextChars, 400, 1, \"extractionFaithfulnessContextChars\"),\n 4000,\n );\n\n const extractionFaithfulnessTimeoutMs = Math.min(\n parseIntegerAtLeast(cfg.extractionFaithfulnessTimeoutMs, 8000, 1, \"extractionFaithfulnessTimeoutMs\"),\n 60_000,\n );\n\n // Issue #1700 nit #6: resilient-fallback toggle for the local model-lab\n // endpoint. Default false preserves the loud-signal behavior (a 200-with-\n // garbage local response surfaces malformed_output so a misconfigured\n // endpoint is visible); true falls back to the configured chain on local\n // parse failure. Byte-identical pre-feature when unset (rule 39).\n // coerceBool for CLI-string parity: a CLI override like\n // --config extractionFaithfulnessLocalParseFallback=true reaches here as the\n // string \"true\"; === true would silently leave the flag disabled. Matches\n // every other CLI-settable boolean in config.ts (gotcha 36, codex P2\n // PRRT_kwDORJXyws6O6gDQ / cursor BUGBOT e273b22c).\n const extractionFaithfulnessLocalParseFallback =\n coerceBool(cfg.extractionFaithfulnessLocalParseFallback) === true;\n\n return {\n extractionFaithfulnessGate,\n extractionFaithfulnessModel,\n extractionFaithfulnessBaseUrl,\n extractionFaithfulnessContextChars,\n extractionFaithfulnessTimeoutMs,\n extractionFaithfulnessLocalParseFallback,\n };\n}\n\n/**\n * Parse the correction-intent config block (issue #1581 / #1585).\n *\n * The model-lab pointer for passive-correction detection: when both\n * `correctionIntentModel` and `correctionIntentBaseUrl` are set, the detection\n * path can route to that local fine-tuned classifier; empty defaults (the\n * common case) keep the rule-based `detectPassiveCorrections` heuristic as the\n * sole detector — byte-identical to the pre-feature path. Consumption by the\n * detector is the consuming child's job (#1581's detector is a pure function;\n * wiring a model call into it is out of scope for this config-pointer PR).\n */\nexport function parseCorrectionIntentConfig(cfg: Record<string, unknown>): {\n correctionIntentModel: string;\n correctionIntentBaseUrl: string;\n} {\n return {\n correctionIntentModel:\n typeof cfg.correctionIntentModel === \"string\" ? cfg.correctionIntentModel : \"\",\n correctionIntentBaseUrl:\n typeof cfg.correctionIntentBaseUrl === \"string\" ? cfg.correctionIntentBaseUrl : \"\",\n };\n}\n"],"mappings":";;;;;;AA6BA,SAAS,oBACP,OACA,UACA,KACA,SACQ;AACR,MAAI,UAAU,UAAa,UAAU,KAAM,QAAO;AAClD,QAAM,UAAU,aAAa,KAAK;AAClC,MACE,YAAY,UACZ,CAAC,OAAO,SAAS,OAAO,KACxB,CAAC,OAAO,UAAU,OAAO,KACzB,UAAU,KACV;AACA,UAAM,IAAI;AAAA,MACR,GAAG,OAAO,gDAAgD,GAAG,SAAS,KAAK,UAAU,KAAK,CAAC;AAAA,IAC7F;AAAA,EACF;AACA,SAAO;AACT;AAeO,SAAS,4BAA4B,KAO1C;AACA,QAAM,YAAY,IAAI;AACtB,MAAI;AACJ,MAAI,cAAc,UAAa,cAAc,MAAM;AACjD,iCAA6B;AAAA,EAC/B,OAAO;AAEL,UAAM,MAAM,OAAO,cAAc,WAAW,UAAU,KAAK,EAAE,YAAY,IAAI;AAC7E,QAAI,QAAQ,SAAS,QAAQ,YAAY,QAAQ,WAAW;AAC1D,mCAA6B;AAAA,IAC/B,OAAO;AACL,YAAM,IAAI;AAAA,QACR,+EAA+E,KAAK,UAAU,SAAS,CAAC;AAAA,MAC1G;AAAA,IACF;AAAA,EACF;AAEA,QAAM,8BACJ,OAAO,IAAI,gCAAgC,WAAW,IAAI,8BAA8B;AAK1F,QAAM,gCACJ,OAAO,IAAI,kCAAkC,WACzC,IAAI,gCACJ;AAEN,QAAM,qCAAqC,KAAK;AAAA,IAC9C,oBAAoB,IAAI,oCAAoC,KAAK,GAAG,oCAAoC;AAAA,IACxG;AAAA,EACF;AAEA,QAAM,kCAAkC,KAAK;AAAA,IAC3C,oBAAoB,IAAI,iCAAiC,KAAM,GAAG,iCAAiC;AAAA,IACnG;AAAA,EACF;AAYA,QAAM,2CACJ,WAAW,IAAI,wCAAwC,MAAM;AAE/D,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAaO,SAAS,4BAA4B,KAG1C;AACA,SAAO;AAAA,IACL,uBACE,OAAO,IAAI,0BAA0B,WAAW,IAAI,wBAAwB;AAAA,IAC9E,yBACE,OAAO,IAAI,4BAA4B,WAAW,IAAI,0BAA0B;AAAA,EACpF;AACF;","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-SOBJ6NEY.js";
4
4
  import {
5
5
  summarizeDisclosureTokens
6
- } from "./chunk-F3XZN24Z.js";
6
+ } from "./chunk-DRUDC2UX.js";
7
7
  import {
8
8
  summarizeRetrievedMemoryProvenance
9
9
  } from "./chunk-I4WBNM3M.js";
@@ -587,4 +587,4 @@ export {
587
587
  renderRecallExplain,
588
588
  parseRecallExplainFormat
589
589
  };
590
- //# sourceMappingURL=chunk-6SQQOJ4U.js.map
590
+ //# sourceMappingURL=chunk-GKRLPHPU.js.map
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-LMDRGRJ2.js";
12
12
  import {
13
13
  parseConfig
14
- } from "./chunk-4SF232E6.js";
14
+ } from "./chunk-36SEDFAU.js";
15
15
  import {
16
16
  resolveObjectiveStateStoreDir,
17
17
  validateObjectiveStateSnapshot
@@ -268,4 +268,4 @@ export {
268
268
  recordResumeBundle,
269
269
  getResumeBundleStatus
270
270
  };
271
- //# sourceMappingURL=chunk-D7EBTQ24.js.map
271
+ //# sourceMappingURL=chunk-HOHVIVDR.js.map
@@ -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
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-SFQ6QNL7.js";
7
7
  import {
8
8
  StorageManager
9
- } from "./chunk-4R3CGCI5.js";
9
+ } from "./chunk-7RLCCNHU.js";
10
10
  import {
11
11
  buildLifecycleEventsForMemory,
12
12
  sortMemoryLifecycleEvents
@@ -74,4 +74,4 @@ export {
74
74
  backupExistingLedger,
75
75
  rebuildMemoryLifecycleLedger
76
76
  };
77
- //# sourceMappingURL=chunk-UBHVAGO7.js.map
77
+ //# sourceMappingURL=chunk-JYLFZWUX.js.map
@@ -1,10 +1,10 @@
1
+ import {
2
+ scanMemoryDir
3
+ } from "./chunk-AER6MT24.js";
1
4
  import {
2
5
  isSearchAborted,
3
6
  throwIfSearchAborted
4
7
  } 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-LD53WPMU.js.map
608
+ //# sourceMappingURL=chunk-LQ6JI4VH.js.map
@@ -0,0 +1,109 @@
1
+ // src/extraction-redaction-rules.ts
2
+ import { readdir, readFile } from "fs/promises";
3
+ import path from "path";
4
+ var REDACTION_RULES_SUBDIR = path.join("state", "corrections", "redaction-rules");
5
+ var MAX_RULE_FILES = 256;
6
+ function isRegexLike(pattern) {
7
+ return pattern.startsWith("/") && pattern.endsWith("/") && pattern.length >= 2;
8
+ }
9
+ function isSafeRegex(source) {
10
+ if (source.length === 0 || source.length > 512) return false;
11
+ if (/(?:^|[^\\])\(\.\*\)|(?:^|[^\\])\.\*|(?:^|[^\\])\.\+|^\.([^*+]?)$/.test(source)) {
12
+ return false;
13
+ }
14
+ for (let i = 0; i < source.length; i++) {
15
+ if (source[i] !== "(") continue;
16
+ let depth = 1;
17
+ let j = i + 1;
18
+ while (j < source.length && depth > 0) {
19
+ if (source[j] === "\\") {
20
+ j += 2;
21
+ continue;
22
+ }
23
+ if (source[j] === "(") depth++;
24
+ else if (source[j] === ")") depth--;
25
+ j++;
26
+ }
27
+ if (depth !== 0) continue;
28
+ const afterGroup = source[j];
29
+ if (afterGroup !== "+" && afterGroup !== "*" && afterGroup !== "{") continue;
30
+ const groupBody = source.slice(i + 1, j - 1);
31
+ if (/[+*?]$/.test(groupBody) || /\{\d+,?\d*\}[+*?]?$/.test(groupBody)) {
32
+ return false;
33
+ }
34
+ if (groupBody.includes("|")) {
35
+ const branches = groupBody.split("|");
36
+ if (branches.length >= 2) {
37
+ const firstChars = new Set(branches.map((b) => b[0]).filter(Boolean));
38
+ if (firstChars.size < branches.filter((b) => b.length > 0).length) {
39
+ return false;
40
+ }
41
+ }
42
+ }
43
+ i = j;
44
+ }
45
+ return true;
46
+ }
47
+ function compileRedactionPattern(pattern) {
48
+ const trimmed = pattern.trim();
49
+ if (!isRegexLike(trimmed)) {
50
+ return { pattern: trimmed, matcher: (content) => content.includes(trimmed) };
51
+ }
52
+ const body = trimmed.slice(1, -1);
53
+ try {
54
+ if (!isSafeRegex(body)) {
55
+ if (body.length === 0) return { pattern: trimmed, matcher: () => false };
56
+ return { pattern: trimmed, matcher: (content) => content.includes(body) };
57
+ }
58
+ const re = new RegExp(body);
59
+ if (re.test("")) {
60
+ return { pattern: trimmed, matcher: (content) => content.includes(body) };
61
+ }
62
+ return { pattern: trimmed, matcher: (content) => re.test(content) };
63
+ } catch {
64
+ return { pattern: trimmed, matcher: (content) => content.includes(body) };
65
+ }
66
+ }
67
+ async function loadRedactionRules(stateDir) {
68
+ const dir = path.join(stateDir, REDACTION_RULES_SUBDIR);
69
+ let names;
70
+ try {
71
+ names = await readdir(dir);
72
+ } catch {
73
+ return [];
74
+ }
75
+ const jsonFiles = names.filter((n) => n.endsWith(".json")).sort();
76
+ if (jsonFiles.length > MAX_RULE_FILES) {
77
+ console.warn(
78
+ `extraction-redaction: ${jsonFiles.length} redaction rules in ${dir} exceed the ${MAX_RULE_FILES} cap; ${jsonFiles.length - MAX_RULE_FILES} rules will NOT be enforced. Remove unused rules or raise the cap.`
79
+ );
80
+ }
81
+ const rules = [];
82
+ for (const name of jsonFiles.slice(0, MAX_RULE_FILES)) {
83
+ try {
84
+ const raw = await readFile(path.join(dir, name), "utf-8");
85
+ const parsed = JSON.parse(raw);
86
+ if (typeof parsed?.pattern !== "string" || parsed.pattern.trim().length === 0) continue;
87
+ rules.push(compileRedactionPattern(parsed.pattern));
88
+ } catch {
89
+ }
90
+ }
91
+ return rules;
92
+ }
93
+ function contentMatchesRedactionRules(content, rules) {
94
+ for (const rule of rules) {
95
+ try {
96
+ if (rule.matcher(content)) return true;
97
+ } catch {
98
+ }
99
+ }
100
+ return false;
101
+ }
102
+
103
+ export {
104
+ REDACTION_RULES_SUBDIR,
105
+ compileRedactionPattern,
106
+ loadRedactionRules,
107
+ contentMatchesRedactionRules
108
+ };
109
+ //# sourceMappingURL=chunk-LTHVM4XN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/extraction-redaction-rules.ts"],"sourcesContent":["/**\n * extraction-redaction-rules.ts — consults persisted correction redaction\n * rules during the extraction→persist path so a `never_store` / redaction_rule\n * correction actually blocks future extraction of matching content (issue\n * #1669, #1580 follow-up).\n *\n * The Correction Contract persists `redaction_rule` patterns to\n * `<storage>/state/corrections/redaction-rules/<slug>.json` (one file per\n * rule, idempotent on pattern). This module reads those patterns at the start\n * of each extraction persist pass and exposes a pure matcher the orchestrator\n * consults BEFORE a fact reaches the storage write chokepoint — mirroring how\n * tombstones are consulted at the write chokepoint (#1579), but one stage\n * earlier so the content never even lands as `pending_review`.\n *\n * Scope (issue #1669): the extraction layer consults the rules. Persistence\n * stays owned by the correction module. This helper is the read surface.\n *\n * Safety: patterns are validated at correction-apply time\n * (`validateRedactionPattern` — bounded literal/safe-regex, no catastrophic\n * shapes). We compile defensively here too: a pattern that fails to compile\n * as a regex is treated as a literal substring, and any matcher error is\n * swallowed (fail-open to \"no match\") so a malformed rule can never block the\n * entire extraction pipeline.\n */\nimport { readdir, readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\n/**\n * Directory (relative to a namespace storage dir) where redaction rules live.\n * Kept in sync with `registerRedactionRuleFn` in correction-access-wiring.ts.\n */\nexport const REDACTION_RULES_SUBDIR = path.join(\"state\", \"corrections\", \"redaction-rules\");\n\n/** Maximum number of rule files read per pass (defense in depth). */\nconst MAX_RULE_FILES = 256;\n\n/**\n * A compiled redaction rule. `pattern` is the original (validated) pattern;\n * `matcher` returns true when content should be withheld.\n */\nexport interface CompiledRedactionRule {\n pattern: string;\n matcher: (content: string) => boolean;\n}\n\n/** Shape persisted by `registerRedactionRuleFn`. */\ninterface RedactionRuleFile {\n pattern: string;\n namespace?: string;\n createdAt?: string;\n}\n\n/**\n * Only `/…/`-wrapped patterns compile as RegExp; everything else is a literal\n * substring (review thread P1). An unwrapped pattern like `abc+def` must match\n * the literal string `abc+def`, NOT the regex `abccccdef`.\n */\nfunction isRegexLike(pattern: string): boolean {\n return pattern.startsWith(\"/\") && pattern.endsWith(\"/\") && pattern.length >= 2;\n}\n\n/**\n * Reject patterns prone to catastrophic backtracking (ReDoS, review thread #3).\n * Mirrors the safe-regex heuristic: a quantifier inside a group that is itself\n * quantified creates exponential blowup on near-miss inputs. Also rejects\n * patterns with overlapping alternation under repetition\n * (e.g. (a|a)*). Returns true when the pattern is safe to compile.\n *\n * This is a second line of defense — validateRedactionPattern runs first at\n * apply time, but a hand-edited rule file or an edge case can still slip past.\n */\nfunction isSafeRegex(source: string): boolean {\n if (source.length === 0 || source.length > 512) return false;\n // Reject overly-broad patterns (.*) that would match every fact and\n // withhold all extraction (cursor Bugbot thread — mirrors\n // isUnsafeRedactionRegex in correction-contract.ts).\n if (/(?:^|[^\\\\])\\(\\.\\*\\)|(?:^|[^\\\\])\\.\\*|(?:^|[^\\\\])\\.\\+|^\\.([^*+]?)$/.test(source)) {\n return false;\n }\n // group body itself ends with a quantifier. This catches (a+)+, (a*)*, etc.\n // Also catches overlapping alternation like (a|a)+.\n for (let i = 0; i < source.length; i++) {\n if (source[i] !== \"(\") continue;\n // Find the matching close paren\n let depth = 1;\n let j = i + 1;\n while (j < source.length && depth > 0) {\n if (source[j] === \"\\\\\") { j += 2; continue; }\n if (source[j] === \"(\") depth++;\n else if (source[j] === \")\") depth--;\n j++;\n }\n if (depth !== 0) continue; // unbalanced — will fail RegExp compile anyway\n // Check if the char after the closing paren is a quantifier\n const afterGroup = source[j];\n if (afterGroup !== \"+\" && afterGroup !== \"*\" && afterGroup !== \"{\") continue;\n const groupBody = source.slice(i + 1, j - 1);\n // The group body ends with a quantifier on a non-escape char\n if (/[+*?]$/.test(groupBody) || /\\{\\d+,?\\d*\\}[+*?]?$/.test(groupBody)) {\n // Nested quantifier → potential ReDoS\n return false;\n }\n // Overlapping alternation: (a|a)+ where branches share a common prefix\n if (groupBody.includes(\"|\")) {\n const branches = groupBody.split(\"|\");\n if (branches.length >= 2) {\n const firstChars = new Set(branches.map((b) => b[0]).filter(Boolean));\n if (firstChars.size < branches.filter((b) => b.length > 0).length) {\n return false;\n }\n }\n }\n i = j;\n }\n return true;\n}\n\n/**\n * Compile a single pattern into a matcher. A literal pattern matches by\n * case-sensitive substring; a `/…/`-wrapped pattern compiles into a RegExp\n * anchored to search (global flag off — we only need a boolean). Compilation\n * failures fall back to literal substring so a bad pattern never throws here.\n */\nexport function compileRedactionPattern(pattern: string): CompiledRedactionRule {\n const trimmed = pattern.trim();\n if (!isRegexLike(trimmed)) {\n return { pattern: trimmed, matcher: (content) => content.includes(trimmed) };\n }\n const body = trimmed.slice(1, -1);\n try {\n if (!isSafeRegex(body)) {\n if (body.length === 0) return { pattern: trimmed, matcher: () => false };\n return { pattern: trimmed, matcher: (content) => content.includes(body) };\n }\n const re = new RegExp(body);\n if (re.test(\"\")) {\n // Zero-width regex matches every string — would withhold all extraction.\n return { pattern: trimmed, matcher: (content) => content.includes(body) };\n }\n return { pattern: trimmed, matcher: (content) => re.test(content) };\n } catch {\n // Malformed regex despite validation (e.g. rule file hand-edited) —\n // treat as a literal on the BODY so the rule still does something useful.\n return { pattern: trimmed, matcher: (content) => content.includes(body) };\n }\n}\n\n/**\n * Load + compile every redaction rule persisted under a namespace's storage\n * dir. Returns an empty array when the directory is absent or unreadable\n * (fail-open — a missing or corrupt rules dir must never block extraction).\n */\nexport async function loadRedactionRules(stateDir: string): Promise<CompiledRedactionRule[]> {\n const dir = path.join(stateDir, REDACTION_RULES_SUBDIR);\n let names: string[];\n try {\n names = await readdir(dir);\n } catch {\n // ENOENT (cold install, no rules yet) or permission error — no rules.\n return [];\n }\n // Sort deterministically (alphabetical by filename) so the set of rules\n // that survives the MAX_RULE_FILES cap is NOT filesystem-dependent (review\n // thread P2). Without this, readdir order varies by OS/FS and the silently\n // truncated rules are arbitrary — a never-store pattern could be dropped.\n const jsonFiles = names.filter((n) => n.endsWith(\".json\")).sort();\n if (jsonFiles.length > MAX_RULE_FILES) {\n // Visible failure mode: log a warning so the operator knows rules were\n // truncated, rather than silently dropping enforcement.\n console.warn(\n `extraction-redaction: ${jsonFiles.length} redaction rules in ${dir} exceed the ${MAX_RULE_FILES} cap; ` +\n `${jsonFiles.length - MAX_RULE_FILES} rules will NOT be enforced. Remove unused rules or raise the cap.`,\n );\n }\n const rules: CompiledRedactionRule[] = [];\n for (const name of jsonFiles.slice(0, MAX_RULE_FILES)) {\n try {\n const raw = await readFile(path.join(dir, name), \"utf-8\");\n const parsed = JSON.parse(raw) as RedactionRuleFile;\n if (typeof parsed?.pattern !== \"string\" || parsed.pattern.trim().length === 0) continue;\n rules.push(compileRedactionPattern(parsed.pattern));\n } catch {\n // Skip a corrupt rule file rather than failing the pass (rule 34 —\n // visible skip, never a silent pipeline block).\n }\n }\n return rules;\n}\n\n/**\n * Test content against a set of compiled rules. Returns true if ANY rule\n * matches (the content should be withheld). An empty rule set never matches.\n */\nexport function contentMatchesRedactionRules(\n content: string,\n rules: readonly CompiledRedactionRule[],\n): boolean {\n for (const rule of rules) {\n try {\n if (rule.matcher(content)) return true;\n } catch {\n // A matcher should not throw (compilation already fell back), but if a\n // RegExp blows up on pathological input we skip that rule rather than\n // failing the whole gate.\n }\n }\n return false;\n}\n"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  resolveDefaultNamespaceRoot,
3
3
  resolveNamespaceStorageRoot
4
- } from "./chunk-SC2YAWRF.js";
4
+ } from "./chunk-3TSTGI6F.js";
5
5
  import {
6
6
  getConfiguredNamespaces
7
7
  } from "./chunk-J6BH2OBA.js";
@@ -1946,4 +1946,4 @@ export {
1946
1946
  runNamespaceMaintenancePlan,
1947
1947
  runNamespaceMaintenanceBatchPlan
1948
1948
  };
1949
- //# sourceMappingURL=chunk-WM7DNKBD.js.map
1949
+ //# sourceMappingURL=chunk-M4V2JVSZ.js.map
@@ -7,18 +7,15 @@ import {
7
7
  import {
8
8
  openclawReplayNormalizer
9
9
  } from "./chunk-7F7Z6MOS.js";
10
- import {
11
- importSqlite
12
- } from "./chunk-AGNBY3VG.js";
13
- import {
14
- exportJsonBundle
15
- } from "./chunk-UP6MOYCB.js";
16
10
  import {
17
11
  exportSqlite
18
12
  } from "./chunk-7VFZTJ7K.js";
19
13
  import {
20
14
  importMarkdownBundle
21
15
  } from "./chunk-HDDRVXX4.js";
16
+ import {
17
+ importSqlite
18
+ } from "./chunk-AGNBY3VG.js";
22
19
  import {
23
20
  detectImportFormat
24
21
  } from "./chunk-OZKVVUJB.js";
@@ -28,14 +25,12 @@ import {
28
25
  import {
29
26
  backupMemoryDir
30
27
  } from "./chunk-2NLLXCJG.js";
28
+ import {
29
+ exportJsonBundle
30
+ } from "./chunk-UP6MOYCB.js";
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";
39
34
  import {
40
35
  TailscaleHelper
41
36
  } from "./chunk-EEC4PCG5.js";
@@ -43,22 +38,27 @@ import {
43
38
  WebDavServer
44
39
  } from "./chunk-PYIFUBRK.js";
45
40
  import {
46
- migrateObservations
47
- } from "./chunk-D6RIFG4O.js";
48
- import {
49
- rebuildMemoryLifecycleLedger
50
- } from "./chunk-UBHVAGO7.js";
41
+ buildReplayNormalizerRegistry,
42
+ clampBatchSize,
43
+ runReplay
44
+ } from "./chunk-HOJZMQ4J.js";
51
45
  import {
52
46
  rebuildMemoryProjection,
53
47
  repairMemoryProjection,
54
48
  verifyMemoryProjection
55
- } from "./chunk-H7HUQIY7.js";
49
+ } from "./chunk-Y4YD5TYW.js";
56
50
  import {
57
51
  rebuildObservations
58
52
  } from "./chunk-LZZNTPLR.js";
59
53
  import {
60
54
  archiveObservations
61
55
  } from "./chunk-WMWVO45V.js";
56
+ import {
57
+ migrateObservations
58
+ } from "./chunk-D6RIFG4O.js";
59
+ import {
60
+ rebuildMemoryLifecycleLedger
61
+ } from "./chunk-JYLFZWUX.js";
62
62
  import {
63
63
  getBulkImportSource,
64
64
  listBulkImportSources,
@@ -70,18 +70,27 @@ import {
70
70
  } from "./chunk-GQL52GQ5.js";
71
71
  import {
72
72
  promoteSemanticRuleFromMemory
73
- } from "./chunk-FACTVMXQ.js";
74
- import {
75
- resolveAgentAccessAuthToken
76
- } from "./chunk-TGQ2NTWH.js";
73
+ } from "./chunk-4H4F3BFL.js";
77
74
  import {
78
75
  buildResumeBundleFromState,
79
76
  getResumeBundleStatus,
80
77
  recordResumeBundle
81
- } from "./chunk-D7EBTQ24.js";
78
+ } from "./chunk-HOHVIVDR.js";
79
+ import {
80
+ resolveAgentAccessAuthToken
81
+ } from "./chunk-TGQ2NTWH.js";
82
82
  import {
83
83
  parseXrayCliOptions
84
- } from "./chunk-ZOHMPFOB.js";
84
+ } from "./chunk-CKFLLAIS.js";
85
+ import {
86
+ collectPatternMemories,
87
+ explainPatternMemory,
88
+ parsePatternsExplainOptions,
89
+ parsePatternsListOptions,
90
+ parseStrictCliDate,
91
+ renderPatternExplain,
92
+ renderPatternsList
93
+ } from "./chunk-3T74IZB3.js";
85
94
  import {
86
95
  runBenchmarkRecall,
87
96
  runOperatorConfigReview,
@@ -89,24 +98,15 @@ import {
89
98
  runOperatorInventory,
90
99
  runOperatorRepair,
91
100
  runOperatorSetup
92
- } from "./chunk-DF3I6JGP.js";
101
+ } from "./chunk-NSA5ZRUL.js";
93
102
  import {
94
103
  listNamespaces,
95
104
  runNamespaceMigration,
96
105
  verifyNamespaces
97
- } from "./chunk-6CWGS2LY.js";
98
- import {
99
- collectPatternMemories,
100
- explainPatternMemory,
101
- parsePatternsExplainOptions,
102
- parsePatternsListOptions,
103
- parseStrictCliDate,
104
- renderPatternExplain,
105
- renderPatternsList
106
- } from "./chunk-3T74IZB3.js";
106
+ } from "./chunk-DKJCRGWM.js";
107
107
  import {
108
108
  GraphDashboardServer
109
- } from "./chunk-YNDLCWXS.js";
109
+ } from "./chunk-EZ25VE3G.js";
110
110
  import {
111
111
  isReplaySource,
112
112
  normalizeReplaySessionKey
@@ -114,6 +114,9 @@ import {
114
114
  import {
115
115
  RoutingRulesStore
116
116
  } from "./chunk-WIWPSQYU.js";
117
+ import {
118
+ searchVerifiedEpisodes
119
+ } from "./chunk-ASKXIAHD.js";
117
120
  import {
118
121
  getUtilityLearningStatus,
119
122
  learnUtilityPromotionWeights
@@ -122,15 +125,12 @@ import {
122
125
  getUtilityTelemetryStatus,
123
126
  recordUtilityTelemetryEvent
124
127
  } from "./chunk-TERNBNJB.js";
125
- import {
126
- searchVerifiedEpisodes
127
- } from "./chunk-FXCIOLRB.js";
128
128
  import {
129
129
  ThreadingManager
130
130
  } from "./chunk-QRDOSYOR.js";
131
131
  import {
132
132
  searchVerifiedSemanticRules
133
- } from "./chunk-T55EGZSJ.js";
133
+ } from "./chunk-UVPL565C.js";
134
134
  import {
135
135
  getWorkProductLedgerStatus,
136
136
  recordWorkProductLedgerEntry,
@@ -145,7 +145,7 @@ import {
145
145
  } from "./chunk-33JBK2XP.js";
146
146
  import {
147
147
  formatNamespaceMaintenanceHealthText
148
- } from "./chunk-5OPYYPJN.js";
148
+ } from "./chunk-CBWI22JN.js";
149
149
  import {
150
150
  analyzeSessionIntegrity,
151
151
  applySessionRepair,
@@ -168,12 +168,12 @@ import {
168
168
  import {
169
169
  listConnectorStates
170
170
  } from "./chunk-6GUG4YNM.js";
171
- import {
172
- rescoreMemoryImportance
173
- } from "./chunk-JXS5PDQ7.js";
174
171
  import {
175
172
  searchHarmonicRetrieval
176
173
  } from "./chunk-AV5ZEH4M.js";
174
+ import {
175
+ rescoreMemoryImportance
176
+ } from "./chunk-JXS5PDQ7.js";
177
177
  import {
178
178
  createEvalBaselineSnapshot,
179
179
  getEvalHarnessStatus,
@@ -209,13 +209,13 @@ import {
209
209
  } from "./chunk-UQ7RN5HK.js";
210
210
  import {
211
211
  parseConfig
212
- } from "./chunk-4SF232E6.js";
212
+ } from "./chunk-36SEDFAU.js";
213
213
  import {
214
214
  getAbstractionNodeStoreStatus
215
215
  } from "./chunk-OADWQ5CR.js";
216
216
  import {
217
217
  EngramAccessHttpServer
218
- } from "./chunk-C6BWLYW5.js";
218
+ } from "./chunk-N3VNUM4Z.js";
219
219
  import {
220
220
  WearablesInputError
221
221
  } from "./chunk-7WV3F5DQ.js";
@@ -228,10 +228,10 @@ import {
228
228
  createProductionChatLlmAdapter,
229
229
  loadChatSession,
230
230
  sessionBelongsToPrincipal
231
- } from "./chunk-FN6QP7JQ.js";
231
+ } from "./chunk-6PY5YJAV.js";
232
232
  import {
233
233
  EngramAccessService
234
- } from "./chunk-KGZF2VO3.js";
234
+ } from "./chunk-27QQC7ZX.js";
235
235
  import {
236
236
  WorkStorage
237
237
  } from "./chunk-GDB4J2H3.js";
@@ -243,13 +243,13 @@ import {
243
243
  parseRecallExplainFormat,
244
244
  renderRecallExplain,
245
245
  renderXray
246
- } from "./chunk-6SQQOJ4U.js";
246
+ } from "./chunk-GKRLPHPU.js";
247
247
  import {
248
248
  listMemoryGovernanceRuns,
249
249
  readMemoryGovernanceRunArtifact,
250
250
  restoreMemoryGovernanceRun,
251
251
  runMemoryGovernance
252
- } from "./chunk-WAFDHKES.js";
252
+ } from "./chunk-4NOI577P.js";
253
253
  import {
254
254
  getTrustZoneStoreStatus,
255
255
  promoteTrustZoneRecord,
@@ -274,7 +274,7 @@ import {
274
274
  import {
275
275
  RECALL_DISCLOSURE_LEVELS,
276
276
  isRecallDisclosure
277
- } from "./chunk-7AG54AF3.js";
277
+ } from "./chunk-PUR2CKX2.js";
278
278
  import {
279
279
  RECALL_FALLBACK_DIRS
280
280
  } from "./chunk-VS2IYZRU.js";
@@ -3575,7 +3575,7 @@ function registerCli(api, orchestrator, registerOptions = {}) {
3575
3575
  const idArg = typeof args[0] === "string" ? args[0] : "";
3576
3576
  const options = args[1] ?? {};
3577
3577
  const reason = typeof options.reason === "string" && options.reason.trim().length > 0 ? options.reason.trim() : void 0;
3578
- const { forgetMemory } = await import("./forget-OEE5OELK.js");
3578
+ const { forgetMemory } = await import("./forget-WYLR4ZFV.js");
3579
3579
  try {
3580
3580
  const result = await forgetMemory(orchestrator.storage, {
3581
3581
  id: idArg,
@@ -7505,4 +7505,4 @@ export {
7505
7505
  listMemoryMarkdownFilePaths,
7506
7506
  registerCli
7507
7507
  };
7508
- //# sourceMappingURL=chunk-I2HL5M6T.js.map
7508
+ //# sourceMappingURL=chunk-MJIHJ7OG.js.map
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  planNamespaceMaintenance,
12
12
  runNamespaceMaintenanceBatchPlan
13
- } from "./chunk-WM7DNKBD.js";
13
+ } from "./chunk-M4V2JVSZ.js";
14
14
  import {
15
15
  resolveHomeDir
16
16
  } from "./chunk-JUC24CTX.js";
@@ -441,4 +441,4 @@ var MaintenanceScheduler = class {
441
441
  export {
442
442
  MaintenanceScheduler
443
443
  };
444
- //# sourceMappingURL=chunk-J334N6QV.js.map
444
+ //# sourceMappingURL=chunk-MLKWJOAJ.js.map