@astrale-os/sdk 0.6.0-beta.3 → 0.6.0-beta.31
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 +181 -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
|
@@ -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';
|
|
5
|
-
import type { LocalCallable } from '../action/index.js';
|
|
6
|
-
export type DependencyCallOptions = Pick<SessionRequestOptions, 'timeoutMs' | 'idempotencyKey'>;
|
|
4
|
+
import type { CallableInputOf, CallableInputModeOf, CallableOutputOf, CallableResultOf, Domain, ResolvedFunction, ResolvedMethod, KernelSchema, schema } from '../../platform/schema/index.js';
|
|
5
|
+
import type { AuthorityMode, AuthoritySelection, LocalCallable } from '../action/index.js';
|
|
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
|
|
21
|
-
* The canonical Kernel is exposed through context.kernel.
|
|
25
|
+
* self is the executing Domain; caller forwards the incoming caller Identity, and is absent from a
|
|
26
|
+
* call that carried no credential. The canonical Kernel is exposed through context.kernel.
|
|
22
27
|
*/
|
|
23
|
-
export type HandlerDependencies<D extends Domain> = Readonly<{
|
|
24
|
-
[Alias in keyof D['dependencies'] as D['dependencies'][Alias] extends schema.DomainOf<KernelSchema> ? never : Alias]:
|
|
28
|
+
export type HandlerDependencies<D extends Domain, Selectable extends AuthorityMode = AuthorityMode> = Readonly<{
|
|
29
|
+
[Alias in keyof D['dependencies'] as D['dependencies'][Alias] extends schema.DomainOf<KernelSchema> ? never : Alias]: AuthoritySelection<DependencyInvoker<Extract<D['dependencies'][Alias], Domain>>, Selectable>;
|
|
25
30
|
}>;
|
|
26
31
|
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ClassIcon, 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
|
+
/** The application's icon. */
|
|
20
|
+
readonly icon?: ClassIcon;
|
|
21
|
+
readonly [DOMAIN_DEFINITION_SCHEMA]: (schema: Schema) => Schema;
|
|
22
|
+
}
|
|
23
|
+
export type SchemaOfDomainDefinition<Value> = Value extends {
|
|
24
|
+
readonly schema: infer Schema;
|
|
25
|
+
} ? Extract<Schema, schema.DomainSchema> : never;
|
|
26
|
+
export type RuntimeOfDomainDefinition<Value> = Value extends {
|
|
27
|
+
readonly runtime: infer RuntimeValue;
|
|
28
|
+
} ? Extract<RuntimeValue, Runtime> : never;
|
|
29
|
+
export type SchemaOfRuntime<Value> = RuntimeSchemaOf<Value>;
|
|
30
|
+
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
|
-
export type { Frontend, FrontendInput, FrontendSource,
|
|
9
|
-
export type {
|
|
8
|
+
export type { Frontend, FrontendInput, FrontendSource, ViewHostRequirements } from './view/index.js';
|
|
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';
|
|
@@ -19,9 +19,9 @@ export interface IntegrationExecution {
|
|
|
19
19
|
readonly signal: AbortSignal;
|
|
20
20
|
readonly deadline: number;
|
|
21
21
|
readonly idempotencyKey?: string;
|
|
22
|
-
/** Exact caller-bound invocation capability; absent
|
|
22
|
+
/** Exact caller-bound invocation capability; absent when the call carried no credential. */
|
|
23
23
|
readonly invoke?: BoundClientSession['invoke'];
|
|
24
|
-
/** Domain-self transport authentication; absent
|
|
24
|
+
/** Domain-self transport authentication; absent only outside a Kernel invocation. */
|
|
25
25
|
readonly auth?: IntegrationAuthentication;
|
|
26
26
|
}
|
|
27
27
|
export interface IntegrationOperation<Input = unknown, Output = unknown> {
|
|
@@ -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({
|
|
@@ -5,4 +5,4 @@ export type { Mutation, MutationDefinition, MutationInputOf, MutationOutputOf }
|
|
|
5
5
|
export type { CreatedNode, EdgeSelector, ExistingEndpoint, MutationEndpoint, QueryPrecondition, RichMutationBuilder, RichPropertyConditions, RichPropertyDelta, RichPropertyInput, RichPropertyName, } from './authoring/index.js';
|
|
6
6
|
/** Canonical low-level Mutation documents remain available as the explicit escape hatch. */
|
|
7
7
|
export * from '@astrale-os/kernel-core/graph/mutate';
|
|
8
|
-
export type { LocalAlias
|
|
8
|
+
export type { LocalAlias } from '../../platform/graph/alias.js';
|
|
@@ -7,10 +7,6 @@ export declare const QUERY_COMPOSITION_LIMITS: Readonly<{
|
|
|
7
7
|
maximumDependencyDepth: 8;
|
|
8
8
|
}>;
|
|
9
9
|
export interface QueryPlanAnalysis {
|
|
10
|
-
/** @deprecated Use physicalQueries. */
|
|
11
|
-
readonly queries: number;
|
|
12
|
-
/** @deprecated Use dependencyDepth. */
|
|
13
|
-
readonly depth: number;
|
|
14
10
|
readonly logicalQueries: number;
|
|
15
11
|
readonly physicalQueries: number;
|
|
16
12
|
readonly dependencyDepth: number;
|
|
@@ -53,8 +53,6 @@ export function analyzeQueryPlan(plan) {
|
|
|
53
53
|
throw new QueryCompositionError('QUERY_COMPOSITION_LIMIT', `Composite Query exceeds ${QUERY_COMPOSITION_LIMITS.maximumPhysicalQueries} physical Queries or dependency depth ${QUERY_COMPOSITION_LIMITS.maximumDependencyDepth}.`);
|
|
54
54
|
}
|
|
55
55
|
return Object.freeze({
|
|
56
|
-
queries: physicalKeys.size,
|
|
57
|
-
depth: maximumDepth,
|
|
58
56
|
logicalQueries,
|
|
59
57
|
physicalQueries: physicalKeys.size,
|
|
60
58
|
dependencyDepth: maximumDepth,
|
|
@@ -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
|
-
/** Associate admitted Workflows with their exact
|
|
12
|
+
/** Associate admitted Workflows with their exact value callables. */
|
|
11
13
|
export declare function admitWorkflows(callables: readonly RuntimeCallable[], input: unknown): readonly RuntimeWorkflow[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isWorkflow } from '../workflow/index.js';
|
|
2
2
|
import { runtimeCallableAt } from './callables.js';
|
|
3
|
-
/** Associate admitted Workflows with their exact
|
|
3
|
+
/** Associate admitted Workflows with their exact value callables. */
|
|
4
4
|
export function admitWorkflows(callables, input) {
|
|
5
5
|
if (!Array.isArray(input))
|
|
6
6
|
throw new TypeError('Runtime workflows must be an array.');
|
|
@@ -16,17 +16,19 @@ export function admitWorkflows(callables, input) {
|
|
|
16
16
|
if (callable === undefined) {
|
|
17
17
|
throw new TypeError(`Runtime Workflow ${definition.address} is not root-local and executable.`);
|
|
18
18
|
}
|
|
19
|
-
if (callable.auth === 'anonymous') {
|
|
20
|
-
throw new TypeError(`Runtime Workflow ${definition.address} must be authenticated.`);
|
|
21
|
-
}
|
|
22
19
|
if (callable.output.mode !== 'value') {
|
|
23
20
|
throw new TypeError(`Runtime Workflow ${definition.address} must have value output.`);
|
|
24
21
|
}
|
|
22
|
+
const durable = callable.execution?.durable === true;
|
|
23
|
+
if (!durable && definition.compat !== undefined) {
|
|
24
|
+
throw new TypeError(`Runtime Workflow ${definition.address} declares compat but its callable is not durable.`);
|
|
25
|
+
}
|
|
25
26
|
return Object.freeze({
|
|
26
27
|
kind: 'workflow',
|
|
27
28
|
address: definition.address,
|
|
28
29
|
callable,
|
|
29
30
|
definition,
|
|
31
|
+
durable,
|
|
30
32
|
});
|
|
31
33
|
});
|
|
32
34
|
return Object.freeze(workflows);
|
|
@@ -5,7 +5,10 @@ import { isFrontendSource } from './source.js';
|
|
|
5
5
|
export function defineFrontend(input) {
|
|
6
6
|
if (input === null || typeof input !== 'object' || Array.isArray(input))
|
|
7
7
|
invalid();
|
|
8
|
-
if (
|
|
8
|
+
if (Object.hasOwn(input, 'entrypoint')) {
|
|
9
|
+
throw new TypeError('Frontend entrypoint is removed: declare it with defineSchema(origin, { entrypoint }).');
|
|
10
|
+
}
|
|
11
|
+
if (Reflect.ownKeys(input).some((key) => key !== 'schema' && key !== 'source' && key !== 'routes')) {
|
|
9
12
|
invalid();
|
|
10
13
|
}
|
|
11
14
|
const names = Object.keys(input.schema.views).sort(compare);
|
|
@@ -18,10 +21,6 @@ export function defineFrontend(input) {
|
|
|
18
21
|
const unknown = Reflect.ownKeys(authored).find((name) => typeof name !== 'string' || !names.includes(name));
|
|
19
22
|
if (unknown !== undefined)
|
|
20
23
|
throw new TypeError(`Frontend route ${String(unknown)} is unknown.`);
|
|
21
|
-
const entrypoint = input.entrypoint ?? (names.length === 1 ? names[0] : undefined);
|
|
22
|
-
if (entrypoint === undefined || !names.includes(entrypoint)) {
|
|
23
|
-
throw new TypeError('Frontend entrypoint must name one Schema View.');
|
|
24
|
-
}
|
|
25
24
|
const paths = new Set();
|
|
26
25
|
const routes = {};
|
|
27
26
|
for (const name of names) {
|
|
@@ -36,7 +35,6 @@ export function defineFrontend(input) {
|
|
|
36
35
|
schema: input.schema,
|
|
37
36
|
source,
|
|
38
37
|
routes: Object.freeze(routes),
|
|
39
|
-
entrypoint: entrypoint,
|
|
40
38
|
}));
|
|
41
39
|
}
|
|
42
40
|
function admitSource(input) {
|
|
@@ -8,12 +8,12 @@ export interface FrontendInput<Schema extends schema.DomainSchema> {
|
|
|
8
8
|
readonly schema: Schema;
|
|
9
9
|
readonly source: FrontendSource;
|
|
10
10
|
readonly routes?: FrontendRouteInputs<Schema>;
|
|
11
|
-
|
|
11
|
+
/** Removed: the Schema declares its entrypoint with `defineSchema(origin, { entrypoint })`. */
|
|
12
|
+
readonly entrypoint?: never;
|
|
12
13
|
}
|
|
13
14
|
export interface Frontend<Schema extends schema.DomainSchema = schema.DomainSchema> {
|
|
14
15
|
readonly kind: 'frontend';
|
|
15
16
|
readonly schema: Schema;
|
|
16
17
|
readonly source: FrontendSource;
|
|
17
18
|
readonly routes: FrontendRoutes<Schema>;
|
|
18
|
-
readonly entrypoint: ViewName<Schema>;
|
|
19
19
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { isFrontend } from './admission.js';
|
|
2
2
|
export { defineFrontend } from './define.js';
|
|
3
3
|
export type { Frontend, FrontendInput, FrontendRouteInputs, FrontendRoutes, ViewName, } from './frontend.js';
|
|
4
|
-
export type { FrontendHandshake, FrontendRoute, FrontendRouteInput,
|
|
4
|
+
export type { FrontendHandshake, FrontendRoute, FrontendRouteInput, ViewHostRequirements, } from './route.js';
|
|
5
5
|
export { external, isFrontendSource, vite } from './source.js';
|
|
6
6
|
export type { ExternalSource, FrontendSource, ViteSource } from './source.js';
|
|
@@ -1,30 +1,16 @@
|
|
|
1
1
|
import { type ViewHostRequirements } from '@astrale-os/kernel-core/schema/kernel/syscalls/view-resolution';
|
|
2
2
|
export type { ViewHostRequirements } from '@astrale-os/kernel-core/schema/kernel/syscalls/view-resolution';
|
|
3
3
|
export type FrontendHandshake = 'shell' | 'none';
|
|
4
|
-
/**
|
|
5
|
-
* @deprecated Every trusted View receives the Shell's shared browser profile: requirements within
|
|
6
|
-
* it are redundant, and Astrale hosts refuse any beyond it. Declare none.
|
|
7
|
-
*/
|
|
8
|
-
export interface IframeRequirements {
|
|
9
|
-
readonly sandbox?: readonly string[];
|
|
10
|
-
readonly allow?: readonly string[];
|
|
11
|
-
}
|
|
12
4
|
export type FrontendRouteInput = string | {
|
|
13
5
|
readonly path?: string;
|
|
14
6
|
readonly document?: string;
|
|
15
7
|
readonly handshake?: FrontendHandshake;
|
|
16
|
-
/**
|
|
17
|
-
* @deprecated Every trusted View receives the Shell's shared browser profile: requirements
|
|
18
|
-
* within it are redundant, and Astrale hosts refuse any beyond it. Remove this field.
|
|
19
|
-
*/
|
|
20
|
-
readonly iframe?: IframeRequirements;
|
|
21
8
|
readonly host?: ViewHostRequirements;
|
|
22
9
|
};
|
|
23
10
|
export interface FrontendRoute {
|
|
24
11
|
readonly path: string;
|
|
25
12
|
readonly document: string;
|
|
26
13
|
readonly handshake: FrontendHandshake;
|
|
27
|
-
readonly iframe?: IframeRequirements;
|
|
28
14
|
readonly host?: ViewHostRequirements;
|
|
29
15
|
}
|
|
30
16
|
export declare function normalizeRoute(input: FrontendRouteInput | undefined, fallback: string): FrontendRoute;
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import { acceptViewHostRequirements, } from '@astrale-os/kernel-core/schema/kernel/syscalls/view-resolution';
|
|
2
|
-
const TOKEN = /^[a-z][a-z0-9-]*$/u;
|
|
3
|
-
const BASELINES = Object.freeze({
|
|
4
|
-
none: iframeRequirements(['allow-scripts'], []),
|
|
5
|
-
shell: iframeRequirements(['allow-same-origin', 'allow-scripts'], ['clipboard-write']),
|
|
6
|
-
});
|
|
7
2
|
export function normalizeRoute(input, fallback) {
|
|
8
3
|
if (typeof input === 'string') {
|
|
9
4
|
return Object.freeze({ path: routePath(input), document: 'index.html', handshake: 'shell' });
|
|
10
5
|
}
|
|
11
6
|
const value = plainRecord(input ?? {});
|
|
12
|
-
if (Reflect.ownKeys(value).some((key) => typeof key !== 'string' ||
|
|
13
|
-
!['path', 'document', 'handshake', 'iframe', 'host'].includes(key))) {
|
|
7
|
+
if (Reflect.ownKeys(value).some((key) => typeof key !== 'string' || !['path', 'document', 'handshake', 'host'].includes(key))) {
|
|
14
8
|
invalid();
|
|
15
9
|
}
|
|
16
10
|
const authoredHandshake = dataValue(value, 'handshake');
|
|
@@ -20,59 +14,14 @@ export function normalizeRoute(input, fallback) {
|
|
|
20
14
|
invalid();
|
|
21
15
|
}
|
|
22
16
|
const handshake = authoredHandshake ?? 'shell';
|
|
23
|
-
const iframe = normalizeIframeRequirements(dataValue(value, 'iframe'), handshake);
|
|
24
17
|
const host = acceptViewHostRequirements(dataValue(value, 'host'), handshake, true);
|
|
25
18
|
return Object.freeze({
|
|
26
19
|
path: routePath(dataValue(value, 'path') ?? fallback),
|
|
27
20
|
document: filePath(dataValue(value, 'document') ?? 'index.html'),
|
|
28
21
|
handshake,
|
|
29
|
-
...(iframe === undefined ? {} : { iframe }),
|
|
30
22
|
...(host === undefined ? {} : { host }),
|
|
31
23
|
});
|
|
32
24
|
}
|
|
33
|
-
function normalizeIframeRequirements(input, handshake) {
|
|
34
|
-
if (input === undefined)
|
|
35
|
-
return undefined;
|
|
36
|
-
const value = plainRecord(input);
|
|
37
|
-
if (Reflect.ownKeys(value).some((key) => key !== 'sandbox' && key !== 'allow'))
|
|
38
|
-
invalid();
|
|
39
|
-
const authored = iframeRequirements(tokenArray(dataValue(value, 'sandbox')), tokenArray(dataValue(value, 'allow')));
|
|
40
|
-
assertSandboxRelationships(authored.sandbox);
|
|
41
|
-
const baseline = BASELINES[handshake];
|
|
42
|
-
const sandbox = authored.sandbox.filter((token) => !baseline.sandbox.includes(token));
|
|
43
|
-
const allow = authored.allow.filter((feature) => !baseline.allow.includes(feature));
|
|
44
|
-
return sandbox.length === 0 && allow.length === 0 ? undefined : iframeRequirements(sandbox, allow);
|
|
45
|
-
}
|
|
46
|
-
function iframeRequirements(sandbox, allow) {
|
|
47
|
-
return Object.freeze({
|
|
48
|
-
sandbox: Object.freeze([...new Set(sandbox)].sort()),
|
|
49
|
-
allow: Object.freeze([...new Set(allow)].sort()),
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
function tokenArray(input) {
|
|
53
|
-
if (input === undefined)
|
|
54
|
-
return [];
|
|
55
|
-
if (!Array.isArray(input))
|
|
56
|
-
invalid();
|
|
57
|
-
const descriptors = Object.getOwnPropertyDescriptors(input);
|
|
58
|
-
const result = [];
|
|
59
|
-
for (let index = 0; index < input.length; index += 1) {
|
|
60
|
-
const descriptor = descriptors[String(index)];
|
|
61
|
-
if (descriptor === undefined || !('value' in descriptor))
|
|
62
|
-
invalid();
|
|
63
|
-
if (typeof descriptor.value !== 'string' || !TOKEN.test(descriptor.value))
|
|
64
|
-
invalid();
|
|
65
|
-
result.push(descriptor.value);
|
|
66
|
-
}
|
|
67
|
-
for (const key of Reflect.ownKeys(descriptors)) {
|
|
68
|
-
if (key === 'length')
|
|
69
|
-
continue;
|
|
70
|
-
if (typeof key !== 'string' || !/^(0|[1-9][0-9]*)$/u.test(key) || Number(key) >= input.length) {
|
|
71
|
-
invalid();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return result;
|
|
75
|
-
}
|
|
76
25
|
function plainRecord(input) {
|
|
77
26
|
if (typeof input !== 'object' || input === null || Array.isArray(input))
|
|
78
27
|
invalid();
|
|
@@ -89,18 +38,6 @@ function dataValue(input, key) {
|
|
|
89
38
|
invalid();
|
|
90
39
|
return descriptor.value;
|
|
91
40
|
}
|
|
92
|
-
function assertSandboxRelationships(sandbox) {
|
|
93
|
-
const tokens = new Set(sandbox);
|
|
94
|
-
if (tokens.has('allow-popups-to-escape-sandbox') && !tokens.has('allow-popups'))
|
|
95
|
-
invalid();
|
|
96
|
-
if (tokens.has('allow-top-navigation') && tokens.has('allow-top-navigation-by-user-activation')) {
|
|
97
|
-
invalid();
|
|
98
|
-
}
|
|
99
|
-
if (tokens.has('allow-top-navigation-to-custom-protocols') &&
|
|
100
|
-
(tokens.has('allow-top-navigation') || tokens.has('allow-popups'))) {
|
|
101
|
-
invalid();
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
41
|
export function defaultRoute(name) {
|
|
105
42
|
return routePath(`/${name
|
|
106
43
|
.replace(/([a-z0-9])([A-Z])/gu, '$1-$2')
|
|
@@ -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';
|
|
@@ -2,8 +2,14 @@ import type { Domain } from '../../platform/schema/index.js';
|
|
|
2
2
|
import type { ActionContext, ResolvedCallable } from '../action/index.js';
|
|
3
3
|
import type { DeclaredErrors, NoDeclaredErrors } from '../error/index.js';
|
|
4
4
|
import type { Integrations } from '../integration/index.js';
|
|
5
|
+
import type { DurableCallable, DurableWorkflowContext } from './durable.js';
|
|
5
6
|
import type { WorkflowStep } from './step/index.js';
|
|
6
|
-
/**
|
|
7
|
-
export type
|
|
7
|
+
/** Multi-step context of one value-output callable run inside its invocation. */
|
|
8
|
+
export type InlineWorkflowContext<Callable extends ResolvedCallable, DomainValue extends Domain = Domain, Definitions extends Integrations = Readonly<Record<never, never>>, Errors extends DeclaredErrors = NoDeclaredErrors> = ActionContext<Callable, DomainValue, Definitions, Errors> & {
|
|
8
9
|
readonly step: WorkflowStep;
|
|
9
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Exact Workflow context for one callable: engine-journaled when its Schema declares
|
|
13
|
+
* `execution: { durable: true }`, otherwise run inside its invocation.
|
|
14
|
+
*/
|
|
15
|
+
export type WorkflowContext<Callable extends ResolvedCallable, DomainValue extends Domain = Domain, Definitions extends Integrations = Readonly<Record<never, never>>, Errors extends DeclaredErrors = NoDeclaredErrors> = Callable extends DurableCallable ? DurableWorkflowContext<Callable, DomainValue, Errors> : InlineWorkflowContext<Callable, DomainValue, Definitions, Errors>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { schema } from '../../platform/schema/index.js';
|
|
2
2
|
import type { ResolvedDomainOf } from '../action/index.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { DeclaredErrors, NoDeclaredErrors } from '../error/index.js';
|
|
4
4
|
import type { Integrations } from '../integration/index.js';
|
|
5
|
-
import type { CallableAtWorkflowAddress, Workflow, WorkflowAddress, WorkflowDefinition } from './workflow.js';
|
|
6
|
-
/** Define one
|
|
5
|
+
import type { CallableAtWorkflowAddress, Workflow, WorkflowAddress, WorkflowDefinition, WorkflowOptions } from './workflow.js';
|
|
6
|
+
/** Define one multi-step value-output implementation by its SDK Action address. */
|
|
7
7
|
export declare function defineWorkflow<Schema extends schema.DomainSchema, Definitions extends Integrations = Readonly<Record<never, never>>>(): {
|
|
8
8
|
<const Address extends WorkflowAddress<Schema>>(address: Address, run: Workflow<CallableAtWorkflowAddress<Schema, Address>, Definitions, ResolvedDomainOf<Schema>, NoDeclaredErrors>): WorkflowDefinition<Schema, Address, Definitions, NoDeclaredErrors>;
|
|
9
|
-
<const Address extends WorkflowAddress<Schema>, const Errors extends DeclaredErrors>(address: Address, options:
|
|
9
|
+
<const Address extends WorkflowAddress<Schema>, const Errors extends DeclaredErrors = NoDeclaredErrors>(address: Address, options: WorkflowOptions<Errors>, run: Workflow<CallableAtWorkflowAddress<Schema, Address>, Definitions, ResolvedDomainOf<Schema>, Errors>): WorkflowDefinition<Schema, Address, Definitions, Errors>;
|
|
10
10
|
};
|
|
11
11
|
export declare function isWorkflow(input: unknown): input is WorkflowDefinition;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { patterns } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
2
|
import { rememberDeclaredErrors } from '../error/index.js';
|
|
3
3
|
const admittedWorkflows = new WeakSet();
|
|
4
|
-
|
|
4
|
+
const COMPAT_TOKEN = /^[A-Za-z0-9._~-]{1,64}$/u;
|
|
5
|
+
/** Define one multi-step value-output implementation by its SDK Action address. */
|
|
5
6
|
export function defineWorkflow() {
|
|
6
7
|
return function define(address, optionsOrRun, possibleRun) {
|
|
7
8
|
acceptWorkflowAddress(address);
|
|
8
|
-
const options = possibleRun === undefined ? undefined : optionsOrRun;
|
|
9
|
+
const options = possibleRun === undefined ? undefined : acceptOptions(optionsOrRun);
|
|
9
10
|
const run = possibleRun ?? optionsOrRun;
|
|
10
11
|
if (typeof run !== 'function')
|
|
11
12
|
throw new TypeError('Workflow run must be a function.');
|
|
@@ -13,13 +14,28 @@ export function defineWorkflow() {
|
|
|
13
14
|
kind: 'workflow',
|
|
14
15
|
address,
|
|
15
16
|
run,
|
|
17
|
+
...(options?.compat === undefined ? {} : { compat: options.compat }),
|
|
16
18
|
});
|
|
17
|
-
if (options !== undefined)
|
|
18
|
-
rememberDeclaredErrors(workflow, options);
|
|
19
|
+
if (options?.errors !== undefined)
|
|
20
|
+
rememberDeclaredErrors(workflow, { errors: options.errors });
|
|
19
21
|
admittedWorkflows.add(workflow);
|
|
20
22
|
return workflow;
|
|
21
23
|
};
|
|
22
24
|
}
|
|
25
|
+
function acceptOptions(input) {
|
|
26
|
+
if (input === null ||
|
|
27
|
+
typeof input !== 'object' ||
|
|
28
|
+
Array.isArray(input) ||
|
|
29
|
+
Reflect.ownKeys(input).some((key) => key !== 'errors' && key !== 'compat')) {
|
|
30
|
+
throw new TypeError('Workflow options accept only errors and compat.');
|
|
31
|
+
}
|
|
32
|
+
const options = input;
|
|
33
|
+
if (options.compat !== undefined &&
|
|
34
|
+
(typeof options.compat !== 'string' || !COMPAT_TOKEN.test(options.compat))) {
|
|
35
|
+
throw new TypeError(`Invalid Workflow compat token: ${JSON.stringify(options.compat)}.`);
|
|
36
|
+
}
|
|
37
|
+
return options;
|
|
38
|
+
}
|
|
23
39
|
export function isWorkflow(input) {
|
|
24
40
|
return input !== null && typeof input === 'object' && admittedWorkflows.has(input);
|
|
25
41
|
}
|