@remnic/core 9.65.2 → 9.65.4

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 (492) hide show
  1. package/dist/access-admin-ops-surface.d.ts +44 -44
  2. package/dist/access-admin-ops-surface.js +21 -19
  3. package/dist/access-authorization-probe.d.ts +38 -38
  4. package/dist/access-authorization-probe.js +22 -20
  5. package/dist/access-boundary.d.ts +40 -40
  6. package/dist/access-boundary.js +21 -19
  7. package/dist/access-cli.js +62 -60
  8. package/dist/access-cli.js.map +1 -1
  9. package/dist/access-coding-context-resolution.d.ts +3 -1
  10. package/dist/access-extraction-force-flush.d.ts +25 -25
  11. package/dist/access-extraction-force-flush.js +21 -19
  12. package/dist/access-health-types.d.ts +3 -1
  13. package/dist/access-http-lcm-compaction.d.ts +39 -39
  14. package/dist/access-http-lifecycle-flush.d.ts +39 -39
  15. package/dist/access-http-offline-stream.d.ts +25 -25
  16. package/dist/access-http-query.d.ts +4 -2
  17. package/dist/access-http-query.js +23 -21
  18. package/dist/access-http.d.ts +51 -44
  19. package/dist/access-http.js +37 -35
  20. package/dist/access-identity-continuity-surface.d.ts +12 -12
  21. package/dist/access-identity-continuity-surface.js +21 -19
  22. package/dist/access-lcm-surface.d.ts +27 -27
  23. package/dist/access-lcm-surface.js +21 -19
  24. package/dist/access-mcp-admin-tools.d.ts +9 -1
  25. package/dist/access-mcp-admin-tools.js +3 -1
  26. package/dist/access-mcp-output-schemas.js +1 -1
  27. package/dist/access-mcp.d.ts +39 -39
  28. package/dist/access-mcp.js +31 -29
  29. package/dist/access-memory-search-fanout.d.ts +4 -2
  30. package/dist/{access-namespace-preflight-Dhvcl-T0.d.ts → access-namespace-preflight-D_6mo8ms.d.ts} +1 -1
  31. package/dist/access-namespace-preflight.d.ts +5 -3
  32. package/dist/access-namespace-preflight.js +21 -19
  33. package/dist/access-observe-write-surface.d.ts +39 -39
  34. package/dist/access-observe-write-surface.js +21 -19
  35. package/dist/access-offline-manifest.d.ts +12 -12
  36. package/dist/access-offline-manifest.js +3 -3
  37. package/dist/access-operations-batch.js +25 -23
  38. package/dist/access-operations.d.ts +40 -40
  39. package/dist/access-operations.js +28 -26
  40. package/dist/access-recall-concurrency.d.ts +40 -40
  41. package/dist/access-recall-concurrency.js +21 -19
  42. package/dist/access-recall-response.d.ts +24 -24
  43. package/dist/access-recall-response.js +21 -19
  44. package/dist/access-recall-surface.d.ts +24 -24
  45. package/dist/access-recall-surface.js +21 -19
  46. package/dist/access-schema.d.ts +45 -45
  47. package/dist/{access-service-Bke1alZO.d.ts → access-service-DqPa3hy4.d.ts} +219 -75
  48. package/dist/access-service-helpers.d.ts +40 -40
  49. package/dist/access-service.d.ts +47 -47
  50. package/dist/access-service.js +21 -19
  51. package/dist/access-surface-catalog.d.ts +40 -40
  52. package/dist/access-surface-catalog.js +27 -21
  53. package/dist/access-surface-catalog.js.map +1 -1
  54. package/dist/access-wearables-meetings-surface.d.ts +5 -3
  55. package/dist/action-confidence.d.ts +3 -1
  56. package/dist/active-memory-bridge.d.ts +3 -1
  57. package/dist/active-recall.d.ts +3 -1
  58. package/dist/active-recall.js +10 -1
  59. package/dist/active-recall.js.map +1 -1
  60. package/dist/ambient-provenance.d.ts +3 -1
  61. package/dist/artifact-search.d.ts +3 -1
  62. package/dist/{auto-sync-H64ZCNIR.js → auto-sync-XVMLL2RH.js} +5 -5
  63. package/dist/behavior-learner.d.ts +3 -1
  64. package/dist/behavior-signals.d.ts +3 -1
  65. package/dist/bootstrap.d.ts +12 -12
  66. package/dist/briefing-window.d.ts +4 -2
  67. package/dist/briefing.d.ts +4 -2
  68. package/dist/briefing.js +4 -4
  69. package/dist/buffer-surprise-report.d.ts +3 -1
  70. package/dist/buffer-turn-helpers.d.ts +3 -1
  71. package/dist/buffer.d.ts +4 -2
  72. package/dist/bulk-import/index.d.ts +5 -3
  73. package/dist/calibration.d.ts +3 -1
  74. package/dist/capabilities.d.ts +3 -1
  75. package/dist/{catalog-DV6qnbr7.d.ts → catalog-DO_7zfkv.d.ts} +1 -1
  76. package/dist/causal-behavior.d.ts +1 -1
  77. package/dist/causal-consolidation.d.ts +3 -1
  78. package/dist/causal-consolidation.js +12 -9
  79. package/dist/causal-consolidation.js.map +1 -1
  80. package/dist/causal-trajectory-graph.d.ts +1 -1
  81. package/dist/chunk-236PXYG7.js +232 -0
  82. package/dist/chunk-236PXYG7.js.map +1 -0
  83. package/dist/{chunk-YB42WZCY.js → chunk-2IXQSGCU.js} +2 -2
  84. package/dist/{chunk-PE255F4T.js → chunk-2MVTAIL3.js} +2 -2
  85. package/dist/{chunk-LGO6A7GJ.js → chunk-3JZBPTLD.js} +338 -80
  86. package/dist/chunk-3JZBPTLD.js.map +1 -0
  87. package/dist/{chunk-GDFVPUJ5.js → chunk-3NH3VP3U.js} +2 -2
  88. package/dist/{chunk-TBOJ76ER.js → chunk-AB3A7EFH.js} +18 -2
  89. package/dist/{chunk-TBOJ76ER.js.map → chunk-AB3A7EFH.js.map} +1 -1
  90. package/dist/{chunk-GNCCUR6K.js → chunk-AXGFOFNY.js} +2 -2
  91. package/dist/{chunk-SB7D4BT7.js → chunk-AZLLH6YA.js} +1554 -114
  92. package/dist/chunk-AZLLH6YA.js.map +1 -0
  93. package/dist/{chunk-5YQ63T4B.js → chunk-BK5G2MHO.js} +2 -2
  94. package/dist/{chunk-LZH5FR2W.js → chunk-CQBIN77D.js} +2 -2
  95. package/dist/{chunk-35NN3ZFA.js → chunk-CTVWELNK.js} +21 -3
  96. package/dist/chunk-CTVWELNK.js.map +1 -0
  97. package/dist/{chunk-NKKD4ZAU.js → chunk-DORFF5N5.js} +2 -2
  98. package/dist/{chunk-BWLRUMOG.js → chunk-DPNXADEI.js} +441 -2
  99. package/dist/chunk-DPNXADEI.js.map +1 -0
  100. package/dist/{chunk-SQI57UCJ.js → chunk-DUEDOYZD.js} +2 -2
  101. package/dist/{chunk-5NM4OH4P.js → chunk-DUZARALI.js} +3 -3
  102. package/dist/{chunk-2E36UXVW.js → chunk-ECLJ4LA2.js} +2 -2
  103. package/dist/{chunk-TZNQUNKL.js → chunk-FC7TIRFS.js} +15 -1
  104. package/dist/chunk-FC7TIRFS.js.map +1 -0
  105. package/dist/{chunk-IID2CMUU.js → chunk-GHD2LLG4.js} +2 -2
  106. package/dist/{chunk-ZQHI2BZB.js → chunk-HF5BUTI6.js} +2 -2
  107. package/dist/{chunk-3DVBKTSO.js → chunk-HSZMX3ZJ.js} +4 -4
  108. package/dist/{chunk-S2DPMJXH.js → chunk-I23ZHYSL.js} +2 -2
  109. package/dist/{chunk-ODZG724P.js → chunk-I2HTKOOP.js} +2 -2
  110. package/dist/chunk-I32NKXE2.js +879 -0
  111. package/dist/chunk-I32NKXE2.js.map +1 -0
  112. package/dist/{chunk-NTWN6HB2.js → chunk-IURMJBGP.js} +2 -2
  113. package/dist/{chunk-OCZIYAE5.js → chunk-IWKGOCL6.js} +3 -3
  114. package/dist/{chunk-UXO5IMBK.js → chunk-J3ATBB7M.js} +2 -2
  115. package/dist/{chunk-Y7DK7HHJ.js → chunk-JPAKBNTM.js} +2 -2
  116. package/dist/{chunk-SPUJNJJC.js → chunk-KFIOPZ25.js} +2 -2
  117. package/dist/{chunk-JYYBA7TF.js → chunk-KOO37E4Y.js} +2 -2
  118. package/dist/{chunk-OTHZWLUD.js → chunk-KPB2QHJZ.js} +2 -2
  119. package/dist/{chunk-SBDCZ2AX.js → chunk-LBFFNDFM.js} +1 -1
  120. package/dist/chunk-LBFFNDFM.js.map +1 -0
  121. package/dist/{chunk-CT56C22C.js → chunk-LYBIHM4N.js} +4 -4
  122. package/dist/{chunk-3I7ASZN3.js → chunk-MFOSZUIT.js} +2 -2
  123. package/dist/{chunk-DZUJ46DO.js → chunk-NLEH4RTB.js} +2 -2
  124. package/dist/{chunk-ZO6AXLEH.js → chunk-OCCHUEZB.js} +2 -2
  125. package/dist/{chunk-EILZG5VC.js → chunk-OU34IQXV.js} +2 -2
  126. package/dist/{chunk-2XDWWPTN.js → chunk-OZDFB22S.js} +2 -2
  127. package/dist/{chunk-UIN2BWDD.js → chunk-PTZQYCJ4.js} +2 -2
  128. package/dist/{chunk-7BY7V4YX.js → chunk-Q4WONDMJ.js} +4 -3
  129. package/dist/{chunk-7BY7V4YX.js.map → chunk-Q4WONDMJ.js.map} +1 -1
  130. package/dist/{chunk-Z7PBQPJ4.js → chunk-QJW4MZSW.js} +2 -2
  131. package/dist/{chunk-R7JAM2XF.js → chunk-R2MZCYA6.js} +3 -3
  132. package/dist/{chunk-TF77C7SV.js → chunk-SR5LNI6Q.js} +7 -5
  133. package/dist/chunk-SR5LNI6Q.js.map +1 -0
  134. package/dist/{chunk-LBWQ65SX.js → chunk-T42L3S6A.js} +4 -4
  135. package/dist/{chunk-J275IYMG.js → chunk-THVI4Y7X.js} +34 -7
  136. package/dist/chunk-THVI4Y7X.js.map +1 -0
  137. package/dist/{chunk-QOS5LBZN.js → chunk-TJFI3K2O.js} +15 -3
  138. package/dist/chunk-TJFI3K2O.js.map +1 -0
  139. package/dist/{chunk-2YI72KM3.js → chunk-UCKG36HO.js} +2 -2
  140. package/dist/{chunk-SIHSCCUQ.js → chunk-UFR6HX7A.js} +1 -1
  141. package/dist/{chunk-CDUUDBWJ.js → chunk-VFYRYFLL.js} +2 -2
  142. package/dist/{chunk-XRYZRW54.js → chunk-WDXD6ITO.js} +2 -2
  143. package/dist/{chunk-4KYOLI6M.js → chunk-XGM3VQWG.js} +120 -14
  144. package/dist/chunk-XGM3VQWG.js.map +1 -0
  145. package/dist/{chunk-MN4KB2A4.js → chunk-YDKF4MSJ.js} +3 -3
  146. package/dist/{chunk-YLDXWCZP.js → chunk-YHGCT462.js} +14 -9
  147. package/dist/chunk-YHGCT462.js.map +1 -0
  148. package/dist/{chunk-7YQ4IYS2.js → chunk-YOXVZJFM.js} +2 -2
  149. package/dist/{chunk-ZWXJBFZU.js → chunk-YZJM6CLF.js} +8 -8
  150. package/dist/chunk-ZCUTSMR2.js +61 -0
  151. package/dist/chunk-ZCUTSMR2.js.map +1 -0
  152. package/dist/{chunk-LUNJ3WFO.js → chunk-ZK4BFABK.js} +4 -4
  153. package/dist/{chunk-V3MXUL3D.js → chunk-ZPOHEB5Z.js} +329 -653
  154. package/dist/chunk-ZPOHEB5Z.js.map +1 -0
  155. package/dist/{chunk-RDFF2NAU.js → chunk-ZXBTTMGZ.js} +184 -88
  156. package/dist/chunk-ZXBTTMGZ.js.map +1 -0
  157. package/dist/{cli-cShQ13XG.d.ts → cli-DO3i14pM.d.ts} +5 -5
  158. package/dist/cli.d.ts +25 -25
  159. package/dist/cli.js +51 -48
  160. package/dist/coding/pre-action-gate.d.ts +2 -60
  161. package/dist/compounding/engine.d.ts +4 -2
  162. package/dist/compounding/engine.js +4 -4
  163. package/dist/compounding/preference-consolidator.d.ts +3 -1
  164. package/dist/compression-optimizer.d.ts +3 -1
  165. package/dist/config.d.ts +3 -1
  166. package/dist/config.js +10 -1
  167. package/dist/connectors/codex-materialize-runner.d.ts +3 -1
  168. package/dist/connectors/codex-materialize-runner.js +8 -5
  169. package/dist/connectors/codex-materialize.d.ts +16 -1
  170. package/dist/connectors/codex-materialize.js +10 -1
  171. package/dist/connectors/index.d.ts +3 -1
  172. package/dist/connectors/index.js +8 -5
  173. package/dist/consolidation-provenance-check.d.ts +4 -2
  174. package/dist/consolidation-undo.d.ts +4 -2
  175. package/dist/contradiction/index.d.ts +10 -270
  176. package/dist/contradiction/index.js +12 -7
  177. package/dist/{contradiction-review-QKJH5DKD.js → contradiction-review-WRVLRWHS.js} +6 -2
  178. package/dist/{contradiction-scan-VOTQRRSX.js → contradiction-scan-AKUWPX5N.js} +5 -3
  179. package/dist/converge-config.d.ts +3 -1
  180. package/dist/convergence-refresh.d.ts +4 -2
  181. package/dist/convergence-refresh.js +6 -6
  182. package/dist/conversation-index/backend.d.ts +3 -1
  183. package/dist/conversation-index/chunker.d.ts +3 -1
  184. package/dist/conversation-index/faiss-adapter.d.ts +3 -1
  185. package/dist/conversation-index/indexer.d.ts +3 -1
  186. package/dist/conversation-index/search.d.ts +3 -1
  187. package/dist/corpus-watermark.d.ts +3 -1
  188. package/dist/corpus-watermark.js +6 -6
  189. package/dist/cross-lingual-recall.d.ts +3 -1
  190. package/dist/day-summary.d.ts +3 -1
  191. package/dist/delinearize.d.ts +3 -1
  192. package/dist/dependency-propagation-config.d.ts +3 -1
  193. package/dist/{dependency-propagation-delivery-CsGg-VwS.d.ts → dependency-propagation-delivery-D23_x-s5.d.ts} +1 -1
  194. package/dist/direct-answer-wiring.d.ts +3 -1
  195. package/dist/direct-answer.d.ts +3 -1
  196. package/dist/embedding-fallback.d.ts +3 -1
  197. package/dist/enrichment/index.d.ts +3 -1
  198. package/dist/entity-origin-fields.d.ts +3 -1
  199. package/dist/entity-retrieval.d.ts +4 -2
  200. package/dist/entity-retrieval.js +4 -4
  201. package/dist/entity-schema.d.ts +3 -1
  202. package/dist/episodic-context.d.ts +3 -1
  203. package/dist/explicit-capture.d.ts +12 -12
  204. package/dist/explicit-capture.js +1 -1
  205. package/dist/external-wiki-access.d.ts +40 -40
  206. package/dist/external-wiki-access.js +22 -20
  207. package/dist/external-wiki-collection-registration.d.ts +3 -1
  208. package/dist/external-wiki-collection.d.ts +3 -1
  209. package/dist/external-wiki-mcp-tools.d.ts +40 -40
  210. package/dist/extraction-error-classification.d.ts +3 -1
  211. package/dist/extraction-faithfulness.d.ts +3 -1
  212. package/dist/extraction-judge-telemetry.d.ts +3 -1
  213. package/dist/extraction-judge-training.d.ts +3 -1
  214. package/dist/extraction-judge.d.ts +3 -1
  215. package/dist/extraction-judge.js +2 -2
  216. package/dist/extraction-liveness.d.ts +3 -1
  217. package/dist/extraction-normalization.d.ts +3 -1
  218. package/dist/extraction-prompt.d.ts +3 -1
  219. package/dist/extraction-source-grounding-rules.d.ts +3 -1
  220. package/dist/extraction-source-grounding.d.ts +3 -1
  221. package/dist/extraction.d.ts +3 -1
  222. package/dist/extraction.js +9 -7
  223. package/dist/fallback-llm.d.ts +3 -1
  224. package/dist/graph-dashboard-diff.d.ts +3 -1
  225. package/dist/graph-dashboard-key.d.ts +3 -1
  226. package/dist/graph-dashboard-parser.d.ts +3 -1
  227. package/dist/graph-edge-reinforcement.d.ts +3 -1
  228. package/dist/graph-path-reconstruction.d.ts +3 -1
  229. package/dist/graph-path-scoring.d.ts +3 -1
  230. package/dist/graph-snapshot.d.ts +3 -1
  231. package/dist/graph.d.ts +3 -1
  232. package/dist/harmonic-retrieval.js +1 -1
  233. package/dist/importance.d.ts +3 -1
  234. package/dist/importers/index.d.ts +3 -1
  235. package/dist/in-flight-reads.d.ts +3 -1
  236. package/dist/index--QhGIXF2.d.ts +284 -0
  237. package/dist/index.d.ts +314 -45
  238. package/dist/index.js +163 -88
  239. package/dist/intent.d.ts +3 -1
  240. package/dist/lcm/engine.d.ts +3 -1
  241. package/dist/lcm/index.d.ts +3 -1
  242. package/dist/lcm/tools.d.ts +3 -1
  243. package/dist/lifecycle.d.ts +3 -1
  244. package/dist/live-connectors-runner.d.ts +3 -1
  245. package/dist/local-llm.d.ts +3 -1
  246. package/dist/local-model-endpoint.d.ts +3 -1
  247. package/dist/maintenance/memory-governance.d.ts +3 -1
  248. package/dist/maintenance/memory-governance.js +4 -4
  249. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +4 -2
  250. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +4 -4
  251. package/dist/maintenance/rebuild-memory-projection.d.ts +4 -2
  252. package/dist/maintenance/rebuild-memory-projection.js +5 -5
  253. package/dist/{maintenance-jhMpeGne.d.ts → maintenance-PFvY1Pw_.d.ts} +3 -3
  254. package/dist/mcp-memory-inspector-app.d.ts +37 -37
  255. package/dist/memory-action-policy.d.ts +3 -1
  256. package/dist/memory-cache.d.ts +3 -1
  257. package/dist/memory-lifecycle-ledger-utils.d.ts +3 -1
  258. package/dist/memory-projection-store.d.ts +3 -1
  259. package/dist/memory-provenance.d.ts +3 -1
  260. package/dist/memory-snapshot.d.ts +3 -1
  261. package/dist/memory-subject-cli.d.ts +40 -40
  262. package/dist/memory-subject.d.ts +42 -42
  263. package/dist/memory-worth-outcomes.d.ts +4 -2
  264. package/dist/models-json.d.ts +3 -1
  265. package/dist/namespaces/migrate.d.ts +5 -3
  266. package/dist/namespaces/migrate.js +5 -5
  267. package/dist/namespaces/principal.d.ts +3 -1
  268. package/dist/namespaces/search.d.ts +3 -1
  269. package/dist/namespaces/storage.d.ts +5 -3
  270. package/dist/namespaces/storage.js +4 -4
  271. package/dist/native-knowledge.d.ts +3 -1
  272. package/dist/offline-sync-impression-drain.d.ts +3 -1
  273. package/dist/operator-doctor-corpus.d.ts +3 -1
  274. package/dist/operator-doctor-corpus.js +7 -7
  275. package/dist/operator-doctor-replica.d.ts +3 -1
  276. package/dist/operator-toolkit.d.ts +5 -3
  277. package/dist/operator-toolkit.js +19 -13
  278. package/dist/orchestration/compression-guideline-coordinator.d.ts +4 -2
  279. package/dist/orchestration/maintenance.d.ts +6 -4
  280. package/dist/orchestration/maintenance.js +10 -10
  281. package/dist/{orchestrator-DyGUC7re.d.ts → orchestrator-4wzJrPVm.d.ts} +23 -9
  282. package/dist/orchestrator.d.ts +12 -12
  283. package/dist/orchestrator.js +62 -60
  284. package/dist/patterns-cli.d.ts +3 -1
  285. package/dist/{pipeline-C25Oxtp1.d.ts → pipeline-CgXgdIrF.d.ts} +1 -1
  286. package/dist/policy-runtime.d.ts +3 -1
  287. package/dist/proactive-contention.d.ts +3 -1
  288. package/dist/provenance.d.ts +3 -1
  289. package/dist/{public-http-CMe7NQzj.d.ts → public-http-DhIXYBYI.d.ts} +1 -1
  290. package/dist/{qmd-DkDVCbgF.d.ts → qmd-BppGGxsi.d.ts} +1 -1
  291. package/dist/qmd-preflight.d.ts +4 -2
  292. package/dist/qmd-recall-cache.d.ts +3 -1
  293. package/dist/qmd.d.ts +4 -2
  294. package/dist/recall-concurrency-config.d.ts +3 -1
  295. package/dist/recall-disclosure-escalation.d.ts +3 -1
  296. package/dist/recall-explain-renderer.d.ts +3 -1
  297. package/dist/recall-explain-renderer.js +3 -3
  298. package/dist/recall-memory-map.d.ts +3 -1
  299. package/dist/recall-planner-llm.d.ts +3 -1
  300. package/dist/recall-state.d.ts +3 -1
  301. package/dist/recall-tag-filter.d.ts +3 -1
  302. package/dist/recall-timings.d.ts +3 -1
  303. package/dist/recall-xray-cli.d.ts +3 -1
  304. package/dist/recall-xray-cli.js +4 -4
  305. package/dist/recall-xray-renderer.d.ts +3 -1
  306. package/dist/recall-xray-renderer.js +3 -3
  307. package/dist/recall-xray.d.ts +3 -1
  308. package/dist/recall-xray.js +2 -2
  309. package/dist/reconcile/cursor.d.ts +3 -1
  310. package/dist/reconcile/manifest.d.ts +3 -1
  311. package/dist/reconcile/manifest.js +2 -2
  312. package/dist/reconcile/plan.d.ts +3 -1
  313. package/dist/replay/normalizers/chatgpt.d.ts +3 -1
  314. package/dist/replay/normalizers/claude.d.ts +3 -1
  315. package/dist/replay/normalizers/openclaw.d.ts +3 -1
  316. package/dist/replay/normalizers/shared.d.ts +3 -1
  317. package/dist/replay/runner.d.ts +3 -1
  318. package/dist/replay/types.d.ts +3 -1
  319. package/dist/replica-divergence.d.ts +3 -1
  320. package/dist/replica-peers-config.d.ts +3 -1
  321. package/dist/{resolution-MFY72STR.js → resolution-4552BNRV.js} +14 -4
  322. package/dist/resolve-auth-token.d.ts +3 -1
  323. package/dist/resume-bundles.js +8 -2
  324. package/dist/retrieval-agents.d.ts +4 -2
  325. package/dist/retrieval-tiers.d.ts +3 -1
  326. package/dist/routing/engine.d.ts +3 -1
  327. package/dist/routing/store.d.ts +3 -1
  328. package/dist/salvage-envelope.d.ts +3 -1
  329. package/dist/salvage-envelope.js +1 -1
  330. package/dist/schemas.d.ts +44 -44
  331. package/dist/{scope-profiles-B9xMoFO-.d.ts → scope-profiles-ChZUtxDU.d.ts} +1 -1
  332. package/dist/search/embed-helper.d.ts +3 -1
  333. package/dist/search/factory.d.ts +3 -1
  334. package/dist/search/index.d.ts +3 -1
  335. package/dist/search/lancedb-backend.d.ts +3 -1
  336. package/dist/search/meilisearch-backend.d.ts +3 -1
  337. package/dist/search/noop-backend.d.ts +3 -1
  338. package/dist/search/orama-backend.d.ts +3 -1
  339. package/dist/search/port.d.ts +3 -1
  340. package/dist/search/remote-backend.d.ts +3 -1
  341. package/dist/{semantic-TddhF0y7.d.ts → semantic-BalR6EXU.d.ts} +1 -1
  342. package/dist/{semantic-consolidation-C4uykW84.d.ts → semantic-consolidation-mSPwQSmF.d.ts} +1 -1
  343. package/dist/semantic-consolidation.d.ts +4 -2
  344. package/dist/semantic-consolidation.js +9 -6
  345. package/dist/semantic-rule-promotion.js +4 -4
  346. package/dist/semantic-rule-verifier.d.ts +3 -1
  347. package/dist/semantic-rule-verifier.js +4 -4
  348. package/dist/{service-DCZDZNcV.d.ts → service-BICWLwSP.d.ts} +2 -2
  349. package/dist/session-observer-bands.d.ts +3 -1
  350. package/dist/session-observer-state.d.ts +3 -1
  351. package/dist/shared-context/manager.d.ts +3 -1
  352. package/dist/signal.d.ts +3 -1
  353. package/dist/skills-registry.js +4 -56
  354. package/dist/skills-registry.js.map +1 -1
  355. package/dist/source-agent-qualifier.d.ts +3 -1
  356. package/dist/source-agent-qualifier.js +8 -5
  357. package/dist/{storage-CcKmEjL8.d.ts → storage-B7urx1K3.d.ts} +1 -1
  358. package/dist/storage.d.ts +4 -2
  359. package/dist/storage.js +6 -6
  360. package/dist/subject-config.d.ts +3 -1
  361. package/dist/summarizer.d.ts +3 -1
  362. package/dist/summary-snapshot.d.ts +3 -1
  363. package/dist/support-passport/index.d.ts +43 -43
  364. package/dist/support-passport/index.js +24 -22
  365. package/dist/temporal-supersession.d.ts +4 -2
  366. package/dist/temporal-timeline-recall.d.ts +3 -1
  367. package/dist/temporal-validity.d.ts +3 -1
  368. package/dist/threading.d.ts +3 -1
  369. package/dist/tier-migration.d.ts +4 -2
  370. package/dist/tier-routing.d.ts +3 -1
  371. package/dist/topics.d.ts +3 -1
  372. package/dist/transcript.d.ts +3 -1
  373. package/dist/transfer/types.d.ts +20 -20
  374. package/dist/trust-score-stage.d.ts +3 -1
  375. package/dist/trust-score.d.ts +3 -1
  376. package/dist/{types-Pi0lfaEt.d.ts → types-ETU5N6nB.d.ts} +433 -7
  377. package/dist/types.d.ts +3 -1
  378. package/dist/types.js +1 -1
  379. package/dist/utility-runtime.d.ts +3 -1
  380. package/dist/verified-recall.js +4 -4
  381. package/dist/who-knows-cli.d.ts +40 -40
  382. package/dist/who-knows-cli.js +5 -5
  383. package/dist/who-knows.d.ts +42 -42
  384. package/dist/who-knows.js +4 -4
  385. package/dist/write-envelope.d.ts +3 -1
  386. package/dist/write-envelope.js +1 -1
  387. package/package.json +2 -2
  388. package/src/access-boundary.ts +4 -0
  389. package/src/access-http.ts +6 -5
  390. package/src/access-mcp-admin-tools.ts +24 -0
  391. package/src/access-mcp-output-schemas.ts +14 -0
  392. package/src/access-mcp.ts +2 -2
  393. package/src/access-operations-batch.ts +5 -0
  394. package/src/access-service.ts +27 -0
  395. package/src/access-surface-catalog.test.ts +24 -0
  396. package/src/access-surface-catalog.ts +4 -0
  397. package/src/cli/skills-commands.ts +150 -0
  398. package/src/cli.ts +4 -2
  399. package/src/coding/action-gate.test.ts +341 -0
  400. package/src/coding/action-gate.ts +556 -0
  401. package/src/config.ts +9 -2
  402. package/src/connectors/codex-materialize-runner.ts +16 -0
  403. package/src/connectors/codex-materialize-skills.test.ts +141 -0
  404. package/src/connectors/codex-materialize.ts +58 -40
  405. package/src/connectors/materialize-paths.ts +50 -0
  406. package/src/connectors/materialize-skills.ts +127 -0
  407. package/src/contradiction/contradiction-review.ts +50 -4
  408. package/src/contradiction/contradiction-scan.ts +14 -3
  409. package/src/contradiction/resolution.ts +50 -2
  410. package/src/index.ts +9 -13
  411. package/src/orchestration/recall-rerank-coordinator.ts +123 -4
  412. package/src/orchestration/recall-result-formatter.ts +6 -2
  413. package/src/orchestration/recall-search-pipeline.ts +14 -1
  414. package/src/preferences/drift-config.ts +118 -0
  415. package/src/preferences/drift-recall.ts +133 -0
  416. package/src/preferences/drift-types.ts +87 -0
  417. package/src/preferences/index.ts +12 -0
  418. package/src/preferences/preference-drift.test.ts +690 -0
  419. package/src/preferences/preference-drift.ts +724 -0
  420. package/src/procedural/skill-io.test.ts +190 -0
  421. package/src/procedural/skill-io.ts +220 -0
  422. package/src/procedural/skill-projection.test.ts +214 -0
  423. package/src/procedural/skill-projection.ts +356 -0
  424. package/src/review/review-deck-access.test.ts +325 -0
  425. package/src/review/review-deck-http-base.ts +133 -0
  426. package/src/review/review-deck-mutation.test.ts +417 -0
  427. package/src/review/review-deck-mutation.ts +677 -0
  428. package/src/review/review-deck-snapshot.ts +196 -0
  429. package/src/review/review-deck-surface.ts +117 -0
  430. package/src/review/review-deck.test.ts +347 -0
  431. package/src/review/review-deck.ts +311 -0
  432. package/src/storage.ts +4 -6
  433. package/src/types.ts +9 -6
  434. package/dist/chunk-35NN3ZFA.js.map +0 -1
  435. package/dist/chunk-4KYOLI6M.js.map +0 -1
  436. package/dist/chunk-BWLRUMOG.js.map +0 -1
  437. package/dist/chunk-J275IYMG.js.map +0 -1
  438. package/dist/chunk-LGO6A7GJ.js.map +0 -1
  439. package/dist/chunk-QOS5LBZN.js.map +0 -1
  440. package/dist/chunk-RDFF2NAU.js.map +0 -1
  441. package/dist/chunk-SB7D4BT7.js.map +0 -1
  442. package/dist/chunk-SBDCZ2AX.js.map +0 -1
  443. package/dist/chunk-TF77C7SV.js.map +0 -1
  444. package/dist/chunk-TZNQUNKL.js.map +0 -1
  445. package/dist/chunk-V3MXUL3D.js.map +0 -1
  446. package/dist/chunk-XCTXS7VY.js +0 -402
  447. package/dist/chunk-XCTXS7VY.js.map +0 -1
  448. package/dist/chunk-YLDXWCZP.js.map +0 -1
  449. /package/dist/{auto-sync-H64ZCNIR.js.map → auto-sync-XVMLL2RH.js.map} +0 -0
  450. /package/dist/{chunk-YB42WZCY.js.map → chunk-2IXQSGCU.js.map} +0 -0
  451. /package/dist/{chunk-PE255F4T.js.map → chunk-2MVTAIL3.js.map} +0 -0
  452. /package/dist/{chunk-GDFVPUJ5.js.map → chunk-3NH3VP3U.js.map} +0 -0
  453. /package/dist/{chunk-GNCCUR6K.js.map → chunk-AXGFOFNY.js.map} +0 -0
  454. /package/dist/{chunk-5YQ63T4B.js.map → chunk-BK5G2MHO.js.map} +0 -0
  455. /package/dist/{chunk-LZH5FR2W.js.map → chunk-CQBIN77D.js.map} +0 -0
  456. /package/dist/{chunk-NKKD4ZAU.js.map → chunk-DORFF5N5.js.map} +0 -0
  457. /package/dist/{chunk-SQI57UCJ.js.map → chunk-DUEDOYZD.js.map} +0 -0
  458. /package/dist/{chunk-5NM4OH4P.js.map → chunk-DUZARALI.js.map} +0 -0
  459. /package/dist/{chunk-2E36UXVW.js.map → chunk-ECLJ4LA2.js.map} +0 -0
  460. /package/dist/{chunk-IID2CMUU.js.map → chunk-GHD2LLG4.js.map} +0 -0
  461. /package/dist/{chunk-ZQHI2BZB.js.map → chunk-HF5BUTI6.js.map} +0 -0
  462. /package/dist/{chunk-3DVBKTSO.js.map → chunk-HSZMX3ZJ.js.map} +0 -0
  463. /package/dist/{chunk-S2DPMJXH.js.map → chunk-I23ZHYSL.js.map} +0 -0
  464. /package/dist/{chunk-ODZG724P.js.map → chunk-I2HTKOOP.js.map} +0 -0
  465. /package/dist/{chunk-NTWN6HB2.js.map → chunk-IURMJBGP.js.map} +0 -0
  466. /package/dist/{chunk-OCZIYAE5.js.map → chunk-IWKGOCL6.js.map} +0 -0
  467. /package/dist/{chunk-UXO5IMBK.js.map → chunk-J3ATBB7M.js.map} +0 -0
  468. /package/dist/{chunk-Y7DK7HHJ.js.map → chunk-JPAKBNTM.js.map} +0 -0
  469. /package/dist/{chunk-SPUJNJJC.js.map → chunk-KFIOPZ25.js.map} +0 -0
  470. /package/dist/{chunk-JYYBA7TF.js.map → chunk-KOO37E4Y.js.map} +0 -0
  471. /package/dist/{chunk-OTHZWLUD.js.map → chunk-KPB2QHJZ.js.map} +0 -0
  472. /package/dist/{chunk-CT56C22C.js.map → chunk-LYBIHM4N.js.map} +0 -0
  473. /package/dist/{chunk-3I7ASZN3.js.map → chunk-MFOSZUIT.js.map} +0 -0
  474. /package/dist/{chunk-DZUJ46DO.js.map → chunk-NLEH4RTB.js.map} +0 -0
  475. /package/dist/{chunk-ZO6AXLEH.js.map → chunk-OCCHUEZB.js.map} +0 -0
  476. /package/dist/{chunk-EILZG5VC.js.map → chunk-OU34IQXV.js.map} +0 -0
  477. /package/dist/{chunk-2XDWWPTN.js.map → chunk-OZDFB22S.js.map} +0 -0
  478. /package/dist/{chunk-UIN2BWDD.js.map → chunk-PTZQYCJ4.js.map} +0 -0
  479. /package/dist/{chunk-Z7PBQPJ4.js.map → chunk-QJW4MZSW.js.map} +0 -0
  480. /package/dist/{chunk-R7JAM2XF.js.map → chunk-R2MZCYA6.js.map} +0 -0
  481. /package/dist/{chunk-LBWQ65SX.js.map → chunk-T42L3S6A.js.map} +0 -0
  482. /package/dist/{chunk-2YI72KM3.js.map → chunk-UCKG36HO.js.map} +0 -0
  483. /package/dist/{chunk-SIHSCCUQ.js.map → chunk-UFR6HX7A.js.map} +0 -0
  484. /package/dist/{chunk-CDUUDBWJ.js.map → chunk-VFYRYFLL.js.map} +0 -0
  485. /package/dist/{chunk-XRYZRW54.js.map → chunk-WDXD6ITO.js.map} +0 -0
  486. /package/dist/{chunk-MN4KB2A4.js.map → chunk-YDKF4MSJ.js.map} +0 -0
  487. /package/dist/{chunk-7YQ4IYS2.js.map → chunk-YOXVZJFM.js.map} +0 -0
  488. /package/dist/{chunk-ZWXJBFZU.js.map → chunk-YZJM6CLF.js.map} +0 -0
  489. /package/dist/{chunk-LUNJ3WFO.js.map → chunk-ZK4BFABK.js.map} +0 -0
  490. /package/dist/{contradiction-review-QKJH5DKD.js.map → contradiction-review-WRVLRWHS.js.map} +0 -0
  491. /package/dist/{contradiction-scan-VOTQRRSX.js.map → contradiction-scan-AKUWPX5N.js.map} +0 -0
  492. /package/dist/{resolution-MFY72STR.js.map → resolution-4552BNRV.js.map} +0 -0
