@remnic/core 9.3.726 → 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 (318) hide show
  1. package/dist/access-boundary.d.ts +5 -5
  2. package/dist/access-boundary.js +20 -20
  3. package/dist/access-cli.js +42 -42
  4. package/dist/access-http.d.ts +20 -5
  5. package/dist/access-http.js +25 -25
  6. package/dist/access-mcp.d.ts +5 -5
  7. package/dist/access-mcp.js +24 -24
  8. package/dist/access-operations-batch.js +21 -21
  9. package/dist/access-operations.d.ts +5 -5
  10. package/dist/access-operations.js +23 -23
  11. package/dist/access-schema.js +3 -3
  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 +19 -19
  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/behavior-learner.d.ts +1 -1
  21. package/dist/behavior-signals.d.ts +1 -1
  22. package/dist/bootstrap.d.ts +4 -4
  23. package/dist/briefing.d.ts +1 -1
  24. package/dist/briefing.js +7 -7
  25. package/dist/buffer-surprise-report.d.ts +1 -1
  26. package/dist/buffer.d.ts +1 -1
  27. package/dist/calibration.d.ts +1 -1
  28. package/dist/capabilities.d.ts +1 -1
  29. package/dist/{capsule-crypto-GWVG7LGC.js → capsule-crypto-7FJQINUR.js} +2 -2
  30. package/dist/{catalog-CzUb-GyD.d.ts → catalog-bMczlO2G.d.ts} +1 -1
  31. package/dist/causal-behavior.d.ts +1 -1
  32. package/dist/causal-consolidation.d.ts +1 -1
  33. package/dist/causal-consolidation.js +8 -8
  34. package/dist/causal-trajectory-graph.d.ts +1 -1
  35. package/dist/{chunk-Q6D75LVH.js → chunk-27QQC7ZX.js} +75 -14
  36. package/dist/{chunk-Q6D75LVH.js.map → chunk-27QQC7ZX.js.map} +1 -1
  37. package/dist/{chunk-53EEQYE5.js → chunk-2KAYTPPT.js} +7 -7
  38. package/dist/{chunk-OWHERGF2.js → chunk-2NLLXCJG.js} +2 -2
  39. package/dist/{chunk-BIA7ELIB.js → chunk-36SEDFAU.js} +3 -3
  40. package/dist/{chunk-UQSVUEN2.js → chunk-37436GML.js} +2 -2
  41. package/dist/{chunk-RRHHQYJS.js → chunk-3TSTGI6F.js} +2 -2
  42. package/dist/{chunk-FO3HO52S.js → chunk-4H4F3BFL.js} +2 -2
  43. package/dist/{chunk-BEUCACTV.js → chunk-4NOI577P.js} +2 -2
  44. package/dist/{chunk-BBIE7W52.js → chunk-4NR2PDZ5.js} +2 -2
  45. package/dist/{chunk-TQQH2FTX.js → chunk-6PY5YJAV.js} +101 -15
  46. package/dist/{chunk-TQQH2FTX.js.map → chunk-6PY5YJAV.js.map} +1 -1
  47. package/dist/{chunk-PKMQK2WY.js → chunk-773DPI6T.js} +4 -4
  48. package/dist/{chunk-MQVKHFIU.js → chunk-7RLCCNHU.js} +8 -8
  49. package/dist/{chunk-XGTBNVIU.js → chunk-AAD2ZS6P.js} +11 -1
  50. package/dist/chunk-AAD2ZS6P.js.map +1 -0
  51. package/dist/{chunk-EZNDNMRH.js → chunk-AQLOP5F4.js} +2 -2
  52. package/dist/{chunk-UNNDFYUX.js → chunk-ARV3AUOM.js} +5 -5
  53. package/dist/{chunk-NPL7VDM6.js → chunk-ASKXIAHD.js} +2 -2
  54. package/dist/{chunk-K4ZNARDO.js → chunk-CBWI22JN.js} +2 -2
  55. package/dist/{chunk-ZOHMPFOB.js → chunk-CKFLLAIS.js} +3 -3
  56. package/dist/{chunk-DCKNMLEQ.js → chunk-CSRXQ6NB.js} +2 -2
  57. package/dist/{chunk-6AFVIOVZ.js → chunk-CTOQEZSN.js} +2 -2
  58. package/dist/{chunk-7NS7AWMZ.js → chunk-DKJCRGWM.js} +3 -3
  59. package/dist/{chunk-JPUT5NGH.js → chunk-DMQWV6SQ.js} +2 -2
  60. package/dist/{chunk-F3XZN24Z.js → chunk-DRUDC2UX.js} +2 -2
  61. package/dist/{chunk-KJR66XOM.js → chunk-EY6MDMHK.js} +2 -2
  62. package/dist/{chunk-3TUT4PWB.js → chunk-FVZ2ISIX.js} +2 -2
  63. package/dist/{chunk-C4X4QGIO.js → chunk-G6NKALRN.js} +5 -2
  64. package/dist/chunk-G6NKALRN.js.map +1 -0
  65. package/dist/{chunk-6SQQOJ4U.js → chunk-GKRLPHPU.js} +2 -2
  66. package/dist/{chunk-5NWYQUQC.js → chunk-HOHVIVDR.js} +2 -2
  67. package/dist/{chunk-6WAJQKBS.js → chunk-JYLFZWUX.js} +2 -2
  68. package/dist/{chunk-5W7CTZ2E.js → chunk-KQAFEZQX.js} +4 -4
  69. package/dist/{chunk-YTZ3VGC7.js → chunk-M4V2JVSZ.js} +2 -2
  70. package/dist/{chunk-PLG6JHQS.js → chunk-MJIHJ7OG.js} +38 -38
  71. package/dist/{chunk-TA3Y6GEX.js → chunk-MLKWJOAJ.js} +2 -2
  72. package/dist/{chunk-2NBP25BG.js → chunk-N3VNUM4Z.js} +171 -79
  73. package/dist/chunk-N3VNUM4Z.js.map +1 -0
  74. package/dist/{chunk-UKTDXTWX.js → chunk-NSA5ZRUL.js} +6 -6
  75. package/dist/{chunk-DQXPJ6HD.js → chunk-OEEW4KJA.js} +4 -4
  76. package/dist/{chunk-7AG54AF3.js → chunk-PUR2CKX2.js} +1 -1
  77. package/dist/chunk-PUR2CKX2.js.map +1 -0
  78. package/dist/{chunk-5OOA7SGX.js → chunk-R7IYU5DZ.js} +2 -2
  79. package/dist/{chunk-WGTWGDR5.js → chunk-SNKPUJHR.js} +5 -5
  80. package/dist/{chunk-BB57OZWC.js → chunk-UVPL565C.js} +2 -2
  81. package/dist/{chunk-UVYI6VIX.js → chunk-X7Y7WX73.js} +1 -1
  82. package/dist/{chunk-OAHOL3ZC.js → chunk-XPHVAOBT.js} +111 -30
  83. package/dist/chunk-XPHVAOBT.js.map +1 -0
  84. package/dist/{chunk-V7CMKMHM.js → chunk-Y4YD5TYW.js} +3 -3
  85. package/dist/{chunk-MDBZTH7N.js → chunk-YKBHOBJK.js} +44 -10
  86. package/dist/chunk-YKBHOBJK.js.map +1 -0
  87. package/dist/{chunk-3MS3QVX6.js → chunk-YOLZS7NY.js} +2 -2
  88. package/dist/{chunk-6OIDDKAA.js → chunk-YTU7WKYN.js} +35 -9
  89. package/dist/chunk-YTU7WKYN.js.map +1 -0
  90. package/dist/{cli-IOlDHSBT.d.ts → cli-BLME420h.d.ts} +3 -3
  91. package/dist/cli.d.ts +6 -6
  92. package/dist/cli.js +47 -47
  93. package/dist/compat/codex-cli-fallback.d.ts +1 -0
  94. package/dist/compat/codex-cli-fallback.js +22 -0
  95. package/dist/compat/codex-cli-fallback.js.map +1 -0
  96. package/dist/compat/codex-thread-key.d.ts +1 -0
  97. package/dist/compat/codex-thread-key.js +18 -0
  98. package/dist/compat/codex-thread-key.js.map +1 -0
  99. package/dist/compounding/engine.d.ts +1 -1
  100. package/dist/compounding/engine.js +7 -7
  101. package/dist/compounding/preference-consolidator.d.ts +1 -1
  102. package/dist/compression-optimizer.d.ts +1 -1
  103. package/dist/config.d.ts +1 -1
  104. package/dist/config.js +3 -3
  105. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  106. package/dist/connectors/codex-materialize-runner.js +7 -7
  107. package/dist/connectors/codex-materialize.d.ts +1 -1
  108. package/dist/connectors/index.d.ts +1 -1
  109. package/dist/connectors/index.js +7 -7
  110. package/dist/consolidation-provenance-check.d.ts +1 -1
  111. package/dist/consolidation-undo.d.ts +1 -1
  112. package/dist/contradiction/index.d.ts +1 -1
  113. package/dist/conversation-index/backend.d.ts +1 -1
  114. package/dist/conversation-index/chunker.d.ts +1 -1
  115. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  116. package/dist/conversation-index/indexer.d.ts +1 -1
  117. package/dist/conversation-index/search.d.ts +1 -1
  118. package/dist/day-summary.d.ts +1 -1
  119. package/dist/delinearize.d.ts +1 -1
  120. package/dist/direct-answer-wiring.d.ts +1 -1
  121. package/dist/direct-answer.d.ts +1 -1
  122. package/dist/embedding-fallback.d.ts +1 -1
  123. package/dist/enrichment/index.d.ts +1 -1
  124. package/dist/entity-retrieval.d.ts +1 -1
  125. package/dist/entity-retrieval.js +7 -7
  126. package/dist/entity-schema.d.ts +1 -1
  127. package/dist/explicit-capture.d.ts +4 -4
  128. package/dist/extraction-faithfulness.d.ts +1 -1
  129. package/dist/extraction-faithfulness.js +2 -2
  130. package/dist/extraction-judge-telemetry.d.ts +1 -1
  131. package/dist/extraction-judge-training.d.ts +1 -1
  132. package/dist/extraction-judge.d.ts +1 -1
  133. package/dist/extraction.d.ts +1 -1
  134. package/dist/extraction.js +2 -2
  135. package/dist/faithfulness-config.d.ts +1 -0
  136. package/dist/faithfulness-config.js +1 -1
  137. package/dist/fallback-llm.d.ts +1 -1
  138. package/dist/graph-dashboard-diff.d.ts +1 -1
  139. package/dist/graph-dashboard-key.d.ts +1 -1
  140. package/dist/graph-dashboard-parser.d.ts +1 -1
  141. package/dist/graph-edge-reinforcement.d.ts +1 -1
  142. package/dist/graph-snapshot.d.ts +1 -1
  143. package/dist/graph.d.ts +1 -1
  144. package/dist/identity-continuity.d.ts +1 -1
  145. package/dist/importance.d.ts +1 -1
  146. package/dist/index.d.ts +9 -9
  147. package/dist/index.js +61 -61
  148. package/dist/intent.d.ts +1 -1
  149. package/dist/lcm/engine.d.ts +1 -1
  150. package/dist/lcm/engine.js +2 -2
  151. package/dist/lcm/index.d.ts +1 -1
  152. package/dist/lcm/index.js +7 -7
  153. package/dist/lcm/tools.d.ts +1 -1
  154. package/dist/lifecycle.d.ts +1 -1
  155. package/dist/live-connectors-runner.d.ts +1 -1
  156. package/dist/local-llm.d.ts +1 -1
  157. package/dist/local-model-endpoint.d.ts +9 -4
  158. package/dist/local-model-endpoint.js +1 -1
  159. package/dist/maintenance/memory-governance.d.ts +1 -1
  160. package/dist/maintenance/memory-governance.js +7 -7
  161. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +7 -7
  162. package/dist/maintenance/rebuild-memory-projection.js +8 -8
  163. package/dist/mcp-memory-inspector-app.d.ts +5 -5
  164. package/dist/memory-action-policy.d.ts +1 -1
  165. package/dist/memory-cache.d.ts +1 -1
  166. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  167. package/dist/memory-projection-store.d.ts +1 -1
  168. package/dist/memory-provenance.d.ts +1 -1
  169. package/dist/memory-worth-outcomes.d.ts +1 -1
  170. package/dist/models-json.d.ts +1 -1
  171. package/dist/namespaces/migrate.d.ts +2 -2
  172. package/dist/namespaces/migrate.js +12 -12
  173. package/dist/namespaces/principal.d.ts +1 -1
  174. package/dist/namespaces/search.d.ts +1 -1
  175. package/dist/namespaces/search.js +4 -4
  176. package/dist/namespaces/storage.d.ts +2 -2
  177. package/dist/namespaces/storage.js +7 -7
  178. package/dist/native-knowledge.d.ts +1 -1
  179. package/dist/operator-toolkit.d.ts +1 -1
  180. package/dist/operator-toolkit.js +18 -18
  181. package/dist/orchestration/maintenance.d.ts +2 -2
  182. package/dist/orchestration/maintenance.js +9 -9
  183. package/dist/{orchestrator-C_OMSIMZ.d.ts → orchestrator-DqPAz8ot.d.ts} +3 -3
  184. package/dist/orchestrator.d.ts +4 -4
  185. package/dist/orchestrator.js +30 -30
  186. package/dist/patterns-cli.d.ts +1 -1
  187. package/dist/policy-runtime.d.ts +1 -1
  188. package/dist/provenance.d.ts +1 -1
  189. package/dist/provenance.js +1 -1
  190. package/dist/qmd-recall-cache.d.ts +1 -1
  191. package/dist/qmd.d.ts +1 -1
  192. package/dist/recall-disclosure-escalation.d.ts +1 -1
  193. package/dist/recall-explain-renderer.d.ts +1 -1
  194. package/dist/recall-explain-renderer.js +3 -3
  195. package/dist/recall-planner-llm.d.ts +1 -1
  196. package/dist/recall-state.d.ts +1 -1
  197. package/dist/recall-tag-filter.d.ts +1 -1
  198. package/dist/recall-xray-cli.d.ts +1 -1
  199. package/dist/recall-xray-cli.js +4 -4
  200. package/dist/recall-xray-renderer.d.ts +1 -1
  201. package/dist/recall-xray-renderer.js +3 -3
  202. package/dist/recall-xray.d.ts +1 -1
  203. package/dist/recall-xray.js +2 -2
  204. package/dist/resolve-auth-token.d.ts +1 -1
  205. package/dist/resume-bundles.js +4 -4
  206. package/dist/retrieval-agents.d.ts +1 -1
  207. package/dist/retrieval-tiers.d.ts +1 -1
  208. package/dist/routing/engine.d.ts +1 -1
  209. package/dist/routing/store.d.ts +1 -1
  210. package/dist/schemas.d.ts +22 -22
  211. package/dist/search/embed-helper.d.ts +1 -1
  212. package/dist/search/factory.d.ts +1 -1
  213. package/dist/search/factory.js +3 -3
  214. package/dist/search/index.d.ts +1 -1
  215. package/dist/search/index.js +7 -7
  216. package/dist/search/lancedb-backend.d.ts +1 -1
  217. package/dist/search/meilisearch-backend.d.ts +1 -1
  218. package/dist/search/noop-backend.d.ts +1 -1
  219. package/dist/search/orama-backend.d.ts +1 -1
  220. package/dist/search/port.d.ts +1 -1
  221. package/dist/search/remote-backend.d.ts +1 -1
  222. package/dist/{semantic-consolidation-B8LiYtvx.d.ts → semantic-consolidation-Cl15ksZy.d.ts} +1 -1
  223. package/dist/semantic-consolidation.d.ts +2 -2
  224. package/dist/semantic-consolidation.js +8 -8
  225. package/dist/semantic-rule-promotion.js +7 -7
  226. package/dist/semantic-rule-verifier.d.ts +1 -1
  227. package/dist/semantic-rule-verifier.js +7 -7
  228. package/dist/session-observer-bands.d.ts +1 -1
  229. package/dist/session-observer-state.d.ts +1 -1
  230. package/dist/shared-context/manager.d.ts +1 -1
  231. package/dist/signal.d.ts +1 -1
  232. package/dist/storage.d.ts +1 -1
  233. package/dist/storage.js +6 -6
  234. package/dist/summarizer.d.ts +1 -1
  235. package/dist/summary-snapshot.d.ts +1 -1
  236. package/dist/temporal-supersession.d.ts +1 -1
  237. package/dist/temporal-validity.d.ts +1 -1
  238. package/dist/threading.d.ts +1 -1
  239. package/dist/tier-migration.d.ts +1 -1
  240. package/dist/tier-routing.d.ts +1 -1
  241. package/dist/topics.d.ts +1 -1
  242. package/dist/transcript.d.ts +1 -1
  243. package/dist/transfer/backup.js +2 -2
  244. package/dist/transfer/capsule-export.js +2 -2
  245. package/dist/transfer/capsule-import.js +2 -2
  246. package/dist/transfer/types.d.ts +12 -12
  247. package/dist/trust-score-stage.d.ts +1 -1
  248. package/dist/trust-score.d.ts +1 -1
  249. package/dist/{types-DmTaqob2.d.ts → types-ChQb9D6s.d.ts} +8 -0
  250. package/dist/types.d.ts +1 -1
  251. package/dist/types.js +1 -1
  252. package/dist/utility-runtime.d.ts +1 -1
  253. package/dist/verified-recall.js +7 -7
  254. package/package.json +26 -2
  255. package/src/access-http.ts +68 -1
  256. package/src/admin/admin-surfaces.test.ts +289 -0
  257. package/src/admin/admin-surfaces.ts +138 -7
  258. package/src/bitemporal-dedup-backfill.test.ts +294 -0
  259. package/src/chat/chat-engine.test.ts +66 -1
  260. package/src/chat/chat-http.test.ts +119 -1
  261. package/src/chat/chat-http.ts +252 -97
  262. package/src/chat/chat-session.ts +143 -7
  263. package/src/compat/codex-cli-fallback.ts +23 -0
  264. package/src/compat/codex-subpath-aliases.test.ts +93 -0
  265. package/src/compat/codex-thread-key.ts +23 -0
  266. package/src/extraction-faithfulness.test.ts +240 -0
  267. package/src/extraction-faithfulness.ts +58 -6
  268. package/src/faithfulness-config.ts +16 -1
  269. package/src/local-model-endpoint.ts +24 -3
  270. package/src/orchestrator.ts +200 -8
  271. package/src/provenance-extraction.test.ts +266 -0
  272. package/src/provenance.ts +66 -16
  273. package/src/types.ts +8 -0
  274. package/dist/chunk-2NBP25BG.js.map +0 -1
  275. package/dist/chunk-6OIDDKAA.js.map +0 -1
  276. package/dist/chunk-7AG54AF3.js.map +0 -1
  277. package/dist/chunk-C4X4QGIO.js.map +0 -1
  278. package/dist/chunk-MDBZTH7N.js.map +0 -1
  279. package/dist/chunk-OAHOL3ZC.js.map +0 -1
  280. package/dist/chunk-XGTBNVIU.js.map +0 -1
  281. /package/dist/{capsule-crypto-GWVG7LGC.js.map → capsule-crypto-7FJQINUR.js.map} +0 -0
  282. /package/dist/{chunk-53EEQYE5.js.map → chunk-2KAYTPPT.js.map} +0 -0
  283. /package/dist/{chunk-OWHERGF2.js.map → chunk-2NLLXCJG.js.map} +0 -0
  284. /package/dist/{chunk-BIA7ELIB.js.map → chunk-36SEDFAU.js.map} +0 -0
  285. /package/dist/{chunk-UQSVUEN2.js.map → chunk-37436GML.js.map} +0 -0
  286. /package/dist/{chunk-RRHHQYJS.js.map → chunk-3TSTGI6F.js.map} +0 -0
  287. /package/dist/{chunk-FO3HO52S.js.map → chunk-4H4F3BFL.js.map} +0 -0
  288. /package/dist/{chunk-BEUCACTV.js.map → chunk-4NOI577P.js.map} +0 -0
  289. /package/dist/{chunk-BBIE7W52.js.map → chunk-4NR2PDZ5.js.map} +0 -0
  290. /package/dist/{chunk-PKMQK2WY.js.map → chunk-773DPI6T.js.map} +0 -0
  291. /package/dist/{chunk-MQVKHFIU.js.map → chunk-7RLCCNHU.js.map} +0 -0
  292. /package/dist/{chunk-EZNDNMRH.js.map → chunk-AQLOP5F4.js.map} +0 -0
  293. /package/dist/{chunk-UNNDFYUX.js.map → chunk-ARV3AUOM.js.map} +0 -0
  294. /package/dist/{chunk-NPL7VDM6.js.map → chunk-ASKXIAHD.js.map} +0 -0
  295. /package/dist/{chunk-K4ZNARDO.js.map → chunk-CBWI22JN.js.map} +0 -0
  296. /package/dist/{chunk-ZOHMPFOB.js.map → chunk-CKFLLAIS.js.map} +0 -0
  297. /package/dist/{chunk-DCKNMLEQ.js.map → chunk-CSRXQ6NB.js.map} +0 -0
  298. /package/dist/{chunk-6AFVIOVZ.js.map → chunk-CTOQEZSN.js.map} +0 -0
  299. /package/dist/{chunk-7NS7AWMZ.js.map → chunk-DKJCRGWM.js.map} +0 -0
  300. /package/dist/{chunk-JPUT5NGH.js.map → chunk-DMQWV6SQ.js.map} +0 -0
  301. /package/dist/{chunk-F3XZN24Z.js.map → chunk-DRUDC2UX.js.map} +0 -0
  302. /package/dist/{chunk-KJR66XOM.js.map → chunk-EY6MDMHK.js.map} +0 -0
  303. /package/dist/{chunk-3TUT4PWB.js.map → chunk-FVZ2ISIX.js.map} +0 -0
  304. /package/dist/{chunk-6SQQOJ4U.js.map → chunk-GKRLPHPU.js.map} +0 -0
  305. /package/dist/{chunk-5NWYQUQC.js.map → chunk-HOHVIVDR.js.map} +0 -0
  306. /package/dist/{chunk-6WAJQKBS.js.map → chunk-JYLFZWUX.js.map} +0 -0
  307. /package/dist/{chunk-5W7CTZ2E.js.map → chunk-KQAFEZQX.js.map} +0 -0
  308. /package/dist/{chunk-YTZ3VGC7.js.map → chunk-M4V2JVSZ.js.map} +0 -0
  309. /package/dist/{chunk-PLG6JHQS.js.map → chunk-MJIHJ7OG.js.map} +0 -0
  310. /package/dist/{chunk-TA3Y6GEX.js.map → chunk-MLKWJOAJ.js.map} +0 -0
  311. /package/dist/{chunk-UKTDXTWX.js.map → chunk-NSA5ZRUL.js.map} +0 -0
  312. /package/dist/{chunk-DQXPJ6HD.js.map → chunk-OEEW4KJA.js.map} +0 -0
  313. /package/dist/{chunk-5OOA7SGX.js.map → chunk-R7IYU5DZ.js.map} +0 -0
  314. /package/dist/{chunk-WGTWGDR5.js.map → chunk-SNKPUJHR.js.map} +0 -0
  315. /package/dist/{chunk-BB57OZWC.js.map → chunk-UVPL565C.js.map} +0 -0
  316. /package/dist/{chunk-UVYI6VIX.js.map → chunk-X7Y7WX73.js.map} +0 -0
  317. /package/dist/{chunk-V7CMKMHM.js.map → chunk-Y4YD5TYW.js.map} +0 -0
  318. /package/dist/{chunk-3MS3QVX6.js.map → chunk-YOLZS7NY.js.map} +0 -0
