@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,212 @@
1
+ import * as Effect from "effect/Effect";
2
+ import type { PreparedBundle } from "../release/prepared-store.js";
3
+ import { type ReleaseSubject } from "./coordinator.js";
4
+ import { AuthorizedMutationHttp, HttpAuthorizer } from "./http.js";
5
+ import { CertifiedPublisherSpawn, NpmUserConfigResource } from "./publisher.js";
6
+ import { type CustomProviderAdapter } from "../extensions/provider-adapter.js";
7
+ export { installedPublicationProfiles } from "./profiles.js";
8
+ /**
9
+ * Construct provider subjects only after the caller has loaded and verified
10
+ * the complete prepared bundle. The host authorizer is captured as an opaque
11
+ * sink; transports and credential values never enter the subject contract.
12
+ */
13
+ export declare const subjectsForPreparedRelease: (bundle: PreparedBundle, adapters?: readonly CustomProviderAdapter[] | undefined) => Effect.Effect<readonly ReleaseSubject[], never, AuthorizedMutationHttp | HttpAuthorizer | NpmUserConfigResource | CertifiedPublisherSpawn>;
14
+ /** Remote, read-only observation through the same provider subjects as publish. */
15
+ export declare const observePreparedRelease: (bundle: PreparedBundle, adapters?: readonly CustomProviderAdapter[] | undefined) => Effect.Effect<{
16
+ readonly subjects: readonly [import("./report.js").ObservedSubject, ...import("./report.js").ObservedSubject[]];
17
+ readonly status: "equivalent" | "different" | "inconclusive";
18
+ }, import("./coordinator.js").ReleaseCoordinatorConstructionError, import("./authority.js").CredentialProvider | AuthorizedMutationHttp | HttpAuthorizer | NpmUserConfigResource | CertifiedPublisherSpawn>;
19
+ /** Dependency-ordered conservative publication through the shared coordinator. */
20
+ export declare const publishPreparedRelease: (bundle: PreparedBundle, adapters?: readonly CustomProviderAdapter[] | undefined) => Effect.Effect<{
21
+ readonly subjects: readonly [{
22
+ readonly _tag: "NotReached";
23
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
24
+ readonly reason: import("./report.js").DependencyBlocked | import("./report.js").RunAborted;
25
+ } | {
26
+ readonly _tag: "AlreadyEquivalent";
27
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
28
+ readonly observationAuthorities: readonly {
29
+ readonly _tag: "AuthorityAcquired";
30
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
31
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
32
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
33
+ readonly requestedPurpose: "observe" | "publish" | "correct";
34
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
35
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
36
+ }[];
37
+ readonly observations: readonly [import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation, ...(import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation)[]];
38
+ } | {
39
+ readonly _tag: "ConvergedAfterMutation";
40
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
41
+ readonly observationAuthorities: readonly {
42
+ readonly _tag: "AuthorityAcquired";
43
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
44
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
45
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
46
+ readonly requestedPurpose: "observe" | "publish" | "correct";
47
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
48
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
49
+ }[];
50
+ readonly preObservations: readonly [import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation, ...(import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation)[]];
51
+ readonly decision: import("./report.js").NeedsMutation | import("./report.js").ProviderAuthorizedCreate;
52
+ readonly authority: {
53
+ readonly _tag: "AuthorityAcquired";
54
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
55
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
56
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
57
+ readonly requestedPurpose: "observe" | "publish" | "correct";
58
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
59
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
60
+ };
61
+ readonly attempt: import("./report.js").RejectedByProvider | import("./report.js").Applied | import("./report.js").OutcomeUnknown;
62
+ readonly postObservations: readonly [import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation, ...(import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation)[]];
63
+ } | {
64
+ readonly _tag: "BlockedSubject";
65
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
66
+ readonly observationAuthorities: readonly {
67
+ readonly _tag: "AuthorityAcquired";
68
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
69
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
70
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
71
+ readonly requestedPurpose: "observe" | "publish" | "correct";
72
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
73
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
74
+ }[];
75
+ readonly observations: readonly [import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation, ...(import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation)[]];
76
+ readonly cause: import("./report.js").Conflict | import("./report.js").ProviderBlocked | import("./report.js").RejectedBeforeDispatch | {
77
+ readonly _tag: "AuthorityAcquiredButMutationNotDispatched";
78
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
79
+ readonly authority: {
80
+ readonly _tag: "AuthorityAcquired";
81
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
82
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
83
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
84
+ readonly requestedPurpose: "observe" | "publish" | "correct";
85
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
86
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
87
+ };
88
+ readonly attempt: import("./report.js").RejectedBeforeDispatch;
89
+ } | import("./report.js").ConclusiveProviderRejection;
90
+ } | {
91
+ readonly _tag: "UncertainSubject";
92
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
93
+ readonly observationAuthorities: readonly {
94
+ readonly _tag: "AuthorityAcquired";
95
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
96
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
97
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
98
+ readonly requestedPurpose: "observe" | "publish" | "correct";
99
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
100
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
101
+ }[];
102
+ readonly observations: readonly [import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation, ...(import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation)[]];
103
+ readonly authority: {
104
+ readonly _tag: "AuthorityAcquired";
105
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
106
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
107
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
108
+ readonly requestedPurpose: "observe" | "publish" | "correct";
109
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
110
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
111
+ };
112
+ readonly attempt: import("./report.js").Started | import("./report.js").RejectedByProvider | import("./report.js").Applied | import("./report.js").OutcomeUnknown;
113
+ readonly trace: readonly [import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation, ...(import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation)[]];
114
+ readonly decision?: import("./report.js").NeedsMutation | import("./report.js").ProviderAuthorizedCreate | import("./report.js").ProviderAlreadyEquivalent | import("./report.js").Conflict | import("./report.js").ProviderBlocked;
115
+ }, ...({
116
+ readonly _tag: "NotReached";
117
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
118
+ readonly reason: import("./report.js").DependencyBlocked | import("./report.js").RunAborted;
119
+ } | {
120
+ readonly _tag: "AlreadyEquivalent";
121
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
122
+ readonly observationAuthorities: readonly {
123
+ readonly _tag: "AuthorityAcquired";
124
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
125
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
126
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
127
+ readonly requestedPurpose: "observe" | "publish" | "correct";
128
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
129
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
130
+ }[];
131
+ readonly observations: readonly [import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation, ...(import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation)[]];
132
+ } | {
133
+ readonly _tag: "ConvergedAfterMutation";
134
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
135
+ readonly observationAuthorities: readonly {
136
+ readonly _tag: "AuthorityAcquired";
137
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
138
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
139
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
140
+ readonly requestedPurpose: "observe" | "publish" | "correct";
141
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
142
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
143
+ }[];
144
+ readonly preObservations: readonly [import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation, ...(import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation)[]];
145
+ readonly decision: import("./report.js").NeedsMutation | import("./report.js").ProviderAuthorizedCreate;
146
+ readonly authority: {
147
+ readonly _tag: "AuthorityAcquired";
148
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
149
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
150
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
151
+ readonly requestedPurpose: "observe" | "publish" | "correct";
152
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
153
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
154
+ };
155
+ readonly attempt: import("./report.js").RejectedByProvider | import("./report.js").Applied | import("./report.js").OutcomeUnknown;
156
+ readonly postObservations: readonly [import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation, ...(import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation)[]];
157
+ } | {
158
+ readonly _tag: "BlockedSubject";
159
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
160
+ readonly observationAuthorities: readonly {
161
+ readonly _tag: "AuthorityAcquired";
162
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
163
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
164
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
165
+ readonly requestedPurpose: "observe" | "publish" | "correct";
166
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
167
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
168
+ }[];
169
+ readonly observations: readonly [import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation, ...(import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation)[]];
170
+ readonly cause: import("./report.js").Conflict | import("./report.js").ProviderBlocked | import("./report.js").RejectedBeforeDispatch | {
171
+ readonly _tag: "AuthorityAcquiredButMutationNotDispatched";
172
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
173
+ readonly authority: {
174
+ readonly _tag: "AuthorityAcquired";
175
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
176
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
177
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
178
+ readonly requestedPurpose: "observe" | "publish" | "correct";
179
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
180
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
181
+ };
182
+ readonly attempt: import("./report.js").RejectedBeforeDispatch;
183
+ } | import("./report.js").ConclusiveProviderRejection;
184
+ } | {
185
+ readonly _tag: "UncertainSubject";
186
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
187
+ readonly observationAuthorities: readonly {
188
+ readonly _tag: "AuthorityAcquired";
189
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
190
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
191
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
192
+ readonly requestedPurpose: "observe" | "publish" | "correct";
193
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
194
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
195
+ }[];
196
+ readonly observations: readonly [import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation, ...(import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation)[]];
197
+ readonly authority: {
198
+ readonly _tag: "AuthorityAcquired";
199
+ readonly subject: string & import("effect/Brand").Brand<"SubjectId">;
200
+ readonly provider: string & import("effect/Brand").Brand<"ProviderId">;
201
+ readonly audience: string & import("effect/Brand").Brand<"CanonicalAudience">;
202
+ readonly requestedPurpose: "observe" | "publish" | "correct";
203
+ readonly grantKind: "AnonymousAccess" | "ScopedSecret" | "WorkloadIdentity";
204
+ readonly purposes: readonly ["observe" | "publish" | "correct", ...("observe" | "publish" | "correct")[]];
205
+ };
206
+ readonly attempt: import("./report.js").Started | import("./report.js").RejectedByProvider | import("./report.js").Applied | import("./report.js").OutcomeUnknown;
207
+ readonly trace: readonly [import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation, ...(import("./report.js").PresentEquivalent | import("./report.js").PresentDifferent | import("./report.js").AuthoritativelyAbsent | import("./report.js").VisibilityPending | import("./report.js").InconclusiveObservation)[]];
208
+ readonly decision?: import("./report.js").NeedsMutation | import("./report.js").ProviderAuthorizedCreate | import("./report.js").ProviderAlreadyEquivalent | import("./report.js").Conflict | import("./report.js").ProviderBlocked;
209
+ })[]];
210
+ readonly status: "complete" | "blocked" | "uncertain";
211
+ }, import("./coordinator.js").ReleaseCoordinatorConstructionError, import("./authority.js").CredentialProvider | AuthorizedMutationHttp | HttpAuthorizer | NpmUserConfigResource | CertifiedPublisherSpawn>;
212
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/publication/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAUvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAElE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,gBAAgB,CAAA;AASvB,OAAO,EAA0B,KAAK,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACtG,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAA;AAkB5D;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,iOA2DrC,CAAA;AAEF,mFAAmF;AACnF,eAAO,MAAM,sBAAsB;;;2MAMjC,CAAA;AAEF,kFAAkF;AAClF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2MAMjC,CAAA"}
@@ -0,0 +1,83 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Option from "effect/Option";
3
+ import { SubjectId } from "../model/authority.js";
4
+ import { githubPublicationCapability, catalogPublicationCapability, npmPublicationCapability, pyPiPublicationCapability } from "../capabilities/registry.js";
5
+ import { encodePreparedRelease } from "../release/prepared.js";
6
+ import { sha256 } from "../drivers/utils.js";
7
+ import { observeReleaseSubjects, publishReleaseSubjects } from "./coordinator.js";
8
+ import { AuthorizedMutationHttp, HttpAuthorizer } from "./http.js";
9
+ import { CertifiedPublisherSpawn, NpmUserConfigResource } from "./publisher.js";
10
+ import { validateRecoveryProfileSubjects } from "./recovery.js";
11
+ import { PublicationClaimStore, unavailablePublicationClaimStore } from "./claim.js";
12
+ import { customProviderSubjects } from "../extensions/provider-adapter.js";
13
+ export { installedPublicationProfiles } from "./profiles.js";
14
+ const registerSubjects = (registration, subjects) => {
15
+ validateRecoveryProfileSubjects(registration.id, registration.recovery, subjects.map((subject) => subject.recovery));
16
+ return subjects;
17
+ };
18
+ const preparedSubject = (bundle) => SubjectId.make(`prepared:sha256-${sha256(encodePreparedRelease(bundle.manifest))}`);
19
+ /**
20
+ * Construct provider subjects only after the caller has loaded and verified
21
+ * the complete prepared bundle. The host authorizer is captured as an opaque
22
+ * sink; transports and credential values never enter the subject contract.
23
+ */
24
+ export const subjectsForPreparedRelease = Effect.fn("subjectsForPreparedRelease")(function* (bundle, adapters = []) {
25
+ const http = yield* HttpAuthorizer;
26
+ const mutationHttp = yield* AuthorizedMutationHttp;
27
+ const userConfigs = yield* NpmUserConfigResource;
28
+ const publisher = yield* CertifiedPublisherSpawn;
29
+ const claimOption = yield* Effect.serviceOption(PublicationClaimStore);
30
+ const claims = Option.getOrElse(claimOption, () => unavailablePublicationClaimStore);
31
+ const subjects = [];
32
+ const priorPublicationSubjects = [];
33
+ const services = { http, mutationHttp, userConfigs, publisher, claims };
34
+ for (const publication of bundle.manifest.publications) {
35
+ const moduleSubjects = publication._tag === "PreparedNpmPublication"
36
+ ? npmPublicationCapability.subjects(bundle, publication, services)
37
+ : publication._tag === "PreparedPyPiPublication"
38
+ ? pyPiPublicationCapability.subjects(bundle, publication, services)
39
+ : publication._tag === "PreparedGitHubPublication"
40
+ ? githubPublicationCapability.subjects(bundle, publication, services)
41
+ : catalogPublicationCapability.subjects(bundle, publication, services);
42
+ const registered = registerSubjects(publication._tag === "PreparedNpmPublication"
43
+ ? npmPublicationCapability.profile
44
+ : publication._tag === "PreparedPyPiPublication"
45
+ ? pyPiPublicationCapability.profile
46
+ : publication._tag === "PreparedGitHubPublication"
47
+ ? githubPublicationCapability.profile
48
+ : catalogPublicationCapability.profile, moduleSubjects);
49
+ const ordered = registered.map((subject) => priorPublicationSubjects.length === 0
50
+ ? subject
51
+ : {
52
+ ...subject,
53
+ prerequisites: [...new Set([
54
+ ...(subject.prerequisites ?? []),
55
+ ...priorPublicationSubjects
56
+ ])]
57
+ });
58
+ subjects.push(...ordered);
59
+ priorPublicationSubjects.push(...registered.map((subject) => subject.id));
60
+ }
61
+ const custom = customProviderSubjects(bundle, adapters, services, new Set([preparedSubject(bundle).toString(), ...priorPublicationSubjects.map((id) => id.toString())])).map((subject) => priorPublicationSubjects.length === 0
62
+ ? subject
63
+ : {
64
+ ...subject,
65
+ prerequisites: [...new Set([
66
+ ...(subject.prerequisites ?? []),
67
+ ...priorPublicationSubjects
68
+ ])]
69
+ });
70
+ subjects.push(...custom);
71
+ return subjects;
72
+ });
73
+ /** Remote, read-only observation through the same provider subjects as publish. */
74
+ export const observePreparedRelease = Effect.fn("observePreparedRelease")(function* (bundle, adapters = []) {
75
+ const subjects = yield* subjectsForPreparedRelease(bundle, adapters);
76
+ return yield* observeReleaseSubjects({ prepared: preparedSubject(bundle), subjects });
77
+ });
78
+ /** Dependency-ordered conservative publication through the shared coordinator. */
79
+ export const publishPreparedRelease = Effect.fn("publishPreparedRelease")(function* (bundle, adapters = []) {
80
+ const subjects = yield* subjectsForPreparedRelease(bundle, adapters);
81
+ return yield* publishReleaseSubjects({ prepared: preparedSubject(bundle), subjects });
82
+ });
83
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/publication/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EAEvB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,+BAA+B,EAEhC,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,qBAAqB,EACrB,gCAAgC,EACjC,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,sBAAsB,EAA8B,MAAM,mCAAmC,CAAA;AACtG,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAA;AAE5D,MAAM,gBAAgB,GAAG,CACvB,YAA4C,EAC5C,QAAuC,EACR,EAAE;IACjC,+BAA+B,CAC7B,YAAY,CAAC,EAAE,EACf,YAAY,CAAC,QAAQ,EACrB,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAC5C,CAAA;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,MAAsB,EAAa,EAAE,CAAC,SAAS,CAAC,IAAI,CAC3E,mBAAmB,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CACpE,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC,EACzF,MAAsB,EACtB,WAAiD,EAAE;IAEnD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,cAAc,CAAA;IAClC,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,sBAAsB,CAAA;IAClD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAA;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,uBAAuB,CAAA;IAChD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,gCAAgC,CAAC,CAAA;IACpF,MAAM,QAAQ,GAA0B,EAAE,CAAA;IAC1C,MAAM,wBAAwB,GAAqB,EAAE,CAAA;IACrD,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;IACvE,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,KAAK,wBAAwB;YAClE,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;YAClE,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,yBAAyB;gBAChD,CAAC,CAAC,yBAAyB,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;gBACnE,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,2BAA2B;oBAClD,CAAC,CAAC,2BAA2B,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;oBACrE,CAAC,CAAC,4BAA4B,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;QACxE,MAAM,UAAU,GAAG,gBAAgB,CACjC,WAAW,CAAC,IAAI,KAAK,wBAAwB;YAC3C,CAAC,CAAC,wBAAwB,CAAC,OAAO;YAClC,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,yBAAyB;gBAChD,CAAC,CAAC,yBAAyB,CAAC,OAAO;gBACnC,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,2BAA2B;oBAClD,CAAC,CAAC,2BAA2B,CAAC,OAAO;oBACrC,CAAC,CAAC,4BAA4B,CAAC,OAAO,EACxC,cAAc,CACf,CAAA;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAkB,EAAE,CAAC,wBAAwB,CAAC,MAAM,KAAK,CAAC;YAC/F,CAAC,CAAC,OAAO;YACT,CAAC,CAAC;gBACE,GAAG,OAAO;gBACV,aAAa,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;wBACzB,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;wBAChC,GAAG,wBAAwB;qBAC5B,CAAC,CAAC;aACJ,CAAC,CAAA;QACN,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;QACzB,wBAAwB,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3E,CAAC;IACD,MAAM,MAAM,GAAG,sBAAsB,CACnC,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CACtG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAkB,EAAE,CAAC,wBAAwB,CAAC,MAAM,KAAK,CAAC;QACtE,CAAC,CAAC,OAAO;QACT,CAAC,CAAC;YACE,GAAG,OAAO;YACV,aAAa,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;oBACzB,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;oBAChC,GAAG,wBAAwB;iBAC5B,CAAC,CAAC;SACJ,CAAC,CAAA;IACN,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;IACxB,OAAO,QAAyC,CAAA;AAClD,CAAC,CAAC,CAAA;AAEF,mFAAmF;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,EACjF,MAAsB,EACtB,WAAiD,EAAE;IAEnD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACpE,OAAO,KAAK,CAAC,CAAC,sBAAsB,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AACvF,CAAC,CAAC,CAAA;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,EACjF,MAAsB,EACtB,WAAiD,EAAE;IAEnD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACpE,OAAO,KAAK,CAAC,CAAC,sBAAsB,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AACvF,CAAC,CAAC,CAAA"}
@@ -0,0 +1,137 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Schema from "effect/Schema";
4
+ import type { CanonicalAudience, CredentialPurpose, CredentialRef, CredentialRequest, EnvironmentName, ProviderId, SubjectId, ResolvedTrustedPublishingAuthStrategy } from "../model/authority.js";
5
+ import type { MutationDecision } from "./report.js";
6
+ declare const CredentialGrantTypeId: unique symbol;
7
+ interface CredentialGrantBase<Tag extends string> {
8
+ readonly [CredentialGrantTypeId]: Tag;
9
+ readonly _tag: Tag;
10
+ readonly subject: SubjectId;
11
+ readonly provider: ProviderId;
12
+ readonly audience: CanonicalAudience;
13
+ readonly purposes: ReadonlySet<CredentialPurpose>;
14
+ }
15
+ /** Observe-only capability. It carries no credential or credential accessor. */
16
+ export interface AnonymousAccess extends CredentialGrantBase<"AnonymousAccess"> {
17
+ }
18
+ /** Capability backed by a host-owned credential reference, never its value. */
19
+ export interface ScopedSecret extends CredentialGrantBase<"ScopedSecret"> {
20
+ readonly ref: CredentialRef;
21
+ }
22
+ /** Certified workload identity names; token material remains host-owned. */
23
+ export interface WorkloadIdentity extends CredentialGrantBase<"WorkloadIdentity"> {
24
+ readonly names: ReadonlySet<EnvironmentName>;
25
+ /** Exact non-secret prepared strategy rechecked by the certified sink. */
26
+ readonly strategy: ResolvedTrustedPublishingAuthStrategy;
27
+ }
28
+ export type CredentialGrant = AnonymousAccess | ScopedSecret | WorkloadIdentity;
29
+ export type MutationCredentialGrant = ScopedSecret | WorkloadIdentity;
30
+ export type NonEmptyPurposes = readonly [CredentialPurpose, ...Array<CredentialPurpose>];
31
+ export type NonEmptyEnvironmentNames = readonly [EnvironmentName, ...Array<EnvironmentName>];
32
+ /**
33
+ * Metadata returned by a host acquirer. Secret values never cross this seam.
34
+ * `makeCredentialProvider` validates it against the exact prepared request
35
+ * before privately minting an opaque grant.
36
+ */
37
+ export type CredentialGrantDescriptor = {
38
+ readonly _tag: "AnonymousAccess";
39
+ readonly purposes: readonly ["observe"];
40
+ } | {
41
+ readonly _tag: "ScopedSecret";
42
+ readonly purposes: NonEmptyPurposes;
43
+ readonly ref: CredentialRef;
44
+ } | {
45
+ readonly _tag: "WorkloadIdentity";
46
+ readonly purposes: NonEmptyPurposes;
47
+ readonly names: NonEmptyEnvironmentNames;
48
+ };
49
+ declare const CredentialUnavailable_base: Schema.Class<CredentialUnavailable, Schema.TaggedStruct<"CredentialUnavailable", {
50
+ readonly subject: Schema.String;
51
+ readonly provider: Schema.String;
52
+ readonly purpose: Schema.String;
53
+ readonly reason: Schema.String;
54
+ }>, import("effect/Cause").YieldableError>;
55
+ export declare class CredentialUnavailable extends CredentialUnavailable_base {
56
+ }
57
+ declare const CredentialAudienceMismatch_base: Schema.Class<CredentialAudienceMismatch, Schema.TaggedStruct<"CredentialAudienceMismatch", {
58
+ readonly subject: Schema.String;
59
+ readonly expected: Schema.String;
60
+ readonly observed: Schema.String;
61
+ }>, import("effect/Cause").YieldableError>;
62
+ export declare class CredentialAudienceMismatch extends CredentialAudienceMismatch_base {
63
+ }
64
+ declare const CredentialPurposeMismatch_base: Schema.Class<CredentialPurposeMismatch, Schema.TaggedStruct<"CredentialPurposeMismatch", {
65
+ readonly subject: Schema.String;
66
+ readonly required: Schema.String;
67
+ readonly granted: Schema.$Array<Schema.String>;
68
+ }>, import("effect/Cause").YieldableError>;
69
+ export declare class CredentialPurposeMismatch extends CredentialPurposeMismatch_base {
70
+ }
71
+ declare const CredentialStrategyUnsupported_base: Schema.Class<CredentialStrategyUnsupported, Schema.TaggedStruct<"CredentialStrategyUnsupported", {
72
+ readonly subject: Schema.String;
73
+ readonly provider: Schema.String;
74
+ readonly strategy: Schema.String;
75
+ readonly reason: Schema.String;
76
+ }>, import("effect/Cause").YieldableError>;
77
+ export declare class CredentialStrategyUnsupported extends CredentialStrategyUnsupported_base {
78
+ }
79
+ declare const CredentialSubjectMismatch_base: Schema.Class<CredentialSubjectMismatch, Schema.TaggedStruct<"CredentialSubjectMismatch", {
80
+ readonly expected: Schema.String;
81
+ readonly observed: Schema.String;
82
+ }>, import("effect/Cause").YieldableError>;
83
+ export declare class CredentialSubjectMismatch extends CredentialSubjectMismatch_base {
84
+ }
85
+ declare const PublisherDispatchError_base: Schema.Class<PublisherDispatchError, Schema.TaggedStruct<"PublisherDispatchError", {
86
+ readonly subject: Schema.String;
87
+ readonly reason: Schema.String;
88
+ }>, import("effect/Cause").YieldableError>;
89
+ export declare class PublisherDispatchError extends PublisherDispatchError_base {
90
+ }
91
+ export type CredentialAuthorityError = CredentialUnavailable | CredentialAudienceMismatch | CredentialPurposeMismatch | CredentialStrategyUnsupported | CredentialSubjectMismatch;
92
+ export interface CredentialGrantAcquirer {
93
+ readonly acquire: (request: CredentialRequest) => Effect.Effect<CredentialGrantDescriptor, CredentialUnavailable | CredentialStrategyUnsupported>;
94
+ }
95
+ export interface CredentialProviderShape {
96
+ readonly acquireForObservation: (request: CredentialRequest) => Effect.Effect<CredentialGrant, CredentialAuthorityError>;
97
+ readonly acquireForMutation: (request: CredentialRequest, decision: MutationDecision) => Effect.Effect<MutationCredentialGrant, CredentialAuthorityError>;
98
+ }
99
+ declare const CredentialProvider_base: Context.ServiceClass<CredentialProvider, "ts-release/CredentialProvider", CredentialProviderShape>;
100
+ export declare class CredentialProvider extends CredentialProvider_base {
101
+ }
102
+ /** Builds a host-friendly provider without exposing a grant constructor. */
103
+ export declare const makeCredentialProvider: (host: CredentialGrantAcquirer) => CredentialProviderShape;
104
+ export type PublisherOperation = {
105
+ readonly _tag: "PublishOperation";
106
+ readonly subject: SubjectId;
107
+ readonly provider: ProviderId;
108
+ readonly audience: CanonicalAudience;
109
+ readonly purpose: "publish";
110
+ readonly decision: MutationDecision;
111
+ } | {
112
+ readonly _tag: "CorrectionOperation";
113
+ readonly subject: SubjectId;
114
+ readonly provider: ProviderId;
115
+ readonly audience: CanonicalAudience;
116
+ readonly purpose: "correct";
117
+ readonly decision: MutationDecision;
118
+ };
119
+ /**
120
+ * The publisher is a host-owned elimination boundary. Provider adapters pass
121
+ * only typed operation data and a capability; no generic command accepts one.
122
+ */
123
+ export interface PublisherSinkShape {
124
+ readonly dispatch: (operation: PublisherOperation, grant: MutationCredentialGrant) => Effect.Effect<void, CredentialAuthorityError | PublisherDispatchError>;
125
+ }
126
+ declare const PublisherSink_base: Context.ServiceClass<PublisherSink, "ts-release/PublisherSink", PublisherSinkShape>;
127
+ export declare class PublisherSink extends PublisherSink_base {
128
+ }
129
+ /** Shared sink-side recheck. It trusts private issuance metadata, not fields. */
130
+ export declare const validateGrantForOperation: (operation: PublisherOperation, grant: MutationCredentialGrant) => Effect.Effect<undefined, CredentialUnavailable | CredentialAudienceMismatch | CredentialPurposeMismatch | CredentialSubjectMismatch, never>;
131
+ export interface PublisherDispatcher {
132
+ readonly dispatch: (operation: PublisherOperation, grant: MutationCredentialGrant) => Effect.Effect<void, PublisherDispatchError>;
133
+ }
134
+ /** Wraps a host dispatcher so every mutation rechecks opaque authority first. */
135
+ export declare const makePublisherSink: (host: PublisherDispatcher) => PublisherSinkShape;
136
+ export {};
137
+ //# sourceMappingURL=authority.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authority.d.ts","sourceRoot":"","sources":["../../src/publication/authority.ts"],"names":[],"mappings":"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"}