@emilia-protocol/gate 0.11.0 → 0.14.0

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 (425) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +310 -0
  3. package/action-control-manifest.js +3 -268
  4. package/action-escrow-custodian.js +3 -394
  5. package/action-escrow-evidence.js +3 -858
  6. package/action-escrow-package.js +3 -1668
  7. package/action-escrow-postgres.js +3 -337
  8. package/action-escrow-state.js +3 -396
  9. package/action-escrow-verifiers.js +3 -331
  10. package/action-escrow.js +3 -2447
  11. package/action-packs.js +3 -140
  12. package/adapters/_kit.js +3 -104
  13. package/adapters/aws.js +3 -108
  14. package/adapters/cloudflare.js +3 -54
  15. package/adapters/gcp.js +3 -70
  16. package/adapters/github.js +3 -109
  17. package/adapters/jira.js +3 -55
  18. package/adapters/k8s.js +3 -70
  19. package/adapters/linear.js +3 -55
  20. package/adapters/salesforce.js +3 -55
  21. package/adapters/stripe.js +3 -81
  22. package/adapters/supabase.js +3 -121
  23. package/adapters/terraform.js +3 -59
  24. package/adapters/vercel.js +3 -84
  25. package/aec-execution.js +3 -312
  26. package/breakglass.js +3 -582
  27. package/capability-receipt.js +4 -0
  28. package/cf1-conformance.js +3 -106
  29. package/challenge-store.js +3 -69
  30. package/control-plane.js +3 -340
  31. package/coverage.js +3 -721
  32. package/demo.mjs +1 -1
  33. package/deployment-attestation.js +3 -247
  34. package/dist/action-control-manifest.d.ts +82 -0
  35. package/dist/action-control-manifest.d.ts.map +1 -0
  36. package/dist/action-control-manifest.js +422 -0
  37. package/dist/action-control-manifest.js.map +1 -0
  38. package/dist/action-escrow-custodian.d.ts +74 -0
  39. package/dist/action-escrow-custodian.d.ts.map +1 -0
  40. package/dist/action-escrow-custodian.js +363 -0
  41. package/dist/action-escrow-custodian.js.map +1 -0
  42. package/dist/action-escrow-evidence.d.ts +130 -0
  43. package/dist/action-escrow-evidence.d.ts.map +1 -0
  44. package/dist/action-escrow-evidence.js +1012 -0
  45. package/dist/action-escrow-evidence.js.map +1 -0
  46. package/dist/action-escrow-package.d.ts +10 -0
  47. package/dist/action-escrow-package.d.ts.map +1 -0
  48. package/dist/action-escrow-package.js +1583 -0
  49. package/dist/action-escrow-package.js.map +1 -0
  50. package/dist/action-escrow-postgres.d.ts +62 -0
  51. package/dist/action-escrow-postgres.d.ts.map +1 -0
  52. package/dist/action-escrow-postgres.js +339 -0
  53. package/dist/action-escrow-postgres.js.map +1 -0
  54. package/dist/action-escrow-state.d.ts +141 -0
  55. package/dist/action-escrow-state.d.ts.map +1 -0
  56. package/dist/action-escrow-state.js +413 -0
  57. package/dist/action-escrow-state.js.map +1 -0
  58. package/dist/action-escrow-verifiers.d.ts +65 -0
  59. package/dist/action-escrow-verifiers.d.ts.map +1 -0
  60. package/dist/action-escrow-verifiers.js +421 -0
  61. package/dist/action-escrow-verifiers.js.map +1 -0
  62. package/dist/action-escrow.d.ts +112 -0
  63. package/dist/action-escrow.d.ts.map +1 -0
  64. package/dist/action-escrow.js +2661 -0
  65. package/dist/action-escrow.js.map +1 -0
  66. package/dist/action-packs.d.ts +54 -0
  67. package/dist/action-packs.d.ts.map +1 -0
  68. package/dist/action-packs.js +143 -0
  69. package/dist/action-packs.js.map +1 -0
  70. package/dist/adapters/_kit.d.ts +50 -0
  71. package/dist/adapters/_kit.d.ts.map +1 -0
  72. package/dist/adapters/_kit.js +98 -0
  73. package/dist/adapters/_kit.js.map +1 -0
  74. package/dist/adapters/aws.d.ts +158 -0
  75. package/dist/adapters/aws.d.ts.map +1 -0
  76. package/dist/adapters/aws.js +136 -0
  77. package/dist/adapters/aws.js.map +1 -0
  78. package/dist/adapters/cloudflare.d.ts +116 -0
  79. package/dist/adapters/cloudflare.d.ts.map +1 -0
  80. package/dist/adapters/cloudflare.js +75 -0
  81. package/dist/adapters/cloudflare.js.map +1 -0
  82. package/dist/adapters/gcp.d.ts +139 -0
  83. package/dist/adapters/gcp.d.ts.map +1 -0
  84. package/dist/adapters/gcp.js +69 -0
  85. package/dist/adapters/gcp.js.map +1 -0
  86. package/dist/adapters/github.d.ts +123 -0
  87. package/dist/adapters/github.d.ts.map +1 -0
  88. package/dist/adapters/github.js +105 -0
  89. package/dist/adapters/github.js.map +1 -0
  90. package/dist/adapters/jira.d.ts +109 -0
  91. package/dist/adapters/jira.d.ts.map +1 -0
  92. package/dist/adapters/jira.js +54 -0
  93. package/dist/adapters/jira.js.map +1 -0
  94. package/dist/adapters/k8s.d.ts +139 -0
  95. package/dist/adapters/k8s.d.ts.map +1 -0
  96. package/dist/adapters/k8s.js +69 -0
  97. package/dist/adapters/k8s.js.map +1 -0
  98. package/dist/adapters/linear.d.ts +109 -0
  99. package/dist/adapters/linear.d.ts.map +1 -0
  100. package/dist/adapters/linear.js +54 -0
  101. package/dist/adapters/linear.js.map +1 -0
  102. package/dist/adapters/salesforce.d.ts +109 -0
  103. package/dist/adapters/salesforce.d.ts.map +1 -0
  104. package/dist/adapters/salesforce.js +54 -0
  105. package/dist/adapters/salesforce.js.map +1 -0
  106. package/dist/adapters/stripe.d.ts +116 -0
  107. package/dist/adapters/stripe.d.ts.map +1 -0
  108. package/dist/adapters/stripe.js +77 -0
  109. package/dist/adapters/stripe.js.map +1 -0
  110. package/dist/adapters/supabase.d.ts +127 -0
  111. package/dist/adapters/supabase.d.ts.map +1 -0
  112. package/dist/adapters/supabase.js +112 -0
  113. package/dist/adapters/supabase.js.map +1 -0
  114. package/dist/adapters/terraform.d.ts +109 -0
  115. package/dist/adapters/terraform.d.ts.map +1 -0
  116. package/dist/adapters/terraform.js +58 -0
  117. package/dist/adapters/terraform.js.map +1 -0
  118. package/dist/adapters/vercel.d.ts +114 -0
  119. package/dist/adapters/vercel.d.ts.map +1 -0
  120. package/dist/adapters/vercel.js +81 -0
  121. package/dist/adapters/vercel.js.map +1 -0
  122. package/dist/aec-execution.d.ts +107 -0
  123. package/dist/aec-execution.d.ts.map +1 -0
  124. package/dist/aec-execution.js +334 -0
  125. package/dist/aec-execution.js.map +1 -0
  126. package/dist/breakglass.d.ts +205 -0
  127. package/dist/breakglass.d.ts.map +1 -0
  128. package/dist/breakglass.js +627 -0
  129. package/dist/breakglass.js.map +1 -0
  130. package/dist/capability-receipt.d.ts +601 -0
  131. package/dist/capability-receipt.d.ts.map +1 -0
  132. package/dist/capability-receipt.js +1177 -0
  133. package/dist/capability-receipt.js.map +1 -0
  134. package/dist/cf1-conformance.d.ts +83 -0
  135. package/dist/cf1-conformance.d.ts.map +1 -0
  136. package/dist/cf1-conformance.js +94 -0
  137. package/dist/cf1-conformance.js.map +1 -0
  138. package/dist/challenge-store.d.ts +20 -0
  139. package/dist/challenge-store.d.ts.map +1 -0
  140. package/dist/challenge-store.js +62 -0
  141. package/dist/challenge-store.js.map +1 -0
  142. package/dist/control-plane.d.ts +136 -0
  143. package/dist/control-plane.d.ts.map +1 -0
  144. package/dist/control-plane.js +349 -0
  145. package/dist/control-plane.js.map +1 -0
  146. package/dist/coverage.d.ts +156 -0
  147. package/dist/coverage.d.ts.map +1 -0
  148. package/dist/coverage.js +768 -0
  149. package/dist/coverage.js.map +1 -0
  150. package/dist/deployment-attestation.d.ts +93 -0
  151. package/dist/deployment-attestation.d.ts.map +1 -0
  152. package/dist/deployment-attestation.js +262 -0
  153. package/dist/deployment-attestation.js.map +1 -0
  154. package/dist/eg1-conformance.d.ts +286 -0
  155. package/dist/eg1-conformance.d.ts.map +1 -0
  156. package/dist/eg1-conformance.js +379 -0
  157. package/dist/eg1-conformance.js.map +1 -0
  158. package/dist/enterprise.d.ts +88 -0
  159. package/dist/enterprise.d.ts.map +1 -0
  160. package/dist/enterprise.js +194 -0
  161. package/dist/enterprise.js.map +1 -0
  162. package/dist/evidence-postgres.d.ts +123 -0
  163. package/dist/evidence-postgres.d.ts.map +1 -0
  164. package/dist/evidence-postgres.js +343 -0
  165. package/dist/evidence-postgres.js.map +1 -0
  166. package/dist/evidence.d.ts +113 -0
  167. package/dist/evidence.d.ts.map +1 -0
  168. package/dist/evidence.js +369 -0
  169. package/dist/evidence.js.map +1 -0
  170. package/dist/execution-binding.d.ts +49 -0
  171. package/dist/execution-binding.d.ts.map +1 -0
  172. package/dist/execution-binding.js +243 -0
  173. package/dist/execution-binding.js.map +1 -0
  174. package/dist/formal-runtime-map.d.ts +42 -0
  175. package/dist/formal-runtime-map.d.ts.map +1 -0
  176. package/dist/formal-runtime-map.js +23 -0
  177. package/dist/formal-runtime-map.js.map +1 -0
  178. package/dist/index.d.ts +1003 -0
  179. package/dist/index.d.ts.map +1 -0
  180. package/dist/index.js +1737 -0
  181. package/dist/index.js.map +1 -0
  182. package/dist/key-registry.d.ts +60 -0
  183. package/dist/key-registry.d.ts.map +1 -0
  184. package/dist/key-registry.js +144 -0
  185. package/dist/key-registry.js.map +1 -0
  186. package/dist/mcp.d.ts +53 -0
  187. package/dist/mcp.d.ts.map +1 -0
  188. package/dist/mcp.js +112 -0
  189. package/dist/mcp.js.map +1 -0
  190. package/dist/metering.d.ts +80 -0
  191. package/dist/metering.d.ts.map +1 -0
  192. package/dist/metering.js +227 -0
  193. package/dist/metering.js.map +1 -0
  194. package/dist/metrics.d.ts +68 -0
  195. package/dist/metrics.d.ts.map +1 -0
  196. package/dist/metrics.js +242 -0
  197. package/dist/metrics.js.map +1 -0
  198. package/dist/network-witness.d.ts +167 -0
  199. package/dist/network-witness.d.ts.map +1 -0
  200. package/dist/network-witness.js +520 -0
  201. package/dist/network-witness.js.map +1 -0
  202. package/dist/proposal-to-effect.d.ts +146 -0
  203. package/dist/proposal-to-effect.d.ts.map +1 -0
  204. package/dist/proposal-to-effect.js +427 -0
  205. package/dist/proposal-to-effect.js.map +1 -0
  206. package/dist/protocol-state.d.ts +141 -0
  207. package/dist/protocol-state.d.ts.map +1 -0
  208. package/dist/protocol-state.js +106 -0
  209. package/dist/protocol-state.js.map +1 -0
  210. package/dist/receipt-program.d.ts +59 -0
  211. package/dist/receipt-program.d.ts.map +1 -0
  212. package/dist/receipt-program.js +1053 -0
  213. package/dist/receipt-program.js.map +1 -0
  214. package/dist/reliance-kernel.d.ts +66 -0
  215. package/dist/reliance-kernel.d.ts.map +1 -0
  216. package/dist/reliance-kernel.js +103 -0
  217. package/dist/reliance-kernel.js.map +1 -0
  218. package/dist/reliance-packet.d.ts +67 -0
  219. package/dist/reliance-packet.d.ts.map +1 -0
  220. package/dist/reliance-packet.js +176 -0
  221. package/dist/reliance-packet.js.map +1 -0
  222. package/dist/remedy-program-postgres.d.ts +37 -0
  223. package/dist/remedy-program-postgres.d.ts.map +1 -0
  224. package/dist/remedy-program-postgres.js +291 -0
  225. package/dist/remedy-program-postgres.js.map +1 -0
  226. package/dist/remedy-program-receipt.d.ts +97 -0
  227. package/dist/remedy-program-receipt.d.ts.map +1 -0
  228. package/dist/remedy-program-receipt.js +817 -0
  229. package/dist/remedy-program-receipt.js.map +1 -0
  230. package/dist/remedy-program.d.ts +76 -0
  231. package/dist/remedy-program.d.ts.map +1 -0
  232. package/dist/remedy-program.js +1346 -0
  233. package/dist/remedy-program.js.map +1 -0
  234. package/dist/reports/art14.d.ts +101 -0
  235. package/dist/reports/art14.d.ts.map +1 -0
  236. package/dist/reports/art14.js +340 -0
  237. package/dist/reports/art14.js.map +1 -0
  238. package/dist/reports/assurance-package.d.ts +197 -0
  239. package/dist/reports/assurance-package.d.ts.map +1 -0
  240. package/dist/reports/assurance-package.js +313 -0
  241. package/dist/reports/assurance-package.js.map +1 -0
  242. package/dist/reports/auditor-workpaper.d.ts +194 -0
  243. package/dist/reports/auditor-workpaper.d.ts.map +1 -0
  244. package/dist/reports/auditor-workpaper.js +545 -0
  245. package/dist/reports/auditor-workpaper.js.map +1 -0
  246. package/dist/reports/external-verification.d.ts +76 -0
  247. package/dist/reports/external-verification.d.ts.map +1 -0
  248. package/dist/reports/external-verification.js +209 -0
  249. package/dist/reports/external-verification.js.map +1 -0
  250. package/dist/reports/reperform.d.ts +122 -0
  251. package/dist/reports/reperform.d.ts.map +1 -0
  252. package/dist/reports/reperform.js +432 -0
  253. package/dist/reports/reperform.js.map +1 -0
  254. package/dist/reports/underwriter.d.ts +127 -0
  255. package/dist/reports/underwriter.d.ts.map +1 -0
  256. package/dist/reports/underwriter.js +348 -0
  257. package/dist/reports/underwriter.js.map +1 -0
  258. package/dist/retention.d.ts +88 -0
  259. package/dist/retention.d.ts.map +1 -0
  260. package/dist/retention.js +90 -0
  261. package/dist/retention.js.map +1 -0
  262. package/dist/roster.d.ts +113 -0
  263. package/dist/roster.d.ts.map +1 -0
  264. package/dist/roster.js +261 -0
  265. package/dist/roster.js.map +1 -0
  266. package/dist/runtime-monitor.d.ts +132 -0
  267. package/dist/runtime-monitor.d.ts.map +1 -0
  268. package/dist/runtime-monitor.js +197 -0
  269. package/dist/runtime-monitor.js.map +1 -0
  270. package/dist/settlement.d.ts +68 -0
  271. package/dist/settlement.d.ts.map +1 -0
  272. package/dist/settlement.js +306 -0
  273. package/dist/settlement.js.map +1 -0
  274. package/dist/siem.d.ts +261 -0
  275. package/dist/siem.d.ts.map +1 -0
  276. package/dist/siem.js +247 -0
  277. package/dist/siem.js.map +1 -0
  278. package/dist/store-postgres.d.ts +107 -0
  279. package/dist/store-postgres.d.ts.map +1 -0
  280. package/dist/store-postgres.js +152 -0
  281. package/dist/store-postgres.js.map +1 -0
  282. package/dist/store.d.ts +95 -0
  283. package/dist/store.d.ts.map +1 -0
  284. package/dist/store.js +202 -0
  285. package/dist/store.js.map +1 -0
  286. package/dist/strict-json.d.ts +14 -0
  287. package/dist/strict-json.d.ts.map +1 -0
  288. package/dist/strict-json.js +132 -0
  289. package/dist/strict-json.js.map +1 -0
  290. package/dist/trust-program-adapters.d.ts +122 -0
  291. package/dist/trust-program-adapters.d.ts.map +1 -0
  292. package/dist/trust-program-adapters.js +802 -0
  293. package/dist/trust-program-adapters.js.map +1 -0
  294. package/dist/trust-program-postgres.d.ts +41 -0
  295. package/dist/trust-program-postgres.d.ts.map +1 -0
  296. package/dist/trust-program-postgres.js +346 -0
  297. package/dist/trust-program-postgres.js.map +1 -0
  298. package/dist/trust-program-revocation.d.ts +206 -0
  299. package/dist/trust-program-revocation.d.ts.map +1 -0
  300. package/dist/trust-program-revocation.js +600 -0
  301. package/dist/trust-program-revocation.js.map +1 -0
  302. package/dist/trust-program.d.ts +197 -0
  303. package/dist/trust-program.d.ts.map +1 -0
  304. package/dist/trust-program.js +1351 -0
  305. package/dist/trust-program.js.map +1 -0
  306. package/dist/witness-postgres.d.ts +43 -0
  307. package/dist/witness-postgres.d.ts.map +1 -0
  308. package/dist/witness-postgres.js +92 -0
  309. package/dist/witness-postgres.js.map +1 -0
  310. package/dist/zk-range-proof.d.ts +78 -0
  311. package/dist/zk-range-proof.d.ts.map +1 -0
  312. package/dist/zk-range-proof.js +228 -0
  313. package/dist/zk-range-proof.js.map +1 -0
  314. package/eg1-conformance.js +3 -404
  315. package/enterprise.js +3 -180
  316. package/ep-assure.mjs +1 -0
  317. package/evidence-postgres.js +3 -356
  318. package/evidence.js +4 -360
  319. package/execution-binding.js +3 -212
  320. package/formal-runtime-map.js +4 -0
  321. package/index.js +4 -1249
  322. package/key-registry.js +3 -134
  323. package/mcp.js +3 -109
  324. package/metering.js +3 -226
  325. package/metrics.js +3 -231
  326. package/network-witness.js +3 -499
  327. package/package.json +35 -4
  328. package/proposal-to-effect.js +4 -0
  329. package/receipt-program.js +4 -0
  330. package/reliance-kernel.js +3 -112
  331. package/reliance-packet.js +3 -175
  332. package/remedy-program-postgres.js +4 -0
  333. package/remedy-program-receipt.js +4 -0
  334. package/remedy-program.js +4 -0
  335. package/reports/art14.js +0 -0
  336. package/reports/assurance-package.js +2 -312
  337. package/reports/auditor-workpaper.js +3 -537
  338. package/reports/external-verification.js +3 -222
  339. package/reports/reperform.js +3 -424
  340. package/reports/underwriter.js +3 -339
  341. package/retention.js +3 -84
  342. package/roster.js +3 -264
  343. package/runtime-monitor.js +4 -0
  344. package/settlement.js +3 -299
  345. package/siem.js +3 -235
  346. package/src/action-control-manifest.ts +424 -0
  347. package/src/action-escrow-custodian.ts +427 -0
  348. package/src/action-escrow-evidence.ts +1178 -0
  349. package/src/action-escrow-package.ts +1821 -0
  350. package/src/action-escrow-postgres.ts +366 -0
  351. package/src/action-escrow-state.ts +498 -0
  352. package/src/action-escrow-verifiers.ts +484 -0
  353. package/src/action-escrow.ts +3039 -0
  354. package/src/action-packs.ts +170 -0
  355. package/src/adapters/_kit.ts +117 -0
  356. package/src/adapters/aws.ts +142 -0
  357. package/src/adapters/cloudflare.ts +78 -0
  358. package/src/adapters/gcp.ts +71 -0
  359. package/src/adapters/github.ts +110 -0
  360. package/src/adapters/jira.ts +56 -0
  361. package/src/adapters/k8s.ts +71 -0
  362. package/src/adapters/linear.ts +56 -0
  363. package/src/adapters/salesforce.ts +56 -0
  364. package/src/adapters/stripe.ts +82 -0
  365. package/src/adapters/supabase.ts +122 -0
  366. package/src/adapters/terraform.ts +60 -0
  367. package/src/adapters/vercel.ts +85 -0
  368. package/src/aec-execution.ts +354 -0
  369. package/src/breakglass.ts +647 -0
  370. package/src/capability-receipt.ts +1258 -0
  371. package/src/cf1-conformance.ts +120 -0
  372. package/src/challenge-store.ts +70 -0
  373. package/src/control-plane.ts +374 -0
  374. package/src/coverage.ts +832 -0
  375. package/src/deployment-attestation.ts +259 -0
  376. package/src/eg1-conformance.ts +471 -0
  377. package/src/enterprise.ts +195 -0
  378. package/src/evidence-postgres.ts +374 -0
  379. package/src/evidence.ts +367 -0
  380. package/src/execution-binding.ts +236 -0
  381. package/src/formal-runtime-map.ts +24 -0
  382. package/src/index.ts +2127 -0
  383. package/src/key-registry.ts +150 -0
  384. package/src/mcp.ts +120 -0
  385. package/src/metering.ts +237 -0
  386. package/src/metrics.ts +232 -0
  387. package/src/network-witness.ts +585 -0
  388. package/src/proposal-to-effect.ts +571 -0
  389. package/src/protocol-state.ts +143 -0
  390. package/src/protocol-state.typecheck.ts +94 -0
  391. package/src/receipt-program.ts +1105 -0
  392. package/src/reliance-kernel.ts +119 -0
  393. package/src/reliance-packet.ts +206 -0
  394. package/src/remedy-program-postgres.ts +367 -0
  395. package/src/remedy-program-receipt.ts +891 -0
  396. package/src/remedy-program.ts +1388 -0
  397. package/src/reports/art14.ts +361 -0
  398. package/src/reports/assurance-package.ts +330 -0
  399. package/src/reports/auditor-workpaper.ts +558 -0
  400. package/src/reports/external-verification.ts +232 -0
  401. package/src/reports/reperform.ts +441 -0
  402. package/src/reports/underwriter.ts +356 -0
  403. package/src/retention.ts +100 -0
  404. package/src/roster.ts +273 -0
  405. package/src/runtime-monitor.ts +217 -0
  406. package/src/settlement.ts +313 -0
  407. package/src/siem.ts +247 -0
  408. package/src/store-postgres.ts +167 -0
  409. package/src/store.ts +214 -0
  410. package/src/strict-json.ts +115 -0
  411. package/src/trust-program-adapters.ts +847 -0
  412. package/src/trust-program-postgres.ts +429 -0
  413. package/src/trust-program-revocation.ts +751 -0
  414. package/src/trust-program.ts +1460 -0
  415. package/src/witness-postgres.ts +106 -0
  416. package/src/zk-range-proof.ts +250 -0
  417. package/store-postgres.js +3 -161
  418. package/store.js +4 -198
  419. package/strict-json.js +3 -102
  420. package/trust-program-adapters.js +4 -0
  421. package/trust-program-postgres.js +4 -0
  422. package/trust-program-revocation.js +4 -0
  423. package/trust-program.js +4 -0
  424. package/witness-postgres.js +3 -96
  425. package/zk-range-proof.js +4 -0