@@ -1,3 +1,6 @@
1
+ import {
2
+ LcmDag
3
+ } from "./chunk-7N4KAIGN.js";
1
4
  import {
2
5
  LcmWorkQueue
3
6
  } from "./chunk-TPDBFYEG.js";
@@ -14,9 +17,6 @@ import {
14
17
  import {
15
18
  LcmArchive
16
19
  } from "./chunk-HW5EF6LV.js";
17
- import {
18
- LcmDag
19
- } from "./chunk-7N4KAIGN.js";
20
20
  import {
21
21
  log
22
22
  } from "./chunk-NU3CSQ4H.js";
@@ -513,4 +513,4 @@ export {
513
513
  extractLcmConfig,
514
514
  LcmEngine
515
515
  };
516
- //# sourceMappingURL=chunk-PKMQK2WY.js.map
516
+ //# sourceMappingURL=chunk-773DPI6T.js.map
@@ -1,12 +1,12 @@
1
- import {
2
- WEARABLES_DIR_NAME,
3
- isValidTranscriptDate
4
- } from "./chunk-M7XQSUBB.js";
5
1
  import {
6
2
  TombstoneStore,
7
3
  buildRetiredFactTombstoneInputs,
8
4
  collectRetiredMemoriesForRebuild
9
5
  } from "./chunk-L2B3EE7B.js";
6
+ import {
7
+ WEARABLES_DIR_NAME,
8
+ isValidTranscriptDate
9
+ } from "./chunk-M7XQSUBB.js";
10
10
  import {
11
11
  isErrnoCode
12
12
  } from "./chunk-5UZXUTVO.js";
@@ -27,7 +27,7 @@ import {
27
27
  import {
28
28
  SPECULATIVE_TTL_DAYS,
29
29
  confidenceTier
30
- } from "./chunk-7AG54AF3.js";
30
+ } from "./chunk-PUR2CKX2.js";
31
31
  import {
32
32
  getCachedEntities,
33
33
  invalidateAllForDir,
@@ -64,7 +64,7 @@ import {
64
64
  import {
65
65
  parseFaithfulnessField,
66
66
  serializeFaithfulnessFields
67
- } from "./chunk-6OIDDKAA.js";
67
+ } from "./chunk-YTU7WKYN.js";
68
68
  import {
69
69
  isConsolidationOperator,
70
70
  isValidDerivedFromEntry
@@ -98,7 +98,7 @@ import {
98
98
  parseProvenanceTag,
99
99
  reconcileProvenanceRead,
100
100
  serializeProvenanceFields
101
- } from "./chunk-MDBZTH7N.js";
101
+ } from "./chunk-YKBHOBJK.js";
102
102
  import {
103
103
  sanitizeMemoryContent
104
104
  } from "./chunk-5GKPFL3S.js";
@@ -5866,4 +5866,4 @@ export {
5866
5866
  serializeEntityFile,
5867
5867
  StorageManager
5868
5868
  };
5869
- //# sourceMappingURL=chunk-MQVKHFIU.js.map
5869
+ //# sourceMappingURL=chunk-7RLCCNHU.js.map
@@ -15,6 +15,15 @@ async function callOpenAiCompatibleChat(endpoint, messages, options, fetchImpl =
15
15
  const url = joinBaseUrl(endpoint.baseUrl, "/chat/completions");
16
16
  const controller = new AbortController();
17
17
  const timer = setTimeout(() => controller.abort(), options.timeoutMs);
18
+ const batchSignal = options.signal;
19
+ const onBatchAbort = () => controller.abort();
20
+ if (batchSignal) {
21
+ if (batchSignal.aborted) {
22
+ controller.abort();
23
+ } else {
24
+ batchSignal.addEventListener("abort", onBatchAbort, { once: true });
25
+ }
26
+ }
18
27
  try {
19
28
  const body = {
20
29
  model: endpoint.model,
@@ -45,6 +54,7 @@ async function callOpenAiCompatibleChat(endpoint, messages, options, fetchImpl =
45
54
  return { content, modelUsed: extractModel(parsed) ?? endpoint.model };
46
55
  } finally {
47
56
  clearTimeout(timer);
57
+ if (batchSignal) batchSignal.removeEventListener("abort", onBatchAbort);
48
58
  }
49
59
  }
50
60
  function joinBaseUrl(base, path) {
@@ -76,4 +86,4 @@ export {
76
86
  resolveCorrectionIntentEndpoint,
77
87
  callOpenAiCompatibleChat
78
88
  };
79
- //# sourceMappingURL=chunk-XGTBNVIU.js.map
89
+ //# sourceMappingURL=chunk-AAD2ZS6P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/local-model-endpoint.ts"],"sourcesContent":["/**\n * Local fine-tuned model endpoint resolver + openai-compatible caller\n * (issue #1585 model-lab integration).\n *\n * Remnic's two classification workloads — the extraction faithfulness gate\n * (#1576) and passive-correction intent detection (#1581) — can run on small\n * fine-tuned models served locally (Ollama / vLLM) instead of prompted\n * frontier LLMs. The model-lab (`model-lab/`) produces those models; this\n * module is the config-side half: it resolves the optional local endpoint\n * pointer from config and, when set, makes a minimal openai-compatible\n * chat-completions call to it.\n *\n * Design:\n * - **Pointers are optional.** Empty defaults preserve the existing routing\n * chain exactly (rule 39 / byte-identical pre-feature). A resolver returns\n * `null` when the pointer is unset, so callers short-circuit before any\n * network.\n * - **Graceful degradation.** A local-endpoint failure (network, non-2xx,\n * malformed body, timeout) returns `null`; callers fall back to the\n * configured chain (checklist §4 — never block writes on a classifier).\n * - **No inline casts.** The fetch JSON is narrowed with `in` / `typeof`\n * guards (project rule: never assert a shape to read one property).\n * - **Injectable fetch.** `callOpenAiCompatibleChat` takes an optional\n * `fetchImpl` so the caller is unit-testable without a live server.\n */\n\nimport type { PluginConfig } from \"./types.js\";\n\n/** A resolved local endpoint: where to call + which model to name. */\nexport interface LocalModelEndpoint {\n /** Base URL, e.g. `http://localhost:11434/v1` (no trailing slash required). */\n baseUrl: string;\n /** Model name the server expects, e.g. `remnic-faithfulness-gate-v1`. */\n model: string;\n}\n\n/** A chat message in the openai-compatible shape this caller sends. */\nexport interface EndpointChatMessage {\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n}\n\n/** Options for a single local-endpoint chat call. */\nexport interface EndpointChatOptions {\n /** Per-call timeout in ms. Bounds each attempt so one slow server can't\n * starve the batch (matches the local-LLM precedent). */\n timeoutMs: number;\n /** Optional batch AbortSignal forwarded into the probe (issue #1700 nit #5).\n * When the batch budget elapses (or the caller aborts), the in-flight probe\n * aborts immediately instead of waiting for its own `timeoutMs` — a\n * micro-optimization, not a correctness fix (the outer race already bounds\n * the total). Undefined preserves the prior per-attempt-only behavior. */\n signal?: AbortSignal;\n /** Sampling temperature — classification wants low entropy (0.0–0.2). */\n temperature?: number;\n /** Max output tokens. */\n maxTokens?: number;\n /** Request JSON-object output (the gate emits a JSON verdict array). */\n responseFormatJson?: boolean;\n}\n\n/** Result of a local-endpoint chat call. */\nexport interface EndpointChatResult {\n content: string;\n /** The model the server reports it used (falls back to the requested name). */\n modelUsed: string;\n}\n\n/**\n * Resolve the faithfulness-gate local endpoint from config (issue #1585).\n *\n * Returns the endpoint only when BOTH a base URL and a model name are\n * configured; otherwise `null` (gate uses its existing routing chain). The\n * gate's verifier needs a model identity, so a base URL alone is intentionally\n * insufficient — silently calling whatever the server's default model is would\n * be an unreviewed behavioral change.\n */\nexport function resolveFaithfulnessGateEndpoint(\n config: Pick<PluginConfig, \"extractionFaithfulnessModel\" | \"extractionFaithfulnessBaseUrl\">,\n): LocalModelEndpoint | null {\n const baseUrl = config.extractionFaithfulnessBaseUrl.trim();\n const model = config.extractionFaithfulnessModel.trim();\n if (!baseUrl || !model) return null;\n return { baseUrl, model };\n}\n\n/**\n * Resolve the correction-intent local endpoint from config (issue #1581/#1585).\n *\n * Same contract as the gate resolver. Consumption by the model-backed\n * detector is the consuming child's job — the rule-based\n * `detectPassiveCorrections` remains the default path; this pointer lets a\n * future model-backed detector route to a fine-tuned local classifier when an\n * operator configures one.\n */\nexport function resolveCorrectionIntentEndpoint(\n config: Pick<PluginConfig, \"correctionIntentModel\" | \"correctionIntentBaseUrl\">,\n): LocalModelEndpoint | null {\n const baseUrl = config.correctionIntentBaseUrl.trim();\n const model = config.correctionIntentModel.trim();\n if (!baseUrl || !model) return null;\n return { baseUrl, model };\n}\n\ntype FetchLike = typeof fetch;\n\n/**\n * Make an openai-compatible chat-completions call to a local endpoint.\n *\n * POSTs to `${baseUrl}/chat/completions` with `{ model, messages, ... }` and\n * returns the first choice's content. Any failure (non-2xx, network error,\n * malformed body, timeout) returns `null` so callers fall back gracefully.\n *\n * The response is narrowed with runtime guards — never an unchecked cast — so\n * a surprising server response fails closed (`null`) rather than reading a\n * fabricated field.\n */\nexport async function callOpenAiCompatibleChat(\n endpoint: LocalModelEndpoint,\n messages: EndpointChatMessage[],\n options: EndpointChatOptions,\n fetchImpl: FetchLike = fetch,\n): Promise<EndpointChatResult | null> {\n const url = joinBaseUrl(endpoint.baseUrl, \"/chat/completions\");\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), options.timeoutMs);\n // Forward the batch AbortSignal into the probe (issue #1700 nit #5): if the\n // batch budget already elapsed, abort the in-flight probe immediately rather\n // than waiting for the probe's own timeoutMs. AbortSignal.any is ES2024\n // (forbidden here); wire the listener manually + guard the already-aborted\n // case. The fetch still uses the probe's controller, so clearing the timer\n // below is the only cleanup needed.\n const batchSignal = options.signal;\n const onBatchAbort = () => controller.abort();\n if (batchSignal) {\n if (batchSignal.aborted) {\n controller.abort();\n } else {\n batchSignal.addEventListener(\"abort\", onBatchAbort, { once: true });\n }\n }\n try {\n const body: Record<string, unknown> = {\n model: endpoint.model,\n messages,\n temperature: options.temperature ?? 0.1,\n };\n if (typeof options.maxTokens === \"number\") {\n body.max_tokens = options.maxTokens;\n }\n if (options.responseFormatJson) {\n body.response_format = { type: \"json_object\" };\n }\n let response: Response;\n try {\n response = await fetchImpl(url, {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(body),\n signal: controller.signal,\n });\n } catch {\n // Network error or abort — fail closed, let the caller fall back.\n return null;\n }\n if (!response.ok) return null;\n const parsed: unknown = await response.json().catch(() => null);\n const content = extractFirstChoiceContent(parsed);\n if (content === null) return null;\n return { content, modelUsed: extractModel(parsed) ?? endpoint.model };\n } finally {\n clearTimeout(timer);\n if (batchSignal) batchSignal.removeEventListener(\"abort\", onBatchAbort);\n }\n}\n\n/** Join a base URL and a path, tolerating a trailing slash on the base. */\nfunction joinBaseUrl(base: string, path: string): string {\n return base.endsWith(\"/\") ? `${base.slice(0, -1)}${path}` : `${base}${path}`;\n}\n\n/**\n * Narrow the openai-compatible response and pull the first choice's content.\n *\n * `in` / `typeof` guards only — no `as` cast (project rule). Returns `null`\n * for any shape that isn't `{ choices: [{ message: { content: string } }, …] }`.\n */\nfunction extractFirstChoiceContent(data: unknown): string | null {\n if (!data || typeof data !== \"object\") return null;\n // After `in`, TS narrows the property to `unknown` — read it directly, no cast.\n if (!(\"choices\" in data) || !Array.isArray(data.choices)) return null;\n const choices: unknown[] = data.choices;\n for (const choice of choices) {\n if (!choice || typeof choice !== \"object\") continue;\n if (!(\"message\" in choice)) continue;\n const message = choice.message;\n if (!message || typeof message !== \"object\") continue;\n if (!(\"content\" in message)) continue;\n const content = message.content;\n if (typeof content === \"string\" && content.length > 0) return content;\n }\n return null;\n}\n\n/** Narrow the `model` field from the response (best-effort, may be absent). */\nfunction extractModel(data: unknown): string | null {\n if (!data || typeof data !== \"object\" || !(\"model\" in data)) return null;\n const model = data.model;\n return typeof model === \"string\" && model.length > 0 ? model : null;\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  enqueuePassiveCorrectionNotification
3
- } from "./chunk-KJR66XOM.js";
3
+ } from "./chunk-EY6MDMHK.js";
4
4
  import {
5
5
  stripAttributesSuffix
6
6
  } from "./chunk-SVOZFLIQ.js";
@@ -1794,4 +1794,4 @@ export {
1794
1794
  capturePassiveCorrections,
1795
1795
  clusterByKey
1796
1796
  };
1797
- //# sourceMappingURL=chunk-EZNDNMRH.js.map
1797
+ //# sourceMappingURL=chunk-AQLOP5F4.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createVersion
3
3
  } from "./chunk-VF4XKTX3.js";
4
- import {
5
- decryptCapsuleFileInMemory,
6
- isEncryptedCapsuleFile
7
- } from "./chunk-UVYI6VIX.js";
8
4
  import {
9
5
  parseExportBundle
10
6
  } from "./chunk-WEHSQBFR.js";
7
+ import {
8
+ decryptCapsuleFileInMemory,
9
+ isEncryptedCapsuleFile
10
+ } from "./chunk-X7Y7WX73.js";
11
11
  import {
12
12
  assertIsDirectoryNotSymlink,
13
13
  assertRealpathInsideRoot,
@@ -227,4 +227,4 @@ function mintForkId(capsuleId, originalId, now) {
227
227
  export {
228
228
  importCapsule
229
229
  };
230
- //# sourceMappingURL=chunk-UNNDFYUX.js.map
230
+ //# sourceMappingURL=chunk-ARV3AUOM.js.map
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-ZBJMUXZH.js";
8
8
  import {
9
9
  StorageManager
10
- } from "./chunk-MQVKHFIU.js";
10
+ } from "./chunk-7RLCCNHU.js";
11
11
  import {
12
12
  getCachedEpisodeMap,
13
13
  setCachedEpisodeMap
@@ -107,4 +107,4 @@ export {
107
107
  compareVerifiedEpisodeResults,
108
108
  searchVerifiedEpisodes
109
109
  };
110
- //# sourceMappingURL=chunk-NPL7VDM6.js.map
110
+ //# sourceMappingURL=chunk-ASKXIAHD.js.map
@@ -3,7 +3,7 @@ import {
3
3
  readNamespaceMaintenanceLastRanStatuses,
4
4
  readNamespaceMaintenanceStatuses,
5
5
  runNamespaceMaintenancePlan
6
- } from "./chunk-YTZ3VGC7.js";
6
+ } from "./chunk-M4V2JVSZ.js";
7
7
 
8
8
  // src/maintenance/namespace-maintenance-fanout.ts
9
9
  var NAMESPACE_MAINTENANCE_JOBS = [
@@ -146,4 +146,4 @@ export {
146
146
  summarizeNamespaceMaintenanceHealth,
147
147
  formatNamespaceMaintenanceHealthText
148
148
  };
149
- //# sourceMappingURL=chunk-K4ZNARDO.js.map
149
+ //# sourceMappingURL=chunk-CBWI22JN.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  parseXrayFormat
3
- } from "./chunk-6SQQOJ4U.js";
3
+ } from "./chunk-GKRLPHPU.js";
4
4
  import {
5
5
  RECALL_DISCLOSURE_LEVELS,
6
6
  isRecallDisclosure
7
- } from "./chunk-7AG54AF3.js";
7
+ } from "./chunk-PUR2CKX2.js";
8
8
 
9
9
  // src/recall-xray-cli.ts
10
10
  function parseXrayDisclosureFlag(value) {
@@ -50,4 +50,4 @@ export {
50
50
  parseXrayBudgetFlag,
51
51
  parseXrayCliOptions
52
52
  };
53
- //# sourceMappingURL=chunk-ZOHMPFOB.js.map
53
+ //# sourceMappingURL=chunk-CKFLLAIS.js.map
@@ -50,7 +50,7 @@ import {
50
50
  } from "./chunk-RGMVMVMF.js";
51
51
  import {
52
52
  buildFactProvenance
53
- } from "./chunk-MDBZTH7N.js";
53
+ } from "./chunk-YKBHOBJK.js";
54
54
  import {
55
55
  sanitizeMemoryContent
56
56
  } from "./chunk-5GKPFL3S.js";
@@ -2422,4 +2422,4 @@ ${memoryList}` }
2422
2422
  export {
2423
2423
  ExtractionEngine
2424
2424
  };
2425
- //# sourceMappingURL=chunk-DCKNMLEQ.js.map
2425
+ //# sourceMappingURL=chunk-CSRXQ6NB.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createSearchBackend
3
- } from "./chunk-53EEQYE5.js";
3
+ } from "./chunk-2KAYTPPT.js";
4
4
  import {
5
5
  namespaceIdentityToken,
6
6
  normalizeNamespaceIdentity
@@ -401,4 +401,4 @@ export {
401
401
  namespaceCollectionName,
402
402
  NamespaceSearchRouter
403
403
  };
404
- //# sourceMappingURL=chunk-6AFVIOVZ.js.map
404
+ //# sourceMappingURL=chunk-CTOQEZSN.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  NamespaceStorageRouter
3
- } from "./chunk-RRHHQYJS.js";
3
+ } from "./chunk-3TSTGI6F.js";
4
4
  import {
5
5
  namespaceCollectionName
6
- } from "./chunk-6AFVIOVZ.js";
6
+ } from "./chunk-CTOQEZSN.js";
7
7
  import {
8
8
  namespaceIdentityFromToken,
9
9
  namespaceIdentityToken
@@ -204,4 +204,4 @@ export {
204
204
  verifyNamespaces,
205
205
  runNamespaceMigration
206
206
  };
207
- //# sourceMappingURL=chunk-7NS7AWMZ.js.map
207
+ //# sourceMappingURL=chunk-DKJCRGWM.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runPostConsolidationMaterialize
3
- } from "./chunk-UQSVUEN2.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-JPUT5NGH.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-MQVKHFIU.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-KJR66XOM.js.map
959
+ //# sourceMappingURL=chunk-EY6MDMHK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isValidCapsuleSince
3
- } from "./chunk-5W7CTZ2E.js";
3
+ } from "./chunk-KQAFEZQX.js";
4
4
  import {
5
5
  CAPSULE_ID_PATTERN
6
6
  } from "./chunk-WEHSQBFR.js";
@@ -441,4 +441,4 @@ export {
441
441
  actionConfidenceRequestSchema,
442
442
  validateRequest
443
443
  };
444
- //# sourceMappingURL=chunk-3TUT4PWB.js.map
444
+ //# sourceMappingURL=chunk-FVZ2ISIX.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-BIA7ELIB.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-5NWYQUQC.js.map
271
+ //# sourceMappingURL=chunk-HOHVIVDR.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-SFQ6QNL7.js";
7
7
  import {
8
8
  StorageManager
9
- } from "./chunk-MQVKHFIU.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-6WAJQKBS.js.map
77
+ //# sourceMappingURL=chunk-JYLFZWUX.js.map
@@ -1,12 +1,12 @@
1
- import {
2
- encryptCapsuleFile
3
- } from "./chunk-UVYI6VIX.js";
4
1
  import {
5
2
  CAPSULE_ID_PATTERN,
6
3
  CapsuleBlockSchema,
7
4
  ExportBundleV2Schema,
8
5
  ExportManifestV2Schema
9
6
  } from "./chunk-WEHSQBFR.js";
7
+ import {
8
+ encryptCapsuleFile
9
+ } from "./chunk-X7Y7WX73.js";
10
10
  import {
11
11
  CAPSULE_SCHEMA_VERSION,
12
12
  EXPORT_FORMAT
@@ -261,4 +261,4 @@ export {
261
261
  exportCapsule,
262
262
  isValidCapsuleSince
263
263
  };
264
- //# sourceMappingURL=chunk-5W7CTZ2E.js.map
264
+ //# sourceMappingURL=chunk-KQAFEZQX.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  resolveDefaultNamespaceRoot,
3
3
  resolveNamespaceStorageRoot
4
- } from "./chunk-RRHHQYJS.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-YTZ3VGC7.js.map
1949
+ //# sourceMappingURL=chunk-M4V2JVSZ.js.map