@mannyc1/ts-release 0.0.7 → 0.3.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 (695) hide show
  1. package/ARCHITECTURE.md +184 -92
  2. package/CHANGELOG.md +197 -0
  3. package/LICENSE +21 -0
  4. package/README.md +404 -327
  5. package/SPEC.md +257 -310
  6. package/apps/release-ts/README.md +39 -0
  7. package/apps/release-ts/src/cli/command.ts +164 -0
  8. package/apps/release-ts/src/cli/commands.ts +351 -0
  9. package/apps/release-ts/src/cli/main.ts +43 -0
  10. package/apps/release-ts/src/cli/node-main.ts +49 -0
  11. package/apps/ts-release-agents/LICENSE +21 -0
  12. package/apps/ts-release-agents/README.md +21 -0
  13. package/apps/ts-release-agents/evals/cases.json +11 -0
  14. package/apps/ts-release-agents/manifests/claude.json +5 -0
  15. package/apps/ts-release-agents/manifests/codex.json +5 -0
  16. package/apps/ts-release-agents/package.json +11 -0
  17. package/apps/ts-release-agents/skills/release/SKILL.md +48 -0
  18. package/apps/ts-release-agents/skills/release/references/configuration.md +18 -0
  19. package/apps/ts-release-agents/skills/release/references/recovery.md +10 -0
  20. package/apps/ts-release-agents/skills/release/references/staged-workflow.md +12 -0
  21. package/apps/ts-release-agents/skills/release/references/target-selection.md +13 -0
  22. package/apps/ts-release-agents/skills/release/references/verification.md +14 -0
  23. package/apps/ts-release-agents/src/build.ts +105 -0
  24. package/apps/ts-release-agents/src/check.ts +122 -0
  25. package/apps/ts-release-agents/src/install.ts +121 -0
  26. package/apps/ts-release-agents/test/contract.test.ts +56 -0
  27. package/apps/ts-release-agents/tsconfig.json +5 -0
  28. package/dist/api/api.d.ts +15 -0
  29. package/dist/api/api.d.ts.map +1 -0
  30. package/dist/api/api.js +244 -0
  31. package/dist/api/api.js.map +1 -0
  32. package/dist/api/errors.d.ts +39 -0
  33. package/dist/api/errors.d.ts.map +1 -0
  34. package/dist/api/errors.js +32 -0
  35. package/dist/api/errors.js.map +1 -0
  36. package/dist/api/input.d.ts +10 -0
  37. package/dist/api/input.d.ts.map +1 -0
  38. package/dist/api/input.js +73 -0
  39. package/dist/api/input.js.map +1 -0
  40. package/dist/api/runtime.d.ts +18 -0
  41. package/dist/api/runtime.d.ts.map +1 -0
  42. package/dist/api/runtime.js +7 -0
  43. package/dist/api/runtime.js.map +1 -0
  44. package/dist/api/types.d.ts +76 -0
  45. package/dist/api/types.d.ts.map +1 -0
  46. package/dist/api/types.js +17 -0
  47. package/dist/api/types.js.map +1 -0
  48. package/dist/bin/ts-release.js +39346 -0
  49. package/dist/capabilities/bun-targets.d.ts +3 -0
  50. package/dist/capabilities/bun-targets.d.ts.map +1 -0
  51. package/dist/capabilities/bun-targets.js +3 -0
  52. package/dist/capabilities/bun-targets.js.map +1 -0
  53. package/dist/capabilities/field-ownership.d.ts +17 -0
  54. package/dist/capabilities/field-ownership.d.ts.map +1 -0
  55. package/dist/capabilities/field-ownership.js +40 -0
  56. package/dist/capabilities/field-ownership.js.map +1 -0
  57. package/dist/capabilities/module.d.ts +91 -0
  58. package/dist/capabilities/module.d.ts.map +1 -0
  59. package/dist/capabilities/module.js +2 -0
  60. package/dist/capabilities/module.js.map +1 -0
  61. package/dist/capabilities/registry.d.ts +829 -0
  62. package/dist/capabilities/registry.d.ts.map +1 -0
  63. package/dist/capabilities/registry.js +291 -0
  64. package/dist/capabilities/registry.js.map +1 -0
  65. package/dist/config/config.d.ts +6 -0
  66. package/dist/config/config.d.ts.map +1 -0
  67. package/dist/config/config.js +42 -0
  68. package/dist/config/config.js.map +1 -0
  69. package/dist/correction/coordinator.d.ts +248 -0
  70. package/dist/correction/coordinator.d.ts.map +1 -0
  71. package/dist/correction/coordinator.js +274 -0
  72. package/dist/correction/coordinator.js.map +1 -0
  73. package/dist/correction/index.d.ts +3 -0
  74. package/dist/correction/index.d.ts.map +1 -0
  75. package/dist/correction/index.js +3 -0
  76. package/dist/correction/index.js.map +1 -0
  77. package/dist/correction/intent.d.ts +111 -0
  78. package/dist/correction/intent.d.ts.map +1 -0
  79. package/dist/correction/intent.js +146 -0
  80. package/dist/correction/intent.js.map +1 -0
  81. package/dist/drivers/archive.d.ts +9 -0
  82. package/dist/drivers/archive.d.ts.map +1 -0
  83. package/dist/drivers/archive.js +105 -0
  84. package/dist/drivers/archive.js.map +1 -0
  85. package/dist/drivers/contain.d.ts +6 -0
  86. package/dist/drivers/contain.d.ts.map +1 -0
  87. package/dist/drivers/contain.js +17 -0
  88. package/dist/drivers/contain.js.map +1 -0
  89. package/dist/drivers/environment.d.ts +4 -0
  90. package/dist/drivers/environment.d.ts.map +1 -0
  91. package/dist/drivers/environment.js +18 -0
  92. package/dist/drivers/environment.js.map +1 -0
  93. package/dist/drivers/errors.d.ts +9 -0
  94. package/dist/drivers/errors.d.ts.map +1 -0
  95. package/dist/drivers/errors.js +6 -0
  96. package/dist/drivers/errors.js.map +1 -0
  97. package/dist/drivers/glob.d.ts +2 -0
  98. package/dist/drivers/glob.d.ts.map +1 -0
  99. package/dist/drivers/glob.js +162 -0
  100. package/dist/drivers/glob.js.map +1 -0
  101. package/dist/drivers/process.d.ts +48 -0
  102. package/dist/drivers/process.d.ts.map +1 -0
  103. package/dist/drivers/process.js +257 -0
  104. package/dist/drivers/process.js.map +1 -0
  105. package/dist/drivers/python-wheel.d.ts +21 -0
  106. package/dist/drivers/python-wheel.d.ts.map +1 -0
  107. package/dist/drivers/python-wheel.js +109 -0
  108. package/dist/drivers/python-wheel.js.map +1 -0
  109. package/dist/drivers/redact.d.ts +4 -0
  110. package/dist/drivers/redact.d.ts.map +1 -0
  111. package/dist/drivers/redact.js +24 -0
  112. package/dist/drivers/redact.js.map +1 -0
  113. package/dist/drivers/seccomp-helper-source.d.ts +7 -0
  114. package/dist/drivers/seccomp-helper-source.d.ts.map +1 -0
  115. package/dist/drivers/seccomp-helper-source.js +121 -0
  116. package/dist/drivers/seccomp-helper-source.js.map +1 -0
  117. package/dist/drivers/utils.d.ts +4 -0
  118. package/dist/drivers/utils.d.ts.map +1 -0
  119. package/dist/drivers/utils.js +5 -0
  120. package/dist/drivers/utils.js.map +1 -0
  121. package/dist/drivers/workspace.d.ts +9 -0
  122. package/dist/drivers/workspace.d.ts.map +1 -0
  123. package/dist/drivers/workspace.js +53 -0
  124. package/dist/drivers/workspace.js.map +1 -0
  125. package/dist/extensions/provider-adapter.d.ts +48 -0
  126. package/dist/extensions/provider-adapter.d.ts.map +1 -0
  127. package/dist/extensions/provider-adapter.js +64 -0
  128. package/dist/extensions/provider-adapter.js.map +1 -0
  129. package/dist/host.d.ts +33 -0
  130. package/dist/host.d.ts.map +1 -0
  131. package/dist/host.js +20 -0
  132. package/dist/host.js.map +1 -0
  133. package/dist/index.d.ts +19 -1
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.js +12 -1
  136. package/dist/index.js.map +1 -1
  137. package/dist/model/artifact-collection.d.ts +84 -0
  138. package/dist/model/artifact-collection.d.ts.map +1 -0
  139. package/dist/model/artifact-collection.js +185 -0
  140. package/dist/model/artifact-collection.js.map +1 -0
  141. package/dist/model/authority.d.ts +89 -0
  142. package/dist/model/authority.d.ts.map +1 -0
  143. package/dist/model/authority.js +80 -0
  144. package/dist/model/authority.js.map +1 -0
  145. package/dist/model/bun-targets.d.ts +34 -0
  146. package/dist/model/bun-targets.d.ts.map +1 -0
  147. package/dist/model/bun-targets.js +17 -0
  148. package/dist/model/bun-targets.js.map +1 -0
  149. package/dist/model/canonical.d.ts +8 -0
  150. package/dist/model/canonical.d.ts.map +1 -0
  151. package/dist/model/canonical.js +205 -0
  152. package/dist/model/canonical.js.map +1 -0
  153. package/dist/model/catalog.d.ts +76 -0
  154. package/dist/model/catalog.d.ts.map +1 -0
  155. package/dist/model/catalog.js +174 -0
  156. package/dist/model/catalog.js.map +1 -0
  157. package/dist/model/digest.d.ts +53 -0
  158. package/dist/model/digest.d.ts.map +1 -0
  159. package/dist/model/digest.js +127 -0
  160. package/dist/model/digest.js.map +1 -0
  161. package/dist/model/errors.d.ts +14 -0
  162. package/dist/model/errors.d.ts.map +1 -0
  163. package/dist/model/errors.js +8 -0
  164. package/dist/model/errors.js.map +1 -0
  165. package/dist/model/primitives.d.ts +19 -0
  166. package/dist/model/primitives.d.ts.map +1 -0
  167. package/dist/model/primitives.js +18 -0
  168. package/dist/model/primitives.js.map +1 -0
  169. package/dist/model/pypi.d.ts +12 -0
  170. package/dist/model/pypi.d.ts.map +1 -0
  171. package/dist/model/pypi.js +20 -0
  172. package/dist/model/pypi.js.map +1 -0
  173. package/dist/model/python-distribution.d.ts +33 -0
  174. package/dist/model/python-distribution.d.ts.map +1 -0
  175. package/dist/model/python-distribution.js +367 -0
  176. package/dist/model/python-distribution.js.map +1 -0
  177. package/dist/model/secret-patterns.d.ts +2 -0
  178. package/dist/model/secret-patterns.d.ts.map +1 -0
  179. package/dist/model/secret-patterns.js +12 -0
  180. package/dist/model/secret-patterns.js.map +1 -0
  181. package/dist/operation-journal/authority.d.ts +3 -0
  182. package/dist/operation-journal/authority.d.ts.map +1 -0
  183. package/dist/operation-journal/authority.js +147 -0
  184. package/dist/operation-journal/authority.js.map +1 -0
  185. package/dist/operation-journal/aws/deadline.d.ts +12 -0
  186. package/dist/operation-journal/aws/deadline.d.ts.map +1 -0
  187. package/dist/operation-journal/aws/deadline.js +38 -0
  188. package/dist/operation-journal/aws/deadline.js.map +1 -0
  189. package/dist/operation-journal/aws/oidc.d.ts +27 -0
  190. package/dist/operation-journal/aws/oidc.d.ts.map +1 -0
  191. package/dist/operation-journal/aws/oidc.js +361 -0
  192. package/dist/operation-journal/aws/oidc.js.map +1 -0
  193. package/dist/operation-journal/aws/policy.d.ts +42 -0
  194. package/dist/operation-journal/aws/policy.d.ts.map +1 -0
  195. package/dist/operation-journal/aws/policy.js +404 -0
  196. package/dist/operation-journal/aws/policy.js.map +1 -0
  197. package/dist/operation-journal/aws/s3-boundary.d.ts +17 -0
  198. package/dist/operation-journal/aws/s3-boundary.d.ts.map +1 -0
  199. package/dist/operation-journal/aws/s3-boundary.js +417 -0
  200. package/dist/operation-journal/aws/s3-boundary.js.map +1 -0
  201. package/dist/operation-journal/aws.d.ts +11 -0
  202. package/dist/operation-journal/aws.d.ts.map +1 -0
  203. package/dist/operation-journal/aws.js +50 -0
  204. package/dist/operation-journal/aws.js.map +1 -0
  205. package/dist/operation-journal/canonical.d.ts +52 -0
  206. package/dist/operation-journal/canonical.d.ts.map +1 -0
  207. package/dist/operation-journal/canonical.js +282 -0
  208. package/dist/operation-journal/canonical.js.map +1 -0
  209. package/dist/operation-journal/model.d.ts +251 -0
  210. package/dist/operation-journal/model.d.ts.map +1 -0
  211. package/dist/operation-journal/model.js +56 -0
  212. package/dist/operation-journal/model.js.map +1 -0
  213. package/dist/operation-journal/reducer.d.ts +28 -0
  214. package/dist/operation-journal/reducer.d.ts.map +1 -0
  215. package/dist/operation-journal/reducer.js +73 -0
  216. package/dist/operation-journal/reducer.js.map +1 -0
  217. package/dist/operation-journal/s3.d.ts +7 -0
  218. package/dist/operation-journal/s3.d.ts.map +1 -0
  219. package/dist/operation-journal/s3.js +667 -0
  220. package/dist/operation-journal/s3.js.map +1 -0
  221. package/dist/operation-journal.d.ts +14 -0
  222. package/dist/operation-journal.d.ts.map +1 -0
  223. package/dist/operation-journal.js +12 -0
  224. package/dist/operation-journal.js.map +1 -0
  225. package/dist/platform/bun.d.ts +7 -0
  226. package/dist/platform/bun.d.ts.map +1 -0
  227. package/dist/platform/bun.js +15 -0
  228. package/dist/platform/bun.js.map +1 -0
  229. package/dist/platform/credentials.d.ts +32 -0
  230. package/dist/platform/credentials.d.ts.map +1 -0
  231. package/dist/platform/credentials.js +834 -0
  232. package/dist/platform/credentials.js.map +1 -0
  233. package/dist/platform/host-support.d.ts +2 -0
  234. package/dist/platform/host-support.d.ts.map +1 -0
  235. package/dist/platform/host-support.js +4 -0
  236. package/dist/platform/host-support.js.map +1 -0
  237. package/dist/platform/node.d.ts +7 -0
  238. package/dist/platform/node.d.ts.map +1 -0
  239. package/dist/platform/node.js +15 -0
  240. package/dist/platform/node.js.map +1 -0
  241. package/dist/platform/release-runtime.d.ts +11 -0
  242. package/dist/platform/release-runtime.d.ts.map +1 -0
  243. package/dist/platform/release-runtime.js +34 -0
  244. package/dist/platform/release-runtime.js.map +1 -0
  245. package/dist/platform/services.d.ts +15 -0
  246. package/dist/platform/services.d.ts.map +1 -0
  247. package/dist/platform/services.js +30 -0
  248. package/dist/platform/services.js.map +1 -0
  249. package/dist/platform/source-observer.d.ts +5 -0
  250. package/dist/platform/source-observer.d.ts.map +1 -0
  251. package/dist/platform/source-observer.js +159 -0
  252. package/dist/platform/source-observer.js.map +1 -0
  253. package/dist/provider-sdk.d.ts +14 -0
  254. package/dist/provider-sdk.d.ts.map +1 -0
  255. package/dist/provider-sdk.js +10 -0
  256. package/dist/provider-sdk.js.map +1 -0
  257. package/dist/publication/adapter.d.ts +212 -0
  258. package/dist/publication/adapter.d.ts.map +1 -0
  259. package/dist/publication/adapter.js +83 -0
  260. package/dist/publication/adapter.js.map +1 -0
  261. package/dist/publication/authority.d.ts +137 -0
  262. package/dist/publication/authority.d.ts.map +1 -0
  263. package/dist/publication/authority.js +233 -0
  264. package/dist/publication/authority.js.map +1 -0
  265. package/dist/publication/catalog-git.d.ts +37 -0
  266. package/dist/publication/catalog-git.d.ts.map +1 -0
  267. package/dist/publication/catalog-git.js +451 -0
  268. package/dist/publication/catalog-git.js.map +1 -0
  269. package/dist/publication/claim.d.ts +39 -0
  270. package/dist/publication/claim.d.ts.map +1 -0
  271. package/dist/publication/claim.js +31 -0
  272. package/dist/publication/claim.js.map +1 -0
  273. package/dist/publication/coordinator.d.ts +246 -0
  274. package/dist/publication/coordinator.d.ts.map +1 -0
  275. package/dist/publication/coordinator.js +370 -0
  276. package/dist/publication/coordinator.js.map +1 -0
  277. package/dist/publication/github.d.ts +36 -0
  278. package/dist/publication/github.d.ts.map +1 -0
  279. package/dist/publication/github.js +695 -0
  280. package/dist/publication/github.js.map +1 -0
  281. package/dist/publication/http.d.ts +69 -0
  282. package/dist/publication/http.d.ts.map +1 -0
  283. package/dist/publication/http.js +29 -0
  284. package/dist/publication/http.js.map +1 -0
  285. package/dist/publication/index.d.ts +5 -0
  286. package/dist/publication/index.d.ts.map +1 -0
  287. package/dist/publication/index.js +5 -0
  288. package/dist/publication/index.js.map +1 -0
  289. package/dist/publication/npm.d.ts +40 -0
  290. package/dist/publication/npm.d.ts.map +1 -0
  291. package/dist/publication/npm.js +359 -0
  292. package/dist/publication/npm.js.map +1 -0
  293. package/dist/publication/profiles.d.ts +136 -0
  294. package/dist/publication/profiles.d.ts.map +1 -0
  295. package/dist/publication/profiles.js +90 -0
  296. package/dist/publication/profiles.js.map +1 -0
  297. package/dist/publication/publisher.d.ts +82 -0
  298. package/dist/publication/publisher.d.ts.map +1 -0
  299. package/dist/publication/publisher.js +53 -0
  300. package/dist/publication/publisher.js.map +1 -0
  301. package/dist/publication/pypi.d.ts +45 -0
  302. package/dist/publication/pypi.d.ts.map +1 -0
  303. package/dist/publication/pypi.js +369 -0
  304. package/dist/publication/pypi.js.map +1 -0
  305. package/dist/publication/recovery.d.ts +663 -0
  306. package/dist/publication/recovery.d.ts.map +1 -0
  307. package/dist/publication/recovery.js +252 -0
  308. package/dist/publication/recovery.js.map +1 -0
  309. package/dist/publication/report.d.ts +1061 -0
  310. package/dist/publication/report.d.ts.map +1 -0
  311. package/dist/publication/report.js +441 -0
  312. package/dist/publication/report.js.map +1 -0
  313. package/dist/recipes/config.d.ts +296 -0
  314. package/dist/recipes/config.d.ts.map +1 -0
  315. package/dist/recipes/config.js +325 -0
  316. package/dist/recipes/config.js.map +1 -0
  317. package/dist/release/capabilities.d.ts +12 -0
  318. package/dist/release/capabilities.d.ts.map +1 -0
  319. package/dist/release/capabilities.js +395 -0
  320. package/dist/release/capabilities.js.map +1 -0
  321. package/dist/release/compiler.d.ts +5 -0
  322. package/dist/release/compiler.d.ts.map +1 -0
  323. package/dist/release/compiler.js +19 -0
  324. package/dist/release/compiler.js.map +1 -0
  325. package/dist/release/config.d.ts +5 -0
  326. package/dist/release/config.d.ts.map +1 -0
  327. package/dist/release/config.js +10 -0
  328. package/dist/release/config.js.map +1 -0
  329. package/dist/release/context.d.ts +96 -0
  330. package/dist/release/context.d.ts.map +1 -0
  331. package/dist/release/context.js +168 -0
  332. package/dist/release/context.js.map +1 -0
  333. package/dist/release/graph.d.ts +271 -0
  334. package/dist/release/graph.d.ts.map +1 -0
  335. package/dist/release/graph.js +766 -0
  336. package/dist/release/graph.js.map +1 -0
  337. package/dist/release/inspect.d.ts +88 -0
  338. package/dist/release/inspect.d.ts.map +1 -0
  339. package/dist/release/inspect.js +75 -0
  340. package/dist/release/inspect.js.map +1 -0
  341. package/dist/release/prepare.d.ts +24 -0
  342. package/dist/release/prepare.d.ts.map +1 -0
  343. package/dist/release/prepare.js +1115 -0
  344. package/dist/release/prepare.js.map +1 -0
  345. package/dist/release/prepared-ref.d.ts +60 -0
  346. package/dist/release/prepared-ref.d.ts.map +1 -0
  347. package/dist/release/prepared-ref.js +131 -0
  348. package/dist/release/prepared-ref.js.map +1 -0
  349. package/dist/release/prepared-store.d.ts +90 -0
  350. package/dist/release/prepared-store.d.ts.map +1 -0
  351. package/dist/release/prepared-store.js +339 -0
  352. package/dist/release/prepared-store.js.map +1 -0
  353. package/dist/release/prepared.d.ts +172 -0
  354. package/dist/release/prepared.d.ts.map +1 -0
  355. package/dist/release/prepared.js +268 -0
  356. package/dist/release/prepared.js.map +1 -0
  357. package/dist/release/staging.d.ts +31 -0
  358. package/dist/release/staging.d.ts.map +1 -0
  359. package/dist/release/staging.js +218 -0
  360. package/dist/release/staging.js.map +1 -0
  361. package/dist/resolve/authored.d.ts +53 -0
  362. package/dist/resolve/authored.d.ts.map +1 -0
  363. package/dist/resolve/authored.js +55 -0
  364. package/dist/resolve/authored.js.map +1 -0
  365. package/dist/resolve/encode.d.ts +3 -0
  366. package/dist/resolve/encode.d.ts.map +1 -0
  367. package/dist/resolve/encode.js +21 -0
  368. package/dist/resolve/encode.js.map +1 -0
  369. package/dist/resolve/errors.d.ts +7 -0
  370. package/dist/resolve/errors.d.ts.map +1 -0
  371. package/dist/resolve/errors.js +17 -0
  372. package/dist/resolve/errors.js.map +1 -0
  373. package/dist/resolve/facts.d.ts +12 -0
  374. package/dist/resolve/facts.d.ts.map +1 -0
  375. package/dist/resolve/facts.js +18 -0
  376. package/dist/resolve/facts.js.map +1 -0
  377. package/dist/resolve/resolve.d.ts +10 -0
  378. package/dist/resolve/resolve.d.ts.map +1 -0
  379. package/dist/resolve/resolve.js +242 -0
  380. package/dist/resolve/resolve.js.map +1 -0
  381. package/dist/store.d.ts +11 -0
  382. package/dist/store.d.ts.map +1 -0
  383. package/dist/store.js +9 -0
  384. package/dist/store.js.map +1 -0
  385. package/examples/README.md +20 -30
  386. package/examples/github-release/release.config.json +11 -18
  387. package/examples/homebrew-tap/README.md +11 -0
  388. package/examples/homebrew-tap/release.config.json +40 -28
  389. package/examples/multi-target/release.config.json +28 -53
  390. package/examples/npm-first-publish/release.config.json +23 -25
  391. package/examples/npm-only/release.config.json +22 -30
  392. package/examples/portable-cli/README.md +17 -0
  393. package/examples/portable-cli/artifacts/portable-example-0.1.0-darwin-arm64 +1 -0
  394. package/examples/portable-cli/artifacts/portable-example-0.1.0-darwin-x64 +1 -0
  395. package/examples/portable-cli/artifacts/portable-example-0.1.0-linux-arm64 +1 -0
  396. package/examples/portable-cli/artifacts/portable-example-0.1.0-linux-x64 +1 -0
  397. package/examples/portable-cli/artifacts/portable-example-0.1.0-windows-x64.exe +1 -0
  398. package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-macosx_10_15_x86_64.whl +1 -0
  399. package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-macosx_11_0_arm64.whl +1 -0
  400. package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-manylinux2014_aarch64.whl +1 -0
  401. package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-manylinux2014_x86_64.whl +1 -0
  402. package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-win_amd64.whl +1 -0
  403. package/examples/portable-cli/package.json +9 -0
  404. package/examples/portable-cli/release.config.json +53 -0
  405. package/examples/portable-cli/src/cli.ts +3 -0
  406. package/examples/pypi-registry/README.md +8 -0
  407. package/examples/scoop-bucket/README.md +10 -0
  408. package/examples/scoop-bucket/release.config.json +40 -30
  409. package/package.json +73 -154
  410. package/src/api/api.ts +365 -0
  411. package/src/api/errors.ts +36 -0
  412. package/src/api/input.ts +92 -0
  413. package/src/api/runtime.ts +14 -0
  414. package/src/api/types.ts +103 -0
  415. package/src/capabilities/bun-targets.ts +2 -0
  416. package/src/capabilities/field-ownership.ts +60 -0
  417. package/src/capabilities/module.ts +158 -0
  418. package/src/capabilities/registry.ts +333 -0
  419. package/src/config/config.ts +48 -0
  420. package/src/correction/coordinator.ts +336 -0
  421. package/src/correction/index.ts +2 -0
  422. package/src/correction/intent.ts +172 -0
  423. package/src/drivers/archive.ts +111 -0
  424. package/src/drivers/contain.ts +20 -0
  425. package/src/drivers/environment.ts +28 -0
  426. package/src/drivers/errors.ts +6 -0
  427. package/src/drivers/glob.ts +137 -0
  428. package/src/drivers/process.ts +339 -0
  429. package/src/drivers/python-wheel.ts +145 -0
  430. package/src/drivers/redact.ts +31 -0
  431. package/src/drivers/seccomp-helper-source.ts +121 -0
  432. package/src/drivers/utils.ts +10 -0
  433. package/src/drivers/workspace.ts +46 -0
  434. package/src/extensions/provider-adapter.ts +99 -0
  435. package/src/host.ts +140 -0
  436. package/src/index.ts +64 -0
  437. package/src/model/artifact-collection.ts +237 -0
  438. package/src/model/authority.ts +116 -0
  439. package/src/model/bun-targets.ts +34 -0
  440. package/src/model/canonical.ts +205 -0
  441. package/src/model/catalog.ts +220 -0
  442. package/src/model/digest.ts +172 -0
  443. package/src/model/errors.ts +6 -0
  444. package/src/model/primitives.ts +37 -0
  445. package/src/model/pypi.ts +30 -0
  446. package/src/model/python-distribution.ts +360 -0
  447. package/src/model/secret-patterns.ts +11 -0
  448. package/src/operation-journal/authority.ts +162 -0
  449. package/src/operation-journal/aws/deadline.ts +41 -0
  450. package/src/operation-journal/aws/oidc.ts +439 -0
  451. package/src/operation-journal/aws/policy.ts +491 -0
  452. package/src/operation-journal/aws/s3-boundary.ts +562 -0
  453. package/src/operation-journal/aws.ts +60 -0
  454. package/src/operation-journal/canonical.ts +373 -0
  455. package/src/operation-journal/model.ts +301 -0
  456. package/src/operation-journal/reducer.ts +112 -0
  457. package/src/operation-journal/s3.ts +884 -0
  458. package/src/operation-journal.ts +51 -0
  459. package/src/platform/bun.ts +38 -0
  460. package/src/platform/credentials.ts +1151 -0
  461. package/src/platform/host-support.ts +4 -0
  462. package/src/platform/node.ts +38 -0
  463. package/src/platform/release-runtime.ts +47 -0
  464. package/src/platform/services.ts +57 -0
  465. package/src/platform/source-observer.ts +193 -0
  466. package/src/provider-sdk.ts +48 -0
  467. package/src/publication/adapter.ts +132 -0
  468. package/src/publication/authority.ts +397 -0
  469. package/src/publication/catalog-git.ts +603 -0
  470. package/src/publication/claim.ts +51 -0
  471. package/src/publication/coordinator.ts +578 -0
  472. package/src/publication/github.ts +1022 -0
  473. package/src/publication/http.ts +101 -0
  474. package/src/publication/index.ts +4 -0
  475. package/src/publication/npm.ts +525 -0
  476. package/src/publication/profiles.ts +94 -0
  477. package/src/publication/publisher.ts +130 -0
  478. package/src/publication/pypi.ts +463 -0
  479. package/src/publication/recovery.ts +349 -0
  480. package/src/publication/report.ts +628 -0
  481. package/src/recipes/config.ts +395 -0
  482. package/src/release/capabilities.ts +460 -0
  483. package/src/release/compiler.ts +28 -0
  484. package/src/release/config.ts +12 -0
  485. package/src/release/context.ts +223 -0
  486. package/src/release/graph.ts +866 -0
  487. package/src/release/inspect.ts +83 -0
  488. package/src/release/prepare.ts +1329 -0
  489. package/src/release/prepared-ref.ts +193 -0
  490. package/src/release/prepared-store.ts +378 -0
  491. package/src/release/prepared.ts +299 -0
  492. package/src/release/staging.ts +257 -0
  493. package/src/resolve/authored.ts +64 -0
  494. package/src/resolve/encode.ts +22 -0
  495. package/src/resolve/errors.ts +15 -0
  496. package/src/resolve/facts.ts +18 -0
  497. package/src/resolve/resolve.ts +328 -0
  498. package/src/store.ts +28 -0
  499. package/templates/README.md +55 -72
  500. package/templates/bun-cli-github/README.md +7 -9
  501. package/templates/bun-cli-github/release.config.json +35 -73
  502. package/templates/github-actions/release.yml +74 -0
  503. package/templates/github-actions/reviewed-release.yml +115 -0
  504. package/templates/multi-target-homebrew/README.md +10 -0
  505. package/templates/multi-target-homebrew/release.config.json +43 -60
  506. package/templates/multi-target-scoop/README.md +10 -0
  507. package/templates/multi-target-scoop/release.config.json +43 -62
  508. package/templates/npm-github/release.config.json +25 -38
  509. package/templates/npm-github/reviewed-release.config.json +37 -0
  510. package/templates/npm-only/README.md +10 -0
  511. package/templates/npm-only/release.config.json +15 -30
  512. package/templates/portable-cli/README.md +13 -0
  513. package/templates/portable-cli/release.config.json +53 -0
  514. package/dist/artifacts/adapter.d.ts +0 -39
  515. package/dist/artifacts/adapter.d.ts.map +0 -1
  516. package/dist/artifacts/adapter.js +0 -23
  517. package/dist/artifacts/adapter.js.map +0 -1
  518. package/dist/artifacts/registry.d.ts +0 -21
  519. package/dist/artifacts/registry.d.ts.map +0 -1
  520. package/dist/artifacts/registry.js +0 -21
  521. package/dist/artifacts/registry.js.map +0 -1
  522. package/dist/config/errors.d.ts +0 -24
  523. package/dist/config/errors.d.ts.map +0 -1
  524. package/dist/config/errors.js +0 -19
  525. package/dist/config/errors.js.map +0 -1
  526. package/dist/config/load.d.ts +0 -9
  527. package/dist/config/load.d.ts.map +0 -1
  528. package/dist/config/load.js +0 -29
  529. package/dist/config/load.js.map +0 -1
  530. package/dist/config/schema.d.ts +0 -12
  531. package/dist/config/schema.d.ts.map +0 -1
  532. package/dist/config/schema.js +0 -19
  533. package/dist/config/schema.js.map +0 -1
  534. package/dist/domain/artifact.d.ts +0 -118
  535. package/dist/domain/artifact.d.ts.map +0 -1
  536. package/dist/domain/artifact.js +0 -197
  537. package/dist/domain/artifact.js.map +0 -1
  538. package/dist/domain/evidence.d.ts +0 -59
  539. package/dist/domain/evidence.d.ts.map +0 -1
  540. package/dist/domain/evidence.js +0 -51
  541. package/dist/domain/evidence.js.map +0 -1
  542. package/dist/domain/operation.d.ts +0 -143
  543. package/dist/domain/operation.d.ts.map +0 -1
  544. package/dist/domain/operation.js +0 -198
  545. package/dist/domain/operation.js.map +0 -1
  546. package/dist/domain/release.d.ts +0 -93
  547. package/dist/domain/release.d.ts.map +0 -1
  548. package/dist/domain/release.js +0 -82
  549. package/dist/domain/release.js.map +0 -1
  550. package/dist/domain/remote-state.d.ts +0 -58
  551. package/dist/domain/remote-state.d.ts.map +0 -1
  552. package/dist/domain/remote-state.js +0 -55
  553. package/dist/domain/remote-state.js.map +0 -1
  554. package/dist/domain/target.d.ts +0 -148
  555. package/dist/domain/target.d.ts.map +0 -1
  556. package/dist/domain/target.js +0 -151
  557. package/dist/domain/target.js.map +0 -1
  558. package/dist/host/host.d.ts +0 -32
  559. package/dist/host/host.d.ts.map +0 -1
  560. package/dist/host/host.js +0 -24
  561. package/dist/host/host.js.map +0 -1
  562. package/dist/host/http-live.d.ts +0 -6
  563. package/dist/host/http-live.d.ts.map +0 -1
  564. package/dist/host/http-live.js +0 -86
  565. package/dist/host/http-live.js.map +0 -1
  566. package/dist/host/http.d.ts +0 -43
  567. package/dist/host/http.d.ts.map +0 -1
  568. package/dist/host/http.js +0 -59
  569. package/dist/host/http.js.map +0 -1
  570. package/dist/host/platform.d.ts +0 -10
  571. package/dist/host/platform.d.ts.map +0 -1
  572. package/dist/host/platform.js +0 -114
  573. package/dist/host/platform.js.map +0 -1
  574. package/dist/host/test.d.ts +0 -23
  575. package/dist/host/test.d.ts.map +0 -1
  576. package/dist/host/test.js +0 -222
  577. package/dist/host/test.js.map +0 -1
  578. package/dist/internal/workspace-path.d.ts +0 -15
  579. package/dist/internal/workspace-path.d.ts.map +0 -1
  580. package/dist/internal/workspace-path.js +0 -36
  581. package/dist/internal/workspace-path.js.map +0 -1
  582. package/dist/planner/artifact-inventory.d.ts +0 -9
  583. package/dist/planner/artifact-inventory.d.ts.map +0 -1
  584. package/dist/planner/artifact-inventory.js +0 -86
  585. package/dist/planner/artifact-inventory.js.map +0 -1
  586. package/dist/planner/create-release-plan.d.ts +0 -5
  587. package/dist/planner/create-release-plan.d.ts.map +0 -1
  588. package/dist/planner/create-release-plan.js +0 -25
  589. package/dist/planner/create-release-plan.js.map +0 -1
  590. package/dist/planner/errors.d.ts +0 -67
  591. package/dist/planner/errors.d.ts.map +0 -1
  592. package/dist/planner/errors.js +0 -58
  593. package/dist/planner/errors.js.map +0 -1
  594. package/dist/planner/evidence-recorder.d.ts +0 -28
  595. package/dist/planner/evidence-recorder.d.ts.map +0 -1
  596. package/dist/planner/evidence-recorder.js +0 -362
  597. package/dist/planner/evidence-recorder.js.map +0 -1
  598. package/dist/planner/executor.d.ts +0 -58
  599. package/dist/planner/executor.d.ts.map +0 -1
  600. package/dist/planner/executor.js +0 -147
  601. package/dist/planner/executor.js.map +0 -1
  602. package/dist/planner/normalize-release.d.ts +0 -19
  603. package/dist/planner/normalize-release.d.ts.map +0 -1
  604. package/dist/planner/normalize-release.js +0 -342
  605. package/dist/planner/normalize-release.js.map +0 -1
  606. package/dist/planner/reconcile.d.ts +0 -17
  607. package/dist/planner/reconcile.d.ts.map +0 -1
  608. package/dist/planner/reconcile.js +0 -259
  609. package/dist/planner/reconcile.js.map +0 -1
  610. package/dist/planner/render-plan.d.ts +0 -15
  611. package/dist/planner/render-plan.d.ts.map +0 -1
  612. package/dist/planner/render-plan.js +0 -231
  613. package/dist/planner/render-plan.js.map +0 -1
  614. package/dist/targets/adapter-helpers.d.ts +0 -79
  615. package/dist/targets/adapter-helpers.d.ts.map +0 -1
  616. package/dist/targets/adapter-helpers.js +0 -194
  617. package/dist/targets/adapter-helpers.js.map +0 -1
  618. package/dist/targets/adapter.d.ts +0 -17
  619. package/dist/targets/adapter.d.ts.map +0 -1
  620. package/dist/targets/adapter.js +0 -2
  621. package/dist/targets/adapter.js.map +0 -1
  622. package/dist/targets/github-release.d.ts +0 -25
  623. package/dist/targets/github-release.d.ts.map +0 -1
  624. package/dist/targets/github-release.js +0 -82
  625. package/dist/targets/github-release.js.map +0 -1
  626. package/dist/targets/github.d.ts +0 -11
  627. package/dist/targets/github.d.ts.map +0 -1
  628. package/dist/targets/github.js +0 -117
  629. package/dist/targets/github.js.map +0 -1
  630. package/dist/targets/homebrew.d.ts +0 -11
  631. package/dist/targets/homebrew.d.ts.map +0 -1
  632. package/dist/targets/homebrew.js +0 -210
  633. package/dist/targets/homebrew.js.map +0 -1
  634. package/dist/targets/live.d.ts +0 -5
  635. package/dist/targets/live.d.ts.map +0 -1
  636. package/dist/targets/live.js +0 -50
  637. package/dist/targets/live.js.map +0 -1
  638. package/dist/targets/npm.d.ts +0 -10
  639. package/dist/targets/npm.d.ts.map +0 -1
  640. package/dist/targets/npm.js +0 -112
  641. package/dist/targets/npm.js.map +0 -1
  642. package/dist/targets/pypi.d.ts +0 -11
  643. package/dist/targets/pypi.d.ts.map +0 -1
  644. package/dist/targets/pypi.js +0 -141
  645. package/dist/targets/pypi.js.map +0 -1
  646. package/dist/targets/registry.d.ts +0 -25
  647. package/dist/targets/registry.d.ts.map +0 -1
  648. package/dist/targets/registry.js +0 -34
  649. package/dist/targets/registry.js.map +0 -1
  650. package/dist/targets/scoop.d.ts +0 -11
  651. package/dist/targets/scoop.d.ts.map +0 -1
  652. package/dist/targets/scoop.js +0 -88
  653. package/dist/targets/scoop.js.map +0 -1
  654. package/dist/types/effect-internal.d.ts +0 -5
  655. package/dist/types/effect-internal.d.ts.map +0 -1
  656. package/dist/types/effect-internal.js +0 -2
  657. package/dist/types/effect-internal.js.map +0 -1
  658. package/dist/workflows/config.d.ts +0 -202
  659. package/dist/workflows/config.d.ts.map +0 -1
  660. package/dist/workflows/config.js +0 -420
  661. package/dist/workflows/config.js.map +0 -1
  662. package/dist/workflows/diagnostics.d.ts +0 -62
  663. package/dist/workflows/diagnostics.d.ts.map +0 -1
  664. package/dist/workflows/diagnostics.js +0 -530
  665. package/dist/workflows/diagnostics.js.map +0 -1
  666. package/dist/workflows/distribution.d.ts +0 -25
  667. package/dist/workflows/distribution.d.ts.map +0 -1
  668. package/dist/workflows/distribution.js +0 -24
  669. package/dist/workflows/distribution.js.map +0 -1
  670. package/dist/workflows/evidence.d.ts +0 -17
  671. package/dist/workflows/evidence.d.ts.map +0 -1
  672. package/dist/workflows/evidence.js +0 -32
  673. package/dist/workflows/evidence.js.map +0 -1
  674. package/dist/workflows/index.d.ts +0 -8
  675. package/dist/workflows/index.d.ts.map +0 -1
  676. package/dist/workflows/index.js +0 -7
  677. package/dist/workflows/index.js.map +0 -1
  678. package/dist/workflows/init.d.ts +0 -84
  679. package/dist/workflows/init.d.ts.map +0 -1
  680. package/dist/workflows/init.js +0 -487
  681. package/dist/workflows/init.js.map +0 -1
  682. package/dist/workflows/live.d.ts +0 -9
  683. package/dist/workflows/live.d.ts.map +0 -1
  684. package/dist/workflows/live.js +0 -7
  685. package/dist/workflows/live.js.map +0 -1
  686. package/dist/workflows/options.d.ts +0 -30
  687. package/dist/workflows/options.d.ts.map +0 -1
  688. package/dist/workflows/options.js +0 -16
  689. package/dist/workflows/options.js.map +0 -1
  690. package/examples/non-strict-skips/artifacts/release-example-skips-0.1.0.tgz +0 -1
  691. package/examples/non-strict-skips/release.config.json +0 -31
  692. package/examples/pypi-registry/release.config.json +0 -31
  693. package/templates/github-actions/plan-and-approved-execute.yml +0 -58
  694. package/templates/github-actions/plan-only.yml +0 -33
  695. package/templates/github-actions/trusted-publishing.yml +0 -61
