@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 @@
1
+ {"version":3,"file":"trust-program-adapters.js","sourceRoot":"","sources":["../src/trust-program-adapters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { TrustProgramStore } from './trust-program.js';
2
+ export declare const TRUST_PROGRAM_PG_STORE_VERSION = "EP-GATE-TRUST-PROGRAM-PG-STORE-v1";
3
+ export declare const TRUST_PROGRAM_MAX_STATE_BYTES: number;
4
+ type QueryResult = {
5
+ rowCount: number | null;
6
+ rows?: any[];
7
+ };
8
+ type PgClient = {
9
+ query: (text: string, params?: any[]) => Promise<QueryResult>;
10
+ release: () => void;
11
+ };
12
+ type PgPool = {
13
+ connect: () => Promise<PgClient>;
14
+ };
15
+ export declare const TRUST_PROGRAM_POSTGRES_SQL: Readonly<{
16
+ create: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_create(\n $1::text, $2::text, $3::text, $4::text, $5::text\n)";
17
+ get: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_get($1::text, $2::text)";
18
+ compareAndSwap: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_compare_and_swap(\n $1::text, $2::text, $3::bigint, $4::bigint, $5::text, $6::text, $7::text\n)";
19
+ invalidate: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_invalidate(\n $1::text, $2::text, $3::bigint, $4::text, $5::text, $6::text, $7::text\n)";
20
+ }>;
21
+ /**
22
+ * Create the exact durable store consumed by createTrustProgramKernel().
23
+ * `pool` must provide node-postgres-style connect(), returning a pinned client
24
+ * with query() and release().
25
+ */
26
+ export declare function createTrustProgramPostgresStore({ pool }?: {
27
+ pool?: PgPool;
28
+ }): TrustProgramStore;
29
+ declare const _default: {
30
+ TRUST_PROGRAM_PG_STORE_VERSION: string;
31
+ TRUST_PROGRAM_MAX_STATE_BYTES: number;
32
+ TRUST_PROGRAM_POSTGRES_SQL: Readonly<{
33
+ create: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_create(\n $1::text, $2::text, $3::text, $4::text, $5::text\n)";
34
+ get: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_get($1::text, $2::text)";
35
+ compareAndSwap: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_compare_and_swap(\n $1::text, $2::text, $3::bigint, $4::bigint, $5::text, $6::text, $7::text\n)";
36
+ invalidate: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_invalidate(\n $1::text, $2::text, $3::bigint, $4::text, $5::text, $6::text, $7::text\n)";
37
+ }>;
38
+ createTrustProgramPostgresStore: typeof createTrustProgramPostgresStore;
39
+ };
40
+ export default _default;
41
+ //# sourceMappingURL=trust-program-postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-program-postgres.d.ts","sourceRoot":"","sources":["../src/trust-program-postgres.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,8BAA8B,sCAAsC,CAAC;AAClF,eAAO,MAAM,6BAA6B,QAAkB,CAAC;AAU7D,KAAK,WAAW,GAAG;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC;AAC7D,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9D,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AACF,KAAK,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,CAAC;AAEnD,eAAO,MAAM,0BAA0B;;;;;EAerC,CAAC;AA6LH;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,EAAE,IAAI,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,iBAAiB,CAgLnB;;;;;;;;;;;;AAED,wBAKE"}
@@ -0,0 +1,346 @@
1
+ // @ts-nocheck
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Durable PostgreSQL store for the Gate Trust Program kernel.
5
+ *
6
+ * The database is RPC-only. Every operation runs on one pinned pg client so a
7
+ * transaction can never be split across pooled connections. Logical conflicts
8
+ * are returned as stable store reasons; database ambiguity and outages throw.
9
+ */
10
+ import crypto from 'node:crypto';
11
+ import { canonicalize } from './execution-binding.js';
12
+ export const TRUST_PROGRAM_PG_STORE_VERSION = 'EP-GATE-TRUST-PROGRAM-PG-STORE-v1';
13
+ export const TRUST_PROGRAM_MAX_STATE_BYTES = 4 * 1024 * 1024;
14
+ const INSTANCE_ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
15
+ const DIGEST = /^sha256:[0-9a-f]{64}$/;
16
+ const STRICT_INSTANT = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?Z$/;
17
+ const ENVELOPE_KEYS = new Set([
18
+ 'ok', 'reason', 'tenant_id', 'instance_id', 'revision', 'state_json', 'state_digest',
19
+ ]);
20
+ export const TRUST_PROGRAM_POSTGRES_SQL = Object.freeze({
21
+ create: `SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest
22
+ FROM trust_program_private.trust_program_create(
23
+ $1::text, $2::text, $3::text, $4::text, $5::text
24
+ )`,
25
+ get: `SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest
26
+ FROM trust_program_private.trust_program_get($1::text, $2::text)`,
27
+ compareAndSwap: `SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest
28
+ FROM trust_program_private.trust_program_compare_and_swap(
29
+ $1::text, $2::text, $3::bigint, $4::bigint, $5::text, $6::text, $7::text
30
+ )`,
31
+ invalidate: `SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest
32
+ FROM trust_program_private.trust_program_invalidate(
33
+ $1::text, $2::text, $3::bigint, $4::text, $5::text, $6::text, $7::text
34
+ )`,
35
+ });
36
+ function isRecord(value) {
37
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
38
+ return false;
39
+ const prototype = Object.getPrototypeOf(value);
40
+ return prototype === Object.prototype || prototype === null;
41
+ }
42
+ function exactKeys(value, expected) {
43
+ const keys = Reflect.ownKeys(value);
44
+ return keys.length === expected.size
45
+ && keys.every((key) => typeof key === 'string' && expected.has(key));
46
+ }
47
+ function fail(reason) {
48
+ return { ok: false, reason };
49
+ }
50
+ function assertTenantId(value) {
51
+ if (typeof value !== 'string'
52
+ || Buffer.byteLength(value, 'utf8') < 1
53
+ || Buffer.byteLength(value, 'utf8') > 512
54
+ || /[\u0000-\u001f\u007f]/.test(value)) {
55
+ throw new TypeError('trust-program tenantId is invalid');
56
+ }
57
+ }
58
+ function assertInstanceId(value) {
59
+ if (typeof value !== 'string' || !INSTANCE_ID.test(value)) {
60
+ throw new TypeError('trust-program instanceId is invalid');
61
+ }
62
+ }
63
+ function assertRevision(value, label) {
64
+ if (!Number.isSafeInteger(value) || value < 0) {
65
+ throw new TypeError(`trust-program ${label} revision is invalid`);
66
+ }
67
+ }
68
+ function stateDigest(stateJson) {
69
+ return `sha256:${crypto.createHash('sha256').update(stateJson, 'utf8').digest('hex')}`;
70
+ }
71
+ function stateEventAt(state) {
72
+ const value = state.updated_at;
73
+ if (typeof value !== 'string' || !STRICT_INSTANT.test(value) || !Number.isFinite(Date.parse(value))) {
74
+ throw new TypeError('trust-program state updated_at is invalid');
75
+ }
76
+ return value;
77
+ }
78
+ function encodeState(state, tenantId, instanceId, revision) {
79
+ if (!isRecord(state)
80
+ || state.tenant_id !== tenantId
81
+ || state.instance_id !== instanceId
82
+ || state.revision !== revision) {
83
+ throw new TypeError('trust-program state binding does not match the store operation');
84
+ }
85
+ let stateJson;
86
+ try {
87
+ stateJson = canonicalize(state);
88
+ }
89
+ catch {
90
+ throw new TypeError('trust-program state must be canonical JSON');
91
+ }
92
+ if (Buffer.byteLength(stateJson, 'utf8') > TRUST_PROGRAM_MAX_STATE_BYTES) {
93
+ throw new TypeError('trust-program state exceeds the durable store limit');
94
+ }
95
+ return {
96
+ stateJson,
97
+ stateDigest: stateDigest(stateJson),
98
+ eventAt: stateEventAt(state),
99
+ };
100
+ }
101
+ function safeRevision(value) {
102
+ const revision = typeof value === 'string' && /^\d+$/.test(value) ? Number(value) : value;
103
+ if (!Number.isSafeInteger(revision) || revision < 0) {
104
+ throw new Error('trust-program Postgres returned an invalid revision');
105
+ }
106
+ return revision;
107
+ }
108
+ function decodeState(row, expectedTenantId, expectedInstanceId, expectedRevision) {
109
+ if (row.tenant_id !== expectedTenantId
110
+ || row.instance_id !== expectedInstanceId
111
+ || typeof row.state_json !== 'string'
112
+ || typeof row.state_digest !== 'string'
113
+ || !DIGEST.test(row.state_digest)
114
+ || Buffer.byteLength(row.state_json, 'utf8') > TRUST_PROGRAM_MAX_STATE_BYTES
115
+ || row.state_digest !== stateDigest(row.state_json)) {
116
+ throw new Error('trust-program Postgres returned an invalid state envelope');
117
+ }
118
+ const revision = safeRevision(row.revision);
119
+ if (expectedRevision !== undefined && revision !== expectedRevision) {
120
+ throw new Error('trust-program Postgres returned an unexpected revision');
121
+ }
122
+ let state;
123
+ try {
124
+ state = JSON.parse(row.state_json);
125
+ if (!isRecord(state)
126
+ || canonicalize(state) !== row.state_json
127
+ || state.tenant_id !== expectedTenantId
128
+ || state.instance_id !== expectedInstanceId
129
+ || state.revision !== revision) {
130
+ throw new Error('state mismatch');
131
+ }
132
+ stateEventAt(state);
133
+ }
134
+ catch {
135
+ throw new Error('trust-program Postgres returned non-canonical state');
136
+ }
137
+ return state;
138
+ }
139
+ function definitiveRow(result, operation, tenantId, instanceId, allowedReasons, expectedRevision) {
140
+ if (!result || result.rowCount !== 1 || !Array.isArray(result.rows) || result.rows.length !== 1) {
141
+ throw new Error(`trust-program ${operation} outcome is ambiguous`);
142
+ }
143
+ const row = result.rows[0];
144
+ if (!isRecord(row) || !exactKeys(row, ENVELOPE_KEYS) || typeof row.ok !== 'boolean') {
145
+ throw new Error(`trust-program ${operation} outcome is malformed`);
146
+ }
147
+ if (row.tenant_id !== tenantId || row.instance_id !== instanceId) {
148
+ throw new Error(`trust-program ${operation} Postgres returned a mismatched identity`);
149
+ }
150
+ if (!row.ok) {
151
+ if (typeof row.reason !== 'string' || !allowedReasons.has(row.reason)
152
+ || (row.revision !== null && row.revision !== undefined)
153
+ || (row.state_json !== null && row.state_json !== undefined)
154
+ || (row.state_digest !== null && row.state_digest !== undefined)) {
155
+ throw new Error(`trust-program ${operation} refusal is unrecognized`);
156
+ }
157
+ return fail(row.reason);
158
+ }
159
+ if (row.reason !== null && row.reason !== undefined && row.reason !== '') {
160
+ throw new Error(`trust-program ${operation} success carried a refusal reason`);
161
+ }
162
+ return {
163
+ ok: true,
164
+ state: decodeState(row, tenantId, instanceId, expectedRevision),
165
+ };
166
+ }
167
+ function lookupInput(value) {
168
+ if (!isRecord(value)
169
+ || Reflect.ownKeys(value).length !== 2
170
+ || !Object.hasOwn(value, 'tenantId')
171
+ || !Object.hasOwn(value, 'instanceId')) {
172
+ throw new TypeError('trust-program lookup input is invalid');
173
+ }
174
+ assertTenantId(value.tenantId);
175
+ assertInstanceId(value.instanceId);
176
+ return { tenantId: value.tenantId, instanceId: value.instanceId };
177
+ }
178
+ function invalidatedState(current, reason, at) {
179
+ if (!isRecord(current.stages)
180
+ || Object.values(current.stages).some((stage) => !isRecord(stage))
181
+ || !isRecord(current.execution)) {
182
+ throw new Error('trust-program stored state cannot be invalidated safely');
183
+ }
184
+ const next = structuredClone(current);
185
+ next.status = 'invalidated';
186
+ next.invalidation_reason = reason;
187
+ next.revision += 1;
188
+ next.updated_at = new Date(at).toISOString();
189
+ for (const stage of Object.values(next.stages))
190
+ stage.status = 'invalidated';
191
+ if (['locked', 'ready'].includes(next.execution.status)) {
192
+ next.execution.status = 'invalidated';
193
+ }
194
+ return next;
195
+ }
196
+ /**
197
+ * Create the exact durable store consumed by createTrustProgramKernel().
198
+ * `pool` must provide node-postgres-style connect(), returning a pinned client
199
+ * with query() and release().
200
+ */
201
+ export function createTrustProgramPostgresStore({ pool } = {}) {
202
+ if (!pool || typeof pool.connect !== 'function') {
203
+ throw new TypeError('createTrustProgramPostgresStore requires a transaction-capable pg pool');
204
+ }
205
+ async function transaction(readOnly, work) {
206
+ const client = await pool.connect();
207
+ if (!client || typeof client.query !== 'function' || typeof client.release !== 'function') {
208
+ throw new TypeError('trust-program pg pool returned an invalid client');
209
+ }
210
+ let began = false;
211
+ try {
212
+ await client.query(readOnly
213
+ ? 'BEGIN ISOLATION LEVEL REPEATABLE READ READ ONLY'
214
+ : 'BEGIN ISOLATION LEVEL READ COMMITTED READ WRITE');
215
+ began = true;
216
+ const value = await work(client);
217
+ await client.query('COMMIT');
218
+ began = false;
219
+ return value;
220
+ }
221
+ catch (error) {
222
+ if (began) {
223
+ try {
224
+ await client.query('ROLLBACK');
225
+ }
226
+ catch (rollbackError) {
227
+ throw new AggregateError([error, rollbackError], 'trust-program transaction and rollback both failed');
228
+ }
229
+ }
230
+ throw error;
231
+ }
232
+ finally {
233
+ client.release();
234
+ }
235
+ }
236
+ async function getWithClient(client, tenantId, instanceId) {
237
+ return definitiveRow(await client.query(TRUST_PROGRAM_POSTGRES_SQL.get, [tenantId, instanceId]), 'get', tenantId, instanceId, new Set(['instance_not_found']));
238
+ }
239
+ return Object.freeze({
240
+ version: TRUST_PROGRAM_PG_STORE_VERSION,
241
+ durable: true,
242
+ async create(input) {
243
+ if (!isRecord(input)
244
+ || Reflect.ownKeys(input).length !== 2
245
+ || !Object.hasOwn(input, 'tenantId')
246
+ || !Object.hasOwn(input, 'state')) {
247
+ throw new TypeError('trust-program create input is invalid');
248
+ }
249
+ const { tenantId, state } = input;
250
+ const instanceId = state?.instance_id;
251
+ assertTenantId(tenantId);
252
+ assertInstanceId(instanceId);
253
+ const encoded = encodeState(state, tenantId, instanceId, 0);
254
+ return transaction(false, async (client) => definitiveRow(await client.query(TRUST_PROGRAM_POSTGRES_SQL.create, [
255
+ tenantId, instanceId, encoded.stateJson, encoded.stateDigest, encoded.eventAt,
256
+ ]), 'create', tenantId, instanceId, new Set(['instance_exists', 'evidence_replayed', 'trust_operation_replayed']), 0));
257
+ },
258
+ async get(input) {
259
+ const { tenantId, instanceId } = lookupInput(input);
260
+ return transaction(true, (client) => getWithClient(client, tenantId, instanceId));
261
+ },
262
+ async compareAndSwap(input) {
263
+ if (!isRecord(input)
264
+ || Reflect.ownKeys(input).length !== 4
265
+ || !Object.hasOwn(input, 'tenantId')
266
+ || !Object.hasOwn(input, 'instanceId')
267
+ || !Object.hasOwn(input, 'expectedRevision')
268
+ || !Object.hasOwn(input, 'state')) {
269
+ throw new TypeError('trust-program compareAndSwap input is invalid');
270
+ }
271
+ const { tenantId, instanceId, expectedRevision, state } = input;
272
+ assertTenantId(tenantId);
273
+ assertInstanceId(instanceId);
274
+ assertRevision(expectedRevision, 'expected');
275
+ const nextRevision = expectedRevision + 1;
276
+ if (!Number.isSafeInteger(nextRevision)) {
277
+ throw new TypeError('trust-program next revision is invalid');
278
+ }
279
+ const encoded = encodeState(state, tenantId, instanceId, nextRevision);
280
+ return transaction(false, async (client) => definitiveRow(await client.query(TRUST_PROGRAM_POSTGRES_SQL.compareAndSwap, [
281
+ tenantId,
282
+ instanceId,
283
+ expectedRevision,
284
+ nextRevision,
285
+ encoded.stateJson,
286
+ encoded.stateDigest,
287
+ encoded.eventAt,
288
+ ]), 'compareAndSwap', tenantId, instanceId, new Set([
289
+ 'instance_not_found', 'revision_conflict', 'clock_regression',
290
+ 'evidence_replayed', 'trust_operation_replayed',
291
+ ]), nextRevision));
292
+ },
293
+ async invalidate(input) {
294
+ if (!isRecord(input)
295
+ || Reflect.ownKeys(input).length !== 5
296
+ || !Object.hasOwn(input, 'tenantId')
297
+ || !Object.hasOwn(input, 'instanceId')
298
+ || !Object.hasOwn(input, 'expectedRevision')
299
+ || !Object.hasOwn(input, 'reason')
300
+ || !Object.hasOwn(input, 'at')) {
301
+ throw new TypeError('trust-program invalidate input is invalid');
302
+ }
303
+ const { tenantId, instanceId, expectedRevision, reason, at } = input;
304
+ assertTenantId(tenantId);
305
+ assertInstanceId(instanceId);
306
+ assertRevision(expectedRevision, 'expected');
307
+ if (typeof reason !== 'string' || reason.length < 1 || reason.length > 256) {
308
+ throw new TypeError('trust-program invalidation reason is invalid');
309
+ }
310
+ if (!Number.isSafeInteger(at) || at < 0 || at > 8_640_000_000_000_000) {
311
+ throw new TypeError('trust-program invalidation time is invalid');
312
+ }
313
+ return transaction(false, async (client) => {
314
+ const loaded = await getWithClient(client, tenantId, instanceId);
315
+ if (!loaded.ok)
316
+ return loaded;
317
+ const current = loaded.state;
318
+ if (current.revision !== expectedRevision)
319
+ return fail('revision_conflict');
320
+ if (current.status === 'invalidated')
321
+ return fail('program_instance_invalidated');
322
+ const next = invalidatedState(current, reason, at);
323
+ const encoded = encodeState(next, tenantId, instanceId, expectedRevision + 1);
324
+ return definitiveRow(await client.query(TRUST_PROGRAM_POSTGRES_SQL.invalidate, [
325
+ tenantId,
326
+ instanceId,
327
+ expectedRevision,
328
+ reason,
329
+ encoded.eventAt,
330
+ encoded.stateJson,
331
+ encoded.stateDigest,
332
+ ]), 'invalidate', tenantId, instanceId, new Set([
333
+ 'instance_not_found', 'revision_conflict', 'program_instance_invalidated',
334
+ 'clock_regression',
335
+ ]), expectedRevision + 1);
336
+ });
337
+ },
338
+ });
339
+ }
340
+ export default {
341
+ TRUST_PROGRAM_PG_STORE_VERSION,
342
+ TRUST_PROGRAM_MAX_STATE_BYTES,
343
+ TRUST_PROGRAM_POSTGRES_SQL,
344
+ createTrustProgramPostgresStore,
345
+ };
346
+ //# sourceMappingURL=trust-program-postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-program-postgres.js","sourceRoot":"","sources":["../src/trust-program-postgres.ts"],"names":[],"mappings":"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"}