@@ -11,6 +11,11 @@ import {
11
11
  import {
12
12
  parseLocationConfig
13
13
  } from "./chunk-7PHI6GUI.js";
14
+ import {
15
+ PRE_ACTION_GATE_DEFAULT_TIMEOUT_MS,
16
+ normalizeActionIntent,
17
+ sanitizePayloadString
18
+ } from "./chunk-D2YNNDML.js";
14
19
  import {
15
20
  parseSubjectRuntimeConfig
16
21
  } from "./chunk-AAXJNINV.js";
@@ -67,6 +72,9 @@ import {
67
72
  import {
68
73
  parseExternalWikiRecallGuard
69
74
  } from "./chunk-JV3C2MNQ.js";
75
+ import {
76
+ parseSkillProjectionConfig
77
+ } from "./chunk-236PXYG7.js";
70
78
  import {
71
79
  parseProvenanceConfig
72
80
  } from "./chunk-NXH34IPL.js";
@@ -167,6 +175,87 @@ function parseProceduralMaintenanceConfig(raw) {
167
175
  };
168
176
  }
169
177
 
178
+ // src/preferences/drift-config.ts
179
+ var DRIFT_DETECTION_DEFAULTS = {
180
+ enabled: false,
181
+ minAgeDays: 60,
182
+ lookbackDays: 45,
183
+ maxCandidatesPerRun: 25,
184
+ recallDamping: false,
185
+ stalePenalty: 0.8,
186
+ annotateAfterDays: 0
187
+ };
188
+ function parseFlag(src, key, fallback) {
189
+ const value = src[key];
190
+ if (value === void 0 || value === null) return fallback;
191
+ const coerced = coerceBool(value);
192
+ if (coerced === void 0) {
193
+ throw new Error(
194
+ `driftDetection.${key} must be a boolean or one of "true"/"false"/"1"/"0"/"yes"/"no"/"on"/"off" (got ${JSON.stringify(value)}).`
195
+ );
196
+ }
197
+ return coerced;
198
+ }
199
+ function parseDayCount(src, key, fallback) {
200
+ const value = src[key];
201
+ if (value === void 0 || value === null) return fallback;
202
+ const coerced = coerceNumber(value);
203
+ if (coerced === void 0 || !Number.isFinite(coerced)) {
204
+ throw new Error(`driftDetection.${key} must be a finite number (got ${JSON.stringify(value)}).`);
205
+ }
206
+ if (!Number.isInteger(coerced)) {
207
+ throw new Error(`driftDetection.${key} must be an integer (got ${JSON.stringify(value)}).`);
208
+ }
209
+ if (coerced < 0 || coerced > 36500) {
210
+ throw new Error(`driftDetection.${key} must be between 0 and 36500 (got ${JSON.stringify(value)}).`);
211
+ }
212
+ return coerced;
213
+ }
214
+ function parseDriftDetectionConfig(raw) {
215
+ if (raw === void 0 || raw === null) return { ...DRIFT_DETECTION_DEFAULTS };
216
+ if (typeof raw !== "object" || Array.isArray(raw)) {
217
+ throw new Error(
218
+ `driftDetection must be an object (got ${JSON.stringify(raw)}). Omit the key to keep drift detection disabled (issue #2371).`
219
+ );
220
+ }
221
+ const src = raw;
222
+ const rawMax = src.maxCandidatesPerRun;
223
+ let maxCandidatesPerRun = DRIFT_DETECTION_DEFAULTS.maxCandidatesPerRun;
224
+ if (rawMax !== void 0 && rawMax !== null) {
225
+ const coerced = coerceNumber(rawMax);
226
+ if (coerced === void 0 || !Number.isInteger(coerced) || coerced < 0) {
227
+ throw new Error(
228
+ `driftDetection.maxCandidatesPerRun must be an integer >= 0 (got ${JSON.stringify(rawMax)}). Use 0 to disable the scan.`
229
+ );
230
+ }
231
+ maxCandidatesPerRun = coerced;
232
+ }
233
+ const rawPenalty = src.stalePenalty;
234
+ let stalePenalty = DRIFT_DETECTION_DEFAULTS.stalePenalty;
235
+ if (rawPenalty !== void 0 && rawPenalty !== null) {
236
+ const coerced = coerceNumber(rawPenalty);
237
+ if (coerced === void 0 || !Number.isFinite(coerced) || coerced <= 0 || coerced > 1) {
238
+ throw new Error(
239
+ `driftDetection.stalePenalty must be a number in (0, 1] (got ${JSON.stringify(rawPenalty)}). Use 1 to disable damping without changing the flag.`
240
+ );
241
+ }
242
+ stalePenalty = coerced;
243
+ }
244
+ return {
245
+ enabled: parseFlag(src, "enabled", DRIFT_DETECTION_DEFAULTS.enabled),
246
+ minAgeDays: parseDayCount(src, "minAgeDays", DRIFT_DETECTION_DEFAULTS.minAgeDays),
247
+ lookbackDays: parseDayCount(src, "lookbackDays", DRIFT_DETECTION_DEFAULTS.lookbackDays),
248
+ maxCandidatesPerRun,
249
+ recallDamping: parseFlag(src, "recallDamping", DRIFT_DETECTION_DEFAULTS.recallDamping),
250
+ stalePenalty,
251
+ annotateAfterDays: parseDayCount(
252
+ src,
253
+ "annotateAfterDays",
254
+ DRIFT_DETECTION_DEFAULTS.annotateAfterDays
255
+ )
256
+ };
257
+ }
258
+
170
259
  // src/wearables/config.ts
171
260
  var KNOWN_WEARABLE_SOURCE_IDS = ["limitless", "bee", "omi"];
172
261
  var MEMORY_MODES = ["off", "review", "auto", "smart"];
@@ -951,6 +1040,341 @@ function parseOkfConfig(raw) {
951
1040
  };
952
1041
  }
