@emilia-protocol/gate 0.10.0 → 0.13.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 (419) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/README.md +272 -0
  3. package/action-control-manifest.js +3 -268
  4. package/action-escrow-custodian.js +4 -0
  5. package/action-escrow-evidence.js +4 -0
  6. package/action-escrow-package.js +4 -0
  7. package/action-escrow-postgres.js +4 -0
  8. package/action-escrow-state.js +4 -0
  9. package/action-escrow-verifiers.js +4 -0
  10. package/action-escrow.js +4 -0
  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 +1002 -0
  179. package/dist/index.d.ts.map +1 -0
  180. package/dist/index.js +1736 -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/protocol-state.d.ts +141 -0
  203. package/dist/protocol-state.d.ts.map +1 -0
  204. package/dist/protocol-state.js +106 -0
  205. package/dist/protocol-state.js.map +1 -0
  206. package/dist/receipt-program.d.ts +59 -0
  207. package/dist/receipt-program.d.ts.map +1 -0
  208. package/dist/receipt-program.js +1053 -0
  209. package/dist/receipt-program.js.map +1 -0
  210. package/dist/reliance-kernel.d.ts +66 -0
  211. package/dist/reliance-kernel.d.ts.map +1 -0
  212. package/dist/reliance-kernel.js +103 -0
  213. package/dist/reliance-kernel.js.map +1 -0
  214. package/dist/reliance-packet.d.ts +67 -0
  215. package/dist/reliance-packet.d.ts.map +1 -0
  216. package/dist/reliance-packet.js +176 -0
  217. package/dist/reliance-packet.js.map +1 -0
  218. package/dist/remedy-program-postgres.d.ts +37 -0
  219. package/dist/remedy-program-postgres.d.ts.map +1 -0
  220. package/dist/remedy-program-postgres.js +291 -0
  221. package/dist/remedy-program-postgres.js.map +1 -0
  222. package/dist/remedy-program-receipt.d.ts +97 -0
  223. package/dist/remedy-program-receipt.d.ts.map +1 -0
  224. package/dist/remedy-program-receipt.js +817 -0
  225. package/dist/remedy-program-receipt.js.map +1 -0
  226. package/dist/remedy-program.d.ts +76 -0
  227. package/dist/remedy-program.d.ts.map +1 -0
  228. package/dist/remedy-program.js +1346 -0
  229. package/dist/remedy-program.js.map +1 -0
  230. package/dist/reports/art14.d.ts +101 -0
  231. package/dist/reports/art14.d.ts.map +1 -0
  232. package/dist/reports/art14.js +340 -0
  233. package/dist/reports/art14.js.map +1 -0
  234. package/dist/reports/assurance-package.d.ts +197 -0
  235. package/dist/reports/assurance-package.d.ts.map +1 -0
  236. package/dist/reports/assurance-package.js +313 -0
  237. package/dist/reports/assurance-package.js.map +1 -0
  238. package/dist/reports/auditor-workpaper.d.ts +194 -0
  239. package/dist/reports/auditor-workpaper.d.ts.map +1 -0
  240. package/dist/reports/auditor-workpaper.js +545 -0
  241. package/dist/reports/auditor-workpaper.js.map +1 -0
  242. package/dist/reports/external-verification.d.ts +76 -0
  243. package/dist/reports/external-verification.d.ts.map +1 -0
  244. package/dist/reports/external-verification.js +209 -0
  245. package/dist/reports/external-verification.js.map +1 -0
  246. package/dist/reports/reperform.d.ts +122 -0
  247. package/dist/reports/reperform.d.ts.map +1 -0
  248. package/dist/reports/reperform.js +432 -0
  249. package/dist/reports/reperform.js.map +1 -0
  250. package/dist/reports/underwriter.d.ts +127 -0
  251. package/dist/reports/underwriter.d.ts.map +1 -0
  252. package/dist/reports/underwriter.js +348 -0
  253. package/dist/reports/underwriter.js.map +1 -0
  254. package/dist/retention.d.ts +88 -0
  255. package/dist/retention.d.ts.map +1 -0
  256. package/dist/retention.js +90 -0
  257. package/dist/retention.js.map +1 -0
  258. package/dist/roster.d.ts +113 -0
  259. package/dist/roster.d.ts.map +1 -0
  260. package/dist/roster.js +261 -0
  261. package/dist/roster.js.map +1 -0
  262. package/dist/runtime-monitor.d.ts +132 -0
  263. package/dist/runtime-monitor.d.ts.map +1 -0
  264. package/dist/runtime-monitor.js +197 -0
  265. package/dist/runtime-monitor.js.map +1 -0
  266. package/dist/settlement.d.ts +68 -0
  267. package/dist/settlement.d.ts.map +1 -0
  268. package/dist/settlement.js +306 -0
  269. package/dist/settlement.js.map +1 -0
  270. package/dist/siem.d.ts +261 -0
  271. package/dist/siem.d.ts.map +1 -0
  272. package/dist/siem.js +247 -0
  273. package/dist/siem.js.map +1 -0
  274. package/dist/store-postgres.d.ts +107 -0
  275. package/dist/store-postgres.d.ts.map +1 -0
  276. package/dist/store-postgres.js +152 -0
  277. package/dist/store-postgres.js.map +1 -0
  278. package/dist/store.d.ts +95 -0
  279. package/dist/store.d.ts.map +1 -0
  280. package/dist/store.js +202 -0
  281. package/dist/store.js.map +1 -0
  282. package/dist/strict-json.d.ts +14 -0
  283. package/dist/strict-json.d.ts.map +1 -0
  284. package/dist/strict-json.js +132 -0
  285. package/dist/strict-json.js.map +1 -0
  286. package/dist/trust-program-adapters.d.ts +122 -0
  287. package/dist/trust-program-adapters.d.ts.map +1 -0
  288. package/dist/trust-program-adapters.js +802 -0
  289. package/dist/trust-program-adapters.js.map +1 -0
  290. package/dist/trust-program-postgres.d.ts +41 -0
  291. package/dist/trust-program-postgres.d.ts.map +1 -0
  292. package/dist/trust-program-postgres.js +346 -0
  293. package/dist/trust-program-postgres.js.map +1 -0
  294. package/dist/trust-program-revocation.d.ts +206 -0
  295. package/dist/trust-program-revocation.d.ts.map +1 -0
  296. package/dist/trust-program-revocation.js +600 -0
  297. package/dist/trust-program-revocation.js.map +1 -0
  298. package/dist/trust-program.d.ts +197 -0
  299. package/dist/trust-program.d.ts.map +1 -0
  300. package/dist/trust-program.js +1351 -0
  301. package/dist/trust-program.js.map +1 -0
  302. package/dist/witness-postgres.d.ts +43 -0
  303. package/dist/witness-postgres.d.ts.map +1 -0
  304. package/dist/witness-postgres.js +92 -0
  305. package/dist/witness-postgres.js.map +1 -0
  306. package/dist/zk-range-proof.d.ts +78 -0
  307. package/dist/zk-range-proof.d.ts.map +1 -0
  308. package/dist/zk-range-proof.js +228 -0
  309. package/dist/zk-range-proof.js.map +1 -0
  310. package/eg1-conformance.js +3 -404
  311. package/enterprise.js +3 -180
  312. package/ep-assure.mjs +1 -0
  313. package/evidence-postgres.js +3 -356
  314. package/evidence.js +4 -360
  315. package/execution-binding.js +3 -212
  316. package/formal-runtime-map.js +4 -0
  317. package/index.js +4 -1249
  318. package/key-registry.js +3 -134
  319. package/mcp.js +3 -109
  320. package/metering.js +3 -226
  321. package/metrics.js +3 -231
  322. package/network-witness.js +3 -499
  323. package/package.json +47 -4
  324. package/receipt-program.js +4 -0
  325. package/reliance-kernel.js +3 -112
  326. package/reliance-packet.js +3 -175
  327. package/remedy-program-postgres.js +4 -0
  328. package/remedy-program-receipt.js +4 -0
  329. package/remedy-program.js +4 -0
  330. package/reports/art14.js +0 -0
  331. package/reports/assurance-package.js +2 -312
  332. package/reports/auditor-workpaper.js +3 -537
  333. package/reports/external-verification.js +3 -222
  334. package/reports/reperform.js +3 -424
  335. package/reports/underwriter.js +3 -339
  336. package/retention.js +3 -84
  337. package/roster.js +3 -264
  338. package/runtime-monitor.js +4 -0
  339. package/settlement.js +3 -299
  340. package/siem.js +3 -235
  341. package/src/action-control-manifest.ts +424 -0
  342. package/src/action-escrow-custodian.ts +427 -0
  343. package/src/action-escrow-evidence.ts +1178 -0
  344. package/src/action-escrow-package.ts +1821 -0
  345. package/src/action-escrow-postgres.ts +366 -0
  346. package/src/action-escrow-state.ts +498 -0
  347. package/src/action-escrow-verifiers.ts +484 -0
  348. package/src/action-escrow.ts +3039 -0
  349. package/src/action-packs.ts +170 -0
  350. package/src/adapters/_kit.ts +117 -0
  351. package/src/adapters/aws.ts +142 -0
  352. package/src/adapters/cloudflare.ts +78 -0
  353. package/src/adapters/gcp.ts +71 -0
  354. package/src/adapters/github.ts +110 -0
  355. package/src/adapters/jira.ts +56 -0
  356. package/src/adapters/k8s.ts +71 -0
  357. package/src/adapters/linear.ts +56 -0
  358. package/src/adapters/salesforce.ts +56 -0
  359. package/src/adapters/stripe.ts +82 -0
  360. package/src/adapters/supabase.ts +122 -0
  361. package/src/adapters/terraform.ts +60 -0
  362. package/src/adapters/vercel.ts +85 -0
  363. package/src/aec-execution.ts +354 -0
  364. package/src/breakglass.ts +647 -0
  365. package/src/capability-receipt.ts +1258 -0
  366. package/src/cf1-conformance.ts +120 -0
  367. package/src/challenge-store.ts +70 -0
  368. package/src/control-plane.ts +374 -0
  369. package/src/coverage.ts +832 -0
  370. package/src/deployment-attestation.ts +259 -0
  371. package/src/eg1-conformance.ts +471 -0
  372. package/src/enterprise.ts +195 -0
  373. package/src/evidence-postgres.ts +374 -0
  374. package/src/evidence.ts +367 -0
  375. package/src/execution-binding.ts +236 -0
  376. package/src/formal-runtime-map.ts +24 -0
  377. package/src/index.ts +2122 -0
  378. package/src/key-registry.ts +150 -0
  379. package/src/mcp.ts +120 -0
  380. package/src/metering.ts +237 -0
  381. package/src/metrics.ts +232 -0
  382. package/src/network-witness.ts +585 -0
  383. package/src/protocol-state.ts +143 -0
  384. package/src/protocol-state.typecheck.ts +94 -0
  385. package/src/receipt-program.ts +1105 -0
  386. package/src/reliance-kernel.ts +119 -0
  387. package/src/reliance-packet.ts +206 -0
  388. package/src/remedy-program-postgres.ts +367 -0
  389. package/src/remedy-program-receipt.ts +891 -0
  390. package/src/remedy-program.ts +1388 -0
  391. package/src/reports/art14.ts +361 -0
  392. package/src/reports/assurance-package.ts +330 -0
  393. package/src/reports/auditor-workpaper.ts +558 -0
  394. package/src/reports/external-verification.ts +232 -0
  395. package/src/reports/reperform.ts +441 -0
  396. package/src/reports/underwriter.ts +356 -0
  397. package/src/retention.ts +100 -0
  398. package/src/roster.ts +273 -0
  399. package/src/runtime-monitor.ts +217 -0
  400. package/src/settlement.ts +313 -0
  401. package/src/siem.ts +247 -0
  402. package/src/store-postgres.ts +167 -0
  403. package/src/store.ts +214 -0
  404. package/src/strict-json.ts +115 -0
  405. package/src/trust-program-adapters.ts +847 -0
  406. package/src/trust-program-postgres.ts +429 -0
  407. package/src/trust-program-revocation.ts +751 -0
  408. package/src/trust-program.ts +1460 -0
  409. package/src/witness-postgres.ts +106 -0
  410. package/src/zk-range-proof.ts +250 -0
  411. package/store-postgres.js +3 -161
  412. package/store.js +4 -198
  413. package/strict-json.js +3 -85
  414. package/trust-program-adapters.js +4 -0
  415. package/trust-program-postgres.js +4 -0
  416. package/trust-program-revocation.js +4 -0
  417. package/trust-program.js +4 -0
  418. package/witness-postgres.js +3 -96
  419. package/zk-range-proof.js +4 -0
