@emilia-protocol/gate 0.11.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 +58 -0
  2. package/README.md +252 -0
  3. package/action-control-manifest.js +3 -268
  4. package/action-escrow-custodian.js +3 -394
  5. package/action-escrow-evidence.js +3 -858
  6. package/action-escrow-package.js +3 -1668
  7. package/action-escrow-postgres.js +3 -337
  8. package/action-escrow-state.js +3 -396
  9. package/action-escrow-verifiers.js +3 -331
  10. package/action-escrow.js +3 -2447
  11. package/action-packs.js +3 -140
  12. package/adapters/_kit.js +3 -104
  13. package/adapters/aws.js +3 -108
  14. package/adapters/cloudflare.js +3 -54
  15. package/adapters/gcp.js +3 -70
  16. package/adapters/github.js +3 -109
  17. package/adapters/jira.js +3 -55
  18. package/adapters/k8s.js +3 -70
  19. package/adapters/linear.js +3 -55
  20. package/adapters/salesforce.js +3 -55
  21. package/adapters/stripe.js +3 -81
  22. package/adapters/supabase.js +3 -121
  23. package/adapters/terraform.js +3 -59
  24. package/adapters/vercel.js +3 -84
  25. package/aec-execution.js +3 -312
  26. package/breakglass.js +3 -582
  27. package/capability-receipt.js +4 -0
  28. package/cf1-conformance.js +3 -106
  29. package/challenge-store.js +3 -69
  30. package/control-plane.js +3 -340
  31. package/coverage.js +3 -721
  32. package/demo.mjs +1 -1
  33. package/deployment-attestation.js +3 -247
  34. package/dist/action-control-manifest.d.ts +82 -0
  35. package/dist/action-control-manifest.d.ts.map +1 -0
  36. package/dist/action-control-manifest.js +422 -0
  37. package/dist/action-control-manifest.js.map +1 -0
  38. package/dist/action-escrow-custodian.d.ts +74 -0
  39. package/dist/action-escrow-custodian.d.ts.map +1 -0
  40. package/dist/action-escrow-custodian.js +363 -0
  41. package/dist/action-escrow-custodian.js.map +1 -0
  42. package/dist/action-escrow-evidence.d.ts +130 -0
  43. package/dist/action-escrow-evidence.d.ts.map +1 -0
  44. package/dist/action-escrow-evidence.js +1012 -0
  45. package/dist/action-escrow-evidence.js.map +1 -0
  46. package/dist/action-escrow-package.d.ts +10 -0
  47. package/dist/action-escrow-package.d.ts.map +1 -0
  48. package/dist/action-escrow-package.js +1583 -0
  49. package/dist/action-escrow-package.js.map +1 -0
  50. package/dist/action-escrow-postgres.d.ts +62 -0
  51. package/dist/action-escrow-postgres.d.ts.map +1 -0
  52. package/dist/action-escrow-postgres.js +339 -0
  53. package/dist/action-escrow-postgres.js.map +1 -0
  54. package/dist/action-escrow-state.d.ts +141 -0
  55. package/dist/action-escrow-state.d.ts.map +1 -0
  56. package/dist/action-escrow-state.js +413 -0
  57. package/dist/action-escrow-state.js.map +1 -0
  58. package/dist/action-escrow-verifiers.d.ts +65 -0
  59. package/dist/action-escrow-verifiers.d.ts.map +1 -0
  60. package/dist/action-escrow-verifiers.js +421 -0
  61. package/dist/action-escrow-verifiers.js.map +1 -0
  62. package/dist/action-escrow.d.ts +112 -0
  63. package/dist/action-escrow.d.ts.map +1 -0
  64. package/dist/action-escrow.js +2661 -0
  65. package/dist/action-escrow.js.map +1 -0
  66. package/dist/action-packs.d.ts +54 -0
  67. package/dist/action-packs.d.ts.map +1 -0
  68. package/dist/action-packs.js +143 -0
  69. package/dist/action-packs.js.map +1 -0
  70. package/dist/adapters/_kit.d.ts +50 -0
  71. package/dist/adapters/_kit.d.ts.map +1 -0
  72. package/dist/adapters/_kit.js +98 -0
  73. package/dist/adapters/_kit.js.map +1 -0
  74. package/dist/adapters/aws.d.ts +158 -0
  75. package/dist/adapters/aws.d.ts.map +1 -0
  76. package/dist/adapters/aws.js +136 -0
  77. package/dist/adapters/aws.js.map +1 -0
  78. package/dist/adapters/cloudflare.d.ts +116 -0
  79. package/dist/adapters/cloudflare.d.ts.map +1 -0
  80. package/dist/adapters/cloudflare.js +75 -0
  81. package/dist/adapters/cloudflare.js.map +1 -0
  82. package/dist/adapters/gcp.d.ts +139 -0
  83. package/dist/adapters/gcp.d.ts.map +1 -0
  84. package/dist/adapters/gcp.js +69 -0
  85. package/dist/adapters/gcp.js.map +1 -0
  86. package/dist/adapters/github.d.ts +123 -0
  87. package/dist/adapters/github.d.ts.map +1 -0
  88. package/dist/adapters/github.js +105 -0
  89. package/dist/adapters/github.js.map +1 -0
  90. package/dist/adapters/jira.d.ts +109 -0
  91. package/dist/adapters/jira.d.ts.map +1 -0
  92. package/dist/adapters/jira.js +54 -0
  93. package/dist/adapters/jira.js.map +1 -0
  94. package/dist/adapters/k8s.d.ts +139 -0
  95. package/dist/adapters/k8s.d.ts.map +1 -0
  96. package/dist/adapters/k8s.js +69 -0
  97. package/dist/adapters/k8s.js.map +1 -0
  98. package/dist/adapters/linear.d.ts +109 -0
  99. package/dist/adapters/linear.d.ts.map +1 -0
  100. package/dist/adapters/linear.js +54 -0
  101. package/dist/adapters/linear.js.map +1 -0
  102. package/dist/adapters/salesforce.d.ts +109 -0
  103. package/dist/adapters/salesforce.d.ts.map +1 -0
  104. package/dist/adapters/salesforce.js +54 -0
  105. package/dist/adapters/salesforce.js.map +1 -0
  106. package/dist/adapters/stripe.d.ts +116 -0
  107. package/dist/adapters/stripe.d.ts.map +1 -0
  108. package/dist/adapters/stripe.js +77 -0
  109. package/dist/adapters/stripe.js.map +1 -0
  110. package/dist/adapters/supabase.d.ts +127 -0
  111. package/dist/adapters/supabase.d.ts.map +1 -0
  112. package/dist/adapters/supabase.js +112 -0
  113. package/dist/adapters/supabase.js.map +1 -0
  114. package/dist/adapters/terraform.d.ts +109 -0
  115. package/dist/adapters/terraform.d.ts.map +1 -0
  116. package/dist/adapters/terraform.js +58 -0
  117. package/dist/adapters/terraform.js.map +1 -0
  118. package/dist/adapters/vercel.d.ts +114 -0
  119. package/dist/adapters/vercel.d.ts.map +1 -0
  120. package/dist/adapters/vercel.js +81 -0
  121. package/dist/adapters/vercel.js.map +1 -0
  122. package/dist/aec-execution.d.ts +107 -0
  123. package/dist/aec-execution.d.ts.map +1 -0
  124. package/dist/aec-execution.js +334 -0
  125. package/dist/aec-execution.js.map +1 -0
  126. package/dist/breakglass.d.ts +205 -0
  127. package/dist/breakglass.d.ts.map +1 -0
  128. package/dist/breakglass.js +627 -0
  129. package/dist/breakglass.js.map +1 -0
  130. package/dist/capability-receipt.d.ts +601 -0
  131. package/dist/capability-receipt.d.ts.map +1 -0
  132. package/dist/capability-receipt.js +1177 -0
  133. package/dist/capability-receipt.js.map +1 -0
  134. package/dist/cf1-conformance.d.ts +83 -0
  135. package/dist/cf1-conformance.d.ts.map +1 -0
  136. package/dist/cf1-conformance.js +94 -0
  137. package/dist/cf1-conformance.js.map +1 -0
  138. package/dist/challenge-store.d.ts +20 -0
  139. package/dist/challenge-store.d.ts.map +1 -0
  140. package/dist/challenge-store.js +62 -0
  141. package/dist/challenge-store.js.map +1 -0
  142. package/dist/control-plane.d.ts +136 -0
  143. package/dist/control-plane.d.ts.map +1 -0
  144. package/dist/control-plane.js +349 -0
  145. package/dist/control-plane.js.map +1 -0
  146. package/dist/coverage.d.ts +156 -0
  147. package/dist/coverage.d.ts.map +1 -0
  148. package/dist/coverage.js +768 -0
  149. package/dist/coverage.js.map +1 -0
  150. package/dist/deployment-attestation.d.ts +93 -0
  151. package/dist/deployment-attestation.d.ts.map +1 -0
  152. package/dist/deployment-attestation.js +262 -0
  153. package/dist/deployment-attestation.js.map +1 -0
  154. package/dist/eg1-conformance.d.ts +286 -0
  155. package/dist/eg1-conformance.d.ts.map +1 -0
  156. package/dist/eg1-conformance.js +379 -0
  157. package/dist/eg1-conformance.js.map +1 -0
  158. package/dist/enterprise.d.ts +88 -0
  159. package/dist/enterprise.d.ts.map +1 -0
  160. package/dist/enterprise.js +194 -0
  161. package/dist/enterprise.js.map +1 -0
  162. package/dist/evidence-postgres.d.ts +123 -0
  163. package/dist/evidence-postgres.d.ts.map +1 -0
  164. package/dist/evidence-postgres.js +343 -0
  165. package/dist/evidence-postgres.js.map +1 -0
  166. package/dist/evidence.d.ts +113 -0
  167. package/dist/evidence.d.ts.map +1 -0
  168. package/dist/evidence.js +369 -0
  169. package/dist/evidence.js.map +1 -0
  170. package/dist/execution-binding.d.ts +49 -0
  171. package/dist/execution-binding.d.ts.map +1 -0
  172. package/dist/execution-binding.js +243 -0
  173. package/dist/execution-binding.js.map +1 -0
  174. package/dist/formal-runtime-map.d.ts +42 -0
  175. package/dist/formal-runtime-map.d.ts.map +1 -0
  176. package/dist/formal-runtime-map.js +23 -0
  177. package/dist/formal-runtime-map.js.map +1 -0
  178. package/dist/index.d.ts +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 +31 -2
  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 -102
  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":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * EMILIA Gate — issuer key registry (production key custody for the VERIFIER).
