@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,339 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Context from "effect/Context";
3
+ import * as Schema from "effect/Schema";
4
+ import { constants, existsSync, lstatSync, mkdirSync, openSync, readdirSync, realpathSync, renameSync, rmSync, statSync, chmodSync, closeSync, fsyncSync } from "node:fs";
5
+ import { randomUUID } from "node:crypto";
6
+ import { basename, dirname, join } from "node:path";
7
+ import { secureRead, secureWrite } from "../drivers/workspace.js";
8
+ import { digestEquals, sha256Digest, Sha256Hex } from "../model/digest.js";
9
+ import { decodePreparedRelease, encodePreparedRelease } from "./prepared.js";
10
+ import { CompletePreparedReleaseRef, makeLocalCompletePreparedReleaseRef } from "./prepared-ref.js";
11
+ export class PreparedStoreError extends Schema.TaggedErrorClass()("PreparedStoreError", { reason: Schema.String }) {
12
+ }
13
+ export class PreparedStoreProvenanceError extends Schema.TaggedErrorClass()("PreparedStoreProvenanceError", {
14
+ scheme: Schema.Literals(["local", "gha"]),
15
+ reason: Schema.String
16
+ }) {
17
+ }
18
+ export class LocalPreparedStoreProvenance extends Schema.TaggedClass()("LocalPreparedStoreProvenance", {
19
+ scheme: Schema.Literal("local"),
20
+ filesystemRoot: Schema.NonEmptyString,
21
+ operatorBoundary: Schema.NonEmptyString
22
+ }) {
23
+ }
24
+ export class GitHubActionsPreparedStoreProvenance extends Schema.TaggedClass()("GitHubActionsPreparedStoreProvenance", {
25
+ scheme: Schema.Literal("gha"),
26
+ repository: Schema.NonEmptyString,
27
+ workflowRef: Schema.NonEmptyString,
28
+ workflowSha: Schema.NonEmptyString,
29
+ runId: Schema.NonEmptyString,
30
+ attempt: Schema.NonEmptyString,
31
+ candidateCommit: Schema.NonEmptyString,
32
+ artifactName: Schema.NonEmptyString,
33
+ artifactDigest: Schema.NonEmptyString,
34
+ allowedWriter: Schema.Literal("repository-workflow")
35
+ }) {
36
+ }
37
+ export const PreparedStoreProvenance = Schema.Union([
38
+ LocalPreparedStoreProvenance,
39
+ GitHubActionsPreparedStoreProvenance
40
+ ]);
41
+ const canonicalPathEquals = (left, right) => {
42
+ try {
43
+ return realpathSync(left) === realpathSync(right);
44
+ }
45
+ catch {
46
+ return false;
47
+ }
48
+ };
49
+ /**
50
+ * GitHub artifact lookup is name-based and may span every rerun attempt in a
51
+ * workflow run. Bind the attempt as well as the content digest so an older
52
+ * prepared reference cannot be shadowed by a newer rerun's duplicate name.
53
+ */
54
+ export const githubActionsPreparedArtifactName = (attempt, digest) => `ts-release-prepared-${attempt}-${digest}`;
55
+ export const verifyPreparedStoreProvenance = Effect.fn("verifyPreparedStoreProvenance")(function* (input) {
56
+ if (input.reference.kind !== "complete" || input.bundle.manifest.kind !== "complete") {
57
+ return yield* new PreparedStoreProvenanceError({
58
+ scheme: input.reference.scheme,
59
+ reason: "Prepared store provenance verifies only complete references and bundles."
60
+ });
61
+ }
62
+ const digest = sha256Digest(encodePreparedRelease(input.bundle.manifest)).hex;
63
+ if (digest !== input.reference.digest.toString()) {
64
+ return yield* new PreparedStoreProvenanceError({
65
+ scheme: input.reference.scheme,
66
+ reason: "Prepared reference digest does not match canonical complete-bundle contents."
67
+ });
68
+ }
69
+ if (input.reference.scheme === "local") {
70
+ if (input.evidence.scheme !== "local" || input.evidence.filesystemRoot.trim().length === 0 ||
71
+ input.evidence.operatorBoundary.trim().length === 0 ||
72
+ !canonicalPathEquals(input.evidence.filesystemRoot, dirname(input.bundle.directory))) {
73
+ return yield* new PreparedStoreProvenanceError({
74
+ scheme: "local",
75
+ reason: "Local prepared bytes require an explicit filesystem/operator trust boundary."
76
+ });
77
+ }
78
+ return input.evidence;
79
+ }
80
+ if (input.evidence.scheme !== "gha") {
81
+ return yield* new PreparedStoreProvenanceError({
82
+ scheme: "gha",
83
+ reason: "Local evidence cannot be promoted into GitHub Actions trust by copying bytes or a digest."
84
+ });
85
+ }
86
+ const coordinate = `${input.reference.owner}/${input.reference.repository}`;
87
+ const mismatches = [
88
+ input.evidence.repository !== coordinate ? "repository" : undefined,
89
+ input.evidence.runId !== input.reference.runId.toString() ? "runId" : undefined,
90
+ input.evidence.attempt !== input.reference.attempt.toString() ? "attempt" : undefined,
91
+ input.evidence.candidateCommit !== input.bundle.manifest.source.commit.toString() ? "candidateCommit" : undefined,
92
+ input.evidence.artifactName !== input.reference.artifactName.toString() ? "artifactName" : undefined,
93
+ input.evidence.artifactDigest !== input.reference.digest.toString() ? "artifactDigest" : undefined,
94
+ !input.evidence.workflowRef.startsWith(`${coordinate}/.github/workflows/`) ||
95
+ !input.evidence.workflowRef.includes("@refs/") ? "workflowRef" : undefined,
96
+ !/^[a-f0-9]{40}(?:[a-f0-9]{24})?$/u.test(input.evidence.workflowSha) ? "workflowSha" : undefined,
97
+ input.reference.artifactName.toString() !== githubActionsPreparedArtifactName(input.reference.attempt.toString(), input.reference.digest.toString()) ? "immutableArtifactName" : undefined
98
+ ].filter((field) => field !== undefined);
99
+ if (mismatches.length > 0) {
100
+ return yield* new PreparedStoreProvenanceError({
101
+ scheme: "gha",
102
+ reason: `Hosted prepared-store provenance mismatched ${mismatches.join(", ")}.`
103
+ });
104
+ }
105
+ return input.evidence;
106
+ });
107
+ /**
108
+ * The bytes are already durable and verified, but the host failed to expose
109
+ * their recovery reference before publication could continue. This is a
110
+ * post-commit abort, never a preparation failure.
111
+ */
112
+ export class PreparedCommitHandoffError extends Schema.TaggedErrorClass()("PreparedCommitHandoffError", {
113
+ prepared: CompletePreparedReleaseRef,
114
+ reason: Schema.String
115
+ }) {
116
+ }
117
+ export const PreparedStoreFaultPoint = Schema.Literals([
118
+ "before-blob-write",
119
+ "after-blob-write",
120
+ "before-manifest-write",
121
+ "after-manifest-write",
122
+ "before-blob-directory-fsync",
123
+ "after-blob-directory-fsync",
124
+ "before-bundle-directory-fsync",
125
+ "after-bundle-directory-fsync",
126
+ "before-promotion",
127
+ "after-promotion",
128
+ "before-store-fsync",
129
+ "after-store-fsync",
130
+ "before-cleanup",
131
+ "after-cleanup"
132
+ ]);
133
+ const equal = (left, right) => left.length === right.length && left.every((byte, index) => byte === right[index]);
134
+ const fail = (reason) => { throw PreparedStoreError.make({ reason }); };
135
+ const causeReason = (cause) => typeof cause === "object" && cause !== null && "reason" in cause && typeof cause.reason === "string"
136
+ ? cause.reason
137
+ : cause instanceof Error
138
+ ? cause.message
139
+ : String(cause);
140
+ const canonicalDirectory = (directory) => {
141
+ if (!existsSync(directory))
142
+ mkdirSync(directory, { recursive: true, mode: 0o700 });
143
+ if (lstatSync(directory).isSymbolicLink())
144
+ fail("Prepared store root must not be a symlink.");
145
+ const real = realpathSync(directory);
146
+ if (!lstatSync(real).isDirectory())
147
+ fail("Prepared store root must be a directory.");
148
+ return real;
149
+ };
150
+ const syncDirectory = (directory) => {
151
+ const descriptor = openSync(directory, constants.O_RDONLY);
152
+ try {
153
+ fsyncSync(descriptor);
154
+ }
155
+ finally {
156
+ closeSync(descriptor);
157
+ }
158
+ };
159
+ const artifactsById = (manifest) => {
160
+ if (manifest.kind !== "complete")
161
+ fail("Prepared store accepts only a kind:'complete' publication bundle.");
162
+ const result = new Map();
163
+ for (const artifact of manifest.artifacts) {
164
+ const id = artifact.id.toString();
165
+ if (result.has(id))
166
+ fail(`Prepared manifest repeats artifact ${id}.`);
167
+ if (!digestEquals(artifact.digest, artifact.blob)) {
168
+ fail(`Prepared artifact ${id} does not carry a canonical SHA-256 blob reference.`);
169
+ }
170
+ result.set(id, artifact);
171
+ }
172
+ return result;
173
+ };
174
+ const validatePublications = (manifest, artifacts) => {
175
+ const ids = new Set();
176
+ for (const publication of manifest.publications) {
177
+ if (ids.has(publication.id.toString()))
178
+ fail(`Prepared manifest repeats publication ${publication.id}.`);
179
+ ids.add(publication.id.toString());
180
+ const references = publication._tag === "PreparedNpmPublication"
181
+ ? [publication.artifactId]
182
+ : publication._tag === "PreparedPyPiPublication"
183
+ ? publication.files.map((file) => file.artifactId)
184
+ : publication._tag === "PreparedGitHubPublication"
185
+ ? publication.assets.map((asset) => asset.artifactId)
186
+ : [publication.targetArtifactId, publication.stateArtifactId];
187
+ for (const id of references)
188
+ if (!artifacts.has(id.toString()))
189
+ fail(`Publication ${publication.id} references missing artifact ${id}.`);
190
+ if (publication._tag === "PreparedPyPiPublication")
191
+ for (const file of publication.files) {
192
+ const artifact = artifacts.get(file.artifactId.toString());
193
+ if (artifact.size !== file.size || !digestEquals(artifact.digest, file.sha256) ||
194
+ artifact.mediaType !== file.mediaType || artifact.path.toString().split("/").at(-1) !== file.filename.toString()) {
195
+ fail(`PyPI publication ${publication.id} file ${file.filename} disagrees with its prepared artifact.`);
196
+ }
197
+ }
198
+ if (publication._tag === "PreparedGitHubPublication" && publication.body !== undefined && publication.body.length === 0) {
199
+ fail(`GitHub publication ${publication.id} carries an empty body.`);
200
+ }
201
+ }
202
+ };
203
+ const readBundle = (directory) => {
204
+ if (lstatSync(directory).isSymbolicLink())
205
+ fail("Prepared bundle directory must not be a symlink.");
206
+ const real = realpathSync(directory);
207
+ const bytes = secureRead(real, "prepared-release.json").bytes;
208
+ const manifest = decodePreparedRelease(bytes);
209
+ if (manifest.kind !== "complete")
210
+ fail("Prepared store refuses every unknown or partial bundle kind.");
211
+ const manifestDigest = sha256Digest(bytes).hex;
212
+ if (basename(real) !== manifestDigest)
213
+ fail("Prepared bundle directory does not match its manifest digest.");
214
+ const entries = readdirSync(real, { withFileTypes: true });
215
+ if (entries.some((entry) => entry.name !== "prepared-release.json" && entry.name !== "blobs"))
216
+ fail("Prepared bundle contains an unexpected top-level entry.");
217
+ const blobDirectory = join(real, "blobs");
218
+ if (!existsSync(blobDirectory) || lstatSync(blobDirectory).isSymbolicLink() || !statSync(blobDirectory).isDirectory())
219
+ fail("Prepared bundle is missing its real blobs directory.");
220
+ const artifacts = artifactsById(manifest);
221
+ validatePublications(manifest, artifacts);
222
+ const expectedBlobs = new Set([...artifacts.values()].map((artifact) => artifact.blob.hex));
223
+ const actualBlobs = new Set(readdirSync(blobDirectory, { withFileTypes: true }).map((entry) => {
224
+ if (!entry.isFile() || !Schema.is(Sha256Hex)(entry.name))
225
+ fail(`Prepared blob entry ${entry.name} is invalid.`);
226
+ return entry.name;
227
+ }));
228
+ if (actualBlobs.size !== expectedBlobs.size || [...expectedBlobs].some((blob) => !actualBlobs.has(blob)))
229
+ fail("Prepared bundle blob set does not match its manifest.");
230
+ const blobs = new Map();
231
+ for (const artifact of artifacts.values()) {
232
+ const blob = secureRead(real, `blobs/${artifact.blob.hex}`).bytes;
233
+ if (blob.length !== artifact.size || !digestEquals(sha256Digest(blob), artifact.digest))
234
+ fail(`Prepared blob ${artifact.id} failed size or digest verification.`);
235
+ blobs.set(artifact.id.toString(), new Uint8Array(blob));
236
+ }
237
+ return { directory: real, manifest, blobs };
238
+ };
239
+ const atomicWrite = (directory, target, bytes) => {
240
+ const temporary = `${target}.${randomUUID()}.tmp`;
241
+ secureWrite(directory, temporary, bytes);
242
+ renameSync(join(directory, temporary), join(directory, target));
243
+ chmodSync(join(directory, target), 0o400);
244
+ };
245
+ const writeBundle = (storeDirectory, manifest, blobs, options = {}) => {
246
+ const fault = options.onFaultPoint ?? (() => undefined);
247
+ const store = canonicalDirectory(storeDirectory);
248
+ const manifestBytes = encodePreparedRelease(manifest);
249
+ if (manifest.kind !== "complete")
250
+ fail("Prepared store commits only a kind:'complete' publication bundle.");
251
+ const manifestDigest = sha256Digest(manifestBytes).hex;
252
+ const artifacts = artifactsById(manifest);
253
+ validatePublications(manifest, artifacts);
254
+ for (const artifact of artifacts.values()) {
255
+ const bytes = blobs.get(artifact.id.toString()) ?? fail(`No prepared bytes supplied for artifact ${artifact.id}.`);
256
+ if (bytes.length !== artifact.size || !digestEquals(sha256Digest(bytes), artifact.digest) || !digestEquals(artifact.blob, artifact.digest))
257
+ fail(`Prepared bytes do not match artifact ${artifact.id}.`);
258
+ }
259
+ const finalDirectory = join(store, manifestDigest);
260
+ if (existsSync(finalDirectory)) {
261
+ const existing = readBundle(finalDirectory);
262
+ if (!equal(secureRead(finalDirectory, "prepared-release.json").bytes, manifestBytes))
263
+ fail("Existing prepared bundle has a different manifest.");
264
+ return existing;
265
+ }
266
+ const temporary = join(store, `.${manifestDigest}.${randomUUID()}.tmp`);
267
+ mkdirSync(join(temporary, "blobs"), { recursive: true, mode: 0o700 });
268
+ let promoted = false;
269
+ try {
270
+ for (const artifact of artifacts.values()) {
271
+ fault("before-blob-write");
272
+ atomicWrite(join(temporary, "blobs"), artifact.blob.hex, blobs.get(artifact.id.toString()));
273
+ fault("after-blob-write");
274
+ }
275
+ fault("before-manifest-write");
276
+ atomicWrite(temporary, "prepared-release.json", manifestBytes);
277
+ fault("after-manifest-write");
278
+ fault("before-blob-directory-fsync");
279
+ syncDirectory(join(temporary, "blobs"));
280
+ fault("after-blob-directory-fsync");
281
+ fault("before-bundle-directory-fsync");
282
+ syncDirectory(temporary);
283
+ fault("after-bundle-directory-fsync");
284
+ fault("before-promotion");
285
+ renameSync(temporary, finalDirectory);
286
+ promoted = true;
287
+ fault("after-promotion");
288
+ fault("before-store-fsync");
289
+ syncDirectory(store);
290
+ fault("after-store-fsync");
291
+ }
292
+ catch (cause) {
293
+ let cleanupFailure;
294
+ if (existsSync(temporary)) {
295
+ try {
296
+ fault("before-cleanup");
297
+ rmSync(temporary, { recursive: true, force: true });
298
+ fault("after-cleanup");
299
+ }
300
+ catch (cleanupCause) {
301
+ cleanupFailure = cleanupCause;
302
+ }
303
+ }
304
+ if (!promoted && existsSync(finalDirectory)) {
305
+ const existing = readBundle(finalDirectory);
306
+ if (!equal(secureRead(finalDirectory, "prepared-release.json").bytes, manifestBytes)) {
307
+ fail("Concurrent prepared-store promotion produced a different manifest.");
308
+ }
309
+ return existing;
310
+ }
311
+ if (cleanupFailure !== undefined) {
312
+ throw PreparedStoreError.make({
313
+ reason: `Prepared-store cleanup failed after ${cause instanceof Error ? cause.message : String(cause)}: ${cleanupFailure instanceof Error ? cleanupFailure.message : String(cleanupFailure)}`
314
+ });
315
+ }
316
+ if (cause instanceof PreparedStoreError)
317
+ throw cause;
318
+ throw PreparedStoreError.make({ reason: cause instanceof Error ? cause.message : String(cause) });
319
+ }
320
+ return readBundle(finalDirectory);
321
+ };
322
+ export const storePreparedRelease = Effect.fn("storePreparedRelease")((storeDirectory, manifest, blobs, options) => Effect.try({ try: () => writeBundle(storeDirectory, manifest, blobs, options), catch: (cause) => cause instanceof PreparedStoreError ? cause : PreparedStoreError.make({ reason: causeReason(cause) })
323
+ }));
324
+ export const loadPreparedRelease = Effect.fn("loadPreparedRelease")((directory) => Effect.try({
325
+ try: () => readBundle(directory),
326
+ catch: (cause) => cause instanceof PreparedStoreError ? cause : PreparedStoreError.make({ reason: causeReason(cause) })
327
+ }));
328
+ export class PreparedReleaseStore extends Context.Service()("ts-release/PreparedReleaseStore") {
329
+ }
330
+ /** A local store resolves digest-only references against one explicit root. */
331
+ export const makeLocalPreparedReleaseStore = (storeDirectory, options) => ({
332
+ commit: (manifest, blobs) => storePreparedRelease(storeDirectory, manifest, blobs, options).pipe(Effect.flatMap((bundle) => makeLocalCompletePreparedReleaseRef(basename(bundle.directory)).pipe(Effect.map((ref) => ({ ref, bundle })), Effect.mapError((cause) => PreparedStoreError.make({ reason: cause.reason }))))),
333
+ load: (reference) => reference.scheme === "local"
334
+ ? loadPreparedRelease(join(storeDirectory, reference.digest))
335
+ : Effect.fail(PreparedStoreError.make({
336
+ reason: "A GitHub Actions prepared reference is not loadable by the local store; rerun the failed workflow publish job or dispatch its recovery workflow."
337
+ }))
338
+ });
339
+ //# sourceMappingURL=prepared-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepared-store.js","sourceRoot":"","sources":["../../src/release/prepared-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAgB,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACvL,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAuC,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACjH,OAAO,EAAE,0BAA0B,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAA;AAEnG,MAAM,OAAO,kBACX,SAAQ,MAAM,CAAC,gBAAgB,EAAsB,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;CAAG;AAE3G,MAAM,OAAO,4BACX,SAAQ,MAAM,CAAC,gBAAgB,EAAgC,CAAC,8BAA8B,EAAE;IAC9F,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEP,MAAM,OAAO,4BACX,SAAQ,MAAM,CAAC,WAAW,EAAgC,CAAC,8BAA8B,EAAE;IACzF,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,gBAAgB,EAAE,MAAM,CAAC,cAAc;CACxC,CAAC;CAAG;AAEP,MAAM,OAAO,oCACX,SAAQ,MAAM,CAAC,WAAW,EAAwC,CAAC,sCAAsC,EAAE;IACzG,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC,cAAc;IACjC,WAAW,EAAE,MAAM,CAAC,cAAc;IAClC,WAAW,EAAE,MAAM,CAAC,cAAc;IAClC,KAAK,EAAE,MAAM,CAAC,cAAc;IAC5B,OAAO,EAAE,MAAM,CAAC,cAAc;IAC9B,eAAe,EAAE,MAAM,CAAC,cAAc;IACtC,YAAY,EAAE,MAAM,CAAC,cAAc;IACnC,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC;CACrD,CAAC;CAAG;AAEP,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,KAAK,CAAC;IAClD,4BAA4B;IAC5B,oCAAoC;CACrC,CAAC,CAAA;AAGF,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,KAAa,EAAW,EAAE;IACnE,IAAI,CAAC;QAAC,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAA;IAAC,CAAC;AAClF,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,OAAe,EAAE,MAAc,EAAU,EAAE,CAC3F,uBAAuB,OAAO,IAAI,MAAM,EAAE,CAAA;AAE5C,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC,EAAE,CAAC,+BAA+B,CAAC,CAAC,QAAQ,CAAC,EAAC,KAIjG;IACC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACrF,OAAO,KAAK,CAAC,CAAC,IAAI,4BAA4B,CAAC;YAC7C,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;YAC9B,MAAM,EAAE,0EAA0E;SACnF,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAA;IAC7E,IAAI,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC,CAAC,IAAI,4BAA4B,CAAC;YAC7C,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;YAC9B,MAAM,EAAE,8EAA8E;SACvF,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YACtF,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YACnD,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACzF,OAAO,KAAK,CAAC,CAAC,IAAI,4BAA4B,CAAC;gBAC7C,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,8EAA8E;aACvF,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,QAAQ,CAAA;IACvB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC,CAAC,IAAI,4BAA4B,CAAC;YAC7C,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,2FAA2F;SACpG,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;IAC3E,MAAM,UAAU,GAAG;QACjB,KAAK,CAAC,QAAQ,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QACnE,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QAC/E,KAAK,CAAC,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACrF,KAAK,CAAC,QAAQ,CAAC,eAAe,KAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;QACjH,KAAK,CAAC,QAAQ,CAAC,YAAY,KAAK,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;QACpG,KAAK,CAAC,QAAQ,CAAC,cAAc,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;QAClG,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,UAAU,qBAAqB,CAAC;YACxE,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;QAC5E,CAAC,kCAAkC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;QAChG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,iCAAiC,CAC3E,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAClC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAClC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS;KACxC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;IACzD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,CAAC,IAAI,4BAA4B,CAAC;YAC7C,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,+CAA+C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SAChF,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,QAAQ,CAAA;AACvB,CAAC,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,OAAO,0BACX,SAAQ,MAAM,CAAC,gBAAgB,EAA8B,CAAC,4BAA4B,EAAE;IAC1F,QAAQ,EAAE,0BAA0B;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEP,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,QAAQ,CAAC;IACrD,mBAAmB;IACnB,kBAAkB;IAClB,uBAAuB;IACvB,sBAAsB;IACtB,6BAA6B;IAC7B,4BAA4B;IAC5B,+BAA+B;IAC/B,8BAA8B;IAC9B,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;IACpB,mBAAmB;IACnB,gBAAgB;IAChB,eAAe;CAChB,CAAC,CAAA;AAQF,MAAM,KAAK,GAAG,CAAC,IAAgB,EAAE,KAAiB,EAAW,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AAClJ,MAAM,IAAI,GAAG,CAAC,MAAc,EAAS,EAAE,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA,CAAC,CAAC,CAAA;AACrF,MAAM,WAAW,GAAG,CAAC,KAAc,EAAU,EAAE,CAC7C,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;IAClG,CAAC,CAAC,KAAK,CAAC,MAAM;IACd,CAAC,CAAC,KAAK,YAAY,KAAK;QACxB,CAAC,CAAC,KAAK,CAAC,OAAO;QACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACnB,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAU,EAAE;IACvD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAClF,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;QAAE,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAC7F,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;QAAE,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACpF,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AACD,MAAM,aAAa,GAAG,CAAC,SAAiB,EAAQ,EAAE;IAChD,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC1D,IAAI,CAAC;QAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IAAC,CAAC;YAAS,CAAC;QAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IAAC,CAAC;AACjE,CAAC,CAAA;AACD,MAAM,aAAa,GAAG,CAAC,QAA2B,EAAiC,EAAE;IACnF,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;QAAE,IAAI,CAAC,mEAAmE,CAAC,CAAA;IAC3G,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAA;IAClD,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAA;QACjC,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,IAAI,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAA;QACrE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,qBAAqB,EAAE,qDAAqD,CAAC,CAAA;QACpF,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AACD,MAAM,oBAAoB,GAAG,CAAC,QAA2B,EAAE,SAAwC,EAAQ,EAAE;IAC3G,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAA;IAC7B,KAAK,MAAM,WAAW,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAChD,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;YAAE,IAAI,CAAC,yCAAyC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAA;QACxG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;QAClC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,KAAK,wBAAwB;YAC9D,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC;YAC1B,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,yBAAyB;gBAChD,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;gBAClD,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,2BAA2B;oBAClD,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;oBACrD,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,eAAe,CAAC,CAAA;QAC/D,KAAK,MAAM,EAAE,IAAI,UAAU;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAAE,IAAI,CAAC,eAAe,WAAW,CAAC,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAA;QACxI,IAAI,WAAW,CAAC,IAAI,KAAK,yBAAyB;YAAE,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;gBACzF,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAE,CAAA;gBAC3D,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;oBAC1E,QAAQ,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACrH,IAAI,CAAC,oBAAoB,WAAW,CAAC,EAAE,SAAS,IAAI,CAAC,QAAQ,wCAAwC,CAAC,CAAA;gBACxG,CAAC;YACH,CAAC;QACD,IAAI,WAAW,CAAC,IAAI,KAAK,2BAA2B,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxH,IAAI,CAAC,sBAAsB,WAAW,CAAC,EAAE,yBAAyB,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAaD,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAkB,EAAE;IACvD,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;QAAE,IAAI,CAAC,kDAAkD,CAAC,CAAA;IACnG,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC,KAAK,CAAA;IAC7D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;IAC7C,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;QAAE,IAAI,CAAC,8DAA8D,CAAC,CAAA;IACtG,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAA;IAC9C,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,cAAc;QAAE,IAAI,CAAC,+DAA+D,CAAC,CAAA;IAC5G,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1D,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,uBAAuB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;QAAE,IAAI,CAAC,yDAAyD,CAAC,CAAA;IAC9J,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACzC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE;QAAE,IAAI,CAAC,sDAAsD,CAAC,CAAA;IACnL,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACzC,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IACzC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3F,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5F,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,uBAAuB,KAAK,CAAC,IAAI,cAAc,CAAC,CAAA;QAC/G,OAAO,KAAK,CAAC,IAAI,CAAA;IACnB,CAAC,CAAC,CAAC,CAAA;IACH,IAAI,WAAW,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAAE,IAAI,CAAC,uDAAuD,CAAC,CAAA;IACvK,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAA;IAC3C,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAA;QACjE,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,iBAAiB,QAAQ,CAAC,EAAE,sCAAsC,CAAC,CAAA;QACjK,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAC7C,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAE,KAAiB,EAAQ,EAAE;IACjF,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,UAAU,EAAE,MAAM,CAAA;IACjD,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;IACxC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/D,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAClB,cAAsB,EACtB,QAA2B,EAC3B,KAAsC,EACtC,UAAgC,EAAE,EAClB,EAAE;IAClB,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IACvD,MAAM,KAAK,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAA;IAChD,MAAM,aAAa,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;IACrD,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;QAAE,IAAI,CAAC,mEAAmE,CAAC,CAAA;IAC3G,MAAM,cAAc,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC,GAAG,CAAA;IACtD,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACzC,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,2CAA2C,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;QAClH,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,wCAAwC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;IAC1M,CAAC;IACD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;IAClD,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;QAC3C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC;YAAE,IAAI,CAAC,oDAAoD,CAAC,CAAA;QAChJ,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,cAAc,IAAI,UAAU,EAAE,MAAM,CAAC,CAAA;IACvE,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACrE,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,CAAC;QACH,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,KAAK,CAAC,mBAAmB,CAAC,CAAA;YAC1B,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAE,CAAC,CAAA;YAC5F,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAC3B,CAAC;QACD,KAAK,CAAC,uBAAuB,CAAC,CAAA;QAC9B,WAAW,CAAC,SAAS,EAAE,uBAAuB,EAAE,aAAa,CAAC,CAAA;QAC9D,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAC7B,KAAK,CAAC,6BAA6B,CAAC,CAAA;QACpC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;QACvC,KAAK,CAAC,4BAA4B,CAAC,CAAA;QACnC,KAAK,CAAC,+BAA+B,CAAC,CAAA;QACtC,aAAa,CAAC,SAAS,CAAC,CAAA;QACxB,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACrC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACzB,UAAU,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;QACrC,QAAQ,GAAG,IAAI,CAAA;QACf,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACxB,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAC3B,aAAa,CAAC,KAAK,CAAC,CAAA;QACpB,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,cAAuB,CAAA;QAC3B,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,KAAK,CAAC,gBAAgB,CAAC,CAAA;gBACvB,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;gBACnD,KAAK,CAAC,eAAe,CAAC,CAAA;YACxB,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,cAAc,GAAG,YAAY,CAAA;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;YAC3C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC;gBACrF,IAAI,CAAC,oEAAoE,CAAC,CAAA;YAC5E,CAAC;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,kBAAkB,CAAC,IAAI,CAAC;gBAC5B,MAAM,EAAE,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,cAAc,YAAY,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;aAC9L,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,KAAK,YAAY,kBAAkB;YAAE,MAAM,KAAK,CAAA;QACpD,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACnG,CAAC;IACD,OAAO,UAAU,CAAC,cAAc,CAAC,CAAA;AACnC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CACpE,cAAsB,EACtB,QAA2B,EAC3B,KAAsC,EACtC,OAA8B,EAC9B,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACnG,KAAK,YAAY,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;CACtG,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;IACpG,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;IAChC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;CACxH,CAAC,CAAC,CAAA;AAWH,MAAM,OAAO,oBACX,SAAQ,OAAO,CAAC,OAAO,EAAmD,CAAC,iCAAiC,CAAC;CAAG;AAElH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,cAAsB,EACtB,OAA8B,EACH,EAAE,CAAC,CAAC;IAC/B,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAC9F,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,mCAAmC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAC7F,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,EACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAC9E,CAAC,CACH;IACD,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,OAAO;QAC/C,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YACpC,MAAM,EAAE,kJAAkJ;SAC3J,CAAC,CAAC;CACN,CAAC,CAAA"}
@@ -0,0 +1,172 @@
1
+ import * as Schema from "effect/Schema";
2
+ import { ArtifactCollectionContract, ArtifactCollectionMember } from "../model/artifact-collection.js";
3
+ import { Sha256Digest } from "../model/digest.js";
4
+ import { PreparedCatalogRenderer } from "../model/catalog.js";
5
+ import { ExplicitInputSnapshot, StagingSnapshot } from "./context.js";
6
+ import { PublicationAuthorityIntent } from "./graph.js";
7
+ declare const PreparedSource_base: Schema.Class<PreparedSource, Schema.Struct<{
8
+ readonly commit: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
9
+ readonly tree: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
10
+ readonly clean: Schema.Literal<true>;
11
+ readonly packageManifestPath: Schema.brand<Schema.String, "SafeRelativePath">;
12
+ readonly packageManifestDigest: typeof Sha256Digest;
13
+ readonly materialized: typeof StagingSnapshot;
14
+ }>, {}>;
15
+ export declare class PreparedSource extends PreparedSource_base {
16
+ }
17
+ declare const PreparedProject_base: Schema.Class<PreparedProject, Schema.Struct<{
18
+ readonly name: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
19
+ readonly packageName: Schema.optionalKey<Schema.brand<Schema.NonEmptyString, "NonEmptyName">>;
20
+ readonly version: Schema.brand<Schema.NonEmptyString, "Version">;
21
+ readonly tag: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
22
+ readonly repository: Schema.optionalKey<Schema.NonEmptyString>;
23
+ }>, {}>;
24
+ export declare class PreparedProject extends PreparedProject_base {
25
+ }
26
+ declare const PreparedArtifact_base: Schema.Class<PreparedArtifact, Schema.Struct<{
27
+ readonly id: Schema.brand<Schema.NonEmptyString, "OutputId">;
28
+ readonly path: Schema.brand<Schema.String, "SafeRelativePath">;
29
+ readonly kind: Schema.Literals<readonly ["file", "executable", "archive", "package", "digest"]>;
30
+ readonly size: Schema.Number;
31
+ readonly digest: typeof Sha256Digest;
32
+ readonly blob: typeof Sha256Digest;
33
+ readonly mediaType: Schema.optionalKey<Schema.NonEmptyString>;
34
+ readonly producer: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
35
+ readonly inputBasis: typeof Sha256Digest;
36
+ }>, {}>;
37
+ export declare class PreparedArtifact extends PreparedArtifact_base {
38
+ }
39
+ declare const PreparedArtifactCollection_base: Schema.Class<PreparedArtifactCollection, Schema.Struct<{
40
+ readonly contract: typeof ArtifactCollectionContract;
41
+ readonly members: Schema.$Array<typeof ArtifactCollectionMember>;
42
+ }>, {}>;
43
+ /** Durable collection provenance; the graph itself remains ephemeral. */
44
+ export declare class PreparedArtifactCollection extends PreparedArtifactCollection_base {
45
+ }
46
+ declare const PreparedExecutionInputs_base: Schema.Class<PreparedExecutionInputs, Schema.Struct<{
47
+ readonly environment: Schema.Literal<"closed">;
48
+ readonly network: Schema.Literal<"prohibited">;
49
+ readonly timezone: Schema.Literal<"UTC">;
50
+ readonly locale: Schema.Literal<"C">;
51
+ readonly clock: Schema.Literal<"source-date-epoch=0;host-clock-not-isolated">;
52
+ readonly randomness: Schema.Literal<"host-randomness-not-isolated">;
53
+ readonly platform: Schema.NonEmptyString;
54
+ readonly runtime: Schema.NonEmptyString;
55
+ readonly networkIsolation: Schema.NonEmptyString;
56
+ readonly bunCompileRuntimes: Schema.NonEmptyString;
57
+ readonly npmPack: Schema.NonEmptyString;
58
+ readonly releaseGraph: typeof Sha256Digest;
59
+ readonly preparer: Schema.NonEmptyString;
60
+ }>, {}>;
61
+ export declare class PreparedExecutionInputs extends PreparedExecutionInputs_base {
62
+ }
63
+ declare const PreparedProvenance_base: Schema.Class<PreparedProvenance, Schema.Struct<{
64
+ readonly source: typeof StagingSnapshot;
65
+ readonly externalInputs: Schema.$Array<typeof ExplicitInputSnapshot>;
66
+ readonly execution: typeof PreparedExecutionInputs;
67
+ readonly inputBasis: typeof Sha256Digest;
68
+ readonly reproducibility: Schema.Literal<"not-asserted">;
69
+ }>, {}>;
70
+ export declare class PreparedProvenance extends PreparedProvenance_base {
71
+ }
72
+ declare const PreparedNpmPublication_base: Schema.Class<PreparedNpmPublication, Schema.TaggedStruct<"PreparedNpmPublication", {
73
+ readonly id: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
74
+ readonly artifactId: Schema.brand<Schema.NonEmptyString, "OutputId">;
75
+ readonly packageName: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
76
+ readonly version: Schema.brand<Schema.NonEmptyString, "Version">;
77
+ readonly registryUrl: Schema.brand<Schema.NonEmptyString, "CanonicalNpmRegistryEndpoint">;
78
+ readonly distTag: Schema.brand<Schema.NonEmptyString, "NpmDistTag">;
79
+ readonly access: Schema.Literals<readonly ["public", "restricted"]>;
80
+ readonly authentication: Schema.Union<readonly [typeof import("../recipes/config.js").NpmTokenAuthentication, typeof import("../recipes/config.js").NpmTrustedPublishingAuthentication]>;
81
+ readonly provenance: Schema.Literals<readonly ["automatic", "required", "disabled"]>;
82
+ readonly authority: typeof PublicationAuthorityIntent;
83
+ }>, {}>;
84
+ export declare class PreparedNpmPublication extends PreparedNpmPublication_base {
85
+ }
86
+ declare const PreparedGitHubAsset_base: Schema.Class<PreparedGitHubAsset, Schema.Struct<{
87
+ readonly artifactId: Schema.brand<Schema.NonEmptyString, "OutputId">;
88
+ readonly name: Schema.NonEmptyString;
89
+ readonly mediaType: Schema.NonEmptyString;
90
+ }>, {}>;
91
+ export declare class PreparedGitHubAsset extends PreparedGitHubAsset_base {
92
+ }
93
+ declare const PreparedGitHubPublication_base: Schema.Class<PreparedGitHubPublication, Schema.TaggedStruct<"PreparedGitHubPublication", {
94
+ readonly id: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
95
+ readonly repository: Schema.NonEmptyString;
96
+ readonly tag: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
97
+ readonly title: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
98
+ readonly draft: Schema.Boolean;
99
+ readonly prerelease: Schema.Boolean;
100
+ readonly targetCommit: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
101
+ readonly body: Schema.optionalKey<Schema.String>;
102
+ readonly assets: Schema.$Array<typeof PreparedGitHubAsset>;
103
+ readonly authority: typeof PublicationAuthorityIntent;
104
+ }>, {}>;
105
+ export declare class PreparedGitHubPublication extends PreparedGitHubPublication_base {
106
+ }
107
+ declare const PreparedPyPiFile_base: Schema.Class<PreparedPyPiFile, Schema.Struct<{
108
+ readonly artifactId: Schema.brand<Schema.NonEmptyString, "OutputId">;
109
+ readonly filename: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
110
+ readonly size: Schema.Number;
111
+ readonly sha256: typeof Sha256Digest;
112
+ readonly mediaType: Schema.Literals<readonly ["application/zip", "application/gzip"]>;
113
+ readonly distribution: Schema.Union<readonly [typeof import("../model/python-distribution.js").WheelDistribution, typeof import("../model/python-distribution.js").SourceDistribution]>;
114
+ readonly authority: typeof PublicationAuthorityIntent;
115
+ }>, {}>;
116
+ export declare class PreparedPyPiFile extends PreparedPyPiFile_base {
117
+ }
118
+ declare const PreparedPyPiPublication_base: Schema.Class<PreparedPyPiPublication, Schema.TaggedStruct<"PreparedPyPiPublication", {
119
+ readonly id: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
120
+ readonly project: Schema.brand<Schema.NonEmptyString, "PyPiProjectName">;
121
+ readonly version: Schema.brand<Schema.NonEmptyString, "Version">;
122
+ readonly repository: Schema.Literals<readonly ["pypi", "testpypi"]>;
123
+ readonly simpleBaseUrl: Schema.NonEmptyString;
124
+ readonly projectUrl: Schema.NonEmptyString;
125
+ readonly uploadUrl: Schema.NonEmptyString;
126
+ readonly authentication: Schema.Union<readonly [typeof import("../recipes/config.js").PyPiTokenAuthentication, typeof import("../recipes/config.js").PyPiExternalTrustedPublishingAuthentication]>;
127
+ readonly files: Schema.NonEmptyArray<typeof PreparedPyPiFile>;
128
+ }>, {}>;
129
+ export declare class PreparedPyPiPublication extends PreparedPyPiPublication_base {
130
+ }
131
+ declare const PreparedCatalogPublication_base: Schema.Class<PreparedCatalogPublication, Schema.TaggedStruct<"PreparedCatalogPublication", {
132
+ readonly id: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
133
+ readonly catalogId: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
134
+ readonly targetArtifactId: Schema.brand<Schema.NonEmptyString, "OutputId">;
135
+ readonly stateArtifactId: Schema.brand<Schema.NonEmptyString, "OutputId">;
136
+ readonly targetDigest: typeof Sha256Digest;
137
+ readonly stateDigest: typeof Sha256Digest;
138
+ readonly repository: Schema.brand<Schema.NonEmptyString, "GitHubRepositoryCoordinate">;
139
+ readonly branch: Schema.brand<Schema.NonEmptyString, "GitBranchName">;
140
+ readonly targetPath: Schema.brand<Schema.brand<Schema.String, "SafeRelativePath">, "CatalogRepositoryPath">;
141
+ readonly statePath: Schema.brand<Schema.brand<Schema.String, "SafeRelativePath">, "CatalogRepositoryPath">;
142
+ readonly version: Schema.brand<Schema.NonEmptyString, "Version">;
143
+ readonly sourceRepository: Schema.brand<Schema.NonEmptyString, "GitHubRepositoryCoordinate">;
144
+ readonly sourceTag: Schema.brand<Schema.NonEmptyString, "NonEmptyName">;
145
+ readonly renderer: typeof PreparedCatalogRenderer;
146
+ readonly authority: typeof PublicationAuthorityIntent;
147
+ }>, {}>;
148
+ export declare class PreparedCatalogPublication extends PreparedCatalogPublication_base {
149
+ }
150
+ export declare const PreparedPublication: Schema.Union<readonly [typeof PreparedNpmPublication, typeof PreparedPyPiPublication, typeof PreparedGitHubPublication, typeof PreparedCatalogPublication]>;
151
+ export type PreparedPublication = typeof PreparedPublication.Type;
152
+ declare const PreparedReleaseV2_base: Schema.Class<PreparedReleaseV2, Schema.Struct<{
153
+ readonly kind: Schema.Literal<"complete">;
154
+ readonly schemaVersion: Schema.Literal<"prepared-release/v2">;
155
+ readonly source: typeof PreparedSource;
156
+ readonly project: typeof PreparedProject;
157
+ readonly provenance: typeof PreparedProvenance;
158
+ readonly artifacts: Schema.$Array<typeof PreparedArtifact>;
159
+ readonly collections: Schema.$Array<typeof PreparedArtifactCollection>;
160
+ readonly publications: Schema.$Array<Schema.Union<readonly [typeof PreparedNpmPublication, typeof PreparedPyPiPublication, typeof PreparedGitHubPublication, typeof PreparedCatalogPublication]>>;
161
+ }>, {}>;
162
+ export declare class PreparedReleaseV2 extends PreparedReleaseV2_base {
163
+ }
164
+ declare const PreparedManifestError_base: Schema.Class<PreparedManifestError, Schema.TaggedStruct<"PreparedManifestError", {
165
+ readonly reason: Schema.String;
166
+ }>, import("effect/Cause").YieldableError>;
167
+ export declare class PreparedManifestError extends PreparedManifestError_base {
168
+ }
169
+ export declare const encodePreparedRelease: (manifest: PreparedReleaseV2) => Uint8Array;
170
+ export declare const decodePreparedRelease: (bytes: Uint8Array) => PreparedReleaseV2;
171
+ export {};
172
+ //# sourceMappingURL=prepared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepared.d.ts","sourceRoot":"","sources":["../../src/release/prepared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EAMzB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAIL,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAWrE,OAAO,EACL,0BAA0B,EAK3B,MAAM,YAAY,CAAA;;;;;;;;;AAKnB,qBAAa,cAAe,SAAQ,mBAIlC;CAAG;;;;;;;;AAEL,qBAAa,eAAgB,SAAQ,oBAGnC;CAAG;;;;;;;;;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAOpC;CAAG;;;;;AAEL,yEAAyE;AACzE,qBAAa,0BACX,SAAQ,+BAGN;CAAG;;;;;;;;;;;;;;;;AAEP,qBAAa,uBAAwB,SAAQ,4BAc3C;CAAG;;;;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAMtC;CAAG;;;;;;;;;;;;;AAEL,qBAAa,sBAAuB,SAAQ,2BAW1C;CAAG;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAEvC;CAAG;;;;;;;;;;;;;AAEL,qBAAa,yBAA0B,SAAQ,8BAI7C;CAAG;;;;;;;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBASpC;CAAG;;;;;;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAU3C;CAAG;;;;;;;;;;;;;;;;;;AAEL,qBAAa,0BACX,SAAQ,+BAgBN;CAAG;AAKP,eAAO,MAAM,mBAAmB,6JAQ9B,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;;;;;;;;;;;AAEjE,qBAAa,iBAAkB,SAAQ,sBAOrC;CAAG;;;;AAEL,qBAAa,qBACX,SAAQ,0BAEN;CAAG;AAgGP,eAAO,MAAM,qBAAqB,GAAI,UAAU,iBAAiB,KAAG,UAGnE,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,OAAO,UAAU,KAAG,iBAazD,CAAA"}