@@ -0,0 +1,369 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @emilia-protocol/gate — evidence log (tamper-detecting audit of decisions).
4
+ * @license Apache-2.0
5
+ *
6
+ * Every gate decision — allow or deny — appends a hash-chained record. Each
7
+ * record commits to the previous one, so removing or altering any decision
8
+ * breaks the chain and `verify()` catches it. This is the compliance and
9
+ * insurance artifact: a provable account of exactly which consequential actions
10
+ * were authorized, refused, and why. Default sink is in-memory; pass `sink` to
11
+ * stream records to storage. This local chain detects alteration only when the
12
+ * verifier receives its complete history from genesis; a sink alone cannot
13
+ * prevent truncation, restart-from-genesis, or cross-replica forks. Use
14
+ * createAtomicEvidenceLog for a shared production head.
15
+ *
16
+ * Hashing is over CANONICAL JSON (sorted keys) so the same logical record hashes
17
+ * identically across systems and languages — a plain JSON.stringify is
18
+ * insertion-order dependent and would make cross-system verification fragile.
19
+ *
20
+ * `strict` mode makes the log fail CLOSED: if a durable `sink` write fails, the
21
+ * record is NOT appended and `record()` throws. The gate uses this so it never
22
+ * authorizes an action it cannot durably account for. In non-strict (observe)
23
+ * mode a sink failure is best-effort and swallowed.
24
+ */
25
+ import crypto from 'node:crypto';
26
+ function sha256hex(s) {
27
+ return crypto.createHash('sha256').update(s).digest('hex');
28
+ }
29
+ /** Canonical JSON (recursive sorted keys) — matches @emilia-protocol/verify. */
30
+ export function canonicalEvidenceJson(v) {
31
+ if (v === null || v === undefined)
32
+ return JSON.stringify(v);
33
+ if (Array.isArray(v))
34
+ return `[${v.map(canonicalEvidenceJson).join(',')}]`;
35
+ if (typeof v === 'object') {
36
+ return `{${Object.keys(v).sort().map((k) => JSON.stringify(k) + ':' + canonicalEvidenceJson(v[k])).join(',')}}`;
37
+ }
38
+ return JSON.stringify(v);
39
+ }
40
+ const canonical = canonicalEvidenceJson;
41
+ export function createEvidenceLog({ sink, strict = false } = {}) {
42
+ const records = [];
43
+ let prev = 'genesis';
44
+ return {
45
+ // A sink can persist this process-local chain, but it cannot make the head
46
+ // atomic across replicas or continue it after restart. Never advertise the
47
+ // local logger as a fleet-safe production ledger.
48
+ durable: false,
49
+ persisted: typeof sink === 'function' && strict === true,
50
+ strict: strict === true,
51
+ forkAware: false,
52
+ atomicAppend: false,
53
+ async record(entry) {
54
+ // Deep-copy the caller's entry: a shallow spread embeds live references to
55
+ // nested objects, so a caller mutating them after record() would silently
56
+ // corrupt the hash-chained evidence record (and anything a sink persisted).
57
+ const snapshot = entry && typeof entry === 'object' ? structuredClone(entry) : entry;
58
+ const body = { seq: records.length, prev_hash: prev, ...snapshot };
59
+ const hash = sha256hex(canonical(body));
60
+ const rec = { ...body, hash };
61
+ if (sink) {
62
+ try {
63
+ await sink(rec);
64
+ }
65
+ catch (e) {
66
+ // Fail closed in strict mode: do NOT advance the chain, surface the
67
+ // failure so the caller (the gate) can refuse the action. The seq is
68
+ // left unconsumed so a retry produces a consistent chain.
69
+ if (strict) {
70
+ const err = new Error('evidence_sink_failed');
71
+ err.cause = e;
72
+ throw err;
73
+ }
74
+ /* non-strict (observe): best-effort, swallow — never break the gate */
75
+ }
76
+ }
77
+ records.push(rec);
78
+ prev = hash;
79
+ return rec;
80
+ },
81
+ all() {
82
+ return records.slice();
83
+ },
84
+ /** Recompute the chain; detects any altered or removed record. */
85
+ verify() {
86
+ let p = 'genesis';
87
+ for (const r of records) {
88
+ const { hash, ...body } = r;
89
+ if (body.prev_hash !== p)
90
+ return { ok: false, at: r.seq, reason: 'prev_hash_mismatch' };
91
+ if (sha256hex(canonical(body)) !== hash)
92
+ return { ok: false, at: r.seq, reason: 'hash_mismatch' };
93
+ p = hash;
94
+ }
95
+ return { ok: true, length: records.length, head: p === 'genesis' ? null : p };
96
+ },
97
+ };
98
+ }
99
+ const LOG_HEX_256 = /^[0-9a-f]{64}$/;
100
+ const LOG_RESERVED_FIELDS = new Set(['seq', 'prev_hash', 'record_id', 'hash']);
101
+ /**
102
+ * Verify one logger acknowledgement independently of the logger that emitted it.
103
+ */
104
+ export function verifyEvidenceRecord(record, { atomicRequired = false, expectedEntry } = {}) {
105
+ try {
106
+ if (!record || typeof record !== 'object' || Array.isArray(record)
107
+ || !Number.isSafeInteger(record.seq) || record.seq < 0
108
+ || (record.prev_hash !== 'genesis' && !LOG_HEX_256.test(record.prev_hash))
109
+ || !LOG_HEX_256.test(record.hash))
110
+ return false;
111
+ const hasRecordId = Object.prototype.hasOwnProperty.call(record, 'record_id');
112
+ if ((atomicRequired && !hasRecordId)
113
+ || (hasRecordId && (typeof record.record_id !== 'string'
114
+ || record.record_id.length < 16 || record.record_id.length > 256)))
115
+ return false;
116
+ const { hash, ...body } = record;
117
+ if (sha256hex(canonical(body)) !== hash)
118
+ return false;
119
+ if (expectedEntry !== undefined) {
120
+ if (!expectedEntry || typeof expectedEntry !== 'object' || Array.isArray(expectedEntry))
121
+ return false;
122
+ const entry = Object.fromEntries(Object.entries(record).filter(([key]) => !LOG_RESERVED_FIELDS.has(key)));
123
+ if (canonical(entry) !== canonical(expectedEntry))
124
+ return false;
125
+ }
126
+ return true;
127
+ }
128
+ catch {
129
+ return false;
130
+ }
131
+ }
132
+ function assertLogEntry(entry) {
133
+ if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {
134
+ throw new Error('atomic evidence entry must be an object');
135
+ }
136
+ for (const field of LOG_RESERVED_FIELDS) {
137
+ if (Object.prototype.hasOwnProperty.call(entry, field)) {
138
+ throw new Error(`atomic evidence entry must not supply reserved field ${field}`);
139
+ }
140
+ }
141
+ const stack = [{ value: entry, depth: 0 }];
142
+ const seen = new WeakSet();
143
+ let nodes = 0;
144
+ let stringBytes = 0;
145
+ while (stack.length) {
146
+ const { value, depth } = stack.pop();
147
+ if (++nodes > 50000 || depth > 64)
148
+ throw new Error('atomic evidence entry exceeds resource limits');
149
+ if (value === null || typeof value === 'boolean')
150
+ continue;
151
+ if (typeof value === 'number') {
152
+ if (!Number.isSafeInteger(value))
153
+ throw new Error('atomic evidence entry contains a non-safe integer');
154
+ continue;
155
+ }
156
+ if (typeof value === 'string') {
157
+ stringBytes += Buffer.byteLength(value, 'utf8');
158
+ if (stringBytes > 1024 * 1024)
159
+ throw new Error('atomic evidence entry exceeds string limit');
160
+ continue;
161
+ }
162
+ if (typeof value !== 'object')
163
+ throw new Error('atomic evidence entry is not canonical JSON');
164
+ if (seen.has(value))
165
+ throw new Error('atomic evidence entry contains a cycle or alias');
166
+ seen.add(value);
167
+ if (Array.isArray(value)) {
168
+ for (const child of value)
169
+ stack.push({ value: child, depth: depth + 1 });
170
+ }
171
+ else {
172
+ for (const [key, child] of Object.entries(value)) {
173
+ stringBytes += Buffer.byteLength(key, 'utf8');
174
+ if (stringBytes > 1024 * 1024)
175
+ throw new Error('atomic evidence entry exceeds string limit');
176
+ stack.push({ value: child, depth: depth + 1 });
177
+ }
178
+ }
179
+ }
180
+ }
181
+ function validateAtomicRecord(record, expectedId, expectedEntry, expectedRecord = null) {
182
+ return record?.record_id === expectedId
183
+ && verifyEvidenceRecord(record, { atomicRequired: true, expectedEntry })
184
+ && (expectedRecord === null || canonical(record) === canonical(expectedRecord));
185
+ }
186
+ function validHead(head) {
187
+ return head === null || Boolean(head && Number.isSafeInteger(head.seq) && head.seq >= 0 && LOG_HEX_256.test(head.hash));
188
+ }
189
+ /**
190
+ * Fleet-safe, fail-closed evidence log over an atomic shared-head backend.
191
+ *
192
+ * Backend contract (all operations are scoped by streamId):
193
+ * readHead(streamId) -> null | { seq, hash }
194
+ * getById(streamId, recordId) -> null | record
195
+ * appendIfHead(streamId, expectedHeadHash|null, record) -> boolean
196
+ * readAll(streamId) -> record[] // optional, for verify/all
197
+ *
198
+ * appendIfHead MUST atomically compare the current head, append the immutable
199
+ * record, reject duplicate record_id, and advance the head in one durable
200
+ * transaction. A true return MUST provide immediate read-after-write visibility
201
+ * through getById. `backend.durable === true` is a deployment capability
202
+ * assertion; this module tests the protocol but cannot prove storage hardware
203
+ * semantics.
204
+ */
205
+ export function createAtomicEvidenceLog(backend, { streamId = 'emilia-gate', maxRetries = 32, recordIdFactory = () => crypto.randomUUID(), } = {}) {
206
+ for (const method of ['readHead', 'getById', 'appendIfHead']) {
207
+ if (typeof backend?.[method] !== 'function') {
208
+ throw new Error(`createAtomicEvidenceLog: backend must implement async ${method}()`);
209
+ }
210
+ }
211
+ if (typeof streamId !== 'string' || !streamId || streamId.length > 256) {
212
+ throw new Error('createAtomicEvidenceLog: streamId must be a non-empty string of at most 256 characters');
213
+ }
214
+ if (!Number.isSafeInteger(maxRetries) || maxRetries < 1 || maxRetries > 1024) {
215
+ throw new Error('createAtomicEvidenceLog: maxRetries must be an integer from 1 to 1024');
216
+ }
217
+ if (typeof recordIdFactory !== 'function') {
218
+ throw new Error('createAtomicEvidenceLog: recordIdFactory must be a function');
219
+ }
220
+ async function recover(recordId, snapshot, expectedRecord = null) {
221
+ const existing = await backend.getById(streamId, recordId);
222
+ if (existing === null || existing === undefined)
223
+ return null;
224
+ if (!validateAtomicRecord(existing, recordId, snapshot, expectedRecord)) {
225
+ throw new Error('atomic evidence backend returned a conflicting record_id');
226
+ }
227
+ return structuredClone(existing);
228
+ }
229
+ return {
230
+ durable: backend.durable === true,
231
+ persisted: backend.durable === true,
232
+ strict: true,
233
+ forkAware: true,
234
+ atomicAppend: true,
235
+ streamId,
236
+ async health() {
237
+ if (typeof backend.health !== 'function')
238
+ return { ok: false, reason: 'backend_health_unavailable' };
239
+ return backend.health();
240
+ },
241
+ async record(entry) {
242
+ const snapshot = structuredClone(entry);
243
+ assertLogEntry(snapshot);
244
+ const recordId = recordIdFactory();
245
+ if (typeof recordId !== 'string' || recordId.length < 16 || recordId.length > 256) {
246
+ throw new Error('atomic evidence record id must be a string of 16 to 256 characters');
247
+ }
248
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
249
+ const recovered = await recover(recordId, snapshot);
250
+ if (recovered)
251
+ return recovered;
252
+ const head = await backend.readHead(streamId);
253
+ if (!validHead(head))
254
+ throw new Error('atomic evidence backend returned a malformed head');
255
+ const seq = head === null ? 0 : head.seq + 1;
256
+ const prevHash = head === null ? 'genesis' : head.hash;
257
+ const body = { seq, prev_hash: prevHash, record_id: recordId, ...snapshot };
258
+ const record = { ...body, hash: sha256hex(canonical(body)) };
259
+ try {
260
+ if ((await backend.appendIfHead(streamId, head?.hash ?? null, record)) === true) {
261
+ const persisted = await recover(recordId, snapshot, record);
262
+ if (persisted)
263
+ return persisted;
264
+ throw new Error('atomic_evidence_append_not_observable');
265
+ }
266
+ }
267
+ catch (error) {
268
+ // The append may have linearized before its response was lost. Recover
269
+ // by stable id; if no record is visible, fail closed and let the caller
270
+ // retain/freeze its execution reservation.
271
+ const afterError = await recover(recordId, snapshot, record);
272
+ if (afterError)
273
+ return afterError;
274
+ const wrapped = new Error('atomic_evidence_append_indeterminate');
275
+ wrapped.cause = error;
276
+ throw wrapped;
277
+ }
278
+ }
279
+ throw new Error('atomic_evidence_contention_limit');
280
+ },
281
+ async all() {
282
+ if (typeof backend.readAll !== 'function')
283
+ throw new Error('atomic evidence backend does not expose readAll()');
284
+ const records = await backend.readAll(streamId);
285
+ if (!Array.isArray(records))
286
+ throw new Error('atomic evidence backend returned malformed history');
287
+ return structuredClone(records);
288
+ },
289
+ async verify() {
290
+ try {
291
+ if (typeof backend.readAll !== 'function')
292
+ return { ok: false, reason: 'read_all_unavailable' };
293
+ const records = await backend.readAll(streamId);
294
+ if (!Array.isArray(records))
295
+ return { ok: false, reason: 'malformed_history' };
296
+ let prev = 'genesis';
297
+ const ids = new Set();
298
+ for (let index = 0; index < records.length; index++) {
299
+ const record = records[index];
300
+ if (!record || typeof record !== 'object' || Array.isArray(record)
301
+ || record.seq !== index || record.prev_hash !== prev
302
+ || typeof record.record_id !== 'string' || ids.has(record.record_id)) {
303
+ return { ok: false, at: index, reason: 'sequence_or_predecessor_mismatch' };
304
+ }
305
+ const { hash, ...body } = record;
306
+ if (!LOG_HEX_256.test(hash) || sha256hex(canonical(body)) !== hash) {
307
+ return { ok: false, at: index, reason: 'hash_mismatch' };
308
+ }
309
+ ids.add(record.record_id);
310
+ prev = hash;
311
+ }
312
+ const head = await backend.readHead(streamId);
313
+ const expectedHead = records.length === 0 ? null : { seq: records.length - 1, hash: prev };
314
+ if (canonical(head) !== canonical(expectedHead))
315
+ return { ok: false, reason: 'head_mismatch' };
316
+ return { ok: true, length: records.length, head: expectedHead?.hash ?? null };
317
+ }
318
+ catch {
319
+ return { ok: false, reason: 'backend_read_failed_or_malformed' };
320
+ }
321
+ },
322
+ };
323
+ }
324
+ /** In-memory contract model for tests. It is intentionally not durable. */
325
+ export function createMemoryAtomicEvidenceBackend() {
326
+ const streams = new Map();
327
+ const state = (streamId) => {
328
+ if (!streams.has(streamId))
329
+ streams.set(streamId, { records: [], byId: new Map() });
330
+ return streams.get(streamId);
331
+ };
332
+ return {
333
+ durable: false,
334
+ async readHead(streamId) {
335
+ const records = state(streamId).records;
336
+ const record = records[records.length - 1];
337
+ return record ? { seq: record.seq, hash: record.hash } : null;
338
+ },
339
+ async getById(streamId, recordId) {
340
+ return structuredClone(state(streamId).byId.get(recordId) ?? null);
341
+ },
342
+ async appendIfHead(streamId, expectedHeadHash, record) {
343
+ const s = state(streamId);
344
+ const head = s.records[s.records.length - 1] ?? null;
345
+ const actual = head?.hash ?? null;
346
+ if (actual !== expectedHeadHash || s.byId.has(record.record_id)
347
+ || record.seq !== s.records.length || record.prev_hash !== (head?.hash ?? 'genesis'))
348
+ return false;
349
+ const snapshot = structuredClone(record);
350
+ s.records.push(snapshot);
351
+ s.byId.set(snapshot.record_id, snapshot);
352
+ return true;
353
+ },
354
+ async readAll(streamId) { return structuredClone(state(streamId).records); },
355
+ };
356
+ }
357
+ export const __atomicEvidenceSecurityInternals = Object.freeze({
358
+ canonical,
359
+ assertLogEntry,
360
+ validateAtomicRecord,
361
+ validHead,
362
+ });
363
+ export default {
364
+ createEvidenceLog,
365
+ verifyEvidenceRecord,
366
+ createAtomicEvidenceLog,
367
+ createMemoryAtomicEvidenceBackend,
368
+ };
369
+ //# sourceMappingURL=evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ export declare const EXECUTION_BINDING_VERSION = "EP-GATE-EXECUTION-BINDING-v1";
2
+ export declare function canonicalize(v: any): any;
3
+ export declare function hashCanonical(v: any): string;
4
+ export declare function materialFieldsFor(requirement: any): any[];
5
+ /**
6
+ * Verifies that the signed claim and the executor-observed mutation fields
7
+ * match for the action pack. The executor must pass `observedAction` from the
8
+ * system of record, not from the agent request body.
9
+ */
10
+ export declare function verifyExecutionBinding({ requirement, receipt, observedAction }?: {
11
+ requirement?: any;
12
+ receipt?: any;
13
+ observedAction?: any;
14
+ }): {
15
+ ok: boolean;
16
+ required: boolean;
17
+ required_fields: never[];
18
+ signed_hash: null;
19
+ observed_hash: null;
20
+ '@version'?: undefined;
21
+ missing_signed_fields?: undefined;
22
+ missing_observed_fields?: undefined;
23
+ invalid_signed_fields?: undefined;
24
+ invalid_observed_fields?: undefined;
25
+ mismatched_fields?: undefined;
26
+ note?: undefined;
27
+ } | {
28
+ '@version': string;
29
+ ok: boolean;
30
+ required: boolean;
31
+ required_fields: any[];
32
+ missing_signed_fields: PropertyKey[];
33
+ missing_observed_fields: PropertyKey[];
34
+ invalid_signed_fields: PropertyKey[];
35
+ invalid_observed_fields: PropertyKey[];
36
+ mismatched_fields: PropertyKey[];
37
+ signed_hash: string | null;
38
+ observed_hash: string | null;
39
+ note: string;
40
+ };
41
+ declare const _default: {
42
+ EXECUTION_BINDING_VERSION: string;
43
+ canonicalize: typeof canonicalize;
44
+ hashCanonical: typeof hashCanonical;
45
+ materialFieldsFor: typeof materialFieldsFor;
46
+ verifyExecutionBinding: typeof verifyExecutionBinding;
47
+ };
48
+ export default _default;
49
+ //# sourceMappingURL=execution-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-binding.d.ts","sourceRoot":"","sources":["../src/execution-binding.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,yBAAyB,iCAAiC,CAAC;AAkGxE,wBAAgB,YAAY,CAAC,CAAC,KAAA,OAG7B;AAED,wBAAgB,aAAa,CAAC,CAAC,KAAA,UAE9B;AAoBD,wBAAgB,iBAAiB,CAAC,WAAW,KAAA,SAG5C;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,GAAE;IAC/E,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,cAAc,CAAC,EAAE,GAAG,CAAC;CACjB;;;;;;;;;;;;;;;;;;;;;;;;;;EAkFL;;;;;;;;AAED,wBAME"}