@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
|
@@ -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 @@
|
|
|
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
|
package/dist/host.js.map
ADDED
|
@@ -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
|
-
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
-
|
|
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"}
|