@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,243 @@
1
+ // @ts-nocheck
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ // Execution-field binding for EMILIA Gate. This is the executor-side control
4
+ // that prevents "the signed claim said X, the system mutated Y".
5
+ import crypto from 'node:crypto';
6
+ export const EXECUTION_BINDING_VERSION = 'EP-GATE-EXECUTION-BINDING-v1';
7
+ const MAX_JSON_DEPTH = 64;
8
+ const MAX_JSON_NODES = 50000;
9
+ const MAX_JSON_STRING_BYTES = 1024 * 1024;
10
+ function validUnicodeString(value) {
11
+ for (let i = 0; i < value.length; i++) {
12
+ const unit = value.charCodeAt(i);
13
+ if (unit >= 0xd800 && unit <= 0xdbff) {
14
+ const next = value.charCodeAt(++i);
15
+ if (!(next >= 0xdc00 && next <= 0xdfff))
16
+ return false;
17
+ }
18
+ else if (unit >= 0xdc00 && unit <= 0xdfff)
19
+ return false;
20
+ }
21
+ return true;
22
+ }
23
+ function isPlainObject(value) {
24
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
25
+ return false;
26
+ const prototype = Object.getPrototypeOf(value);
27
+ return prototype === Object.prototype || prototype === null;
28
+ }
29
+ /**
30
+ * Match the hardened EP canonical JSON safety profile: valid Unicode strings,
31
+ * booleans, null, safe integers, dense arrays, and plain data objects. Object
32
+ * identity is unique across the graph, so cycles and aliases both refuse.
33
+ */
34
+ function assertCanonicalJson(value) {
35
+ const stack = [{ value, depth: 0 }];
36
+ const seen = new WeakSet();
37
+ let nodes = 0;
38
+ let stringBytes = 0;
39
+ while (stack.length) {
40
+ // stack.length > 0 here guarantees pop() returns an element, but
41
+ // Array#pop()'s type is always T | undefined.
42
+ const current = stack.pop();
43
+ if (++nodes > MAX_JSON_NODES || current.depth > MAX_JSON_DEPTH) {
44
+ throw new TypeError('value exceeds the EP canonical JSON resource profile');
45
+ }
46
+ const v = current.value;
47
+ if (v === null || typeof v === 'boolean')
48
+ continue;
49
+ if (typeof v === 'string') {
50
+ if (!validUnicodeString(v))
51
+ throw new TypeError('value contains invalid Unicode');
52
+ stringBytes += Buffer.byteLength(v, 'utf8');
53
+ if (stringBytes > MAX_JSON_STRING_BYTES)
54
+ throw new TypeError('value exceeds the EP canonical JSON string limit');
55
+ continue;
56
+ }
57
+ if (typeof v === 'number') {
58
+ if (!Number.isSafeInteger(v))
59
+ throw new TypeError('value contains a non-safe integer');
60
+ continue;
61
+ }
62
+ if (!Array.isArray(v) && !isPlainObject(v)) {
63
+ throw new TypeError('value contains a non-plain JSON object');
64
+ }
65
+ if (seen.has(v))
66
+ throw new TypeError('value contains a cycle or alias');
67
+ seen.add(v);
68
+ if (Array.isArray(v)) {
69
+ const ownKeys = Reflect.ownKeys(v);
70
+ if (ownKeys.length !== v.length + 1 || !ownKeys.includes('length')) {
71
+ throw new TypeError('value contains a sparse or extended array');
72
+ }
73
+ for (let i = 0; i < v.length; i++) {
74
+ const descriptor = Object.getOwnPropertyDescriptor(v, String(i));
75
+ if (!descriptor || descriptor.enumerable !== true || !Object.hasOwn(descriptor, 'value')) {
76
+ throw new TypeError('value contains a sparse or accessor array');
77
+ }
78
+ stack.push({ value: descriptor.value, depth: current.depth + 1 });
79
+ }
80
+ continue;
81
+ }
82
+ for (const key of Reflect.ownKeys(v)) {
83
+ if (typeof key !== 'string' || !validUnicodeString(key)) {
84
+ throw new TypeError('value contains a non-JSON object key');
85
+ }
86
+ const descriptor = Object.getOwnPropertyDescriptor(v, key);
87
+ if (!descriptor || descriptor.enumerable !== true || !Object.hasOwn(descriptor, 'value')) {
88
+ throw new TypeError('value contains a non-data JSON property');
89
+ }
90
+ stringBytes += Buffer.byteLength(key, 'utf8');
91
+ if (stringBytes > MAX_JSON_STRING_BYTES)
92
+ throw new TypeError('value exceeds the EP canonical JSON string limit');
93
+ stack.push({ value: descriptor.value, depth: current.depth + 1 });
94
+ }
95
+ }
96
+ }
97
+ function canonicalizeValidated(v) {
98
+ if (v === null)
99
+ return 'null';
100
+ if (Array.isArray(v))
101
+ return `[${v.map(canonicalizeValidated).join(',')}]`;
102
+ if (typeof v === 'object') {
103
+ return `{${Object.keys(v).sort().map((k) => JSON.stringify(k) + ':' + canonicalizeValidated(v[k])).join(',')}}`;
104
+ }
105
+ return JSON.stringify(v);
106
+ }
107
+ export function canonicalize(v) {
108
+ assertCanonicalJson(v);
109
+ return canonicalizeValidated(v);
110
+ }
111
+ export function hashCanonical(v) {
112
+ return crypto.createHash('sha256').update(canonicalize(v)).digest('hex');
113
+ }
114
+ function fieldValue(container, field) {
115
+ if (!isPlainObject(container))
116
+ return { state: 'invalid' };
117
+ const descriptor = Object.getOwnPropertyDescriptor(container, field);
118
+ if (!descriptor)
119
+ return { state: 'missing' };
120
+ if (descriptor.enumerable !== true || !Object.hasOwn(descriptor, 'value'))
121
+ return { state: 'invalid' };
122
+ if (descriptor.value === null)
123
+ return { state: 'missing' };
124
+ try {
125
+ assertCanonicalJson(descriptor.value);
126
+ return { state: 'valid', value: descriptor.value };
127
+ }
128
+ catch {
129
+ return { state: 'invalid' };
130
+ }
131
+ }
132
+ function equalValue(a, b) {
133
+ return canonicalize(a) === canonicalize(b);
134
+ }
135
+ export function materialFieldsFor(requirement) {
136
+ const fields = requirement?.execution_binding?.required_fields;
137
+ return Array.isArray(fields) ? [...new Set(fields.filter(Boolean))] : [];
138
+ }
139
+ /**
140
+ * Verifies that the signed claim and the executor-observed mutation fields
141
+ * match for the action pack. The executor must pass `observedAction` from the
142
+ * system of record, not from the agent request body.
143
+ */
144
+ export function verifyExecutionBinding({ requirement, receipt, observedAction } = {}) {
145
+ const requiredFields = materialFieldsFor(requirement);
146
+ if (requiredFields.length === 0) {
147
+ return { ok: true, required: false, required_fields: [], signed_hash: null, observed_hash: null };
148
+ }
149
+ const signed = receipt?.payload?.claim || {};
150
+ const observed = observedAction || {};
151
+ const missingSigned = [];
152
+ const missingObserved = [];
153
+ const invalidSigned = [];
154
+ const invalidObserved = [];
155
+ const mismatched = [];
156
+ // Null-prototype accumulators. A required field literally named `__proto__`
157
+ // written onto a plain `{}` hits Object.prototype's setter instead of
158
+ // creating an own key: the value silently escapes the binding digest, and
159
+ // when it is an object it repoints the accumulator's prototype so the
160
+ // aggregate re-check below throws with nothing to attribute the refusal to.
161
+ const signedValues = Object.create(null);
162
+ const observedValues = Object.create(null);
163
+ // Field names accepted into each accumulator, recorded at the point of
164
+ // acceptance. The aggregate re-check refuses by this list rather than reading
165
+ // the accumulator back, so a refusal stays attributable for every property
166
+ // key -- including names no `Object.keys` walk can return.
167
+ const signedAccepted = [];
168
+ const observedAccepted = [];
169
+ for (const field of requiredFields) {
170
+ // Resolve the property key exactly once per iteration. A non-string entry
171
+ // is coerced on every use, so reading through the raw entry and writing
172
+ // through it again can address two different properties.
173
+ const key = typeof field === 'symbol' ? field : String(field);
174
+ const expected = fieldValue(signed, key);
175
+ const actual = fieldValue(observed, key);
176
+ if (expected.state === 'missing') {
177
+ missingSigned.push(key);
178
+ }
179
+ else if (expected.state === 'invalid') {
180
+ invalidSigned.push(key);
181
+ }
182
+ else {
183
+ signedValues[key] = expected.value;
184
+ signedAccepted.push(key);
185
+ }
186
+ if (actual.state === 'missing') {
187
+ missingObserved.push(key);
188
+ }
189
+ else if (actual.state === 'invalid') {
190
+ invalidObserved.push(key);
191
+ }
192
+ else {
193
+ observedValues[key] = actual.value;
194
+ observedAccepted.push(key);
195
+ }
196
+ if (expected.state === 'valid' && actual.state === 'valid'
197
+ && !equalValue(expected.value, actual.value))
198
+ mismatched.push(key);
199
+ }
200
+ // Per-field checks do not see one object reused by two required fields.
201
+ // Validate the aggregate graphs before computing either digest.
202
+ try {
203
+ assertCanonicalJson(signedValues);
204
+ }
205
+ catch {
206
+ for (const field of signedAccepted) {
207
+ if (!invalidSigned.includes(field))
208
+ invalidSigned.push(field);
209
+ }
210
+ }
211
+ try {
212
+ assertCanonicalJson(observedValues);
213
+ }
214
+ catch {
215
+ for (const field of observedAccepted) {
216
+ if (!invalidObserved.includes(field))
217
+ invalidObserved.push(field);
218
+ }
219
+ }
220
+ return {
221
+ '@version': EXECUTION_BINDING_VERSION,
222
+ ok: missingSigned.length === 0 && missingObserved.length === 0
223
+ && invalidSigned.length === 0 && invalidObserved.length === 0 && mismatched.length === 0,
224
+ required: true,
225
+ required_fields: requiredFields,
226
+ missing_signed_fields: missingSigned,
227
+ missing_observed_fields: missingObserved,
228
+ invalid_signed_fields: invalidSigned,
229
+ invalid_observed_fields: invalidObserved,
230
+ mismatched_fields: mismatched,
231
+ signed_hash: invalidSigned.length === 0 ? hashCanonical(signedValues) : null,
232
+ observed_hash: invalidObserved.length === 0 ? hashCanonical(observedValues) : null,
233
+ note: 'Executor MUST provide observedAction from the system of record; request-body fields are not a trust source.',
234
+ };
235
+ }
236
+ export default {
237
+ EXECUTION_BINDING_VERSION,
238
+ canonicalize,
239
+ hashCanonical,
240
+ materialFieldsFor,
241
+ verifyExecutionBinding,
242
+ };
243
+ //# sourceMappingURL=execution-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-binding.js","sourceRoot":"","sources":["../src/execution-binding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Machine-checked source map for the explicit formal-to-runtime bridge.
3
+ *
4
+ * This is a coverage binding, not a compiler: the monitor remains reviewed
5
+ * JavaScript and the TLA+ model remains the source of the formal theorem.
6
+ */
7
+ export declare const FORMAL_RUNTIME_BRIDGE_VERSION = "EP-FORMAL-RUNTIME-BRIDGE-v1";
8
+ export declare const FORMAL_RUNTIME_SPEC = "formal/ep_handshake.tla";
9
+ export declare const FORMAL_RUNTIME_CONFIG = "formal/ep_handshake.cfg";
10
+ export declare const FORMAL_RUNTIME_INVARIANT_MAP: readonly (Readonly<{
11
+ runtime: "ConsumeOnceSafety";
12
+ formal: "ConsumeOnceSafety";
13
+ transition: "consumptionCommitted";
14
+ }> | Readonly<{
15
+ runtime: "WriteBypassSafety";
16
+ formal: "WriteBypassSafety";
17
+ transition: "beginExecution";
18
+ }> | Readonly<{
19
+ runtime: "SignoffBindingMatch";
20
+ formal: "SignoffBindingMatch";
21
+ transition: "recordDecision";
22
+ }>)[];
23
+ declare const _default: {
24
+ FORMAL_RUNTIME_BRIDGE_VERSION: string;
25
+ FORMAL_RUNTIME_SPEC: string;
26
+ FORMAL_RUNTIME_CONFIG: string;
27
+ FORMAL_RUNTIME_INVARIANT_MAP: readonly (Readonly<{
28
+ runtime: "ConsumeOnceSafety";
29
+ formal: "ConsumeOnceSafety";
30
+ transition: "consumptionCommitted";
31
+ }> | Readonly<{
32
+ runtime: "WriteBypassSafety";
33
+ formal: "WriteBypassSafety";
34
+ transition: "beginExecution";
35
+ }> | Readonly<{
36
+ runtime: "SignoffBindingMatch";
37
+ formal: "SignoffBindingMatch";
38
+ transition: "recordDecision";
39
+ }>)[];
40
+ };
41
+ export default _default;
42
+ //# sourceMappingURL=formal-runtime-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formal-runtime-map.d.ts","sourceRoot":"","sources":["../src/formal-runtime-map.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,gCAAgC,CAAC;AAC3E,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAC7D,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAE/D,eAAO,MAAM,4BAA4B;;;;;;;;;;;;KAIvC,CAAC;;;;;;;;;;;;;;;;;;;AAEH,wBAKE"}
@@ -0,0 +1,23 @@
1
+ // @ts-nocheck
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Machine-checked source map for the explicit formal-to-runtime bridge.
5
+ *
6
+ * This is a coverage binding, not a compiler: the monitor remains reviewed
7
+ * JavaScript and the TLA+ model remains the source of the formal theorem.
8
+ */
9
+ export const FORMAL_RUNTIME_BRIDGE_VERSION = 'EP-FORMAL-RUNTIME-BRIDGE-v1';
10
+ export const FORMAL_RUNTIME_SPEC = 'formal/ep_handshake.tla';
11
+ export const FORMAL_RUNTIME_CONFIG = 'formal/ep_handshake.cfg';
12
+ export const FORMAL_RUNTIME_INVARIANT_MAP = Object.freeze([
13
+ Object.freeze({ runtime: 'ConsumeOnceSafety', formal: 'ConsumeOnceSafety', transition: 'consumptionCommitted' }),
14
+ Object.freeze({ runtime: 'WriteBypassSafety', formal: 'WriteBypassSafety', transition: 'beginExecution' }),
15
+ Object.freeze({ runtime: 'SignoffBindingMatch', formal: 'SignoffBindingMatch', transition: 'recordDecision' }),
16
+ ]);
17
+ export default {
18
+ FORMAL_RUNTIME_BRIDGE_VERSION,
19
+ FORMAL_RUNTIME_SPEC,
20
+ FORMAL_RUNTIME_CONFIG,
21
+ FORMAL_RUNTIME_INVARIANT_MAP,
22
+ };
23
+ //# sourceMappingURL=formal-runtime-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formal-runtime-map.js","sourceRoot":"","sources":["../src/formal-runtime-map.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,6BAA6B,CAAC;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAC7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;AAE/D,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,sBAAsB,EAAE,CAAC;IAChH,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC1G,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAC/G,CAAC,CAAC;AAEH,eAAe;IACb,6BAA6B;IAC7B,mBAAmB;IACnB,qBAAqB;IACrB,4BAA4B;CAC7B,CAAC"}