@@ -0,0 +1,349 @@
1
+ // @ts-nocheck
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Vendor-neutral orchestration for Gate coverage, evidence completeness, and
5
+ * usage metering. Enforcement still happens at each executor-side Gate. This
6
+ * module cannot turn an observation or dashboard decision into authorization.
7
+ */
8
+ import { canonicalize, hashCanonical } from './execution-binding.js';
9
+ import { coverageInventoryDigest, evaluateGateCoverage } from './coverage.js';
10
+ import { evaluateSettlementEligibility } from './settlement.js';
11
+ import { meterUsage, buildUsageStatement } from './metering.js';
12
+ import { acceptNetworkWitnessStatement, networkWitnessDigest } from './network-witness.js';
13
+ export const CONTROL_PLANE_REPORT_VERSION = 'EP-GATE-CONTROL-PLANE-REPORT-v1';
14
+ export const CONTROL_PLANE_MAX_SETTLEMENTS = 10_000;
15
+ const MAX_COVERAGE_EVIDENCE_ITEMS = 50_000;
16
+ function isPlainObject(value) {
17
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
18
+ return false;
19
+ const prototype = Object.getPrototypeOf(value);
20
+ return prototype === Object.prototype || prototype === null;
21
+ }
22
+ function digest(value) {
23
+ return `sha256:${hashCanonical(value)}`;
24
+ }
25
+ function witnessArtifactKey(statement) {
26
+ try {
27
+ return digest(statement);
28
+ }
29
+ catch {
30
+ return null;
31
+ }
32
+ }
33
+ function immutableCanonicalSnapshot(value) {
34
+ const snapshot = JSON.parse(canonicalize(value));
35
+ const stack = [snapshot];
36
+ while (stack.length) {
37
+ const current = stack.pop();
38
+ if (current && typeof current === 'object') {
39
+ for (const child of Object.values(current))
40
+ stack.push(child);
41
+ Object.freeze(current);
42
+ }
43
+ }
44
+ return snapshot;
45
+ }
46
+ function snapshotExpectedProbeNonces(value, inventory) {
47
+ if (value === undefined || value === null)
48
+ return null;
49
+ if (value instanceof Map) {
50
+ const selected = Object.create(null);
51
+ for (const surface of Array.isArray(inventory?.surfaces) ? inventory.surfaces : []) {
52
+ if (value.has(surface.surface_id))
53
+ selected[surface.surface_id] = value.get(surface.surface_id);
54
+ }
55
+ return immutableCanonicalSnapshot(selected);
56
+ }
57
+ return immutableCanonicalSnapshot(value);
58
+ }
59
+ function snapshotSettlementItems(items) {
60
+ const ownKeys = Reflect.ownKeys(items);
61
+ if (ownKeys.length !== items.length + 1 || !ownKeys.includes('length')) {
62
+ throw new TypeError('settlement collection must be a dense data array');
63
+ }
64
+ const snapshots = [];
65
+ for (let i = 0; i < items.length; i++) {
66
+ const descriptor = Object.getOwnPropertyDescriptor(items, String(i));
67
+ if (!descriptor || descriptor.enumerable !== true || !Object.hasOwn(descriptor, 'value')) {
68
+ throw new TypeError('settlement collection contains an accessor');
69
+ }
70
+ snapshots.push(immutableCanonicalSnapshot(descriptor.value));
71
+ }
72
+ return Object.freeze(snapshots);
73
+ }
74
+ /**
75
+ * Produce one reproducible control-plane view. The signed/verified subartifacts
76
+ * remain independently portable; this report joins only their digests and
77
+ * closed verdicts.
78
+ */
79
+ export async function evaluateGateControlPlane(input = {}, options = {}) {
80
+ const now = options.now === undefined ? Date.now() : Number(options.now);
81
+ if (!Number.isFinite(now))
82
+ throw new TypeError('control-plane now must be finite');
83
+ let coverageInventory;
84
+ let settlementProfile;
85
+ let pinnedProbes;
86
+ let pinnedWitnesses;
87
+ let expectedProbeNonces;
88
+ let probeMaxAgeSec;
89
+ let witnessMaxAgeSec;
90
+ let maxFutureSkewSec;
91
+ let allowEphemeralWitnessStore;
92
+ let configuredTrustedAcceptances;
93
+ let configurationError = null;
94
+ try {
95
+ coverageInventory = options.coverageInventory === undefined
96
+ ? undefined
97
+ : immutableCanonicalSnapshot(options.coverageInventory);
98
+ settlementProfile = options.settlementProfile === undefined
99
+ ? undefined
100
+ : immutableCanonicalSnapshot(options.settlementProfile);
101
+ pinnedProbes = options.pinnedProbes === undefined
102
+ ? undefined
103
+ : immutableCanonicalSnapshot(options.pinnedProbes);
104
+ pinnedWitnesses = options.pinnedWitnesses === undefined
105
+ ? undefined
106
+ : immutableCanonicalSnapshot(options.pinnedWitnesses);
107
+ expectedProbeNonces = snapshotExpectedProbeNonces(options.expectedProbeNonces, coverageInventory);
108
+ probeMaxAgeSec = options.probeMaxAgeSec;
109
+ witnessMaxAgeSec = options.witnessMaxAgeSec;
110
+ maxFutureSkewSec = options.maxFutureSkewSec;
111
+ allowEphemeralWitnessStore = options.allowEphemeralWitnessStore === true;
112
+ const trustedInput = options.trustedWitnessAcceptances;
113
+ if (trustedInput !== undefined
114
+ && (!Array.isArray(trustedInput) || trustedInput.length > MAX_COVERAGE_EVIDENCE_ITEMS)) {
115
+ throw new TypeError('trusted witness acceptance collection is invalid');
116
+ }
117
+ configuredTrustedAcceptances = [];
118
+ for (const acceptance of Array.isArray(trustedInput) ? trustedInput : []) {
119
+ configuredTrustedAcceptances.push(immutableCanonicalSnapshot(acceptance));
120
+ }
121
+ Object.freeze(configuredTrustedAcceptances);
122
+ }
123
+ catch {
124
+ configurationError = 'rp_configuration_invalid';
125
+ coverageInventory = null;
126
+ settlementProfile = null;
127
+ pinnedProbes = [];
128
+ pinnedWitnesses = [];
129
+ expectedProbeNonces = null;
130
+ configuredTrustedAcceptances = Object.freeze([]);
131
+ allowEphemeralWitnessStore = false;
132
+ }
133
+ let attestationVerifiers;
134
+ let witnessSequenceStore;
135
+ let verifyAuthorization;
136
+ let verifyExecution;
137
+ let verifyOutcome;
138
+ try {
139
+ attestationVerifiers = options.attestationVerifiers;
140
+ witnessSequenceStore = options.witnessSequenceStore;
141
+ verifyAuthorization = options.verifyAuthorization;
142
+ verifyExecution = options.verifyExecution;
143
+ verifyOutcome = options.verifyOutcome;
144
+ }
145
+ catch {
146
+ configurationError = 'rp_configuration_invalid';
147
+ }
148
+ let settlementItems = [];
149
+ let settlementError = null;
150
+ try {
151
+ const presentedSettlements = input.settlements;
152
+ if (presentedSettlements !== undefined) {
153
+ if (!Array.isArray(presentedSettlements)) {
154
+ settlementError = 'settlements_invalid';
155
+ }
156
+ else if (presentedSettlements.length > CONTROL_PLANE_MAX_SETTLEMENTS) {
157
+ settlementError = 'settlements_limit_exceeded';
158
+ }
159
+ else {
160
+ settlementItems = snapshotSettlementItems(presentedSettlements);
161
+ }
162
+ }
163
+ }
164
+ catch {
165
+ settlementItems = [];
166
+ settlementError = 'settlements_hostile_input';
167
+ }
168
+ let coverageInput = {};
169
+ try {
170
+ const presentedCoverage = input.coverage;
171
+ if (isPlainObject(presentedCoverage))
172
+ coverageInput = presentedCoverage;
173
+ }
174
+ catch { /* coverage will remain closed with no evidence */ }
175
+ let usageInput;
176
+ let usageError = null;
177
+ try {
178
+ const presentedUsage = input.usage;
179
+ usageInput = presentedUsage === undefined
180
+ ? undefined
181
+ : immutableCanonicalSnapshot(presentedUsage);
182
+ }
183
+ catch {
184
+ usageError = 'usage_statement_refused';
185
+ }
186
+ // Evidence is presenter-controlled; policy and pins above are immutable RP
187
+ // snapshots. No bundle can select a weaker configuration while work awaits.
188
+ const trustedByStatementDigest = new Map();
189
+ for (const acceptance of configuredTrustedAcceptances) {
190
+ if (typeof acceptance.statement_digest === 'string') {
191
+ trustedByStatementDigest.set(acceptance.statement_digest, acceptance);
192
+ }
193
+ }
194
+ const coverageAcceptanceByArtifact = new Map();
195
+ const acceptanceForStatement = (statement) => {
196
+ const artifactKey = witnessArtifactKey(statement);
197
+ if (artifactKey && coverageAcceptanceByArtifact.has(artifactKey)) {
198
+ return { found: true, acceptance: coverageAcceptanceByArtifact.get(artifactKey), artifactKey };
199
+ }
200
+ try {
201
+ const statementDigest = networkWitnessDigest(statement);
202
+ if (trustedByStatementDigest.has(statementDigest)) {
203
+ return { found: true, acceptance: trustedByStatementDigest.get(statementDigest), artifactKey };
204
+ }
205
+ }
206
+ catch { /* raw ingestion will refuse malformed statements */ }
207
+ return { found: false, acceptance: null, artifactKey };
208
+ };
209
+ // Coverage and settlement may reference the same witness statement. Consume
210
+ // each coverage statement once, then reuse only this RP-side ingestion result.
211
+ let coverageWitnesses = null;
212
+ try {
213
+ coverageInventoryDigest(coverageInventory);
214
+ const evidenceListsValid = ['deployments', 'probes', 'witnesses'].every((field) => {
215
+ const value = coverageInput[field];
216
+ return value === undefined || (Array.isArray(value) && value.length <= MAX_COVERAGE_EVIDENCE_ITEMS);
217
+ });
218
+ if (evidenceListsValid) {
219
+ const presentedWitnesses = Array.isArray(coverageInput.witnesses) ? coverageInput.witnesses : [];
220
+ if (presentedWitnesses.length + configuredTrustedAcceptances.length <= MAX_COVERAGE_EVIDENCE_ITEMS) {
221
+ coverageWitnesses = presentedWitnesses.map((statement) => immutableCanonicalSnapshot(statement));
222
+ }
223
+ }
224
+ }
225
+ catch { /* coverage owns the closed invalid-input report */ }
226
+ const coverageIngestionResults = [];
227
+ if (coverageWitnesses) {
228
+ for (const statement of coverageWitnesses) {
229
+ const existing = acceptanceForStatement(statement);
230
+ const acceptance = existing.found
231
+ ? existing.acceptance
232
+ : await acceptNetworkWitnessStatement(statement, {
233
+ pinnedWitnesses,
234
+ maxAgeSec: witnessMaxAgeSec,
235
+ maxFutureSkewSec,
236
+ now,
237
+ sequenceStore: witnessSequenceStore,
238
+ allowEphemeralStore: allowEphemeralWitnessStore,
239
+ });
240
+ if (existing.artifactKey)
241
+ coverageAcceptanceByArtifact.set(existing.artifactKey, acceptance);
242
+ coverageIngestionResults.push(acceptance);
243
+ }
244
+ }
245
+ const coverageEvidence = coverageWitnesses
246
+ ? { ...coverageInput, witnesses: [] }
247
+ : coverageInput;
248
+ const coverage = await evaluateGateCoverage({
249
+ ...coverageEvidence,
250
+ inventory: coverageInventory,
251
+ }, {
252
+ now,
253
+ attestationVerifiers,
254
+ pinnedProbes,
255
+ pinnedWitnesses,
256
+ expectedProbeNonces,
257
+ probeMaxAgeSec,
258
+ witnessMaxAgeSec,
259
+ maxFutureSkewSec,
260
+ witnessSequenceStore,
261
+ allowEphemeralWitnessStore,
262
+ trustedWitnessAcceptances: [
263
+ ...configuredTrustedAcceptances,
264
+ ...coverageIngestionResults,
265
+ ],
266
+ });
267
+ const settlements = [];
268
+ for (const item of settlementItems) {
269
+ const bundle = isPlainObject(item?.bundle) ? item.bundle : {};
270
+ const surfaceId = bundle?.coverage?.surface_id;
271
+ const verifyCoverage = async () => {
272
+ const row = Array.isArray(coverage.surfaces)
273
+ ? coverage.surfaces.find((candidate) => candidate.surface_id === surfaceId)
274
+ : null;
275
+ if (!row)
276
+ return { accepted: false, reason: 'surface_not_in_pinned_inventory' };
277
+ return {
278
+ accepted: row.complete === true,
279
+ state: row.state,
280
+ surface_id: row.surface_id,
281
+ report_hash: coverage.report_hash,
282
+ reason: row.complete ? null : row.reason,
283
+ };
284
+ };
285
+ const settlementOptions = {
286
+ profile: settlementProfile,
287
+ now,
288
+ pinnedWitnesses,
289
+ witnessMaxAgeSec,
290
+ maxFutureSkewSec,
291
+ witnessSequenceStore,
292
+ allowEphemeralWitnessStore,
293
+ verifyAuthorization,
294
+ verifyExecution,
295
+ verifyOutcome,
296
+ verifyCoverage,
297
+ };
298
+ if (settlementProfile?.require_witness === true) {
299
+ const trusted = acceptanceForStatement(bundle.witness);
300
+ if (trusted.found)
301
+ settlementOptions.trustedWitnessAcceptance = trusted.acceptance;
302
+ }
303
+ settlements.push(await evaluateSettlementEligibility(bundle, settlementOptions));
304
+ }
305
+ let usage = null;
306
+ if (usageInput !== undefined && !usageError) {
307
+ try {
308
+ const metered = meterUsage(usageInput?.entries ?? [], usageInput?.period ?? {});
309
+ usage = buildUsageStatement(metered, { org: usageInput?.org });
310
+ }
311
+ catch {
312
+ usageError = 'usage_statement_refused';
313
+ }
314
+ }
315
+ const summary = {
316
+ '@version': CONTROL_PLANE_REPORT_VERSION,
317
+ generated_at: new Date(now).toISOString(),
318
+ coverage_report_hash: coverage.report_hash ?? null,
319
+ coverage_complete: coverage.complete === true,
320
+ settlement_input_complete: settlementError === null,
321
+ settlement_results: settlements.map((result) => ({
322
+ action_digest: result.action_digest,
323
+ verdict: result.verdict,
324
+ eligible: result.eligible === true,
325
+ result_hash: result.result_hash,
326
+ })),
327
+ usage_statement_hash: usage?.content_hash ? `sha256:${usage.content_hash}` : null,
328
+ usage_complete: usage?.complete === true,
329
+ ...(configurationError ? { configuration_error: configurationError } : {}),
330
+ ...(settlementError ? { settlement_error: settlementError } : {}),
331
+ ...(usageError ? { usage_error: usageError } : {}),
332
+ limitations: [
333
+ 'The control plane coordinates policy, evidence, coverage, metering, and settlement eligibility; executor-side Gates remain the only enforcement points.',
334
+ 'Coverage is bounded by the relying-party-declared inventory, and a passive witness never upgrades a surface to gated.',
335
+ 'Witness-dependent decisions require durable sequence ingestion or an explicitly relying-party-trusted acceptance result.',
336
+ ],
337
+ };
338
+ return Object.freeze({
339
+ ...summary,
340
+ control_plane_digest: digest(summary),
341
+ artifacts: Object.freeze({ coverage, settlements, usage }),
342
+ });
343
+ }
344
+ export default {
345
+ CONTROL_PLANE_REPORT_VERSION,
346
+ CONTROL_PLANE_MAX_SETTLEMENTS,
347
+ evaluateGateControlPlane,
348
+ };
349
+ //# sourceMappingURL=control-plane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../src/control-plane.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ export declare const COVERAGE_INVENTORY_VERSION = "EP-GATE-COVERAGE-INVENTORY-v1";
2
+ export declare const COVERAGE_REPORT_VERSION = "EP-GATE-COVERAGE-REPORT-v1";
3
+ export declare const ENFORCEMENT_PROBE_VERSION = "EP-GATE-ENFORCEMENT-PROBE-v1";
4
+ export declare const COVERAGE_STATES: readonly string[];
5
+ export declare const PROBE_RESULTS: readonly string[];
6
+ export declare function coverageInventoryDigest(inventory: any): string;
7
+ export declare function signEnforcementProbe(input: any, privateKey: any): Readonly<{
8
+ signature: Readonly<{
9
+ algorithm: "Ed25519";
10
+ key_id: any;
11
+ statement_digest: string;
12
+ signature_b64u: string;
13
+ }>;
14
+ '@version': string;
15
+ probe: {
16
+ id: any;
17
+ key_id: any;
18
+ };
19
+ test: {
20
+ surface_id: any;
21
+ gate_id: any;
22
+ environment_id: any;
23
+ action_family: any;
24
+ action_digest: any;
25
+ tested_at: any;
26
+ nonce: any;
27
+ result: any;
28
+ response_status: any;
29
+ };
30
+ }>;
31
+ /** Duplicate-key-safe parser for an untrusted serialized probe artifact. */
32
+ export declare function parseEnforcementProbeStatement(raw: any, { maxBytes }?: {
33
+ maxBytes?: number | undefined;
34
+ }): any;
35
+ type ProbeRefusal = {
36
+ accepted: false;
37
+ verified: false;
38
+ reason: string;
39
+ statement_digest?: undefined;
40
+ tested_at?: undefined;
41
+ result?: undefined;
42
+ response_status?: undefined;
43
+ nonce?: undefined;
44
+ surface_id?: undefined;
45
+ action_digest?: undefined;
46
+ gate_id?: undefined;
47
+ environment_id?: undefined;
48
+ action_family?: undefined;
49
+ probe_id?: undefined;
50
+ };
51
+ type ProbeAcceptance = {
52
+ accepted: true;
53
+ verified: true;
54
+ reason: null;
55
+ statement_digest: string;
56
+ tested_at: any;
57
+ result: any;
58
+ response_status: any;
59
+ nonce: any;
60
+ surface_id: any;
61
+ action_digest: any;
62
+ gate_id: any;
63
+ environment_id: any;
64
+ action_family: any;
65
+ probe_id: any;
66
+ };
67
+ type ProbeVerificationResult = ProbeAcceptance | ProbeRefusal;
68
+ export declare function verifyEnforcementProbe(statement: any, options?: {
69
+ pinnedProbes?: any;
70
+ expectedSurface?: any;
71
+ now?: number;
72
+ maxAgeSec?: number;
73
+ maxFutureSkewSec?: number;
74
+ }): ProbeVerificationResult;
75
+ type CoverageSurfaceRow = {
76
+ surface_id: any;
77
+ action_family: any;
78
+ required: any;
79
+ state: string;
80
+ reason: string;
81
+ deployment_attested: boolean;
82
+ refusal_probe_verified: boolean;
83
+ bypass_probe_verified: boolean;
84
+ probe_nonce_verified: boolean;
85
+ witness_required: boolean;
86
+ witness_verified: boolean;
87
+ witness_acceptance_reason: any;
88
+ complete: boolean;
89
+ };
90
+ type CoverageFailureReport = {
91
+ '@version': string;
92
+ complete: boolean;
93
+ reason: string;
94
+ inventory_hash: string | null;
95
+ surfaces: CoverageSurfaceRow[];
96
+ counts: Record<string, number>;
97
+ report_hash?: undefined;
98
+ generated_at?: undefined;
99
+ inventory_id?: undefined;
100
+ declared_required_surfaces?: undefined;
101
+ complete_required_surfaces?: undefined;
102
+ declared_coverage_bps?: undefined;
103
+ limitations?: undefined;
104
+ };
105
+ type CoverageSuccessReport = {
106
+ '@version': string;
107
+ generated_at: string;
108
+ inventory_id: any;
109
+ inventory_hash: string;
110
+ complete: boolean;
111
+ declared_required_surfaces: number;
112
+ complete_required_surfaces: number;
113
+ declared_coverage_bps: number;
114
+ counts: Record<string, number>;
115
+ surfaces: CoverageSurfaceRow[];
116
+ limitations: string[];
117
+ report_hash: string;
118
+ reason?: undefined;
119
+ };
120
+ type CoverageReport = CoverageFailureReport | CoverageSuccessReport;
121
+ /**
122
+ * Evaluate coverage of a relying-party-declared inventory. Inventory
123
+ * completeness remains an explicit external assumption and is never inferred.
124
+ */
125
+ export declare function evaluateGateCoverage(input?: {
126
+ inventory?: any;
127
+ deployments?: any[];
128
+ probes?: any[];
129
+ witnesses?: any[];
130
+ }, options?: {
131
+ now?: number;
132
+ attestationVerifiers?: any;
133
+ pinnedProbes?: any;
134
+ pinnedWitnesses?: any;
135
+ expectedProbeNonces?: any;
136
+ probeMaxAgeSec?: number;
137
+ witnessMaxAgeSec?: number;
138
+ maxFutureSkewSec?: number;
139
+ witnessSequenceStore?: any;
140
+ allowEphemeralWitnessStore?: boolean;
141
+ trustedWitnessAcceptances?: any[];
142
+ }): Promise<CoverageReport>;
143
+ declare const _default: {
144
+ COVERAGE_INVENTORY_VERSION: string;
145
+ COVERAGE_REPORT_VERSION: string;
146
+ ENFORCEMENT_PROBE_VERSION: string;
147
+ COVERAGE_STATES: readonly string[];
148
+ PROBE_RESULTS: readonly string[];
149
+ coverageInventoryDigest: typeof coverageInventoryDigest;
150
+ parseEnforcementProbeStatement: typeof parseEnforcementProbeStatement;
151
+ signEnforcementProbe: typeof signEnforcementProbe;
152
+ verifyEnforcementProbe: typeof verifyEnforcementProbe;
153
+ evaluateGateCoverage: typeof evaluateGateCoverage;
154
+ };
155
+ export default _default;
156
+ //# sourceMappingURL=coverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../src/coverage.ts"],"names":[],"mappings":"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"}