3
+ *
4
+ * A flat `trustedKeys: string[]` cannot express the two things a production
5
+ * deployment needs:
6
+ * 1. ROTATION — an issuer key is valid only for a window; a new key overlaps
7
+ * the old one, then the old one retires, without rejecting receipts that
8
+ * were legitimately issued while it was current.
9
+ * 2. REVOCATION — a COMPROMISED issuer key must be rejected immediately, for
10
+ * every receipt, regardless of the issuance time the (now-untrusted) key
11
+ * claims. Fail closed: once revoked, the key signs nothing the gate accepts.
12
+ *
13
+ * The registry resolves, for a given receipt issuance time, the set of public
14
+ * keys the gate should verify against — excluding revoked keys entirely and
15
+ * windowed keys whose [not_before, not_after] does not contain that time. The
16
+ * gate passes that resolved set to the receipt verifier, so an excluded key's
17
+ * signature simply does not verify and the action is refused.
18
+ *
19
+ * A key with no window and no revocation behaves exactly like a flat trustedKeys
20
+ * entry (back-compatible).
21
+ */
22
+ type RawKeyEntry = {
23
+ kid?: string;
24
+ key: string;
25
+ not_before?: string;
26
+ not_after?: string;
27
+ revoked_at?: string;
28
+ };
29
+ /**
30
+ * @param {Array<object>} entries each: {
31
+ * kid?: string, key: string (base64url SPKI-DER public key),
32
+ * not_before?: string, not_after?: string, revoked_at?: string (strict RFC3339)
33
+ * }
34
+ */
35
+ export declare function createKeyRegistry(entries?: RawKeyEntry[]): {
36
+ /** The base64url public keys to verify a receipt issued at strict RFC3339 `at`. */
37
+ keysValidAt(at: any): string[];
38
+ /** Mark a kid revoked as of `at` (default: now-as-supplied). Fail-closed thereafter. */
39
+ revoke(kid: string, at?: string): number;
40
+ /** Add/rotate in a new key. */
41
+ add(entry: any): /*elided*/ any;
42
+ /** Operational snapshot (no private material; keys are public). */
43
+ status(at: any): {
44
+ kid: string;
45
+ revoked: boolean;
46
+ active: boolean;
47
+ not_before: number | null;
48
+ not_after: number | null;
49
+ revoked_at: number | null;
50
+ }[];
51
+ readonly size: number;
52
+ };
53
+ /** Coerce a flat trustedKeys[] OR a registry into a registry (back-compat). */
54
+ export declare function asKeyRegistry(trustedKeysOrRegistry: any): any;
55
+ declare const _default: {
56
+ createKeyRegistry: typeof createKeyRegistry;
57
+ asKeyRegistry: typeof asKeyRegistry;
58
+ };
59
+ export default _default;
60
+ //# sourceMappingURL=key-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-registry.d.ts","sourceRoot":"","sources":["../src/key-registry.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,KAAK,WAAW,GAAG;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAgCF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,WAAW,EAAO;IA6BzD,mFAAmF;;IAKnF,wFAAwF;gBAC5E,MAAM,OAAO,MAAM;IAe/B,+BAA+B;;IAE/B,mEAAmE;;;;;;;;;;EAiBtE;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,qBAAqB,KAAA,OAMlD;;;;;AAED,wBAAoD"}
@@ -0,0 +1,144 @@
1
+ // @ts-nocheck
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * EMILIA Gate — issuer key registry (production key custody for the VERIFIER).
5
+ *
6
+ * A flat `trustedKeys: string[]` cannot express the two things a production
7
+ * deployment needs:
8
+ * 1. ROTATION — an issuer key is valid only for a window; a new key overlaps
9
+ * the old one, then the old one retires, without rejecting receipts that
10
+ * were legitimately issued while it was current.
11
+ * 2. REVOCATION — a COMPROMISED issuer key must be rejected immediately, for
12
+ * every receipt, regardless of the issuance time the (now-untrusted) key
13
+ * claims. Fail closed: once revoked, the key signs nothing the gate accepts.
14
+ *
15
+ * The registry resolves, for a given receipt issuance time, the set of public
16
+ * keys the gate should verify against — excluding revoked keys entirely and
17
+ * windowed keys whose [not_before, not_after] does not contain that time. The
18
+ * gate passes that resolved set to the receipt verifier, so an excluded key's
19
+ * signature simply does not verify and the action is refused.
20
+ *
21
+ * A key with no window and no revocation behaves exactly like a flat trustedKeys
22
+ * entry (back-compatible).
23
+ */
24
+ const RFC3339_INSTANT = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.\d{1,9})?(?:Z|([+-])(\d{2}):(\d{2}))$/;
25
+ function strictInstantMs(value) {
26
+ if (typeof value !== 'string')
27
+ return NaN;
28
+ const match = value.match(RFC3339_INSTANT);
29
+ if (!match)
30
+ return NaN;
31
+ const [, y, mo, d, h, mi, s, , oh, om] = match;
32
+ const calendar = new Date(0);
33
+ calendar.setUTCFullYear(Number(y), Number(mo) - 1, Number(d));
34
+ calendar.setUTCHours(Number(h), Number(mi), Number(s), 0);
35
+ if (calendar.toISOString().slice(0, 19) !== `${y}-${mo}-${d}T${h}:${mi}:${s}`)
36
+ return NaN;
37
+ if (oh !== undefined && (Number(oh) > 23 || Number(om) > 59))
38
+ return NaN;
39
+ const ms = Date.parse(value);
40
+ return Number.isFinite(ms) ? ms : NaN;
41
+ }
42
+ function optionalInstant(entry, field) {
43
+ if (!Object.hasOwn(entry, field))
44
+ return null;
45
+ const ms = strictInstantMs(entry[field]);
46
+ if (!Number.isFinite(ms)) {
47
+ throw new Error(`key registry: ${field} must be a valid RFC3339 instant when supplied`);
48
+ }
49
+ return ms;
50
+ }
51
+ /**
52
+ * @param {Array<object>} entries each: {
53
+ * kid?: string, key: string (base64url SPKI-DER public key),
54
+ * not_before?: string, not_after?: string, revoked_at?: string (strict RFC3339)
55
+ * }
56
+ */
57
+ export function createKeyRegistry(entries = []) {
58
+ const list = [];
59
+ function normalize(e) {
60
+ if (!e || !e.key || typeof e.key !== 'string')
61
+ throw new Error('key registry entry requires a base64url SPKI key');
62
+ const normalized = {
63
+ kid: e.kid || e.key.slice(0, 16),
64
+ key: e.key,
65
+ not_before: optionalInstant(e, 'not_before'),
66
+ not_after: optionalInstant(e, 'not_after'),
67
+ revoked_at: optionalInstant(e, 'revoked_at'),
68
+ };
69
+ if (normalized.not_before != null && normalized.not_after != null
70
+ && normalized.not_after < normalized.not_before) {
71
+ throw new Error('key registry: not_after must not precede not_before');
72
+ }
73
+ return normalized;
74
+ }
75
+ for (const e of entries)
76
+ list.push(normalize(e));
77
+ /** Is this entry usable to verify a receipt issued at `atMs`? */
78
+ function entryActiveAt(entry, atMs) {
79
+ if (entry.revoked_at != null)
80
+ return false; // HARD revocation: never trust a revoked key
81
+ if (!Number.isFinite(atMs))
82
+ return false;
83
+ if (entry.not_before != null && atMs < entry.not_before)
84
+ return false;
85
+ if (entry.not_after != null && atMs > entry.not_after)
86
+ return false;
87
+ return true;
88
+ }
89
+ return {
90
+ /** The base64url public keys to verify a receipt issued at strict RFC3339 `at`. */
91
+ keysValidAt(at) {
92
+ const atMs = strictInstantMs(at);
93
+ return list.filter((e) => entryActiveAt(e, atMs)).map((e) => e.key);
94
+ },
95
+ /** Mark a kid revoked as of `at` (default: now-as-supplied). Fail-closed thereafter. */
96
+ revoke(kid, at) {
97
+ let revokedAt = 0;
98
+ if (arguments.length > 1) {
99
+ revokedAt = strictInstantMs(at);
100
+ if (!Number.isFinite(revokedAt)) {
101
+ throw new Error('key registry: revoked_at must be a valid RFC3339 instant when supplied');
102
+ }
103
+ }
104
+ let n = 0;
105
+ for (const e of list) {
106
+ if (e.kid === kid && e.revoked_at == null) {
107
+ e.revoked_at = revokedAt;
108
+ n += 1;
109
+ }
110
+ }
111
+ if (n === 0)
112
+ throw new Error(`key registry: no active key with kid "${kid}" to revoke`);
113
+ return n;
114
+ },
115
+ /** Add/rotate in a new key. */
116
+ add(entry) { list.push(normalize(entry)); return this; },
117
+ /** Operational snapshot (no private material; keys are public). */
118
+ status(at) {
119
+ const supplied = arguments.length > 0;
120
+ const atMs = supplied ? strictInstantMs(at) : NaN;
121
+ return list.map((e) => ({
122
+ kid: e.kid,
123
+ revoked: e.revoked_at != null,
124
+ active: supplied
125
+ ? entryActiveAt(e, atMs)
126
+ : e.revoked_at == null && e.not_before == null && e.not_after == null,
127
+ not_before: e.not_before,
128
+ not_after: e.not_after,
129
+ revoked_at: e.revoked_at,
130
+ }));
131
+ },
132
+ get size() { return list.length; },
133
+ };
134
+ }
135
+ /** Coerce a flat trustedKeys[] OR a registry into a registry (back-compat). */
136
+ export function asKeyRegistry(trustedKeysOrRegistry) {
137
+ if (trustedKeysOrRegistry && typeof trustedKeysOrRegistry.keysValidAt === 'function') {
138
+ return trustedKeysOrRegistry;
139
+ }
140
+ const keys = Array.isArray(trustedKeysOrRegistry) ? trustedKeysOrRegistry : [];
141
+ return createKeyRegistry(keys.map((key) => ({ key })));
142
+ }
143
+ export default { createKeyRegistry, asKeyRegistry };
144
+ //# sourceMappingURL=key-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-registry.js","sourceRoot":"","sources":["../src/key-registry.ts"],"names":[],"mappings":"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"}
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,53 @@
1
+ /**
2
+ * EMILIA Gate — MCP drop-in. The lowest-friction place to put the firewall:
3
+ * agents already live at the MCP tool-call boundary, and a single wrapper turns
4
+ * a dangerous MCP tool into a receipt-required one.
5
+ *
6
+ * import { createTrustedActionFirewall } from '@emilia-protocol/gate';
7
+ * import { gateMcpTool } from '@emilia-protocol/gate/mcp';
8
+ * const gate = createTrustedActionFirewall({ trustedKeys: [ISSUER], store: sharedConsumptionStore });
9
+ *
10
+ * server.tool('release_payment',
11
+ * gateMcpTool(gate, { tool: 'release_payment' }, async (args) => actuallyPay(args)));
12
+ *
13
+ * A guarded call with no valid, sufficiently-assured, non-replayed receipt
14
+ * returns a structured MCP error (isError) carrying the Receipt-Required
15
+ * challenge, so the agent knows to go get a human/quorum to authorize THIS exact
16
+ * action. On success the tool runs and an execution proof + reliance packet are
17
+ * attached under `_emilia`.
18
+ *
19
+ * Receipt resolution order (override with opts.receipt): args._emilia_receipt,
20
+ * args.emilia_receipt, then a base64 string in args._emilia_receipt_b64.
21
+ */
22
+ type Obj = Record<string, any>;
23
+ type GateMcpToolOptions = {
24
+ tool?: string;
25
+ protocol?: string;
26
+ action?: string;
27
+ observedAction?: Obj | ((args: Obj, extra: any) => any);
28
+ receipt?: Obj | ((args: Obj) => any);
29
+ };
30
+ /**
31
+ * Wrap a single MCP tool handler so it runs only behind a passing gate check.
32
+ * @param {object} gate an EMILIA Gate (createGate/createTrustedActionFirewall)
33
+ * @param {object} o
34
+ * @param {string} [o.tool] the MCP tool name (matched against the manifest)
35
+ * @param {string} [o.protocol='mcp']
36
+ * @param {string} [o.action] explicit action_type (else resolved by the manifest from {protocol,tool})
37
+ * @param {object|function} [o.observedAction] the system-of-record facts to bind (default: the tool args)
38
+ * @param {object|function} [o.receipt] override receipt resolution
39
+ * @param {function} handler the real tool implementation (args, extra) => result
40
+ * @returns {function} a gated MCP tool handler
41
+ */
42
+ export declare function gateMcpTool(gate: any, o: GateMcpToolOptions | undefined, handler: any): (args: {} | undefined, extra: any) => Promise<any>;
43
+ /**
44
+ * Convenience: wrap a map of { toolName: handler } in one call. Tools not named
45
+ * in the manifest still pass through the gate (which lets non-guarded tools run).
46
+ */
47
+ export declare function gateMcpTools(gate: any, handlers?: {}, opts?: {}): {};
48
+ declare const _default: {
49
+ gateMcpTool: typeof gateMcpTool;
50
+ gateMcpTools: typeof gateMcpTools;
51
+ };
52
+ export default _default;
53
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/B,KAAK,kBAAkB,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;CACtC,CAAC;AAeF;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,IAAI,KAAA,EAAE,CAAC,EAAE,kBAAkB,YAAK,EAAE,OAAO,KAAA,IAqBnC,oBAAS,EAAE,UAAK,kBAwBjD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAK,EAAE,IAAI,KAAK,MAM1D;;;;;AAED,wBAA6C"}
package/dist/mcp.js ADDED
@@ -0,0 +1,112 @@
1
+ // @ts-nocheck
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * EMILIA Gate — MCP drop-in. The lowest-friction place to put the firewall:
5
+ * agents already live at the MCP tool-call boundary, and a single wrapper turns
6
+ * a dangerous MCP tool into a receipt-required one.
7
+ *
8
+ * import { createTrustedActionFirewall } from '@emilia-protocol/gate';
9
+ * import { gateMcpTool } from '@emilia-protocol/gate/mcp';
10
+ * const gate = createTrustedActionFirewall({ trustedKeys: [ISSUER], store: sharedConsumptionStore });
11
+ *
12
+ * server.tool('release_payment',
13
+ * gateMcpTool(gate, { tool: 'release_payment' }, async (args) => actuallyPay(args)));
14
+ *
15
+ * A guarded call with no valid, sufficiently-assured, non-replayed receipt
16
+ * returns a structured MCP error (isError) carrying the Receipt-Required
17
+ * challenge, so the agent knows to go get a human/quorum to authorize THIS exact
18
+ * action. On success the tool runs and an execution proof + reliance packet are
19
+ * attached under `_emilia`.
20
+ *
21
+ * Receipt resolution order (override with opts.receipt): args._emilia_receipt,
22
+ * args.emilia_receipt, then a base64 string in args._emilia_receipt_b64.
23
+ */
24
+ import { parseReceiptCarrier } from '@emilia-protocol/require-receipt';
25
+ function resolveReceipt(args, opts) {
26
+ if (typeof opts.receipt === 'function')
27
+ return opts.receipt(args);
28
+ if (opts.receipt)
29
+ return opts.receipt;
30
+ if (args && typeof args === 'object') {
31
+ if (args._emilia_receipt)
32
+ return args._emilia_receipt;
33
+ if (args.emilia_receipt)
34
+ return args.emilia_receipt;
35
+ if (typeof args._emilia_receipt_b64 === 'string') {
36
+ return parseReceiptCarrier(args._emilia_receipt_b64);
37
+ }
38
+ }
39
+ return null;
40
+ }
41
+ /**
42
+ * Wrap a single MCP tool handler so it runs only behind a passing gate check.
43
+ * @param {object} gate an EMILIA Gate (createGate/createTrustedActionFirewall)
44
+ * @param {object} o
45
+ * @param {string} [o.tool] the MCP tool name (matched against the manifest)
46
+ * @param {string} [o.protocol='mcp']
47
+ * @param {string} [o.action] explicit action_type (else resolved by the manifest from {protocol,tool})
48
+ * @param {object|function} [o.observedAction] the system-of-record facts to bind (default: the tool args)
49
+ * @param {object|function} [o.receipt] override receipt resolution
50
+ * @param {function} handler the real tool implementation (args, extra) => result
51
+ * @returns {function} a gated MCP tool handler
52
+ */
53
+ export function gateMcpTool(gate, o = {}, handler) {
54
+ if (!gate || typeof gate.run !== 'function')
55
+ throw new Error('gateMcpTool requires an EMILIA Gate (with .run)');
56
+ if (typeof handler !== 'function')
57
+ throw new Error('gateMcpTool requires a tool handler function');
58
+ const { tool, protocol = 'mcp', action } = o;
59
+ if (!tool)
60
+ throw new Error('gateMcpTool requires { tool }');
61
+ const refused = (reason, body = null) => ({
62
+ isError: true,
63
+ content: [{
64
+ type: 'text',
65
+ text: `EMILIA Gate refused "${tool}": ${reason}. `
66
+ + 'This is a high-risk action; present a valid, sufficiently-assured, unused human/quorum receipt.',
67
+ }],
68
+ _emilia: {
69
+ gate: 'refused',
70
+ status: 428,
71
+ reason,
72
+ challenge: body,
73
+ },
74
+ });
75
+ return async function gatedTool(args = {}, extra) {
76
+ const selector = { protocol, tool, ...(action ? { action_type: action } : {}) };
77
+ let receipt;
78
+ let observedAction;
79
+ try {
80
+ receipt = resolveReceipt(args, o);
81
+ observedAction = typeof o.observedAction === 'function'
82
+ ? o.observedAction(args, extra)
83
+ : (o.observedAction ?? args);
84
+ }
85
+ catch {
86
+ return refused('receipt_boundary_failed');
87
+ }
88
+ const out = await gate.run({ selector, receipt, observedAction }, () => handler(args, extra));
89
+ if (!out.ok) {
90
+ return refused(out.authorization.reason, out.body);
91
+ }
92
+ const result = out.result;
93
+ // Attach the proof without clobbering a structured tool result.
94
+ if (result && typeof result === 'object' && !Array.isArray(result)) {
95
+ return { ...result, _emilia: { gate: 'allowed', execution: out.execution, reliance: out.packet } };
96
+ }
97
+ return { result, _emilia: { gate: 'allowed', execution: out.execution, reliance: out.packet } };
98
+ };
99
+ }
100
+ /**
101
+ * Convenience: wrap a map of { toolName: handler } in one call. Tools not named
102
+ * in the manifest still pass through the gate (which lets non-guarded tools run).
103
+ */
104
+ export function gateMcpTools(gate, handlers = {}, opts = {}) {
105
+ const wrapped = {};
106
+ for (const [tool, handler] of Object.entries(handlers)) {
107
+ wrapped[tool] = gateMcpTool(gate, { ...opts, tool }, handler);
108
+ }
109
+ return wrapped;
110
+ }
111
+ export default { gateMcpTool, gateMcpTools };
112
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ export declare const USAGE_VERSION = "EP-GATE-USAGE-v1";
2
+ /**
3
+ * Meter a billing period over evidence entries.
4
+ *
5
+ * Billable = `kind: 'decision'` entries on GUARDED actions (`not_guarded`
6
+ * pass-throughs are free; execution records are provenance, not enforcement).
7
+ * Window is [periodStart, periodEnd): inclusive start, exclusive end.
8
+ *
9
+ * @param {Array<object>} entries evidence.all()
10
+ * @param {object} [o]
11
+ * @param {string|number} [o.periodStart] ISO or ms — required
12
+ * @param {string|number} [o.periodEnd] ISO or ms — required, >= periodStart
13
+ * @param {number} [o.retentionYearsDefault=6] applied when an entry states no retention
14
+ * @returns {{'@version':string, protected_actions:number, allows:number, denies:number,
15
+ * replays_blocked:number, by_action_type:object, by_tier:object,
16
+ * receipt_years:number, retention_years_default:number, period:object, integrity_warnings:object[]}}
17
+ */
18
+ export declare function meterUsage(entries?: any[], { periodStart, periodEnd, retentionYearsDefault, }?: {
19
+ periodStart?: string | number;
20
+ periodEnd?: string | number;
21
+ retentionYearsDefault?: number;
22
+ }): {
23
+ '@version': string;
24
+ period: {
25
+ start: string;
26
+ end: string;
27
+ bounds: string;
28
+ };
29
+ protected_actions: number;
30
+ allows: number;
31
+ denies: number;
32
+ replays_blocked: number;
33
+ by_action_type: {};
34
+ by_tier: {};
35
+ receipt_years: number;
36
+ retention_years_default: number;
37
+ integrity_warnings: {
38
+ index: number;
39
+ reason: string;
40
+ }[];
41
+ };
42
+ /**
43
+ * Build the signed-ready usage statement handed to billing reconciliation.
44
+ * UNSIGNED — the deployer signs it; `content_hash` (sha256 over the canonical
45
+ * JSON of everything else) binds that signature to exactly these numbers.
46
+ * Deterministic: same usage + org → byte-identical statement, regardless of
47
+ * the entry order the usage was metered from.
48
+ * @param {object} usage a USAGE_VERSION object from meterUsage
49
+ * @param {{ org?: string }} [o]
50
+ */
51
+ export declare function buildUsageStatement(usage: any, { org }?: {
52
+ org?: string;
53
+ }): {
54
+ content_hash: string;
55
+ '@version': string;
56
+ kind: string;
57
+ org: string;
58
+ period: {
59
+ start: any;
60
+ end: any;
61
+ bounds: string;
62
+ };
63
+ protected_actions: any;
64
+ allows: any;
65
+ denies: any;
66
+ replays_blocked: any;
67
+ by_action_type: {};
68
+ by_tier: {};
69
+ receipt_years: any;
70
+ retention_years_default: any;
71
+ integrity_warning_count: any;
72
+ complete: boolean;
73
+ };
74
+ declare const _default: {
75
+ meterUsage: typeof meterUsage;
76
+ buildUsageStatement: typeof buildUsageStatement;
77
+ USAGE_VERSION: string;
78
+ };
79
+ export default _default;
80
+ //# sourceMappingURL=metering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metering.d.ts","sourceRoot":"","sources":["../src/metering.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAyDhD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,GAAG,EAAO,EAAE,EAC9C,WAAW,EACX,SAAS,EACT,qBAA+C,GAChD,GAAE;IACD,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAC3B;;;;;;;;;;;;;;;;eAaqB,MAAM;gBAAU,MAAM;;EAgEhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,KAAA,EAAE,EAAE,GAAG,EAAE,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO;;;;;;;;;;;;;;;;;;;;EAyCxE;;;;;;AAED,wBAAkE"}