953
1042
 
1043
+ // src/coding/action-gate.ts
1044
+ var ACTION_GATE_DEFAULT_MAX_ADVISORIES_PER_TURN = 3;
1045
+ var MAX_ADVISORY_CHARS = 400;
1046
+ var MAX_ACTION_TERMS = 24;
1047
+ var MIN_TERM_CHARS = 3;
1048
+ var MIN_TERM_OVERLAP_RATIO = 0.6;
1049
+ var MAX_TRACKED_SESSIONS = 200;
1050
+ var MAX_TRACKED_IDS_PER_SESSION = 200;
1051
+ var ACTION_GATE_DEFAULTS = {
1052
+ enabled: false,
1053
+ timeoutMs: PRE_ACTION_GATE_DEFAULT_TIMEOUT_MS,
1054
+ maxAdvisoriesPerTurn: ACTION_GATE_DEFAULT_MAX_ADVISORIES_PER_TURN
1055
+ };
1056
+ function parseActionGateConfig(raw) {
1057
+ if (raw !== void 0 && (raw === null || typeof raw !== "object" || Array.isArray(raw))) {
1058
+ throw new Error(
1059
+ `actionGate must be an object (got ${JSON.stringify(raw)}). Use actionGate: { enabled: true } to opt in.`
1060
+ );
1061
+ }
1062
+ const block = raw ?? {};
1063
+ const rawEnabled = block.enabled;
1064
+ let enabled = ACTION_GATE_DEFAULTS.enabled;
1065
+ if (rawEnabled !== void 0) {
1066
+ const coerced = coerceBool(rawEnabled);
1067
+ if (coerced === void 0) {
1068
+ throw new Error(
1069
+ `actionGate.enabled must be a boolean or one of "true"/"false"/"1"/"0"/"yes"/"no"/"on"/"off" (got ${JSON.stringify(rawEnabled)}).`
1070
+ );
1071
+ }
1072
+ enabled = coerced;
1073
+ }
1074
+ const rawTimeout = coerceNumber(block.timeoutMs);
1075
+ const timeoutMs = rawTimeout !== void 0 && Number.isFinite(rawTimeout) ? Math.min(5e3, Math.max(1, Math.floor(rawTimeout))) : ACTION_GATE_DEFAULTS.timeoutMs;
1076
+ const rawMax = coerceNumber(block.maxAdvisoriesPerTurn);
1077
+ const maxAdvisoriesPerTurn = rawMax !== void 0 && Number.isFinite(rawMax) ? Math.min(20, Math.max(0, Math.floor(rawMax))) : ACTION_GATE_DEFAULTS.maxAdvisoriesPerTurn;
1078
+ return { enabled, timeoutMs, maxAdvisoriesPerTurn };
1079
+ }
1080
+ function actionTermsFor(intent) {
1081
+ const raw = intent.kind === "command" ? [intent.command, ...intent.args ?? []] : [intent.filePath, intent.editKind, intent.symbol ?? "", intent.range ?? ""];
1082
+ const terms = [];
1083
+ const seen = /* @__PURE__ */ new Set();
1084
+ for (const piece of raw) {
1085
+ for (const token of sanitizePayloadString(piece ?? "").toLowerCase().split(/[^a-z0-9._-]+/)) {
1086
+ const term = token.replace(/^[._-]+|[._-]+$/g, "");
1087
+ if (term.length < MIN_TERM_CHARS || seen.has(term)) continue;
1088
+ seen.add(term);
1089
+ terms.push(term);
1090
+ if (terms.length >= MAX_ACTION_TERMS) return terms;
1091
+ }
1092
+ }
1093
+ return terms;
1094
+ }
1095
+ function isFailureClassMemory(memory) {
1096
+ const fm = memory.frontmatter;
1097
+ if (fm.status !== void 0 && fm.status !== "active") return false;
1098
+ if (fm.category === "correction") return true;
1099
+ if (fm.structuredAttributes?.needsRepair === "true") return true;
1100
+ const failures = typeof fm.mw_fail === "number" ? fm.mw_fail : 0;
1101
+ const successes = typeof fm.mw_success === "number" ? fm.mw_success : 0;
1102
+ return failures > 0 && failures > successes;
1103
+ }
1104
+ function createFailureMemoryCandidateSource(deps) {
1105
+ return {
1106
+ id: "failure-memory",
1107
+ async find(query) {
1108
+ if (query.actionTerms.length === 0) return { ok: true, candidates: [] };
1109
+ let memories;
1110
+ try {
1111
+ memories = await deps.listMemories({
1112
+ namespace: query.namespace,
1113
+ memoryDir: query.memoryDir,
1114
+ signal: query.signal
1115
+ });
1116
+ } catch (error) {
1117
+ return { ok: false, reason: error instanceof Error ? error.message : String(error) };
1118
+ }
1119
+ const required = Math.max(1, Math.ceil(query.actionTerms.length * MIN_TERM_OVERLAP_RATIO));
1120
+ const candidates = [];
1121
+ for (const memory of memories) {
1122
+ if (!isFailureClassMemory(memory)) continue;
1123
+ const haystack = `${memory.content} ${(memory.frontmatter.tags ?? []).join(" ")}`.toLowerCase();
1124
+ let hits = 0;
1125
+ for (const term of query.actionTerms) if (haystack.includes(term)) hits += 1;
1126
+ if (hits < required) continue;
1127
+ candidates.push({
1128
+ memoryId: memory.frontmatter.id,
1129
+ score: hits,
1130
+ advisoryText: `[ActionGate] A stored failure memory matches this action: "${memory.content}".`
1131
+ });
1132
+ }
1133
+ candidates.sort((left, right) => {
1134
+ const byScore = (right.score ?? 0) - (left.score ?? 0);
1135
+ return byScore !== 0 ? byScore : left.memoryId.localeCompare(right.memoryId);
1136
+ });
1137
+ return { ok: true, candidates };
1138
+ }
1139
+ };
1140
+ }
1141
+ function createTrajectoryCandidateSource(gate) {
1142
+ return {
1143
+ id: "causal-trajectory",
1144
+ async find(query) {
1145
+ const result = await gate.evaluate({
1146
+ sessionKey: query.sessionKey,
1147
+ strategyId: query.strategyId,
1148
+ intent: query.intent,
1149
+ codingContext: query.codingContext,
1150
+ memoryDir: query.memoryDir,
1151
+ causalTrajectoryStoreDir: query.causalTrajectoryStoreDir,
1152
+ signal: query.signal
1153
+ });
1154
+ if (result.status === "ERROR_FAIL_OPEN") {
1155
+ return { ok: false, reason: result.reason ?? "pre-action gate failed open" };
1156
+ }
1157
+ if (result.status !== "MATCH_WARN" || !result.matchedTrajectoryId || !result.advisoryText) {
1158
+ return { ok: true, candidates: [] };
1159
+ }
1160
+ return {
1161
+ ok: true,
1162
+ candidates: [
1163
+ {
1164
+ memoryId: result.matchedTrajectoryId,
1165
+ // Trajectory matches are exact fingerprint hits: rank above lexical ones.
1166
+ score: Number.MAX_SAFE_INTEGER,
1167
+ advisoryText: result.advisoryText
1168
+ }
1169
+ ]
1170
+ };
1171
+ }
1172
+ };
1173
+ }
1174
+ var ActionGateService = class {
1175
+ config;
1176
+ sources;
1177
+ audit;
1178
+ clock;
1179
+ now;
1180
+ sessions = /* @__PURE__ */ new Map();
1181
+ constructor(config, deps = {}) {
1182
+ this.config = config;
1183
+ this.sources = deps.sources ?? [];
1184
+ this.audit = deps.audit;
1185
+ this.clock = deps.clock ?? Date.now;
1186
+ this.now = deps.now ?? (() => /* @__PURE__ */ new Date());
1187
+ }
1188
+ /**
1189
+ * Memory ids the gate already delivered in this session. Turn-start recall
1190
+ * filters these out before its own cap, honouring the filter-then-cap order.
1191
+ */
1192
+ suppressedForTurnStart(sessionKey) {
1193
+ if (!this.config.enabled) return [];
1194
+ return [...this.sessions.get(sessionKey)?.deliveredByGate ?? []];
1195
+ }
1196
+ /** Record ids turn-start recall injected, so the gate will not repeat them. */
1197
+ noteTurnStartDelivery(sessionKey, memoryIds) {
1198
+ if (!this.config.enabled || memoryIds.length === 0) return;
1199
+ const state = this.sessionState(sessionKey, void 0);
1200
+ for (const id of memoryIds) this.addTracked(state.deliveredByTurnStart, id);
1201
+ }
1202
+ resetSession(sessionKey) {
1203
+ this.sessions.delete(sessionKey);
1204
+ }
1205
+ async evaluate(request) {
1206
+ const startedAt = this.clock();
1207
+ if (!this.config.enabled) {
1208
+ return {
1209
+ status: "DISABLED",
1210
+ advisories: [],
1211
+ suppressedIds: [],
1212
+ degradations: [],
1213
+ reason: "actionGate.enabled is false",
1214
+ latencyMs: 0
1215
+ };
1216
+ }
1217
+ if (this.config.maxAdvisoriesPerTurn === 0) {
1218
+ return this.finish(request, startedAt, {
1219
+ status: "DISABLED",
1220
+ advisories: [],
1221
+ suppressedIds: [],
1222
+ degradations: [],
1223
+ reason: "actionGate.maxAdvisoriesPerTurn is 0"
1224
+ });
1225
+ }
1226
+ let fingerprint;
1227
+ try {
1228
+ fingerprint = normalizeActionIntent(request.intent, request.strategyId, request.codingContext).fingerprint;
1229
+ } catch (error) {
1230
+ return this.finish(request, startedAt, {
1231
+ status: "ERROR_FAIL_OPEN",
1232
+ advisories: [],
1233
+ suppressedIds: [],
1234
+ degradations: [],
1235
+ reason: error instanceof Error ? error.message : String(error)
1236
+ });
1237
+ }
1238
+ const deadline = startedAt + this.config.timeoutMs;
1239
+ const collected = await this.collect(request, fingerprint, deadline);
1240
+ const state = this.sessionState(request.sessionKey, request.turnId);
1241
+ const advisories = [];
1242
+ const suppressedIds = [];
1243
+ for (const { sourceId, candidate } of collected.candidates) {
1244
+ if (state.deliveredThisTurn.has(candidate.memoryId) || state.deliveredByTurnStart.has(candidate.memoryId)) {
1245
+ suppressedIds.push(candidate.memoryId);
1246
+ continue;
1247
+ }
1248
+ if (advisories.length >= this.config.maxAdvisoriesPerTurn) {
1249
+ suppressedIds.push(candidate.memoryId);
1250
+ continue;
1251
+ }
1252
+ advisories.push({
1253
+ memoryId: candidate.memoryId,
1254
+ sourceId,
1255
+ text: sanitizePayloadString(candidate.advisoryText).replace(/\s+/g, " ").slice(0, MAX_ADVISORY_CHARS)
1256
+ });
1257
+ this.addTracked(state.deliveredThisTurn, candidate.memoryId);
1258
+ this.addTracked(state.deliveredByGate, candidate.memoryId);
1259
+ }
1260
+ const status = advisories.length > 0 ? "MATCH_WARN" : collected.degradations.length > 0 ? "ERROR_FAIL_OPEN" : "NO_MATCH";
1261
+ return this.finish(request, startedAt, {
1262
+ status,
1263
+ advisories,
1264
+ suppressedIds,
1265
+ degradations: collected.degradations,
1266
+ fingerprint,
1267
+ reason: status === "ERROR_FAIL_OPEN" ? collected.degradations[0] : void 0
1268
+ });
1269
+ }
1270
+ async collect(request, fingerprint, deadline) {
1271
+ if (this.sources.length === 0) return { candidates: [], degradations: [] };
1272
+ const timeoutAbort = new AbortController();
1273
+ const signal = request.signal ? AbortSignal.any([request.signal, timeoutAbort.signal]) : timeoutAbort.signal;
1274
+ const query = {
1275
+ sessionKey: request.sessionKey,
1276
+ fingerprint,
1277
+ actionTerms: actionTermsFor(request.intent),
1278
+ strategyId: request.strategyId,
1279
+ intent: request.intent,
1280
+ codingContext: request.codingContext,
1281
+ memoryDir: request.memoryDir,
1282
+ namespace: request.namespace,
1283
+ causalTrajectoryStoreDir: request.causalTrajectoryStoreDir,
1284
+ signal
1285
+ };
1286
+ const remaining = Math.max(1, deadline - this.clock());
1287
+ let onTimeout;
1288
+ const timeoutResult = new Promise((resolve) => {
1289
+ onTimeout = resolve;
1290
+ });
1291
+ const timer = setTimeout(() => {
1292
+ timeoutAbort.abort();
1293
+ onTimeout({ ok: false, reason: `action gate timed out after ${this.config.timeoutMs}ms` });
1294
+ }, remaining);
1295
+ try {
1296
+ const settled = await Promise.all(
1297
+ this.sources.map(async (source) => {
1298
+ let result;
1299
+ try {
1300
+ result = await Promise.race([source.find(query), timeoutResult]);
1301
+ } catch (error) {
1302
+ result = { ok: false, reason: error instanceof Error ? error.message : String(error) };
1303
+ }
1304
+ return { source, result };
1305
+ })
1306
+ );
1307
+ const candidates = [];
1308
+ const degradations = [];
1309
+ for (const { source, result } of settled) {
1310
+ if (!result.ok) {
1311
+ degradations.push(`${source.id}: ${result.reason}`);
1312
+ continue;
1313
+ }
1314
+ for (const candidate of result.candidates) candidates.push({ sourceId: source.id, candidate });
1315
+ }
1316
+ candidates.sort((left, right) => {
1317
+ const byScore = (right.candidate.score ?? 0) - (left.candidate.score ?? 0);
1318
+ if (byScore !== 0) return byScore;
1319
+ const bySource = left.sourceId.localeCompare(right.sourceId);
1320
+ return bySource !== 0 ? bySource : left.candidate.memoryId.localeCompare(right.candidate.memoryId);
1321
+ });
1322
+ return { candidates, degradations };
1323
+ } finally {
1324
+ clearTimeout(timer);
1325
+ }
1326
+ }
1327
+ finish(request, startedAt, decision) {
1328
+ const latencyMs = Math.max(0, this.clock() - startedAt);
1329
+ const result = { ...decision, latencyMs };
1330
+ if (this.audit) {
1331
+ const record = {
1332
+ ts: this.now().toISOString(),
1333
+ sessionKey: request.sessionKey,
1334
+ turnId: request.turnId,
1335
+ status: result.status,
1336
+ latencyMs,
1337
+ fingerprint: result.fingerprint,
1338
+ deliveredIds: result.advisories.map((advisory) => advisory.memoryId),
1339
+ suppressedIds: result.suppressedIds,
1340
+ degradations: result.degradations,
1341
+ reason: result.reason
1342
+ };
1343
+ void Promise.resolve().then(() => this.audit?.(record)).catch(() => void 0);
1344
+ }
1345
+ return result;
1346
+ }
1347
+ sessionState(sessionKey, turnId) {
1348
+ let state = this.sessions.get(sessionKey);
1349
+ if (!state) {
1350
+ if (this.sessions.size >= MAX_TRACKED_SESSIONS) {
1351
+ const oldest = this.sessions.keys().next().value;
1352
+ if (oldest !== void 0) this.sessions.delete(oldest);
1353
+ }
1354
+ state = {
1355
+ turnId: turnId ?? "",
1356
+ deliveredThisTurn: /* @__PURE__ */ new Set(),
1357
+ deliveredByGate: /* @__PURE__ */ new Set(),
1358
+ deliveredByTurnStart: /* @__PURE__ */ new Set()
1359
+ };
1360
+ this.sessions.set(sessionKey, state);
1361
+ }
1362
+ if (turnId !== void 0 && state.turnId !== turnId) {
1363
+ state.turnId = turnId;
1364
+ state.deliveredThisTurn.clear();
1365
+ }
1366
+ return state;
1367
+ }
1368
+ addTracked(set, value) {
1369
+ if (set.has(value)) return;
1370
+ if (set.size >= MAX_TRACKED_IDS_PER_SESSION) {
1371
+ const oldest = set.values().next().value;
1372
+ if (oldest !== void 0) set.delete(oldest);
1373
+ }
1374
+ set.add(value);
1375
+ }
1376
+ };
1377
+
954
1378
  // src/chat/chat-config.ts
