@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":"action-escrow-package.js","sourceRoot":"","sources":["../src/action-escrow-package.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ export declare const ACTION_ESCROW_PG_STORE_VERSION = "EP-ACTION-ESCROW-PG-STORE-v1";
2
+ export declare const ACTION_ESCROW_STATE_TABLE = "ep_action_escrow_state";
3
+ export declare const ACTION_ESCROW_EVENT_TABLE = "ep_action_escrow_state_events";
4
+ export declare const ACTION_ESCROW_MAX_STATE_BYTES: number;
5
+ export declare const ACTION_ESCROW_STATE_DDL = "CREATE TABLE IF NOT EXISTS ep_action_escrow_state (\n agreement_key TEXT PRIMARY KEY,\n revision BIGINT NOT NULL CHECK (revision >= 0),\n record_json TEXT NOT NULL,\n updated_at BIGINT NOT NULL,\nCHECK (octet_length(record_json) <= 4194304)\n);\nCREATE TABLE IF NOT EXISTS ep_action_escrow_state_events (\n agreement_key TEXT NOT NULL,\n revision BIGINT NOT NULL CHECK (revision >= 0),\n previous_revision BIGINT NULL,\n record_json TEXT NOT NULL,\n record_digest TEXT NOT NULL CHECK (record_digest ~ '^sha256:[0-9a-f]{64}$'),\n recorded_at BIGINT NOT NULL,\n PRIMARY KEY (agreement_key, revision),\n CHECK (\n (revision = 0 AND previous_revision IS NULL)\n OR previous_revision = revision - 1\n ),\n CHECK (octet_length(record_json) <= 4194304)\n);\nREVOKE ALL ON ep_action_escrow_state FROM PUBLIC;\nREVOKE ALL ON ep_action_escrow_state_events FROM PUBLIC;\nREVOKE UPDATE, DELETE, TRUNCATE ON ep_action_escrow_state_events FROM PUBLIC;";
6
+ /**
7
+ * @param {string} roleName
8
+ */
9
+ export declare function actionEscrowRuntimeGrantDdl(roleName: any): string;
10
+ export declare const ACTION_ESCROW_STATE_SQL: Readonly<{
11
+ health: "SELECT\n to_regclass('public.ep_action_escrow_state') IS NOT NULL AS table_ready,\n to_regclass('public.ep_action_escrow_state_events') IS NOT NULL AS event_table_ready,\n CASE WHEN to_regclass('public.ep_action_escrow_state') IS NULL THEN FALSE\n ELSE has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state'), 'SELECT')\n AND has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state'), 'INSERT')\n AND has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state'), 'UPDATE') END AS can_use,\n CASE WHEN to_regclass('public.ep_action_escrow_state_events') IS NULL THEN FALSE\n ELSE has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state_events'), 'SELECT')\n AND has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state_events'), 'INSERT') END AS can_append_history,\n CASE WHEN to_regclass('public.ep_action_escrow_state') IS NULL THEN TRUE\n ELSE (SELECT relowner = (SELECT oid FROM pg_roles WHERE rolname = current_user)\n FROM pg_class WHERE oid = to_regclass('public.ep_action_escrow_state')) END AS owns_state_table,\n CASE WHEN to_regclass('public.ep_action_escrow_state_events') IS NULL THEN TRUE\n ELSE (SELECT relowner = (SELECT oid FROM pg_roles WHERE rolname = current_user)\n FROM pg_class WHERE oid = to_regclass('public.ep_action_escrow_state_events')) END AS owns_event_table,\n CASE WHEN to_regclass('public.ep_action_escrow_state') IS NULL THEN TRUE\n ELSE has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state'), 'DELETE')\n OR has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state'), 'TRUNCATE') END AS can_destroy_state,\n CASE WHEN to_regclass('public.ep_action_escrow_state_events') IS NULL THEN TRUE\n ELSE has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state_events'), 'UPDATE')\n OR has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state_events'), 'DELETE')\n OR has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state_events'), 'TRUNCATE') END AS can_mutate_history";
12
+ read: "SELECT revision, record_json FROM ep_action_escrow_state WHERE agreement_key = $1";
13
+ history: "SELECT revision, previous_revision, record_json, record_digest, recorded_at\nFROM ep_action_escrow_state_events\nWHERE agreement_key = $1\nORDER BY revision ASC";
14
+ create: "WITH installed AS (\n INSERT INTO ep_action_escrow_state (agreement_key, revision, record_json, updated_at)\n VALUES ($1, 0, $2, $3)\n ON CONFLICT (agreement_key) DO NOTHING\n RETURNING agreement_key, revision, record_json, updated_at\n), journaled AS (\n INSERT INTO ep_action_escrow_state_events\n (agreement_key, revision, previous_revision, record_json, record_digest, recorded_at)\n SELECT agreement_key, revision, NULL, record_json, $4, updated_at\n FROM installed\n RETURNING revision\n)\nSELECT revision FROM journaled";
15
+ compareAndSwap: "WITH installed AS (\nUPDATE ep_action_escrow_state\nSET revision = $3, record_json = $4, updated_at = $5\nWHERE agreement_key = $1 AND revision = $2 AND updated_at <= $5\nRETURNING agreement_key, revision, record_json, updated_at\n), journaled AS (\n INSERT INTO ep_action_escrow_state_events\n (agreement_key, revision, previous_revision, record_json, record_digest, recorded_at)\n SELECT agreement_key, revision, $2, record_json, $6, updated_at\n FROM installed\n RETURNING revision\n)\nSELECT revision FROM journaled";
16
+ }>;
17
+ export declare function createActionEscrowPostgresStore({ query, now, }?: {
18
+ query?: (text: string, params: any[]) => Promise<{
19
+ rowCount: number;
20
+ rows?: any[];
21
+ }>;
22
+ now?: number | (() => number);
23
+ }): Readonly<{
24
+ version: "EP-ACTION-ESCROW-PG-STORE-v1";
25
+ durable: true;
26
+ atomicExpectedRevisionCas: true;
27
+ linearizableReads: true;
28
+ monotonicRevisions: true;
29
+ nonExpiring: true;
30
+ maxStateBytes: number;
31
+ health(): Promise<{
32
+ ok: boolean;
33
+ version: string;
34
+ }>;
35
+ read: (key: any) => Promise<{
36
+ revision: number;
37
+ value: any;
38
+ } | null>;
39
+ readHistory(key: any): Promise<any>;
40
+ compareAndSwap(key: any, expectedRevision: any, value: any): Promise<{
41
+ applied: boolean;
42
+ revision: any;
43
+ }>;
44
+ }>;
45
+ declare const _default: {
46
+ ACTION_ESCROW_PG_STORE_VERSION: string;
47
+ ACTION_ESCROW_STATE_TABLE: string;
48
+ ACTION_ESCROW_EVENT_TABLE: string;
49
+ ACTION_ESCROW_MAX_STATE_BYTES: number;
50
+ ACTION_ESCROW_STATE_DDL: string;
51
+ actionEscrowRuntimeGrantDdl: typeof actionEscrowRuntimeGrantDdl;
52
+ ACTION_ESCROW_STATE_SQL: Readonly<{
53
+ health: "SELECT\n to_regclass('public.ep_action_escrow_state') IS NOT NULL AS table_ready,\n to_regclass('public.ep_action_escrow_state_events') IS NOT NULL AS event_table_ready,\n CASE WHEN to_regclass('public.ep_action_escrow_state') IS NULL THEN FALSE\n ELSE has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state'), 'SELECT')\n AND has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state'), 'INSERT')\n AND has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state'), 'UPDATE') END AS can_use,\n CASE WHEN to_regclass('public.ep_action_escrow_state_events') IS NULL THEN FALSE\n ELSE has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state_events'), 'SELECT')\n AND has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state_events'), 'INSERT') END AS can_append_history,\n CASE WHEN to_regclass('public.ep_action_escrow_state') IS NULL THEN TRUE\n ELSE (SELECT relowner = (SELECT oid FROM pg_roles WHERE rolname = current_user)\n FROM pg_class WHERE oid = to_regclass('public.ep_action_escrow_state')) END AS owns_state_table,\n CASE WHEN to_regclass('public.ep_action_escrow_state_events') IS NULL THEN TRUE\n ELSE (SELECT relowner = (SELECT oid FROM pg_roles WHERE rolname = current_user)\n FROM pg_class WHERE oid = to_regclass('public.ep_action_escrow_state_events')) END AS owns_event_table,\n CASE WHEN to_regclass('public.ep_action_escrow_state') IS NULL THEN TRUE\n ELSE has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state'), 'DELETE')\n OR has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state'), 'TRUNCATE') END AS can_destroy_state,\n CASE WHEN to_regclass('public.ep_action_escrow_state_events') IS NULL THEN TRUE\n ELSE has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state_events'), 'UPDATE')\n OR has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state_events'), 'DELETE')\n OR has_table_privilege(current_user, to_regclass('public.ep_action_escrow_state_events'), 'TRUNCATE') END AS can_mutate_history";
54
+ read: "SELECT revision, record_json FROM ep_action_escrow_state WHERE agreement_key = $1";
55
+ history: "SELECT revision, previous_revision, record_json, record_digest, recorded_at\nFROM ep_action_escrow_state_events\nWHERE agreement_key = $1\nORDER BY revision ASC";
56
+ create: "WITH installed AS (\n INSERT INTO ep_action_escrow_state (agreement_key, revision, record_json, updated_at)\n VALUES ($1, 0, $2, $3)\n ON CONFLICT (agreement_key) DO NOTHING\n RETURNING agreement_key, revision, record_json, updated_at\n), journaled AS (\n INSERT INTO ep_action_escrow_state_events\n (agreement_key, revision, previous_revision, record_json, record_digest, recorded_at)\n SELECT agreement_key, revision, NULL, record_json, $4, updated_at\n FROM installed\n RETURNING revision\n)\nSELECT revision FROM journaled";
57
+ compareAndSwap: "WITH installed AS (\nUPDATE ep_action_escrow_state\nSET revision = $3, record_json = $4, updated_at = $5\nWHERE agreement_key = $1 AND revision = $2 AND updated_at <= $5\nRETURNING agreement_key, revision, record_json, updated_at\n), journaled AS (\n INSERT INTO ep_action_escrow_state_events\n (agreement_key, revision, previous_revision, record_json, record_digest, recorded_at)\n SELECT agreement_key, revision, $2, record_json, $6, updated_at\n FROM installed\n RETURNING revision\n)\nSELECT revision FROM journaled";
58
+ }>;
59
+ createActionEscrowPostgresStore: typeof createActionEscrowPostgresStore;
60
+ };
61
+ export default _default;
62
+ //# sourceMappingURL=action-escrow-postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-escrow-postgres.d.ts","sourceRoot":"","sources":["../src/action-escrow-postgres.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,8BAA8B,iCAAiC,CAAC;AAC7E,eAAO,MAAM,yBAAyB,2BAA2B,CAAC;AAClE,eAAO,MAAM,yBAAyB,kCAAkC,CAAC;AACzE,eAAO,MAAM,6BAA6B,QAAkB,CAAC;AAE7D,eAAO,MAAM,uBAAuB,y+BAuByC,CAAC;AAE9E;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,KAAA,UAWnD;AAED,eAAO,MAAM,uBAAuB;;;;;;EAuDlC,CAAC;AAqDH,wBAAgB,+BAA+B,CAAC,EAC9C,KAAK,EACL,GAAc,GACf,GAAE;IACD,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC,CAAC;IACrF,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;CAC1B;;;;;;;;;;;;;;;;;;;;;GAuLL;;;;;;;;;;;;;;;;;AAED,wBASE"}
@@ -0,0 +1,339 @@
1
+ // @ts-nocheck
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Durable Postgres backend for the Action Escrow state-machine store contract.
5
+ *
6
+ * Each transition compares the exact prior serialized snapshot and installs
7
+ * the exact replacement in one SQL statement. Backend errors propagate; the
8
+ * state machine must refuse rather than treating an outage as absent state.
9
+ */
10
+ import crypto from 'node:crypto';
11
+ import { strictJsonGate } from './strict-json.js';
12
+ export const ACTION_ESCROW_PG_STORE_VERSION = 'EP-ACTION-ESCROW-PG-STORE-v1';
13
+ export const ACTION_ESCROW_STATE_TABLE = 'ep_action_escrow_state';
14
+ export const ACTION_ESCROW_EVENT_TABLE = 'ep_action_escrow_state_events';
15
+ export const ACTION_ESCROW_MAX_STATE_BYTES = 4 * 1024 * 1024;
16
+ export const ACTION_ESCROW_STATE_DDL = `CREATE TABLE IF NOT EXISTS ${ACTION_ESCROW_STATE_TABLE} (
17
+ agreement_key TEXT PRIMARY KEY,
18
+ revision BIGINT NOT NULL CHECK (revision >= 0),
19
+ record_json TEXT NOT NULL,
20
+ updated_at BIGINT NOT NULL,
21
+ CHECK (octet_length(record_json) <= ${ACTION_ESCROW_MAX_STATE_BYTES})
22
+ );
23
+ CREATE TABLE IF NOT EXISTS ${ACTION_ESCROW_EVENT_TABLE} (
24
+ agreement_key TEXT NOT NULL,
25
+ revision BIGINT NOT NULL CHECK (revision >= 0),
26
+ previous_revision BIGINT NULL,
27
+ record_json TEXT NOT NULL,
28
+ record_digest TEXT NOT NULL CHECK (record_digest ~ '^sha256:[0-9a-f]{64}$'),
29
+ recorded_at BIGINT NOT NULL,
30
+ PRIMARY KEY (agreement_key, revision),
31
+ CHECK (
32
+ (revision = 0 AND previous_revision IS NULL)
33
+ OR previous_revision = revision - 1
34
+ ),
35
+ CHECK (octet_length(record_json) <= ${ACTION_ESCROW_MAX_STATE_BYTES})
36
+ );
37
+ REVOKE ALL ON ${ACTION_ESCROW_STATE_TABLE} FROM PUBLIC;
38
+ REVOKE ALL ON ${ACTION_ESCROW_EVENT_TABLE} FROM PUBLIC;
39
+ REVOKE UPDATE, DELETE, TRUNCATE ON ${ACTION_ESCROW_EVENT_TABLE} FROM PUBLIC;`;
40
+ /**
41
+ * @param {string} roleName
42
+ */
43
+ export function actionEscrowRuntimeGrantDdl(roleName) {
44
+ if (typeof roleName !== 'string' || !/^[A-Za-z_][A-Za-z0-9_]{0,62}$/.test(roleName)) {
45
+ throw new TypeError('action-escrow runtime role name is invalid');
46
+ }
47
+ const role = `"${roleName}"`;
48
+ return `REVOKE ALL ON ${ACTION_ESCROW_STATE_TABLE} FROM ${role};
49
+ REVOKE ALL ON ${ACTION_ESCROW_EVENT_TABLE} FROM ${role};
50
+ GRANT SELECT, INSERT, UPDATE ON ${ACTION_ESCROW_STATE_TABLE} TO ${role};
51
+ GRANT SELECT, INSERT ON ${ACTION_ESCROW_EVENT_TABLE} TO ${role};
52
+ REVOKE DELETE, TRUNCATE ON ${ACTION_ESCROW_STATE_TABLE} FROM ${role};
53
+ REVOKE UPDATE, DELETE, TRUNCATE ON ${ACTION_ESCROW_EVENT_TABLE} FROM ${role};`;
54
+ }
55
+ export const ACTION_ESCROW_STATE_SQL = Object.freeze({
56
+ health: `SELECT
57
+ to_regclass('public.${ACTION_ESCROW_STATE_TABLE}') IS NOT NULL AS table_ready,
58
+ to_regclass('public.${ACTION_ESCROW_EVENT_TABLE}') IS NOT NULL AS event_table_ready,
59
+ CASE WHEN to_regclass('public.${ACTION_ESCROW_STATE_TABLE}') IS NULL THEN FALSE
60
+ ELSE has_table_privilege(current_user, to_regclass('public.${ACTION_ESCROW_STATE_TABLE}'), 'SELECT')
61
+ AND has_table_privilege(current_user, to_regclass('public.${ACTION_ESCROW_STATE_TABLE}'), 'INSERT')
62
+ AND has_table_privilege(current_user, to_regclass('public.${ACTION_ESCROW_STATE_TABLE}'), 'UPDATE') END AS can_use,
63
+ CASE WHEN to_regclass('public.${ACTION_ESCROW_EVENT_TABLE}') IS NULL THEN FALSE
64
+ ELSE has_table_privilege(current_user, to_regclass('public.${ACTION_ESCROW_EVENT_TABLE}'), 'SELECT')
65
+ AND has_table_privilege(current_user, to_regclass('public.${ACTION_ESCROW_EVENT_TABLE}'), 'INSERT') END AS can_append_history,
66
+ CASE WHEN to_regclass('public.${ACTION_ESCROW_STATE_TABLE}') IS NULL THEN TRUE
67
+ ELSE (SELECT relowner = (SELECT oid FROM pg_roles WHERE rolname = current_user)
68
+ FROM pg_class WHERE oid = to_regclass('public.${ACTION_ESCROW_STATE_TABLE}')) END AS owns_state_table,
69
+ CASE WHEN to_regclass('public.${ACTION_ESCROW_EVENT_TABLE}') IS NULL THEN TRUE
70
+ ELSE (SELECT relowner = (SELECT oid FROM pg_roles WHERE rolname = current_user)
71
+ FROM pg_class WHERE oid = to_regclass('public.${ACTION_ESCROW_EVENT_TABLE}')) END AS owns_event_table,
72
+ CASE WHEN to_regclass('public.${ACTION_ESCROW_STATE_TABLE}') IS NULL THEN TRUE
73
+ ELSE has_table_privilege(current_user, to_regclass('public.${ACTION_ESCROW_STATE_TABLE}'), 'DELETE')
74
+ OR has_table_privilege(current_user, to_regclass('public.${ACTION_ESCROW_STATE_TABLE}'), 'TRUNCATE') END AS can_destroy_state,
75
+ CASE WHEN to_regclass('public.${ACTION_ESCROW_EVENT_TABLE}') IS NULL THEN TRUE
76
+ ELSE has_table_privilege(current_user, to_regclass('public.${ACTION_ESCROW_EVENT_TABLE}'), 'UPDATE')
77
+ OR has_table_privilege(current_user, to_regclass('public.${ACTION_ESCROW_EVENT_TABLE}'), 'DELETE')
78
+ OR has_table_privilege(current_user, to_regclass('public.${ACTION_ESCROW_EVENT_TABLE}'), 'TRUNCATE') END AS can_mutate_history`,
79
+ read: `SELECT revision, record_json FROM ${ACTION_ESCROW_STATE_TABLE} WHERE agreement_key = $1`,
80
+ history: `SELECT revision, previous_revision, record_json, record_digest, recorded_at
81
+ FROM ${ACTION_ESCROW_EVENT_TABLE}
82
+ WHERE agreement_key = $1
83
+ ORDER BY revision ASC`,
84
+ create: `WITH installed AS (
85
+ INSERT INTO ${ACTION_ESCROW_STATE_TABLE} (agreement_key, revision, record_json, updated_at)
86
+ VALUES ($1, 0, $2, $3)
87
+ ON CONFLICT (agreement_key) DO NOTHING
88
+ RETURNING agreement_key, revision, record_json, updated_at
89
+ ), journaled AS (
90
+ INSERT INTO ${ACTION_ESCROW_EVENT_TABLE}
91
+ (agreement_key, revision, previous_revision, record_json, record_digest, recorded_at)
92
+ SELECT agreement_key, revision, NULL, record_json, $4, updated_at
93
+ FROM installed
94
+ RETURNING revision
95
+ )
96
+ SELECT revision FROM journaled`,
97
+ compareAndSwap: `WITH installed AS (
98
+ UPDATE ${ACTION_ESCROW_STATE_TABLE}
99
+ SET revision = $3, record_json = $4, updated_at = $5
100
+ WHERE agreement_key = $1 AND revision = $2 AND updated_at <= $5
101
+ RETURNING agreement_key, revision, record_json, updated_at
102
+ ), journaled AS (
103
+ INSERT INTO ${ACTION_ESCROW_EVENT_TABLE}
104
+ (agreement_key, revision, previous_revision, record_json, record_digest, recorded_at)
105
+ SELECT agreement_key, revision, $2, record_json, $6, updated_at
106
+ FROM installed
107
+ RETURNING revision
108
+ )
109
+ SELECT revision FROM journaled`,
110
+ });
111
+ /**
112
+ * @param {*} value
113
+ */
114
+ function validKey(value) {
115
+ return typeof value === 'string'
116
+ && value.length >= 1
117
+ && value.length <= 512
118
+ && !/[\u0000-\u001f\u007f]/.test(value);
119
+ }
120
+ /**
121
+ * @param {*} value
122
+ */
123
+ function parsedState(value) {
124
+ if (typeof value !== 'string'
125
+ || Buffer.byteLength(value, 'utf8') > ACTION_ESCROW_MAX_STATE_BYTES
126
+ || !strictJsonGate(value).ok) {
127
+ return null;
128
+ }
129
+ try {
130
+ const parsed = JSON.parse(value);
131
+ return parsed !== null
132
+ && typeof parsed === 'object'
133
+ && !Array.isArray(parsed)
134
+ && Object.getPrototypeOf(parsed) === Object.prototype
135
+ ? parsed
136
+ : null;
137
+ }
138
+ catch {
139
+ return null;
140
+ }
141
+ }
142
+ /**
143
+ * @param {string} value
144
+ */
145
+ function recordDigest(value) {
146
+ return `sha256:${crypto.createHash('sha256').update(value, 'utf8').digest('hex')}`;
147
+ }
148
+ /**
149
+ * @param {*} result
150
+ * @param {string} operation
151
+ */
152
+ function assertResult(result, operation) {
153
+ if (!result || typeof result.rowCount !== 'number' || !Number.isSafeInteger(result.rowCount)
154
+ || result.rowCount < 0) {
155
+ throw new Error(`${operation}: malformed Postgres result`);
156
+ }
157
+ return result;
158
+ }
159
+ export function createActionEscrowPostgresStore({ query, now = Date.now, } = {}) {
160
+ if (typeof query !== 'function') {
161
+ throw new TypeError('createActionEscrowPostgresStore requires an async pg-style query function');
162
+ }
163
+ let lastNow = Number.NEGATIVE_INFINITY;
164
+ function nowMs() {
165
+ const value = typeof now === 'function' ? now() : now;
166
+ if (!Number.isSafeInteger(value) || value < 0) {
167
+ throw new Error('action-escrow store clock must be a non-negative safe-integer epoch millisecond');
168
+ }
169
+ if (value < lastNow) {
170
+ throw new Error(`action-escrow store clock regression refused: ${value} < ${lastNow}`);
171
+ }
172
+ lastNow = value;
173
+ return value;
174
+ }
175
+ /**
176
+ * @param {*} key
177
+ */
178
+ function assertKey(key) {
179
+ if (!validKey(key))
180
+ throw new TypeError('action-escrow agreement key is invalid');
181
+ }
182
+ /**
183
+ * @param {*} value
184
+ * @param {number} revision
185
+ */
186
+ function assertState(value, revision) {
187
+ const parsed = parsedState(value);
188
+ if (!parsed) {
189
+ throw new TypeError('action-escrow state must be bounded strict JSON text');
190
+ }
191
+ if (!Number.isSafeInteger(parsed.revision)
192
+ || parsed.revision < 0
193
+ || parsed.revision !== revision) {
194
+ throw new TypeError('action-escrow state revision must match the CAS revision');
195
+ }
196
+ }
197
+ /**
198
+ * @param {string} key
199
+ */
200
+ async function loadHistory(key) {
201
+ // query is validated as a function above; the guard's narrowing does not
202
+ // carry into this hoisted function declaration's closure.
203
+ const result = assertResult(await query(ACTION_ESCROW_STATE_SQL.history, [key]), 'action-escrow history');
204
+ if (!Array.isArray(result.rows) || result.rows.length !== result.rowCount) {
205
+ throw new Error('action-escrow history: malformed Postgres result');
206
+ }
207
+ let previousRecordedAt = Number.NEGATIVE_INFINITY;
208
+ const history = result.rows.map(/** @param {*} row @param {number} index */ (row, index) => {
209
+ const revision = Number(row?.revision);
210
+ const previousRevision = row?.previous_revision === null
211
+ ? null
212
+ : Number(row?.previous_revision);
213
+ const recordedAt = Number(row?.recorded_at);
214
+ if (!Number.isSafeInteger(revision)
215
+ || revision !== index
216
+ || previousRevision !== (revision === 0 ? null : revision - 1)
217
+ || !Number.isSafeInteger(recordedAt)
218
+ || recordedAt < 0
219
+ || recordedAt < previousRecordedAt
220
+ || !parsedState(row?.record_json)
221
+ || row?.record_digest !== recordDigest(row.record_json)) {
222
+ throw new Error('action-escrow history: invalid or non-contiguous event');
223
+ }
224
+ assertState(row.record_json, revision);
225
+ previousRecordedAt = recordedAt;
226
+ return Object.freeze({
227
+ revision,
228
+ previous_revision: previousRevision,
229
+ record_json: row.record_json,
230
+ record_digest: row.record_digest,
231
+ recorded_at: recordedAt,
232
+ });
233
+ });
234
+ return Object.freeze(history);
235
+ }
236
+ async function read(key) {
237
+ assertKey(key);
238
+ for (let attempt = 0; attempt < 2; attempt += 1) {
239
+ const result = assertResult(
240
+ // query is validated as a function above; the guard's narrowing does
241
+ // not carry into this hoisted function declaration's closure.
242
+ await query(ACTION_ESCROW_STATE_SQL.read, [key]), 'action-escrow read');
243
+ if (result.rowCount > 1
244
+ || !Array.isArray(result.rows)
245
+ || result.rows.length !== result.rowCount) {
246
+ throw new Error('action-escrow read: database returned malformed or ambiguous state');
247
+ }
248
+ const history = await loadHistory(key);
249
+ if (result.rowCount === 0) {
250
+ if (history.length === 0)
251
+ return null;
252
+ continue;
253
+ }
254
+ if (!Number.isSafeInteger(Number(result.rows[0]?.revision))
255
+ || Number(result.rows[0].revision) < 0
256
+ || !parsedState(result.rows[0]?.record_json)) {
257
+ throw new Error('action-escrow read: database returned malformed or ambiguous state');
258
+ }
259
+ const revision = Number(result.rows[0].revision);
260
+ assertState(result.rows[0].record_json, revision);
261
+ const tail = history.at(-1);
262
+ if (tail?.revision === revision
263
+ && tail.record_json === result.rows[0].record_json
264
+ && tail.record_digest === recordDigest(result.rows[0].record_json)) {
265
+ return { revision, value: result.rows[0].record_json };
266
+ }
267
+ }
268
+ throw new Error('action-escrow read: state and append-only journal do not agree');
269
+ }
270
+ return Object.freeze({
271
+ version: ACTION_ESCROW_PG_STORE_VERSION,
272
+ durable: true,
273
+ atomicExpectedRevisionCas: true,
274
+ linearizableReads: true,
275
+ monotonicRevisions: true,
276
+ nonExpiring: true,
277
+ maxStateBytes: ACTION_ESCROW_MAX_STATE_BYTES,
278
+ async health() {
279
+ const result = assertResult(await query(ACTION_ESCROW_STATE_SQL.health, []), 'action-escrow health');
280
+ if (result.rowCount !== 1 || !Array.isArray(result.rows) || result.rows.length !== 1) {
281
+ throw new Error('action-escrow health: malformed Postgres result');
282
+ }
283
+ return {
284
+ ok: result.rows[0].table_ready === true
285
+ && result.rows[0].event_table_ready === true
286
+ && result.rows[0].can_use === true
287
+ && result.rows[0].can_append_history === true
288
+ && result.rows[0].owns_state_table === false
289
+ && result.rows[0].owns_event_table === false
290
+ && result.rows[0].can_destroy_state === false
291
+ && result.rows[0].can_mutate_history === false,
292
+ version: ACTION_ESCROW_PG_STORE_VERSION,
293
+ };
294
+ },
295
+ read,
296
+ async readHistory(key) {
297
+ assertKey(key);
298
+ return loadHistory(key);
299
+ },
300
+ async compareAndSwap(key, expectedRevision, value) {
301
+ assertKey(key);
302
+ if (expectedRevision !== null
303
+ && (!Number.isSafeInteger(expectedRevision) || expectedRevision < 0)) {
304
+ throw new TypeError('action-escrow expected revision is invalid');
305
+ }
306
+ const nextRevision = expectedRevision === null ? 0 : expectedRevision + 1;
307
+ assertState(value, nextRevision);
308
+ const sql = expectedRevision === null
309
+ ? ACTION_ESCROW_STATE_SQL.create
310
+ : ACTION_ESCROW_STATE_SQL.compareAndSwap;
311
+ const params = expectedRevision === null
312
+ ? [key, value, nowMs(), recordDigest(value)]
313
+ : [key, expectedRevision, nextRevision, value, nowMs(), recordDigest(value)];
314
+ const result = assertResult(await query(sql, params), 'action-escrow compareAndSwap');
315
+ if (result.rowCount > 1) {
316
+ throw new Error('action-escrow compareAndSwap affected multiple rows');
317
+ }
318
+ if (result.rowCount === 0)
319
+ return { applied: false, revision: null };
320
+ if (!Array.isArray(result.rows)
321
+ || result.rows.length !== 1
322
+ || Number(result.rows[0]?.revision) !== nextRevision) {
323
+ throw new Error('action-escrow compareAndSwap returned a malformed revision');
324
+ }
325
+ return { applied: true, revision: nextRevision };
326
+ },
327
+ });
328
+ }
329
+ export default {
330
+ ACTION_ESCROW_PG_STORE_VERSION,
331
+ ACTION_ESCROW_STATE_TABLE,
332
+ ACTION_ESCROW_EVENT_TABLE,
333
+ ACTION_ESCROW_MAX_STATE_BYTES,
334
+ ACTION_ESCROW_STATE_DDL,
335
+ actionEscrowRuntimeGrantDdl,
336
+ ACTION_ESCROW_STATE_SQL,
337
+ createActionEscrowPostgresStore,
338
+ };
339
+ //# sourceMappingURL=action-escrow-postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-escrow-postgres.js","sourceRoot":"","sources":["../src/action-escrow-postgres.ts"],"names":[],"mappings":"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"}