@remnic/core 1.1.2 → 1.1.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 (489) hide show
  1. package/dist/abort-error.js +1 -0
  2. package/dist/abstraction-nodes.js +1 -0
  3. package/dist/access-audit.js +1 -0
  4. package/dist/access-cli.js +72 -47
  5. package/dist/access-cli.js.map +1 -1
  6. package/dist/access-http.d.ts +50 -5
  7. package/dist/access-http.js +39 -16
  8. package/dist/access-idempotency.js +1 -0
  9. package/dist/access-mcp.d.ts +10 -5
  10. package/dist/access-mcp.js +38 -14
  11. package/dist/access-schema.d.ts +133 -13
  12. package/dist/access-schema.js +20 -1
  13. package/dist/access-service-CtXFnprR.d.ts +2033 -0
  14. package/dist/access-service.d.ts +11 -6
  15. package/dist/access-service.js +40 -15
  16. package/dist/active-memory-bridge.js +1 -0
  17. package/dist/active-recall.js +1 -0
  18. package/dist/active-recall.js.map +1 -1
  19. package/dist/behavior-learner.js +1 -0
  20. package/dist/behavior-learner.js.map +1 -1
  21. package/dist/behavior-signals.js +1 -0
  22. package/dist/bootstrap.d.ts +6 -4
  23. package/dist/bootstrap.js +1 -0
  24. package/dist/boxes.js +1 -0
  25. package/dist/briefing.d.ts +9 -5
  26. package/dist/briefing.js +10 -7
  27. package/dist/buffer-surprise-report.js +1 -0
  28. package/dist/buffer-surprise.js +1 -0
  29. package/dist/buffer.d.ts +1 -1
  30. package/dist/buffer.js +1 -0
  31. package/dist/calibration.d.ts +8 -1
  32. package/dist/calibration.js +10 -2
  33. package/dist/calibration.js.map +1 -1
  34. package/dist/capsule-cli.d.ts +137 -0
  35. package/dist/capsule-cli.js +34 -0
  36. package/dist/capsule-crypto-5CYAGVC5.js +18 -0
  37. package/dist/capsule-export-NZQPOTQ4.js +17 -0
  38. package/dist/capsule-export-NZQPOTQ4.js.map +1 -0
  39. package/dist/capsule-import-SDCUXLEV.js +16 -0
  40. package/dist/capsule-import-SDCUXLEV.js.map +1 -0
  41. package/dist/capsule-merge-DI7PNQ2H.js +189 -0
  42. package/dist/capsule-merge-DI7PNQ2H.js.map +1 -0
  43. package/dist/causal-behavior.js +1 -0
  44. package/dist/causal-behavior.js.map +1 -1
  45. package/dist/causal-chain.js +1 -0
  46. package/dist/causal-consolidation.js +12 -9
  47. package/dist/causal-consolidation.js.map +1 -1
  48. package/dist/causal-retrieval.js +2 -1
  49. package/dist/causal-retrieval.js.map +1 -1
  50. package/dist/causal-trajectory-graph.js +4 -1
  51. package/dist/causal-trajectory-graph.js.map +1 -1
  52. package/dist/causal-trajectory.js +2 -1
  53. package/dist/chunk-2LSZVONP.js +67 -0
  54. package/dist/chunk-2LSZVONP.js.map +1 -0
  55. package/dist/chunk-32KD5IHZ.js +245 -0
  56. package/dist/chunk-32KD5IHZ.js.map +1 -0
  57. package/dist/chunk-3KIS4VGT.js +228 -0
  58. package/dist/chunk-3KIS4VGT.js.map +1 -0
  59. package/dist/chunk-3LCWFNVS.js +350 -0
  60. package/dist/chunk-3LCWFNVS.js.map +1 -0
  61. package/dist/chunk-43EKP2UK.js +26 -0
  62. package/dist/chunk-43EKP2UK.js.map +1 -0
  63. package/dist/chunk-457A4P3L.js +119 -0
  64. package/dist/chunk-457A4P3L.js.map +1 -0
  65. package/dist/{chunk-TMYO7B5P.js → chunk-47WOM4YW.js} +2 -2
  66. package/dist/{chunk-FVA6TGI3.js → chunk-52PDY6GD.js} +42 -2
  67. package/dist/chunk-52PDY6GD.js.map +1 -0
  68. package/dist/{chunk-ULYOGL6R.js → chunk-5HRY2WRF.js} +7 -3
  69. package/dist/chunk-5HRY2WRF.js.map +1 -0
  70. package/dist/{chunk-BOUYNNYD.js → chunk-67YLUWLG.js} +32 -13
  71. package/dist/{chunk-BOUYNNYD.js.map → chunk-67YLUWLG.js.map} +1 -1
  72. package/dist/chunk-6TBWYBJ3.js +236 -0
  73. package/dist/chunk-6TBWYBJ3.js.map +1 -0
  74. package/dist/chunk-74EMIVE4.js +329 -0
  75. package/dist/chunk-74EMIVE4.js.map +1 -0
  76. package/dist/chunk-74WWN7ZW.js +82 -0
  77. package/dist/chunk-74WWN7ZW.js.map +1 -0
  78. package/dist/chunk-A6XUJE5D.js +126 -0
  79. package/dist/chunk-A6XUJE5D.js.map +1 -0
  80. package/dist/{chunk-STGWEHYR.js → chunk-AEMBDV7M.js} +1187 -62
  81. package/dist/chunk-AEMBDV7M.js.map +1 -0
  82. package/dist/{chunk-PVICZTKG.js → chunk-AGZHRWPT.js} +5 -5
  83. package/dist/{chunk-PVICZTKG.js.map → chunk-AGZHRWPT.js.map} +1 -1
  84. package/dist/chunk-AJA46VX5.js +393 -0
  85. package/dist/chunk-AJA46VX5.js.map +1 -0
  86. package/dist/chunk-ASIQZXYO.js +277 -0
  87. package/dist/chunk-ASIQZXYO.js.map +1 -0
  88. package/dist/{chunk-DG6YMRDC.js → chunk-B2TL6GA2.js} +2 -2
  89. package/dist/chunk-BJMBJZ2Y.js +290 -0
  90. package/dist/chunk-BJMBJZ2Y.js.map +1 -0
  91. package/dist/chunk-BT7NVCML.js +79 -0
  92. package/dist/chunk-BT7NVCML.js.map +1 -0
  93. package/dist/chunk-CK5NTM2S.js +454 -0
  94. package/dist/chunk-CK5NTM2S.js.map +1 -0
  95. package/dist/{chunk-AYXIPSZO.js → chunk-CRU27Q4J.js} +2 -2
  96. package/dist/{chunk-UWB5LMWY.js → chunk-CUI2STX6.js} +526 -24
  97. package/dist/chunk-CUI2STX6.js.map +1 -0
  98. package/dist/{chunk-CUPFXL3J.js → chunk-EGEPUGN4.js} +4 -4
  99. package/dist/chunk-EGEPUGN4.js.map +1 -0
  100. package/dist/{chunk-3OGMS3PE.js → chunk-F5VQOQ2E.js} +3 -2
  101. package/dist/chunk-F5VQOQ2E.js.map +1 -0
  102. package/dist/chunk-FP2373TW.js +149 -0
  103. package/dist/chunk-FP2373TW.js.map +1 -0
  104. package/dist/{chunk-RBBWYEFJ.js → chunk-G2WADRQ3.js} +1 -1
  105. package/dist/chunk-G7D6GZ5J.js +48 -0
  106. package/dist/chunk-G7D6GZ5J.js.map +1 -0
  107. package/dist/chunk-H7XKCNR6.js +60 -0
  108. package/dist/chunk-H7XKCNR6.js.map +1 -0
  109. package/dist/{chunk-LOIMBRDE.js → chunk-HIRKCQGF.js} +1994 -412
  110. package/dist/chunk-HIRKCQGF.js.map +1 -0
  111. package/dist/chunk-IXEJRKCZ.js +18 -0
  112. package/dist/chunk-IXEJRKCZ.js.map +1 -0
  113. package/dist/chunk-IYY4MCPG.js +275 -0
  114. package/dist/chunk-IYY4MCPG.js.map +1 -0
  115. package/dist/{chunk-BECYBZLX.js → chunk-JWSENLQI.js} +502 -22
  116. package/dist/chunk-JWSENLQI.js.map +1 -0
  117. package/dist/chunk-KNKUID7G.js +183 -0
  118. package/dist/chunk-KNKUID7G.js.map +1 -0
  119. package/dist/chunk-L2IO2QPY.js +2036 -0
  120. package/dist/chunk-L2IO2QPY.js.map +1 -0
  121. package/dist/{chunk-ZAIM4TUE.js → chunk-LW2NMHDW.js} +46 -1
  122. package/dist/chunk-LW2NMHDW.js.map +1 -0
  123. package/dist/chunk-MDYG7VI7.js +48 -0
  124. package/dist/chunk-MDYG7VI7.js.map +1 -0
  125. package/dist/{chunk-VDX363PS.js → chunk-MUELDH4F.js} +10 -3
  126. package/dist/chunk-MUELDH4F.js.map +1 -0
  127. package/dist/chunk-MXC3AP5I.js +74 -0
  128. package/dist/chunk-MXC3AP5I.js.map +1 -0
  129. package/dist/chunk-NN3TS5BM.js +147 -0
  130. package/dist/chunk-NN3TS5BM.js.map +1 -0
  131. package/dist/{chunk-3YGHKTBF.js → chunk-NZS2BLTP.js} +963 -326
  132. package/dist/chunk-NZS2BLTP.js.map +1 -0
  133. package/dist/chunk-OA3L7BFR.js +183 -0
  134. package/dist/chunk-OA3L7BFR.js.map +1 -0
  135. package/dist/chunk-OZHRDTDX.js +240 -0
  136. package/dist/chunk-OZHRDTDX.js.map +1 -0
  137. package/dist/chunk-PCUKNJAZ.js +165 -0
  138. package/dist/chunk-PCUKNJAZ.js.map +1 -0
  139. package/dist/{chunk-6PFRXT4K.js → chunk-PFV5C235.js} +11 -6
  140. package/dist/chunk-PFV5C235.js.map +1 -0
  141. package/dist/chunk-PZ5AY32C.js +10 -0
  142. package/dist/chunk-PZ5AY32C.js.map +1 -0
  143. package/dist/{chunk-Y7R2XJ5Q.js → chunk-Q7FJ5ZHM.js} +6 -2
  144. package/dist/chunk-Q7FJ5ZHM.js.map +1 -0
  145. package/dist/{chunk-WCLICCGB.js → chunk-RILIVK4O.js} +91 -4
  146. package/dist/chunk-RILIVK4O.js.map +1 -0
  147. package/dist/{chunk-C2EFFULQ.js → chunk-RK2Y4XOM.js} +163 -20
  148. package/dist/chunk-RK2Y4XOM.js.map +1 -0
  149. package/dist/{chunk-TP4FZJIZ.js → chunk-RULE4VG5.js} +5 -1
  150. package/dist/chunk-RULE4VG5.js.map +1 -0
  151. package/dist/{chunk-PVPWZSSI.js → chunk-SMA4IMHV.js} +19 -3
  152. package/dist/chunk-SMA4IMHV.js.map +1 -0
  153. package/dist/{chunk-6YJHX2DL.js → chunk-TIFRGAKO.js} +242 -22
  154. package/dist/chunk-TIFRGAKO.js.map +1 -0
  155. package/dist/chunk-TUFG6VXY.js +875 -0
  156. package/dist/chunk-TUFG6VXY.js.map +1 -0
  157. package/dist/chunk-TYEOAFH3.js +251 -0
  158. package/dist/chunk-TYEOAFH3.js.map +1 -0
  159. package/dist/chunk-UKJAGEXH.js +260 -0
  160. package/dist/chunk-UKJAGEXH.js.map +1 -0
  161. package/dist/{chunk-KVBLZUKV.js → chunk-USFPPRAF.js} +93 -3
  162. package/dist/chunk-USFPPRAF.js.map +1 -0
  163. package/dist/{chunk-NBVAS5MT.js → chunk-V7TEH5I2.js} +6 -6
  164. package/dist/{chunk-GA5P7RST.js → chunk-VTJVUHRK.js} +22 -36
  165. package/dist/chunk-VTJVUHRK.js.map +1 -0
  166. package/dist/{chunk-SPI27QT6.js → chunk-W7WWT4FJ.js} +9 -4
  167. package/dist/chunk-W7WWT4FJ.js.map +1 -0
  168. package/dist/chunk-WIICJPET.js +45 -0
  169. package/dist/chunk-WIICJPET.js.map +1 -0
  170. package/dist/{chunk-VBVG2M5G.js → chunk-WPGJYVUH.js} +6 -2
  171. package/dist/chunk-WPGJYVUH.js.map +1 -0
  172. package/dist/{chunk-4HQS2HPX.js → chunk-WSZIHQBK.js} +29 -9
  173. package/dist/{chunk-4HQS2HPX.js.map → chunk-WSZIHQBK.js.map} +1 -1
  174. package/dist/{chunk-NZLQTHS5.js → chunk-WW3QQF4H.js} +4 -1
  175. package/dist/chunk-WW3QQF4H.js.map +1 -0
  176. package/dist/{chunk-DIXB44VE.js → chunk-X6VBWOVZ.js} +28 -13
  177. package/dist/chunk-X6VBWOVZ.js.map +1 -0
  178. package/dist/{chunk-XXVWLXSG.js → chunk-XQ4EJLUD.js} +64 -92
  179. package/dist/chunk-XQ4EJLUD.js.map +1 -0
  180. package/dist/{chunk-OC5OXUQ4.js → chunk-XRCYKJ3V.js} +780 -17
  181. package/dist/chunk-XRCYKJ3V.js.map +1 -0
  182. package/dist/{chunk-F5VP6YCB.js → chunk-Y4A6M3B6.js} +573 -156
  183. package/dist/chunk-Y4A6M3B6.js.map +1 -0
  184. package/dist/chunk-YNJHCGDT.js +309 -0
  185. package/dist/chunk-YNJHCGDT.js.map +1 -0
  186. package/dist/{chunk-L7IXWRYE.js → chunk-ZIBOQULP.js} +22 -13
  187. package/dist/chunk-ZIBOQULP.js.map +1 -0
  188. package/dist/{chunk-W6SL7OFG.js → chunk-ZTSE2ZJ6.js} +12 -2
  189. package/dist/{chunk-W6SL7OFG.js.map → chunk-ZTSE2ZJ6.js.map} +1 -1
  190. package/dist/chunking.js +1 -0
  191. package/dist/cipher-GVE2GQ5H.js +28 -0
  192. package/dist/cipher-GVE2GQ5H.js.map +1 -0
  193. package/dist/citations.js +1 -0
  194. package/dist/{cli-BkeRaYfk.d.ts → cli-lMql2FCr.d.ts} +26 -7
  195. package/dist/cli.d.ts +11 -6
  196. package/dist/cli.js +69 -34
  197. package/dist/codex-thread-key.js +1 -0
  198. package/dist/commitment-ledger.js +1 -0
  199. package/dist/compression-optimizer.js +1 -0
  200. package/dist/config.d.ts +2 -1
  201. package/dist/config.js +4 -1
  202. package/dist/connectors-cli-DFGtY2DB.d.ts +257 -0
  203. package/dist/connectors-cli.d.ts +2 -0
  204. package/dist/connectors-cli.js +22 -0
  205. package/dist/connectors-cli.js.map +1 -0
  206. package/dist/consolidation-operator.d.ts +65 -5
  207. package/dist/consolidation-operator.js +6 -1
  208. package/dist/consolidation-provenance-check.d.ts +1 -1
  209. package/dist/consolidation-provenance-check.js +3 -2
  210. package/dist/consolidation-undo.d.ts +1 -1
  211. package/dist/consolidation-undo.js +1 -0
  212. package/dist/consolidation-undo.js.map +1 -1
  213. package/dist/{contradiction-review-WIUBAR52.js → contradiction-review-5LTTVDQV.js} +2 -1
  214. package/dist/contradiction-review-5LTTVDQV.js.map +1 -0
  215. package/dist/{contradiction-scan-E3GJTI4F.js → contradiction-scan-3Z6YW7YA.js} +2 -1
  216. package/dist/{contradiction-scan-E3GJTI4F.js.map → contradiction-scan-3Z6YW7YA.js.map} +1 -1
  217. package/dist/cross-namespace-budget.js +1 -0
  218. package/dist/cue-anchors.js +1 -0
  219. package/dist/dashboard-runtime.js +1 -0
  220. package/dist/day-summary.js +1 -0
  221. package/dist/delinearize.js +1 -0
  222. package/dist/direct-answer-wiring.js +1 -0
  223. package/dist/direct-answer.js +1 -0
  224. package/dist/dreams-ledger-LR2NBAZE.js +286 -0
  225. package/dist/dreams-ledger-LR2NBAZE.js.map +1 -0
  226. package/dist/embedding-fallback.js +1 -0
  227. package/dist/engine-O6YWKQM3.js +28 -0
  228. package/dist/engine-O6YWKQM3.js.map +1 -0
  229. package/dist/entity-retrieval.d.ts +1 -1
  230. package/dist/entity-retrieval.js +10 -7
  231. package/dist/entity-schema.js +1 -0
  232. package/dist/evals.js +1 -0
  233. package/dist/evidence-pack.d.ts +16 -0
  234. package/dist/evidence-pack.js +8 -0
  235. package/dist/evidence-pack.js.map +1 -0
  236. package/dist/explicit-capture.d.ts +6 -4
  237. package/dist/explicit-capture.js +1 -0
  238. package/dist/extraction-judge-telemetry.js +1 -0
  239. package/dist/extraction-judge-training.js +1 -0
  240. package/dist/extraction-judge.js +1 -0
  241. package/dist/extraction.js +8 -7
  242. package/dist/fallback-llm.js +3 -2
  243. package/dist/first-start-migration-4MHQEOSD.js +263 -0
  244. package/dist/first-start-migration-4MHQEOSD.js.map +1 -0
  245. package/dist/forget-PLR6J5DN.js +69 -0
  246. package/dist/forget-PLR6J5DN.js.map +1 -0
  247. package/dist/framework-CyHYDcri.d.ts +153 -0
  248. package/dist/fs-utils-IRVUFB6G.js +30 -0
  249. package/dist/fs-utils-IRVUFB6G.js.map +1 -0
  250. package/dist/graph-dashboard-diff.js +1 -0
  251. package/dist/graph-dashboard-key.js +1 -0
  252. package/dist/graph-dashboard-parser.js +1 -0
  253. package/dist/graph-edge-decay-PWB63GRE.js +207 -0
  254. package/dist/graph-edge-decay-PWB63GRE.js.map +1 -0
  255. package/dist/graph-edge-reinforcement.d.ts +81 -0
  256. package/dist/graph-edge-reinforcement.js +24 -0
  257. package/dist/graph-edge-reinforcement.js.map +1 -0
  258. package/dist/graph-events.d.ts +87 -0
  259. package/dist/graph-events.js +14 -0
  260. package/dist/graph-events.js.map +1 -0
  261. package/dist/graph-recall.js +1 -0
  262. package/dist/graph-retrieval.js +1 -0
  263. package/dist/graph-snapshot.d.ts +112 -0
  264. package/dist/graph-snapshot.js +19 -0
  265. package/dist/graph-snapshot.js.map +1 -0
  266. package/dist/graph.d.ts +105 -7
  267. package/dist/graph.js +20 -3
  268. package/dist/harmonic-retrieval.js +1 -0
  269. package/dist/himem.js +1 -0
  270. package/dist/hygiene.js +1 -0
  271. package/dist/identity-continuity.js +1 -0
  272. package/dist/importance.js +1 -0
  273. package/dist/index.d.ts +574 -13
  274. package/dist/index.js +337 -69
  275. package/dist/index.js.map +1 -1
  276. package/dist/intent.js +1 -0
  277. package/dist/json-extract.js +1 -0
  278. package/dist/json-store.js +1 -0
  279. package/dist/kdf-7S6RWKLZ.js +26 -0
  280. package/dist/kdf-7S6RWKLZ.js.map +1 -0
  281. package/dist/legacy-hook-compat.js +1 -0
  282. package/dist/legacy-hook-compat.js.map +1 -1
  283. package/dist/lifecycle.js +1 -0
  284. package/dist/live-connectors-runner.d.ts +48 -0
  285. package/dist/live-connectors-runner.js +17 -0
  286. package/dist/live-connectors-runner.js.map +1 -0
  287. package/dist/local-llm.js +1 -0
  288. package/dist/logger.js +1 -0
  289. package/dist/memory-action-policy.js +1 -0
  290. package/dist/memory-cache.d.ts +2 -1
  291. package/dist/memory-cache.js +4 -1
  292. package/dist/memory-governance-JZHZDOLN.js +37 -0
  293. package/dist/memory-governance-JZHZDOLN.js.map +1 -0
  294. package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
  295. package/dist/memory-lifecycle-ledger-utils.js +4 -1
  296. package/dist/memory-projection-format.js +1 -0
  297. package/dist/{memory-projection-store-DeSXPh1j.d.ts → memory-projection-store-CY8TU40w.d.ts} +2 -1
  298. package/dist/memory-projection-store.d.ts +1 -1
  299. package/dist/memory-projection-store.js +2 -1
  300. package/dist/memory-worth-bench.js +1 -0
  301. package/dist/memory-worth-bench.js.map +1 -1
  302. package/dist/memory-worth-filter.js +1 -0
  303. package/dist/memory-worth-outcomes.d.ts +1 -1
  304. package/dist/memory-worth-outcomes.js +1 -0
  305. package/dist/memory-worth.js +1 -0
  306. package/dist/metadata-FC3XPDRQ.js +21 -0
  307. package/dist/metadata-FC3XPDRQ.js.map +1 -0
  308. package/dist/migrate-from-identity-anchor-TTEDEJGX.js +8 -0
  309. package/dist/migrate-from-identity-anchor-TTEDEJGX.js.map +1 -0
  310. package/dist/model-registry.js +1 -0
  311. package/dist/models-json.js +1 -0
  312. package/dist/native-knowledge.js +1 -0
  313. package/dist/negative.js +1 -0
  314. package/dist/objective-state-writers.js +1 -0
  315. package/dist/objective-state-writers.js.map +1 -1
  316. package/dist/objective-state.js +1 -0
  317. package/dist/openai-chat-compat.js +1 -0
  318. package/dist/operator-toolkit.d.ts +46 -2
  319. package/dist/operator-toolkit.js +29 -17
  320. package/dist/opik-exporter.js +1 -0
  321. package/dist/opik-exporter.js.map +1 -1
  322. package/dist/{orchestrator-CmJ-NTdJ.d.ts → orchestrator-ChkesB8U.d.ts} +177 -13
  323. package/dist/orchestrator.d.ts +6 -4
  324. package/dist/orchestrator.js +57 -41
  325. package/dist/page-versioning.js +1 -0
  326. package/dist/path-RMTY5Y5A.js +9 -0
  327. package/dist/path-RMTY5Y5A.js.map +1 -0
  328. package/dist/patterns-cli.d.ts +160 -0
  329. package/dist/patterns-cli.js +29 -0
  330. package/dist/patterns-cli.js.map +1 -0
  331. package/dist/peers-6OSQ3NK6.js +44 -0
  332. package/dist/peers-6OSQ3NK6.js.map +1 -0
  333. package/dist/plugin-id.js +1 -0
  334. package/dist/policy-runtime.js +1 -0
  335. package/dist/{port-BADbLZU5.d.ts → port-hqGnoStS.d.ts} +6 -0
  336. package/dist/profiling.js +1 -0
  337. package/dist/purge-6ATBGT77.js +205 -0
  338. package/dist/purge-6ATBGT77.js.map +1 -0
  339. package/dist/qmd-recall-cache.d.ts +1 -1
  340. package/dist/qmd-recall-cache.js +1 -0
  341. package/dist/qmd.d.ts +2 -1
  342. package/dist/qmd.js +4 -3
  343. package/dist/reasoning-trace-recall.js +1 -0
  344. package/dist/reasoning-trace-types.js +1 -0
  345. package/dist/recall-audit-anomaly.js +1 -0
  346. package/dist/recall-audit.js +1 -0
  347. package/dist/recall-disclosure-escalation.d.ts +84 -0
  348. package/dist/recall-disclosure-escalation.js +14 -0
  349. package/dist/recall-disclosure-escalation.js.map +1 -0
  350. package/dist/recall-explain-renderer.js +4 -1
  351. package/dist/recall-mmr.js +1 -0
  352. package/dist/recall-qos.js +1 -0
  353. package/dist/recall-query-policy.js +1 -0
  354. package/dist/recall-state.d.ts +7 -0
  355. package/dist/recall-state.js +2 -1
  356. package/dist/recall-tag-filter.d.ts +56 -0
  357. package/dist/recall-tag-filter.js +14 -0
  358. package/dist/recall-tag-filter.js.map +1 -0
  359. package/dist/recall-tokenization.js +1 -0
  360. package/dist/recall-xray-cli.d.ts +9 -2
  361. package/dist/recall-xray-cli.js +9 -4
  362. package/dist/recall-xray-renderer.js +4 -1
  363. package/dist/recall-xray.d.ts +116 -2
  364. package/dist/recall-xray.js +9 -3
  365. package/dist/reconstruct.js +1 -0
  366. package/dist/release-changelog.js +2 -0
  367. package/dist/release-changelog.js.map +1 -1
  368. package/dist/relevance.js +1 -0
  369. package/dist/rerank.js +1 -0
  370. package/dist/{resolution-QBTDHTG7.js → resolution-YGIBORXI.js} +2 -1
  371. package/dist/{resolution-QBTDHTG7.js.map → resolution-YGIBORXI.js.map} +1 -1
  372. package/dist/resolve-auth-token.d.ts +51 -0
  373. package/dist/resolve-auth-token.js +12 -0
  374. package/dist/resolve-auth-token.js.map +1 -0
  375. package/dist/resolve-provider-secret.d.ts +9 -1
  376. package/dist/resolve-provider-secret.js +4 -1
  377. package/dist/resume-bundles.js +4 -3
  378. package/dist/retrieval-agents.d.ts +1 -1
  379. package/dist/retrieval-agents.js +1 -0
  380. package/dist/retrieval-tiers.js +1 -0
  381. package/dist/retrieval.js +1 -0
  382. package/dist/sanitize.js +1 -0
  383. package/dist/schemas.d.ts +15 -2
  384. package/dist/schemas.js +2 -1
  385. package/dist/sdk-compat.js +1 -0
  386. package/dist/sdk-compat.js.map +1 -1
  387. package/dist/secure-store-4R2GSO7S.js +156 -0
  388. package/dist/secure-store-4R2GSO7S.js.map +1 -0
  389. package/dist/semantic-chunking.js +1 -0
  390. package/dist/{semantic-consolidation-CxJU6MJk.d.ts → semantic-consolidation-ByBXb-sf.d.ts} +3 -3
  391. package/dist/semantic-consolidation.d.ts +2 -2
  392. package/dist/semantic-consolidation.js +12 -7
  393. package/dist/semantic-rule-promotion.d.ts +1 -1
  394. package/dist/semantic-rule-promotion.js +10 -7
  395. package/dist/semantic-rule-verifier.d.ts +1 -1
  396. package/dist/semantic-rule-verifier.js +10 -7
  397. package/dist/session-integrity.js +1 -0
  398. package/dist/session-observer-bands.js +1 -0
  399. package/dist/session-observer-state.js +1 -0
  400. package/dist/session-toggles.js +2 -0
  401. package/dist/session-toggles.js.map +1 -1
  402. package/dist/signal.js +1 -0
  403. package/dist/skills-registry.js +2 -0
  404. package/dist/skills-registry.js.map +1 -1
  405. package/dist/source-attribution.js +1 -0
  406. package/dist/state-NCHQ4TRG.js +8 -0
  407. package/dist/state-NCHQ4TRG.js.map +1 -0
  408. package/dist/state-store-3EH7HYIN.js +16 -0
  409. package/dist/state-store-3EH7HYIN.js.map +1 -0
  410. package/dist/storage.d.ts +76 -2
  411. package/dist/storage.js +9 -6
  412. package/dist/store-contract.js +1 -0
  413. package/dist/summarizer.js +5 -4
  414. package/dist/summary-snapshot.js +1 -0
  415. package/dist/temporal-index.js +1 -0
  416. package/dist/temporal-supersession.d.ts +1 -1
  417. package/dist/temporal-supersession.js +2 -1
  418. package/dist/temporal-validity.d.ts +52 -0
  419. package/dist/temporal-validity.js +14 -0
  420. package/dist/temporal-validity.js.map +1 -0
  421. package/dist/threading.js +1 -0
  422. package/dist/tier-migration.d.ts +2 -2
  423. package/dist/tier-migration.js +1 -0
  424. package/dist/tier-routing.js +1 -0
  425. package/dist/tier-stats-62ZVDFKS.js +152 -0
  426. package/dist/tier-stats-62ZVDFKS.js.map +1 -0
  427. package/dist/tmt.js +1 -0
  428. package/dist/tokens.js +1 -0
  429. package/dist/topics.js +1 -0
  430. package/dist/trace-C5ETWBEF.js +290 -0
  431. package/dist/trace-C5ETWBEF.js.map +1 -0
  432. package/dist/transcript.js +1 -0
  433. package/dist/trust-zones.js +1 -0
  434. package/dist/tui-RI7P6PBS.js +13 -0
  435. package/dist/tui-RI7P6PBS.js.map +1 -0
  436. package/dist/types-V3FJ26TF.js +30 -0
  437. package/dist/types-V3FJ26TF.js.map +1 -0
  438. package/dist/types.d.ts +634 -9
  439. package/dist/types.js +10 -3
  440. package/dist/utility-learner.js +1 -0
  441. package/dist/utility-runtime.js +1 -0
  442. package/dist/utility-telemetry.js +1 -0
  443. package/dist/verified-recall.js +10 -7
  444. package/dist/version-utils.js +1 -0
  445. package/dist/whitespace.js +1 -0
  446. package/dist/work-product-ledger.js +1 -0
  447. package/package.json +7 -3
  448. package/scripts/ensure-better-sqlite3.mjs +124 -0
  449. package/dist/access-service-Br8ZydTK.d.ts +0 -827
  450. package/dist/chunk-3OGMS3PE.js.map +0 -1
  451. package/dist/chunk-3YGHKTBF.js.map +0 -1
  452. package/dist/chunk-6PFRXT4K.js.map +0 -1
  453. package/dist/chunk-6YJHX2DL.js.map +0 -1
  454. package/dist/chunk-BECYBZLX.js.map +0 -1
  455. package/dist/chunk-C2EFFULQ.js.map +0 -1
  456. package/dist/chunk-CUPFXL3J.js.map +0 -1
  457. package/dist/chunk-DIXB44VE.js.map +0 -1
  458. package/dist/chunk-F5VP6YCB.js.map +0 -1
  459. package/dist/chunk-FVA6TGI3.js.map +0 -1
  460. package/dist/chunk-GA5P7RST.js.map +0 -1
  461. package/dist/chunk-KVBLZUKV.js.map +0 -1
  462. package/dist/chunk-L7IXWRYE.js.map +0 -1
  463. package/dist/chunk-LOIMBRDE.js.map +0 -1
  464. package/dist/chunk-LTCGGW2D.js +0 -14
  465. package/dist/chunk-LTCGGW2D.js.map +0 -1
  466. package/dist/chunk-NZLQTHS5.js.map +0 -1
  467. package/dist/chunk-OC5OXUQ4.js.map +0 -1
  468. package/dist/chunk-PVPWZSSI.js.map +0 -1
  469. package/dist/chunk-SPI27QT6.js.map +0 -1
  470. package/dist/chunk-STGWEHYR.js.map +0 -1
  471. package/dist/chunk-TP4FZJIZ.js.map +0 -1
  472. package/dist/chunk-ULYOGL6R.js.map +0 -1
  473. package/dist/chunk-UWB5LMWY.js.map +0 -1
  474. package/dist/chunk-VBVG2M5G.js.map +0 -1
  475. package/dist/chunk-VDX363PS.js.map +0 -1
  476. package/dist/chunk-WCLICCGB.js.map +0 -1
  477. package/dist/chunk-X6GF3FX2.js +0 -26
  478. package/dist/chunk-X6GF3FX2.js.map +0 -1
  479. package/dist/chunk-XXVWLXSG.js.map +0 -1
  480. package/dist/chunk-Y7R2XJ5Q.js.map +0 -1
  481. package/dist/chunk-ZAIM4TUE.js.map +0 -1
  482. package/dist/engine-72LSIWQP.js +0 -23
  483. /package/dist/{contradiction-review-WIUBAR52.js.map → capsule-cli.js.map} +0 -0
  484. /package/dist/{engine-72LSIWQP.js.map → capsule-crypto-5CYAGVC5.js.map} +0 -0
  485. /package/dist/{chunk-TMYO7B5P.js.map → chunk-47WOM4YW.js.map} +0 -0
  486. /package/dist/{chunk-DG6YMRDC.js.map → chunk-B2TL6GA2.js.map} +0 -0
  487. /package/dist/{chunk-AYXIPSZO.js.map → chunk-CRU27Q4J.js.map} +0 -0
  488. /package/dist/{chunk-RBBWYEFJ.js.map → chunk-G2WADRQ3.js.map} +0 -0
  489. /package/dist/{chunk-NBVAS5MT.js.map → chunk-V7TEH5I2.js.map} +0 -0