955
1379
  var DEFAULT_CHAT_CONFIG = {
956
1380
  enabled: false,
@@ -1760,6 +2184,7 @@ function parseConfig(raw, rawOperatorConfig, runtimeSet) {
1760
2184
  const recallMaxCoerced = coerceNumber(rawProcedural.recallMaxProcedures);
1761
2185
  const recallMaxProcedures = recallMaxCoerced !== void 0 && Number.isFinite(recallMaxCoerced) ? Math.min(10, Math.max(1, Math.floor(recallMaxCoerced))) : 2;
1762
2186
  const maintenance = parseProceduralMaintenanceConfig(rawProcedural.maintenance);
2187
+ const skillProjection = parseSkillProjectionConfig(rawProcedural.skillProjection);
1763
2188
  const rawEnabledValue = rawProcedural.enabled;
1764
2189
  let proceduralEnabled;
1765
2190
  if (rawEnabledValue === void 0) {
@@ -1783,7 +2208,8 @@ function parseConfig(raw, rawOperatorConfig, runtimeSet) {
1783
2208
  autoPromoteEnabled: coerceBool(rawProcedural.autoPromoteEnabled) === true,
1784
2209
  lookbackDays,
1785
2210
  proceduralMiningCronAutoRegister: coerceBool(rawProcedural.proceduralMiningCronAutoRegister) === true,
1786
- recallMaxProcedures
2211
+ recallMaxProcedures,
2212
+ skillProjection
1787
2213
  };
1788
2214
  const wearables = parseWearablesConfig(cfg.wearables);
1789
2215
  const { activity, meetings, provenance } = parseCaptureCompanionConfigs(cfg);
@@ -2160,6 +2586,8 @@ function parseConfig(raw, rawOperatorConfig, runtimeSet) {
2160
2586
  contradictionAutoResolve: cfg.contradictionAutoResolve !== false,
2161
2587
  // Contradiction Scan cron (issue #520)
2162
2588
  contradictionScan: parseContradictionScanConfig(cfg.contradictionScan),
2589
+ // Preference drift detection (issue #2371)
2590
+ driftDetection: parseDriftDetectionConfig(cfg.driftDetection),
2163
2591
  dependencyPropagation: parseDependencyPropagationConfig(cfg),
2164
2592
  // Temporal Supersession (issue #375)
2165
2593
  temporalSupersessionEnabled: cfg.temporalSupersessionEnabled !== false,
@@ -2594,6 +3022,7 @@ function parseConfig(raw, rawOperatorConfig, runtimeSet) {
2594
3022
  bridgeMode: cfg.bridgeMode === void 0 ? "embedded" : String(cfg.bridgeMode),
2595
3023
  codexCompat,
2596
3024
  codingKnowledge: parseCodingKnowledgeConfig(cfg.codingKnowledge),
3025
+ actionGate: parseActionGateConfig(cfg.actionGate),
2597
3026
  chat: parseChatConfig(cfg.chat),
2598
3027
  supportPassport: parseSupportPassportConfig(cfg.supportPassport),
2599
3028
  hourlySummariesEnabled: cfg.hourlySummariesEnabled !== false,
@@ -3988,6 +4417,8 @@ function parseTrustScoreWeights(value) {
3988
4417
  }
3989
4418
 
3990
4419
  export {
4420
+ DRIFT_DETECTION_DEFAULTS,
4421
+ parseDriftDetectionConfig,
3991
4422
  KNOWN_WEARABLE_SOURCE_IDS,
3992
4423
  defaultWearableCleanupSettings,
3993
4424
  defaultWearableSourceSettings,
@@ -4000,10 +4431,18 @@ export {
4000
4431
  detectMeetings,
4001
4432
  DEFAULT_MEETINGS_CONFIG,
4002
4433
  parseMeetingsConfig,
4434
+ ACTION_GATE_DEFAULT_MAX_ADVISORIES_PER_TURN,
4435
+ ACTION_GATE_DEFAULTS,
4436
+ parseActionGateConfig,
4437
+ actionTermsFor,
4438
+ isFailureClassMemory,
4439
+ createFailureMemoryCandidateSource,
4440
+ createTrajectoryCandidateSource,
4441
+ ActionGateService,
4003
4442
  isOpenaiApiKeyDisabled,
4004
4443
  resolveEnvVars,
4005
4444
  DEFAULT_REASONING_MODEL,
4006
4445
  VALID_MEMORY_CATEGORIES,
4007
4446
  parseConfig
4008
4447
  };
4009
- //# sourceMappingURL=chunk-BWLRUMOG.js.map
4448
+ //# sourceMappingURL=chunk-DPNXADEI.js.map