@mannyc1/ts-release 0.0.6 → 0.2.2

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 (639) hide show
  1. package/ARCHITECTURE.md +124 -87
  2. package/CHANGELOG.md +115 -0
  3. package/LICENSE +21 -0
  4. package/README.md +272 -540
  5. package/SPEC.md +206 -305
  6. package/apps/release-ts/README.md +32 -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 +117 -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 +39239 -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 +8 -0
  82. package/dist/drivers/archive.d.ts.map +1 -0
  83. package/dist/drivers/archive.js +101 -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/redact.d.ts +4 -0
  106. package/dist/drivers/redact.d.ts.map +1 -0
  107. package/dist/drivers/redact.js +24 -0
  108. package/dist/drivers/redact.js.map +1 -0
  109. package/dist/drivers/seccomp-helper-source.d.ts +7 -0
  110. package/dist/drivers/seccomp-helper-source.d.ts.map +1 -0
  111. package/dist/drivers/seccomp-helper-source.js +121 -0
  112. package/dist/drivers/seccomp-helper-source.js.map +1 -0
  113. package/dist/drivers/utils.d.ts +4 -0
  114. package/dist/drivers/utils.d.ts.map +1 -0
  115. package/dist/drivers/utils.js +5 -0
  116. package/dist/drivers/utils.js.map +1 -0
  117. package/dist/drivers/workspace.d.ts +6 -0
  118. package/dist/drivers/workspace.d.ts.map +1 -0
  119. package/dist/drivers/workspace.js +49 -0
  120. package/dist/drivers/workspace.js.map +1 -0
  121. package/dist/extensions/provider-adapter.d.ts +48 -0
  122. package/dist/extensions/provider-adapter.d.ts.map +1 -0
  123. package/dist/extensions/provider-adapter.js +64 -0
  124. package/dist/extensions/provider-adapter.js.map +1 -0
  125. package/dist/host.d.ts +33 -0
  126. package/dist/host.d.ts.map +1 -0
  127. package/dist/host.js +20 -0
  128. package/dist/host.js.map +1 -0
  129. package/dist/index.d.ts +19 -1
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +12 -1
  132. package/dist/index.js.map +1 -1
  133. package/dist/model/artifact-collection.d.ts +84 -0
  134. package/dist/model/artifact-collection.d.ts.map +1 -0
  135. package/dist/model/artifact-collection.js +185 -0
  136. package/dist/model/artifact-collection.js.map +1 -0
  137. package/dist/model/authority.d.ts +89 -0
  138. package/dist/model/authority.d.ts.map +1 -0
  139. package/dist/model/authority.js +80 -0
  140. package/dist/model/authority.js.map +1 -0
  141. package/dist/model/bun-targets.d.ts +34 -0
  142. package/dist/model/bun-targets.d.ts.map +1 -0
  143. package/dist/model/bun-targets.js +17 -0
  144. package/dist/model/bun-targets.js.map +1 -0
  145. package/dist/model/canonical.d.ts +8 -0
  146. package/dist/model/canonical.d.ts.map +1 -0
  147. package/dist/model/canonical.js +205 -0
  148. package/dist/model/canonical.js.map +1 -0
  149. package/dist/model/catalog.d.ts +76 -0
  150. package/dist/model/catalog.d.ts.map +1 -0
  151. package/dist/model/catalog.js +174 -0
  152. package/dist/model/catalog.js.map +1 -0
  153. package/dist/model/digest.d.ts +53 -0
  154. package/dist/model/digest.d.ts.map +1 -0
  155. package/dist/model/digest.js +127 -0
  156. package/dist/model/digest.js.map +1 -0
  157. package/dist/model/errors.d.ts +14 -0
  158. package/dist/model/errors.d.ts.map +1 -0
  159. package/dist/model/errors.js +8 -0
  160. package/dist/model/errors.js.map +1 -0
  161. package/dist/model/primitives.d.ts +19 -0
  162. package/dist/model/primitives.d.ts.map +1 -0
  163. package/dist/model/primitives.js +18 -0
  164. package/dist/model/primitives.js.map +1 -0
  165. package/dist/model/pypi.d.ts +12 -0
  166. package/dist/model/pypi.d.ts.map +1 -0
  167. package/dist/model/pypi.js +20 -0
  168. package/dist/model/pypi.js.map +1 -0
  169. package/dist/model/python-distribution.d.ts +33 -0
  170. package/dist/model/python-distribution.d.ts.map +1 -0
  171. package/dist/model/python-distribution.js +367 -0
  172. package/dist/model/python-distribution.js.map +1 -0
  173. package/dist/model/secret-patterns.d.ts +2 -0
  174. package/dist/model/secret-patterns.d.ts.map +1 -0
  175. package/dist/model/secret-patterns.js +12 -0
  176. package/dist/model/secret-patterns.js.map +1 -0
  177. package/dist/platform/bun.d.ts +7 -0
  178. package/dist/platform/bun.d.ts.map +1 -0
  179. package/dist/platform/bun.js +15 -0
  180. package/dist/platform/bun.js.map +1 -0
  181. package/dist/platform/credentials.d.ts +32 -0
  182. package/dist/platform/credentials.d.ts.map +1 -0
  183. package/dist/platform/credentials.js +772 -0
  184. package/dist/platform/credentials.js.map +1 -0
  185. package/dist/platform/host-support.d.ts +2 -0
  186. package/dist/platform/host-support.d.ts.map +1 -0
  187. package/dist/platform/host-support.js +4 -0
  188. package/dist/platform/host-support.js.map +1 -0
  189. package/dist/platform/node.d.ts +7 -0
  190. package/dist/platform/node.d.ts.map +1 -0
  191. package/dist/platform/node.js +15 -0
  192. package/dist/platform/node.js.map +1 -0
  193. package/dist/platform/release-runtime.d.ts +11 -0
  194. package/dist/platform/release-runtime.d.ts.map +1 -0
  195. package/dist/platform/release-runtime.js +34 -0
  196. package/dist/platform/release-runtime.js.map +1 -0
  197. package/dist/platform/services.d.ts +15 -0
  198. package/dist/platform/services.d.ts.map +1 -0
  199. package/dist/platform/services.js +30 -0
  200. package/dist/platform/services.js.map +1 -0
  201. package/dist/platform/source-observer.d.ts +5 -0
  202. package/dist/platform/source-observer.d.ts.map +1 -0
  203. package/dist/platform/source-observer.js +159 -0
  204. package/dist/platform/source-observer.js.map +1 -0
  205. package/dist/provider-sdk.d.ts +14 -0
  206. package/dist/provider-sdk.d.ts.map +1 -0
  207. package/dist/provider-sdk.js +10 -0
  208. package/dist/provider-sdk.js.map +1 -0
  209. package/dist/publication/adapter.d.ts +212 -0
  210. package/dist/publication/adapter.d.ts.map +1 -0
  211. package/dist/publication/adapter.js +83 -0
  212. package/dist/publication/adapter.js.map +1 -0
  213. package/dist/publication/authority.d.ts +137 -0
  214. package/dist/publication/authority.d.ts.map +1 -0
  215. package/dist/publication/authority.js +233 -0
  216. package/dist/publication/authority.js.map +1 -0
  217. package/dist/publication/catalog-git.d.ts +37 -0
  218. package/dist/publication/catalog-git.d.ts.map +1 -0
  219. package/dist/publication/catalog-git.js +451 -0
  220. package/dist/publication/catalog-git.js.map +1 -0
  221. package/dist/publication/claim.d.ts +39 -0
  222. package/dist/publication/claim.d.ts.map +1 -0
  223. package/dist/publication/claim.js +31 -0
  224. package/dist/publication/claim.js.map +1 -0
  225. package/dist/publication/coordinator.d.ts +246 -0
  226. package/dist/publication/coordinator.d.ts.map +1 -0
  227. package/dist/publication/coordinator.js +370 -0
  228. package/dist/publication/coordinator.js.map +1 -0
  229. package/dist/publication/github.d.ts +36 -0
  230. package/dist/publication/github.d.ts.map +1 -0
  231. package/dist/publication/github.js +644 -0
  232. package/dist/publication/github.js.map +1 -0
  233. package/dist/publication/http.d.ts +69 -0
  234. package/dist/publication/http.d.ts.map +1 -0
  235. package/dist/publication/http.js +29 -0
  236. package/dist/publication/http.js.map +1 -0
  237. package/dist/publication/index.d.ts +5 -0
  238. package/dist/publication/index.d.ts.map +1 -0
  239. package/dist/publication/index.js +5 -0
  240. package/dist/publication/index.js.map +1 -0
  241. package/dist/publication/npm.d.ts +40 -0
  242. package/dist/publication/npm.d.ts.map +1 -0
  243. package/dist/publication/npm.js +359 -0
  244. package/dist/publication/npm.js.map +1 -0
  245. package/dist/publication/profiles.d.ts +136 -0
  246. package/dist/publication/profiles.d.ts.map +1 -0
  247. package/dist/publication/profiles.js +90 -0
  248. package/dist/publication/profiles.js.map +1 -0
  249. package/dist/publication/publisher.d.ts +82 -0
  250. package/dist/publication/publisher.d.ts.map +1 -0
  251. package/dist/publication/publisher.js +53 -0
  252. package/dist/publication/publisher.js.map +1 -0
  253. package/dist/publication/pypi.d.ts +45 -0
  254. package/dist/publication/pypi.d.ts.map +1 -0
  255. package/dist/publication/pypi.js +369 -0
  256. package/dist/publication/pypi.js.map +1 -0
  257. package/dist/publication/recovery.d.ts +663 -0
  258. package/dist/publication/recovery.d.ts.map +1 -0
  259. package/dist/publication/recovery.js +252 -0
  260. package/dist/publication/recovery.js.map +1 -0
  261. package/dist/publication/report.d.ts +1061 -0
  262. package/dist/publication/report.d.ts.map +1 -0
  263. package/dist/publication/report.js +441 -0
  264. package/dist/publication/report.js.map +1 -0
  265. package/dist/recipes/config.d.ts +296 -0
  266. package/dist/recipes/config.d.ts.map +1 -0
  267. package/dist/recipes/config.js +325 -0
  268. package/dist/recipes/config.js.map +1 -0
  269. package/dist/release/capabilities.d.ts +12 -0
  270. package/dist/release/capabilities.d.ts.map +1 -0
  271. package/dist/release/capabilities.js +395 -0
  272. package/dist/release/capabilities.js.map +1 -0
  273. package/dist/release/compiler.d.ts +5 -0
  274. package/dist/release/compiler.d.ts.map +1 -0
  275. package/dist/release/compiler.js +19 -0
  276. package/dist/release/compiler.js.map +1 -0
  277. package/dist/release/config.d.ts +5 -0
  278. package/dist/release/config.d.ts.map +1 -0
  279. package/dist/release/config.js +10 -0
  280. package/dist/release/config.js.map +1 -0
  281. package/dist/release/context.d.ts +96 -0
  282. package/dist/release/context.d.ts.map +1 -0
  283. package/dist/release/context.js +168 -0
  284. package/dist/release/context.js.map +1 -0
  285. package/dist/release/graph.d.ts +271 -0
  286. package/dist/release/graph.d.ts.map +1 -0
  287. package/dist/release/graph.js +766 -0
  288. package/dist/release/graph.js.map +1 -0
  289. package/dist/release/inspect.d.ts +88 -0
  290. package/dist/release/inspect.d.ts.map +1 -0
  291. package/dist/release/inspect.js +75 -0
  292. package/dist/release/inspect.js.map +1 -0
  293. package/dist/release/prepare.d.ts +24 -0
  294. package/dist/release/prepare.d.ts.map +1 -0
  295. package/dist/release/prepare.js +1116 -0
  296. package/dist/release/prepare.js.map +1 -0
  297. package/dist/release/prepared-ref.d.ts +60 -0
  298. package/dist/release/prepared-ref.d.ts.map +1 -0
  299. package/dist/release/prepared-ref.js +131 -0
  300. package/dist/release/prepared-ref.js.map +1 -0
  301. package/dist/release/prepared-store.d.ts +90 -0
  302. package/dist/release/prepared-store.d.ts.map +1 -0
  303. package/dist/release/prepared-store.js +337 -0
  304. package/dist/release/prepared-store.js.map +1 -0
  305. package/dist/release/prepared.d.ts +172 -0
  306. package/dist/release/prepared.d.ts.map +1 -0
  307. package/dist/release/prepared.js +268 -0
  308. package/dist/release/prepared.js.map +1 -0
  309. package/dist/release/staging.d.ts +31 -0
  310. package/dist/release/staging.d.ts.map +1 -0
  311. package/dist/release/staging.js +218 -0
  312. package/dist/release/staging.js.map +1 -0
  313. package/dist/resolve/authored.d.ts +53 -0
  314. package/dist/resolve/authored.d.ts.map +1 -0
  315. package/dist/resolve/authored.js +55 -0
  316. package/dist/resolve/authored.js.map +1 -0
  317. package/dist/resolve/encode.d.ts +3 -0
  318. package/dist/resolve/encode.d.ts.map +1 -0
  319. package/dist/resolve/encode.js +21 -0
  320. package/dist/resolve/encode.js.map +1 -0
  321. package/dist/resolve/errors.d.ts +7 -0
  322. package/dist/resolve/errors.d.ts.map +1 -0
  323. package/dist/resolve/errors.js +17 -0
  324. package/dist/resolve/errors.js.map +1 -0
  325. package/dist/resolve/facts.d.ts +12 -0
  326. package/dist/resolve/facts.d.ts.map +1 -0
  327. package/dist/resolve/facts.js +18 -0
  328. package/dist/resolve/facts.js.map +1 -0
  329. package/dist/resolve/resolve.d.ts +10 -0
  330. package/dist/resolve/resolve.d.ts.map +1 -0
  331. package/dist/resolve/resolve.js +242 -0
  332. package/dist/resolve/resolve.js.map +1 -0
  333. package/dist/store.d.ts +11 -0
  334. package/dist/store.d.ts.map +1 -0
  335. package/dist/store.js +9 -0
  336. package/dist/store.js.map +1 -0
  337. package/examples/README.md +20 -30
  338. package/examples/github-release/release.config.json +11 -18
  339. package/examples/homebrew-tap/README.md +11 -0
  340. package/examples/homebrew-tap/release.config.json +40 -28
  341. package/examples/multi-target/release.config.json +28 -53
  342. package/examples/npm-first-publish/release.config.json +23 -25
  343. package/examples/npm-only/release.config.json +22 -30
  344. package/examples/portable-cli/README.md +17 -0
  345. package/examples/portable-cli/artifacts/portable-example-0.1.0-darwin-arm64 +1 -0
  346. package/examples/portable-cli/artifacts/portable-example-0.1.0-darwin-x64 +1 -0
  347. package/examples/portable-cli/artifacts/portable-example-0.1.0-linux-arm64 +1 -0
  348. package/examples/portable-cli/artifacts/portable-example-0.1.0-linux-x64 +1 -0
  349. package/examples/portable-cli/artifacts/portable-example-0.1.0-windows-x64.exe +1 -0
  350. package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-macosx_10_15_x86_64.whl +1 -0
  351. package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-macosx_11_0_arm64.whl +1 -0
  352. package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-manylinux2014_aarch64.whl +1 -0
  353. package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-manylinux2014_x86_64.whl +1 -0
  354. package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-win_amd64.whl +1 -0
  355. package/examples/portable-cli/package.json +9 -0
  356. package/examples/portable-cli/release.config.json +53 -0
  357. package/examples/portable-cli/src/cli.ts +3 -0
  358. package/examples/pypi-registry/README.md +8 -0
  359. package/examples/scoop-bucket/README.md +10 -0
  360. package/examples/scoop-bucket/release.config.json +40 -30
  361. package/package.json +61 -154
  362. package/src/api/api.ts +365 -0
  363. package/src/api/errors.ts +36 -0
  364. package/src/api/input.ts +92 -0
  365. package/src/api/runtime.ts +14 -0
  366. package/src/api/types.ts +103 -0
  367. package/src/capabilities/bun-targets.ts +2 -0
  368. package/src/capabilities/field-ownership.ts +60 -0
  369. package/src/capabilities/module.ts +158 -0
  370. package/src/capabilities/registry.ts +333 -0
  371. package/src/config/config.ts +48 -0
  372. package/src/correction/coordinator.ts +336 -0
  373. package/src/correction/index.ts +2 -0
  374. package/src/correction/intent.ts +172 -0
  375. package/src/drivers/archive.ts +102 -0
  376. package/src/drivers/contain.ts +20 -0
  377. package/src/drivers/environment.ts +28 -0
  378. package/src/drivers/errors.ts +6 -0
  379. package/src/drivers/glob.ts +137 -0
  380. package/src/drivers/process.ts +340 -0
  381. package/src/drivers/redact.ts +31 -0
  382. package/src/drivers/seccomp-helper-source.ts +121 -0
  383. package/src/drivers/utils.ts +10 -0
  384. package/src/drivers/workspace.ts +40 -0
  385. package/src/extensions/provider-adapter.ts +99 -0
  386. package/src/host.ts +140 -0
  387. package/src/index.ts +64 -0
  388. package/src/model/artifact-collection.ts +237 -0
  389. package/src/model/authority.ts +116 -0
  390. package/src/model/bun-targets.ts +34 -0
  391. package/src/model/canonical.ts +205 -0
  392. package/src/model/catalog.ts +220 -0
  393. package/src/model/digest.ts +172 -0
  394. package/src/model/errors.ts +6 -0
  395. package/src/model/primitives.ts +37 -0
  396. package/src/model/pypi.ts +30 -0
  397. package/src/model/python-distribution.ts +360 -0
  398. package/src/model/secret-patterns.ts +11 -0
  399. package/src/platform/bun.ts +38 -0
  400. package/src/platform/credentials.ts +1083 -0
  401. package/src/platform/host-support.ts +4 -0
  402. package/src/platform/node.ts +38 -0
  403. package/src/platform/release-runtime.ts +47 -0
  404. package/src/platform/services.ts +57 -0
  405. package/src/platform/source-observer.ts +193 -0
  406. package/src/provider-sdk.ts +48 -0
  407. package/src/publication/adapter.ts +132 -0
  408. package/src/publication/authority.ts +397 -0
  409. package/src/publication/catalog-git.ts +603 -0
  410. package/src/publication/claim.ts +51 -0
  411. package/src/publication/coordinator.ts +578 -0
  412. package/src/publication/github.ts +954 -0
  413. package/src/publication/http.ts +101 -0
  414. package/src/publication/index.ts +4 -0
  415. package/src/publication/npm.ts +525 -0
  416. package/src/publication/profiles.ts +94 -0
  417. package/src/publication/publisher.ts +130 -0
  418. package/src/publication/pypi.ts +463 -0
  419. package/src/publication/recovery.ts +349 -0
  420. package/src/publication/report.ts +628 -0
  421. package/src/recipes/config.ts +395 -0
  422. package/src/release/capabilities.ts +459 -0
  423. package/src/release/compiler.ts +28 -0
  424. package/src/release/config.ts +12 -0
  425. package/src/release/context.ts +223 -0
  426. package/src/release/graph.ts +866 -0
  427. package/src/release/inspect.ts +83 -0
  428. package/src/release/prepare.ts +1331 -0
  429. package/src/release/prepared-ref.ts +193 -0
  430. package/src/release/prepared-store.ts +377 -0
  431. package/src/release/prepared.ts +299 -0
  432. package/src/release/staging.ts +257 -0
  433. package/src/resolve/authored.ts +64 -0
  434. package/src/resolve/encode.ts +22 -0
  435. package/src/resolve/errors.ts +15 -0
  436. package/src/resolve/facts.ts +18 -0
  437. package/src/resolve/resolve.ts +328 -0
  438. package/src/store.ts +28 -0
  439. package/templates/README.md +55 -59
  440. package/templates/bun-cli-github/README.md +12 -0
  441. package/templates/bun-cli-github/release.config.json +51 -0
  442. package/templates/github-actions/release.yml +57 -0
  443. package/templates/github-actions/reviewed-release.yml +80 -0
  444. package/templates/multi-target-homebrew/README.md +10 -0
  445. package/templates/multi-target-homebrew/release.config.json +43 -60
  446. package/templates/multi-target-scoop/README.md +10 -0
  447. package/templates/multi-target-scoop/release.config.json +43 -62
  448. package/templates/npm-github/release.config.json +25 -38
  449. package/templates/npm-github/reviewed-release.config.json +37 -0
  450. package/templates/npm-only/README.md +10 -0
  451. package/templates/npm-only/release.config.json +15 -30
  452. package/templates/portable-cli/README.md +13 -0
  453. package/templates/portable-cli/release.config.json +53 -0
  454. package/dist/config/errors.d.ts +0 -24
  455. package/dist/config/errors.d.ts.map +0 -1
  456. package/dist/config/errors.js +0 -19
  457. package/dist/config/errors.js.map +0 -1
  458. package/dist/config/load.d.ts +0 -9
  459. package/dist/config/load.d.ts.map +0 -1
  460. package/dist/config/load.js +0 -29
  461. package/dist/config/load.js.map +0 -1
  462. package/dist/config/schema.d.ts +0 -12
  463. package/dist/config/schema.d.ts.map +0 -1
  464. package/dist/config/schema.js +0 -19
  465. package/dist/config/schema.js.map +0 -1
  466. package/dist/domain/artifact.d.ts +0 -36
  467. package/dist/domain/artifact.d.ts.map +0 -1
  468. package/dist/domain/artifact.js +0 -29
  469. package/dist/domain/artifact.js.map +0 -1
  470. package/dist/domain/evidence.d.ts +0 -108
  471. package/dist/domain/evidence.d.ts.map +0 -1
  472. package/dist/domain/evidence.js +0 -96
  473. package/dist/domain/evidence.js.map +0 -1
  474. package/dist/domain/operation.d.ts +0 -153
  475. package/dist/domain/operation.d.ts.map +0 -1
  476. package/dist/domain/operation.js +0 -320
  477. package/dist/domain/operation.js.map +0 -1
  478. package/dist/domain/release.d.ts +0 -141
  479. package/dist/domain/release.d.ts.map +0 -1
  480. package/dist/domain/release.js +0 -127
  481. package/dist/domain/release.js.map +0 -1
  482. package/dist/domain/remote-state.d.ts +0 -85
  483. package/dist/domain/remote-state.d.ts.map +0 -1
  484. package/dist/domain/remote-state.js +0 -77
  485. package/dist/domain/remote-state.js.map +0 -1
  486. package/dist/domain/status.d.ts +0 -43
  487. package/dist/domain/status.d.ts.map +0 -1
  488. package/dist/domain/status.js +0 -51
  489. package/dist/domain/status.js.map +0 -1
  490. package/dist/domain/target.d.ts +0 -135
  491. package/dist/domain/target.d.ts.map +0 -1
  492. package/dist/domain/target.js +0 -137
  493. package/dist/domain/target.js.map +0 -1
  494. package/dist/host/host.d.ts +0 -32
  495. package/dist/host/host.d.ts.map +0 -1
  496. package/dist/host/host.js +0 -24
  497. package/dist/host/host.js.map +0 -1
  498. package/dist/host/http-live.d.ts +0 -6
  499. package/dist/host/http-live.d.ts.map +0 -1
  500. package/dist/host/http-live.js +0 -86
  501. package/dist/host/http-live.js.map +0 -1
  502. package/dist/host/http.d.ts +0 -43
  503. package/dist/host/http.d.ts.map +0 -1
  504. package/dist/host/http.js +0 -59
  505. package/dist/host/http.js.map +0 -1
  506. package/dist/host/platform.d.ts +0 -10
  507. package/dist/host/platform.d.ts.map +0 -1
  508. package/dist/host/platform.js +0 -114
  509. package/dist/host/platform.js.map +0 -1
  510. package/dist/host/test.d.ts +0 -23
  511. package/dist/host/test.d.ts.map +0 -1
  512. package/dist/host/test.js +0 -222
  513. package/dist/host/test.js.map +0 -1
  514. package/dist/internal/workflow-phases.d.ts +0 -3
  515. package/dist/internal/workflow-phases.d.ts.map +0 -1
  516. package/dist/internal/workflow-phases.js +0 -2
  517. package/dist/internal/workflow-phases.js.map +0 -1
  518. package/dist/internal/workspace-path.d.ts +0 -15
  519. package/dist/internal/workspace-path.d.ts.map +0 -1
  520. package/dist/internal/workspace-path.js +0 -36
  521. package/dist/internal/workspace-path.js.map +0 -1
  522. package/dist/planner/artifact-inventory.d.ts +0 -9
  523. package/dist/planner/artifact-inventory.d.ts.map +0 -1
  524. package/dist/planner/artifact-inventory.js +0 -84
  525. package/dist/planner/artifact-inventory.js.map +0 -1
  526. package/dist/planner/create-release-plan.d.ts +0 -5
  527. package/dist/planner/create-release-plan.d.ts.map +0 -1
  528. package/dist/planner/create-release-plan.js +0 -25
  529. package/dist/planner/create-release-plan.js.map +0 -1
  530. package/dist/planner/errors.d.ts +0 -81
  531. package/dist/planner/errors.d.ts.map +0 -1
  532. package/dist/planner/errors.js +0 -70
  533. package/dist/planner/errors.js.map +0 -1
  534. package/dist/planner/evidence-recorder.d.ts +0 -26
  535. package/dist/planner/evidence-recorder.d.ts.map +0 -1
  536. package/dist/planner/evidence-recorder.js +0 -330
  537. package/dist/planner/evidence-recorder.js.map +0 -1
  538. package/dist/planner/executor.d.ts +0 -58
  539. package/dist/planner/executor.d.ts.map +0 -1
  540. package/dist/planner/executor.js +0 -159
  541. package/dist/planner/executor.js.map +0 -1
  542. package/dist/planner/normalize-release.d.ts +0 -16
  543. package/dist/planner/normalize-release.d.ts.map +0 -1
  544. package/dist/planner/normalize-release.js +0 -218
  545. package/dist/planner/normalize-release.js.map +0 -1
  546. package/dist/planner/reconcile.d.ts +0 -17
  547. package/dist/planner/reconcile.d.ts.map +0 -1
  548. package/dist/planner/reconcile.js +0 -261
  549. package/dist/planner/reconcile.js.map +0 -1
  550. package/dist/planner/release-eligibility.d.ts +0 -39
  551. package/dist/planner/release-eligibility.d.ts.map +0 -1
  552. package/dist/planner/release-eligibility.js +0 -578
  553. package/dist/planner/release-eligibility.js.map +0 -1
  554. package/dist/planner/render-plan.d.ts +0 -15
  555. package/dist/planner/render-plan.d.ts.map +0 -1
  556. package/dist/planner/render-plan.js +0 -238
  557. package/dist/planner/render-plan.js.map +0 -1
  558. package/dist/planner/status.d.ts +0 -40
  559. package/dist/planner/status.d.ts.map +0 -1
  560. package/dist/planner/status.js +0 -313
  561. package/dist/planner/status.js.map +0 -1
  562. package/dist/targets/adapter-helpers.d.ts +0 -64
  563. package/dist/targets/adapter-helpers.d.ts.map +0 -1
  564. package/dist/targets/adapter-helpers.js +0 -124
  565. package/dist/targets/adapter-helpers.js.map +0 -1
  566. package/dist/targets/adapter.d.ts +0 -17
  567. package/dist/targets/adapter.d.ts.map +0 -1
  568. package/dist/targets/adapter.js +0 -2
  569. package/dist/targets/adapter.js.map +0 -1
  570. package/dist/targets/github-release.d.ts +0 -25
  571. package/dist/targets/github-release.d.ts.map +0 -1
  572. package/dist/targets/github-release.js +0 -82
  573. package/dist/targets/github-release.js.map +0 -1
  574. package/dist/targets/github.d.ts +0 -11
  575. package/dist/targets/github.d.ts.map +0 -1
  576. package/dist/targets/github.js +0 -125
  577. package/dist/targets/github.js.map +0 -1
  578. package/dist/targets/homebrew.d.ts +0 -11
  579. package/dist/targets/homebrew.d.ts.map +0 -1
  580. package/dist/targets/homebrew.js +0 -97
  581. package/dist/targets/homebrew.js.map +0 -1
  582. package/dist/targets/live.d.ts +0 -5
  583. package/dist/targets/live.d.ts.map +0 -1
  584. package/dist/targets/live.js +0 -50
  585. package/dist/targets/live.js.map +0 -1
  586. package/dist/targets/npm.d.ts +0 -10
  587. package/dist/targets/npm.d.ts.map +0 -1
  588. package/dist/targets/npm.js +0 -118
  589. package/dist/targets/npm.js.map +0 -1
  590. package/dist/targets/pypi.d.ts +0 -11
  591. package/dist/targets/pypi.d.ts.map +0 -1
  592. package/dist/targets/pypi.js +0 -103
  593. package/dist/targets/pypi.js.map +0 -1
  594. package/dist/targets/registry.d.ts +0 -25
  595. package/dist/targets/registry.d.ts.map +0 -1
  596. package/dist/targets/registry.js +0 -34
  597. package/dist/targets/registry.js.map +0 -1
  598. package/dist/targets/scoop.d.ts +0 -11
  599. package/dist/targets/scoop.d.ts.map +0 -1
  600. package/dist/targets/scoop.js +0 -78
  601. package/dist/targets/scoop.js.map +0 -1
  602. package/dist/types/effect-internal.d.ts +0 -5
  603. package/dist/types/effect-internal.d.ts.map +0 -1
  604. package/dist/types/effect-internal.js +0 -2
  605. package/dist/types/effect-internal.js.map +0 -1
  606. package/dist/workflows/config.d.ts +0 -252
  607. package/dist/workflows/config.d.ts.map +0 -1
  608. package/dist/workflows/config.js +0 -465
  609. package/dist/workflows/config.js.map +0 -1
  610. package/dist/workflows/diagnostics.d.ts +0 -62
  611. package/dist/workflows/diagnostics.d.ts.map +0 -1
  612. package/dist/workflows/diagnostics.js +0 -527
  613. package/dist/workflows/diagnostics.js.map +0 -1
  614. package/dist/workflows/evidence.d.ts +0 -26
  615. package/dist/workflows/evidence.d.ts.map +0 -1
  616. package/dist/workflows/evidence.js +0 -44
  617. package/dist/workflows/evidence.js.map +0 -1
  618. package/dist/workflows/index.d.ts +0 -7
  619. package/dist/workflows/index.d.ts.map +0 -1
  620. package/dist/workflows/index.js +0 -6
  621. package/dist/workflows/index.js.map +0 -1
  622. package/dist/workflows/init.d.ts +0 -84
  623. package/dist/workflows/init.d.ts.map +0 -1
  624. package/dist/workflows/init.js +0 -441
  625. package/dist/workflows/init.js.map +0 -1
  626. package/dist/workflows/live.d.ts +0 -9
  627. package/dist/workflows/live.d.ts.map +0 -1
  628. package/dist/workflows/live.js +0 -7
  629. package/dist/workflows/live.js.map +0 -1
  630. package/dist/workflows/options.d.ts +0 -30
  631. package/dist/workflows/options.d.ts.map +0 -1
  632. package/dist/workflows/options.js +0 -16
  633. package/dist/workflows/options.js.map +0 -1
  634. package/examples/non-strict-skips/artifacts/release-example-skips-0.1.0.tgz +0 -1
  635. package/examples/non-strict-skips/release.config.json +0 -31
  636. package/examples/pypi-registry/release.config.json +0 -31
  637. package/templates/github-actions/plan-and-approved-execute.yml +0 -58
  638. package/templates/github-actions/plan-only.yml +0 -33
  639. package/templates/github-actions/trusted-publishing.yml +0 -61
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Embedded so source, built JS, npm consumers, and standalone CLI bundles all
3
+ * execute the same audited helper bytes through the pinned Bun runtime.
4
+ */
5
+ export const makeNetworkIsolationHelperSource = (requiredLibrary = "libseccomp.so.2") => String.raw `import { dlopen, ptr } from "bun:ffi"
6
+ import { createHash } from "node:crypto"
7
+ import { readFileSync, readdirSync, realpathSync, writeFileSync } from "node:fs"
8
+ import { arch, release } from "node:os"
9
+
10
+ const fail = (reason) => {
11
+ process.stderr.write("ts-release network isolation failed closed: " + reason + "\n")
12
+ process.exit(125)
13
+ }
14
+ if (process.platform !== "linux" || !["x64", "arm64"].includes(process.arch)) {
15
+ fail("unsupported host " + process.platform + "/" + process.arch)
16
+ }
17
+ const identityPath = process.env.TS_RELEASE_NETWORK_IDENTITY_FILE
18
+ const expectedHelperDigest = process.env.TS_RELEASE_NETWORK_HELPER_SHA256
19
+ const libraryName = process.env.TS_RELEASE_NETWORK_LIBRARY
20
+ if (!identityPath || !expectedHelperDigest || libraryName !== ${JSON.stringify(requiredLibrary)}) {
21
+ fail("missing or invalid internal isolation parameters")
22
+ }
23
+ const helperDigest = createHash("sha256").update(readFileSync(process.argv[1])).digest("hex")
24
+ if (helperDigest !== expectedHelperDigest) fail("helper digest disagrees with parent")
25
+ const argv = process.argv.slice(2)
26
+ if (argv.length === 0) fail("missing command")
27
+ const deniedSyscalls = [
28
+ "socket", "socketpair", "connect", "bind", "listen", "accept", "accept4",
29
+ "sendto", "sendmsg", "sendmmsg", "recvfrom", "recvmsg", "recvmmsg",
30
+ "io_uring_setup", "io_uring_enter", "io_uring_register", "pidfd_getfd"
31
+ ]
32
+ let library
33
+ try {
34
+ library = dlopen(libraryName, {
35
+ seccomp_init: { args: ["u32"], returns: "ptr" },
36
+ seccomp_rule_add: { args: ["ptr", "u32", "i32", "u32"], returns: "i32" },
37
+ seccomp_load: { args: ["ptr"], returns: "i32" },
38
+ seccomp_release: { args: ["ptr"], returns: "void" },
39
+ seccomp_syscall_resolve_name: { args: ["ptr"], returns: "i32" }
40
+ })
41
+ } catch (cause) {
42
+ fail("libseccomp.so.2 unavailable: " + String(cause))
43
+ }
44
+ let libraryPath
45
+ try {
46
+ const mapping = readFileSync("/proc/self/maps", "utf8").split("\n").find((line) => line.includes("libseccomp.so"))
47
+ const candidate = mapping && mapping.trim().split(/\s+/).at(-1)
48
+ if (!candidate || !candidate.startsWith("/")) fail("loaded libseccomp mapping is unavailable")
49
+ libraryPath = realpathSync(candidate)
50
+ } catch (cause) {
51
+ fail("cannot identify loaded libseccomp: " + String(cause))
52
+ }
53
+ const libraryDigest = createHash("sha256").update(readFileSync(libraryPath)).digest("hex")
54
+ const bunDigest = createHash("sha256").update(readFileSync(realpathSync(process.execPath))).digest("hex")
55
+ const context = library.symbols.seccomp_init(0x7fff0000)
56
+ if (context === null) fail("seccomp_init returned null")
57
+ try {
58
+ for (const name of deniedSyscalls) {
59
+ const bytes = new TextEncoder().encode(name + "\0")
60
+ const syscall = library.symbols.seccomp_syscall_resolve_name(ptr(bytes))
61
+ if (syscall < 0) fail("kernel/libseccomp cannot resolve " + name)
62
+ const result = library.symbols.seccomp_rule_add(context, 0x00050001, syscall, 0)
63
+ if (result !== 0) fail("seccomp_rule_add(" + name + ") returned " + result)
64
+ }
65
+ const loaded = library.symbols.seccomp_load(context)
66
+ if (loaded !== 0) fail("seccomp_load returned " + loaded)
67
+ } finally {
68
+ library.symbols.seccomp_release(context)
69
+ }
70
+ library.close()
71
+ const identity = {
72
+ protocol: "ts-release-seccomp-network-deny/v1",
73
+ helperSha256: helperDigest,
74
+ librarySha256: libraryDigest,
75
+ bunVersion: globalThis["Bun"].version,
76
+ bunSha256: bunDigest,
77
+ kernel: release(),
78
+ architecture: arch(),
79
+ deniedSyscalls
80
+ }
81
+ try {
82
+ writeFileSync(identityPath, JSON.stringify(identity), { encoding: "utf8", flag: "wx", mode: 0o600 })
83
+ } catch (cause) {
84
+ fail("cannot persist isolation identity: " + String(cause))
85
+ }
86
+ const childEnvironment = { ...process.env }
87
+ delete childEnvironment.TS_RELEASE_NETWORK_IDENTITY_FILE
88
+ delete childEnvironment.TS_RELEASE_NETWORK_HELPER_SHA256
89
+ delete childEnvironment.TS_RELEASE_NETWORK_LIBRARY
90
+ // The runtime spawn API preserves caller-provided non-stdio descriptors. Close only the
91
+ // descriptors explicitly inherited without FD_CLOEXEC; Bun's own internal
92
+ // descriptors remain untouched and are closed by exec.
93
+ let libc
94
+ try {
95
+ libc = dlopen("libc.so.6", {
96
+ fcntl: { args: ["i32", "i32"], returns: "i32" },
97
+ close: { args: ["i32"], returns: "i32" }
98
+ })
99
+ for (const item of readdirSync("/proc/self/fd")) {
100
+ const fd = Number(item)
101
+ if (!Number.isSafeInteger(fd) || fd <= 2) continue
102
+ const flags = libc.symbols.fcntl(fd, 1)
103
+ if (flags >= 0 && (flags & 1) === 0) libc.symbols.close(fd)
104
+ }
105
+ libc.close()
106
+ } catch (cause) {
107
+ fail("cannot close inherited non-stdio descriptors: " + String(cause))
108
+ }
109
+ let child
110
+ try {
111
+ child = globalThis["Bun"].spawn(argv, {
112
+ env: childEnvironment,
113
+ stdio: ["ignore", "inherit", "inherit"]
114
+ })
115
+ } catch (cause) {
116
+ fail("isolated child spawn failed: " + String(cause))
117
+ }
118
+ process.exit(await child.exited)
119
+ `;
120
+ export const networkIsolationHelperSource = makeNetworkIsolationHelperSource();
121
+ //# sourceMappingURL=seccomp-helper-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seccomp-helper-source.js","sourceRoot":"","sources":["../../src/drivers/seccomp-helper-source.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,eAAe,GAAG,iBAAiB,EAAU,EAAE,CAAC,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;gEAe3C,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmG9F,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,gCAAgC,EAAE,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { DriverError } from "./errors.js";
2
+ export declare const failure: (reason: string, commitment?: "before-commit" | "unknown") => DriverError;
3
+ export declare const sha256: (bytes: Uint8Array) => string;
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/drivers/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,eAAO,MAAM,OAAO,GAClB,QAAQ,MAAM,EACd,aAAY,eAAe,GAAG,SAA2B,gBACd,CAAA;AAE7C,eAAO,MAAM,MAAM,GAAI,OAAO,UAAU,KAAG,MACO,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { createHash } from "node:crypto";
2
+ import { DriverError } from "./errors.js";
3
+ export const failure = (reason, commitment = "before-commit") => DriverError.make({ reason, commitment });
4
+ export const sha256 = (bytes) => createHash("sha256").update(bytes).digest("hex");
5
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/drivers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,MAAc,EACd,aAA0C,eAAe,EACzD,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;AAE7C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAiB,EAAU,EAAE,CAClD,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ export declare const secureRead: (root: string, path: string) => {
2
+ readonly bytes: Uint8Array;
3
+ readonly inode: number;
4
+ };
5
+ export declare const secureWrite: (root: string, path: string, bytes: Uint8Array | string) => void;
6
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/drivers/workspace.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAe3G,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,EAAE,OAAO,UAAU,GAAG,MAAM,KAAG,IAYpF,CAAA"}
@@ -0,0 +1,49 @@
1
+ import { closeSync, constants, existsSync, fstatSync, fsyncSync, lstatSync, mkdirSync, openSync, readFileSync, realpathSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { contained } from "./contain.js";
4
+ import { DriverError } from "./errors.js";
5
+ const fail = (reason) => DriverError.make({ reason, commitment: "before-commit" });
6
+ export const secureRead = (root, path) => {
7
+ let current = root;
8
+ for (const part of path.split(/[\\/]+/u)) {
9
+ current = join(current, part);
10
+ if (lstatSync(current).isSymbolicLink())
11
+ throw fail("Structured read encountered a symlink.");
12
+ }
13
+ const descriptor = openSync(current, constants.O_RDONLY | constants.O_NOFOLLOW);
14
+ try {
15
+ const opened = fstatSync(descriptor);
16
+ const resolved = realpathSync(current);
17
+ if (!contained(root, resolved))
18
+ throw fail("Opened file escaped the workspace root.");
19
+ const landed = lstatSync(resolved);
20
+ if (landed.ino !== opened.ino || landed.dev !== opened.dev)
21
+ throw fail("Opened file changed identity.");
22
+ return { bytes: new Uint8Array(readFileSync(descriptor)), inode: opened.ino };
23
+ }
24
+ finally {
25
+ closeSync(descriptor);
26
+ }
27
+ };
28
+ export const secureWrite = (root, path, bytes) => {
29
+ const parts = path.split(/[\\/]+/u).filter((part) => part.length > 0);
30
+ let parent = root;
31
+ for (const part of parts.slice(0, -1)) {
32
+ parent = join(parent, part);
33
+ mkdirSync(parent, { recursive: true });
34
+ if (lstatSync(parent).isSymbolicLink())
35
+ throw fail("Structured write encountered a symlink.");
36
+ }
37
+ const target = join(parent, parts.at(-1));
38
+ if (existsSync(target) && lstatSync(target).isSymbolicLink())
39
+ throw fail("Structured write encountered a symlink.");
40
+ const descriptor = openSync(target, constants.O_WRONLY | constants.O_CREAT | constants.O_TRUNC | constants.O_NOFOLLOW, 0o644);
41
+ try {
42
+ writeFileSync(descriptor, bytes);
43
+ fsyncSync(descriptor);
44
+ }
45
+ finally {
46
+ closeSync(descriptor);
47
+ }
48
+ };
49
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/drivers/workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import * as Schema from "effect/Schema";
2
+ import { NonEmptyName } from "../model/primitives.js";
3
+ import type { ReleaseSubject } from "../publication/coordinator.js";
4
+ import { type PublicationProfileRegistration } from "../publication/recovery.js";
5
+ import type { PublicationSubjectServices } from "../capabilities/module.js";
6
+ import type { PreparedBundle } from "../release/prepared-store.js";
7
+ declare const ProviderAdapterContract_base: Schema.Class<ProviderAdapterContract, Schema.Struct<{
8
+ readonly schemaVersion: Schema.Literal<"ts-release/provider-adapter-contract/v1">;
9
+ readonly preparedSubject: Schema.Literal<"typed-canonical-data">;
10
+ readonly identity: Schema.Literal<"canonical-subject-id">;
11
+ readonly observation: Schema.Literal<"exact-equality-and-authoritative-absence">;
12
+ readonly mutation: Schema.Literal<"typed-precondition-and-commitment">;
13
+ readonly credentials: Schema.Literal<"audience-and-purpose-scoped">;
14
+ readonly recovery: Schema.Literal<"coordinator-profile">;
15
+ readonly certification: Schema.Literal<"provider-protocol-and-public-boundary-tests">;
16
+ }>, {}>;
17
+ /**
18
+ * Closed acknowledgements required from every custom application adapter.
19
+ * They are intentionally precise rather than extensible strings: a boolean
20
+ * success callback or generic command publisher cannot satisfy this contract.
21
+ */
22
+ export declare class ProviderAdapterContract extends ProviderAdapterContract_base {
23
+ }
24
+ export interface CustomProviderAdapterInput {
25
+ readonly id: string;
26
+ readonly contract: ProviderAdapterContract;
27
+ readonly profile: PublicationProfileRegistration;
28
+ /**
29
+ * Derive typed subjects only from a verified prepared bundle and opaque host
30
+ * sinks. Returning no subject means this installed application adapter does
31
+ * not apply to that bundle.
32
+ */
33
+ readonly subjects: (bundle: PreparedBundle, services: PublicationSubjectServices) => ReadonlyArray<ReleaseSubject>;
34
+ }
35
+ export interface CustomProviderAdapter extends Omit<CustomProviderAdapterInput, "id"> {
36
+ readonly _tag: "CustomProviderAdapter";
37
+ readonly id: NonEmptyName;
38
+ }
39
+ /** Validate once at custom-application composition time. */
40
+ export declare const makeProviderAdapter: (input: CustomProviderAdapterInput) => CustomProviderAdapter;
41
+ /**
42
+ * Build custom subjects behind the same profile and identity checks used by
43
+ * built-ins. Coordinator construction performs the final request identity,
44
+ * audience, purpose, mutation, prerequisite, and durable-history checks.
45
+ */
46
+ export declare const customProviderSubjects: (bundle: PreparedBundle, adapters: ReadonlyArray<CustomProviderAdapter>, services: PublicationSubjectServices, reservedIds?: ReadonlySet<string>) => ReadonlyArray<ReleaseSubject>;
47
+ export {};
48
+ //# sourceMappingURL=provider-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-adapter.d.ts","sourceRoot":"","sources":["../../src/extensions/provider-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAGL,KAAK,8BAA8B,EACpC,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;;;;;;;;;;;AAElE;;;;GAIG;AACH,qBAAa,uBACX,SAAQ,4BASN;CAAG;AAEP,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAA;IAC1C,QAAQ,CAAC,OAAO,EAAE,8BAA8B,CAAA;IAChD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,CACjB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,0BAA0B,KACjC,aAAa,CAAC,cAAc,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC;IACnF,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAA;IACtC,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAA;CAC1B;AAMD,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,GAAI,OAAO,0BAA0B,KAAG,qBAcvE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,cAAc,EACtB,UAAU,aAAa,CAAC,qBAAqB,CAAC,EAC9C,UAAU,0BAA0B,EACpC,cAAa,WAAW,CAAC,MAAM,CAAa,KAC3C,aAAa,CAAC,cAAc,CAmB9B,CAAA"}
@@ -0,0 +1,64 @@
1
+ import * as Schema from "effect/Schema";
2
+ import { NonEmptyName } from "../model/primitives.js";
3
+ import { assertRecoveryProfileMatches, validatePublicationProfiles } from "../publication/recovery.js";
4
+ /**
5
+ * Closed acknowledgements required from every custom application adapter.
6
+ * They are intentionally precise rather than extensible strings: a boolean
7
+ * success callback or generic command publisher cannot satisfy this contract.
8
+ */
9
+ export class ProviderAdapterContract extends Schema.Class("ProviderAdapterContract")({
10
+ schemaVersion: Schema.Literal("ts-release/provider-adapter-contract/v1"),
11
+ preparedSubject: Schema.Literal("typed-canonical-data"),
12
+ identity: Schema.Literal("canonical-subject-id"),
13
+ observation: Schema.Literal("exact-equality-and-authoritative-absence"),
14
+ mutation: Schema.Literal("typed-precondition-and-commitment"),
15
+ credentials: Schema.Literal("audience-and-purpose-scoped"),
16
+ recovery: Schema.Literal("coordinator-profile"),
17
+ certification: Schema.Literal("provider-protocol-and-public-boundary-tests")
18
+ }) {
19
+ }
20
+ const decodeContract = Schema.decodeUnknownSync(ProviderAdapterContract, {
21
+ onExcessProperty: "error"
22
+ });
23
+ /** Validate once at custom-application composition time. */
24
+ export const makeProviderAdapter = (input) => {
25
+ const contract = decodeContract(input.contract);
26
+ const id = NonEmptyName.make(input.id);
27
+ const profile = validatePublicationProfiles({ [id.toString()]: input.profile })[id.toString()];
28
+ if (profile.id !== id.toString()) {
29
+ throw new Error("A custom provider adapter id must equal its recovery-profile registration id.");
30
+ }
31
+ return Object.freeze({
32
+ _tag: "CustomProviderAdapter",
33
+ ...input,
34
+ id,
35
+ contract,
36
+ profile
37
+ });
38
+ };
39
+ /**
40
+ * Build custom subjects behind the same profile and identity checks used by
41
+ * built-ins. Coordinator construction performs the final request identity,
42
+ * audience, purpose, mutation, prerequisite, and durable-history checks.
43
+ */
44
+ export const customProviderSubjects = (bundle, adapters, services, reservedIds = new Set()) => {
45
+ const result = [];
46
+ const ids = new Set(reservedIds);
47
+ for (const adapter of adapters) {
48
+ const subjects = adapter.subjects(bundle, services);
49
+ for (const subject of subjects) {
50
+ if (ids.has(subject.id.toString())) {
51
+ throw new Error(`Custom provider adapter ${adapter.id} repeats subject ${subject.id}.`);
52
+ }
53
+ assertRecoveryProfileMatches(adapter.profile.id, adapter.profile.recovery, subject.recovery);
54
+ if (subject.observationRequests.some((request) => request.provider.toString() !== adapter.profile.provider) ||
55
+ subject.mutationRequest.provider.toString() !== adapter.profile.provider) {
56
+ throw new Error(`Custom provider adapter ${adapter.id} emitted credential authority for a foreign provider.`);
57
+ }
58
+ ids.add(subject.id.toString());
59
+ result.push(subject);
60
+ }
61
+ }
62
+ return result;
63
+ };
64
+ //# sourceMappingURL=provider-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-adapter.js","sourceRoot":"","sources":["../../src/extensions/provider-adapter.ts"],"names":[],"mappings":"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"}
package/dist/host.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ import type { ReleaseRuntimeShape } from "./api/runtime.js";
2
+ import type { ReleaseApiLayer } from "./api/types.js";
3
+ import type { RunCommand } from "./drivers/process.js";
4
+ import { Sha256Digest, sha256Digest } from "./model/digest.js";
5
+ import { SafeRelativePath, WorkspaceRoot } from "./model/primitives.js";
6
+ import type { CredentialRequest } from "./model/authority.js";
7
+ import { CredentialAudienceMismatch, CredentialPurposeMismatch, CredentialStrategyUnsupported, CredentialSubjectMismatch, CredentialUnavailable, makeCredentialProvider, type CredentialAuthorityError, type CredentialGrant, type CredentialGrantAcquirer, type CredentialGrantDescriptor, type CredentialProviderShape, type MutationCredentialGrant } from "./publication/authority.js";
8
+ import { type AuthorizedMutationHttpShape, type HttpAuthorizationError, type HttpAuthorizerShape, type HttpObservationRequest, type HttpResponse } from "./publication/http.js";
9
+ import { type CertifiedPublisherSpawnShape, type NpmUserConfigResourceShape } from "./publication/publisher.js";
10
+ import { PublicationClaimOccupied, PublicationClaimRequest, PublicationClaimUnavailable, type PublicationClaimError, type PublicationClaimStoreShape } from "./publication/claim.js";
11
+ import { ReleaseContextError, SourceMaterializationError, StagingEntry, StagingSnapshot, VerifiedSource, makeSourceObserver, type SourceObserverRuntime, type SourceObserverShape, type VerifiedReleaseContext } from "./release/context.js";
12
+ import { type PreparedReleaseStoreShape } from "./release/prepared-store.js";
13
+ export { CredentialAudienceMismatch, CredentialPurposeMismatch, CredentialStrategyUnsupported, CredentialSubjectMismatch, CredentialUnavailable, PublicationClaimOccupied, PublicationClaimRequest, PublicationClaimUnavailable, ReleaseContextError, SafeRelativePath, Sha256Digest, SourceMaterializationError, StagingEntry, StagingSnapshot, VerifiedSource, WorkspaceRoot, makeCredentialProvider, makeSourceObserver, sha256Digest };
14
+ export type { CredentialAuthorityError, CredentialGrant, CredentialGrantAcquirer, CredentialGrantDescriptor, CredentialProviderShape, CredentialRequest, HttpAuthorizationError, HttpAuthorizerShape, HttpObservationRequest, HttpResponse, AuthorizedMutationHttpShape, CertifiedPublisherSpawnShape, NpmUserConfigResourceShape, PublicationClaimError, PublicationClaimStoreShape, MutationCredentialGrant, ReleaseRuntimeShape, RunCommand, SourceObserverRuntime, SourceObserverShape, VerifiedReleaseContext };
15
+ /** Structural inputs for a library-owned host integration. */
16
+ export interface CustomReleaseLayerInput {
17
+ readonly runtime: ReleaseRuntimeShape;
18
+ readonly preparedStore: PreparedReleaseStoreShape;
19
+ readonly credentialProvider: CredentialProviderShape;
20
+ readonly httpAuthorizer: HttpAuthorizerShape;
21
+ readonly authorizedMutationHttp: AuthorizedMutationHttpShape;
22
+ readonly npmUserConfigResource: NpmUserConfigResourceShape;
23
+ readonly certifiedPublisherSpawn: CertifiedPublisherSpawnShape;
24
+ /** Required before a durable-cas-required publication can acquire mutation credentials. */
25
+ readonly publicationClaimStore?: PublicationClaimStoreShape;
26
+ }
27
+ /**
28
+ * Compose the complete API service boundary without exposing Context service
29
+ * tags. Credentials remain opaque grants and HTTP authorization remains a
30
+ * host-owned elimination boundary.
31
+ */
32
+ export declare const makeCustomReleaseLayer: (input: CustomReleaseLayerInput) => ReleaseApiLayer;
33
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
package/dist/host.js ADDED
@@ -0,0 +1,20 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { ReleaseRuntime } from "./api/runtime.js";
3
+ import { Sha256Digest, sha256Digest } from "./model/digest.js";
4
+ import { SafeRelativePath, WorkspaceRoot } from "./model/primitives.js";
5
+ import { CredentialAudienceMismatch, CredentialProvider, CredentialPurposeMismatch, CredentialStrategyUnsupported, CredentialSubjectMismatch, CredentialUnavailable, makeCredentialProvider } from "./publication/authority.js";
6
+ import { AuthorizedMutationHttp, HttpAuthorizer } from "./publication/http.js";
7
+ import { CertifiedPublisherSpawn, NpmUserConfigResource } from "./publication/publisher.js";
8
+ import { PublicationClaimOccupied, PublicationClaimRequest, PublicationClaimStore, PublicationClaimUnavailable } from "./publication/claim.js";
9
+ import { ReleaseContextError, SourceMaterializationError, StagingEntry, StagingSnapshot, VerifiedSource, makeSourceObserver } from "./release/context.js";
10
+ import { PreparedReleaseStore } from "./release/prepared-store.js";
11
+ export { CredentialAudienceMismatch, CredentialPurposeMismatch, CredentialStrategyUnsupported, CredentialSubjectMismatch, CredentialUnavailable, PublicationClaimOccupied, PublicationClaimRequest, PublicationClaimUnavailable, ReleaseContextError, SafeRelativePath, Sha256Digest, SourceMaterializationError, StagingEntry, StagingSnapshot, VerifiedSource, WorkspaceRoot, makeCredentialProvider, makeSourceObserver, sha256Digest };
12
+ /**
13
+ * Compose the complete API service boundary without exposing Context service
14
+ * tags. Credentials remain opaque grants and HTTP authorization remains a
15
+ * host-owned elimination boundary.
16
+ */
17
+ export const makeCustomReleaseLayer = (input) => Layer.mergeAll(Layer.succeed(ReleaseRuntime, input.runtime), Layer.succeed(PreparedReleaseStore, input.preparedStore), Layer.succeed(CredentialProvider, input.credentialProvider), Layer.succeed(HttpAuthorizer, input.httpAuthorizer), Layer.succeed(AuthorizedMutationHttp, input.authorizedMutationHttp), Layer.succeed(NpmUserConfigResource, input.npmUserConfigResource), Layer.succeed(CertifiedPublisherSpawn, input.certifiedPublisherSpawn), ...(input.publicationClaimStore === undefined
18
+ ? []
19
+ : [Layer.succeed(PublicationClaimStore, input.publicationClaimStore)]));
20
+ //# sourceMappingURL=host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEvE,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,yBAAyB,EACzB,6BAA6B,EAC7B,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EAOvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,sBAAsB,EACtB,cAAc,EAMf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EAGtB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAG5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,YAAY,EACZ,eAAe,EACf,cAAc,EACd,kBAAkB,EAInB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,oBAAoB,EAErB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,EAC7B,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,EAC1B,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACb,CAAA;AAuCD;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,KAA8B,EACb,EAAE,CAAC,KAAK,CAAC,QAAQ,CAClC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,EAC5C,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,aAAa,CAAC,EACxD,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,CAAC,EAC3D,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,EACnD,KAAK,CAAC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,CAAC,EACnE,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,CAAC,EACjE,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,KAAK,CAAC,uBAAuB,CAAC,EACrE,GAAG,CAAC,KAAK,CAAC,qBAAqB,KAAK,SAAS;IAC3C,CAAC,CAAC,EAAE;IACJ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CACzE,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,20 @@
1
- export {};
1
+ declare global {
2
+ const SchemaErrorTypeId: unique symbol;
3
+ }
4
+ export { CorrectionReport, correct, inspect, makeReleaseApi, observe, prepare, publish, release } from "./api/api.js";
5
+ export type { CorrectInput, InspectInput, InspectOutput, ObserveInput, PrepareInput, PublishInput, ReleaseApi, ReleaseApiLayer, ReleaseApiOptions, ReleaseInput, ReleaseResult } from "./api/types.js";
6
+ export { AuthoredCatalogForwardCorrection, AuthoredGithubReleaseAmendment, AuthoredNpmDeprecation, decodeAuthoredCorrection } from "./correction/intent.js";
7
+ export type { AuthoredCorrection } from "./correction/intent.js";
8
+ export { PreparationModeUnsupported, ReleaseAbortedError, ReleaseIncompleteError, ReleaseInputError, ReleasePreparationError } from "./api/errors.js";
9
+ export { CredentialStrategyUnsupported, CredentialUnavailable } from "./publication/authority.js";
10
+ export { CredentialFailureCause, CredentialStrategyUnsupportedCause, CredentialUnavailableCause, ObservationReport, ReleaseReport } from "./publication/report.js";
11
+ export { CompletePreparedReleaseRef, GitHubActionsCompletePreparedReleaseRef, LocalCompletePreparedReleaseRef, PreparedReleaseRefCodecError, PreparedReleaseRefMalformedError, PreparedReleaseRefUnknownSchemeError, decodeCompletePreparedReleaseRef, encodeCompletePreparedReleaseRef, makeGitHubActionsCompletePreparedReleaseRef, makeLocalCompletePreparedReleaseRef } from "./release/prepared-ref.js";
12
+ export type { PreparedReleaseSha256 } from "./release/prepared-ref.js";
13
+ export { ReleaseRuntime } from "./api/runtime.js";
14
+ export { unsupportedExecutionHost } from "./platform/host-support.js";
15
+ export { resolveConfig } from "./resolve/resolve.js";
16
+ export type { AuthoredConfig, AuthoredProject } from "./resolve/authored.js";
17
+ export type { ObservedFacts } from "./resolve/facts.js";
18
+ export { encodeResolvedConfig } from "./resolve/encode.js";
19
+ export declare const defineRelease: <const Config>(config: Config) => Config;
2
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACb,MAAM,iBAAiB,EAAE,OAAO,MAAM,CAAA;CACvC;AAED,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,cAAc,EACd,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACR,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,gCAAgC,EAChC,8BAA8B,EAC9B,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EACL,0BAA0B,EAAE,mBAAmB,EAAE,sBAAsB,EACvE,iBAAiB,EAAE,uBAAuB,EAC3C,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACtB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,sBAAsB,EACtB,kCAAkC,EAClC,0BAA0B,EAC1B,iBAAiB,EACjB,aAAa,EACd,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,0BAA0B,EAAE,uCAAuC,EACnE,+BAA+B,EAAE,4BAA4B,EAC7D,gCAAgC,EAAE,oCAAoC,EACtE,gCAAgC,EAAE,gCAAgC,EAClE,2CAA2C,EAAE,mCAAmC,EACjF,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5E,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,eAAO,MAAM,aAAa,GAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,MAAM,KAAG,MAAgB,CAAA"}
package/dist/index.js CHANGED
@@ -1,2 +1,13 @@
1
- export {};
1
+ // The root is the intentionally small public lifecycle surface.
2
+ export { CorrectionReport, correct, inspect, makeReleaseApi, observe, prepare, publish, release } from "./api/api.js";
3
+ export { AuthoredCatalogForwardCorrection, AuthoredGithubReleaseAmendment, AuthoredNpmDeprecation, decodeAuthoredCorrection } from "./correction/intent.js";
4
+ export { PreparationModeUnsupported, ReleaseAbortedError, ReleaseIncompleteError, ReleaseInputError, ReleasePreparationError } from "./api/errors.js";
5
+ export { CredentialStrategyUnsupported, CredentialUnavailable } from "./publication/authority.js";
6
+ export { CredentialFailureCause, CredentialStrategyUnsupportedCause, CredentialUnavailableCause, ObservationReport, ReleaseReport } from "./publication/report.js";
7
+ export { CompletePreparedReleaseRef, GitHubActionsCompletePreparedReleaseRef, LocalCompletePreparedReleaseRef, PreparedReleaseRefCodecError, PreparedReleaseRefMalformedError, PreparedReleaseRefUnknownSchemeError, decodeCompletePreparedReleaseRef, encodeCompletePreparedReleaseRef, makeGitHubActionsCompletePreparedReleaseRef, makeLocalCompletePreparedReleaseRef } from "./release/prepared-ref.js";
8
+ export { ReleaseRuntime } from "./api/runtime.js";
9
+ export { unsupportedExecutionHost } from "./platform/host-support.js";
10
+ export { resolveConfig } from "./resolve/resolve.js";
11
+ export { encodeResolvedConfig } from "./resolve/encode.js";
12
+ export const defineRelease = (config) => config;
2
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,gEAAgE;AAChE,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,cAAc,EACd,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACR,MAAM,cAAc,CAAA;AAcrB,OAAO,EACL,gCAAgC,EAChC,8BAA8B,EAC9B,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,0BAA0B,EAAE,mBAAmB,EAAE,sBAAsB,EACvE,iBAAiB,EAAE,uBAAuB,EAC3C,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACtB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,sBAAsB,EACtB,kCAAkC,EAClC,0BAA0B,EAC1B,iBAAiB,EACjB,aAAa,EACd,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,0BAA0B,EAAE,uCAAuC,EACnE,+BAA+B,EAAE,4BAA4B,EAC7D,gCAAgC,EAAE,oCAAoC,EACtE,gCAAgC,EAAE,gCAAgC,EAClE,2CAA2C,EAAE,mCAAmC,EACjF,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAe,MAAc,EAAU,EAAE,CAAC,MAAM,CAAA"}
@@ -0,0 +1,84 @@
1
+ import * as Schema from "effect/Schema";
2
+ import { OutputId, SafeRelativePath } from "./primitives.js";
3
+ export declare const ArtifactCollectionId: Schema.brand<Schema.NonEmptyString, "ArtifactCollectionId">;
4
+ export type ArtifactCollectionId = typeof ArtifactCollectionId.Type;
5
+ export declare const CollectionArtifactKind: Schema.Literals<readonly ["file", "executable", "archive", "digest"]>;
6
+ export type CollectionArtifactKind = typeof CollectionArtifactKind.Type;
7
+ export declare const ArtifactPathSuffix: Schema.brand<Schema.NonEmptyString, "ArtifactPathSuffix">;
8
+ export type ArtifactPathSuffix = typeof ArtifactPathSuffix.Type;
9
+ export declare const ArtifactCollectionRoot: Schema.brand<Schema.brand<Schema.String, "SafeRelativePath">, "ArtifactCollectionRoot">;
10
+ export type ArtifactCollectionRoot = typeof ArtifactCollectionRoot.Type;
11
+ declare const OneArtifactCardinality_base: Schema.Class<OneArtifactCardinality, Schema.Struct<{
12
+ readonly kind: Schema.Literal<"one">;
13
+ }>, {}>;
14
+ export declare class OneArtifactCardinality extends OneArtifactCardinality_base {
15
+ }
16
+ declare const OneOrMoreArtifactCardinality_base: Schema.Class<OneOrMoreArtifactCardinality, Schema.Struct<{
17
+ readonly kind: Schema.Literal<"one-or-more">;
18
+ }>, {}>;
19
+ export declare class OneOrMoreArtifactCardinality extends OneOrMoreArtifactCardinality_base {
20
+ }
21
+ declare const BoundedArtifactCardinality_base: Schema.Class<BoundedArtifactCardinality, Schema.Struct<{
22
+ readonly kind: Schema.Literal<"bounded">;
23
+ readonly minimum: Schema.Number;
24
+ readonly maximum: Schema.Number;
25
+ }>, {}>;
26
+ export declare class BoundedArtifactCardinality extends BoundedArtifactCardinality_base {
27
+ }
28
+ export declare const ArtifactCardinality: Schema.Union<readonly [typeof OneArtifactCardinality, typeof OneOrMoreArtifactCardinality, typeof BoundedArtifactCardinality]>;
29
+ export type ArtifactCardinality = typeof ArtifactCardinality.Type;
30
+ declare const ArtifactCollectionContract_base: Schema.Class<ArtifactCollectionContract, Schema.Struct<{
31
+ readonly id: Schema.brand<Schema.NonEmptyString, "ArtifactCollectionId">;
32
+ readonly producer: Schema.brand<Schema.NonEmptyString, "OperationId">;
33
+ readonly root: Schema.brand<Schema.brand<Schema.String, "SafeRelativePath">, "ArtifactCollectionRoot">;
34
+ readonly artifactKind: Schema.Literals<readonly ["file", "executable", "archive", "digest"]>;
35
+ readonly pathSuffix: Schema.brand<Schema.NonEmptyString, "ArtifactPathSuffix">;
36
+ readonly mediaType: Schema.NonEmptyString;
37
+ readonly cardinality: Schema.Union<readonly [typeof OneArtifactCardinality, typeof OneOrMoreArtifactCardinality, typeof BoundedArtifactCardinality]>;
38
+ }>, {}>;
39
+ /**
40
+ * One command-owned dynamic output set. A collection intentionally permits one
41
+ * artifact kind and one filename suffix: heterogeneous output sets must be
42
+ * split into independently selectable contracts.
43
+ */
44
+ export declare class ArtifactCollectionContract extends ArtifactCollectionContract_base {
45
+ }
46
+ declare const ArtifactCollectionSelector_base: Schema.Class<ArtifactCollectionSelector, Schema.Struct<{
47
+ readonly collection: Schema.brand<Schema.NonEmptyString, "ArtifactCollectionId">;
48
+ readonly artifactKind: Schema.Literals<readonly ["file", "executable", "archive", "digest"]>;
49
+ readonly pathSuffix: Schema.brand<Schema.NonEmptyString, "ArtifactPathSuffix">;
50
+ readonly mediaType: Schema.NonEmptyString;
51
+ readonly cardinality: Schema.Union<readonly [typeof OneArtifactCardinality, typeof OneOrMoreArtifactCardinality, typeof BoundedArtifactCardinality]>;
52
+ }>, {}>;
53
+ /** A downstream requirement over a stable collection identity. */
54
+ export declare class ArtifactCollectionSelector extends ArtifactCollectionSelector_base {
55
+ }
56
+ declare const ArtifactCollectionMember_base: Schema.Class<ArtifactCollectionMember, Schema.Struct<{
57
+ readonly key: Schema.brand<Schema.String, "SafeRelativePath">;
58
+ readonly artifactId: Schema.brand<Schema.NonEmptyString, "OutputId">;
59
+ }>, {}>;
60
+ /** Exact runtime member identity persisted beside the prepared artifacts. */
61
+ export declare class ArtifactCollectionMember extends ArtifactCollectionMember_base {
62
+ }
63
+ export interface CardinalityRange {
64
+ readonly minimum: number;
65
+ readonly maximum?: number;
66
+ }
67
+ export declare const cardinalityRange: (value: ArtifactCardinality) => CardinalityRange;
68
+ export declare const cardinalityIssue: (value: ArtifactCardinality) => string | undefined;
69
+ /** Reject kind/media/suffix combinations whose observable claims conflict. */
70
+ export declare const collectionContractIssue: (value: Pick<ArtifactCollectionContract, "artifactKind" | "pathSuffix" | "mediaType">) => string | undefined;
71
+ /** Byte-level checks for the formats whose kind is portable and observable. */
72
+ export declare const collectionMemberBytesIssue: (contract: ArtifactCollectionContract, bytes: Uint8Array) => string | undefined;
73
+ export declare const cardinalityAccepts: (value: ArtifactCardinality, count: number) => boolean;
74
+ export declare const cardinalitiesOverlap: (left: ArtifactCardinality, right: ArtifactCardinality) => boolean;
75
+ /** Paths discovered from directory entries must already be portable canon. */
76
+ export declare const normalizeCollectionMemberKey: (value: string) => SafeRelativePath;
77
+ /**
78
+ * Stable output identity is a digest of the declared producer/contract and the
79
+ * normalized member key. No guessed runtime filename becomes graph authority.
80
+ */
81
+ export declare const collectionMemberId: (contract: ArtifactCollectionContract, key: SafeRelativePath) => OutputId;
82
+ export declare const collectionMemberPath: (contract: ArtifactCollectionContract, key: SafeRelativePath) => SafeRelativePath;
83
+ export {};
84
+ //# sourceMappingURL=artifact-collection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-collection.d.ts","sourceRoot":"","sources":["../../src/model/artifact-collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAe,QAAQ,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEzE,eAAO,MAAM,oBAAoB,6DAIY,CAAA;AAC7C,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AAEnE,eAAO,MAAM,sBAAsB,uEAKjC,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAA;AAEvE,eAAO,MAAM,kBAAkB,2DAIY,CAAA;AAC3C,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAA;AAE/D,eAAO,MAAM,sBAAsB,yFAIY,CAAA;AAC/C,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAA;;;;AAQvE,qBAAa,sBACX,SAAQ,2BAEN;CAAG;;;;AAEP,qBAAa,4BACX,SAAQ,iCAEN;CAAG;;;;;;AAEP,qBAAa,0BACX,SAAQ,+BAIN;CAAG;AAQP,eAAO,MAAM,mBAAmB,gIAI9B,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;;;;;;;;;;AAEjE;;;;GAIG;AACH,qBAAa,0BACX,SAAQ,+BAQN;CAAG;;;;;;;;AAEP,kEAAkE;AAClE,qBAAa,0BACX,SAAQ,+BAMN;CAAG;;;;;AAEP,6EAA6E;AAC7E,qBAAa,wBACX,SAAQ,6BAGN;CAAG;AAEP,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,mBAAmB,KAAG,gBAM7D,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,mBAAmB,KAAG,MAAM,GAAG,SAMtE,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,GAClC,OAAO,IAAI,CAAC,0BAA0B,EAAE,cAAc,GAAG,YAAY,GAAG,WAAW,CAAC,KACnF,MAAM,GAAG,SAoBX,CAAA;AAED,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,GACrC,UAAU,0BAA0B,EACpC,OAAO,UAAU,KAChB,MAAM,GAAG,SA4BX,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,OAAO,mBAAmB,EAAE,OAAO,MAAM,KAAG,OAI9E,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,MAAM,mBAAmB,EACzB,OAAO,mBAAmB,KACzB,OASF,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,4BAA4B,GAAI,OAAO,MAAM,KAAG,gBAK5D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,0BAA0B,EACpC,KAAK,gBAAgB,KACpB,QAaM,CAAA;AAET,eAAO,MAAM,oBAAoB,GAC/B,UAAU,0BAA0B,EACpC,KAAK,gBAAgB,KACpB,gBAAoE,CAAA"}