@mannyc1/ts-release 0.0.7 → 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.
- package/ARCHITECTURE.md +124 -92
- package/CHANGELOG.md +115 -0
- package/LICENSE +21 -0
- package/README.md +278 -324
- package/SPEC.md +206 -310
- package/apps/release-ts/README.md +32 -0
- package/apps/release-ts/src/cli/command.ts +164 -0
- package/apps/release-ts/src/cli/commands.ts +351 -0
- package/apps/release-ts/src/cli/main.ts +43 -0
- package/apps/release-ts/src/cli/node-main.ts +49 -0
- package/apps/ts-release-agents/LICENSE +21 -0
- package/apps/ts-release-agents/README.md +21 -0
- package/apps/ts-release-agents/evals/cases.json +11 -0
- package/apps/ts-release-agents/manifests/claude.json +5 -0
- package/apps/ts-release-agents/manifests/codex.json +5 -0
- package/apps/ts-release-agents/package.json +11 -0
- package/apps/ts-release-agents/skills/release/SKILL.md +48 -0
- package/apps/ts-release-agents/skills/release/references/configuration.md +18 -0
- package/apps/ts-release-agents/skills/release/references/recovery.md +10 -0
- package/apps/ts-release-agents/skills/release/references/staged-workflow.md +12 -0
- package/apps/ts-release-agents/skills/release/references/target-selection.md +13 -0
- package/apps/ts-release-agents/skills/release/references/verification.md +14 -0
- package/apps/ts-release-agents/src/build.ts +105 -0
- package/apps/ts-release-agents/src/check.ts +117 -0
- package/apps/ts-release-agents/src/install.ts +121 -0
- package/apps/ts-release-agents/test/contract.test.ts +56 -0
- package/apps/ts-release-agents/tsconfig.json +5 -0
- package/dist/api/api.d.ts +15 -0
- package/dist/api/api.d.ts.map +1 -0
- package/dist/api/api.js +244 -0
- package/dist/api/api.js.map +1 -0
- package/dist/api/errors.d.ts +39 -0
- package/dist/api/errors.d.ts.map +1 -0
- package/dist/api/errors.js +32 -0
- package/dist/api/errors.js.map +1 -0
- package/dist/api/input.d.ts +10 -0
- package/dist/api/input.d.ts.map +1 -0
- package/dist/api/input.js +73 -0
- package/dist/api/input.js.map +1 -0
- package/dist/api/runtime.d.ts +18 -0
- package/dist/api/runtime.d.ts.map +1 -0
- package/dist/api/runtime.js +7 -0
- package/dist/api/runtime.js.map +1 -0
- package/dist/api/types.d.ts +76 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +17 -0
- package/dist/api/types.js.map +1 -0
- package/dist/bin/ts-release.js +39239 -0
- package/dist/capabilities/bun-targets.d.ts +3 -0
- package/dist/capabilities/bun-targets.d.ts.map +1 -0
- package/dist/capabilities/bun-targets.js +3 -0
- package/dist/capabilities/bun-targets.js.map +1 -0
- package/dist/capabilities/field-ownership.d.ts +17 -0
- package/dist/capabilities/field-ownership.d.ts.map +1 -0
- package/dist/capabilities/field-ownership.js +40 -0
- package/dist/capabilities/field-ownership.js.map +1 -0
- package/dist/capabilities/module.d.ts +91 -0
- package/dist/capabilities/module.d.ts.map +1 -0
- package/dist/capabilities/module.js +2 -0
- package/dist/capabilities/module.js.map +1 -0
- package/dist/capabilities/registry.d.ts +829 -0
- package/dist/capabilities/registry.d.ts.map +1 -0
- package/dist/capabilities/registry.js +291 -0
- package/dist/capabilities/registry.js.map +1 -0
- package/dist/config/config.d.ts +6 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +42 -0
- package/dist/config/config.js.map +1 -0
- package/dist/correction/coordinator.d.ts +248 -0
- package/dist/correction/coordinator.d.ts.map +1 -0
- package/dist/correction/coordinator.js +274 -0
- package/dist/correction/coordinator.js.map +1 -0
- package/dist/correction/index.d.ts +3 -0
- package/dist/correction/index.d.ts.map +1 -0
- package/dist/correction/index.js +3 -0
- package/dist/correction/index.js.map +1 -0
- package/dist/correction/intent.d.ts +111 -0
- package/dist/correction/intent.d.ts.map +1 -0
- package/dist/correction/intent.js +146 -0
- package/dist/correction/intent.js.map +1 -0
- package/dist/drivers/archive.d.ts +8 -0
- package/dist/drivers/archive.d.ts.map +1 -0
- package/dist/drivers/archive.js +101 -0
- package/dist/drivers/archive.js.map +1 -0
- package/dist/drivers/contain.d.ts +6 -0
- package/dist/drivers/contain.d.ts.map +1 -0
- package/dist/drivers/contain.js +17 -0
- package/dist/drivers/contain.js.map +1 -0
- package/dist/drivers/environment.d.ts +4 -0
- package/dist/drivers/environment.d.ts.map +1 -0
- package/dist/drivers/environment.js +18 -0
- package/dist/drivers/environment.js.map +1 -0
- package/dist/drivers/errors.d.ts +9 -0
- package/dist/drivers/errors.d.ts.map +1 -0
- package/dist/drivers/errors.js +6 -0
- package/dist/drivers/errors.js.map +1 -0
- package/dist/drivers/glob.d.ts +2 -0
- package/dist/drivers/glob.d.ts.map +1 -0
- package/dist/drivers/glob.js +162 -0
- package/dist/drivers/glob.js.map +1 -0
- package/dist/drivers/process.d.ts +48 -0
- package/dist/drivers/process.d.ts.map +1 -0
- package/dist/drivers/process.js +257 -0
- package/dist/drivers/process.js.map +1 -0
- package/dist/drivers/redact.d.ts +4 -0
- package/dist/drivers/redact.d.ts.map +1 -0
- package/dist/drivers/redact.js +24 -0
- package/dist/drivers/redact.js.map +1 -0
- package/dist/drivers/seccomp-helper-source.d.ts +7 -0
- package/dist/drivers/seccomp-helper-source.d.ts.map +1 -0
- package/dist/drivers/seccomp-helper-source.js +121 -0
- package/dist/drivers/seccomp-helper-source.js.map +1 -0
- package/dist/drivers/utils.d.ts +4 -0
- package/dist/drivers/utils.d.ts.map +1 -0
- package/dist/drivers/utils.js +5 -0
- package/dist/drivers/utils.js.map +1 -0
- package/dist/drivers/workspace.d.ts +6 -0
- package/dist/drivers/workspace.d.ts.map +1 -0
- package/dist/drivers/workspace.js +49 -0
- package/dist/drivers/workspace.js.map +1 -0
- package/dist/extensions/provider-adapter.d.ts +48 -0
- package/dist/extensions/provider-adapter.d.ts.map +1 -0
- package/dist/extensions/provider-adapter.js +64 -0
- package/dist/extensions/provider-adapter.js.map +1 -0
- package/dist/host.d.ts +33 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +20 -0
- package/dist/host.js.map +1 -0
- package/dist/index.d.ts +19 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/model/artifact-collection.d.ts +84 -0
- package/dist/model/artifact-collection.d.ts.map +1 -0
- package/dist/model/artifact-collection.js +185 -0
- package/dist/model/artifact-collection.js.map +1 -0
- package/dist/model/authority.d.ts +89 -0
- package/dist/model/authority.d.ts.map +1 -0
- package/dist/model/authority.js +80 -0
- package/dist/model/authority.js.map +1 -0
- package/dist/model/bun-targets.d.ts +34 -0
- package/dist/model/bun-targets.d.ts.map +1 -0
- package/dist/model/bun-targets.js +17 -0
- package/dist/model/bun-targets.js.map +1 -0
- package/dist/model/canonical.d.ts +8 -0
- package/dist/model/canonical.d.ts.map +1 -0
- package/dist/model/canonical.js +205 -0
- package/dist/model/canonical.js.map +1 -0
- package/dist/model/catalog.d.ts +76 -0
- package/dist/model/catalog.d.ts.map +1 -0
- package/dist/model/catalog.js +174 -0
- package/dist/model/catalog.js.map +1 -0
- package/dist/model/digest.d.ts +53 -0
- package/dist/model/digest.d.ts.map +1 -0
- package/dist/model/digest.js +127 -0
- package/dist/model/digest.js.map +1 -0
- package/dist/model/errors.d.ts +14 -0
- package/dist/model/errors.d.ts.map +1 -0
- package/dist/model/errors.js +8 -0
- package/dist/model/errors.js.map +1 -0
- package/dist/model/primitives.d.ts +19 -0
- package/dist/model/primitives.d.ts.map +1 -0
- package/dist/model/primitives.js +18 -0
- package/dist/model/primitives.js.map +1 -0
- package/dist/model/pypi.d.ts +12 -0
- package/dist/model/pypi.d.ts.map +1 -0
- package/dist/model/pypi.js +20 -0
- package/dist/model/pypi.js.map +1 -0
- package/dist/model/python-distribution.d.ts +33 -0
- package/dist/model/python-distribution.d.ts.map +1 -0
- package/dist/model/python-distribution.js +367 -0
- package/dist/model/python-distribution.js.map +1 -0
- package/dist/model/secret-patterns.d.ts +2 -0
- package/dist/model/secret-patterns.d.ts.map +1 -0
- package/dist/model/secret-patterns.js +12 -0
- package/dist/model/secret-patterns.js.map +1 -0
- package/dist/platform/bun.d.ts +7 -0
- package/dist/platform/bun.d.ts.map +1 -0
- package/dist/platform/bun.js +15 -0
- package/dist/platform/bun.js.map +1 -0
- package/dist/platform/credentials.d.ts +32 -0
- package/dist/platform/credentials.d.ts.map +1 -0
- package/dist/platform/credentials.js +772 -0
- package/dist/platform/credentials.js.map +1 -0
- package/dist/platform/host-support.d.ts +2 -0
- package/dist/platform/host-support.d.ts.map +1 -0
- package/dist/platform/host-support.js +4 -0
- package/dist/platform/host-support.js.map +1 -0
- package/dist/platform/node.d.ts +7 -0
- package/dist/platform/node.d.ts.map +1 -0
- package/dist/platform/node.js +15 -0
- package/dist/platform/node.js.map +1 -0
- package/dist/platform/release-runtime.d.ts +11 -0
- package/dist/platform/release-runtime.d.ts.map +1 -0
- package/dist/platform/release-runtime.js +34 -0
- package/dist/platform/release-runtime.js.map +1 -0
- package/dist/platform/services.d.ts +15 -0
- package/dist/platform/services.d.ts.map +1 -0
- package/dist/platform/services.js +30 -0
- package/dist/platform/services.js.map +1 -0
- package/dist/platform/source-observer.d.ts +5 -0
- package/dist/platform/source-observer.d.ts.map +1 -0
- package/dist/platform/source-observer.js +159 -0
- package/dist/platform/source-observer.js.map +1 -0
- package/dist/provider-sdk.d.ts +14 -0
- package/dist/provider-sdk.d.ts.map +1 -0
- package/dist/provider-sdk.js +10 -0
- package/dist/provider-sdk.js.map +1 -0
- package/dist/publication/adapter.d.ts +212 -0
- package/dist/publication/adapter.d.ts.map +1 -0
- package/dist/publication/adapter.js +83 -0
- package/dist/publication/adapter.js.map +1 -0
- package/dist/publication/authority.d.ts +137 -0
- package/dist/publication/authority.d.ts.map +1 -0
- package/dist/publication/authority.js +233 -0
- package/dist/publication/authority.js.map +1 -0
- package/dist/publication/catalog-git.d.ts +37 -0
- package/dist/publication/catalog-git.d.ts.map +1 -0
- package/dist/publication/catalog-git.js +451 -0
- package/dist/publication/catalog-git.js.map +1 -0
- package/dist/publication/claim.d.ts +39 -0
- package/dist/publication/claim.d.ts.map +1 -0
- package/dist/publication/claim.js +31 -0
- package/dist/publication/claim.js.map +1 -0
- package/dist/publication/coordinator.d.ts +246 -0
- package/dist/publication/coordinator.d.ts.map +1 -0
- package/dist/publication/coordinator.js +370 -0
- package/dist/publication/coordinator.js.map +1 -0
- package/dist/publication/github.d.ts +36 -0
- package/dist/publication/github.d.ts.map +1 -0
- package/dist/publication/github.js +644 -0
- package/dist/publication/github.js.map +1 -0
- package/dist/publication/http.d.ts +69 -0
- package/dist/publication/http.d.ts.map +1 -0
- package/dist/publication/http.js +29 -0
- package/dist/publication/http.js.map +1 -0
- package/dist/publication/index.d.ts +5 -0
- package/dist/publication/index.d.ts.map +1 -0
- package/dist/publication/index.js +5 -0
- package/dist/publication/index.js.map +1 -0
- package/dist/publication/npm.d.ts +40 -0
- package/dist/publication/npm.d.ts.map +1 -0
- package/dist/publication/npm.js +359 -0
- package/dist/publication/npm.js.map +1 -0
- package/dist/publication/profiles.d.ts +136 -0
- package/dist/publication/profiles.d.ts.map +1 -0
- package/dist/publication/profiles.js +90 -0
- package/dist/publication/profiles.js.map +1 -0
- package/dist/publication/publisher.d.ts +82 -0
- package/dist/publication/publisher.d.ts.map +1 -0
- package/dist/publication/publisher.js +53 -0
- package/dist/publication/publisher.js.map +1 -0
- package/dist/publication/pypi.d.ts +45 -0
- package/dist/publication/pypi.d.ts.map +1 -0
- package/dist/publication/pypi.js +369 -0
- package/dist/publication/pypi.js.map +1 -0
- package/dist/publication/recovery.d.ts +663 -0
- package/dist/publication/recovery.d.ts.map +1 -0
- package/dist/publication/recovery.js +252 -0
- package/dist/publication/recovery.js.map +1 -0
- package/dist/publication/report.d.ts +1061 -0
- package/dist/publication/report.d.ts.map +1 -0
- package/dist/publication/report.js +441 -0
- package/dist/publication/report.js.map +1 -0
- package/dist/recipes/config.d.ts +296 -0
- package/dist/recipes/config.d.ts.map +1 -0
- package/dist/recipes/config.js +325 -0
- package/dist/recipes/config.js.map +1 -0
- package/dist/release/capabilities.d.ts +12 -0
- package/dist/release/capabilities.d.ts.map +1 -0
- package/dist/release/capabilities.js +395 -0
- package/dist/release/capabilities.js.map +1 -0
- package/dist/release/compiler.d.ts +5 -0
- package/dist/release/compiler.d.ts.map +1 -0
- package/dist/release/compiler.js +19 -0
- package/dist/release/compiler.js.map +1 -0
- package/dist/release/config.d.ts +5 -0
- package/dist/release/config.d.ts.map +1 -0
- package/dist/release/config.js +10 -0
- package/dist/release/config.js.map +1 -0
- package/dist/release/context.d.ts +96 -0
- package/dist/release/context.d.ts.map +1 -0
- package/dist/release/context.js +168 -0
- package/dist/release/context.js.map +1 -0
- package/dist/release/graph.d.ts +271 -0
- package/dist/release/graph.d.ts.map +1 -0
- package/dist/release/graph.js +766 -0
- package/dist/release/graph.js.map +1 -0
- package/dist/release/inspect.d.ts +88 -0
- package/dist/release/inspect.d.ts.map +1 -0
- package/dist/release/inspect.js +75 -0
- package/dist/release/inspect.js.map +1 -0
- package/dist/release/prepare.d.ts +24 -0
- package/dist/release/prepare.d.ts.map +1 -0
- package/dist/release/prepare.js +1116 -0
- package/dist/release/prepare.js.map +1 -0
- package/dist/release/prepared-ref.d.ts +60 -0
- package/dist/release/prepared-ref.d.ts.map +1 -0
- package/dist/release/prepared-ref.js +131 -0
- package/dist/release/prepared-ref.js.map +1 -0
- package/dist/release/prepared-store.d.ts +90 -0
- package/dist/release/prepared-store.d.ts.map +1 -0
- package/dist/release/prepared-store.js +337 -0
- package/dist/release/prepared-store.js.map +1 -0
- package/dist/release/prepared.d.ts +172 -0
- package/dist/release/prepared.d.ts.map +1 -0
- package/dist/release/prepared.js +268 -0
- package/dist/release/prepared.js.map +1 -0
- package/dist/release/staging.d.ts +31 -0
- package/dist/release/staging.d.ts.map +1 -0
- package/dist/release/staging.js +218 -0
- package/dist/release/staging.js.map +1 -0
- package/dist/resolve/authored.d.ts +53 -0
- package/dist/resolve/authored.d.ts.map +1 -0
- package/dist/resolve/authored.js +55 -0
- package/dist/resolve/authored.js.map +1 -0
- package/dist/resolve/encode.d.ts +3 -0
- package/dist/resolve/encode.d.ts.map +1 -0
- package/dist/resolve/encode.js +21 -0
- package/dist/resolve/encode.js.map +1 -0
- package/dist/resolve/errors.d.ts +7 -0
- package/dist/resolve/errors.d.ts.map +1 -0
- package/dist/resolve/errors.js +17 -0
- package/dist/resolve/errors.js.map +1 -0
- package/dist/resolve/facts.d.ts +12 -0
- package/dist/resolve/facts.d.ts.map +1 -0
- package/dist/resolve/facts.js +18 -0
- package/dist/resolve/facts.js.map +1 -0
- package/dist/resolve/resolve.d.ts +10 -0
- package/dist/resolve/resolve.d.ts.map +1 -0
- package/dist/resolve/resolve.js +242 -0
- package/dist/resolve/resolve.js.map +1 -0
- package/dist/store.d.ts +11 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +9 -0
- package/dist/store.js.map +1 -0
- package/examples/README.md +20 -30
- package/examples/github-release/release.config.json +11 -18
- package/examples/homebrew-tap/README.md +11 -0
- package/examples/homebrew-tap/release.config.json +40 -28
- package/examples/multi-target/release.config.json +28 -53
- package/examples/npm-first-publish/release.config.json +23 -25
- package/examples/npm-only/release.config.json +22 -30
- package/examples/portable-cli/README.md +17 -0
- package/examples/portable-cli/artifacts/portable-example-0.1.0-darwin-arm64 +1 -0
- package/examples/portable-cli/artifacts/portable-example-0.1.0-darwin-x64 +1 -0
- package/examples/portable-cli/artifacts/portable-example-0.1.0-linux-arm64 +1 -0
- package/examples/portable-cli/artifacts/portable-example-0.1.0-linux-x64 +1 -0
- package/examples/portable-cli/artifacts/portable-example-0.1.0-windows-x64.exe +1 -0
- package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-macosx_10_15_x86_64.whl +1 -0
- package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-macosx_11_0_arm64.whl +1 -0
- package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-manylinux2014_aarch64.whl +1 -0
- package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-manylinux2014_x86_64.whl +1 -0
- package/examples/portable-cli/artifacts/portable_example-0.1.0-py3-none-win_amd64.whl +1 -0
- package/examples/portable-cli/package.json +9 -0
- package/examples/portable-cli/release.config.json +53 -0
- package/examples/portable-cli/src/cli.ts +3 -0
- package/examples/pypi-registry/README.md +8 -0
- package/examples/scoop-bucket/README.md +10 -0
- package/examples/scoop-bucket/release.config.json +40 -30
- package/package.json +60 -156
- package/src/api/api.ts +365 -0
- package/src/api/errors.ts +36 -0
- package/src/api/input.ts +92 -0
- package/src/api/runtime.ts +14 -0
- package/src/api/types.ts +103 -0
- package/src/capabilities/bun-targets.ts +2 -0
- package/src/capabilities/field-ownership.ts +60 -0
- package/src/capabilities/module.ts +158 -0
- package/src/capabilities/registry.ts +333 -0
- package/src/config/config.ts +48 -0
- package/src/correction/coordinator.ts +336 -0
- package/src/correction/index.ts +2 -0
- package/src/correction/intent.ts +172 -0
- package/src/drivers/archive.ts +102 -0
- package/src/drivers/contain.ts +20 -0
- package/src/drivers/environment.ts +28 -0
- package/src/drivers/errors.ts +6 -0
- package/src/drivers/glob.ts +137 -0
- package/src/drivers/process.ts +340 -0
- package/src/drivers/redact.ts +31 -0
- package/src/drivers/seccomp-helper-source.ts +121 -0
- package/src/drivers/utils.ts +10 -0
- package/src/drivers/workspace.ts +40 -0
- package/src/extensions/provider-adapter.ts +99 -0
- package/src/host.ts +140 -0
- package/src/index.ts +64 -0
- package/src/model/artifact-collection.ts +237 -0
- package/src/model/authority.ts +116 -0
- package/src/model/bun-targets.ts +34 -0
- package/src/model/canonical.ts +205 -0
- package/src/model/catalog.ts +220 -0
- package/src/model/digest.ts +172 -0
- package/src/model/errors.ts +6 -0
- package/src/model/primitives.ts +37 -0
- package/src/model/pypi.ts +30 -0
- package/src/model/python-distribution.ts +360 -0
- package/src/model/secret-patterns.ts +11 -0
- package/src/platform/bun.ts +38 -0
- package/src/platform/credentials.ts +1083 -0
- package/src/platform/host-support.ts +4 -0
- package/src/platform/node.ts +38 -0
- package/src/platform/release-runtime.ts +47 -0
- package/src/platform/services.ts +57 -0
- package/src/platform/source-observer.ts +193 -0
- package/src/provider-sdk.ts +48 -0
- package/src/publication/adapter.ts +132 -0
- package/src/publication/authority.ts +397 -0
- package/src/publication/catalog-git.ts +603 -0
- package/src/publication/claim.ts +51 -0
- package/src/publication/coordinator.ts +578 -0
- package/src/publication/github.ts +954 -0
- package/src/publication/http.ts +101 -0
- package/src/publication/index.ts +4 -0
- package/src/publication/npm.ts +525 -0
- package/src/publication/profiles.ts +94 -0
- package/src/publication/publisher.ts +130 -0
- package/src/publication/pypi.ts +463 -0
- package/src/publication/recovery.ts +349 -0
- package/src/publication/report.ts +628 -0
- package/src/recipes/config.ts +395 -0
- package/src/release/capabilities.ts +459 -0
- package/src/release/compiler.ts +28 -0
- package/src/release/config.ts +12 -0
- package/src/release/context.ts +223 -0
- package/src/release/graph.ts +866 -0
- package/src/release/inspect.ts +83 -0
- package/src/release/prepare.ts +1331 -0
- package/src/release/prepared-ref.ts +193 -0
- package/src/release/prepared-store.ts +377 -0
- package/src/release/prepared.ts +299 -0
- package/src/release/staging.ts +257 -0
- package/src/resolve/authored.ts +64 -0
- package/src/resolve/encode.ts +22 -0
- package/src/resolve/errors.ts +15 -0
- package/src/resolve/facts.ts +18 -0
- package/src/resolve/resolve.ts +328 -0
- package/src/store.ts +28 -0
- package/templates/README.md +55 -72
- package/templates/bun-cli-github/README.md +7 -9
- package/templates/bun-cli-github/release.config.json +35 -73
- package/templates/github-actions/release.yml +57 -0
- package/templates/github-actions/reviewed-release.yml +80 -0
- package/templates/multi-target-homebrew/README.md +10 -0
- package/templates/multi-target-homebrew/release.config.json +43 -60
- package/templates/multi-target-scoop/README.md +10 -0
- package/templates/multi-target-scoop/release.config.json +43 -62
- package/templates/npm-github/release.config.json +25 -38
- package/templates/npm-github/reviewed-release.config.json +37 -0
- package/templates/npm-only/README.md +10 -0
- package/templates/npm-only/release.config.json +15 -30
- package/templates/portable-cli/README.md +13 -0
- package/templates/portable-cli/release.config.json +53 -0
- package/dist/artifacts/adapter.d.ts +0 -39
- package/dist/artifacts/adapter.d.ts.map +0 -1
- package/dist/artifacts/adapter.js +0 -23
- package/dist/artifacts/adapter.js.map +0 -1
- package/dist/artifacts/registry.d.ts +0 -21
- package/dist/artifacts/registry.d.ts.map +0 -1
- package/dist/artifacts/registry.js +0 -21
- package/dist/artifacts/registry.js.map +0 -1
- package/dist/config/errors.d.ts +0 -24
- package/dist/config/errors.d.ts.map +0 -1
- package/dist/config/errors.js +0 -19
- package/dist/config/errors.js.map +0 -1
- package/dist/config/load.d.ts +0 -9
- package/dist/config/load.d.ts.map +0 -1
- package/dist/config/load.js +0 -29
- package/dist/config/load.js.map +0 -1
- package/dist/config/schema.d.ts +0 -12
- package/dist/config/schema.d.ts.map +0 -1
- package/dist/config/schema.js +0 -19
- package/dist/config/schema.js.map +0 -1
- package/dist/domain/artifact.d.ts +0 -118
- package/dist/domain/artifact.d.ts.map +0 -1
- package/dist/domain/artifact.js +0 -197
- package/dist/domain/artifact.js.map +0 -1
- package/dist/domain/evidence.d.ts +0 -59
- package/dist/domain/evidence.d.ts.map +0 -1
- package/dist/domain/evidence.js +0 -51
- package/dist/domain/evidence.js.map +0 -1
- package/dist/domain/operation.d.ts +0 -143
- package/dist/domain/operation.d.ts.map +0 -1
- package/dist/domain/operation.js +0 -198
- package/dist/domain/operation.js.map +0 -1
- package/dist/domain/release.d.ts +0 -93
- package/dist/domain/release.d.ts.map +0 -1
- package/dist/domain/release.js +0 -82
- package/dist/domain/release.js.map +0 -1
- package/dist/domain/remote-state.d.ts +0 -58
- package/dist/domain/remote-state.d.ts.map +0 -1
- package/dist/domain/remote-state.js +0 -55
- package/dist/domain/remote-state.js.map +0 -1
- package/dist/domain/target.d.ts +0 -148
- package/dist/domain/target.d.ts.map +0 -1
- package/dist/domain/target.js +0 -151
- package/dist/domain/target.js.map +0 -1
- package/dist/host/host.d.ts +0 -32
- package/dist/host/host.d.ts.map +0 -1
- package/dist/host/host.js +0 -24
- package/dist/host/host.js.map +0 -1
- package/dist/host/http-live.d.ts +0 -6
- package/dist/host/http-live.d.ts.map +0 -1
- package/dist/host/http-live.js +0 -86
- package/dist/host/http-live.js.map +0 -1
- package/dist/host/http.d.ts +0 -43
- package/dist/host/http.d.ts.map +0 -1
- package/dist/host/http.js +0 -59
- package/dist/host/http.js.map +0 -1
- package/dist/host/platform.d.ts +0 -10
- package/dist/host/platform.d.ts.map +0 -1
- package/dist/host/platform.js +0 -114
- package/dist/host/platform.js.map +0 -1
- package/dist/host/test.d.ts +0 -23
- package/dist/host/test.d.ts.map +0 -1
- package/dist/host/test.js +0 -222
- package/dist/host/test.js.map +0 -1
- package/dist/internal/workspace-path.d.ts +0 -15
- package/dist/internal/workspace-path.d.ts.map +0 -1
- package/dist/internal/workspace-path.js +0 -36
- package/dist/internal/workspace-path.js.map +0 -1
- package/dist/planner/artifact-inventory.d.ts +0 -9
- package/dist/planner/artifact-inventory.d.ts.map +0 -1
- package/dist/planner/artifact-inventory.js +0 -86
- package/dist/planner/artifact-inventory.js.map +0 -1
- package/dist/planner/create-release-plan.d.ts +0 -5
- package/dist/planner/create-release-plan.d.ts.map +0 -1
- package/dist/planner/create-release-plan.js +0 -25
- package/dist/planner/create-release-plan.js.map +0 -1
- package/dist/planner/errors.d.ts +0 -67
- package/dist/planner/errors.d.ts.map +0 -1
- package/dist/planner/errors.js +0 -58
- package/dist/planner/errors.js.map +0 -1
- package/dist/planner/evidence-recorder.d.ts +0 -28
- package/dist/planner/evidence-recorder.d.ts.map +0 -1
- package/dist/planner/evidence-recorder.js +0 -362
- package/dist/planner/evidence-recorder.js.map +0 -1
- package/dist/planner/executor.d.ts +0 -58
- package/dist/planner/executor.d.ts.map +0 -1
- package/dist/planner/executor.js +0 -147
- package/dist/planner/executor.js.map +0 -1
- package/dist/planner/normalize-release.d.ts +0 -19
- package/dist/planner/normalize-release.d.ts.map +0 -1
- package/dist/planner/normalize-release.js +0 -342
- package/dist/planner/normalize-release.js.map +0 -1
- package/dist/planner/reconcile.d.ts +0 -17
- package/dist/planner/reconcile.d.ts.map +0 -1
- package/dist/planner/reconcile.js +0 -259
- package/dist/planner/reconcile.js.map +0 -1
- package/dist/planner/render-plan.d.ts +0 -15
- package/dist/planner/render-plan.d.ts.map +0 -1
- package/dist/planner/render-plan.js +0 -231
- package/dist/planner/render-plan.js.map +0 -1
- package/dist/targets/adapter-helpers.d.ts +0 -79
- package/dist/targets/adapter-helpers.d.ts.map +0 -1
- package/dist/targets/adapter-helpers.js +0 -194
- package/dist/targets/adapter-helpers.js.map +0 -1
- package/dist/targets/adapter.d.ts +0 -17
- package/dist/targets/adapter.d.ts.map +0 -1
- package/dist/targets/adapter.js +0 -2
- package/dist/targets/adapter.js.map +0 -1
- package/dist/targets/github-release.d.ts +0 -25
- package/dist/targets/github-release.d.ts.map +0 -1
- package/dist/targets/github-release.js +0 -82
- package/dist/targets/github-release.js.map +0 -1
- package/dist/targets/github.d.ts +0 -11
- package/dist/targets/github.d.ts.map +0 -1
- package/dist/targets/github.js +0 -117
- package/dist/targets/github.js.map +0 -1
- package/dist/targets/homebrew.d.ts +0 -11
- package/dist/targets/homebrew.d.ts.map +0 -1
- package/dist/targets/homebrew.js +0 -210
- package/dist/targets/homebrew.js.map +0 -1
- package/dist/targets/live.d.ts +0 -5
- package/dist/targets/live.d.ts.map +0 -1
- package/dist/targets/live.js +0 -50
- package/dist/targets/live.js.map +0 -1
- package/dist/targets/npm.d.ts +0 -10
- package/dist/targets/npm.d.ts.map +0 -1
- package/dist/targets/npm.js +0 -112
- package/dist/targets/npm.js.map +0 -1
- package/dist/targets/pypi.d.ts +0 -11
- package/dist/targets/pypi.d.ts.map +0 -1
- package/dist/targets/pypi.js +0 -141
- package/dist/targets/pypi.js.map +0 -1
- package/dist/targets/registry.d.ts +0 -25
- package/dist/targets/registry.d.ts.map +0 -1
- package/dist/targets/registry.js +0 -34
- package/dist/targets/registry.js.map +0 -1
- package/dist/targets/scoop.d.ts +0 -11
- package/dist/targets/scoop.d.ts.map +0 -1
- package/dist/targets/scoop.js +0 -88
- package/dist/targets/scoop.js.map +0 -1
- package/dist/types/effect-internal.d.ts +0 -5
- package/dist/types/effect-internal.d.ts.map +0 -1
- package/dist/types/effect-internal.js +0 -2
- package/dist/types/effect-internal.js.map +0 -1
- package/dist/workflows/config.d.ts +0 -202
- package/dist/workflows/config.d.ts.map +0 -1
- package/dist/workflows/config.js +0 -420
- package/dist/workflows/config.js.map +0 -1
- package/dist/workflows/diagnostics.d.ts +0 -62
- package/dist/workflows/diagnostics.d.ts.map +0 -1
- package/dist/workflows/diagnostics.js +0 -530
- package/dist/workflows/diagnostics.js.map +0 -1
- package/dist/workflows/distribution.d.ts +0 -25
- package/dist/workflows/distribution.d.ts.map +0 -1
- package/dist/workflows/distribution.js +0 -24
- package/dist/workflows/distribution.js.map +0 -1
- package/dist/workflows/evidence.d.ts +0 -17
- package/dist/workflows/evidence.d.ts.map +0 -1
- package/dist/workflows/evidence.js +0 -32
- package/dist/workflows/evidence.js.map +0 -1
- package/dist/workflows/index.d.ts +0 -8
- package/dist/workflows/index.d.ts.map +0 -1
- package/dist/workflows/index.js +0 -7
- package/dist/workflows/index.js.map +0 -1
- package/dist/workflows/init.d.ts +0 -84
- package/dist/workflows/init.d.ts.map +0 -1
- package/dist/workflows/init.js +0 -487
- package/dist/workflows/init.js.map +0 -1
- package/dist/workflows/live.d.ts +0 -9
- package/dist/workflows/live.d.ts.map +0 -1
- package/dist/workflows/live.js +0 -7
- package/dist/workflows/live.js.map +0 -1
- package/dist/workflows/options.d.ts +0 -30
- package/dist/workflows/options.d.ts.map +0 -1
- package/dist/workflows/options.js +0 -16
- package/dist/workflows/options.js.map +0 -1
- package/examples/non-strict-skips/artifacts/release-example-skips-0.1.0.tgz +0 -1
- package/examples/non-strict-skips/release.config.json +0 -31
- package/examples/pypi-registry/release.config.json +0 -31
- package/templates/github-actions/plan-and-approved-execute.yml +0 -58
- package/templates/github-actions/plan-only.yml +0 -33
- package/templates/github-actions/trusted-publishing.yml +0 -61
package/SPEC.md
CHANGED
|
@@ -1,310 +1,206 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
|
|
5
|
-
The
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
-
|
|
104
|
-
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
-
|
|
201
|
-
-
|
|
202
|
-
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
- report static auth and CI readiness
|
|
208
|
-
- produce evidence artifacts
|
|
209
|
-
- print publish operations
|
|
210
|
-
- execute approved operations
|
|
211
|
-
- verify published state after execution
|
|
212
|
-
- reconcile a matching GitHub draft release without republishing immutable registries
|
|
213
|
-
|
|
214
|
-
The API should favor explicit functions and typed data over hidden global state.
|
|
215
|
-
|
|
216
|
-
## Configuration Principles
|
|
217
|
-
|
|
218
|
-
Configuration should be declarative and boring.
|
|
219
|
-
|
|
220
|
-
It should describe release facts and target policy, not arbitrary scripts. Escape hatches can exist, but they should be visible in the plan and evidence.
|
|
221
|
-
|
|
222
|
-
Good config answers:
|
|
223
|
-
|
|
224
|
-
- What is the release?
|
|
225
|
-
- Which artifacts and variants are part of it?
|
|
226
|
-
- Which targets or install surfaces receive them?
|
|
227
|
-
- What credentials or environment are required?
|
|
228
|
-
- What must be validated first?
|
|
229
|
-
- Which generated files or indexes will change?
|
|
230
|
-
- Which operations are allowed to execute in this environment?
|
|
231
|
-
|
|
232
|
-
Artifact path templates may interpolate only named release data such as `{version}`, `{name}`, and `{normalizedName}`. They must be expanded before path safety and artifact inventory checks. Artifact variants must be explicit data or derived by a known recipe adapter before target rendering.
|
|
233
|
-
|
|
234
|
-
## Testing Strategy
|
|
235
|
-
|
|
236
|
-
The core should be heavily testable without real external services.
|
|
237
|
-
|
|
238
|
-
Important test categories:
|
|
239
|
-
|
|
240
|
-
- config parsing and normalization
|
|
241
|
-
- invalid config diagnostics
|
|
242
|
-
- deterministic plan generation
|
|
243
|
-
- adapter capability modeling
|
|
244
|
-
- dry-run behavior
|
|
245
|
-
- irreversible-operation gating
|
|
246
|
-
- evidence recording
|
|
247
|
-
- command construction without execution
|
|
248
|
-
- execution through fake host implementations
|
|
249
|
-
- target adapter contract tests
|
|
250
|
-
|
|
251
|
-
Real integration tests can exist for official validators and sandbox registries, but the core should not depend on live services to prove its behavior.
|
|
252
|
-
|
|
253
|
-
## Success Criteria
|
|
254
|
-
|
|
255
|
-
The rewrite is successful when:
|
|
256
|
-
|
|
257
|
-
- a user can define an artifact-first distribution intent in a small config
|
|
258
|
-
- the package can stage declared artifacts before target planning
|
|
259
|
-
- the package produces a reviewable distribution plan with no side effects
|
|
260
|
-
- target differences are explicit in the plan
|
|
261
|
-
- installable artifact variants are available before package-manager rendering
|
|
262
|
-
- validation emits structured evidence
|
|
263
|
-
- publish operations are blocked by default
|
|
264
|
-
- irreversible operations require deliberate approval
|
|
265
|
-
- core behavior is covered with deterministic tests
|
|
266
|
-
- a CLI can be rebuilt as a thin adapter over the library
|
|
267
|
-
- a GitHub Action can run the same workflows without embedding CLI behavior
|
|
268
|
-
- starter templates can be checked by the same workflow path as examples
|
|
269
|
-
- adding a new target does not require rewriting the core planner
|
|
270
|
-
|
|
271
|
-
## Biases
|
|
272
|
-
|
|
273
|
-
Prefer:
|
|
274
|
-
|
|
275
|
-
- explicit data over implicit conventions
|
|
276
|
-
- small target adapters over a large universal abstraction
|
|
277
|
-
- official ecosystem validators over homegrown approximations
|
|
278
|
-
- deterministic planning over clever runtime discovery
|
|
279
|
-
- evidence artifacts over terminal-only output
|
|
280
|
-
- hard failures for unsafe ambiguity
|
|
281
|
-
- dry-run as the default mode
|
|
282
|
-
|
|
283
|
-
Avoid:
|
|
284
|
-
|
|
285
|
-
- hook-runner architecture as the core design
|
|
286
|
-
- hidden publish side effects during validation
|
|
287
|
-
- target adapters that silently shell out without modeling risk
|
|
288
|
-
- global process state in the planning layer
|
|
289
|
-
- special cases that only work for one repository shape
|
|
290
|
-
- abstractions that erase important ecosystem differences
|
|
291
|
-
|
|
292
|
-
## Implementation Direction
|
|
293
|
-
|
|
294
|
-
Continue from the data model.
|
|
295
|
-
|
|
296
|
-
Keep the smallest set of types needed to represent release identity, artifact recipes, artifact variants, targets, operations, validation results, execution gates, and evidence. Add target adapters end to end only when they prove the abstractions carry real differences without becoming generic mush.
|
|
297
|
-
|
|
298
|
-
The implementation should stay narrow but honest:
|
|
299
|
-
|
|
300
|
-
1. Load config.
|
|
301
|
-
2. Stage declared artifact recipes when requested.
|
|
302
|
-
3. Normalize into a release model with artifact inventory and variants.
|
|
303
|
-
4. Generate a serializable distribution plan.
|
|
304
|
-
5. Render generated files only through explicit render operations.
|
|
305
|
-
6. Validate with structured evidence.
|
|
306
|
-
7. Print executable operations.
|
|
307
|
-
8. Execute only when explicitly approved.
|
|
308
|
-
9. Verify remote state and record evidence.
|
|
309
|
-
|
|
310
|
-
Everything else should be added only after it has a clear place in that flow.
|
|
1
|
+
# ts-release specification
|
|
2
|
+
|
|
3
|
+
## 1. Public operations
|
|
4
|
+
|
|
5
|
+
The root package exports `inspect`, `prepare`, `observe`, `publish`, `release`,
|
|
6
|
+
and `correct`, plus `makeReleaseApi`, durable-reference codecs, configuration helpers, and
|
|
7
|
+
tagged input/runtime errors. The total observation and release report schemas,
|
|
8
|
+
transient credential acquisition errors, and their secret-free durable causes
|
|
9
|
+
are also public. The constructed API adds `dispose` for its host runtime. CLI
|
|
10
|
+
and Action boundaries call these same operations.
|
|
11
|
+
|
|
12
|
+
## 2. Authored and verified forms
|
|
13
|
+
|
|
14
|
+
Authored configuration is decoded strictly. Resolution combines it with
|
|
15
|
+
observed package and Git facts; disagreement is an error. Verified context
|
|
16
|
+
records the clean source commit/tree and package-manifest digest. Preparation
|
|
17
|
+
materializes that exact commit into a fresh private staging root. Changed,
|
|
18
|
+
ignored, or untracked workspace bytes are never implicit inputs.
|
|
19
|
+
|
|
20
|
+
## 3. Derived graph
|
|
21
|
+
|
|
22
|
+
The graph contains imported artifacts, build, archive, checksum, command check,
|
|
23
|
+
command artifact, typed Homebrew/Scoop rendering, npm publication, exact-file
|
|
24
|
+
PyPI publication, GitHub Release publication, and catalog Git publication
|
|
25
|
+
primitives. It is
|
|
26
|
+
sorted and linked inside one process. It is never serialized as authority and
|
|
27
|
+
never crosses a runner boundary.
|
|
28
|
+
|
|
29
|
+
## 4. Prepared release
|
|
30
|
+
|
|
31
|
+
`prepared-release/v2` is canonical JSON plus content-addressed blobs. A
|
|
32
|
+
`CompletePreparedReleaseRef` is the only public cross-process locator and
|
|
33
|
+
contains content identity, never a local path. The complete manifest records
|
|
34
|
+
materialized source identity, project coordinates, artifact IDs, exact
|
|
35
|
+
sizes/digests/media types, input basis, execution provenance, and provider
|
|
36
|
+
subjects. A prepared store refuses missing, altered, extra, symlinked,
|
|
37
|
+
non-canonical, or producer-mismatched content.
|
|
38
|
+
|
|
39
|
+
An npm trusted-publishing subject also binds the exact verified source commit
|
|
40
|
+
and a versioned GitHub/npm provenance-environment contract. The host validates
|
|
41
|
+
all npm-consumed GitHub run facts before reading OIDC authority, snapshots them
|
|
42
|
+
privately onto the issued workload grant, and projects only that snapshot plus
|
|
43
|
+
the two OIDC request values into the closed npm child.
|
|
44
|
+
|
|
45
|
+
A PyPI publication records one independent subject per prebuilt wheel or gzip
|
|
46
|
+
sdist. Preparation parses archive structure and embedded metadata and requires
|
|
47
|
+
project/version/filename agreement before the file can enter a prepared
|
|
48
|
+
manifest. Each subject binds the closed PyPI/TestPyPI Simple and upload
|
|
49
|
+
endpoints, exact filename, size, SHA-256, media type, and distribution tags.
|
|
50
|
+
|
|
51
|
+
## 5. Observation
|
|
52
|
+
|
|
53
|
+
Publication is subject-based. `observe` uses a read-only report algebra.
|
|
54
|
+
`publish` observes every subject before mutation and again afterward.
|
|
55
|
+
Equivalent subjects are idempotent skips; only a typed provider decision may
|
|
56
|
+
authorize mutation; conflict or inconclusive state blocks. Provider correction
|
|
57
|
+
intent is typed and bound to the prepared digest. npm and GitHub Release
|
|
58
|
+
requests produce external proposals; catalog Git admits one SemVer-forward
|
|
59
|
+
conditional replacement of its exact target/state pair. Credential unavailability
|
|
60
|
+
and unsupported authentication remain total report data with distinct tagged,
|
|
61
|
+
secret-free causes; they do not escape as publication control flow.
|
|
62
|
+
|
|
63
|
+
PyPI observation accepts only a standards-shaped JSON Simple response with
|
|
64
|
+
API major 1 and the API 1.1 equality fields. A visible project page that omits
|
|
65
|
+
the exact filename can authorize token upload only after the host atomically
|
|
66
|
+
creates a shared, durable, terminal claim for the prepared subject. Claim
|
|
67
|
+
unavailability or occupation blocks before credential acquisition. A project
|
|
68
|
+
404 never authorizes first creation. Yanked files conflict; no yank mutation
|
|
69
|
+
is installed. Trusted publishing is an external PyPA Action path and is
|
|
70
|
+
rejected by the stock coordinator before dispatch.
|
|
71
|
+
|
|
72
|
+
Catalog observation reads the exact branch ref, commit, complete untruncated
|
|
73
|
+
recursive tree, and both managed blobs. Mutation creates exact blobs and a tree
|
|
74
|
+
with the observed root as `base_tree`, verifies every unrelated object and mode
|
|
75
|
+
in the proposed full tree, creates a commit with the observed commit as its
|
|
76
|
+
sole parent, and updates the ref with `force: false`. A catalog subject depends
|
|
77
|
+
on convergence of its configured GitHub release asset subjects.
|
|
78
|
+
|
|
79
|
+
## 6. Native preparation
|
|
80
|
+
|
|
81
|
+
`CommandCheck` runs trusted argv code against declared inputs. `CommandArtifact`
|
|
82
|
+
generates or transforms declared regular-file outputs. `builder: "command"`
|
|
83
|
+
lowers to the same primitive. Generic preparation children inherit no host
|
|
84
|
+
environment. A nonempty authored environment request is rejected unless a
|
|
85
|
+
future dedicated capability certifies its safe build-time contract. There is
|
|
86
|
+
no generic hook or remote-publisher escape hatch. The public API recognizes
|
|
87
|
+
reserved partition and merge preparation modes and rejects them with
|
|
88
|
+
`PreparationModeUnsupported`; it creates no partial durable object.
|
|
89
|
+
|
|
90
|
+
## 7. Hosts
|
|
91
|
+
|
|
92
|
+
The capability registry owns separate execution-host, artifact-target, and
|
|
93
|
+
native-tool-host axes. Linux is the only installed execution host. The exact
|
|
94
|
+
advertised artifact targets are Linux x64/arm64 and macOS x64/arm64; macOS
|
|
95
|
+
binaries are cross-compiled artifacts, not execution-host evidence. Windows is
|
|
96
|
+
neither an execution host nor an advertised artifact target, and the
|
|
97
|
+
self-release does not distribute a Windows ts-release binary. WSL is Linux for
|
|
98
|
+
this contract.
|
|
99
|
+
|
|
100
|
+
The checked-in Action is a Linux workflow boundary: its composite step
|
|
101
|
+
requires Bash and a workflow-installed, pinned Bun runtime. The distributed
|
|
102
|
+
package and CLI run under the declared Node engine, but preparation and
|
|
103
|
+
network-denied command execution delegate to an external Bun executable whose
|
|
104
|
+
Linux child loads `libseccomp.so.2`. The standalone CLI is therefore not a
|
|
105
|
+
self-contained preparation sandbox. These declared axes still require the
|
|
106
|
+
clean-candidate public-entrypoint smoke matrix before release certification.
|
|
107
|
+
|
|
108
|
+
## 8. Error and safety contract
|
|
109
|
+
|
|
110
|
+
Structured Effect errors cross the library boundary. A pre-commit preparation
|
|
111
|
+
failure proves no remote mutation; a post-commit abort carries the exact
|
|
112
|
+
durable reference. Filesystem paths are contained and symlink-checked. Public
|
|
113
|
+
inputs contain no credential values. Secrets are acquired through host layers,
|
|
114
|
+
consumed only by audience- and purpose-checking sinks, and redacted at process
|
|
115
|
+
output boundaries. Host credential error text never enters durable reports;
|
|
116
|
+
only request-derived, secret-free cause data does. The Action validates its
|
|
117
|
+
inputs before calling the library.
|
|
118
|
+
|
|
119
|
+
## 9. Recovery limits
|
|
120
|
+
|
|
121
|
+
Rerun the same prepared bytes. A partial release is possible; atomic rollback,
|
|
122
|
+
deletion, exactly-once publication, and universal correction are not claimed.
|
|
123
|
+
PyPI filenames remain consumed after deletion and uncertain token uploads are
|
|
124
|
+
never blindly replayed; the required terminal claim survives process loss and
|
|
125
|
+
must be shared by every runner capable of dispatching that subject.
|
|
126
|
+
Read-convergence timing defaults are conservative assumed bounds until live
|
|
127
|
+
post-write evidence measures them. Announcements and unsupported providers
|
|
128
|
+
remain outside the retained product.
|
|
129
|
+
|
|
130
|
+
## 10. Product evidence
|
|
131
|
+
|
|
132
|
+
In the source distribution, the generated capability inventory is joined
|
|
133
|
+
one-to-one from executable module values and dated evidence. Evidence records
|
|
134
|
+
contain sanitized references only and cannot configure runtime support. A
|
|
135
|
+
source checkout, configuration field, detached test, or protocol double is not
|
|
136
|
+
release certification.
|
|
137
|
+
|
|
138
|
+
## 11. Distribution
|
|
139
|
+
|
|
140
|
+
The canonical package identity is `@mannyc1/ts-release`. The canonical Action
|
|
141
|
+
is the monorepo subpath `mannyc2/ts-release/apps/ts-release-action`. Public
|
|
142
|
+
consumer documents bind an immutable version only when its tag targets the
|
|
143
|
+
exact certified result commit before the package README becomes visible.
|
|
144
|
+
Installed Node package consumers require
|
|
145
|
+
`^22.22.2 || ^24.15.0 || >=26.0.0`. The checked-in Action declares a composite
|
|
146
|
+
runtime and runs `dist/index.js` with the pinned Bun installed earlier in each
|
|
147
|
+
advertised Linux workflow. Its entrypoint evidence is separate from installed
|
|
148
|
+
package evidence and does not alter the package's Node engine. The packaged
|
|
149
|
+
Node CLI still requires external Bun and, for network-denied commands on its
|
|
150
|
+
Linux execution host, `libseccomp.so.2`.
|
|
151
|
+
|
|
152
|
+
## 12. Non-goals
|
|
153
|
+
|
|
154
|
+
The engine does not transport host-gate identity or persist execution history as authority,
|
|
155
|
+
provide generic lifecycle hooks, or claim to be a language-specific clone of
|
|
156
|
+
another release product. Arbitrary catalog templates, engine-owned downstream
|
|
157
|
+
announcements, dynamic adapter discovery, and command publishers are not
|
|
158
|
+
capabilities installed in the stock kernel.
|
|
159
|
+
|
|
160
|
+
## 13. Root export audit
|
|
161
|
+
|
|
162
|
+
The root runtime exports are exactly:
|
|
163
|
+
|
|
164
|
+
- `AuthoredGithubReleaseAmendment`
|
|
165
|
+
- `AuthoredCatalogForwardCorrection`
|
|
166
|
+
- `AuthoredNpmDeprecation`
|
|
167
|
+
- `CompletePreparedReleaseRef`
|
|
168
|
+
- `CorrectionReport`
|
|
169
|
+
- `CredentialFailureCause`
|
|
170
|
+
- `CredentialStrategyUnsupported`
|
|
171
|
+
- `CredentialStrategyUnsupportedCause`
|
|
172
|
+
- `CredentialUnavailable`
|
|
173
|
+
- `CredentialUnavailableCause`
|
|
174
|
+
- `GitHubActionsCompletePreparedReleaseRef`
|
|
175
|
+
- `LocalCompletePreparedReleaseRef`
|
|
176
|
+
- `ObservationReport`
|
|
177
|
+
- `PreparationModeUnsupported`
|
|
178
|
+
- `PreparedReleaseRefCodecError`
|
|
179
|
+
- `PreparedReleaseRefMalformedError`
|
|
180
|
+
- `PreparedReleaseRefUnknownSchemeError`
|
|
181
|
+
- `ReleaseAbortedError`
|
|
182
|
+
- `ReleaseIncompleteError`
|
|
183
|
+
- `ReleasePreparationError`
|
|
184
|
+
- `ReleaseReport`
|
|
185
|
+
- `correct`
|
|
186
|
+
- `decodeAuthoredCorrection`
|
|
187
|
+
- `decodeCompletePreparedReleaseRef`
|
|
188
|
+
- `defineRelease`
|
|
189
|
+
- `encodeCompletePreparedReleaseRef`
|
|
190
|
+
- `encodeResolvedConfig`
|
|
191
|
+
- `inspect`
|
|
192
|
+
- `makeGitHubActionsCompletePreparedReleaseRef`
|
|
193
|
+
- `makeLocalCompletePreparedReleaseRef`
|
|
194
|
+
- `makeReleaseApi`
|
|
195
|
+
- `observe`
|
|
196
|
+
- `prepare`
|
|
197
|
+
- `publish`
|
|
198
|
+
- `release`
|
|
199
|
+
- `ReleaseInputError`
|
|
200
|
+
- `ReleaseRuntime`
|
|
201
|
+
- `resolveConfig`
|
|
202
|
+
- `unsupportedExecutionHost`
|
|
203
|
+
|
|
204
|
+
## 14. License
|
|
205
|
+
|
|
206
|
+
MIT.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# ts-release CLI
|
|
2
|
+
|
|
3
|
+
The CLI exposes exactly seven commands:
|
|
4
|
+
|
|
5
|
+
- `init` writes an explicit preset only after that preset passes strict
|
|
6
|
+
authored-config inspection.
|
|
7
|
+
- `inspect` observes authored configuration or reads a prepared bundle.
|
|
8
|
+
- `prepare` stages native preparations and stores an exact bundle.
|
|
9
|
+
- `observe` reads the remote subjects for one prepared bundle without mutation.
|
|
10
|
+
- `publish` observes and publishes one prepared bundle.
|
|
11
|
+
- `release` composes preparation and publication automatically.
|
|
12
|
+
- `correct` binds one provider-specific correction proposal to the exact
|
|
13
|
+
prepared subject; the installed kernel has no corrective mutation adapter.
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
bun run cli init --preset bun-npm-github
|
|
17
|
+
bun run cli inspect --config release.config.json
|
|
18
|
+
bun run cli release --config release.config.json
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The published Node bundle is built from `src/cli/node-main.ts`; development
|
|
22
|
+
uses the Bun host entrypoint.
|
|
23
|
+
|
|
24
|
+
The publishing preset first discovers the canonical owner/repository, then
|
|
25
|
+
writes explicit trusted-publishing and GitHub intent and strictly inspects the
|
|
26
|
+
exact generated object. It refuses to guess when repository discovery is
|
|
27
|
+
ambiguous or absent.
|
|
28
|
+
|
|
29
|
+
The preset binds trusted publication to `.github/workflows/release.yml` at
|
|
30
|
+
`refs/heads/main`. Change both `workflow` and `workflowRef` when another exact
|
|
31
|
+
workflow/ref is the intended host; a mismatch is rejected before OIDC request
|
|
32
|
+
material is read.
|