@@ -0,0 +1,126 @@
1
+ // src/secure-store/cipher.ts
2
+ import { createCipheriv, createDecipheriv, randomBytes } from "crypto";
3
+ var ENVELOPE_VERSION = 1;
4
+ var IV_LENGTH = 12;
5
+ var AUTH_TAG_LENGTH = 16;
6
+ var ENVELOPE_SALT_LENGTH = 16;
7
+ var AES_KEY_LENGTH = 32;
8
+ var ENVELOPE_LAYOUT = Object.freeze({
9
+ version: 0,
10
+ salt: 1,
11
+ iv: 1 + ENVELOPE_SALT_LENGTH,
12
+ authTag: 1 + ENVELOPE_SALT_LENGTH + IV_LENGTH,
13
+ ciphertext: 1 + ENVELOPE_SALT_LENGTH + IV_LENGTH + AUTH_TAG_LENGTH
14
+ });
15
+ var ENVELOPE_HEADER_SIZE = ENVELOPE_LAYOUT.ciphertext;
16
+ function assertAesKey(key) {
17
+ if (!(key instanceof Uint8Array)) {
18
+ throw new Error("key must be a Uint8Array");
19
+ }
20
+ if (key.length !== AES_KEY_LENGTH) {
21
+ throw new Error(
22
+ `AES-256-GCM requires a ${AES_KEY_LENGTH}-byte key, got ${key.length}`
23
+ );
24
+ }
25
+ }
26
+ function seal(key, salt, plaintext, options = {}) {
27
+ assertAesKey(key);
28
+ if (!(salt instanceof Uint8Array) || salt.length !== ENVELOPE_SALT_LENGTH) {
29
+ throw new Error(
30
+ `salt must be ${ENVELOPE_SALT_LENGTH} bytes, got ${salt?.length ?? "non-buffer"}`
31
+ );
32
+ }
33
+ if (!(plaintext instanceof Uint8Array)) {
34
+ throw new Error("plaintext must be a Uint8Array");
35
+ }
36
+ let iv;
37
+ if (options.iv) {
38
+ if (options.iv.length !== IV_LENGTH) {
39
+ throw new Error(`iv must be ${IV_LENGTH} bytes, got ${options.iv.length}`);
40
+ }
41
+ iv = options.iv;
42
+ } else {
43
+ iv = randomBytes(IV_LENGTH);
44
+ }
45
+ const cipher = createCipheriv("aes-256-gcm", Buffer.from(key), Buffer.from(iv), {
46
+ authTagLength: AUTH_TAG_LENGTH
47
+ });
48
+ const headerAad = buildHeaderAad(salt);
49
+ const finalAad = options.aad ? Buffer.concat([headerAad, Buffer.from(options.aad)]) : headerAad;
50
+ cipher.setAAD(finalAad);
51
+ const ciphertext = Buffer.concat([cipher.update(Buffer.from(plaintext)), cipher.final()]);
52
+ const authTag = cipher.getAuthTag();
53
+ if (authTag.length !== AUTH_TAG_LENGTH) {
54
+ throw new Error(`unexpected auth tag length: ${authTag.length}`);
55
+ }
56
+ const envelope = Buffer.alloc(ENVELOPE_HEADER_SIZE + ciphertext.length);
57
+ envelope.writeUInt8(ENVELOPE_VERSION, ENVELOPE_LAYOUT.version);
58
+ Buffer.from(salt).copy(envelope, ENVELOPE_LAYOUT.salt);
59
+ Buffer.from(iv).copy(envelope, ENVELOPE_LAYOUT.iv);
60
+ authTag.copy(envelope, ENVELOPE_LAYOUT.authTag);
61
+ ciphertext.copy(envelope, ENVELOPE_LAYOUT.ciphertext);
62
+ return envelope;
63
+ }
64
+ function parseEnvelope(envelope) {
65
+ if (!(envelope instanceof Uint8Array)) {
66
+ throw new Error("envelope must be a Uint8Array");
67
+ }
68
+ if (envelope.length < ENVELOPE_HEADER_SIZE) {
69
+ throw new Error(
70
+ `envelope too short: need \u2265 ${ENVELOPE_HEADER_SIZE} bytes, got ${envelope.length}`
71
+ );
72
+ }
73
+ const buf = Buffer.from(envelope.buffer, envelope.byteOffset, envelope.byteLength);
74
+ const version = buf.readUInt8(ENVELOPE_LAYOUT.version);
75
+ if (version !== ENVELOPE_VERSION) {
76
+ throw new Error(
77
+ `unsupported envelope version: ${version} (this build supports ${ENVELOPE_VERSION})`
78
+ );
79
+ }
80
+ return {
81
+ version,
82
+ salt: buf.subarray(ENVELOPE_LAYOUT.salt, ENVELOPE_LAYOUT.salt + ENVELOPE_SALT_LENGTH),
83
+ iv: buf.subarray(ENVELOPE_LAYOUT.iv, ENVELOPE_LAYOUT.iv + IV_LENGTH),
84
+ authTag: buf.subarray(
85
+ ENVELOPE_LAYOUT.authTag,
86
+ ENVELOPE_LAYOUT.authTag + AUTH_TAG_LENGTH
87
+ ),
88
+ ciphertext: buf.subarray(ENVELOPE_LAYOUT.ciphertext)
89
+ };
90
+ }
91
+ function open(key, envelope, options = {}) {
92
+ assertAesKey(key);
93
+ const parsed = parseEnvelope(envelope);
94
+ const decipher = createDecipheriv("aes-256-gcm", Buffer.from(key), parsed.iv, {
95
+ authTagLength: AUTH_TAG_LENGTH
96
+ });
97
+ decipher.setAuthTag(parsed.authTag);
98
+ const headerAad = buildHeaderAad(parsed.salt);
99
+ const finalAad = options.aad ? Buffer.concat([headerAad, Buffer.from(options.aad)]) : headerAad;
100
+ decipher.setAAD(finalAad);
101
+ return Buffer.concat([decipher.update(parsed.ciphertext), decipher.final()]);
102
+ }
103
+ function buildHeaderAad(salt) {
104
+ const out = Buffer.alloc(1 + ENVELOPE_SALT_LENGTH);
105
+ out.writeUInt8(ENVELOPE_VERSION, 0);
106
+ Buffer.from(salt).copy(out, 1);
107
+ return out;
108
+ }
109
+ function generateSalt() {
110
+ return randomBytes(ENVELOPE_SALT_LENGTH);
111
+ }
112
+
113
+ export {
114
+ ENVELOPE_VERSION,
115
+ IV_LENGTH,
116
+ AUTH_TAG_LENGTH,
117
+ ENVELOPE_SALT_LENGTH,
118
+ AES_KEY_LENGTH,
119
+ ENVELOPE_LAYOUT,
120
+ ENVELOPE_HEADER_SIZE,
121
+ seal,
122
+ parseEnvelope,
123
+ open,
124
+ generateSalt
125
+ };
126
+ //# sourceMappingURL=chunk-A6XUJE5D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/secure-store/cipher.ts"],"sourcesContent":["/**\n * AES-256-GCM encrypt / decrypt primitives for the secure-store\n * module.\n *\n * Issue #690 (PR 1/4) — pure primitives, no I/O.\n *\n * Sealed envelope format\n * ----------------------\n * A \"sealed\" buffer is the canonical on-disk shape for a single\n * encrypted blob. It contains the salt used to derive the key from\n * the user's passphrase, so a caller who has the passphrase + the\n * sealed buffer can decrypt without any external metadata.\n *\n * [VERSION:1][SALT:16][IV:12][AUTHTAG:16][CIPHERTEXT:...]\n *\n * - VERSION (1 byte): envelope format version. Currently 1. Future\n * versions can change the layout (e.g. variable salt length, an\n * algorithm identifier byte) by bumping this byte.\n * - SALT (16 bytes): KDF salt. Persisted with the ciphertext so the\n * same passphrase can re-derive the key on read.\n * - IV (12 bytes): GCM nonce. Must be unique per (key, ciphertext)\n * pair. We generate it fresh from `randomBytes` on every encrypt\n * call. Reusing an IV with the same key destroys GCM's\n * confidentiality and authenticity guarantees.\n * - AUTHTAG (16 bytes): GCM authentication tag. Tampering with any\n * byte of (salt | iv | tag | ciphertext) causes decryption to\n * fail with an auth-tag mismatch.\n * - CIPHERTEXT (variable): the encrypted payload.\n *\n * The salt is stored alongside the ciphertext (rather than only in a\n * separate metadata file) so an individual encrypted blob is\n * self-contained for diagnostics and recovery. The metadata file\n * (see `metadata.ts`) records the *canonical* salt + KDF params for a\n * store; the per-blob salt is expected to match the metadata salt in\n * normal operation, but the format does not require it — a future PR\n * could rotate per-blob salts if desired.\n *\n * AAD support\n * -----------\n * Callers can pass associated authenticated data (AAD) — typically a\n * file path or namespace tag — that is authenticated but not\n * encrypted. AAD must be supplied identically on encrypt and decrypt;\n * a mismatch causes auth-tag failure. AAD is NOT serialized into the\n * envelope; the caller is responsible for re-supplying it on decrypt.\n */\n\nimport { createCipheriv, createDecipheriv, randomBytes } from \"node:crypto\";\n\n/** Current envelope format version. */\nexport const ENVELOPE_VERSION = 1 as const;\n\n/** GCM nonce length. 96 bits is the NIST-recommended size for AES-GCM. */\nexport const IV_LENGTH = 12;\n\n/** GCM authentication tag length. 16 bytes (128 bits) — the maximum. */\nexport const AUTH_TAG_LENGTH = 16;\n\n/** Salt length carried in the envelope. Must match KDF_SALT_LENGTH. */\nexport const ENVELOPE_SALT_LENGTH = 16;\n\n/** Required key length for AES-256. */\nexport const AES_KEY_LENGTH = 32;\n\n/** Byte offsets of each envelope field (for clarity at call sites). */\nexport const ENVELOPE_LAYOUT = Object.freeze({\n version: 0,\n salt: 1,\n iv: 1 + ENVELOPE_SALT_LENGTH,\n authTag: 1 + ENVELOPE_SALT_LENGTH + IV_LENGTH,\n ciphertext: 1 + ENVELOPE_SALT_LENGTH + IV_LENGTH + AUTH_TAG_LENGTH,\n});\n\n/** Minimum envelope size: header + zero-length ciphertext. */\nexport const ENVELOPE_HEADER_SIZE = ENVELOPE_LAYOUT.ciphertext;\n\nexport interface EncryptOptions {\n /**\n * Optional associated data — authenticated but not encrypted.\n * Caller must supply the same value on decrypt.\n */\n aad?: Uint8Array;\n /**\n * Override the per-call IV. Strongly discouraged outside of tests:\n * GCM is catastrophically broken if an IV is reused under the same\n * key. Production callers should always let the cipher generate a\n * fresh random IV.\n */\n iv?: Uint8Array;\n}\n\nexport interface DecryptOptions {\n /** Same AAD that was supplied to `encrypt`. */\n aad?: Uint8Array;\n}\n\n/**\n * Validate that a key is a 32-byte buffer suitable for AES-256.\n */\nfunction assertAesKey(key: Uint8Array): void {\n if (!(key instanceof Uint8Array)) {\n throw new Error(\"key must be a Uint8Array\");\n }\n if (key.length !== AES_KEY_LENGTH) {\n throw new Error(\n `AES-256-GCM requires a ${AES_KEY_LENGTH}-byte key, got ${key.length}`,\n );\n }\n}\n\n/**\n * Encrypt `plaintext` under `key` and return a sealed envelope buffer.\n *\n * @param key 32-byte AES-256 key (from `deriveKey`).\n * @param salt 16-byte KDF salt to embed in the envelope. The caller is\n * responsible for using the same salt that was passed to the KDF.\n * @param plaintext the bytes to encrypt.\n * @param options optional `aad` / `iv` overrides.\n */\nexport function seal(\n key: Uint8Array,\n salt: Uint8Array,\n plaintext: Uint8Array,\n options: EncryptOptions = {},\n): Buffer {\n assertAesKey(key);\n if (!(salt instanceof Uint8Array) || salt.length !== ENVELOPE_SALT_LENGTH) {\n throw new Error(\n `salt must be ${ENVELOPE_SALT_LENGTH} bytes, got ${salt?.length ?? \"non-buffer\"}`,\n );\n }\n if (!(plaintext instanceof Uint8Array)) {\n throw new Error(\"plaintext must be a Uint8Array\");\n }\n let iv: Uint8Array;\n if (options.iv) {\n if (options.iv.length !== IV_LENGTH) {\n throw new Error(`iv must be ${IV_LENGTH} bytes, got ${options.iv.length}`);\n }\n iv = options.iv;\n } else {\n iv = randomBytes(IV_LENGTH);\n }\n\n const cipher = createCipheriv(\"aes-256-gcm\", Buffer.from(key), Buffer.from(iv), {\n authTagLength: AUTH_TAG_LENGTH,\n });\n // Codex P1: bind the envelope header (version + salt) into AAD so\n // flipping the salt or version on a sealed envelope triggers an\n // auth failure on open. Without this, callers using a metadata-\n // derived store key would still decrypt successfully even after\n // the per-blob salt was tampered with — silently desynchronizing\n // per-blob salt from metadata/recovery logic. Caller-supplied AAD\n // is appended after the header so existing AAD usage stays intact.\n const headerAad = buildHeaderAad(salt);\n const finalAad = options.aad\n ? Buffer.concat([headerAad, Buffer.from(options.aad)])\n : headerAad;\n cipher.setAAD(finalAad);\n const ciphertext = Buffer.concat([cipher.update(Buffer.from(plaintext)), cipher.final()]);\n const authTag = cipher.getAuthTag();\n if (authTag.length !== AUTH_TAG_LENGTH) {\n // Defensive: Node always produces 16 bytes when authTagLength is 16.\n throw new Error(`unexpected auth tag length: ${authTag.length}`);\n }\n\n const envelope = Buffer.alloc(ENVELOPE_HEADER_SIZE + ciphertext.length);\n envelope.writeUInt8(ENVELOPE_VERSION, ENVELOPE_LAYOUT.version);\n Buffer.from(salt).copy(envelope, ENVELOPE_LAYOUT.salt);\n Buffer.from(iv).copy(envelope, ENVELOPE_LAYOUT.iv);\n authTag.copy(envelope, ENVELOPE_LAYOUT.authTag);\n ciphertext.copy(envelope, ENVELOPE_LAYOUT.ciphertext);\n return envelope;\n}\n\n/** Parsed view of a sealed envelope. Useful for inspection in tests. */\nexport interface ParsedEnvelope {\n version: number;\n salt: Buffer;\n iv: Buffer;\n authTag: Buffer;\n ciphertext: Buffer;\n}\n\n/**\n * Parse a sealed envelope into its component fields without\n * decrypting. Throws on malformed input. The returned buffers are\n * sub-views (not copies) — do not mutate.\n */\nexport function parseEnvelope(envelope: Uint8Array): ParsedEnvelope {\n if (!(envelope instanceof Uint8Array)) {\n throw new Error(\"envelope must be a Uint8Array\");\n }\n if (envelope.length < ENVELOPE_HEADER_SIZE) {\n throw new Error(\n `envelope too short: need ≥ ${ENVELOPE_HEADER_SIZE} bytes, got ${envelope.length}`,\n );\n }\n const buf = Buffer.from(envelope.buffer, envelope.byteOffset, envelope.byteLength);\n const version = buf.readUInt8(ENVELOPE_LAYOUT.version);\n if (version !== ENVELOPE_VERSION) {\n throw new Error(\n `unsupported envelope version: ${version} (this build supports ${ENVELOPE_VERSION})`,\n );\n }\n return {\n version,\n salt: buf.subarray(ENVELOPE_LAYOUT.salt, ENVELOPE_LAYOUT.salt + ENVELOPE_SALT_LENGTH),\n iv: buf.subarray(ENVELOPE_LAYOUT.iv, ENVELOPE_LAYOUT.iv + IV_LENGTH),\n authTag: buf.subarray(\n ENVELOPE_LAYOUT.authTag,\n ENVELOPE_LAYOUT.authTag + AUTH_TAG_LENGTH,\n ),\n ciphertext: buf.subarray(ENVELOPE_LAYOUT.ciphertext),\n };\n}\n\n/**\n * Decrypt a sealed envelope and return the plaintext.\n *\n * Throws on:\n * - malformed envelope (wrong length, wrong version);\n * - wrong key (auth-tag mismatch);\n * - tampered ciphertext / iv / auth tag (auth-tag mismatch);\n * - mismatched AAD (auth-tag mismatch).\n *\n * The same error class is intentional: from the caller's standpoint\n * \"wrong passphrase\" and \"tampered ciphertext\" should both be\n * non-recoverable failures.\n */\nexport function open(\n key: Uint8Array,\n envelope: Uint8Array,\n options: DecryptOptions = {},\n): Buffer {\n assertAesKey(key);\n const parsed = parseEnvelope(envelope);\n const decipher = createDecipheriv(\"aes-256-gcm\", Buffer.from(key), parsed.iv, {\n authTagLength: AUTH_TAG_LENGTH,\n });\n decipher.setAuthTag(parsed.authTag);\n // Codex P1: header (version + salt) is bound at seal time.\n // Reconstruct it identically so a tampered salt fails auth.\n const headerAad = buildHeaderAad(parsed.salt);\n const finalAad = options.aad\n ? Buffer.concat([headerAad, Buffer.from(options.aad)])\n : headerAad;\n decipher.setAAD(finalAad);\n // `final()` throws if the auth tag doesn't validate.\n return Buffer.concat([decipher.update(parsed.ciphertext), decipher.final()]);\n}\n\n/**\n * Build the canonical header AAD: a single byte version followed by\n * the per-blob salt. Binds the immutable envelope header into AES-GCM\n * authentication so tampering with either value triggers auth failure\n * on open (codex P1 on PR #718).\n */\nfunction buildHeaderAad(salt: Uint8Array): Buffer {\n const out = Buffer.alloc(1 + ENVELOPE_SALT_LENGTH);\n out.writeUInt8(ENVELOPE_VERSION, 0);\n Buffer.from(salt).copy(out, 1);\n return out;\n}\n\n/**\n * Generate a fresh random salt of the canonical envelope length.\n * Convenience wrapper so callers don't reach into `node:crypto`.\n */\nexport function generateSalt(): Buffer {\n return randomBytes(ENVELOPE_SALT_LENGTH);\n}\n"],"mappings":";AA8CA,SAAS,gBAAgB,kBAAkB,mBAAmB;AAGvD,IAAM,mBAAmB;AAGzB,IAAM,YAAY;AAGlB,IAAM,kBAAkB;AAGxB,IAAM,uBAAuB;AAG7B,IAAM,iBAAiB;AAGvB,IAAM,kBAAkB,OAAO,OAAO;AAAA,EAC3C,SAAS;AAAA,EACT,MAAM;AAAA,EACN,IAAI,IAAI;AAAA,EACR,SAAS,IAAI,uBAAuB;AAAA,EACpC,YAAY,IAAI,uBAAuB,YAAY;AACrD,CAAC;AAGM,IAAM,uBAAuB,gBAAgB;AAyBpD,SAAS,aAAa,KAAuB;AAC3C,MAAI,EAAE,eAAe,aAAa;AAChC,UAAM,IAAI,MAAM,0BAA0B;AAAA,EAC5C;AACA,MAAI,IAAI,WAAW,gBAAgB;AACjC,UAAM,IAAI;AAAA,MACR,0BAA0B,cAAc,kBAAkB,IAAI,MAAM;AAAA,IACtE;AAAA,EACF;AACF;AAWO,SAAS,KACd,KACA,MACA,WACA,UAA0B,CAAC,GACnB;AACR,eAAa,GAAG;AAChB,MAAI,EAAE,gBAAgB,eAAe,KAAK,WAAW,sBAAsB;AACzE,UAAM,IAAI;AAAA,MACR,gBAAgB,oBAAoB,eAAe,MAAM,UAAU,YAAY;AAAA,IACjF;AAAA,EACF;AACA,MAAI,EAAE,qBAAqB,aAAa;AACtC,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AACA,MAAI;AACJ,MAAI,QAAQ,IAAI;AACd,QAAI,QAAQ,GAAG,WAAW,WAAW;AACnC,YAAM,IAAI,MAAM,cAAc,SAAS,eAAe,QAAQ,GAAG,MAAM,EAAE;AAAA,IAC3E;AACA,SAAK,QAAQ;AAAA,EACf,OAAO;AACL,SAAK,YAAY,SAAS;AAAA,EAC5B;AAEA,QAAM,SAAS,eAAe,eAAe,OAAO,KAAK,GAAG,GAAG,OAAO,KAAK,EAAE,GAAG;AAAA,IAC9E,eAAe;AAAA,EACjB,CAAC;AAQD,QAAM,YAAY,eAAe,IAAI;AACrC,QAAM,WAAW,QAAQ,MACrB,OAAO,OAAO,CAAC,WAAW,OAAO,KAAK,QAAQ,GAAG,CAAC,CAAC,IACnD;AACJ,SAAO,OAAO,QAAQ;AACtB,QAAM,aAAa,OAAO,OAAO,CAAC,OAAO,OAAO,OAAO,KAAK,SAAS,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC;AACxF,QAAM,UAAU,OAAO,WAAW;AAClC,MAAI,QAAQ,WAAW,iBAAiB;AAEtC,UAAM,IAAI,MAAM,+BAA+B,QAAQ,MAAM,EAAE;AAAA,EACjE;AAEA,QAAM,WAAW,OAAO,MAAM,uBAAuB,WAAW,MAAM;AACtE,WAAS,WAAW,kBAAkB,gBAAgB,OAAO;AAC7D,SAAO,KAAK,IAAI,EAAE,KAAK,UAAU,gBAAgB,IAAI;AACrD,SAAO,KAAK,EAAE,EAAE,KAAK,UAAU,gBAAgB,EAAE;AACjD,UAAQ,KAAK,UAAU,gBAAgB,OAAO;AAC9C,aAAW,KAAK,UAAU,gBAAgB,UAAU;AACpD,SAAO;AACT;AAgBO,SAAS,cAAc,UAAsC;AAClE,MAAI,EAAE,oBAAoB,aAAa;AACrC,UAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AACA,MAAI,SAAS,SAAS,sBAAsB;AAC1C,UAAM,IAAI;AAAA,MACR,mCAA8B,oBAAoB,eAAe,SAAS,MAAM;AAAA,IAClF;AAAA,EACF;AACA,QAAM,MAAM,OAAO,KAAK,SAAS,QAAQ,SAAS,YAAY,SAAS,UAAU;AACjF,QAAM,UAAU,IAAI,UAAU,gBAAgB,OAAO;AACrD,MAAI,YAAY,kBAAkB;AAChC,UAAM,IAAI;AAAA,MACR,iCAAiC,OAAO,yBAAyB,gBAAgB;AAAA,IACnF;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA,MAAM,IAAI,SAAS,gBAAgB,MAAM,gBAAgB,OAAO,oBAAoB;AAAA,IACpF,IAAI,IAAI,SAAS,gBAAgB,IAAI,gBAAgB,KAAK,SAAS;AAAA,IACnE,SAAS,IAAI;AAAA,MACX,gBAAgB;AAAA,MAChB,gBAAgB,UAAU;AAAA,IAC5B;AAAA,IACA,YAAY,IAAI,SAAS,gBAAgB,UAAU;AAAA,EACrD;AACF;AAeO,SAAS,KACd,KACA,UACA,UAA0B,CAAC,GACnB;AACR,eAAa,GAAG;AAChB,QAAM,SAAS,cAAc,QAAQ;AACrC,QAAM,WAAW,iBAAiB,eAAe,OAAO,KAAK,GAAG,GAAG,OAAO,IAAI;AAAA,IAC5E,eAAe;AAAA,EACjB,CAAC;AACD,WAAS,WAAW,OAAO,OAAO;AAGlC,QAAM,YAAY,eAAe,OAAO,IAAI;AAC5C,QAAM,WAAW,QAAQ,MACrB,OAAO,OAAO,CAAC,WAAW,OAAO,KAAK,QAAQ,GAAG,CAAC,CAAC,IACnD;AACJ,WAAS,OAAO,QAAQ;AAExB,SAAO,OAAO,OAAO,CAAC,SAAS,OAAO,OAAO,UAAU,GAAG,SAAS,MAAM,CAAC,CAAC;AAC7E;AAQA,SAAS,eAAe,MAA0B;AAChD,QAAM,MAAM,OAAO,MAAM,IAAI,oBAAoB;AACjD,MAAI,WAAW,kBAAkB,CAAC;AAClC,SAAO,KAAK,IAAI,EAAE,KAAK,KAAK,CAAC;AAC7B,SAAO;AACT;AAMO,SAAS,eAAuB;AACrC,SAAO,YAAY,oBAAoB;AACzC;","names":[]}