@astrale-os/sdk 0.6.0-beta.3 → 0.6.0-beta.30
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 +179 -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 +44 -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 +14 -9
- 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/operation.d.ts +2 -2
- 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/index.d.ts +1 -1
- package/dist/application/query/composite/plan.d.ts +0 -4
- package/dist/application/query/composite/plan.js +0 -2
- 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 +6 -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 +20 -4
- package/dist/application/workflow/durable.d.ts +87 -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 +13 -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 +95 -0
- package/dist/deployment/address/configuration.js +273 -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/identity/authentication.d.ts +33 -3
- package/dist/execution/identity/authentication.js +85 -40
- package/dist/execution/identity/callback.d.ts +16 -15
- package/dist/execution/identity/callback.js +21 -16
- 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 +4 -4
- package/dist/execution/index.js +2 -2
- package/dist/execution/invocation/admission/authentication.d.ts +11 -13
- package/dist/execution/invocation/admission/authentication.js +48 -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 +2 -2
- package/dist/execution/invocation/admission/index.js +1 -1
- package/dist/execution/invocation/admission/input.d.ts +2 -2
- package/dist/execution/invocation/admission/input.js +16 -2
- 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 +17 -31
- package/dist/execution/invocation/dispatch/workflow.js +0 -4
- package/dist/execution/invocation/index.d.ts +2 -2
- package/dist/execution/invocation/index.js +1 -1
- package/dist/execution/invocation/integration/call.d.ts +2 -1
- package/dist/execution/invocation/integration/call.js +1 -1
- package/dist/execution/invocation/integration/clients.d.ts +1 -1
- package/dist/execution/invocation/invocation.js +49 -16
- 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 +10 -4
- package/dist/execution/serve.js +3 -0
- package/dist/execution/service/create.js +41 -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 +14 -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/discovery.d.ts +14 -0
- package/dist/execution/workflows/discovery.js +151 -0
- package/dist/execution/workflows/engine.d.ts +52 -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 +11 -0
- package/dist/execution/workflows/failure.js +43 -0
- package/dist/execution/workflows/index.d.ts +4 -0
- package/dist/execution/workflows/index.js +3 -0
- package/dist/execution/workflows/options.d.ts +34 -0
- package/dist/execution/workflows/options.js +65 -0
- package/dist/execution/workflows/receiver.d.ts +21 -0
- package/dist/execution/workflows/receiver.js +92 -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 +22 -0
- package/dist/execution/workflows/run.js +223 -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/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 +2 -2
- package/dist/tooling/cli/dotenv.js +3 -33
- 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 -0
- package/dist/tooling/cli/log.js +9 -0
- 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/implementations/source/callable-requirements.d.ts +1 -1
- package/dist/tooling/linter/implementations/source/callable-requirements.js +10 -10
- package/dist/tooling/linter/implementations/source/dependencies.js +12 -10
- package/dist/tooling/linter/implementations/source/global.js +1 -2
- package/dist/tooling/linter/implementations/source/mutations.js +17 -17
- package/dist/tooling/linter/implementations/source/providers.js +5 -5
- package/dist/tooling/linter/implementations/source/verifiers.js +0 -2
- package/dist/tooling/linter/implementations/source/views.js +2 -2
- package/dist/tooling/linter/policy/generated.js +14 -63
- package/dist/tooling/linter/requirements/registry.js +1 -6
- 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/package.json +39 -13
- 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
|
@@ -15,16 +15,11 @@ export function compileFrontend(frontend, domain) {
|
|
|
15
15
|
path: route.path,
|
|
16
16
|
document: route.document,
|
|
17
17
|
handshake: route.handshake,
|
|
18
|
-
...(route.iframe === undefined ? {} : { iframe: route.iframe }),
|
|
19
18
|
...(route.host === undefined ? {} : { host: route.host }),
|
|
20
19
|
});
|
|
21
20
|
});
|
|
22
|
-
const entrypoint = domain.views[frontend.entrypoint];
|
|
23
|
-
if (entrypoint === undefined)
|
|
24
|
-
throw new TypeError('Frontend entrypoint is absent from its Domain.');
|
|
25
21
|
return Object.freeze({
|
|
26
22
|
source: frontend.source,
|
|
27
23
|
routes: Object.freeze(routes),
|
|
28
|
-
entrypoint: entrypoint.ref,
|
|
29
24
|
});
|
|
30
25
|
}
|
|
@@ -3,11 +3,7 @@ const MEDIA_TYPE = 'application/vnd.astrale.frontend-material+octet-stream;v=1';
|
|
|
3
3
|
export function digest(frontend, files) {
|
|
4
4
|
const encoder = new TextEncoder();
|
|
5
5
|
const chunks = [
|
|
6
|
-
encoder.encode(JSON.stringify({
|
|
7
|
-
source: frontend.source,
|
|
8
|
-
routes: frontend.routes,
|
|
9
|
-
entrypoint: frontend.entrypoint,
|
|
10
|
-
})),
|
|
6
|
+
encoder.encode(JSON.stringify({ source: frontend.source, routes: frontend.routes })),
|
|
11
7
|
];
|
|
12
8
|
for (const file of files) {
|
|
13
9
|
const bytes = file.bytes();
|
|
@@ -2,5 +2,6 @@ export { isBuild } from './admission.js';
|
|
|
2
2
|
export { compile } from './compile.js';
|
|
3
3
|
export { material, generatedMaterial, restoreBuild, restoreGeneratedBuild, type BuildMaterial, type GeneratedBuildMaterial, } from './material.js';
|
|
4
4
|
export type { Build } from './build.js';
|
|
5
|
+
export { acceptBuildDigest, buildDigest, buildManifest, BUILD_MANIFEST_FORMAT, BUILD_MANIFEST_VERSION, type BuildDigest, type BuildManifestInput, type BuildManifestV1, } from './manifest.js';
|
|
5
6
|
export * as frontend from './frontend/index.js';
|
|
6
7
|
export type { BuildBundle, BuildSchema } from './schema.js';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { isBuild } from './admission.js';
|
|
2
2
|
export { compile } from './compile.js';
|
|
3
3
|
export { material, generatedMaterial, restoreBuild, restoreGeneratedBuild, } from './material.js';
|
|
4
|
+
export { acceptBuildDigest, buildDigest, buildManifest, BUILD_MANIFEST_FORMAT, BUILD_MANIFEST_VERSION, } from './manifest.js';
|
|
4
5
|
export * as frontend from './frontend/index.js';
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { Digest } from '@astrale-os/kernel-protocol/artifact';
|
|
2
|
+
/**
|
|
3
|
+
* Identity of the code a deployment executes: the hash of the produced bytes (modules, assets,
|
|
4
|
+
* Schema and requirements), never of the address, issuer, key, secrets or Environment. Two builds of
|
|
5
|
+
* one source share it; a code change at equal Schema revision changes it.
|
|
6
|
+
*/
|
|
7
|
+
export type BuildDigest = Digest;
|
|
8
|
+
/** Schema revision, unchanged: what the Domain means. */
|
|
9
|
+
type Revision = Digest;
|
|
10
|
+
export declare const BUILD_MANIFEST_FORMAT = "astrale.domain.build";
|
|
11
|
+
export declare const BUILD_MANIFEST_VERSION = 1;
|
|
12
|
+
/** Exact preimage of a build digest. */
|
|
13
|
+
export interface BuildManifestV1 {
|
|
14
|
+
readonly format: typeof BUILD_MANIFEST_FORMAT;
|
|
15
|
+
readonly version: typeof BUILD_MANIFEST_VERSION;
|
|
16
|
+
readonly origin: string;
|
|
17
|
+
readonly schema: {
|
|
18
|
+
readonly revision: Revision;
|
|
19
|
+
readonly bundle: Digest;
|
|
20
|
+
};
|
|
21
|
+
readonly bundler: {
|
|
22
|
+
readonly id: string;
|
|
23
|
+
readonly version: string;
|
|
24
|
+
};
|
|
25
|
+
readonly entrypoint: string;
|
|
26
|
+
/**
|
|
27
|
+
* Unique, sorted by path (UTF-16 code units): modules by uploaded module name, static assets as
|
|
28
|
+
* `assets/<path>`.
|
|
29
|
+
*/
|
|
30
|
+
readonly files: readonly {
|
|
31
|
+
readonly path: string;
|
|
32
|
+
readonly digest: Digest;
|
|
33
|
+
readonly size: number;
|
|
34
|
+
}[];
|
|
35
|
+
}
|
|
36
|
+
export interface BuildManifestInput {
|
|
37
|
+
readonly origin: string;
|
|
38
|
+
readonly revision: Revision;
|
|
39
|
+
readonly bundle: Digest;
|
|
40
|
+
readonly bundler: {
|
|
41
|
+
readonly id: string;
|
|
42
|
+
readonly version: string;
|
|
43
|
+
};
|
|
44
|
+
readonly entrypoint: string;
|
|
45
|
+
readonly files: readonly {
|
|
46
|
+
readonly path: string;
|
|
47
|
+
readonly content: Uint8Array;
|
|
48
|
+
}[];
|
|
49
|
+
}
|
|
50
|
+
/** Describe the exact files one bundler produced, in the one canonical order. */
|
|
51
|
+
export declare function buildManifest(input: BuildManifestInput): BuildManifestV1;
|
|
52
|
+
/** `sha256` of the canonical JSON (RFC 8785) of one admitted build manifest. */
|
|
53
|
+
export declare function buildDigest(manifest: BuildManifestV1): BuildDigest;
|
|
54
|
+
/**
|
|
55
|
+
* Admit a build digest as it travels outside its manifest (a deployment binding, a record): exactly
|
|
56
|
+
* `sha256:` and 64 lowercase hex digits. Anything else throws, so a reader fails closed.
|
|
57
|
+
*/
|
|
58
|
+
export declare function acceptBuildDigest(input: unknown): BuildDigest;
|
|
59
|
+
export {};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { json } from '@astrale-os/kernel-dsl/value';
|
|
2
|
+
import { identify } from '@astrale-os/kernel-protocol/artifact';
|
|
3
|
+
export const BUILD_MANIFEST_FORMAT = 'astrale.domain.build';
|
|
4
|
+
export const BUILD_MANIFEST_VERSION = 1;
|
|
5
|
+
const MANIFEST_MEDIA_TYPE = 'application/vnd.astrale.domain-build+json;v=1';
|
|
6
|
+
const FILE_MEDIA_TYPE = 'application/octet-stream';
|
|
7
|
+
const DIGEST = /^sha256:[0-9a-f]{64}$/u;
|
|
8
|
+
/** Describe the exact files one bundler produced, in the one canonical order. */
|
|
9
|
+
export function buildManifest(input) {
|
|
10
|
+
if (input === null || typeof input !== 'object' || !Array.isArray(input.files))
|
|
11
|
+
invalid();
|
|
12
|
+
const files = input.files.map((file) => {
|
|
13
|
+
if (file === null || typeof file !== 'object' || !(file.content instanceof Uint8Array)) {
|
|
14
|
+
invalid();
|
|
15
|
+
}
|
|
16
|
+
const { digest, size } = identify(file.content, FILE_MEDIA_TYPE);
|
|
17
|
+
return { path: file.path, digest, size };
|
|
18
|
+
});
|
|
19
|
+
return admit({
|
|
20
|
+
format: BUILD_MANIFEST_FORMAT,
|
|
21
|
+
version: BUILD_MANIFEST_VERSION,
|
|
22
|
+
origin: input.origin,
|
|
23
|
+
schema: { revision: input.revision, bundle: input.bundle },
|
|
24
|
+
bundler: { id: input.bundler?.id, version: input.bundler?.version },
|
|
25
|
+
entrypoint: input.entrypoint,
|
|
26
|
+
files: files.sort((left, right) => compare(left.path, right.path)),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/** `sha256` of the canonical JSON (RFC 8785) of one admitted build manifest. */
|
|
30
|
+
export function buildDigest(manifest) {
|
|
31
|
+
return identify(json.encode(admit(manifest)), MANIFEST_MEDIA_TYPE).digest;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Admit a build digest as it travels outside its manifest (a deployment binding, a record): exactly
|
|
35
|
+
* `sha256:` and 64 lowercase hex digits. Anything else throws, so a reader fails closed.
|
|
36
|
+
*/
|
|
37
|
+
export function acceptBuildDigest(input) {
|
|
38
|
+
if (typeof input !== 'string' || !DIGEST.test(input)) {
|
|
39
|
+
throw new TypeError('Build digest must be sha256: followed by 64 lowercase hex digits.');
|
|
40
|
+
}
|
|
41
|
+
return input;
|
|
42
|
+
}
|
|
43
|
+
function admit(input) {
|
|
44
|
+
if (input === null || typeof input !== 'object')
|
|
45
|
+
invalid();
|
|
46
|
+
exact(input, ['format', 'version', 'origin', 'schema', 'bundler', 'entrypoint', 'files']);
|
|
47
|
+
if (input.format !== BUILD_MANIFEST_FORMAT || input.version !== BUILD_MANIFEST_VERSION)
|
|
48
|
+
invalid();
|
|
49
|
+
exact(input.schema, ['revision', 'bundle']);
|
|
50
|
+
exact(input.bundler, ['id', 'version']);
|
|
51
|
+
if (!Array.isArray(input.files) || input.files.length === 0)
|
|
52
|
+
invalid();
|
|
53
|
+
const files = input.files.map((file, index) => {
|
|
54
|
+
exact(file, ['path', 'digest', 'size']);
|
|
55
|
+
const path = contained(file.path);
|
|
56
|
+
if (index > 0 && compare(input.files[index - 1].path, path) >= 0) {
|
|
57
|
+
throw new TypeError('Build manifest files must be unique and sorted by path.');
|
|
58
|
+
}
|
|
59
|
+
if (!Number.isSafeInteger(file.size) || file.size < 0)
|
|
60
|
+
invalid();
|
|
61
|
+
return Object.freeze({ path, digest: digest(file.digest), size: file.size });
|
|
62
|
+
});
|
|
63
|
+
const entrypoint = contained(input.entrypoint);
|
|
64
|
+
if (!files.some((file) => file.path === entrypoint)) {
|
|
65
|
+
throw new TypeError('Build manifest entrypoint is absent from its files.');
|
|
66
|
+
}
|
|
67
|
+
return Object.freeze({
|
|
68
|
+
format: BUILD_MANIFEST_FORMAT,
|
|
69
|
+
version: BUILD_MANIFEST_VERSION,
|
|
70
|
+
origin: stable(input.origin, 'Build origin'),
|
|
71
|
+
schema: Object.freeze({
|
|
72
|
+
revision: digest(input.schema.revision),
|
|
73
|
+
bundle: digest(input.schema.bundle),
|
|
74
|
+
}),
|
|
75
|
+
bundler: Object.freeze({
|
|
76
|
+
id: stable(input.bundler.id, 'Bundler id'),
|
|
77
|
+
version: stable(input.bundler.version, 'Bundler version'),
|
|
78
|
+
}),
|
|
79
|
+
entrypoint,
|
|
80
|
+
files: Object.freeze(files),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function exact(input, keys) {
|
|
84
|
+
if (input === null ||
|
|
85
|
+
typeof input !== 'object' ||
|
|
86
|
+
Array.isArray(input) ||
|
|
87
|
+
Reflect.ownKeys(input).length !== keys.length ||
|
|
88
|
+
keys.some((key) => !Object.hasOwn(input, key))) {
|
|
89
|
+
invalid();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function contained(input) {
|
|
93
|
+
if (typeof input !== 'string' ||
|
|
94
|
+
input.length === 0 ||
|
|
95
|
+
input.startsWith('/') ||
|
|
96
|
+
input.includes('\\') ||
|
|
97
|
+
input.split('/').some((segment) => segment === '' || segment === '.' || segment === '..')) {
|
|
98
|
+
throw new TypeError('Build manifest paths must be contained relative POSIX paths.');
|
|
99
|
+
}
|
|
100
|
+
return input;
|
|
101
|
+
}
|
|
102
|
+
function digest(input) {
|
|
103
|
+
if (typeof input !== 'string' || !DIGEST.test(input))
|
|
104
|
+
invalid();
|
|
105
|
+
return input;
|
|
106
|
+
}
|
|
107
|
+
function stable(input, label) {
|
|
108
|
+
if (typeof input !== 'string' || input.length === 0 || input.trim() !== input) {
|
|
109
|
+
throw new TypeError(`${label} must be a non-empty stable string.`);
|
|
110
|
+
}
|
|
111
|
+
return input;
|
|
112
|
+
}
|
|
113
|
+
function compare(left, right) {
|
|
114
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
115
|
+
}
|
|
116
|
+
function invalid() {
|
|
117
|
+
throw new TypeError('Build manifest is invalid.');
|
|
118
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { DomainSchema } from '@astrale-os/kernel-dsl/v1/schema';
|
|
2
2
|
import type { Runtime } from '../../application/runtime/index.js';
|
|
3
|
-
import type { Build } from './build.js';
|
|
3
|
+
import type { Build, BuildPresentation } from './build.js';
|
|
4
4
|
import type { FrontendCompilation } from './frontend/index.js';
|
|
5
5
|
export interface BuildMaterial {
|
|
6
6
|
readonly format: 'astrale.sdk.build-material';
|
|
@@ -16,6 +16,7 @@ export interface BuildMaterial {
|
|
|
16
16
|
readonly requirements: Build['requirements'];
|
|
17
17
|
readonly routes: Build['routes'];
|
|
18
18
|
readonly frontend?: FrontendCompilation;
|
|
19
|
+
readonly presentation?: BuildPresentation;
|
|
19
20
|
}
|
|
20
21
|
declare const GENERATED_BUILD_MATERIAL: unique symbol;
|
|
21
22
|
/** Exact Build material embedded by an Astrale execution-code generator. */
|
|
@@ -23,7 +24,6 @@ export interface GeneratedBuildMaterial {
|
|
|
23
24
|
readonly format: 'astrale.sdk.generated-build-material';
|
|
24
25
|
readonly version: 1;
|
|
25
26
|
readonly material: BuildMaterial;
|
|
26
|
-
readonly digest: Build['schema']['bundle']['ref']['digest'];
|
|
27
27
|
readonly [GENERATED_BUILD_MATERIAL]: 'generated-build-material';
|
|
28
28
|
}
|
|
29
29
|
/** Detach the provider-neutral, runtime-free material embedded into generated execution code. */
|
|
@@ -4,10 +4,11 @@ import { load as loadCompiledSchema } from '@astrale-os/kernel-dsl/v1/compiled/l
|
|
|
4
4
|
import { revision } from '@astrale-os/kernel-dsl/v1/schema/revision';
|
|
5
5
|
import { equal } from '@astrale-os/kernel-dsl/value';
|
|
6
6
|
import * as artifact from '@astrale-os/kernel-protocol/artifact';
|
|
7
|
-
import { BUNDLE_MEDIA_TYPE } from '@astrale-os/kernel-protocol/
|
|
8
|
-
import { admitRequirements, validateRequirements
|
|
7
|
+
import { BUNDLE_MEDIA_TYPE } from '@astrale-os/kernel-protocol/release';
|
|
8
|
+
import { admitRequirements, validateRequirements } from '@astrale-os/kernel-protocol/release';
|
|
9
9
|
import * as routes from '@astrale-os/kernel-protocol/routes';
|
|
10
10
|
import { admitRuntimeRegistry, isRuntime } from '../../application/runtime/index.js';
|
|
11
|
+
import { admitClassIconSvg } from '../../platform/schema/class-icon-svg.js';
|
|
11
12
|
import { admitBuild, isBuild } from './admission.js';
|
|
12
13
|
/** Detach the provider-neutral, runtime-free material embedded into generated execution code. */
|
|
13
14
|
export function material(build) {
|
|
@@ -29,6 +30,7 @@ export function material(build) {
|
|
|
29
30
|
requirements: build.requirements,
|
|
30
31
|
routes: build.routes,
|
|
31
32
|
...(build.frontend === undefined ? {} : { frontend: build.frontend }),
|
|
33
|
+
...(build.presentation === undefined ? {} : { presentation: build.presentation }),
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
36
|
/** Produce opaque material for execution code from one admitted Build. */
|
|
@@ -38,7 +40,6 @@ export function generatedMaterial(build) {
|
|
|
38
40
|
format: 'astrale.sdk.generated-build-material',
|
|
39
41
|
version: 1,
|
|
40
42
|
material: value,
|
|
41
|
-
digest: digestOf(value),
|
|
42
43
|
});
|
|
43
44
|
}
|
|
44
45
|
/** Re-admit detached provider-neutral Build material against the exact Runtime value. */
|
|
@@ -62,6 +63,7 @@ export function restoreBuild(input, runtime) {
|
|
|
62
63
|
const compiled = deepFreeze(input.schema.compiled);
|
|
63
64
|
const bundleRef = deepFreeze(input.schema.bundle.ref);
|
|
64
65
|
const frontend = input.frontend === undefined ? undefined : deepFreeze(input.frontend);
|
|
66
|
+
const presentation = input.presentation === undefined ? undefined : admitPresentation(input.presentation);
|
|
65
67
|
const detached = new Uint8Array(bytes);
|
|
66
68
|
const build = Object.freeze({
|
|
67
69
|
kind: 'build',
|
|
@@ -77,6 +79,7 @@ export function restoreBuild(input, runtime) {
|
|
|
77
79
|
requirements,
|
|
78
80
|
routes: plan,
|
|
79
81
|
...(frontend === undefined ? {} : { frontend }),
|
|
82
|
+
...(presentation === undefined ? {} : { presentation }),
|
|
80
83
|
});
|
|
81
84
|
return admitBuild(build, { domain, registry });
|
|
82
85
|
}
|
|
@@ -106,6 +109,7 @@ export function restoreGeneratedBuild(input, runtime) {
|
|
|
106
109
|
requirements: material.requirements,
|
|
107
110
|
routes: material.routes,
|
|
108
111
|
...(material.frontend === undefined ? {} : { frontend: material.frontend }),
|
|
112
|
+
...(material.presentation === undefined ? {} : { presentation: material.presentation }),
|
|
109
113
|
});
|
|
110
114
|
return admitBuild(build, { domain, registry });
|
|
111
115
|
}
|
|
@@ -118,7 +122,7 @@ function acceptGeneratedMaterial(input, runtime) {
|
|
|
118
122
|
Array.isArray(input) ||
|
|
119
123
|
format !== 'astrale.sdk.generated-build-material' ||
|
|
120
124
|
version !== 1 ||
|
|
121
|
-
Reflect.ownKeys(input).some((key) => key !== 'format' && key !== 'version' && key !== 'material'
|
|
125
|
+
Reflect.ownKeys(input).some((key) => key !== 'format' && key !== 'version' && key !== 'material')) {
|
|
122
126
|
invalid();
|
|
123
127
|
}
|
|
124
128
|
assertMaterialEnvelope(material, runtime);
|
|
@@ -128,14 +132,6 @@ function acceptGeneratedMaterial(input, runtime) {
|
|
|
128
132
|
deepFreeze(input);
|
|
129
133
|
return Object.freeze({ material });
|
|
130
134
|
}
|
|
131
|
-
function digestOf(input) {
|
|
132
|
-
try {
|
|
133
|
-
return artifact.identify(new TextEncoder().encode(JSON.stringify(input)), 'application/vnd.astrale.sdk.build-material+json').digest;
|
|
134
|
-
}
|
|
135
|
-
catch {
|
|
136
|
-
invalid();
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
135
|
function assertMaterialEnvelope(input, runtime) {
|
|
140
136
|
if (!isRuntime(runtime))
|
|
141
137
|
throw new TypeError('Build Runtime is not admitted.');
|
|
@@ -150,7 +146,8 @@ function assertMaterialEnvelope(input, runtime) {
|
|
|
150
146
|
key !== 'callables' &&
|
|
151
147
|
key !== 'requirements' &&
|
|
152
148
|
key !== 'routes' &&
|
|
153
|
-
key !== 'frontend'
|
|
149
|
+
key !== 'frontend' &&
|
|
150
|
+
key !== 'presentation')) {
|
|
154
151
|
invalid();
|
|
155
152
|
}
|
|
156
153
|
}
|
|
@@ -186,6 +183,24 @@ function admitRoutePlan(input, domain) {
|
|
|
186
183
|
invalid();
|
|
187
184
|
return admitted;
|
|
188
185
|
}
|
|
186
|
+
/** External material must re-admit its icon using the same worker-safe SVG owner as authoring. */
|
|
187
|
+
function admitPresentation(input) {
|
|
188
|
+
if (input === null || typeof input !== 'object' || Array.isArray(input))
|
|
189
|
+
invalid();
|
|
190
|
+
const value = input;
|
|
191
|
+
if (Reflect.ownKeys(value).some((key) => key !== 'icon'))
|
|
192
|
+
invalid();
|
|
193
|
+
const { icon } = value;
|
|
194
|
+
if (icon === undefined)
|
|
195
|
+
return Object.freeze({});
|
|
196
|
+
if (typeof icon !== 'string')
|
|
197
|
+
invalid();
|
|
198
|
+
const admitted = admitClassIconSvg(icon);
|
|
199
|
+
// Material carries an exact admitted value, rather than authored text to normalize.
|
|
200
|
+
if (admitted !== icon)
|
|
201
|
+
invalid();
|
|
202
|
+
return Object.freeze({ icon: admitted });
|
|
203
|
+
}
|
|
189
204
|
function deepFreeze(input, seen = new WeakSet()) {
|
|
190
205
|
if (input !== null && typeof input === 'object' && !seen.has(input)) {
|
|
191
206
|
seen.add(input);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { release } from '@astrale-os/kernel-protocol';
|
|
2
2
|
import type { schema } from '../../platform/schema/index.js';
|
|
3
3
|
export interface BuildBundle {
|
|
4
|
-
readonly ref:
|
|
4
|
+
readonly ref: release.BundleDescriptor['ref'];
|
|
5
5
|
bytes(): Uint8Array;
|
|
6
6
|
}
|
|
7
7
|
export interface BuildSchema<Source extends schema.DomainSchema = schema.DomainSchema> {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Adapter } from './adapter/index.js';
|
|
2
|
-
|
|
2
|
+
/** One immutable-deployment adapter bound to one Project Environment. */
|
|
3
|
+
export interface Deployment<Parameters extends object = object, AdapterValue extends Adapter<Parameters> = Adapter<Parameters>> {
|
|
3
4
|
readonly kind: 'deployment';
|
|
4
|
-
readonly adapter:
|
|
5
|
+
readonly adapter: AdapterValue;
|
|
5
6
|
readonly parameters: Parameters;
|
|
6
7
|
}
|
|
7
8
|
/** Internal adapter binding boundary used by public provider packages. */
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The name of a project environment, the target a deployment is made for (`staging`, `production`,
|
|
3
|
+
* `pr-42`), as `defineProject` admits it: lower-case letters, digits, `.`, `_` and `-`, starting and
|
|
4
|
+
* ending with a letter or a digit. It stays Worker-safe because a deployment name renders it.
|
|
5
|
+
*/
|
|
6
|
+
export declare const ENVIRONMENT_NAME: RegExp;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The name of a project environment, the target a deployment is made for (`staging`, `production`,
|
|
3
|
+
* `pr-42`), as `defineProject` admits it: lower-case letters, digits, `.`, `_` and `-`, starting and
|
|
4
|
+
* ending with a letter or a digit. It stays Worker-safe because a deployment name renders it.
|
|
5
|
+
*/
|
|
6
|
+
export const ENVIRONMENT_NAME = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/u;
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
export { defineAdapter, defineDeployment, isAdapter } from './adapter/index.js';
|
|
2
|
-
export type { Adapter, AdapterEnvironmentContext, AdapterInput,
|
|
2
|
+
export type { Adapter, AdapterCommand, AdapterCommandContext, AdapterCommandResult, AdapterEnvironmentContext, AdapterInput, ArtifactFile, Bundle, BundleContext, Bundler, BundleSource, ConfigureContext, DeploymentCallTarget, DeploymentSecretsState, FailedReleaseDeployResult, ListContext, ListedDeployment, MutationKnowledge, Placement, PlacementContext, PreparedArtifactFile, ReadyReleaseDeployResult, ReleaseDeployContext, ReleaseDeploymentPhase, ReleaseDeployResult, RetainContext, } from './adapter/index.js';
|
|
3
3
|
export { compile, isBuild } from './build/index.js';
|
|
4
|
-
export type { Build, BuildBundle, BuildSchema } from './build/index.js';
|
|
5
|
-
export { deploy } from './deploy.js';
|
|
6
|
-
export type { DeploymentInput, LegacyDeployment } from './deploy.js';
|
|
4
|
+
export type { Build, BuildBundle, BuildDigest, BuildManifestV1, BuildSchema, } from './build/index.js';
|
|
7
5
|
export { isDeployment } from './deployment.js';
|
|
8
6
|
export type { Deployment } from './deployment.js';
|
|
9
7
|
export { addressing, assemble, isAddressing, isRelease } from './release/index.js';
|
|
10
8
|
export type { Addressing, Release } from './release/index.js';
|
|
11
9
|
export { admit as admitRuntime, resolve as resolveRuntime, runtime } from './runtime/index.js';
|
|
12
10
|
export type { ResolvedRuntimeReference, RuntimeModuleLoader, RuntimeReference, } from './runtime/index.js';
|
|
13
|
-
export {
|
|
14
|
-
export type {
|
|
11
|
+
export { verifyBundle, verifyReadiness, verifyUploadedBuild } from './verify/index.js';
|
|
12
|
+
export type { BundleInput } from './verify/index.js';
|
package/dist/deployment/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export { defineAdapter, defineDeployment, isAdapter } from './adapter/index.js';
|
|
2
2
|
export { compile, isBuild } from './build/index.js';
|
|
3
|
-
export { deploy } from './deploy.js';
|
|
4
3
|
export { isDeployment } from './deployment.js';
|
|
5
4
|
export { addressing, assemble, isAddressing, isRelease } from './release/index.js';
|
|
6
5
|
export { admit as admitRuntime, resolve as resolveRuntime, runtime } from './runtime/index.js';
|
|
7
|
-
export {
|
|
6
|
+
export { verifyBundle, verifyReadiness, verifyUploadedBuild } from './verify/index.js';
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { IssuerId } from '../../platform/auth/index.js';
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Domain identity and public placement, independent of how a provider obtains them. A deployment's
|
|
4
|
+
* `addressing(url)` has `issuer === publicUrl`: its URL is its issuer.
|
|
5
|
+
*/
|
|
3
6
|
export interface Addressing {
|
|
4
7
|
readonly issuer: IssuerId;
|
|
5
|
-
/** Public origin serving this Release
|
|
8
|
+
/** Public origin serving this Release, identical to its issuer. */
|
|
6
9
|
readonly publicUrl: IssuerId;
|
|
7
10
|
}
|
|
8
|
-
export declare function addressing(input: string
|
|
9
|
-
readonly publicUrl?: string;
|
|
10
|
-
}): Addressing;
|
|
11
|
+
export declare function addressing(input: string): Addressing;
|
|
11
12
|
export declare function isAddressing(input: unknown): input is Addressing;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { issuer } from '../../platform/auth/index.js';
|
|
2
2
|
const admittedAddressing = new WeakSet();
|
|
3
|
-
export function addressing(input
|
|
3
|
+
export function addressing(input) {
|
|
4
4
|
const admitted = origin(input);
|
|
5
|
-
const
|
|
6
|
-
const value = Object.freeze({ issuer: admitted, publicUrl });
|
|
5
|
+
const value = Object.freeze({ issuer: admitted, publicUrl: admitted });
|
|
7
6
|
admittedAddressing.add(value);
|
|
8
7
|
return value;
|
|
9
8
|
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { Build } from '../build/build.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { BuildDigest } from '../build/manifest.js';
|
|
3
3
|
import type { Release } from './release.js';
|
|
4
|
-
/**
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Purely assemble what one immutable deployment serves at its URL, which is also its issuer, from
|
|
6
|
+
* its Build and the build digest of the code it runs, without a provider effect.
|
|
7
|
+
*/
|
|
8
|
+
export declare function assemble<const BuildValue extends Build>(build: BuildValue, buildDigest: BuildDigest, url: string): Release<BuildValue>;
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { isBuild } from '../build/admission.js';
|
|
2
|
-
import {
|
|
2
|
+
import { addressing } from './addressing.js';
|
|
3
3
|
import { capture } from './admission.js';
|
|
4
|
-
import { seal } from './
|
|
5
|
-
/**
|
|
6
|
-
|
|
4
|
+
import { seal } from './seal.js';
|
|
5
|
+
/**
|
|
6
|
+
* Purely assemble what one immutable deployment serves at its URL, which is also its issuer, from
|
|
7
|
+
* its Build and the build digest of the code it runs, without a provider effect.
|
|
8
|
+
*/
|
|
9
|
+
export function assemble(build, buildDigest, url) {
|
|
7
10
|
if (!isBuild(build))
|
|
8
11
|
throw new TypeError('Release assembly requires an admitted Build.');
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
const sealed = seal(build, addressing);
|
|
12
|
+
const placed = addressing(url);
|
|
13
|
+
const sealed = seal(build, buildDigest, placed);
|
|
13
14
|
return capture(Object.freeze({
|
|
14
15
|
kind: 'release',
|
|
15
16
|
build,
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
url: placed.publicUrl,
|
|
18
|
+
document: sealed.document,
|
|
19
|
+
buildDigest: sealed.document.build.digest,
|
|
18
20
|
routes: sealed.routes,
|
|
19
21
|
}));
|
|
20
22
|
}
|
|
@@ -1,11 +1,22 @@
|
|
|
1
|
-
import type * as
|
|
1
|
+
import type * as release from '@astrale-os/kernel-protocol/release';
|
|
2
2
|
import type * as routes from '@astrale-os/kernel-protocol/routes';
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
3
|
+
import type { IssuerId } from '../../platform/auth/index.js';
|
|
4
|
+
import type { Build, BuildDigest } from '../build/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Everything one immutable deployment serves: the `DomainRelease` v4 it publishes at
|
|
7
|
+
* `release.json`, sealed from its Build, its URL and the build digest of its code, and the Route
|
|
8
|
+
* Table bound to that release.
|
|
9
|
+
*/
|
|
5
10
|
export interface Release<BuildValue extends Build = Build> {
|
|
6
11
|
readonly kind: 'release';
|
|
7
12
|
readonly build: BuildValue;
|
|
8
|
-
|
|
9
|
-
|
|
13
|
+
/**
|
|
14
|
+
* The deployment's URL: its origin, which is also its issuer (`document.identity.issuer`). A
|
|
15
|
+
* deployment binds both to the same immutable URL.
|
|
16
|
+
*/
|
|
17
|
+
readonly url: IssuerId;
|
|
18
|
+
readonly document: release.DomainRelease;
|
|
19
|
+
/** Digest of the exact bytes the deployment runs: `document.build.digest`. */
|
|
20
|
+
readonly buildDigest: BuildDigest;
|
|
10
21
|
readonly routes: routes.Table;
|
|
11
22
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as release from '@astrale-os/kernel-protocol/release';
|
|
2
|
+
import * as protocolRoutes from '@astrale-os/kernel-protocol/routes';
|
|
3
|
+
import type { Build, BuildDigest } from '../build/index.js';
|
|
4
|
+
import type { Addressing } from './addressing.js';
|
|
5
|
+
export interface SealedRelease {
|
|
6
|
+
readonly document: release.DomainRelease;
|
|
7
|
+
readonly routes: protocolRoutes.Table;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Seal the `DomainRelease` v4 one deployment serves: the served content of the Build at its
|
|
11
|
+
* address, and the build digest of the exact code it runs. Its release digest therefore names the
|
|
12
|
+
* schema, the address and the code at once; the Route Table is bound to that release.
|
|
13
|
+
*/
|
|
14
|
+
export declare function seal(build: Build, buildDigest: BuildDigest, addressing: Addressing): SealedRelease;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as release from '@astrale-os/kernel-protocol/release';
|
|
2
|
+
import * as protocolRoutes from '@astrale-os/kernel-protocol/routes';
|
|
3
|
+
import { evidenceOf } from '../build/admission.js';
|
|
4
|
+
import { served } from './served/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Seal the `DomainRelease` v4 one deployment serves: the served content of the Build at its
|
|
7
|
+
* address, and the build digest of the exact code it runs. Its release digest therefore names the
|
|
8
|
+
* schema, the address and the code at once; the Route Table is bound to that release.
|
|
9
|
+
*/
|
|
10
|
+
export function seal(build, buildDigest, addressing) {
|
|
11
|
+
const document = release.seal({
|
|
12
|
+
format: 'astrale.domain.release',
|
|
13
|
+
version: 4,
|
|
14
|
+
...served(build, addressing),
|
|
15
|
+
build: { digest: buildDigest },
|
|
16
|
+
});
|
|
17
|
+
const { domain } = evidenceOf(build);
|
|
18
|
+
return Object.freeze({
|
|
19
|
+
document,
|
|
20
|
+
routes: protocolRoutes.bind(build.routes, document, domain, addressing.publicUrl),
|
|
21
|
+
});
|
|
22
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as release from '@astrale-os/kernel-protocol/release';
|
|
2
2
|
import type { Build } from '../../build/index.js';
|
|
3
3
|
import type { Addressing } from '../addressing.js';
|
|
4
|
-
export declare function callables(build: Build, addressing: Addressing): readonly
|
|
4
|
+
export declare function callables(build: Build, addressing: Addressing): readonly release.CallableBinding[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as release from '@astrale-os/kernel-protocol/release';
|
|
2
2
|
import { invocationPath } from '../invocation.js';
|
|
3
3
|
export function callables(build, addressing) {
|
|
4
|
-
const endpoint =
|
|
4
|
+
const endpoint = release.acceptInvocationEndpoints({
|
|
5
5
|
http: new URL(invocationPath(), addressing.publicUrl).href,
|
|
6
6
|
});
|
|
7
7
|
return Object.freeze(build.callables.map((callable) => Object.freeze({ callable, endpoint })));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as release from '@astrale-os/kernel-protocol/release';
|
|
2
|
+
import type { Build } from '../../build/index.js';
|
|
3
|
+
import type { Addressing } from '../addressing.js';
|
|
4
|
+
export declare const DELIVERY_PATH: '/install';
|
|
5
|
+
/**
|
|
6
|
+
* What a deployment serves beneath its URL: identity, schema bundle, requirements, bindings, routes
|
|
7
|
+
* and delivery. A `DomainRelease` v4 adds the digest of its running build.
|
|
8
|
+
*/
|
|
9
|
+
export type Served = Omit<release.Content, 'format' | 'version' | 'build'>;
|
|
10
|
+
/** Derive the served content of one exact Build at one Addressing. */
|
|
11
|
+
export declare function served(build: Build, addressing: Addressing): Served;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as release from '@astrale-os/kernel-protocol/release';
|
|
2
|
+
import { callables } from './callables.js';
|
|
3
|
+
import { routes } from './routes.js';
|
|
4
|
+
import { views } from './views.js';
|
|
5
|
+
export const DELIVERY_PATH = '/install';
|
|
6
|
+
/** Derive the served content of one exact Build at one Addressing. */
|
|
7
|
+
export function served(build, addressing) {
|
|
8
|
+
const root = build.schema.compiled.root;
|
|
9
|
+
const bundle = release.bundleUrl(addressing.publicUrl, build.schema.bundle.ref);
|
|
10
|
+
return {
|
|
11
|
+
origin: root.origin,
|
|
12
|
+
identity: { issuer: addressing.issuer, subject: root.origin },
|
|
13
|
+
schema: { revision: root.revision, bundle: { href: bundle, ref: build.schema.bundle.ref } },
|
|
14
|
+
requirements: build.requirements,
|
|
15
|
+
// The root schema declares the Domain name and entrypoint; a release authors neither.
|
|
16
|
+
...manifest(build),
|
|
17
|
+
bindings: { callables: callables(build, addressing), views: views(build, addressing) },
|
|
18
|
+
delivery: release.placeDelivery({ path: DELIVERY_PATH, authentication: { kind: 'public' } }, addressing.publicUrl, bundle),
|
|
19
|
+
routes: routes(build, addressing),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/** The release manifest carries the Domain icon as `logo`. Absent when the Build carries none. */
|
|
23
|
+
function manifest(build) {
|
|
24
|
+
const { icon } = build.presentation ?? {};
|
|
25
|
+
return icon === undefined ? {} : { manifest: Object.freeze({ logo: icon }) };
|
|
26
|
+
}
|