@@ -0,0 +1,282 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { sha256Digest } from "../model/digest.js";
3
+ import { encodeCanonicalJson, parseStrictJson } from "../model/canonical.js";
4
+ import { JournalInputError, JournalIntegrityError, journalRecordTags, operationJournalByteLimits } from "./model.js";
5
+ const encoder = new TextEncoder();
6
+ const decoder = new TextDecoder("utf-8", { fatal: true });
7
+ const releasePointPattern = /^[a-f0-9]{40}$/u;
8
+ const operationKeyPattern = /^[a-f0-9]{64}$/u;
9
+ const digestPattern = /^sha256:[a-f0-9]{64}$/u;
10
+ const transactionIdPattern = /^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/u;
11
+ const positiveDecimalPattern = /^[1-9][0-9]*$/u;
12
+ const codecIdPattern = /^[A-Za-z0-9][A-Za-z0-9._/@-]{0,127}$/u;
13
+ const etagPattern = /^"[!#-~]{1,1024}"$/u;
14
+ const canonicalDigest = (bytes) => `sha256:${sha256Digest(bytes).hex}`;
15
+ const failInput = (reason) => {
16
+ throw JournalInputError.make({ reason });
17
+ };
18
+ const failIntegrity = (reason) => {
19
+ throw JournalIntegrityError.make({ reason });
20
+ };
21
+ const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
22
+ const exactObject = (value, fields, label) => {
23
+ if (!isObject(value))
24
+ failIntegrity(`${label} must be an object.`);
25
+ const object = value;
26
+ const actual = Object.keys(object).sort();
27
+ const expected = [...fields].sort();
28
+ if (actual.length !== expected.length || actual.some((field, index) => field !== expected[index])) {
29
+ failIntegrity(`${label} fields are not the exact canonical set.`);
30
+ }
31
+ return object;
32
+ };
33
+ const stringField = (object, field, label) => {
34
+ const value = object[field];
35
+ if (typeof value !== "string")
36
+ failIntegrity(`${label}.${field} must be a string.`);
37
+ return value;
38
+ };
39
+ const integerField = (object, field, label) => {
40
+ const value = object[field];
41
+ if (typeof value !== "number" || !Number.isSafeInteger(value)) {
42
+ failIntegrity(`${label}.${field} must be a safe integer.`);
43
+ }
44
+ return value;
45
+ };
46
+ const assertPattern = (value, pattern, label) => {
47
+ if (!pattern.test(value))
48
+ failIntegrity(`${label} is not canonical.`);
49
+ return value;
50
+ };
51
+ const assertInputPattern = (value, pattern, label) => {
52
+ if (!pattern.test(value))
53
+ failInput(`${label} is not canonical.`);
54
+ return value;
55
+ };
56
+ export const isCanonicalS3VersionId = (value) => {
57
+ const bytes = encoder.encode(value);
58
+ return value !== "null" && bytes.length >= 1 && bytes.length <= 1024 && decoder.decode(bytes) === value;
59
+ };
60
+ const assertVersionId = (value, label) => {
61
+ if (!isCanonicalS3VersionId(value))
62
+ failIntegrity(`${label} is not a canonical retained S3 VersionId.`);
63
+ return value;
64
+ };
65
+ const decodeCanonical = (bytes, label) => {
66
+ if (!(bytes instanceof Uint8Array)) {
67
+ failIntegrity(`${label} must be one Uint8Array.`);
68
+ }
69
+ if (bytes.length === 0 || bytes.length > operationJournalByteLimits.object) {
70
+ failIntegrity(`${label} exceeds the admitted object byte bound.`);
71
+ }
72
+ let text;
73
+ let parsed;
74
+ try {
75
+ text = decoder.decode(bytes);
76
+ parsed = parseStrictJson(text);
77
+ }
78
+ catch {
79
+ return failIntegrity(`${label} is not strict UTF-8 canonical JSON.`);
80
+ }
81
+ if (encodeCanonicalJson(parsed) !== text) {
82
+ failIntegrity(`${label} is not the canonical encoding of its value.`);
83
+ }
84
+ return parsed;
85
+ };
86
+ const decodeBase64 = (value, label) => {
87
+ const maximumEncodedLength = Math.ceil(operationJournalByteLimits.payload / 3) * 4;
88
+ if (value.length > maximumEncodedLength) {
89
+ failIntegrity(`${label} exceeds the admitted payload byte bound.`);
90
+ }
91
+ if (!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u.test(value)) {
92
+ failIntegrity(`${label} is not canonical base64.`);
93
+ }
94
+ const bytes = new Uint8Array(Buffer.from(value, "base64"));
95
+ if (bytes.length > operationJournalByteLimits.payload || Buffer.from(bytes).toString("base64") !== value) {
96
+ failIntegrity(`${label} is not canonical base64.`);
97
+ }
98
+ return bytes;
99
+ };
100
+ export const validateJournalOperation = (operation) => ({
101
+ releasePoint: assertInputPattern(operation.releasePoint, releasePointPattern, "releasePoint"),
102
+ operationKey: assertInputPattern(operation.operationKey, operationKeyPattern, "operationKey")
103
+ });
104
+ export const validateJournalWorkflow = (workflow) => ({
105
+ repositoryId: assertInputPattern(workflow.repositoryId, positiveDecimalPattern, "workflow.repositoryId"),
106
+ runId: assertInputPattern(workflow.runId, positiveDecimalPattern, "workflow.runId"),
107
+ runAttempt: assertInputPattern(workflow.runAttempt, positiveDecimalPattern, "workflow.runAttempt")
108
+ });
109
+ export const validateTransactionId = (transactionId) => assertInputPattern(transactionId, transactionIdPattern, "transactionId");
110
+ export const deriveOperationKey = (canonicalOperationIdentity) => {
111
+ if (!(canonicalOperationIdentity instanceof Uint8Array)) {
112
+ failInput("Canonical operation identity must be one Uint8Array.");
113
+ }
114
+ if (canonicalOperationIdentity.length === 0 ||
115
+ canonicalOperationIdentity.length > operationJournalByteLimits.operationIdentity) {
116
+ failInput("Canonical operation identity exceeds its admitted byte bound.");
117
+ }
118
+ return sha256Digest(canonicalOperationIdentity).hex;
119
+ };
120
+ export const journalNamespace = (operation, prefix = "operation-journal/v1") => {
121
+ const valid = validateJournalOperation(operation);
122
+ if (prefix !== "operation-journal/v1")
123
+ failInput("Journal prefix must be operation-journal/v1.");
124
+ return `${prefix}/${valid.releasePoint}/${valid.operationKey}/`;
125
+ };
126
+ export const journalHeadKey = (operation) => `${journalNamespace(operation)}head.bin`;
127
+ export const journalEventKey = (operation, sequence, transactionId) => {
128
+ if (!Number.isSafeInteger(sequence) || sequence < 1 || sequence > 99_999_999) {
129
+ failInput("Journal sequence must be an integer from 1 through 99999999.");
130
+ }
131
+ return `${journalNamespace(operation)}events/${String(sequence).padStart(8, "0")}/${validateTransactionId(transactionId)}.bin`;
132
+ };
133
+ export const makeCanonicalJournalRecord = (input) => {
134
+ if (!journalRecordTags.includes(input.tag))
135
+ failInput("Journal record tag is not admitted.");
136
+ if (!(input.payload instanceof Uint8Array)) {
137
+ failInput("Journal payload must be one Uint8Array.");
138
+ }
139
+ if (input.payload.length > operationJournalByteLimits.payload) {
140
+ failInput("Journal payload exceeds the admitted byte bound.");
141
+ }
142
+ const codecId = assertInputPattern(input.codecId, codecIdPattern, "codecId");
143
+ const payload = new Uint8Array(input.payload);
144
+ return {
145
+ tag: input.tag,
146
+ codecId,
147
+ payloadBase64: Buffer.from(payload).toString("base64"),
148
+ payloadDigest: canonicalDigest(payload)
149
+ };
150
+ };
151
+ export const encodeJournalEvent = (event) => encoder.encode(encodeCanonicalJson(event));
152
+ export const encodeJournalHead = (head) => encoder.encode(encodeCanonicalJson(head));
153
+ const decodeWorkflow = (value) => {
154
+ const object = exactObject(value, ["repositoryId", "runAttempt", "runId"], "event.workflow");
155
+ return {
156
+ repositoryId: assertPattern(stringField(object, "repositoryId", "event.workflow"), positiveDecimalPattern, "event.workflow.repositoryId"),
157
+ runId: assertPattern(stringField(object, "runId", "event.workflow"), positiveDecimalPattern, "event.workflow.runId"),
158
+ runAttempt: assertPattern(stringField(object, "runAttempt", "event.workflow"), positiveDecimalPattern, "event.workflow.runAttempt")
159
+ };
160
+ };
161
+ const decodeRecord = (value) => {
162
+ const object = exactObject(value, ["codecId", "payloadBase64", "payloadDigest", "tag"], "event.record");
163
+ const tag = stringField(object, "tag", "event.record");
164
+ if (!journalRecordTags.includes(tag))
165
+ failIntegrity("event.record.tag is not admitted.");
166
+ const codecId = assertPattern(stringField(object, "codecId", "event.record"), codecIdPattern, "event.record.codecId");
167
+ const payloadBase64 = stringField(object, "payloadBase64", "event.record");
168
+ const payload = decodeBase64(payloadBase64, "event.record.payloadBase64");
169
+ const payloadDigest = assertPattern(stringField(object, "payloadDigest", "event.record"), digestPattern, "event.record.payloadDigest");
170
+ if (canonicalDigest(payload) !== payloadDigest)
171
+ failIntegrity("event.record payload digest does not match its bytes.");
172
+ return { tag: tag, codecId, payloadBase64, payloadDigest };
173
+ };
174
+ const decodePredecessor = (value) => {
175
+ if (value === null)
176
+ return null;
177
+ const object = exactObject(value, ["eventDigest", "headEtag", "headVersionId"], "event.previous");
178
+ return {
179
+ eventDigest: assertPattern(stringField(object, "eventDigest", "event.previous"), digestPattern, "event.previous.eventDigest"),
180
+ headVersionId: assertVersionId(stringField(object, "headVersionId", "event.previous"), "event.previous.headVersionId"),
181
+ headEtag: assertPattern(stringField(object, "headEtag", "event.previous"), etagPattern, "event.previous.headEtag")
182
+ };
183
+ };
184
+ export const decodeJournalEvent = (bytes) => {
185
+ const object = exactObject(decodeCanonical(bytes, "Journal event"), [
186
+ "operationKey",
187
+ "previous",
188
+ "record",
189
+ "releasePoint",
190
+ "schemaVersion",
191
+ "sequence",
192
+ "transactionId",
193
+ "workflow"
194
+ ], "event");
195
+ if (stringField(object, "schemaVersion", "event") !== "ts-release-operation-journal-event/v1") {
196
+ failIntegrity("Journal event schema version is unsupported.");
197
+ }
198
+ const schemaVersion = "ts-release-operation-journal-event/v1";
199
+ const sequence = integerField(object, "sequence", "event");
200
+ if (sequence < 1 || sequence > 99_999_999)
201
+ failIntegrity("event.sequence is outside the admitted range.");
202
+ return {
203
+ schemaVersion,
204
+ releasePoint: assertPattern(stringField(object, "releasePoint", "event"), releasePointPattern, "event.releasePoint"),
205
+ operationKey: assertPattern(stringField(object, "operationKey", "event"), operationKeyPattern, "event.operationKey"),
206
+ sequence,
207
+ transactionId: assertPattern(stringField(object, "transactionId", "event"), transactionIdPattern, "event.transactionId"),
208
+ previous: decodePredecessor(object.previous),
209
+ workflow: decodeWorkflow(object.workflow),
210
+ record: decodeRecord(object.record)
211
+ };
212
+ };
213
+ export const decodeJournalHead = (bytes) => {
214
+ const object = exactObject(decodeCanonical(bytes, "Journal head"), [
215
+ "eventChecksumSha256",
216
+ "eventDigest",
217
+ "eventKey",
218
+ "eventVersionId",
219
+ "operationKey",
220
+ "previousHeadEtag",
221
+ "previousHeadVersionId",
222
+ "releasePoint",
223
+ "schemaVersion",
224
+ "sequence",
225
+ "transactionId"
226
+ ], "head");
227
+ if (stringField(object, "schemaVersion", "head") !== "ts-release-operation-journal-head/v1") {
228
+ failIntegrity("Journal head schema version is unsupported.");
229
+ }
230
+ const schemaVersion = "ts-release-operation-journal-head/v1";
231
+ const sequence = integerField(object, "sequence", "head");
232
+ if (sequence < 1 || sequence > 99_999_999)
233
+ failIntegrity("head.sequence is outside the admitted range.");
234
+ const nullable = (field, pattern) => {
235
+ const value = object[field];
236
+ if (value === null)
237
+ return null;
238
+ if (typeof value !== "string")
239
+ failIntegrity(`head.${field} must be a string or null.`);
240
+ return assertPattern(value, pattern, `head.${field}`);
241
+ };
242
+ return {
243
+ schemaVersion,
244
+ releasePoint: assertPattern(stringField(object, "releasePoint", "head"), releasePointPattern, "head.releasePoint"),
245
+ operationKey: assertPattern(stringField(object, "operationKey", "head"), operationKeyPattern, "head.operationKey"),
246
+ sequence,
247
+ transactionId: assertPattern(stringField(object, "transactionId", "head"), transactionIdPattern, "head.transactionId"),
248
+ eventKey: stringField(object, "eventKey", "head"),
249
+ eventVersionId: assertVersionId(stringField(object, "eventVersionId", "head"), "head.eventVersionId"),
250
+ eventChecksumSha256: assertPattern(stringField(object, "eventChecksumSha256", "head"), digestPattern, "head.eventChecksumSha256"),
251
+ eventDigest: assertPattern(stringField(object, "eventDigest", "head"), digestPattern, "head.eventDigest"),
252
+ previousHeadVersionId: (() => {
253
+ const value = object.previousHeadVersionId;
254
+ if (value === null)
255
+ return null;
256
+ if (typeof value !== "string")
257
+ failIntegrity("head.previousHeadVersionId must be a string or null.");
258
+ return assertVersionId(value, "head.previousHeadVersionId");
259
+ })(),
260
+ previousHeadEtag: nullable("previousHeadEtag", etagPattern)
261
+ };
262
+ };
263
+ const canonicalObjectDigest = (bytes, label) => {
264
+ if (!(bytes instanceof Uint8Array))
265
+ failIntegrity(`${label} must be one Uint8Array.`);
266
+ if (bytes.length < 1 || bytes.length > operationJournalByteLimits.object) {
267
+ failIntegrity(`${label} exceeds the admitted object byte bound.`);
268
+ }
269
+ return canonicalDigest(bytes);
270
+ };
271
+ export const eventDigest = (bytes) => canonicalObjectDigest(bytes, "Journal event");
272
+ export const objectChecksum = (bytes) => canonicalObjectDigest(bytes, "Journal object");
273
+ export const journalRecordFromEvent = (event) => ({
274
+ tag: event.record.tag,
275
+ codecId: event.record.codecId,
276
+ payload: decodeBase64(event.record.payloadBase64, "event.record.payloadBase64"),
277
+ payloadDigest: event.record.payloadDigest,
278
+ sequence: event.sequence,
279
+ transactionId: event.transactionId,
280
+ workflow: event.workflow
281
+ });
282
+ //# sourceMappingURL=canonical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/operation-journal/canonical.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,251 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Schema from "effect/Schema";
3
+ export declare const journalRecordTags: readonly ["IntentRecorded", "ReceiptRecorded", "ObservationRecorded", "TerminalRecorded", "OutcomeUnknown"];
4
+ /** Fixed hashing/allocation limits for identities, payloads, and retained objects. */
5
+ export declare const operationJournalByteLimits: {
6
+ readonly operationIdentity: 65536;
7
+ readonly payload: 1048576;
8
+ readonly object: 1500000;
9
+ };
10
+ export type JournalRecordTag = typeof journalRecordTags[number];
11
+ export type JournalStateTag = "Empty" | JournalRecordTag;
12
+ export interface JournalOperation {
13
+ readonly releasePoint: string;
14
+ readonly operationKey: string;
15
+ }
16
+ export interface JournalWorkflowCoordinate {
17
+ readonly repositoryId: string;
18
+ readonly runId: string;
19
+ readonly runAttempt: string;
20
+ }
21
+ /**
22
+ * The payload is consumer-owned canonical data. The journal binds and returns
23
+ * the bytes without decoding provider fields.
24
+ */
25
+ export interface JournalAppendRequest extends JournalOperation {
26
+ readonly tag: JournalRecordTag;
27
+ readonly codecId: string;
28
+ readonly payload: Uint8Array;
29
+ }
30
+ export interface JournalRecord {
31
+ readonly tag: JournalRecordTag;
32
+ readonly codecId: string;
33
+ readonly payload: Uint8Array;
34
+ readonly payloadDigest: string;
35
+ readonly sequence: number;
36
+ readonly transactionId: string;
37
+ readonly workflow: JournalWorkflowCoordinate;
38
+ }
39
+ export interface JournalAcknowledgement extends JournalOperation {
40
+ readonly bucketArn: string;
41
+ readonly prefix: string;
42
+ readonly eventKey: string;
43
+ readonly eventVersionId: string;
44
+ readonly eventChecksumSha256: string;
45
+ readonly headKey: string;
46
+ readonly headVersionId: string;
47
+ readonly headEtag: string;
48
+ readonly headChecksumSha256: string;
49
+ readonly recordDigest: string;
50
+ readonly sequence: number;
51
+ readonly transactionId: string;
52
+ readonly previousHeadVersionId: string | null;
53
+ readonly previousHeadEtag: string | null;
54
+ }
55
+ export interface JournalSnapshot extends JournalOperation {
56
+ readonly state: JournalStateTag;
57
+ readonly records: ReadonlyArray<JournalRecord>;
58
+ readonly acknowledgement: JournalAcknowledgement | null;
59
+ }
60
+ export interface CanonicalOperationJournalShape {
61
+ /** Re-observe governance and validate the complete reachable chain. */
62
+ readonly read: (operation: JournalOperation) => Effect.Effect<JournalSnapshot, JournalReadError>;
63
+ /**
64
+ * Append one transition. A returned acknowledgment has already survived an
65
+ * exact version re-read and complete-chain validation.
66
+ */
67
+ readonly append: (request: JournalAppendRequest) => Effect.Effect<JournalAcknowledgement, JournalAppendError>;
68
+ /**
69
+ * Finish the one unacknowledged canonical event left by a killed writer.
70
+ * Multiple or semantically incompatible orphan transactions stop.
71
+ */
72
+ readonly reconcile: (operation: JournalOperation) => Effect.Effect<JournalSnapshot, JournalAppendError>;
73
+ }
74
+ declare const JournalInputError_base: Schema.Class<JournalInputError, Schema.TaggedStruct<"JournalInputError", {
75
+ readonly reason: Schema.NonEmptyString;
76
+ }>, import("effect/Cause").YieldableError>;
77
+ export declare class JournalInputError extends JournalInputError_base {
78
+ }
79
+ declare const JournalTransitionError_base: Schema.Class<JournalTransitionError, Schema.TaggedStruct<"JournalTransitionError", {
80
+ readonly reason: Schema.NonEmptyString;
81
+ }>, import("effect/Cause").YieldableError>;
82
+ export declare class JournalTransitionError extends JournalTransitionError_base {
83
+ }
84
+ declare const JournalIntegrityError_base: Schema.Class<JournalIntegrityError, Schema.TaggedStruct<"JournalIntegrityError", {
85
+ readonly reason: Schema.NonEmptyString;
86
+ }>, import("effect/Cause").YieldableError>;
87
+ export declare class JournalIntegrityError extends JournalIntegrityError_base {
88
+ }
89
+ declare const JournalAuthorityMismatch_base: Schema.Class<JournalAuthorityMismatch, Schema.TaggedStruct<"JournalAuthorityMismatch", {
90
+ readonly reason: Schema.NonEmptyString;
91
+ }>, import("effect/Cause").YieldableError>;
92
+ export declare class JournalAuthorityMismatch extends JournalAuthorityMismatch_base {
93
+ }
94
+ declare const JournalStorageUnavailable_base: Schema.Class<JournalStorageUnavailable, Schema.TaggedStruct<"JournalStorageUnavailable", {
95
+ readonly reason: Schema.NonEmptyString;
96
+ }>, import("effect/Cause").YieldableError>;
97
+ export declare class JournalStorageUnavailable extends JournalStorageUnavailable_base {
98
+ }
99
+ declare const JournalStorageOutcomeUnknown_base: Schema.Class<JournalStorageOutcomeUnknown, Schema.TaggedStruct<"JournalStorageOutcomeUnknown", {
100
+ readonly reason: Schema.NonEmptyString;
101
+ }>, import("effect/Cause").YieldableError>;
102
+ export declare class JournalStorageOutcomeUnknown extends JournalStorageOutcomeUnknown_base {
103
+ }
104
+ declare const JournalConflict_base: Schema.Class<JournalConflict, Schema.TaggedStruct<"JournalConflict", {
105
+ readonly reason: Schema.NonEmptyString;
106
+ }>, import("effect/Cause").YieldableError>;
107
+ export declare class JournalConflict extends JournalConflict_base {
108
+ }
109
+ export type JournalReadError = JournalInputError | JournalIntegrityError | JournalAuthorityMismatch | JournalStorageUnavailable;
110
+ export type JournalAppendError = JournalReadError | JournalTransitionError | JournalStorageOutcomeUnknown | JournalConflict;
111
+ export declare const S3JournalRequestOperations: Schema.Literals<readonly ["observe-authority", "list-namespace", "get-object-version", "put-event", "put-head"]>;
112
+ export type S3JournalRequestOperation = typeof S3JournalRequestOperations.Type;
113
+ declare const S3JournalBoundaryError_base: Schema.Class<S3JournalBoundaryError, Schema.TaggedStruct<"S3JournalBoundaryError", {
114
+ readonly operation: Schema.Literals<readonly ["observe-authority", "list-namespace", "get-object-version", "put-event", "put-head"]>;
115
+ readonly commitment: Schema.Literals<readonly ["not-applicable", "not-committed", "unknown"]>;
116
+ readonly reason: Schema.NonEmptyString;
117
+ }>, import("effect/Cause").YieldableError>;
118
+ export declare class S3JournalBoundaryError extends S3JournalBoundaryError_base {
119
+ }
120
+ export interface S3JournalOidcClaims {
121
+ readonly issuer: "https://token.actions.githubusercontent.com";
122
+ readonly audience: "sts.amazonaws.com";
123
+ readonly subject: string;
124
+ /** Standard GitHub claims describe the caller workflow. */
125
+ readonly repository: string;
126
+ readonly repositoryId: string;
127
+ readonly repositoryOwnerId: string;
128
+ readonly repositoryVisibility: "public";
129
+ readonly eventName: "workflow_dispatch";
130
+ readonly ref: string;
131
+ readonly refType: "branch";
132
+ readonly sha: string;
133
+ readonly environment: string;
134
+ readonly runnerEnvironment: "github-hosted";
135
+ readonly runId: string;
136
+ readonly runAttempt: string;
137
+ readonly workflow: string;
138
+ readonly workflowRef: string;
139
+ readonly workflowSha: string;
140
+ /** `job_workflow_*` claims describe the called reusable workflow. */
141
+ readonly jobWorkflowRef: string;
142
+ readonly jobWorkflowSha: string;
143
+ }
144
+ /** Exact values parsed from the AWS role's GitHub OIDC trust conditions. */
145
+ export interface S3JournalOidcTrustConditions {
146
+ readonly audience: "sts.amazonaws.com";
147
+ readonly subject: string;
148
+ readonly repository: string;
149
+ readonly repositoryId: string;
150
+ readonly repositoryOwnerId: string;
151
+ readonly workflow: string;
152
+ readonly ref: string;
153
+ readonly environment: string;
154
+ readonly jobWorkflowRef: string;
155
+ }
156
+ export interface S3JournalAuthority {
157
+ readonly accountId: string;
158
+ readonly bucketName: string;
159
+ readonly bucketArn: string;
160
+ readonly region: string;
161
+ readonly roleArn: string;
162
+ readonly prefix: "operation-journal/v1";
163
+ readonly expectedBucketOwner: string;
164
+ readonly versioning: "Enabled";
165
+ readonly objectLock: "Enabled";
166
+ readonly retentionMode: "COMPLIANCE";
167
+ readonly retentionYears: 10;
168
+ readonly bucketOwnerEnforced: true;
169
+ readonly publicAccessBlocked: true;
170
+ readonly deleteDenied: true;
171
+ readonly multipartDenied: true;
172
+ readonly conditionalWritesEnforced: true;
173
+ readonly bucketPolicyDigest: string;
174
+ readonly rolePolicyDigest: string;
175
+ readonly oidcTrustPolicyDigest: string;
176
+ readonly oidc: S3JournalOidcClaims;
177
+ readonly oidcTrust: S3JournalOidcTrustConditions;
178
+ }
179
+ export interface S3JournalObjectVersion {
180
+ readonly key: string;
181
+ readonly versionId: string;
182
+ readonly etag: string;
183
+ readonly checksumSha256: string;
184
+ readonly bytes: Uint8Array;
185
+ readonly lastModified: string;
186
+ readonly retentionMode: "COMPLIANCE";
187
+ readonly retainUntil: string;
188
+ }
189
+ export interface S3JournalDeleteMarker {
190
+ readonly key: string;
191
+ readonly versionId: string;
192
+ }
193
+ export interface S3JournalNamespaceListing {
194
+ readonly versions: ReadonlyArray<{
195
+ readonly key: string;
196
+ readonly versionId: string;
197
+ readonly etag: string;
198
+ readonly isLatest: boolean;
199
+ }>;
200
+ readonly deleteMarkers: ReadonlyArray<S3JournalDeleteMarker>;
201
+ readonly truncated: boolean;
202
+ }
203
+ export type S3JournalPutCondition = {
204
+ readonly _tag: "IfNoneMatch";
205
+ } | {
206
+ readonly _tag: "IfMatch";
207
+ readonly etag: string;
208
+ };
209
+ export interface S3JournalPutRequest {
210
+ readonly bucketName: string;
211
+ readonly expectedBucketOwner: string;
212
+ readonly region: string;
213
+ readonly key: string;
214
+ readonly bytes: Uint8Array;
215
+ readonly checksumSha256: string;
216
+ readonly condition: S3JournalPutCondition;
217
+ }
218
+ export type S3JournalPutResult = {
219
+ readonly _tag: "Committed";
220
+ readonly versionId: string;
221
+ readonly etag: string;
222
+ readonly checksumSha256: string;
223
+ } | {
224
+ readonly _tag: "PreconditionFailed";
225
+ };
226
+ /**
227
+ * Credential acquisition and SigV4 stay outside this structural boundary.
228
+ * A live adapter must close over one already-issued, purpose-scoped session;
229
+ * callers cannot supply endpoints, profiles, or credentials per request.
230
+ */
231
+ export interface S3JournalBoundaryShape {
232
+ readonly observeAuthority: () => Effect.Effect<S3JournalAuthority, S3JournalBoundaryError>;
233
+ readonly listNamespace: (input: {
234
+ readonly bucketName: string;
235
+ readonly expectedBucketOwner: string;
236
+ readonly region: string;
237
+ readonly prefix: string;
238
+ readonly maximum: number;
239
+ }) => Effect.Effect<S3JournalNamespaceListing, S3JournalBoundaryError>;
240
+ readonly getObjectVersion: (input: {
241
+ readonly bucketName: string;
242
+ readonly expectedBucketOwner: string;
243
+ readonly region: string;
244
+ readonly key: string;
245
+ readonly versionId: string;
246
+ }) => Effect.Effect<S3JournalObjectVersion, S3JournalBoundaryError>;
247
+ readonly putEvent: (input: S3JournalPutRequest) => Effect.Effect<S3JournalPutResult, S3JournalBoundaryError>;
248
+ readonly putHead: (input: S3JournalPutRequest) => Effect.Effect<S3JournalPutResult, S3JournalBoundaryError>;
249
+ }
250
+ export {};
251
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/operation-journal/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import * as Schema from "effect/Schema";
2
+ export const journalRecordTags = [
3
+ "IntentRecorded",
4
+ "ReceiptRecorded",
5
+ "ObservationRecorded",
6
+ "TerminalRecorded",
7
+ "OutcomeUnknown"
8
+ ];
9
+ /** Fixed hashing/allocation limits for identities, payloads, and retained objects. */
10
+ export const operationJournalByteLimits = {
11
+ operationIdentity: 65_536,
12
+ payload: 1_048_576,
13
+ object: 1_500_000
14
+ };
15
+ export class JournalInputError extends Schema.TaggedErrorClass()("JournalInputError", {
16
+ reason: Schema.NonEmptyString
17
+ }) {
18
+ }
19
+ export class JournalTransitionError extends Schema.TaggedErrorClass()("JournalTransitionError", {
20
+ reason: Schema.NonEmptyString
21
+ }) {
22
+ }
23
+ export class JournalIntegrityError extends Schema.TaggedErrorClass()("JournalIntegrityError", {
24
+ reason: Schema.NonEmptyString
25
+ }) {
26
+ }
27
+ export class JournalAuthorityMismatch extends Schema.TaggedErrorClass()("JournalAuthorityMismatch", {
28
+ reason: Schema.NonEmptyString
29
+ }) {
30
+ }
31
+ export class JournalStorageUnavailable extends Schema.TaggedErrorClass()("JournalStorageUnavailable", {
32
+ reason: Schema.NonEmptyString
33
+ }) {
34
+ }
35
+ export class JournalStorageOutcomeUnknown extends Schema.TaggedErrorClass()("JournalStorageOutcomeUnknown", {
36
+ reason: Schema.NonEmptyString
37
+ }) {
38
+ }
39
+ export class JournalConflict extends Schema.TaggedErrorClass()("JournalConflict", {
40
+ reason: Schema.NonEmptyString
41
+ }) {
42
+ }
43
+ export const S3JournalRequestOperations = Schema.Literals([
44
+ "observe-authority",
45
+ "list-namespace",
46
+ "get-object-version",
47
+ "put-event",
48
+ "put-head"
49
+ ]);
50
+ export class S3JournalBoundaryError extends Schema.TaggedErrorClass()("S3JournalBoundaryError", {
51
+ operation: S3JournalRequestOperations,
52
+ commitment: Schema.Literals(["not-applicable", "not-committed", "unknown"]),
53
+ reason: Schema.NonEmptyString
54
+ }) {
55
+ }
56
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/operation-journal/model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,gBAAgB;IAChB,iBAAiB;IACjB,qBAAqB;IACrB,kBAAkB;IAClB,gBAAgB;CACR,CAAA;AAEV,sFAAsF;AACtF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,iBAAiB,EAAE,MAAM;IACzB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;CACT,CAAA;AAkFV,MAAM,OAAO,iBACX,SAAQ,MAAM,CAAC,gBAAgB,EAAqB,CAAC,mBAAmB,EAAE;IACxE,MAAM,EAAE,MAAM,CAAC,cAAc;CAC9B,CAAC;CAAG;AAEP,MAAM,OAAO,sBACX,SAAQ,MAAM,CAAC,gBAAgB,EAA0B,CAAC,wBAAwB,EAAE;IAClF,MAAM,EAAE,MAAM,CAAC,cAAc;CAC9B,CAAC;CAAG;AAEP,MAAM,OAAO,qBACX,SAAQ,MAAM,CAAC,gBAAgB,EAAyB,CAAC,uBAAuB,EAAE;IAChF,MAAM,EAAE,MAAM,CAAC,cAAc;CAC9B,CAAC;CAAG;AAEP,MAAM,OAAO,wBACX,SAAQ,MAAM,CAAC,gBAAgB,EAA4B,CAAC,0BAA0B,EAAE;IACtF,MAAM,EAAE,MAAM,CAAC,cAAc;CAC9B,CAAC;CAAG;AAEP,MAAM,OAAO,yBACX,SAAQ,MAAM,CAAC,gBAAgB,EAA6B,CAAC,2BAA2B,EAAE;IACxF,MAAM,EAAE,MAAM,CAAC,cAAc;CAC9B,CAAC;CAAG;AAEP,MAAM,OAAO,4BACX,SAAQ,MAAM,CAAC,gBAAgB,EAAgC,CAAC,8BAA8B,EAAE;IAC9F,MAAM,EAAE,MAAM,CAAC,cAAc;CAC9B,CAAC;CAAG;AAEP,MAAM,OAAO,eACX,SAAQ,MAAM,CAAC,gBAAgB,EAAmB,CAAC,iBAAiB,EAAE;IACpE,MAAM,EAAE,MAAM,CAAC,cAAc;CAC9B,CAAC;CAAG;AAcP,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,QAAQ,CAAC;IACxD,mBAAmB;IACnB,gBAAgB;IAChB,oBAAoB;IACpB,WAAW;IACX,UAAU;CACX,CAAC,CAAA;AAGF,MAAM,OAAO,sBACX,SAAQ,MAAM,CAAC,gBAAgB,EAA0B,CAAC,wBAAwB,EAAE;IAClF,SAAS,EAAE,0BAA0B;IACrC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;IAC3E,MAAM,EAAE,MAAM,CAAC,cAAc;CAC9B,CAAC;CAAG"}