@astrale-os/sdk 0.6.0-beta.4 → 0.6.0-beta.41
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/README.md +191 -58
- package/dist/application/action/action.d.ts +6 -0
- package/dist/application/action/authoring.d.ts +1 -1
- package/dist/application/action/context.d.ts +47 -31
- package/dist/application/action/define.d.ts +3 -3
- package/dist/application/action/index.d.ts +1 -1
- package/dist/application/define.d.ts +8 -6
- package/dist/application/define.js +28 -14
- package/dist/application/dependency/index.d.ts +1 -1
- package/dist/application/dependency/invoker.d.ts +21 -10
- package/dist/application/domain.d.ts +30 -0
- package/dist/application/index.d.ts +4 -4
- package/dist/application/index.js +1 -1
- package/dist/application/integration/define.d.ts +8 -1
- package/dist/application/integration/index.d.ts +2 -2
- package/dist/application/integration/integration.d.ts +13 -1
- package/dist/application/integration/operation.d.ts +16 -3
- package/dist/application/mutation/authoring/properties.d.ts +5 -3
- package/dist/application/mutation/authoring/properties.js +35 -2
- package/dist/application/mutation/authoring/transition.js +4 -1
- package/dist/application/mutation/execution/execute.js +1 -1
- package/dist/application/mutation/failure.d.ts +6 -0
- package/dist/application/mutation/failure.js +24 -18
- package/dist/application/mutation/index.d.ts +1 -1
- package/dist/application/query/collection/union.js +11 -4
- package/dist/application/query/composite/plan.d.ts +0 -4
- package/dist/application/query/composite/plan.js +0 -2
- package/dist/application/query/conformance.d.ts +15 -0
- package/dist/application/query/conformance.js +46 -0
- package/dist/application/query/define.js +4 -3
- package/dist/application/query/execution/execute.d.ts +0 -1
- package/dist/application/query/execution/execute.js +7 -1
- package/dist/application/query/failure.d.ts +8 -0
- package/dist/application/query/failure.js +8 -0
- package/dist/application/query/index.d.ts +1 -1
- package/dist/application/query/index.js +1 -1
- package/dist/application/routes/admission.d.ts +2 -2
- package/dist/application/routes/admission.js +1 -1
- package/dist/application/routes/route.d.ts +2 -2
- package/dist/application/runtime/actions.js +3 -0
- package/dist/application/runtime/workflows.d.ts +3 -1
- package/dist/application/runtime/workflows.js +3 -4
- package/dist/application/view/define.js +4 -6
- package/dist/application/view/frontend.d.ts +2 -2
- package/dist/application/view/index.d.ts +1 -1
- package/dist/application/view/route.d.ts +0 -14
- package/dist/application/view/route.js +1 -64
- package/dist/application/workflow/authoring.d.ts +3 -2
- package/dist/application/workflow/context.d.ts +8 -2
- package/dist/application/workflow/define.d.ts +4 -4
- package/dist/application/workflow/define.js +14 -9
- package/dist/application/workflow/durable.d.ts +197 -0
- package/dist/application/workflow/index.d.ts +3 -2
- package/dist/application/workflow/runner/inline.js +3 -4
- package/dist/application/workflow/runner/runner.d.ts +2 -2
- package/dist/application/workflow/step/output.d.ts +2 -0
- package/dist/application/workflow/step/output.js +73 -0
- package/dist/application/workflow/workflow.d.ts +5 -3
- package/dist/deployment/adapter/adapter.d.ts +55 -13
- package/dist/deployment/adapter/bundle/bundle.d.ts +36 -0
- package/dist/deployment/adapter/bundle/file.d.ts +10 -0
- package/dist/deployment/adapter/bundle/index.d.ts +2 -0
- package/dist/deployment/adapter/define.d.ts +4 -3
- package/dist/deployment/adapter/define.js +107 -23
- package/dist/deployment/adapter/index.d.ts +4 -3
- package/dist/deployment/adapter/index.js +1 -0
- package/dist/deployment/adapter/release/command.d.ts +33 -0
- package/dist/deployment/adapter/release/context.d.ts +94 -0
- package/dist/deployment/adapter/release/index.d.ts +4 -0
- package/dist/deployment/adapter/release/index.js +1 -0
- package/dist/deployment/adapter/release/list.d.ts +53 -0
- package/dist/deployment/adapter/release/list.js +1 -0
- package/dist/deployment/adapter/release/refusal.d.ts +10 -0
- package/dist/deployment/adapter/release/refusal.js +14 -0
- package/dist/deployment/adapter/release/result.d.ts +56 -0
- package/dist/deployment/adapter/release/result.js +1 -0
- package/dist/deployment/address/configuration.d.ts +96 -0
- package/dist/deployment/address/configuration.js +274 -0
- package/dist/deployment/address/fingerprint.d.ts +5 -0
- package/dist/deployment/address/fingerprint.js +27 -0
- package/dist/deployment/address/index.d.ts +5 -0
- package/dist/deployment/address/index.js +4 -0
- package/dist/deployment/address/label.d.ts +42 -0
- package/dist/deployment/address/label.js +80 -0
- package/dist/deployment/address/line.d.ts +29 -0
- package/dist/deployment/address/line.js +53 -0
- package/dist/deployment/address/record.d.ts +73 -0
- package/dist/deployment/address/record.js +138 -0
- package/dist/deployment/address/summary.d.ts +30 -0
- package/dist/deployment/address/summary.js +1 -0
- package/dist/deployment/address/vectors.d.ts +60 -0
- package/dist/deployment/address/vectors.js +517 -0
- package/dist/deployment/authoring.d.ts +0 -2
- package/dist/deployment/authoring.js +0 -1
- package/dist/deployment/build/build.d.ts +8 -2
- package/dist/deployment/build/compile.d.ts +4 -4
- package/dist/deployment/build/compile.js +19 -17
- package/dist/deployment/build/frontend/compilation.d.ts +2 -4
- package/dist/deployment/build/frontend/compilation.js +0 -5
- package/dist/deployment/build/frontend/digest.js +1 -5
- package/dist/deployment/build/index.d.ts +1 -0
- package/dist/deployment/build/index.js +1 -0
- package/dist/deployment/build/manifest.d.ts +59 -0
- package/dist/deployment/build/manifest.js +118 -0
- package/dist/deployment/build/material.d.ts +2 -2
- package/dist/deployment/build/material.js +28 -13
- package/dist/deployment/build/schema.d.ts +2 -2
- package/dist/deployment/deployment.d.ts +3 -2
- package/dist/deployment/environment.d.ts +6 -0
- package/dist/deployment/environment.js +6 -0
- package/dist/deployment/index.d.ts +4 -6
- package/dist/deployment/index.js +1 -2
- package/dist/deployment/release/addressing.d.ts +6 -5
- package/dist/deployment/release/addressing.js +2 -3
- package/dist/deployment/release/assemble.d.ts +6 -3
- package/dist/deployment/release/assemble.js +12 -10
- package/dist/deployment/release/release.d.ts +16 -5
- package/dist/deployment/release/seal.d.ts +14 -0
- package/dist/deployment/release/seal.js +22 -0
- package/dist/deployment/release/{publication → served}/callables.d.ts +2 -2
- package/dist/deployment/release/{publication → served}/callables.js +2 -2
- package/dist/deployment/release/served/index.d.ts +11 -0
- package/dist/deployment/release/served/index.js +26 -0
- package/dist/deployment/release/{publication → served}/views.d.ts +2 -2
- package/dist/deployment/release/{publication → served}/views.js +0 -1
- package/dist/deployment/runtime/admission.d.ts +2 -2
- package/dist/deployment/runtime/admission.js +5 -5
- package/dist/deployment/verify/index.d.ts +3 -4
- package/dist/deployment/verify/index.js +2 -3
- package/dist/deployment/verify/preflight/bundle.d.ts +18 -0
- package/dist/deployment/verify/preflight/bundle.js +71 -0
- package/dist/deployment/verify/preflight/index.d.ts +1 -12
- package/dist/deployment/verify/preflight/index.js +1 -12
- package/dist/deployment/verify/readiness/fetch.d.ts +13 -0
- package/dist/deployment/verify/readiness/fetch.js +26 -0
- package/dist/deployment/verify/readiness/identity.d.ts +3 -6
- package/dist/deployment/verify/readiness/identity.js +3 -3
- package/dist/deployment/verify/readiness/index.d.ts +15 -8
- package/dist/deployment/verify/readiness/index.js +25 -6
- package/dist/deployment/verify/readiness/release.d.ts +8 -0
- package/dist/deployment/verify/readiness/release.js +22 -0
- package/dist/deployment/worker/address.d.ts +26 -0
- package/dist/deployment/worker/address.js +43 -0
- package/dist/deployment/worker/build.d.ts +60 -0
- package/dist/deployment/worker/build.js +172 -0
- package/dist/deployment/worker/configuration.d.ts +73 -0
- package/dist/deployment/worker/configuration.js +165 -0
- package/dist/deployment/worker/content.d.ts +38 -0
- package/dist/deployment/worker/content.js +169 -0
- package/dist/deployment/worker/index.d.ts +29 -0
- package/dist/deployment/worker/index.js +29 -0
- package/dist/deployment/worker/limits.d.ts +30 -0
- package/dist/deployment/worker/limits.js +30 -0
- package/dist/deployment/worker/record.d.ts +29 -0
- package/dist/deployment/worker/record.js +69 -0
- package/dist/deployment/worker/request.d.ts +118 -0
- package/dist/deployment/worker/request.js +280 -0
- package/dist/deployment/worker/response.d.ts +101 -0
- package/dist/deployment/worker/response.js +207 -0
- package/dist/execution/cache/cache.d.ts +17 -0
- package/dist/execution/cache/cache.js +11 -0
- package/dist/execution/cache/index.d.ts +2 -0
- package/dist/execution/cache/index.js +2 -0
- package/dist/execution/cache/memory.d.ts +13 -0
- package/dist/execution/cache/memory.js +48 -0
- package/dist/execution/identity/authentication.d.ts +33 -3
- package/dist/execution/identity/authentication.js +90 -36
- package/dist/execution/identity/callback.d.ts +20 -20
- package/dist/execution/identity/callback.js +34 -26
- package/dist/execution/identity/delivery.d.ts +6 -4
- package/dist/execution/identity/delivery.js +25 -20
- package/dist/execution/identity/identity.d.ts +17 -3
- package/dist/execution/identity/identity.js +12 -4
- package/dist/execution/identity/jwks.d.ts +5 -0
- package/dist/execution/identity/jwks.js +92 -102
- package/dist/execution/index.d.ts +6 -4
- package/dist/execution/index.js +4 -2
- package/dist/execution/invocation/admission/age.d.ts +57 -0
- package/dist/execution/invocation/admission/age.js +208 -0
- package/dist/execution/invocation/admission/authentication.d.ts +13 -13
- package/dist/execution/invocation/admission/authentication.js +52 -44
- package/dist/execution/invocation/admission/authority.d.ts +28 -6
- package/dist/execution/invocation/admission/authority.js +9 -2
- package/dist/execution/invocation/admission/index.d.ts +4 -3
- package/dist/execution/invocation/admission/index.js +3 -2
- package/dist/execution/invocation/admission/input.d.ts +2 -2
- package/dist/execution/invocation/admission/input.js +16 -2
- package/dist/execution/invocation/admission/target.d.ts +11 -0
- package/dist/execution/invocation/admission/target.js +22 -3
- package/dist/execution/invocation/capabilities/bind.d.ts +11 -0
- package/dist/execution/invocation/capabilities/bind.js +25 -0
- package/dist/execution/invocation/capabilities/index.d.ts +1 -0
- package/dist/execution/invocation/capabilities/index.js +1 -0
- package/dist/execution/invocation/dependency/bind.d.ts +3 -1
- package/dist/execution/invocation/dependency/bind.js +36 -16
- package/dist/execution/invocation/dispatch/context.d.ts +7 -6
- package/dist/execution/invocation/dispatch/context.js +11 -44
- package/dist/execution/invocation/dispatch/workflow.js +0 -4
- package/dist/execution/invocation/handler.js +8 -2
- package/dist/execution/invocation/index.d.ts +2 -2
- package/dist/execution/invocation/index.js +1 -1
- package/dist/execution/invocation/integration/authentication.d.ts +3 -3
- package/dist/execution/invocation/integration/authentication.js +7 -7
- package/dist/execution/invocation/integration/call.d.ts +2 -1
- package/dist/execution/invocation/integration/call.js +3 -3
- package/dist/execution/invocation/integration/clients.d.ts +1 -1
- package/dist/execution/invocation/integration/index.d.ts +1 -0
- package/dist/execution/invocation/integration/index.js +1 -0
- package/dist/execution/invocation/invocation.d.ts +6 -0
- package/dist/execution/invocation/invocation.js +129 -21
- package/dist/execution/invocation/lifecycle/active.d.ts +8 -2
- package/dist/execution/invocation/lifecycle/active.js +3 -3
- package/dist/execution/invocation/lifecycle/index.d.ts +1 -1
- package/dist/execution/invocation/result/errors.d.ts +0 -10
- package/dist/execution/invocation/result/errors.js +0 -17
- package/dist/execution/invocation/result/index.d.ts +2 -2
- package/dist/execution/invocation/result/index.js +1 -1
- package/dist/execution/invocation/result/project.js +41 -1
- package/dist/execution/node/serve.d.ts +2 -2
- package/dist/execution/node/serve.js +1 -1
- package/dist/execution/runtime/index.d.ts +1 -0
- package/dist/execution/runtime/index.js +1 -0
- package/dist/execution/runtime/load.d.ts +3 -3
- package/dist/execution/runtime/load.js +3 -2
- package/dist/execution/runtime/release.d.ts +17 -0
- package/dist/execution/runtime/release.js +7 -0
- package/dist/execution/serve.d.ts +18 -4
- package/dist/execution/serve.js +10 -0
- package/dist/execution/service/create.js +43 -7
- package/dist/execution/service/initialization.d.ts +4 -4
- package/dist/execution/service/initialization.js +23 -14
- package/dist/execution/service/release.d.ts +2 -2
- package/dist/execution/service/release.js +3 -2
- package/dist/execution/service/service.d.ts +20 -5
- package/dist/execution/service/serving/delivery.d.ts +5 -0
- package/dist/execution/service/{publication → serving}/delivery.js +4 -1
- package/dist/execution/service/{publication → serving}/index.d.ts +1 -1
- package/dist/execution/service/serving/installation.d.ts +4 -0
- package/dist/execution/service/serving/installation.js +9 -0
- package/dist/execution/service/serving/source.d.ts +11 -0
- package/dist/execution/service/serving/source.js +15 -0
- package/dist/execution/workflows/attempts.d.ts +87 -0
- package/dist/execution/workflows/attempts.js +205 -0
- package/dist/execution/workflows/discovery.d.ts +14 -0
- package/dist/execution/workflows/discovery.js +151 -0
- package/dist/execution/workflows/engine.d.ts +83 -0
- package/dist/execution/workflows/engine.js +1 -0
- package/dist/execution/workflows/envelope.d.ts +12 -0
- package/dist/execution/workflows/envelope.js +46 -0
- package/dist/execution/workflows/failure.d.ts +39 -0
- package/dist/execution/workflows/failure.js +143 -0
- package/dist/execution/workflows/index.d.ts +4 -0
- package/dist/execution/workflows/index.js +3 -0
- package/dist/execution/workflows/integrations.d.ts +13 -0
- package/dist/execution/workflows/integrations.js +25 -0
- package/dist/execution/workflows/options.d.ts +81 -0
- package/dist/execution/workflows/options.js +158 -0
- package/dist/execution/workflows/receiver.d.ts +24 -0
- package/dist/execution/workflows/receiver.js +99 -0
- package/dist/execution/workflows/route.d.ts +12 -0
- package/dist/execution/workflows/route.js +35 -0
- package/dist/execution/workflows/run.d.ts +23 -0
- package/dist/execution/workflows/run.js +365 -0
- package/dist/execution/workflows/steps.d.ts +48 -0
- package/dist/execution/workflows/steps.js +93 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2 -2
- package/dist/platform/graph/alias.d.ts +1 -5
- package/dist/platform/graph/alias.js +1 -5
- package/dist/platform/graph/document/index.d.ts +1 -1
- package/dist/platform/graph/document/index.js +1 -1
- package/dist/platform/graph/index.d.ts +1 -1
- package/dist/platform/graph/index.js +1 -1
- package/dist/platform/release/index.d.ts +2 -0
- package/dist/platform/release/index.js +2 -0
- package/dist/platform/schema/callable-authoring.d.ts +21 -0
- package/dist/platform/schema/callable-authoring.js +27 -0
- package/dist/platform/schema/class-authoring.d.ts +61 -11
- package/dist/platform/schema/class-authoring.js +37 -4
- package/dist/platform/schema/class-icon-svg.d.ts +9 -0
- package/dist/platform/schema/class-icon-svg.js +29 -0
- package/dist/platform/schema/class-icon.d.ts +3 -8
- package/dist/platform/schema/class-icon.js +2 -29
- package/dist/platform/schema/index.d.ts +6 -4
- package/dist/platform/schema/index.js +2 -1
- package/dist/platform/schema/property.d.ts +5 -0
- package/dist/platform/schema/schema-authoring.d.ts +14 -7
- package/dist/platform/schema/schema-authoring.js +5 -1
- package/dist/platform/versioning/dependents.d.ts +18 -0
- package/dist/platform/versioning/dependents.js +15 -0
- package/dist/platform/versioning/index.d.ts +5 -0
- package/dist/platform/versioning/index.js +5 -0
- package/dist/platform/versioning/name.d.ts +38 -0
- package/dist/platform/versioning/name.js +58 -0
- package/dist/platform/versioning/reference.d.ts +48 -0
- package/dist/platform/versioning/reference.js +95 -0
- package/dist/platform/versioning/version.d.ts +72 -0
- package/dist/platform/versioning/version.js +98 -0
- package/dist/project/admit.js +1 -5
- package/dist/project/define.d.ts +4 -4
- package/dist/project/define.js +55 -35
- package/dist/project/index.d.ts +1 -1
- package/dist/project/install-command.d.ts +6 -0
- package/dist/project/install-command.js +9 -0
- package/dist/project/project.d.ts +10 -8
- package/dist/testing/dataset/define.d.ts +1 -1
- package/dist/testing/durable/engine.d.ts +128 -0
- package/dist/testing/durable/engine.js +619 -0
- package/dist/testing/durable/index.d.ts +3 -0
- package/dist/testing/durable/index.js +1 -0
- package/dist/testing/durable/steps.d.ts +30 -0
- package/dist/testing/durable/steps.js +45 -0
- package/dist/testing/index.d.ts +6 -1
- package/dist/testing/index.js +5 -1
- package/dist/testing/load.js +1 -1
- package/dist/tooling/cli/adapter-command.d.ts +35 -0
- package/dist/tooling/cli/adapter-command.js +66 -0
- package/dist/tooling/cli/arguments.d.ts +17 -6
- package/dist/tooling/cli/arguments.js +175 -52
- package/dist/tooling/cli/build.d.ts +55 -0
- package/dist/tooling/cli/build.js +77 -0
- package/dist/tooling/cli/bun.d.ts +0 -1
- package/dist/tooling/cli/bun.js +0 -7
- package/dist/tooling/cli/commit.d.ts +35 -0
- package/dist/tooling/cli/commit.js +235 -0
- package/dist/tooling/cli/deploy-mode.d.ts +26 -0
- package/dist/tooling/cli/deploy-mode.js +59 -0
- package/dist/tooling/cli/deploy-result.d.ts +80 -0
- package/dist/tooling/cli/deploy-result.js +64 -0
- package/dist/tooling/cli/diff/declared.d.ts +7 -0
- package/dist/tooling/cli/diff/declared.js +27 -0
- package/dist/tooling/cli/diff/index.d.ts +30 -0
- package/dist/tooling/cli/diff/index.js +58 -0
- package/dist/tooling/cli/diff/render.d.ts +15 -0
- package/dist/tooling/cli/diff/render.js +131 -0
- package/dist/tooling/cli/diff/report.d.ts +88 -0
- package/dist/tooling/cli/diff/report.js +154 -0
- package/dist/tooling/cli/dotenv.d.ts +5 -5
- package/dist/tooling/cli/dotenv.js +6 -36
- package/dist/tooling/cli/help.js +173 -60
- package/dist/tooling/cli/immutable-deployment.d.ts +83 -0
- package/dist/tooling/cli/immutable-deployment.js +135 -0
- package/dist/tooling/cli/index.d.ts +12 -4
- package/dist/tooling/cli/index.js +6 -3
- package/dist/tooling/cli/installed-on.d.ts +83 -0
- package/dist/tooling/cli/installed-on.js +156 -0
- package/dist/tooling/cli/list.d.ts +152 -0
- package/dist/tooling/cli/list.js +331 -0
- package/dist/tooling/cli/log.d.ts +5 -2
- package/dist/tooling/cli/log.js +9 -2
- package/dist/tooling/cli/orchestrate.d.ts +0 -6
- package/dist/tooling/cli/orchestrate.js +246 -90
- package/dist/tooling/cli/project.d.ts +3 -3
- package/dist/tooling/cli/publish/index.d.ts +81 -0
- package/dist/tooling/cli/publish/index.js +383 -0
- package/dist/tooling/cli/publish/report.d.ts +49 -0
- package/dist/tooling/cli/publish/report.js +15 -0
- package/dist/tooling/cli/registry/client.d.ts +121 -0
- package/dist/tooling/cli/registry/client.js +354 -0
- package/dist/tooling/cli/registry/error.d.ts +11 -0
- package/dist/tooling/cli/registry/error.js +17 -0
- package/dist/tooling/cli/registry/executable.d.ts +35 -0
- package/dist/tooling/cli/registry/executable.js +96 -0
- package/dist/tooling/cli/registry/index.d.ts +9 -0
- package/dist/tooling/cli/registry/index.js +8 -0
- package/dist/tooling/cli/registry/installations.d.ts +67 -0
- package/dist/tooling/cli/registry/installations.js +108 -0
- package/dist/tooling/cli/registry/process.d.ts +36 -0
- package/dist/tooling/cli/registry/process.js +119 -0
- package/dist/tooling/cli/secrets.d.ts +9 -0
- package/dist/tooling/cli/secrets.js +19 -0
- package/dist/tooling/cli/yank.d.ts +34 -0
- package/dist/tooling/cli/yank.js +32 -0
- package/dist/tooling/linter/adapters/typescript/imports.d.ts +0 -1
- package/dist/tooling/linter/adapters/typescript/imports.js +1 -5
- package/dist/tooling/linter/adapters/typescript/index.d.ts +1 -1
- package/dist/tooling/linter/adapters/typescript/index.js +1 -1
- package/dist/tooling/linter/adapters/typescript/syntax.d.ts +3 -3
- package/dist/tooling/linter/adapters/typescript/syntax.js +13 -25
- package/dist/tooling/linter/implementations/source/callable-requirements.d.ts +1 -2
- package/dist/tooling/linter/implementations/source/callable-requirements.js +11 -16
- package/dist/tooling/linter/implementations/source/dependencies.js +13 -72
- package/dist/tooling/linter/implementations/source/global.js +1 -2
- package/dist/tooling/linter/implementations/source/mutations.js +18 -29
- package/dist/tooling/linter/implementations/source/providers.js +5 -5
- package/dist/tooling/linter/implementations/source/queries.js +1 -17
- package/dist/tooling/linter/implementations/source/shared.d.ts +12 -4
- package/dist/tooling/linter/implementations/source/shared.js +101 -46
- package/dist/tooling/linter/implementations/source/verifiers.js +0 -2
- package/dist/tooling/linter/implementations/source/views.js +2 -2
- package/dist/tooling/linter/implementations/source/workflows.js +499 -17
- package/dist/tooling/linter/policy/generated.js +14 -63
- package/dist/tooling/linter/requirements/registry.js +6 -8
- package/dist/tooling/packaging/declarations/ownership.js +1 -1
- package/dist/tooling/packaging/finalize.d.ts +1 -1
- package/dist/tooling/packaging/finalize.js +1 -1
- package/docs/admission-age.md +88 -0
- package/docs/auth-api-migration.md +55 -0
- package/docs/business-errors.md +42 -0
- package/docs/domain-definition-migration.md +44 -0
- package/docs/domain-schema-migration.md +36 -0
- package/docs/durable-workflows.md +445 -0
- package/docs/handler-dependencies.md +213 -0
- package/docs/release.md +155 -0
- package/docs/schema-cost.md +124 -0
- package/package.json +45 -16
- package/dist/application/application.d.ts +0 -28
- package/dist/application/query/execution/projection.d.ts +0 -3
- package/dist/application/query/execution/projection.js +0 -3
- package/dist/deployment/adapter/deploy/context.d.ts +0 -15
- package/dist/deployment/adapter/deploy/index.d.ts +0 -2
- package/dist/deployment/adapter/deploy/result.d.ts +0 -50
- package/dist/deployment/adapter/prepare/artifact.d.ts +0 -33
- package/dist/deployment/adapter/prepare/context.d.ts +0 -23
- package/dist/deployment/adapter/prepare/index.d.ts +0 -2
- package/dist/deployment/deploy.d.ts +0 -20
- package/dist/deployment/deploy.js +0 -31
- package/dist/deployment/release/publication/index.d.ts +0 -6
- package/dist/deployment/release/publication/index.js +0 -6
- package/dist/deployment/release/publication/manifest.d.ts +0 -3
- package/dist/deployment/release/publication/manifest.js +0 -5
- package/dist/deployment/release/publication/requirements.d.ts +0 -3
- package/dist/deployment/release/publication/requirements.js +0 -3
- package/dist/deployment/release/publication/seal.d.ts +0 -10
- package/dist/deployment/release/publication/seal.js +0 -39
- package/dist/deployment/verify/preflight/artifact.d.ts +0 -6
- package/dist/deployment/verify/preflight/artifact.js +0 -122
- package/dist/deployment/verify/preflight/publication.d.ts +0 -4
- package/dist/deployment/verify/preflight/publication.js +0 -14
- package/dist/deployment/verify/readiness/deployment.d.ts +0 -3
- package/dist/deployment/verify/readiness/deployment.js +0 -151
- package/dist/deployment/verify/readiness/publication.d.ts +0 -11
- package/dist/deployment/verify/readiness/publication.js +0 -41
- package/dist/execution/service/errors.d.ts +0 -3
- package/dist/execution/service/errors.js +0 -3
- package/dist/execution/service/publication/delivery.d.ts +0 -2
- package/dist/execution/service/publication/installation.d.ts +0 -3
- package/dist/execution/service/publication/installation.js +0 -8
- package/dist/execution/service/publication/source.d.ts +0 -3
- package/dist/execution/service/publication/source.js +0 -11
- package/dist/platform/publication/index.d.ts +0 -2
- package/dist/platform/publication/index.js +0 -2
- package/dist/tooling/cli/astrale/authority.d.ts +0 -5
- package/dist/tooling/cli/astrale/authority.js +0 -11
- package/dist/tooling/cli/astrale/executable.d.ts +0 -2
- package/dist/tooling/cli/astrale/executable.js +0 -47
- package/dist/tooling/cli/astrale/failure.d.ts +0 -6
- package/dist/tooling/cli/astrale/failure.js +0 -48
- package/dist/tooling/cli/astrale/instance.d.ts +0 -11
- package/dist/tooling/cli/astrale/instance.js +0 -52
- package/dist/tooling/cli/astrale/process.d.ts +0 -13
- package/dist/tooling/cli/astrale/process.js +0 -94
- package/dist/tooling/cli/astrale/version.d.ts +0 -18
- package/dist/tooling/cli/astrale/version.js +0 -55
- package/dist/tooling/cli/credential.d.ts +0 -2
- package/dist/tooling/cli/credential.js +0 -57
- package/dist/tooling/cli/deprecations.d.ts +0 -9
- package/dist/tooling/cli/deprecations.js +0 -15
- package/dist/tooling/cli/development/candidate.d.ts +0 -25
- package/dist/tooling/cli/development/candidate.js +0 -176
- package/dist/tooling/cli/development/deployment.d.ts +0 -16
- package/dist/tooling/cli/development/deployment.js +0 -39
- package/dist/tooling/cli/development/develop.d.ts +0 -11
- package/dist/tooling/cli/development/develop.js +0 -243
- package/dist/tooling/cli/development/lease.d.ts +0 -18
- package/dist/tooling/cli/development/lease.js +0 -163
- package/dist/tooling/cli/development/lifecycle.d.ts +0 -9
- package/dist/tooling/cli/development/lifecycle.js +0 -43
- package/dist/tooling/cli/development/project-imports.d.ts +0 -22
- package/dist/tooling/cli/development/project-imports.js +0 -39
- package/dist/tooling/cli/development/project-lock.d.ts +0 -16
- package/dist/tooling/cli/development/project-lock.js +0 -41
- package/dist/tooling/cli/development/rebuild.d.ts +0 -13
- package/dist/tooling/cli/development/rebuild.js +0 -58
- package/dist/tooling/cli/development/release-evidence.d.ts +0 -4
- package/dist/tooling/cli/development/release-evidence.js +0 -10
- package/dist/tooling/cli/development/report.d.ts +0 -6
- package/dist/tooling/cli/development/report.js +0 -14
- package/dist/tooling/cli/development/session-file.d.ts +0 -53
- package/dist/tooling/cli/development/session-file.js +0 -337
- package/dist/tooling/cli/development/source-watch.d.ts +0 -14
- package/dist/tooling/cli/development/source-watch.js +0 -140
- package/dist/tooling/cli/development/sources.d.ts +0 -7
- package/dist/tooling/cli/development/sources.js +0 -48
- package/dist/tooling/cli/development/target-lock.d.ts +0 -16
- package/dist/tooling/cli/development/target-lock.js +0 -68
- package/dist/tooling/cli/development/view.d.ts +0 -28
- package/dist/tooling/cli/development/view.js +0 -151
- package/dist/tooling/cli/environment-release.d.ts +0 -21
- package/dist/tooling/cli/environment-release.js +0 -46
- package/dist/tooling/cli/evidence.d.ts +0 -11
- package/dist/tooling/cli/evidence.js +0 -53
- package/dist/tooling/cli/installation/index.d.ts +0 -2
- package/dist/tooling/cli/installation/index.js +0 -1
- package/dist/tooling/cli/installation/observation.d.ts +0 -10
- package/dist/tooling/cli/installation/observation.js +0 -44
- package/dist/tooling/cli/installation/reconcile.d.ts +0 -32
- package/dist/tooling/cli/installation/reconcile.js +0 -122
- package/dist/tooling/linter/implementations/source/migrations.d.ts +0 -2
- package/dist/tooling/linter/implementations/source/migrations.js +0 -113
- package/dist/tooling/linter/qualification/index.d.ts +0 -10
- package/dist/tooling/linter/qualification/index.js +0 -2
- package/dist/tooling/linter/qualification/query-fixtures.d.ts +0 -2
- package/dist/tooling/linter/qualification/query-fixtures.js +0 -68
- package/dist/tooling/linter/qualification/runner.d.ts +0 -3
- package/dist/tooling/linter/qualification/runner.js +0 -6
- /package/dist/application/{application.js → domain.js} +0 -0
- /package/dist/{deployment/adapter/deploy/context.js → application/workflow/durable.js} +0 -0
- /package/dist/deployment/adapter/{deploy/index.js → bundle/bundle.js} +0 -0
- /package/dist/deployment/adapter/{deploy/result.js → bundle/file.js} +0 -0
- /package/dist/deployment/adapter/{prepare → bundle}/index.js +0 -0
- /package/dist/deployment/adapter/{prepare/artifact.js → release/command.js} +0 -0
- /package/dist/deployment/adapter/{prepare → release}/context.js +0 -0
- /package/dist/deployment/release/{publication → served}/routes.d.ts +0 -0
- /package/dist/deployment/release/{publication → served}/routes.js +0 -0
- /package/dist/execution/service/{publication → serving}/index.js +0 -0
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as publication from '@astrale-os/kernel-protocol/publication';
|
|
2
|
-
import * as protocolRoutes from '@astrale-os/kernel-protocol/routes';
|
|
3
|
-
import type { Build } from '../../build/index.js';
|
|
4
|
-
import type { Addressing } from '../addressing.js';
|
|
5
|
-
export declare const DELIVERY_PATH: '/install';
|
|
6
|
-
export interface SealedPublication {
|
|
7
|
-
readonly publication: publication.Publication;
|
|
8
|
-
readonly routes: protocolRoutes.Table;
|
|
9
|
-
}
|
|
10
|
-
export declare function seal(build: Build, addressing: Addressing): SealedPublication;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import * as publication from '@astrale-os/kernel-protocol/publication';
|
|
2
|
-
import * as protocolRoutes from '@astrale-os/kernel-protocol/routes';
|
|
3
|
-
import { evidenceOf } from '../../build/admission.js';
|
|
4
|
-
import { callables } from './callables.js';
|
|
5
|
-
import { manifest } from './manifest.js';
|
|
6
|
-
import { requirements } from './requirements.js';
|
|
7
|
-
import { routes } from './routes.js';
|
|
8
|
-
import { views } from './views.js';
|
|
9
|
-
export const DELIVERY_PATH = '/install';
|
|
10
|
-
export function seal(build, addressing) {
|
|
11
|
-
const root = build.schema.compiled.root;
|
|
12
|
-
const selectedManifest = manifest(build);
|
|
13
|
-
const sealed = publication.seal({
|
|
14
|
-
format: 'astrale.domain.publication',
|
|
15
|
-
version: 3,
|
|
16
|
-
origin: root.origin,
|
|
17
|
-
identity: { issuer: addressing.issuer, subject: root.origin },
|
|
18
|
-
schema: {
|
|
19
|
-
revision: root.revision,
|
|
20
|
-
bundle: {
|
|
21
|
-
href: publication.bundleUrl(addressing.publicUrl, build.schema.bundle.ref),
|
|
22
|
-
ref: build.schema.bundle.ref,
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
requirements: requirements(build),
|
|
26
|
-
...(selectedManifest === undefined ? {} : { manifest: selectedManifest }),
|
|
27
|
-
bindings: {
|
|
28
|
-
callables: callables(build, addressing),
|
|
29
|
-
views: views(build, addressing),
|
|
30
|
-
},
|
|
31
|
-
delivery: publication.placeDelivery({ path: DELIVERY_PATH, authentication: { kind: 'public' } }, addressing.publicUrl, publication.bundleUrl(addressing.publicUrl, build.schema.bundle.ref)),
|
|
32
|
-
routes: routes(build, addressing),
|
|
33
|
-
});
|
|
34
|
-
const { domain } = evidenceOf(build);
|
|
35
|
-
return Object.freeze({
|
|
36
|
-
publication: sealed,
|
|
37
|
-
routes: protocolRoutes.bind(build.routes, sealed, domain, addressing.publicUrl),
|
|
38
|
-
});
|
|
39
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { ArtifactSource, PreparedArtifact } from '../../adapter/prepare/index.js';
|
|
2
|
-
import type { Build } from '../../build/index.js';
|
|
3
|
-
import type { ResolvedRuntimeReference } from '../../runtime/index.js';
|
|
4
|
-
/** Detach preparation output and bind it to the exact Build and resolved Runtime identity. */
|
|
5
|
-
export declare function artifact<const BuildValue extends Build>(build: BuildValue, runtime: ResolvedRuntimeReference, source: ArtifactSource): PreparedArtifact<BuildValue>;
|
|
6
|
-
export declare function isPreparedArtifact(input: unknown): input is PreparedArtifact;
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { identify } from '@astrale-os/kernel-protocol/artifact';
|
|
2
|
-
import { isAddressing } from '../../release/index.js';
|
|
3
|
-
import { admit as admitRuntime } from '../../runtime/index.js';
|
|
4
|
-
const MEDIA_TYPE = 'application/vnd.astrale.prepared-artifact+octet-stream;v=1';
|
|
5
|
-
const admittedArtifacts = new WeakSet();
|
|
6
|
-
/** Detach preparation output and bind it to the exact Build and resolved Runtime identity. */
|
|
7
|
-
export function artifact(build, runtime, source) {
|
|
8
|
-
admitRuntime({ runtime: build.runtime }, runtime);
|
|
9
|
-
const admitted = admitSource(source);
|
|
10
|
-
const digest = identify(evidenceBytes(build, admitted), MEDIA_TYPE).digest;
|
|
11
|
-
const files = Object.freeze(admitted.files.map(prepareFile));
|
|
12
|
-
const prepared = Object.freeze({
|
|
13
|
-
kind: 'prepared-artifact',
|
|
14
|
-
build,
|
|
15
|
-
digest,
|
|
16
|
-
entrypoint: admitted.entrypoint,
|
|
17
|
-
files,
|
|
18
|
-
addressing: admitted.addressing,
|
|
19
|
-
});
|
|
20
|
-
admittedArtifacts.add(prepared);
|
|
21
|
-
return prepared;
|
|
22
|
-
}
|
|
23
|
-
function prepareFile(file) {
|
|
24
|
-
const content = new Uint8Array(file.content);
|
|
25
|
-
return Object.freeze({ path: file.path, bytes: () => new Uint8Array(content) });
|
|
26
|
-
}
|
|
27
|
-
export function isPreparedArtifact(input) {
|
|
28
|
-
return input !== null && typeof input === 'object' && admittedArtifacts.has(input);
|
|
29
|
-
}
|
|
30
|
-
function admitSource(source) {
|
|
31
|
-
if (source === null || typeof source !== 'object' || Array.isArray(source))
|
|
32
|
-
invalid();
|
|
33
|
-
if (Reflect.ownKeys(source).some((key) => key !== 'entrypoint' && key !== 'files' && key !== 'addressing')) {
|
|
34
|
-
invalid();
|
|
35
|
-
}
|
|
36
|
-
const entrypoint = path(source.entrypoint, 'Artifact entrypoint');
|
|
37
|
-
if (!Array.isArray(source.files) || source.files.length === 0) {
|
|
38
|
-
throw new TypeError('Artifact files must be a non-empty array.');
|
|
39
|
-
}
|
|
40
|
-
const paths = new Set();
|
|
41
|
-
const files = source.files.map((file, index) => {
|
|
42
|
-
if (file === null || typeof file !== 'object' || Array.isArray(file))
|
|
43
|
-
invalid();
|
|
44
|
-
if (Reflect.ownKeys(file).some((key) => key !== 'path' && key !== 'content') ||
|
|
45
|
-
!(file.content instanceof Uint8Array)) {
|
|
46
|
-
invalid();
|
|
47
|
-
}
|
|
48
|
-
const selected = path(file.path, `Artifact file ${index}`);
|
|
49
|
-
if (paths.has(selected))
|
|
50
|
-
throw new TypeError(`Artifact file ${selected} is duplicated.`);
|
|
51
|
-
paths.add(selected);
|
|
52
|
-
return Object.freeze({ path: selected, content: new Uint8Array(file.content) });
|
|
53
|
-
});
|
|
54
|
-
files.sort((left, right) => compare(left.path, right.path));
|
|
55
|
-
if (!paths.has(entrypoint))
|
|
56
|
-
throw new TypeError('Artifact entrypoint file is absent.');
|
|
57
|
-
const addressing = admitPlan(source.addressing);
|
|
58
|
-
return Object.freeze({ entrypoint, files: Object.freeze(files), addressing });
|
|
59
|
-
}
|
|
60
|
-
function admitPlan(input) {
|
|
61
|
-
if (input === null || typeof input !== 'object' || Array.isArray(input))
|
|
62
|
-
invalid();
|
|
63
|
-
if (input.kind === 'configured') {
|
|
64
|
-
if (Reflect.ownKeys(input).some((key) => key !== 'kind' && key !== 'addressing'))
|
|
65
|
-
invalid();
|
|
66
|
-
if (!isAddressing(input.addressing)) {
|
|
67
|
-
throw new TypeError('Configured artifact Addressing is not admitted.');
|
|
68
|
-
}
|
|
69
|
-
return Object.freeze({ kind: 'configured', addressing: input.addressing });
|
|
70
|
-
}
|
|
71
|
-
if (input.kind === 'provider-assigned') {
|
|
72
|
-
if (Reflect.ownKeys(input).some((key) => key !== 'kind' && key !== 'claim'))
|
|
73
|
-
invalid();
|
|
74
|
-
if (typeof input.claim !== 'string' ||
|
|
75
|
-
input.claim.length === 0 ||
|
|
76
|
-
input.claim.trim() !== input.claim) {
|
|
77
|
-
throw new TypeError('Provider-assigned Addressing claim must be a non-empty stable string.');
|
|
78
|
-
}
|
|
79
|
-
return Object.freeze({ kind: 'provider-assigned', claim: input.claim });
|
|
80
|
-
}
|
|
81
|
-
return invalid();
|
|
82
|
-
}
|
|
83
|
-
function evidenceBytes(build, source) {
|
|
84
|
-
const encoder = new TextEncoder();
|
|
85
|
-
const chunks = [
|
|
86
|
-
encoder.encode(JSON.stringify({
|
|
87
|
-
origin: build.schema.compiled.root.origin,
|
|
88
|
-
revision: build.schema.compiled.root.revision,
|
|
89
|
-
bundle: build.schema.bundle.ref.digest,
|
|
90
|
-
entrypoint: source.entrypoint,
|
|
91
|
-
addressing: source.addressing.kind === 'configured'
|
|
92
|
-
? { kind: 'configured', ...source.addressing.addressing }
|
|
93
|
-
: source.addressing,
|
|
94
|
-
})),
|
|
95
|
-
];
|
|
96
|
-
for (const file of source.files) {
|
|
97
|
-
chunks.push(encoder.encode(`\0${file.path}\0${file.content.byteLength}\0`), file.content);
|
|
98
|
-
}
|
|
99
|
-
const bytes = new Uint8Array(chunks.reduce((size, chunk) => size + chunk.byteLength, 0));
|
|
100
|
-
let offset = 0;
|
|
101
|
-
for (const chunk of chunks) {
|
|
102
|
-
bytes.set(chunk, offset);
|
|
103
|
-
offset += chunk.byteLength;
|
|
104
|
-
}
|
|
105
|
-
return bytes;
|
|
106
|
-
}
|
|
107
|
-
function path(input, label) {
|
|
108
|
-
if (typeof input !== 'string' ||
|
|
109
|
-
input.length === 0 ||
|
|
110
|
-
input.startsWith('/') ||
|
|
111
|
-
input.includes('\\') ||
|
|
112
|
-
input.split('/').some((segment) => segment === '' || segment === '.' || segment === '..')) {
|
|
113
|
-
throw new TypeError(`${label} must be a contained relative POSIX path.`);
|
|
114
|
-
}
|
|
115
|
-
return input;
|
|
116
|
-
}
|
|
117
|
-
function compare(left, right) {
|
|
118
|
-
return left < right ? -1 : left > right ? 1 : 0;
|
|
119
|
-
}
|
|
120
|
-
function invalid() {
|
|
121
|
-
throw new TypeError('Artifact source is invalid.');
|
|
122
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { PreparedArtifact } from '../../adapter/prepare/index.js';
|
|
2
|
-
import type { Release } from '../../release/index.js';
|
|
3
|
-
/** Verify locally assemblable Publication evidence before any provider mutation. */
|
|
4
|
-
export declare function publication(artifact: PreparedArtifact): Release | undefined;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { publication as protocolPublication, routes } from '@astrale-os/kernel-protocol';
|
|
2
|
-
import { evidenceOf } from '../../build/admission.js';
|
|
3
|
-
import { assemble } from '../../release/index.js';
|
|
4
|
-
/** Verify locally assemblable Publication evidence before any provider mutation. */
|
|
5
|
-
export function publication(artifact) {
|
|
6
|
-
if (artifact.addressing.kind !== 'configured')
|
|
7
|
-
return undefined;
|
|
8
|
-
const release = assemble(artifact.build, artifact.addressing.addressing);
|
|
9
|
-
const admitted = protocolPublication.accept(release.publication);
|
|
10
|
-
protocolPublication.verifyBundleBytes(admitted, artifact.build.schema.bundle.bytes());
|
|
11
|
-
const { domain } = evidenceOf(artifact.build);
|
|
12
|
-
routes.verifyTable(release.routes, admitted, domain);
|
|
13
|
-
return release;
|
|
14
|
-
}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { isRelease } from '../../release/index.js';
|
|
2
|
-
import { isPreparedArtifact } from '../preflight/artifact.js';
|
|
3
|
-
/** Admit adapter-reported progress without changing its mutation knowledge. */
|
|
4
|
-
export function verifyDeployment(artifact, input) {
|
|
5
|
-
if (!isPreparedArtifact(artifact))
|
|
6
|
-
throw new TypeError('PreparedArtifact is not admitted.');
|
|
7
|
-
if (input === null || typeof input !== 'object' || Array.isArray(input))
|
|
8
|
-
invalid();
|
|
9
|
-
const release = input.release === undefined ? undefined : verifyRelease(artifact, input.release);
|
|
10
|
-
const progress = verifyProgress(artifact, input.progress, release);
|
|
11
|
-
if (input.status === 'ready') {
|
|
12
|
-
exact(input, ['status', 'phase', 'progress', 'release']);
|
|
13
|
-
if (input.phase !== 'complete' ||
|
|
14
|
-
release === undefined ||
|
|
15
|
-
progress.provider.kind !== 'applied' ||
|
|
16
|
-
progress.provider.evidence.issuer === undefined ||
|
|
17
|
-
!terminal(progress.prerequisite) ||
|
|
18
|
-
!terminal(progress.configuration) ||
|
|
19
|
-
!terminal(progress.installation)) {
|
|
20
|
-
invalid();
|
|
21
|
-
}
|
|
22
|
-
return Object.freeze({ status: 'ready', phase: 'complete', progress, release });
|
|
23
|
-
}
|
|
24
|
-
if (input.status === 'failed') {
|
|
25
|
-
exact(input, ['status', 'phase', 'progress', 'error'], ['release']);
|
|
26
|
-
if (![
|
|
27
|
-
'prerequisite',
|
|
28
|
-
'provider',
|
|
29
|
-
'addressing',
|
|
30
|
-
'release',
|
|
31
|
-
'configuration',
|
|
32
|
-
'installation',
|
|
33
|
-
'readiness',
|
|
34
|
-
].includes(input.phase) ||
|
|
35
|
-
!(input.error instanceof Error)) {
|
|
36
|
-
invalid();
|
|
37
|
-
}
|
|
38
|
-
return Object.freeze({
|
|
39
|
-
status: 'failed',
|
|
40
|
-
phase: input.phase,
|
|
41
|
-
progress,
|
|
42
|
-
error: input.error,
|
|
43
|
-
...(release === undefined ? {} : { release }),
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
return invalid();
|
|
47
|
-
}
|
|
48
|
-
function verifyRelease(artifact, release) {
|
|
49
|
-
if (!isRelease(release) || release.build !== artifact.build) {
|
|
50
|
-
throw new TypeError('DeployResult Release differs from the PreparedArtifact Build.');
|
|
51
|
-
}
|
|
52
|
-
if (artifact.addressing.kind === 'configured' &&
|
|
53
|
-
(release.addressing.issuer !== artifact.addressing.addressing.issuer ||
|
|
54
|
-
release.addressing.publicUrl !== artifact.addressing.addressing.publicUrl)) {
|
|
55
|
-
throw new TypeError('DeployResult Release differs from configured Addressing.');
|
|
56
|
-
}
|
|
57
|
-
return release;
|
|
58
|
-
}
|
|
59
|
-
function verifyProgress(artifact, input, release) {
|
|
60
|
-
if (input === null || typeof input !== 'object' || Array.isArray(input))
|
|
61
|
-
invalid();
|
|
62
|
-
exact(input, ['prerequisite', 'provider', 'configuration', 'installation']);
|
|
63
|
-
return Object.freeze({
|
|
64
|
-
prerequisite: knowledge(input.prerequisite),
|
|
65
|
-
provider: providerKnowledge(artifact, input.provider, release),
|
|
66
|
-
configuration: knowledge(input.configuration),
|
|
67
|
-
installation: knowledge(input.installation),
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
function providerKnowledge(artifact, input, release) {
|
|
71
|
-
if (input?.kind === 'partial') {
|
|
72
|
-
exact(input, ['kind'], ['evidence']);
|
|
73
|
-
if (input.evidence === undefined)
|
|
74
|
-
return Object.freeze({ kind: 'partial' });
|
|
75
|
-
const evidence = providerEvidence(input.evidence);
|
|
76
|
-
if (evidence.artifact !== artifact.digest) {
|
|
77
|
-
throw new TypeError('Provider deployment evidence differs from the PreparedArtifact digest.');
|
|
78
|
-
}
|
|
79
|
-
if (release !== undefined &&
|
|
80
|
-
evidence.issuer !== undefined &&
|
|
81
|
-
evidence.issuer !== release.addressing.issuer) {
|
|
82
|
-
throw new TypeError('Provider deployment evidence differs from the Release issuer.');
|
|
83
|
-
}
|
|
84
|
-
return Object.freeze({ kind: 'partial', evidence });
|
|
85
|
-
}
|
|
86
|
-
if (input?.kind !== 'applied')
|
|
87
|
-
return knowledge(input);
|
|
88
|
-
exact(input, ['kind', 'evidence']);
|
|
89
|
-
const evidence = providerEvidence(input.evidence);
|
|
90
|
-
if (evidence.artifact !== artifact.digest) {
|
|
91
|
-
throw new TypeError('Provider deployment evidence differs from the PreparedArtifact digest.');
|
|
92
|
-
}
|
|
93
|
-
if (release !== undefined &&
|
|
94
|
-
evidence.issuer !== undefined &&
|
|
95
|
-
evidence.issuer !== release.addressing.issuer) {
|
|
96
|
-
throw new TypeError('Provider deployment evidence differs from the Release issuer.');
|
|
97
|
-
}
|
|
98
|
-
return Object.freeze({ kind: 'applied', evidence });
|
|
99
|
-
}
|
|
100
|
-
function terminal(input) {
|
|
101
|
-
return input.kind === 'none' || input.kind === 'applied';
|
|
102
|
-
}
|
|
103
|
-
function providerEvidence(input) {
|
|
104
|
-
if (input === null || typeof input !== 'object' || Array.isArray(input))
|
|
105
|
-
invalid();
|
|
106
|
-
exact(input, ['provider', 'deployment', 'artifact'], ['issuer', 'preflight']);
|
|
107
|
-
if (typeof input.provider !== 'string' ||
|
|
108
|
-
input.provider.length === 0 ||
|
|
109
|
-
input.provider.trim() !== input.provider ||
|
|
110
|
-
typeof input.deployment !== 'string' ||
|
|
111
|
-
input.deployment.length === 0 ||
|
|
112
|
-
input.deployment.trim() !== input.deployment ||
|
|
113
|
-
typeof input.artifact !== 'string' ||
|
|
114
|
-
(input.issuer !== undefined && typeof input.issuer !== 'string') ||
|
|
115
|
-
(input.preflight !== undefined &&
|
|
116
|
-
input.preflight !== 'passed' &&
|
|
117
|
-
input.preflight !== 'unavailable')) {
|
|
118
|
-
invalid();
|
|
119
|
-
}
|
|
120
|
-
return Object.freeze({ ...input });
|
|
121
|
-
}
|
|
122
|
-
function knowledge(input) {
|
|
123
|
-
if (input === null || typeof input !== 'object' || Array.isArray(input))
|
|
124
|
-
invalid();
|
|
125
|
-
if (input.kind === 'applied') {
|
|
126
|
-
exact(input, ['kind', 'evidence']);
|
|
127
|
-
return Object.freeze({ kind: 'applied', evidence: input.evidence });
|
|
128
|
-
}
|
|
129
|
-
if (input.kind === 'partial') {
|
|
130
|
-
exact(input, ['kind'], ['evidence']);
|
|
131
|
-
return Object.freeze({
|
|
132
|
-
kind: 'partial',
|
|
133
|
-
...(input.evidence === undefined ? {} : { evidence: input.evidence }),
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
if (input.kind === 'none' || input.kind === 'unknown') {
|
|
137
|
-
exact(input, ['kind']);
|
|
138
|
-
return Object.freeze({ kind: input.kind });
|
|
139
|
-
}
|
|
140
|
-
return invalid();
|
|
141
|
-
}
|
|
142
|
-
function exact(input, required, optional = []) {
|
|
143
|
-
const allowed = new Set([...required, ...optional]);
|
|
144
|
-
if (required.some((key) => !Object.hasOwn(input, key)) ||
|
|
145
|
-
Reflect.ownKeys(input).some((key) => typeof key !== 'string' || !allowed.has(key))) {
|
|
146
|
-
invalid();
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
function invalid() {
|
|
150
|
-
throw new TypeError('DeployResult is invalid.');
|
|
151
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { publication } from '@astrale-os/kernel-protocol';
|
|
2
|
-
import type { Release } from '../../release/index.js';
|
|
3
|
-
export type ReadinessFetch = (input: string, init: {
|
|
4
|
-
readonly redirect: 'error';
|
|
5
|
-
readonly signal?: AbortSignal;
|
|
6
|
-
}) => Promise<Response>;
|
|
7
|
-
/** Fetch and verify the exact live Publication and Bundle for one Release. */
|
|
8
|
-
export declare function verifyPublication(release: Release, options?: {
|
|
9
|
-
readonly fetch?: ReadinessFetch;
|
|
10
|
-
readonly signal?: AbortSignal;
|
|
11
|
-
}): Promise<publication.Publication>;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { publication } from '@astrale-os/kernel-protocol';
|
|
2
|
-
const MAXIMUM_PUBLICATION_BYTES = 1024 * 1024;
|
|
3
|
-
const MAXIMUM_BUNDLE_BYTES = 16 * 1024 * 1024;
|
|
4
|
-
/** Fetch and verify the exact live Publication and Bundle for one Release. */
|
|
5
|
-
export async function verifyPublication(release, options = {}) {
|
|
6
|
-
const fetcher = options.fetch ?? globalThis.fetch;
|
|
7
|
-
const publicationUrl = publication.url(release.addressing.publicUrl);
|
|
8
|
-
const response = await fetchRequired(fetcher, publicationUrl, options.signal);
|
|
9
|
-
const deployed = publication.accept(JSON.parse(await text(response, publicationUrl, MAXIMUM_PUBLICATION_BYTES)));
|
|
10
|
-
if (!publication.matchesReference(deployed, publication.reference(release.publication))) {
|
|
11
|
-
throw new Error('Live Publication differs from the expected Release.');
|
|
12
|
-
}
|
|
13
|
-
const bundleResponse = await fetchRequired(fetcher, deployed.schema.bundle.href, options.signal);
|
|
14
|
-
const bytes = new Uint8Array(await bounded(bundleResponse, deployed.schema.bundle.href, MAXIMUM_BUNDLE_BYTES));
|
|
15
|
-
publication.decodeBundle(deployed, bytes);
|
|
16
|
-
return deployed;
|
|
17
|
-
}
|
|
18
|
-
async function fetchRequired(fetcher, url, signal) {
|
|
19
|
-
const response = await fetcher(url, {
|
|
20
|
-
redirect: 'error',
|
|
21
|
-
...(signal === undefined ? {} : { signal }),
|
|
22
|
-
});
|
|
23
|
-
if (!response.ok)
|
|
24
|
-
throw new Error(`GET ${url} returned ${response.status}.`);
|
|
25
|
-
return response;
|
|
26
|
-
}
|
|
27
|
-
async function bounded(response, url, maximum) {
|
|
28
|
-
const bytes = await response.arrayBuffer();
|
|
29
|
-
if (bytes.byteLength > maximum)
|
|
30
|
-
throw new Error(`GET ${url} exceeded ${maximum} bytes.`);
|
|
31
|
-
return bytes;
|
|
32
|
-
}
|
|
33
|
-
async function text(response, url, maximum) {
|
|
34
|
-
const bytes = await bounded(response, url, maximum);
|
|
35
|
-
try {
|
|
36
|
-
return new TextDecoder('utf-8', { fatal: true, ignoreBOM: false }).decode(bytes);
|
|
37
|
-
}
|
|
38
|
-
catch (cause) {
|
|
39
|
-
throw new Error(`GET ${url} returned invalid UTF-8.`, { cause });
|
|
40
|
-
}
|
|
41
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export function installation(release, provider) {
|
|
2
|
-
const advertised = release.publication.delivery !== undefined;
|
|
3
|
-
if (advertised !== (provider !== undefined)) {
|
|
4
|
-
throw new TypeError(advertised
|
|
5
|
-
? 'Release advertises Publication delivery without a Provider.'
|
|
6
|
-
: 'Publication delivery Provider has no Release endpoint.');
|
|
7
|
-
}
|
|
8
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { preparePublicationSnapshot } from '@astrale-os/kernel-server';
|
|
2
|
-
export function source(runtime) {
|
|
3
|
-
const release = runtime.release;
|
|
4
|
-
const snapshot = preparePublicationSnapshot({
|
|
5
|
-
publication: release.publication,
|
|
6
|
-
bundle: release.build.schema.bundle.bytes(),
|
|
7
|
-
table: release.routes,
|
|
8
|
-
domain: runtime.domain,
|
|
9
|
-
});
|
|
10
|
-
return Object.freeze({ current: () => snapshot });
|
|
11
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/** Build one mutually exclusive authority argument set for an Astrale CLI operation. */
|
|
2
|
-
export function astraleAuthorityArguments(input) {
|
|
3
|
-
if (input.identity !== undefined && input.credential !== undefined) {
|
|
4
|
-
throw new TypeError('Astrale authority cannot combine an identity and a credential.');
|
|
5
|
-
}
|
|
6
|
-
return input.credential === undefined
|
|
7
|
-
? input.identity === undefined
|
|
8
|
-
? Object.freeze([])
|
|
9
|
-
: Object.freeze(['--as', input.identity])
|
|
10
|
-
: Object.freeze(['--creds', input.credential]);
|
|
11
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { constants } from 'node:fs';
|
|
2
|
-
import { access, readFile, realpath } from 'node:fs/promises';
|
|
3
|
-
import { homedir } from 'node:os';
|
|
4
|
-
import { delimiter, isAbsolute, join } from 'node:path';
|
|
5
|
-
/** Resolve one exact executable for a complete sequence of Kernel CLI operations. */
|
|
6
|
-
export async function resolveAstraleExecutable(input = 'astrale') {
|
|
7
|
-
const candidates = isAbsolute(input) ? [input] : await executableCandidates(input);
|
|
8
|
-
for (const candidate of candidates) {
|
|
9
|
-
try {
|
|
10
|
-
await access(candidate, constants.X_OK);
|
|
11
|
-
return await realpath(candidate);
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
// Continue through the bounded recorded-install and PATH candidates.
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
throw new TypeError('Astrale CLI is unavailable. Install it with the official Astrale installer.');
|
|
18
|
-
}
|
|
19
|
-
async function executableCandidates(input) {
|
|
20
|
-
const path = (process.env.PATH ?? '')
|
|
21
|
-
.split(delimiter)
|
|
22
|
-
.filter(Boolean)
|
|
23
|
-
.map((directory) => join(directory, input));
|
|
24
|
-
if (input !== 'astrale')
|
|
25
|
-
return path;
|
|
26
|
-
const installed = await recordedInstallation();
|
|
27
|
-
return installed === undefined ? path : [installed, ...path];
|
|
28
|
-
}
|
|
29
|
-
async function recordedInstallation() {
|
|
30
|
-
const home = process.env.ASTRALE_HOME ?? join(homedir(), '.astrale');
|
|
31
|
-
try {
|
|
32
|
-
const decoded = JSON.parse(await readFile(join(home, 'install.json'), 'utf8'));
|
|
33
|
-
if (typeof decoded !== 'object' ||
|
|
34
|
-
decoded === null ||
|
|
35
|
-
!('method' in decoded) ||
|
|
36
|
-
decoded.method !== 'script' ||
|
|
37
|
-
!('bin' in decoded) ||
|
|
38
|
-
typeof decoded.bin !== 'string' ||
|
|
39
|
-
!isAbsolute(decoded.bin)) {
|
|
40
|
-
return undefined;
|
|
41
|
-
}
|
|
42
|
-
return decoded.bin;
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
return undefined;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { AstraleProcessResult } from './process.js';
|
|
2
|
-
/** Only sanitized CLI diagnostics may be promoted through installation failures. */
|
|
3
|
-
export declare class AstraleCliError extends Error {
|
|
4
|
-
}
|
|
5
|
-
export declare function astraleFailure(command: string, result: AstraleProcessResult): Error;
|
|
6
|
-
export declare function isDomainNotInstalledFailure(stderr: string): boolean;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/** Only sanitized CLI diagnostics may be promoted through installation failures. */
|
|
2
|
-
export class AstraleCliError extends Error {
|
|
3
|
-
}
|
|
4
|
-
export function astraleFailure(command, result) {
|
|
5
|
-
let diagnostic;
|
|
6
|
-
try {
|
|
7
|
-
const failure = record(JSON.parse(result.stderr));
|
|
8
|
-
const error = admittedCode(failure.error);
|
|
9
|
-
const reason = recordOrUndefined(failure.reason);
|
|
10
|
-
const reasonCode = admittedCode(reason?.code);
|
|
11
|
-
diagnostic =
|
|
12
|
-
error === undefined ? undefined : reasonCode === undefined ? error : `${error}/${reasonCode}`;
|
|
13
|
-
}
|
|
14
|
-
catch {
|
|
15
|
-
// Never forward raw stderr because a credential-bearing command owns it.
|
|
16
|
-
}
|
|
17
|
-
return new AstraleCliError(`Astrale CLI ${command} failed${diagnostic === undefined ? '' : ` (${diagnostic})`}.`);
|
|
18
|
-
}
|
|
19
|
-
function admittedCode(input) {
|
|
20
|
-
return typeof input === 'string' && /^[A-Z][A-Z0-9_]{0,63}$/u.test(input) ? input : undefined;
|
|
21
|
-
}
|
|
22
|
-
function recordOrUndefined(input) {
|
|
23
|
-
return input !== null && typeof input === 'object' && !Array.isArray(input)
|
|
24
|
-
? input
|
|
25
|
-
: undefined;
|
|
26
|
-
}
|
|
27
|
-
export function isDomainNotInstalledFailure(stderr) {
|
|
28
|
-
try {
|
|
29
|
-
const failure = record(JSON.parse(stderr));
|
|
30
|
-
if (failure.error === 'DOMAIN_NOT_INSTALLED')
|
|
31
|
-
return true;
|
|
32
|
-
const reason = failure.reason;
|
|
33
|
-
return (failure.error === 'RESPONSE_ERROR' &&
|
|
34
|
-
reason !== null &&
|
|
35
|
-
typeof reason === 'object' &&
|
|
36
|
-
!Array.isArray(reason) &&
|
|
37
|
-
Reflect.get(reason, 'code') === 'SCHEMA_NOT_FOUND');
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
function record(input) {
|
|
44
|
-
if (input === null || typeof input !== 'object' || Array.isArray(input)) {
|
|
45
|
-
throw new TypeError('Expected an object response.');
|
|
46
|
-
}
|
|
47
|
-
return input;
|
|
48
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { runAstrale } from './process.js';
|
|
2
|
-
/** Resolve and probe a bookmark through the pinned CLI, preserving its TLS trust. */
|
|
3
|
-
export declare function resolveAstraleInstanceIssuer(input: {
|
|
4
|
-
readonly executable: string;
|
|
5
|
-
readonly projectDir: string;
|
|
6
|
-
readonly instance: string;
|
|
7
|
-
readonly expectedIssuer?: string;
|
|
8
|
-
readonly signal: AbortSignal;
|
|
9
|
-
}, dependencies?: {
|
|
10
|
-
readonly run: typeof runAstrale;
|
|
11
|
-
}): Promise<string>;
|