@astrale-os/sdk 0.6.0-beta.2 → 0.6.0-beta.20
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 +74 -14
- 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 +17 -8
- package/dist/application/action/define.d.ts +3 -3
- package/dist/application/action/index.d.ts +1 -1
- package/dist/application/define.d.ts +5 -5
- package/dist/application/define.js +13 -13
- package/dist/application/dependency/index.d.ts +1 -1
- package/dist/application/dependency/invoker.d.ts +11 -6
- package/dist/application/domain.d.ts +28 -0
- package/dist/application/index.d.ts +3 -3
- package/dist/application/index.js +1 -1
- 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/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 +2 -0
- package/dist/application/runtime/workflows.js +5 -0
- 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 +3 -3
- package/dist/application/workflow/define.js +19 -3
- package/dist/application/workflow/durable.d.ts +83 -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 +12 -0
- package/dist/deployment/adapter/adapter.d.ts +59 -11
- 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 +25 -3
- package/dist/deployment/adapter/define.js +101 -24
- package/dist/deployment/adapter/index.d.ts +6 -3
- package/dist/deployment/adapter/index.js +1 -0
- package/dist/deployment/adapter/legacy/adapter.d.ts +40 -0
- package/dist/deployment/adapter/{deploy → legacy/deploy}/context.d.ts +6 -2
- package/dist/deployment/adapter/legacy/deploy/index.d.ts +2 -0
- package/dist/deployment/adapter/legacy/deploy/index.js +1 -0
- package/dist/deployment/adapter/legacy/deploy/result.d.ts +89 -0
- package/dist/deployment/adapter/legacy/deploy/result.js +1 -0
- package/dist/deployment/adapter/legacy/index.d.ts +24 -0
- package/dist/deployment/adapter/legacy/index.js +1 -0
- package/dist/deployment/adapter/legacy/prepare/artifact.d.ts +43 -0
- package/dist/deployment/adapter/legacy/prepare/artifact.js +1 -0
- package/dist/deployment/adapter/legacy/prepare/context.d.ts +33 -0
- package/dist/deployment/adapter/legacy/prepare/context.js +1 -0
- package/dist/deployment/adapter/legacy/prepare/index.d.ts +2 -0
- package/dist/deployment/adapter/legacy/prepare/index.js +1 -0
- package/dist/deployment/adapter/release/context.d.ts +95 -0
- package/dist/deployment/adapter/release/context.js +1 -0
- package/dist/deployment/adapter/release/index.d.ts +3 -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 +83 -0
- package/dist/deployment/address/configuration.js +262 -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 +5 -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 +52 -0
- package/dist/deployment/address/record.js +104 -0
- package/dist/deployment/address/summary.d.ts +57 -0
- package/dist/deployment/address/summary.js +117 -0
- package/dist/deployment/address/vectors.d.ts +60 -0
- package/dist/deployment/address/vectors.js +517 -0
- package/dist/deployment/build/build.d.ts +2 -2
- package/dist/deployment/build/compile.d.ts +4 -4
- package/dist/deployment/build/compile.js +17 -17
- 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.js +2 -2
- package/dist/deployment/build/schema.d.ts +2 -2
- package/dist/deployment/deploy.d.ts +10 -10
- package/dist/deployment/deploy.js +3 -3
- package/dist/deployment/deployment.d.ts +9 -4
- package/dist/deployment/environment.d.ts +6 -0
- package/dist/deployment/environment.js +6 -0
- package/dist/deployment/index.d.ts +4 -4
- package/dist/deployment/index.js +1 -1
- package/dist/deployment/release/addressing.d.ts +9 -1
- package/dist/deployment/release/assemble.d.ts +6 -3
- package/dist/deployment/release/assemble.js +12 -10
- package/dist/deployment/release/index.d.ts +2 -0
- package/dist/deployment/release/index.js +2 -0
- package/dist/deployment/release/legacy/admission.d.ts +3 -0
- package/dist/deployment/release/legacy/admission.js +8 -0
- package/dist/deployment/release/legacy/assemble.d.ts +5 -0
- package/dist/deployment/release/legacy/assemble.js +20 -0
- package/dist/deployment/release/legacy/index.d.ts +35 -0
- package/dist/deployment/release/legacy/index.js +34 -0
- package/dist/deployment/release/legacy/release.d.ts +12 -0
- package/dist/deployment/release/legacy/release.js +1 -0
- package/dist/deployment/release/{publication → legacy}/seal.d.ts +3 -3
- package/dist/deployment/release/legacy/seal.js +17 -0
- package/dist/deployment/release/release.d.ts +16 -5
- package/dist/deployment/release/runtime.d.ts +2 -0
- package/dist/deployment/release/runtime.js +2 -0
- 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 +12 -0
- package/dist/deployment/release/served/index.js +22 -0
- package/dist/deployment/release/{publication → served}/views.d.ts +2 -2
- package/dist/deployment/runtime/admission.d.ts +2 -2
- package/dist/deployment/runtime/admission.js +5 -5
- package/dist/deployment/verify/index.d.ts +2 -1
- package/dist/deployment/verify/index.js +1 -0
- package/dist/deployment/verify/preflight/artifact.d.ts +1 -1
- 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 +2 -1
- package/dist/deployment/verify/preflight/index.js +1 -0
- package/dist/deployment/verify/preflight/publication.d.ts +2 -2
- package/dist/deployment/verify/preflight/publication.js +4 -3
- package/dist/deployment/verify/readiness/deployment.js +7 -15
- 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 +11 -7
- package/dist/deployment/verify/readiness/index.js +15 -4
- package/dist/deployment/verify/readiness/legacy/index.d.ts +2 -0
- package/dist/deployment/verify/readiness/legacy/index.js +2 -0
- package/dist/deployment/verify/readiness/legacy/publication.d.ts +12 -0
- package/dist/deployment/verify/readiness/legacy/publication.js +23 -0
- package/dist/deployment/verify/readiness/release.d.ts +8 -0
- package/dist/deployment/verify/readiness/release.js +22 -0
- package/dist/execution/identity/authentication.d.ts +23 -2
- package/dist/execution/identity/authentication.js +64 -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 +11 -4
- package/dist/execution/identity/delivery.js +47 -20
- package/dist/execution/identity/identity.d.ts +18 -3
- package/dist/execution/identity/identity.js +8 -4
- package/dist/execution/identity/jwks.js +57 -12
- package/dist/execution/index.d.ts +4 -2
- package/dist/execution/index.js +2 -1
- package/dist/execution/invocation/admission/authentication.d.ts +3 -8
- package/dist/execution/invocation/admission/authentication.js +10 -24
- package/dist/execution/invocation/admission/authority.d.ts +15 -8
- package/dist/execution/invocation/admission/authority.js +5 -0
- 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 +1 -1
- package/dist/execution/invocation/dependency/bind.js +35 -14
- package/dist/execution/invocation/dispatch/context.d.ts +2 -1
- package/dist/execution/invocation/dispatch/context.js +1 -1
- package/dist/execution/invocation/invocation.js +58 -16
- 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 +22 -0
- package/dist/execution/runtime/release.js +14 -0
- package/dist/execution/serve.d.ts +10 -4
- package/dist/execution/serve.js +3 -0
- package/dist/execution/service/create.js +39 -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 +15 -5
- package/dist/execution/service/serving/delivery.d.ts +6 -0
- package/dist/execution/service/{publication → serving}/delivery.js +5 -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/legacy/index.d.ts +15 -0
- package/dist/execution/service/serving/legacy/index.js +19 -0
- package/dist/execution/service/serving/source.d.ts +18 -0
- package/dist/execution/service/serving/source.js +19 -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 +40 -0
- package/dist/execution/workflows/options.js +83 -0
- package/dist/execution/workflows/receiver.d.ts +22 -0
- package/dist/execution/workflows/receiver.js +99 -0
- package/dist/execution/workflows/route.d.ts +14 -0
- package/dist/execution/workflows/route.js +40 -0
- package/dist/execution/workflows/run.d.ts +22 -0
- package/dist/execution/workflows/run.js +211 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/platform/release/index.d.ts +27 -0
- package/dist/platform/release/index.js +27 -0
- package/dist/platform/schema/index.d.ts +2 -1
- package/dist/platform/schema/property-input.d.ts +15 -0
- package/dist/platform/schema/property-input.js +1 -0
- package/dist/platform/schema/property.d.ts +5 -0
- 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 +2 -2
- 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 +10 -0
- package/dist/project/install-command.js +13 -0
- package/dist/project/project.d.ts +10 -8
- package/dist/testing/dataset/builder.d.ts +3 -3
- package/dist/testing/dataset/define.d.ts +1 -1
- package/dist/testing/load.js +1 -1
- package/dist/tooling/cli/arguments.d.ts +10 -5
- package/dist/tooling/cli/arguments.js +123 -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 +82 -0
- package/dist/tooling/cli/deploy-mode.js +135 -0
- package/dist/tooling/cli/deploy-result.d.ts +85 -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 +176 -59
- 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 +10 -4
- package/dist/tooling/cli/index.js +5 -3
- package/dist/tooling/cli/installed-on.d.ts +83 -0
- package/dist/tooling/cli/installed-on.js +156 -0
- package/dist/tooling/cli/legacy/deploy-result.d.ts +28 -0
- package/dist/tooling/cli/legacy/deploy-result.js +37 -0
- package/dist/tooling/cli/legacy/stable-target-adapter.d.ts +21 -0
- package/dist/tooling/cli/legacy/stable-target-adapter.js +14 -0
- package/dist/tooling/cli/legacy/stable-target-deploy.d.ts +40 -0
- package/dist/tooling/cli/legacy/stable-target-deploy.js +102 -0
- package/dist/tooling/cli/legacy/uploaded-build.d.ts +11 -0
- package/dist/tooling/cli/legacy/uploaded-build.js +22 -0
- package/dist/tooling/cli/list.d.ts +154 -0
- package/dist/tooling/cli/list.js +381 -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 +236 -88
- package/dist/tooling/cli/project.d.ts +3 -3
- package/dist/tooling/cli/publish/index.d.ts +74 -0
- package/dist/tooling/cli/publish/index.js +364 -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 +127 -0
- package/dist/tooling/cli/registry/client.js +351 -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 +29 -0
- package/dist/tooling/cli/registry/executable.js +90 -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 -1
- 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/views.js +2 -2
- package/dist/tooling/linter/policy/generated.js +16 -16
- 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 +32 -11
- package/dist/application/application.d.ts +0 -28
- 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/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.js +0 -39
- package/dist/deployment/verify/readiness/publication.d.ts +0 -11
- package/dist/deployment/verify/readiness/publication.js +0 -41
- 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/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/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 → legacy/adapter.js} +0 -0
- /package/dist/deployment/adapter/{prepare → legacy/deploy}/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/deployment/release/{publication → served}/views.js +0 -0
- /package/dist/execution/service/{publication → serving}/index.js +0 -0
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# SDK
|
|
2
2
|
|
|
3
|
-
Schema-first SDK for authoring and deploying Astrale
|
|
3
|
+
Schema-first SDK for authoring and deploying Astrale Domains. The public surface separates
|
|
4
4
|
single-step Actions, explicit multi-step Workflows, provider-neutral Integrations, concrete Providers, graph
|
|
5
|
-
authoring,
|
|
5
|
+
authoring, Domain composition, Deployment, and Execution without exposing DSL callable
|
|
6
6
|
topology in implementation files.
|
|
7
7
|
|
|
8
8
|
[](https://github.com/astrale-os/sdk/actions/workflows/ci.yml)
|
|
@@ -17,7 +17,7 @@ npm install @astrale-os/sdk
|
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
Zod schemas cross the SDK and Kernel compiler boundary by runtime identity. The SDK therefore
|
|
20
|
-
declares one exact, non-optional Zod peer. If
|
|
20
|
+
declares one exact, non-optional Zod peer. If a Domain declares Zod directly, it must use the
|
|
21
21
|
same exact version rather than a range; a second physical Zod runtime is not an admitted authoring
|
|
22
22
|
environment.
|
|
23
23
|
|
|
@@ -42,7 +42,7 @@ The command covers the workspace root and its packages, pins exact versions, and
|
|
|
42
42
|
lockfile through pnpm. Use `--channel latest` to select that tag instead. Missing tags and local,
|
|
43
43
|
catalog, or aliased dependencies are left unchanged and reported; peers and overrides are not edited.
|
|
44
44
|
For an older SDK without this command, start with `pnpm dlx @astrale-os/sdk@beta upgrade`.
|
|
45
|
-
|
|
45
|
+
Run the project's checks and validate on development.
|
|
46
46
|
Nothing is committed or deployed. A Shell update also requires checking the installed Shell revision.
|
|
47
47
|
Rerunning an upgrade synchronizes installation even when the manifest versions are already current.
|
|
48
48
|
|
|
@@ -67,17 +67,26 @@ original issuer discovery endpoints and keys available; unadopted instances cont
|
|
|
67
67
|
previous bindings. Deployment readiness checks the exact new Worker version separately from issuer
|
|
68
68
|
discovery. No uninstall or identity rotation is involved.
|
|
69
69
|
|
|
70
|
-
At the provider-neutral release boundary,
|
|
71
|
-
`addressing('https://services.example.com', { publicUrl: 'https://services-v2.example.com' })
|
|
72
|
-
|
|
70
|
+
At the provider-neutral release boundary, this stable-target path uses
|
|
71
|
+
`addressing('https://services.example.com', { publicUrl: 'https://services-v2.example.com' })` with
|
|
72
|
+
`legacy.assemble`. That split is deprecated with direct mode and goes with it: an immutable
|
|
73
|
+
deployment's URL is its issuer, so `assemble(build, buildDigest, url)` takes the URL alone.
|
|
73
74
|
|
|
74
75
|
## Handler authority and dependencies
|
|
75
76
|
|
|
76
77
|
Authenticated handlers use Domain self authority for `kernel`, `graph`, `query`, and `mutate`.
|
|
77
|
-
`dependencies.directory.invoke(d => d.functions.lookup, input)` calls a direct declared
|
|
78
|
-
|
|
78
|
+
`dependencies.directory.caller.invoke(d => d.functions.lookup, input)` calls a direct declared
|
|
79
|
+
dependency on behalf of the incoming caller Identity; `.self` calls it as the executing Domain.
|
|
80
|
+
Explicit `caller` or `self` authority is also available on `kernel` and `graph`; the former
|
|
79
81
|
handler `client` is removed. See [the API and migration guide](docs/handler-dependencies.md).
|
|
80
82
|
|
|
83
|
+
## Durable Workflows
|
|
84
|
+
|
|
85
|
+
A callable declared with `execution: { durable: true }` is implemented by `defineWorkflow` and runs
|
|
86
|
+
on the Kernel's workflow engine: a call returns its `K.Execution` at once, and the run survives
|
|
87
|
+
restarts with journaled Steps, durable timers and signals. Serve it with `serve({ durable })`. See
|
|
88
|
+
[the durable Workflow guide](docs/durable-workflows.md).
|
|
89
|
+
|
|
81
90
|
## Node Class icons
|
|
82
91
|
|
|
83
92
|
Every Node Class authored through the SDK must explicitly declare a self-contained SVG icon.
|
|
@@ -128,7 +137,7 @@ Error declarations are not yet published in the installed Kernel Schema.
|
|
|
128
137
|
### Core Identity requirements
|
|
129
138
|
|
|
130
139
|
Use `requirements({ core: [{ subject, functions, classes, authority }] })` to declare capabilities
|
|
131
|
-
for an Identity in the
|
|
140
|
+
for an Identity in the Domain's local Core. `subject` is the resolved Core Node; each entry
|
|
132
141
|
must request at least one capability. The top-level `functions`, `classes`, and `authority` members
|
|
133
142
|
describe capabilities for the Domain principal.
|
|
134
143
|
|
|
@@ -281,7 +290,7 @@ const session = connect({
|
|
|
281
290
|
// Return { credential, expiresAt } with expiresAt in Unix milliseconds.
|
|
282
291
|
mint: (signal) => mintSourceCredential(signal),
|
|
283
292
|
}),
|
|
284
|
-
exchange: {},
|
|
293
|
+
exchange: { mode: 'auto' },
|
|
285
294
|
})
|
|
286
295
|
|
|
287
296
|
await session.call({ target: '/:orders.example:class.Order:create', input }) // Domain callable
|
|
@@ -291,8 +300,10 @@ await session.graph.get('@order-id') // Kernel callable: the source credential
|
|
|
291
300
|
- **Hold the source in a provider.** Domain credentials are cached per source credential, so a
|
|
292
301
|
`resolve` that returns a new token on every call also exchanges on every call. The provider also
|
|
293
302
|
lets the Session renew a source that is too close to expiry to feed a Domain credential.
|
|
294
|
-
- **Lifetimes.** `exchange
|
|
295
|
-
5-second settlement skew. A Domain credential never outlives its
|
|
303
|
+
- **Lifetimes.** In `exchange: { mode: 'auto', ttlSeconds }`, `ttlSeconds` (default 300) must exceed
|
|
304
|
+
the provider's `ttlSeconds` plus a 5-second settlement skew. A Domain credential never outlives its
|
|
305
|
+
source. `exchange: { mode: 'source' }` keeps the source credential for every Call and takes no
|
|
306
|
+
`ttlSeconds`; an empty `{}` or a bare `{ ttlSeconds }` is rejected.
|
|
296
307
|
- **Reading as a Domain.** To call Kernel callables as a Domain, for example to read Shell-owned
|
|
297
308
|
Classes, feed a second Session from an explicit exchange:
|
|
298
309
|
`createSessionCredentialProvider({ ttlSeconds: 60, mint: (signal) => session.exchange(shellIssuer, { signal }) })`.
|
|
@@ -309,6 +320,52 @@ await session.graph.get('@order-id') // Kernel callable: the source credential
|
|
|
309
320
|
| Session with `exchange` | the declaring Domain, for Domain callables | ✅ with the source credential | ✅ Policy evaluated against the identity |
|
|
310
321
|
| `session.exchange(issuer)` held by a second Session | that Domain | ✅ as that Domain | only what that Domain may use |
|
|
311
322
|
|
|
323
|
+
## Deployment addresses
|
|
324
|
+
|
|
325
|
+
`@astrale-os/sdk/deployment/address` derives the one immutable URL of a deployment,
|
|
326
|
+
`https://<line>-<content>.<routingDomain>`, from its inputs alone. Whoever deploys and whoever
|
|
327
|
+
hosts compute it with the same pure, runtime-safe functions, so a host can refuse an address it
|
|
328
|
+
did not derive.
|
|
329
|
+
|
|
330
|
+
- **Line.** `deploymentLine({ origin, environment, addressing })` is shared by every deployment of
|
|
331
|
+
an origin in an environment. Its 16-character fingerprint, the first 80 bits of
|
|
332
|
+
`sha256(origin ‖ 0x00 ‖ environment)` in base32, makes it unique. A `readable` line (platform
|
|
333
|
+
Domains) prefixes it with a cosmetic part, so `agencies.example.com` in `staging` gives
|
|
334
|
+
`agencies-staging-354iwg4avm6wdmrs`. An `opaque` line (tenant Domains) is the fingerprint alone.
|
|
335
|
+
- **Content.** `deploymentContent(buildDigest, configuration)` covers the build and the
|
|
336
|
+
`FrozenConfigurationV1`: the plain variables and execution settings (with the durable Workflow
|
|
337
|
+
options, when declared), the services and dispatch namespaces it binds, and the names of the
|
|
338
|
+
bound secrets, never their values. A changed variable or binding gives another URL, and a rotated
|
|
339
|
+
secret keeps the URL. `configurationDigest` gives the full digest that a deployment record keeps. It checks
|
|
340
|
+
canonical form only: the host refuses settings no Worker runs under when it encodes
|
|
341
|
+
`ASTRALE_SETTINGS` (`encodeWorkerSettings`), before it uploads anything.
|
|
342
|
+
- **Label.** `deploymentLabel(line, content)` is at most 57 characters. `DEPLOYMENT_LABEL`
|
|
343
|
+
recognizes it, never a legacy UUID or stable Worker name, and `parseDeploymentLabel` splits it
|
|
344
|
+
and refuses anything longer than 57 characters.
|
|
345
|
+
- **Record.** `acceptDeploymentRecord` admits a `DeploymentRecordV1` only when its provider
|
|
346
|
+
script is the label that its own fields derive. A host admits the record a deploy declares with
|
|
347
|
+
it before storing it, so every stored record decodes.
|
|
348
|
+
- **Platform summary.** `acceptPlatformDeploymentSummary` admits the `summary:<label>` a platform
|
|
349
|
+
dispatch namespace keeps beside `record:<label>`: the deployment's `DeploymentSummaryV1` without
|
|
350
|
+
its record, owned by `platform`, named by its label, with no provider version id and no
|
|
351
|
+
`lastCallAt` or `expiresAt`. `encodePlatformDeploymentSummary` gives its one canonical text.
|
|
352
|
+
|
|
353
|
+
```ts
|
|
354
|
+
import {
|
|
355
|
+
deploymentContent,
|
|
356
|
+
deploymentLabel,
|
|
357
|
+
deploymentLine,
|
|
358
|
+
deploymentUrl,
|
|
359
|
+
} from '@astrale-os/sdk/deployment/address'
|
|
360
|
+
|
|
361
|
+
const line = deploymentLine({ origin, environment, addressing: 'opaque' })
|
|
362
|
+
const url = deploymentUrl(deploymentLabel(line, deploymentContent(build, configuration)), routingDomain)
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
`@astrale-os/sdk/deployment/address/vectors` holds the conformance vectors: Worker uploads and
|
|
366
|
+
configurations with the manifest, build digest, label and URL each one gives. Every host that
|
|
367
|
+
recomputes an address tests against them.
|
|
368
|
+
|
|
312
369
|
## License
|
|
313
370
|
|
|
314
371
|
Apache License 2.0 — see [LICENSE](LICENSE) for details.
|
|
@@ -331,10 +388,13 @@ routes: {
|
|
|
331
388
|
```
|
|
332
389
|
|
|
333
390
|
These requirements are publication metadata, so changing them updates the publication ETag without
|
|
334
|
-
changing the
|
|
391
|
+
changing the Domain's business Schema. They require the `shell` handshake. Origins must use
|
|
335
392
|
HTTPS without credentials, paths, queries, fragments, or wildcards; authoring normalizes and sorts
|
|
336
393
|
them. Supporting hosts admit them per mount and execute the existing `browser.openExternal`
|
|
337
394
|
intent. Nested Views cannot expand their parent's grant.
|
|
338
395
|
|
|
339
396
|
For the unified authentication facade and coordinated consumer update, see
|
|
340
397
|
[the Auth API migration guide](docs/auth-api-migration.md).
|
|
398
|
+
|
|
399
|
+
The authored composition formerly called an Application is now a Domain definition: see
|
|
400
|
+
[the Domain definition migration guide](docs/domain-definition-migration.md).
|
|
@@ -29,6 +29,12 @@ export type ActionAddressOf<Callable> = Callable extends {
|
|
|
29
29
|
export type ResolvedDomainOf<Schema extends schema.DomainSchema> = Extract<schema.DomainOf<Schema>, Domain>;
|
|
30
30
|
/** SDK Action address derived mechanically from the canonical local callable key. */
|
|
31
31
|
export type ActionAddress<Schema extends schema.DomainSchema> = ActionAddressOf<LocalCallable<ResolvedDomainOf<Schema>>>;
|
|
32
|
+
/** Address of a callable an Action may implement: a durable callable needs a Workflow. */
|
|
33
|
+
export type ImmediateActionAddress<Schema extends schema.DomainSchema> = ActionAddressOf<Exclude<LocalCallable<ResolvedDomainOf<Schema>>, {
|
|
34
|
+
readonly execution: {
|
|
35
|
+
readonly durable: true;
|
|
36
|
+
};
|
|
37
|
+
}>>;
|
|
32
38
|
export type CallableAtAddress<Schema extends schema.DomainSchema, Address extends string> = LocalCallable<ResolvedDomainOf<Schema>> extends infer Callable ? Callable extends unknown ? ActionAddressOf<Callable> extends Address ? Callable : never : never : never;
|
|
33
39
|
export type Action<Callable extends ResolvedCallable, Definitions extends Integrations = Readonly<Record<never, never>>, DomainValue extends Domain = Domain, Errors extends DeclaredErrors = NoDeclaredErrors> = (context: ActionContext<Callable, DomainValue, Definitions, Errors>) => Promise<ActionOutputOf<Callable>>;
|
|
34
40
|
declare const ACTION_SCHEMA: unique symbol;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { defineAction } from './define.js';
|
|
2
2
|
export type { Action, ActionDefinition } from './action.js';
|
|
3
|
-
export type { ActionContext, ActionExecution, Caller, DomainGraphExecutor, DomainGraphExecutors, DomainKernelSessions, } from './context.js';
|
|
3
|
+
export type { ActionContext, ActionBinaryInput, ActionExecution, Caller, DomainGraphExecutor, DomainGraphExecutors, DomainKernelSessions, } from './context.js';
|
|
4
4
|
export type { ActionBinary, ActionOutputOf } from './output.js';
|
|
5
5
|
export type { DeclaredErrorDefinition, DeclaredErrorFactory, DeclaredErrorFamily, DeclaredErrorOptions, DeclaredErrors, } from '../error/index.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { AuthenticationEvidence,
|
|
1
|
+
import type { AuthenticationEvidence, IdentityId } from '../../platform/auth/index.js';
|
|
2
2
|
import type { BoundClientSession } from '../../platform/client/session/index.js';
|
|
3
3
|
import type { NodeId } from '../../platform/graph/node/index.js';
|
|
4
|
-
import type { CallableInputOf, Domain, ResolvedFunction, ResolvedMethod } from '../../platform/schema/index.js';
|
|
4
|
+
import type { CallableInputOf, CallableInputModeOf, Domain, ResolvedFunction, ResolvedMethod } from '../../platform/schema/index.js';
|
|
5
5
|
import type { HandlerDependencies } from '../dependency/index.js';
|
|
6
6
|
import type { DeclaredErrorFactory, DeclaredErrors, NoDeclaredErrors } from '../error/index.js';
|
|
7
7
|
import type { IntegrationClients, Integrations } from '../integration/index.js';
|
|
@@ -11,11 +11,10 @@ export type ResolvedCallable = ResolvedFunction | ResolvedMethod;
|
|
|
11
11
|
/** Bearer-free caller evidence established before an Action or Workflow runs. */
|
|
12
12
|
export interface AuthenticatedCaller {
|
|
13
13
|
readonly kind: 'authenticated';
|
|
14
|
-
/**
|
|
14
|
+
/** The one Identity whose authority this invocation exercises: ownership and attribution. */
|
|
15
15
|
readonly identity: IdentityId;
|
|
16
|
-
/**
|
|
16
|
+
/** Executor whose credential directly authenticated this invocation (for example this Domain). */
|
|
17
17
|
readonly principal: IdentityId;
|
|
18
|
-
readonly authority: Grant;
|
|
19
18
|
readonly authentication: AuthenticationEvidence;
|
|
20
19
|
}
|
|
21
20
|
export interface AnonymousCaller {
|
|
@@ -34,13 +33,23 @@ export interface ActionExecution {
|
|
|
34
33
|
body(): Uint8Array;
|
|
35
34
|
};
|
|
36
35
|
}
|
|
36
|
+
/** One admitted, single-consumer binary Function request body. */
|
|
37
|
+
export interface ActionBinaryInput {
|
|
38
|
+
readonly body: ReadableStream<Uint8Array>;
|
|
39
|
+
readonly length: number;
|
|
40
|
+
}
|
|
41
|
+
type BinaryInputOf<Callable> = CallableInputModeOf<Callable> extends 'binary' ? {
|
|
42
|
+
readonly body: ActionBinaryInput;
|
|
43
|
+
} : {
|
|
44
|
+
readonly body?: never;
|
|
45
|
+
};
|
|
37
46
|
export interface DomainGraphExecutor<DomainValue extends Domain = Domain> {
|
|
38
47
|
readonly query: QueryExecutor<DomainValue>;
|
|
39
48
|
readonly mutate: MutationExecutor<DomainValue>;
|
|
40
49
|
}
|
|
41
|
-
export type DomainGraphExecutors<DomainValue extends Domain = Domain> = Readonly<DomainGraphExecutor<DomainValue> & Record<'caller' | 'self'
|
|
50
|
+
export type DomainGraphExecutors<DomainValue extends Domain = Domain> = Readonly<DomainGraphExecutor<DomainValue> & Record<'caller' | 'self', DomainGraphExecutor<DomainValue>>>;
|
|
42
51
|
/** Self-default Kernel session with one level of explicit authority selection. */
|
|
43
|
-
export type DomainKernelSessions = Readonly<BoundClientSession & Record<'caller' | 'self'
|
|
52
|
+
export type DomainKernelSessions = Readonly<BoundClientSession & Record<'caller' | 'self', BoundClientSession>>;
|
|
44
53
|
type AuthorityOf<Callable, DomainValue extends Domain> = Callable extends {
|
|
45
54
|
readonly auth: 'anonymous';
|
|
46
55
|
} ? {
|
|
@@ -83,5 +92,5 @@ export type ActionContext<Callable extends ResolvedCallable, DomainValue extends
|
|
|
83
92
|
readonly execution: ActionExecution;
|
|
84
93
|
/** Construct one implementation-declared safe business error for `throw error(...)`. */
|
|
85
94
|
readonly error: DeclaredErrorFactory<Errors>;
|
|
86
|
-
} & AuthorityOf<Callable, DomainValue> & SelfOf<Callable>;
|
|
95
|
+
} & AuthorityOf<Callable, DomainValue> & SelfOf<Callable> & BinaryInputOf<Callable>;
|
|
87
96
|
export {};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { schema } from '../../platform/schema/index.js';
|
|
2
2
|
import type { DeclaredErrorOptions, DeclaredErrors, NoDeclaredErrors } from '../error/index.js';
|
|
3
3
|
import type { Integrations } from '../integration/index.js';
|
|
4
|
-
import type { Action,
|
|
4
|
+
import type { Action, ActionDefinition, CallableAtAddress, ImmediateActionAddress, ResolvedDomainOf } from './action.js';
|
|
5
5
|
import type { ResolvedCallable } from './context.js';
|
|
6
6
|
/** Define one simple single-step implementation by its SDK Action address. */
|
|
7
7
|
export declare function defineAction<Schema extends schema.DomainSchema, Definitions extends Integrations = Readonly<Record<never, never>>>(): {
|
|
8
|
-
<const Address extends
|
|
9
|
-
<const Address extends
|
|
8
|
+
<const Address extends ImmediateActionAddress<Schema>>(address: Address, run: Action<Extract<CallableAtAddress<Schema, Address>, ResolvedCallable>, Definitions, ResolvedDomainOf<Schema>, NoDeclaredErrors>): ActionDefinition<Schema, Address, Definitions, NoDeclaredErrors>;
|
|
9
|
+
<const Address extends ImmediateActionAddress<Schema>, const Errors extends DeclaredErrors>(address: Address, options: DeclaredErrorOptions<Errors>, run: Action<Extract<CallableAtAddress<Schema, Address>, ResolvedCallable>, Definitions, ResolvedDomainOf<Schema>, Errors>): ActionDefinition<Schema, Address, Definitions, Errors>;
|
|
10
10
|
};
|
|
11
11
|
/** True only for an Action produced by defineAction in this SDK package root. */
|
|
12
12
|
export declare function isAction(input: unknown): input is ActionDefinition;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { defineAction, isAction } from './define.js';
|
|
2
2
|
export type { Action, ActionAddress, ActionAddressOf, ActionDefinition, CallableAtAddress, LocalCallable, ResolvedDomainOf, } from './action.js';
|
|
3
|
-
export type { ActionContext, ActionExecution, AnonymousCaller, AuthenticatedCaller, Caller, DomainGraphExecutor, DomainGraphExecutors, DomainKernelSessions, ResolvedCallable, } from './context.js';
|
|
3
|
+
export type { ActionContext, ActionBinaryInput, ActionExecution, AnonymousCaller, AuthenticatedCaller, Caller, DomainGraphExecutor, DomainGraphExecutors, DomainKernelSessions, ResolvedCallable, } from './context.js';
|
|
4
4
|
export type { ActionBinary, ActionOutputOf } from './output.js';
|
|
5
5
|
export type { DeclaredErrorDefinition, DeclaredErrorFactory, DeclaredErrorFamily, DeclaredErrorOptions, DeclaredErrors, } from '../error/index.js';
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type { schema } from '../platform/schema/index.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { DomainDefinition } from './domain.js';
|
|
3
3
|
import type { Requirements } from './requirements/index.js';
|
|
4
4
|
import type { Routes } from './routes/index.js';
|
|
5
5
|
import type { Runtime } from './runtime/index.js';
|
|
6
6
|
import type { Frontend } from './view/index.js';
|
|
7
|
-
export interface
|
|
7
|
+
export interface DomainDefinitionInput<Schema extends schema.DomainSchema, RuntimeValue extends Runtime<Schema>, FrontendValue extends Frontend<Schema> | undefined, RoutesValue extends Routes | undefined, RequirementsValue extends Requirements | undefined> {
|
|
8
8
|
readonly schema: Schema;
|
|
9
9
|
readonly runtime: RuntimeValue;
|
|
10
10
|
readonly frontend?: FrontendValue;
|
|
11
11
|
readonly routes?: RoutesValue;
|
|
12
12
|
readonly requirements?: RequirementsValue;
|
|
13
13
|
}
|
|
14
|
-
/** Capture one inert authored
|
|
15
|
-
export declare function
|
|
16
|
-
export declare function
|
|
14
|
+
/** Capture one inert authored Domain without resolving, compiling, loading, or deploying it. */
|
|
15
|
+
export declare function defineDomain<const Schema extends schema.DomainSchema, const RuntimeValue extends Runtime<Schema>, const FrontendValue extends Frontend<Schema> | undefined = undefined, const RoutesValue extends Routes | undefined = undefined, const RequirementsValue extends Requirements | undefined = undefined>(input: DomainDefinitionInput<Schema, RuntimeValue, FrontendValue, RoutesValue, RequirementsValue>): DomainDefinition<Schema, RuntimeValue, FrontendValue, RoutesValue, RequirementsValue>;
|
|
16
|
+
export declare function isDomainDefinition(input: unknown): input is DomainDefinition;
|
|
@@ -2,39 +2,39 @@ import { isRequirements } from './requirements/index.js';
|
|
|
2
2
|
import { isRoutes } from './routes/index.js';
|
|
3
3
|
import { isRuntime } from './runtime/index.js';
|
|
4
4
|
import { isFrontend } from './view/index.js';
|
|
5
|
-
const
|
|
6
|
-
/** Capture one inert authored
|
|
7
|
-
export function
|
|
5
|
+
const admittedDomainDefinitions = new WeakSet();
|
|
6
|
+
/** Capture one inert authored Domain without resolving, compiling, loading, or deploying it. */
|
|
7
|
+
export function defineDomain(input) {
|
|
8
8
|
if (input === null || typeof input !== 'object' || Array.isArray(input))
|
|
9
9
|
invalid();
|
|
10
10
|
const allowed = new Set(['schema', 'runtime', 'frontend', 'routes', 'requirements']);
|
|
11
11
|
if (Reflect.ownKeys(input).some((key) => !allowed.has(key)))
|
|
12
12
|
invalid();
|
|
13
13
|
if (!isRuntime(input.runtime))
|
|
14
|
-
throw new TypeError('
|
|
14
|
+
throw new TypeError('Domain Runtime is not admitted.');
|
|
15
15
|
if (input.frontend !== undefined &&
|
|
16
16
|
(!isFrontend(input.frontend) || input.frontend.schema !== input.schema)) {
|
|
17
|
-
throw new TypeError('
|
|
17
|
+
throw new TypeError('Domain Frontend is not admitted for its exact Schema.');
|
|
18
18
|
}
|
|
19
19
|
if (input.routes !== undefined && !isRoutes(input.routes)) {
|
|
20
|
-
throw new TypeError('
|
|
20
|
+
throw new TypeError('Domain routes are not admitted.');
|
|
21
21
|
}
|
|
22
22
|
if (input.requirements !== undefined && !isRequirements(input.requirements)) {
|
|
23
|
-
throw new TypeError('
|
|
23
|
+
throw new TypeError('Domain requirements are not admitted.');
|
|
24
24
|
}
|
|
25
|
-
const
|
|
25
|
+
const domain = Object.freeze({
|
|
26
26
|
schema: input.schema,
|
|
27
27
|
runtime: input.runtime,
|
|
28
28
|
...(input.frontend === undefined ? {} : { frontend: input.frontend }),
|
|
29
29
|
...(input.routes === undefined ? {} : { routes: input.routes }),
|
|
30
30
|
...(input.requirements === undefined ? {} : { requirements: input.requirements }),
|
|
31
31
|
});
|
|
32
|
-
|
|
33
|
-
return
|
|
32
|
+
admittedDomainDefinitions.add(domain);
|
|
33
|
+
return domain;
|
|
34
34
|
}
|
|
35
|
-
export function
|
|
36
|
-
return input !== null && typeof input === 'object' &&
|
|
35
|
+
export function isDomainDefinition(input) {
|
|
36
|
+
return input !== null && typeof input === 'object' && admittedDomainDefinitions.has(input);
|
|
37
37
|
}
|
|
38
38
|
function invalid() {
|
|
39
|
-
throw new TypeError('
|
|
39
|
+
throw new TypeError('Domain definition may contain only schema, runtime, frontend, routes, and requirements.');
|
|
40
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type { DependencyCallOptions, DependencyInvoker, HandlerDependencies } from './invoker.js';
|
|
1
|
+
export type { DependencyBinaryCallOptions, DependencyCallOptions, DependencyInvoker, HandlerDependencies, } from './invoker.js';
|
|
@@ -1,26 +1,31 @@
|
|
|
1
1
|
import type { Binary, Input } from '../../platform/client/index.js';
|
|
2
|
-
import type { SessionRequestOptions } from '../../platform/client/session/index.js';
|
|
2
|
+
import type { SessionRequestOptions, SessionRequestOptionsWithBody } from '../../platform/client/session/index.js';
|
|
3
3
|
import type { NodeId } from '../../platform/graph/node/index.js';
|
|
4
|
-
import type { CallableInputOf, CallableOutputOf, CallableResultOf, Domain, ResolvedMethod, KernelSchema, schema } from '../../platform/schema/index.js';
|
|
4
|
+
import type { CallableInputOf, CallableInputModeOf, CallableOutputOf, CallableResultOf, Domain, ResolvedFunction, ResolvedMethod, KernelSchema, schema } from '../../platform/schema/index.js';
|
|
5
5
|
import type { LocalCallable } from '../action/index.js';
|
|
6
|
-
export type DependencyCallOptions = Pick<SessionRequestOptions, 'timeoutMs' | 'idempotencyKey'>;
|
|
6
|
+
export type DependencyCallOptions = Pick<SessionRequestOptions, 'timeoutMs' | 'idempotencyKey' | 'body'>;
|
|
7
|
+
export type DependencyBinaryCallOptions = Pick<SessionRequestOptionsWithBody, 'timeoutMs' | 'idempotencyKey' | 'body'>;
|
|
7
8
|
type InstanceMethodOf<D extends Domain> = Extract<LocalCallable<D>, ResolvedMethod<unknown, unknown, false>>;
|
|
8
9
|
type FunctionOrStaticMethodOf<D extends Domain> = Exclude<LocalCallable<D>, ResolvedMethod<unknown, unknown, false>>;
|
|
10
|
+
type WithInputMode<C, Mode extends 'value' | 'binary'> = C extends unknown ? CallableInputModeOf<C> extends Mode ? C : never : never;
|
|
11
|
+
type ValueFunctionOrStaticMethodOf<D extends Domain> = WithInputMode<FunctionOrStaticMethodOf<D>, 'value'>;
|
|
12
|
+
type BinaryFunctionOf<D extends Domain> = WithInputMode<Extract<LocalCallable<D>, ResolvedFunction>, 'binary'>;
|
|
9
13
|
type DependencyInputOf<C> = C extends unknown ? unknown extends CallableInputOf<C> ? Input : [CallableInputOf<C>] extends [void] ? undefined : CallableInputOf<C> : never;
|
|
10
14
|
type DependencyResultOf<C> = unknown extends CallableOutputOf<C> ? unknown : CallableResultOf<C, Binary>;
|
|
11
15
|
/** One declared dependency, bound to one explicitly selected invocation authority. */
|
|
12
16
|
export interface DependencyInvoker<D extends Domain> {
|
|
13
17
|
readonly invoke: {
|
|
14
|
-
<const C extends
|
|
18
|
+
<const C extends ValueFunctionOrStaticMethodOf<D>>(select: (domain: D) => C, input: NoInfer<DependencyInputOf<C>>, options?: DependencyCallOptions): Promise<DependencyResultOf<C>>;
|
|
15
19
|
<const C extends InstanceMethodOf<D>>(select: (domain: D) => C, instance: NodeId, input: NoInfer<DependencyInputOf<C>>, options?: DependencyCallOptions): Promise<DependencyResultOf<C>>;
|
|
20
|
+
<const C extends BinaryFunctionOf<D>>(select: (domain: D) => C, metadata: NoInfer<DependencyInputOf<C>>, options: DependencyBinaryCallOptions): Promise<DependencyResultOf<C>>;
|
|
16
21
|
};
|
|
17
22
|
}
|
|
18
23
|
/**
|
|
19
24
|
* Direct Schema aliases with explicit authority selection and no default invoke.
|
|
20
|
-
* self is the executing Domain; caller forwards the incoming
|
|
25
|
+
* self is the executing Domain; caller forwards the incoming caller Identity.
|
|
21
26
|
* The canonical Kernel is exposed through context.kernel.
|
|
22
27
|
*/
|
|
23
28
|
export type HandlerDependencies<D extends Domain> = Readonly<{
|
|
24
|
-
[Alias in keyof D['dependencies'] as D['dependencies'][Alias] extends schema.DomainOf<KernelSchema> ? never : Alias]: Readonly<Record<'caller' | 'self'
|
|
29
|
+
[Alias in keyof D['dependencies'] as D['dependencies'][Alias] extends schema.DomainOf<KernelSchema> ? never : Alias]: Readonly<Record<'caller' | 'self', DependencyInvoker<Extract<D['dependencies'][Alias], Domain>>>>;
|
|
25
30
|
}>;
|
|
26
31
|
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { schema } from '../platform/schema/index.js';
|
|
2
|
+
import type { Requirements } from './requirements/index.js';
|
|
3
|
+
import type { Routes } from './routes/index.js';
|
|
4
|
+
import type { Runtime, SchemaOfRuntime as RuntimeSchemaOf } from './runtime/index.js';
|
|
5
|
+
import type { Frontend } from './view/index.js';
|
|
6
|
+
declare const DOMAIN_DEFINITION_IDENTITY: unique symbol;
|
|
7
|
+
declare const DOMAIN_DEFINITION_SCHEMA: unique symbol;
|
|
8
|
+
/** Schema-independent type witness shared by every admitted Domain definition. */
|
|
9
|
+
export interface DomainDefinitionIdentity {
|
|
10
|
+
readonly [DOMAIN_DEFINITION_IDENTITY]: true;
|
|
11
|
+
}
|
|
12
|
+
/** Inert source/build composition of one Domain: its exact Schema and authored Runtime. */
|
|
13
|
+
export interface DomainDefinition<Schema extends schema.DomainSchema = schema.DomainSchema, RuntimeValue extends Runtime<Schema> = Runtime<Schema>, FrontendValue extends Frontend<Schema> | undefined = undefined, RoutesValue extends Routes | undefined = undefined, RequirementsValue extends Requirements | undefined = undefined> extends DomainDefinitionIdentity {
|
|
14
|
+
readonly schema: Schema;
|
|
15
|
+
readonly runtime: RuntimeValue;
|
|
16
|
+
readonly frontend?: FrontendValue;
|
|
17
|
+
readonly routes?: RoutesValue;
|
|
18
|
+
readonly requirements?: RequirementsValue;
|
|
19
|
+
readonly [DOMAIN_DEFINITION_SCHEMA]: (schema: Schema) => Schema;
|
|
20
|
+
}
|
|
21
|
+
export type SchemaOfDomainDefinition<Value> = Value extends {
|
|
22
|
+
readonly schema: infer Schema;
|
|
23
|
+
} ? Extract<Schema, schema.DomainSchema> : never;
|
|
24
|
+
export type RuntimeOfDomainDefinition<Value> = Value extends {
|
|
25
|
+
readonly runtime: infer RuntimeValue;
|
|
26
|
+
} ? Extract<RuntimeValue, Runtime> : never;
|
|
27
|
+
export type SchemaOfRuntime<Value> = RuntimeSchemaOf<Value>;
|
|
28
|
+
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export type {
|
|
1
|
+
export { defineDomain, isDomainDefinition } from './define.js';
|
|
2
|
+
export type { DomainDefinitionInput } from './define.js';
|
|
3
3
|
export { requirements } from './requirements/index.js';
|
|
4
4
|
export type { AuthorityRequirements, AuthorityRequirementsInput, ClassOperation, ClassRequirement, ClassRequirementInput, CoreRequirement, CoreRequirementInput, FunctionRequirementTarget, Requirements, RequirementsInput, } from './requirements/index.js';
|
|
5
5
|
export { route, routes } from './routes/index.js';
|
|
6
6
|
export type { Route, RouteInput, RouteTarget, Routes } from './routes/index.js';
|
|
7
7
|
export { defineFrontend, external, vite } from './view/index.js';
|
|
8
8
|
export type { Frontend, FrontendInput, FrontendSource, IframeRequirements, ViewHostRequirements, } from './view/index.js';
|
|
9
|
-
export type {
|
|
9
|
+
export type { DomainDefinition, DomainDefinitionIdentity, RuntimeOfDomainDefinition, SchemaOfDomainDefinition, SchemaOfRuntime, } from './domain.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { defineDomain, isDomainDefinition } from './define.js';
|
|
2
2
|
export { requirements } from './requirements/index.js';
|
|
3
3
|
export { route, routes } from './routes/index.js';
|
|
4
4
|
export { defineFrontend, external, vite } from './view/index.js';
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { MutationPropsInput } from '@astrale-os/kernel-core/graph/mutate';
|
|
2
2
|
import type { PropertyInputOf, ResolvedClass, ResolvedProperty } from '@astrale-os/kernel-dsl/v1';
|
|
3
|
+
import { PropertyValues } from '@astrale-os/kernel-dsl/v1/language';
|
|
4
|
+
import type { StoredPropertyInputOf } from '../../../platform/schema/property-input.js';
|
|
3
5
|
export type RichPropertyInput<Class> = PropertyInputOf<Class>;
|
|
4
6
|
export type RichPropertyName<Class> = Extract<keyof PropertyInputOf<Class>, string>;
|
|
5
7
|
export interface RichPropertyConditions<Class> {
|
|
6
|
-
readonly equals?:
|
|
8
|
+
readonly equals?: StoredPropertyInputOf<Class>;
|
|
7
9
|
readonly absent?: readonly RichPropertyName<Class>[];
|
|
8
10
|
}
|
|
9
11
|
export interface RichPropertyDelta<Class> {
|
|
@@ -12,11 +14,11 @@ export interface RichPropertyDelta<Class> {
|
|
|
12
14
|
}
|
|
13
15
|
export declare function properties<Class extends ResolvedClass>(selected: Class, input: RichPropertyInput<Class>): MutationPropsInput;
|
|
14
16
|
export declare function conditions<Class extends ResolvedClass>(selected: Class, input: RichPropertyConditions<Class>): Readonly<{
|
|
15
|
-
equals?:
|
|
17
|
+
equals?: PropertyValues | undefined;
|
|
16
18
|
absent?: readonly `${string}:class.${string}.property.${string}`[] | undefined;
|
|
17
19
|
}>;
|
|
18
20
|
export declare function delta<Class extends ResolvedClass>(selected: Class, input: RichPropertyDelta<Class>): Readonly<{
|
|
19
|
-
set: Readonly<Record<`${string}:class.${string}.property.${string}`, import("@astrale-os/kernel-dsl/
|
|
21
|
+
set: Readonly<Record<`${string}:class.${string}.property.${string}`, import("@astrale-os/kernel-dsl/v1/language").PropertyValue>>;
|
|
20
22
|
unset: readonly `${string}:class.${string}.property.${string}`[];
|
|
21
23
|
}>;
|
|
22
24
|
export declare function resolvedProperty<Class extends ResolvedClass>(selected: Class, name: RichPropertyName<Class>): ResolvedProperty;
|
|
@@ -1,10 +1,39 @@
|
|
|
1
1
|
import { PropertyKey } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
|
+
import { PropertyValues } from '@astrale-os/kernel-dsl/v1/language';
|
|
2
3
|
export function properties(selected, input) {
|
|
3
|
-
|
|
4
|
+
const ordinary = Object.create(null);
|
|
5
|
+
const receipts = [];
|
|
6
|
+
const sources = new Map();
|
|
7
|
+
for (const [name, value] of Object.entries(input)) {
|
|
8
|
+
const property = resolvedProperty(selected, name);
|
|
9
|
+
const previous = sources.get(property.key);
|
|
10
|
+
if (previous !== undefined) {
|
|
11
|
+
throw new TypeError(`Property ${property.key} is supplied through both ${JSON.stringify(previous)} and ${JSON.stringify(name)}.`);
|
|
12
|
+
}
|
|
13
|
+
sources.set(property.key, name);
|
|
14
|
+
if (isBlobProperty(property)) {
|
|
15
|
+
if (typeof value !== 'string') {
|
|
16
|
+
throw new TypeError(`Blob Property ${property.key} requires an upload receipt.`);
|
|
17
|
+
}
|
|
18
|
+
receipts.push([property.key, value]);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
ordinary[name] = value;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// Blob receipts are admitted by the Kernel executor. A property's ordinary validator expects
|
|
25
|
+
// the stored Ref, so run it only for ordinary write values before combining the two sets.
|
|
26
|
+
const admitted = selected.properties.from(ordinary);
|
|
27
|
+
return receipts.length === 0
|
|
28
|
+
? admitted
|
|
29
|
+
: PropertyValues.create([
|
|
30
|
+
...Object.entries(admitted).map(([key, value]) => [PropertyKey(key), value]),
|
|
31
|
+
...receipts,
|
|
32
|
+
]);
|
|
4
33
|
}
|
|
5
34
|
export function conditions(selected, input) {
|
|
6
35
|
return Object.freeze({
|
|
7
|
-
...(input.equals === undefined ? {} : { equals: properties(
|
|
36
|
+
...(input.equals === undefined ? {} : { equals: selected.properties.from(input.equals) }),
|
|
8
37
|
...(input.absent === undefined
|
|
9
38
|
? {}
|
|
10
39
|
: {
|
|
@@ -12,6 +41,10 @@ export function conditions(selected, input) {
|
|
|
12
41
|
}),
|
|
13
42
|
});
|
|
14
43
|
}
|
|
44
|
+
function isBlobProperty(property) {
|
|
45
|
+
const contract = property.definition.schema;
|
|
46
|
+
return (contract !== null && typeof contract === 'object' && contract['x-astrale-value-kind'] === 'blob');
|
|
47
|
+
}
|
|
15
48
|
export function delta(selected, input) {
|
|
16
49
|
return Object.freeze({
|
|
17
50
|
set: properties(selected, input.set ?? {}),
|
|
@@ -49,7 +49,10 @@ export function authorStateTransition(core, input) {
|
|
|
49
49
|
class: selectedClassKey,
|
|
50
50
|
props: conditions(selectedClass, {
|
|
51
51
|
...(suppliedAbsent === undefined ? {} : { absent: suppliedAbsent }),
|
|
52
|
-
equals: {
|
|
52
|
+
equals: {
|
|
53
|
+
...suppliedEquals,
|
|
54
|
+
...from,
|
|
55
|
+
},
|
|
53
56
|
}),
|
|
54
57
|
});
|
|
55
58
|
core.updateNode({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { release } from '@astrale-os/kernel-protocol';
|
|
2
2
|
import type { RuntimeRegistry } from '../runtime/index.js';
|
|
3
3
|
import type { Routes } from './collection.js';
|
|
4
4
|
/** Lower recipe identities to canonical callable keys after Runtime admission. */
|
|
5
|
-
export declare function admit(input: Routes | undefined, registry: RuntimeRegistry): readonly
|
|
5
|
+
export declare function admit(input: Routes | undefined, registry: RuntimeRegistry): readonly release.HttpRouteDeclaration[];
|
|
@@ -4,7 +4,7 @@ export function admit(input, registry) {
|
|
|
4
4
|
if (input === undefined)
|
|
5
5
|
return Object.freeze([]);
|
|
6
6
|
if (!isRoutes(input))
|
|
7
|
-
throw new TypeError('
|
|
7
|
+
throw new TypeError('Domain routes are not admitted.');
|
|
8
8
|
return Object.freeze(input.entries.map(({ target, ...declaration }) => {
|
|
9
9
|
const implementation = registry.implementations.find(({ definition }) => definition === target);
|
|
10
10
|
if (implementation === undefined) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { release } from '@astrale-os/kernel-protocol';
|
|
2
2
|
export interface RouteTarget {
|
|
3
3
|
readonly kind: 'action' | 'workflow';
|
|
4
4
|
readonly address: string;
|
|
5
5
|
}
|
|
6
|
-
export type RouteInput = Omit<
|
|
6
|
+
export type RouteInput = Omit<release.HttpRouteDeclaration, 'callable'>;
|
|
7
7
|
/** One provider-neutral HTTP route targeting an admitted Action or Workflow recipe. */
|
|
8
8
|
export interface Route<Target extends RouteTarget = RouteTarget> extends RouteInput {
|
|
9
9
|
readonly target: Target;
|
|
@@ -16,6 +16,9 @@ export function admitActions(callables, input) {
|
|
|
16
16
|
if (callable === undefined) {
|
|
17
17
|
throw new TypeError(`Runtime Action ${definition.address} is not root-local and executable.`);
|
|
18
18
|
}
|
|
19
|
+
if (callable.execution?.durable === true) {
|
|
20
|
+
throw new TypeError(`Runtime Action ${definition.address} is durable; implement it with defineWorkflow.`);
|
|
21
|
+
}
|
|
19
22
|
return Object.freeze({
|
|
20
23
|
kind: 'action',
|
|
21
24
|
address: definition.address,
|
|
@@ -6,6 +6,8 @@ export interface RuntimeWorkflow {
|
|
|
6
6
|
readonly address: string;
|
|
7
7
|
readonly callable: ResolvedCallable;
|
|
8
8
|
readonly definition: WorkflowDefinition;
|
|
9
|
+
/** Declared `execution: { durable: true }`: runs on the workflow engine, never inline. */
|
|
10
|
+
readonly durable: boolean;
|
|
9
11
|
}
|
|
10
12
|
/** Associate admitted Workflows with their exact authenticated value callables. */
|
|
11
13
|
export declare function admitWorkflows(callables: readonly RuntimeCallable[], input: unknown): readonly RuntimeWorkflow[];
|
|
@@ -22,11 +22,16 @@ export function admitWorkflows(callables, input) {
|
|
|
22
22
|
if (callable.output.mode !== 'value') {
|
|
23
23
|
throw new TypeError(`Runtime Workflow ${definition.address} must have value output.`);
|
|
24
24
|
}
|
|
25
|
+
const durable = callable.execution?.durable === true;
|
|
26
|
+
if (!durable && definition.compat !== undefined) {
|
|
27
|
+
throw new TypeError(`Runtime Workflow ${definition.address} declares compat but its callable is not durable.`);
|
|
28
|
+
}
|
|
25
29
|
return Object.freeze({
|
|
26
30
|
kind: 'workflow',
|
|
27
31
|
address: definition.address,
|
|
28
32
|
callable,
|
|
29
33
|
definition,
|
|
34
|
+
durable,
|
|
30
35
|
});
|
|
31
36
|
});
|
|
32
37
|
return Object.freeze(workflows);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { defineWorkflow } from './define.js';
|
|
2
|
-
export type { WorkflowContext } from './context.js';
|
|
3
|
-
export type {
|
|
2
|
+
export type { InlineWorkflowContext, WorkflowContext } from './context.js';
|
|
3
|
+
export type { DurableCallable, DurableExecution, DurableStep, DurableStepAuthority, DurableWorkflowContext, } from './durable.js';
|
|
4
|
+
export type { Workflow, WorkflowAddress, WorkflowDefinition, WorkflowOptions } from './workflow.js';
|
|
4
5
|
export type { DeclaredErrorDefinition, DeclaredErrorFactory, DeclaredErrorFamily, DeclaredErrorOptions, DeclaredErrors, } from '../error/index.js';
|