@astrale-os/kernel-protocol 0.5.0-beta.7 → 0.5.0-beta.70
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/dist/artifact/index.d.ts +1 -2
- package/dist/artifact/index.js +1 -2
- package/dist/artifact/ref.d.ts +2 -1
- package/dist/artifact/ref.js +4 -4
- package/dist/codecs/codec.d.ts +0 -1
- package/dist/codecs/codec.js +0 -1
- package/dist/codecs/index.d.ts +1 -3
- package/dist/codecs/index.js +1 -3
- package/dist/codecs/json.d.ts +0 -1
- package/dist/codecs/json.js +0 -1
- package/dist/codecs/media-types.d.ts +0 -2
- package/dist/codecs/media-types.js +0 -2
- package/dist/errors/codes.d.ts +0 -1
- package/dist/errors/codes.js +0 -1
- package/dist/errors/http-status.d.ts +0 -1
- package/dist/errors/http-status.js +0 -1
- package/dist/errors/index.d.ts +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/payload.d.ts +0 -1
- package/dist/errors/payload.js +3 -3
- package/dist/errors/protocol-error.d.ts +0 -1
- package/dist/errors/protocol-error.js +4 -3
- package/dist/errors/reason.d.ts +0 -1
- package/dist/errors/reason.js +0 -1
- package/dist/errors/retry.d.ts +23 -0
- package/dist/errors/retry.js +44 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -2
- package/dist/invocation/admission.d.ts +2 -3
- package/dist/invocation/admission.js +7 -11
- package/dist/invocation/binary.d.ts +1 -1
- package/dist/invocation/binary.js +21 -5
- package/dist/invocation/binding-codecs.d.ts +1 -2
- package/dist/invocation/binding-codecs.js +1 -7
- package/dist/invocation/cancellation.d.ts +0 -1
- package/dist/invocation/cancellation.js +0 -1
- package/dist/invocation/correlation.d.ts +0 -1
- package/dist/invocation/correlation.js +0 -1
- package/dist/invocation/delegate.d.ts +1 -11
- package/dist/invocation/delegate.js +4 -19
- package/dist/invocation/http/binary.d.ts +3 -2
- package/dist/invocation/http/binary.js +6 -2
- package/dist/invocation/http/index.d.ts +2 -2
- package/dist/invocation/http/index.js +2 -2
- package/dist/invocation/http/negotiation.d.ts +0 -1
- package/dist/invocation/http/negotiation.js +3 -11
- package/dist/invocation/http/request.d.ts +9 -0
- package/dist/invocation/http/request.js +61 -0
- package/dist/invocation/http/stream.d.ts +0 -1
- package/dist/invocation/http/stream.js +0 -1
- package/dist/invocation/http/trace.d.ts +0 -1
- package/dist/invocation/http/trace.js +0 -1
- package/dist/invocation/idempotency.d.ts +0 -1
- package/dist/invocation/idempotency.js +0 -1
- package/dist/invocation/identity.d.ts +0 -1
- package/dist/invocation/identity.js +0 -1
- package/dist/invocation/index.d.ts +6 -4
- package/dist/invocation/index.js +5 -4
- package/dist/invocation/legacy/index.d.ts +29 -0
- package/dist/invocation/legacy/index.js +28 -0
- package/dist/invocation/legacy/route.d.ts +14 -0
- package/dist/invocation/legacy/route.js +25 -0
- package/dist/invocation/legacy/via.d.ts +30 -0
- package/dist/invocation/legacy/via.js +15 -0
- package/dist/invocation/miss.d.ts +0 -1
- package/dist/invocation/miss.js +0 -1
- package/dist/invocation/redirect.d.ts +15 -13
- package/dist/invocation/redirect.js +9 -22
- package/dist/invocation/request.d.ts +0 -1
- package/dist/invocation/request.js +2 -3
- package/dist/invocation/response.d.ts +0 -1
- package/dist/invocation/response.js +0 -1
- package/dist/invocation/routing.d.ts +19 -6
- package/dist/invocation/routing.js +50 -21
- package/dist/invocation/schema.d.ts +6 -5
- package/dist/invocation/schema.js +5 -12
- package/dist/invocation/service-reason.d.ts +21 -17
- package/dist/invocation/service-reason.js +27 -20
- package/dist/invocation/stale-route.d.ts +1 -2
- package/dist/invocation/stale-route.js +0 -1
- package/dist/invocation/stream.d.ts +0 -1
- package/dist/invocation/stream.js +0 -1
- package/dist/invocation/target.d.ts +5 -3
- package/dist/invocation/target.js +25 -4
- package/dist/invocation/trace.d.ts +0 -1
- package/dist/invocation/trace.js +0 -1
- package/dist/invocation/version.d.ts +0 -1
- package/dist/invocation/version.js +0 -1
- package/dist/invocation/websocket/binary.d.ts +0 -1
- package/dist/invocation/websocket/binary.js +1 -1
- package/dist/invocation/websocket/index.d.ts +1 -2
- package/dist/invocation/websocket/index.js +1 -2
- package/dist/invocation/websocket/subprotocol.d.ts +1 -3
- package/dist/invocation/websocket/subprotocol.js +3 -5
- package/dist/issuer/claims.d.ts +7 -0
- package/dist/issuer/claims.js +7 -0
- package/dist/issuer/configuration.d.ts +0 -1
- package/dist/issuer/configuration.js +0 -1
- package/dist/issuer/error.d.ts +0 -1
- package/dist/issuer/error.js +0 -1
- package/dist/issuer/exchange.d.ts +0 -1
- package/dist/issuer/exchange.js +0 -1
- package/dist/issuer/hosted.d.ts +0 -1
- package/dist/issuer/hosted.js +0 -1
- package/dist/issuer/index.d.ts +2 -1
- package/dist/issuer/index.js +2 -1
- package/dist/issuer/key-set.d.ts +0 -1
- package/dist/issuer/key-set.js +0 -1
- package/dist/issuer/paths.d.ts +2 -1
- package/dist/issuer/paths.js +1 -1
- package/dist/issuer/url.d.ts +0 -1
- package/dist/issuer/url.js +0 -1
- package/dist/issuer/workflow-engine.d.ts +18 -0
- package/dist/issuer/workflow-engine.js +59 -0
- package/dist/{publication → release}/bindings/callable.d.ts +0 -1
- package/dist/release/bindings/callable.js +34 -0
- package/dist/{publication → release}/bindings/index.d.ts +1 -2
- package/dist/{publication → release}/bindings/index.js +0 -1
- package/dist/{publication → release}/bindings/invocation.d.ts +0 -1
- package/dist/release/bindings/invocation.js +13 -0
- package/dist/release/bindings/view.d.ts +16 -0
- package/dist/release/bindings/view.js +148 -0
- package/dist/release/build.d.ts +6 -0
- package/dist/release/build.js +7 -0
- package/dist/release/bundle-admission.d.ts +21 -0
- package/dist/release/bundle-admission.js +66 -0
- package/dist/{publication → release}/bundle-descriptor.d.ts +0 -1
- package/dist/release/bundle-descriptor.js +19 -0
- package/dist/release/bundle-evidence.d.ts +3 -0
- package/dist/release/bundle-evidence.js +13 -0
- package/dist/release/bundle.d.ts +12 -0
- package/dist/{publication → release}/bundle.js +16 -11
- package/dist/{publication → release}/declaration.d.ts +0 -1
- package/dist/release/declaration.js +1 -0
- package/dist/{publication → release}/delivery/attestation.d.ts +1 -1
- package/dist/{publication → release}/delivery/attestation.js +0 -1
- package/dist/release/delivery/claims.d.ts +21 -0
- package/dist/release/delivery/claims.js +68 -0
- package/dist/release/delivery/delivery.d.ts +11 -0
- package/dist/release/delivery/delivery.js +24 -0
- package/dist/{publication → release}/delivery/error.d.ts +2 -1
- package/dist/{publication → release}/delivery/error.js +1 -1
- package/dist/{publication → release}/delivery/index.d.ts +6 -2
- package/dist/{publication → release}/delivery/index.js +5 -1
- package/dist/{publication → release}/delivery/limits.d.ts +2 -2
- package/dist/release/delivery/limits.js +5 -0
- package/dist/release/delivery/request.d.ts +21 -0
- package/dist/release/delivery/request.js +60 -0
- package/dist/{publication → release}/delivery-declaration.d.ts +0 -1
- package/dist/{publication → release}/delivery-declaration.js +4 -5
- package/dist/{publication → release}/delivery-endpoint.d.ts +0 -1
- package/dist/release/delivery-endpoint.js +22 -0
- package/dist/release/digest.d.ts +13 -0
- package/dist/{publication/etag.js → release/digest.js} +1 -7
- package/dist/release/error.d.ts +7 -0
- package/dist/release/error.js +11 -0
- package/dist/release/index.d.ts +21 -0
- package/dist/release/index.js +14 -0
- package/dist/release/issuer.d.ts +5 -0
- package/dist/release/issuer.js +34 -0
- package/dist/release/legacy/bindings.d.ts +14 -0
- package/dist/release/legacy/bindings.js +11 -0
- package/dist/release/legacy/bundle-admission.d.ts +6 -0
- package/dist/release/legacy/bundle-admission.js +10 -0
- package/dist/release/legacy/bundle-evidence.d.ts +8 -0
- package/dist/release/legacy/bundle-evidence.js +11 -0
- package/dist/release/legacy/bundle.d.ts +24 -0
- package/dist/release/legacy/bundle.js +31 -0
- package/dist/release/legacy/delivery/attestation.d.ts +6 -0
- package/dist/release/legacy/delivery/attestation.js +1 -0
- package/dist/{publication → release/legacy}/delivery/claims.d.ts +10 -2
- package/dist/{publication → release/legacy}/delivery/claims.js +7 -3
- package/dist/release/legacy/delivery/delivery.d.ts +18 -0
- package/dist/{publication → release/legacy}/delivery/delivery.js +6 -3
- package/dist/release/legacy/delivery/error.d.ts +16 -0
- package/dist/release/legacy/delivery/error.js +6 -0
- package/dist/release/legacy/delivery/index.d.ts +13 -0
- package/dist/release/legacy/delivery/index.js +13 -0
- package/dist/release/legacy/delivery/limits.d.ts +21 -0
- package/dist/release/legacy/delivery/limits.js +22 -0
- package/dist/release/legacy/delivery/request.d.ts +26 -0
- package/dist/{publication → release/legacy}/delivery/request.js +8 -4
- package/dist/release/legacy/delivery-declaration.d.ts +9 -0
- package/dist/release/legacy/delivery-declaration.js +11 -0
- package/dist/release/legacy/error.d.ts +26 -0
- package/dist/release/legacy/error.js +114 -0
- package/dist/release/legacy/etag.d.ts +12 -0
- package/dist/release/legacy/etag.js +14 -0
- package/dist/release/legacy/index.d.ts +75 -0
- package/dist/release/legacy/index.js +15 -0
- package/dist/release/legacy/profiles.d.ts +23 -0
- package/dist/release/legacy/profiles.js +36 -0
- package/dist/release/legacy/projection.d.ts +13 -0
- package/dist/release/legacy/projection.js +25 -0
- package/dist/release/legacy/publication.d.ts +90 -0
- package/dist/release/legacy/publication.js +124 -0
- package/dist/release/legacy/reference.d.ts +47 -0
- package/dist/{publication → release/legacy}/reference.js +27 -4
- package/dist/release/legacy/requirements.d.ts +30 -0
- package/dist/release/legacy/requirements.js +20 -0
- package/dist/{publication → release}/manifest.d.ts +2 -3
- package/dist/release/manifest.js +30 -0
- package/dist/release/reference.d.ts +26 -0
- package/dist/release/reference.js +70 -0
- package/dist/release/release.d.ts +60 -0
- package/dist/release/release.js +123 -0
- package/dist/release/requirements.d.ts +41 -0
- package/dist/release/requirements.js +306 -0
- package/dist/{publication → release}/route.d.ts +0 -1
- package/dist/{publication → release}/route.js +24 -25
- package/dist/{publication → release}/schema.d.ts +1 -2
- package/dist/{publication → release}/schema.js +4 -5
- package/dist/release/served.d.ts +26 -0
- package/dist/release/served.js +65 -0
- package/dist/release/shape.d.ts +8 -0
- package/dist/{publication/content.js → release/shape.js} +0 -1
- package/dist/routes/admission.d.ts +1 -2
- package/dist/routes/admission.js +7 -86
- package/dist/routes/binding.d.ts +4 -5
- package/dist/routes/binding.js +11 -22
- package/dist/routes/collision.d.ts +0 -1
- package/dist/routes/collision.js +0 -1
- package/dist/routes/compiler.d.ts +4 -5
- package/dist/routes/compiler.js +20 -13
- package/dist/routes/credential.d.ts +12 -2
- package/dist/routes/credential.js +11 -4
- package/dist/routes/decode.d.ts +6 -4
- package/dist/routes/decode.js +32 -30
- package/dist/routes/deployment-retired.d.ts +30 -0
- package/dist/routes/deployment-retired.js +96 -0
- package/dist/routes/encode.d.ts +2 -3
- package/dist/routes/encode.js +22 -20
- package/dist/routes/entries.d.ts +23 -0
- package/dist/routes/entries.js +150 -0
- package/dist/routes/error-response.d.ts +0 -1
- package/dist/routes/error-response.js +0 -1
- package/dist/routes/error.d.ts +0 -1
- package/dist/routes/error.js +0 -1
- package/dist/routes/evidence.d.ts +4 -5
- package/dist/routes/evidence.js +8 -34
- package/dist/routes/header.d.ts +9 -0
- package/dist/routes/header.js +34 -0
- package/dist/routes/index.d.ts +5 -3
- package/dist/routes/index.js +5 -3
- package/dist/routes/legacy/index.d.ts +29 -0
- package/dist/routes/legacy/index.js +29 -0
- package/dist/routes/legacy/routing.d.ts +24 -0
- package/dist/routes/legacy/routing.js +45 -0
- package/dist/routes/legacy/table.d.ts +34 -0
- package/dist/routes/legacy/table.js +50 -0
- package/dist/routes/mapping.d.ts +1 -2
- package/dist/routes/mapping.js +4 -5
- package/dist/routes/match.d.ts +1 -2
- package/dist/routes/match.js +0 -1
- package/dist/routes/placement.d.ts +2 -3
- package/dist/routes/placement.js +1 -2
- package/dist/routes/plan.d.ts +6 -6
- package/dist/routes/plan.js +0 -1
- package/dist/routes/request.d.ts +5 -4
- package/dist/routes/request.js +0 -1
- package/dist/routes/reservation.d.ts +4 -3
- package/dist/routes/reservation.js +10 -4
- package/dist/routes/routing.d.ts +30 -7
- package/dist/routes/routing.js +34 -50
- package/dist/routes/scalar.d.ts +3 -4
- package/dist/routes/scalar.js +5 -6
- package/dist/routes/select.d.ts +1 -2
- package/dist/routes/select.js +0 -1
- package/dist/routes/stream.d.ts +0 -1
- package/dist/routes/stream.js +0 -1
- package/dist/routes/table.d.ts +3 -3
- package/dist/routes/table.js +0 -1
- package/dist/routes/target.d.ts +5 -1
- package/dist/routes/target.js +16 -1
- package/dist/routes/template.d.ts +0 -1
- package/dist/routes/template.js +0 -1
- package/dist/runtime/artifact.d.ts +8 -7
- package/dist/runtime/artifact.js +23 -11
- package/dist/runtime/index.d.ts +1 -2
- package/dist/runtime/index.js +1 -2
- package/dist/schema/index.d.ts +0 -1
- package/dist/schema/index.js +0 -1
- package/dist/schema/installation/codec.d.ts +9 -0
- package/dist/schema/installation/codec.js +74 -0
- package/dist/schema/installation/index.d.ts +2 -1
- package/dist/schema/installation/index.js +1 -1
- package/dist/schema/installation/introspection/codec.d.ts +14 -3
- package/dist/schema/installation/introspection/codec.js +323 -194
- package/dist/schema/installation/introspection/index.d.ts +2 -3
- package/dist/schema/installation/introspection/index.js +1 -2
- package/dist/schema/installation/introspection/result.d.ts +96 -23
- package/dist/schema/installation/introspection/result.js +0 -1
- package/dist/schema/installation/legacy/index.d.ts +39 -0
- package/dist/schema/installation/legacy/index.js +39 -0
- package/dist/schema/installation/legacy/installation.d.ts +9 -0
- package/dist/schema/installation/legacy/installation.js +28 -0
- package/dist/schema/installation/legacy/introspection.d.ts +10 -0
- package/dist/schema/installation/legacy/introspection.js +70 -0
- package/dist/schema/installation/legacy/msgpack.d.ts +1 -0
- package/dist/schema/installation/legacy/msgpack.js +143 -0
- package/dist/schema/installation/result.d.ts +9 -0
- package/dist/schema/installation/result.js +1 -0
- package/package.json +78 -37
- package/dist/artifact/index.d.ts.map +0 -1
- package/dist/artifact/index.js.map +0 -1
- package/dist/artifact/ref.d.ts.map +0 -1
- package/dist/artifact/ref.js.map +0 -1
- package/dist/codecs/codec.d.ts.map +0 -1
- package/dist/codecs/codec.js.map +0 -1
- package/dist/codecs/index.d.ts.map +0 -1
- package/dist/codecs/index.js.map +0 -1
- package/dist/codecs/json.d.ts.map +0 -1
- package/dist/codecs/json.js.map +0 -1
- package/dist/codecs/media-types.d.ts.map +0 -1
- package/dist/codecs/media-types.js.map +0 -1
- package/dist/codecs/msgpack.d.ts +0 -5
- package/dist/codecs/msgpack.d.ts.map +0 -1
- package/dist/codecs/msgpack.js +0 -51
- package/dist/codecs/msgpack.js.map +0 -1
- package/dist/errors/codes.d.ts.map +0 -1
- package/dist/errors/codes.js.map +0 -1
- package/dist/errors/http-status.d.ts.map +0 -1
- package/dist/errors/http-status.js.map +0 -1
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js.map +0 -1
- package/dist/errors/payload.d.ts.map +0 -1
- package/dist/errors/payload.js.map +0 -1
- package/dist/errors/protocol-error.d.ts.map +0 -1
- package/dist/errors/protocol-error.js.map +0 -1
- package/dist/errors/reason.d.ts.map +0 -1
- package/dist/errors/reason.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/invocation/admission.d.ts.map +0 -1
- package/dist/invocation/admission.js.map +0 -1
- package/dist/invocation/binary.d.ts.map +0 -1
- package/dist/invocation/binary.js.map +0 -1
- package/dist/invocation/binding-codecs.d.ts.map +0 -1
- package/dist/invocation/binding-codecs.js.map +0 -1
- package/dist/invocation/cancellation.d.ts.map +0 -1
- package/dist/invocation/cancellation.js.map +0 -1
- package/dist/invocation/correlation.d.ts.map +0 -1
- package/dist/invocation/correlation.js.map +0 -1
- package/dist/invocation/delegate.d.ts.map +0 -1
- package/dist/invocation/delegate.js.map +0 -1
- package/dist/invocation/http/binary.d.ts.map +0 -1
- package/dist/invocation/http/binary.js.map +0 -1
- package/dist/invocation/http/index.d.ts.map +0 -1
- package/dist/invocation/http/index.js.map +0 -1
- package/dist/invocation/http/negotiation.d.ts.map +0 -1
- package/dist/invocation/http/negotiation.js.map +0 -1
- package/dist/invocation/http/stream.d.ts.map +0 -1
- package/dist/invocation/http/stream.js.map +0 -1
- package/dist/invocation/http/trace.d.ts.map +0 -1
- package/dist/invocation/http/trace.js.map +0 -1
- package/dist/invocation/idempotency.d.ts.map +0 -1
- package/dist/invocation/idempotency.js.map +0 -1
- package/dist/invocation/identity.d.ts.map +0 -1
- package/dist/invocation/identity.js.map +0 -1
- package/dist/invocation/index.d.ts.map +0 -1
- package/dist/invocation/index.js.map +0 -1
- package/dist/invocation/miss.d.ts.map +0 -1
- package/dist/invocation/miss.js.map +0 -1
- package/dist/invocation/redirect.d.ts.map +0 -1
- package/dist/invocation/redirect.js.map +0 -1
- package/dist/invocation/request.d.ts.map +0 -1
- package/dist/invocation/request.js.map +0 -1
- package/dist/invocation/response.d.ts.map +0 -1
- package/dist/invocation/response.js.map +0 -1
- package/dist/invocation/routing.d.ts.map +0 -1
- package/dist/invocation/routing.js.map +0 -1
- package/dist/invocation/schema.d.ts.map +0 -1
- package/dist/invocation/schema.js.map +0 -1
- package/dist/invocation/service-reason.d.ts.map +0 -1
- package/dist/invocation/service-reason.js.map +0 -1
- package/dist/invocation/stale-route.d.ts.map +0 -1
- package/dist/invocation/stale-route.js.map +0 -1
- package/dist/invocation/stream.d.ts.map +0 -1
- package/dist/invocation/stream.js.map +0 -1
- package/dist/invocation/target.d.ts.map +0 -1
- package/dist/invocation/target.js.map +0 -1
- package/dist/invocation/trace.d.ts.map +0 -1
- package/dist/invocation/trace.js.map +0 -1
- package/dist/invocation/version.d.ts.map +0 -1
- package/dist/invocation/version.js.map +0 -1
- package/dist/invocation/websocket/binary.d.ts.map +0 -1
- package/dist/invocation/websocket/binary.js.map +0 -1
- package/dist/invocation/websocket/index.d.ts.map +0 -1
- package/dist/invocation/websocket/index.js.map +0 -1
- package/dist/invocation/websocket/subprotocol.d.ts.map +0 -1
- package/dist/invocation/websocket/subprotocol.js.map +0 -1
- package/dist/issuer/configuration.d.ts.map +0 -1
- package/dist/issuer/configuration.js.map +0 -1
- package/dist/issuer/error.d.ts.map +0 -1
- package/dist/issuer/error.js.map +0 -1
- package/dist/issuer/exchange.d.ts.map +0 -1
- package/dist/issuer/exchange.js.map +0 -1
- package/dist/issuer/hosted.d.ts.map +0 -1
- package/dist/issuer/hosted.js.map +0 -1
- package/dist/issuer/index.d.ts.map +0 -1
- package/dist/issuer/index.js.map +0 -1
- package/dist/issuer/key-set.d.ts.map +0 -1
- package/dist/issuer/key-set.js.map +0 -1
- package/dist/issuer/paths.d.ts.map +0 -1
- package/dist/issuer/paths.js.map +0 -1
- package/dist/issuer/url.d.ts.map +0 -1
- package/dist/issuer/url.js.map +0 -1
- package/dist/publication/bindings/callable.d.ts.map +0 -1
- package/dist/publication/bindings/callable.js +0 -32
- package/dist/publication/bindings/callable.js.map +0 -1
- package/dist/publication/bindings/index.d.ts.map +0 -1
- package/dist/publication/bindings/index.js.map +0 -1
- package/dist/publication/bindings/invocation.d.ts.map +0 -1
- package/dist/publication/bindings/invocation.js +0 -14
- package/dist/publication/bindings/invocation.js.map +0 -1
- package/dist/publication/bindings/view.d.ts +0 -8
- package/dist/publication/bindings/view.d.ts.map +0 -1
- package/dist/publication/bindings/view.js +0 -29
- package/dist/publication/bindings/view.js.map +0 -1
- package/dist/publication/bundle-admission.d.ts +0 -5
- package/dist/publication/bundle-admission.d.ts.map +0 -1
- package/dist/publication/bundle-admission.js +0 -66
- package/dist/publication/bundle-admission.js.map +0 -1
- package/dist/publication/bundle-descriptor.d.ts.map +0 -1
- package/dist/publication/bundle-descriptor.js +0 -20
- package/dist/publication/bundle-descriptor.js.map +0 -1
- package/dist/publication/bundle-evidence.d.ts +0 -4
- package/dist/publication/bundle-evidence.d.ts.map +0 -1
- package/dist/publication/bundle-evidence.js +0 -14
- package/dist/publication/bundle-evidence.js.map +0 -1
- package/dist/publication/bundle.d.ts +0 -10
- package/dist/publication/bundle.d.ts.map +0 -1
- package/dist/publication/bundle.js.map +0 -1
- package/dist/publication/content.d.ts +0 -11
- package/dist/publication/content.d.ts.map +0 -1
- package/dist/publication/content.js.map +0 -1
- package/dist/publication/declaration.d.ts.map +0 -1
- package/dist/publication/declaration.js +0 -2
- package/dist/publication/declaration.js.map +0 -1
- package/dist/publication/delivery/attestation.d.ts.map +0 -1
- package/dist/publication/delivery/attestation.js.map +0 -1
- package/dist/publication/delivery/claims.d.ts.map +0 -1
- package/dist/publication/delivery/claims.js.map +0 -1
- package/dist/publication/delivery/delivery.d.ts +0 -10
- package/dist/publication/delivery/delivery.d.ts.map +0 -1
- package/dist/publication/delivery/delivery.js.map +0 -1
- package/dist/publication/delivery/error.d.ts.map +0 -1
- package/dist/publication/delivery/error.js.map +0 -1
- package/dist/publication/delivery/index.d.ts.map +0 -1
- package/dist/publication/delivery/index.js.map +0 -1
- package/dist/publication/delivery/limits.d.ts.map +0 -1
- package/dist/publication/delivery/limits.js +0 -5
- package/dist/publication/delivery/limits.js.map +0 -1
- package/dist/publication/delivery/request.d.ts +0 -16
- package/dist/publication/delivery/request.d.ts.map +0 -1
- package/dist/publication/delivery/request.js.map +0 -1
- package/dist/publication/delivery-declaration.d.ts.map +0 -1
- package/dist/publication/delivery-declaration.js.map +0 -1
- package/dist/publication/delivery-endpoint.d.ts.map +0 -1
- package/dist/publication/delivery-endpoint.js +0 -23
- package/dist/publication/delivery-endpoint.js.map +0 -1
- package/dist/publication/error.d.ts +0 -8
- package/dist/publication/error.d.ts.map +0 -1
- package/dist/publication/error.js +0 -12
- package/dist/publication/error.js.map +0 -1
- package/dist/publication/etag.d.ts +0 -7
- package/dist/publication/etag.d.ts.map +0 -1
- package/dist/publication/etag.js.map +0 -1
- package/dist/publication/index.d.ts +0 -18
- package/dist/publication/index.d.ts.map +0 -1
- package/dist/publication/index.js +0 -11
- package/dist/publication/index.js.map +0 -1
- package/dist/publication/manifest.d.ts.map +0 -1
- package/dist/publication/manifest.js +0 -26
- package/dist/publication/manifest.js.map +0 -1
- package/dist/publication/publication.d.ts +0 -37
- package/dist/publication/publication.d.ts.map +0 -1
- package/dist/publication/publication.js +0 -131
- package/dist/publication/publication.js.map +0 -1
- package/dist/publication/reference.d.ts +0 -18
- package/dist/publication/reference.d.ts.map +0 -1
- package/dist/publication/reference.js.map +0 -1
- package/dist/publication/requirements.d.ts +0 -27
- package/dist/publication/requirements.d.ts.map +0 -1
- package/dist/publication/requirements.js +0 -185
- package/dist/publication/requirements.js.map +0 -1
- package/dist/publication/route.d.ts.map +0 -1
- package/dist/publication/route.js.map +0 -1
- package/dist/publication/schema.d.ts.map +0 -1
- package/dist/publication/schema.js.map +0 -1
- package/dist/routes/admission.d.ts.map +0 -1
- package/dist/routes/admission.js.map +0 -1
- package/dist/routes/binding.d.ts.map +0 -1
- package/dist/routes/binding.js.map +0 -1
- package/dist/routes/collision.d.ts.map +0 -1
- package/dist/routes/collision.js.map +0 -1
- package/dist/routes/compiler.d.ts.map +0 -1
- package/dist/routes/compiler.js.map +0 -1
- package/dist/routes/credential.d.ts.map +0 -1
- package/dist/routes/credential.js.map +0 -1
- package/dist/routes/decode.d.ts.map +0 -1
- package/dist/routes/decode.js.map +0 -1
- package/dist/routes/encode.d.ts.map +0 -1
- package/dist/routes/encode.js.map +0 -1
- package/dist/routes/error-response.d.ts.map +0 -1
- package/dist/routes/error-response.js.map +0 -1
- package/dist/routes/error.d.ts.map +0 -1
- package/dist/routes/error.js.map +0 -1
- package/dist/routes/evidence.d.ts.map +0 -1
- package/dist/routes/evidence.js.map +0 -1
- package/dist/routes/index.d.ts.map +0 -1
- package/dist/routes/index.js.map +0 -1
- package/dist/routes/mapping.d.ts.map +0 -1
- package/dist/routes/mapping.js.map +0 -1
- package/dist/routes/match.d.ts.map +0 -1
- package/dist/routes/match.js.map +0 -1
- package/dist/routes/placement.d.ts.map +0 -1
- package/dist/routes/placement.js.map +0 -1
- package/dist/routes/plan.d.ts.map +0 -1
- package/dist/routes/plan.js.map +0 -1
- package/dist/routes/release-unavailable.d.ts +0 -9
- package/dist/routes/release-unavailable.d.ts.map +0 -1
- package/dist/routes/release-unavailable.js +0 -33
- package/dist/routes/release-unavailable.js.map +0 -1
- package/dist/routes/request.d.ts.map +0 -1
- package/dist/routes/request.js.map +0 -1
- package/dist/routes/reservation.d.ts.map +0 -1
- package/dist/routes/reservation.js.map +0 -1
- package/dist/routes/routing.d.ts.map +0 -1
- package/dist/routes/routing.js.map +0 -1
- package/dist/routes/scalar.d.ts.map +0 -1
- package/dist/routes/scalar.js.map +0 -1
- package/dist/routes/select.d.ts.map +0 -1
- package/dist/routes/select.js.map +0 -1
- package/dist/routes/stream.d.ts.map +0 -1
- package/dist/routes/stream.js.map +0 -1
- package/dist/routes/table.d.ts.map +0 -1
- package/dist/routes/table.js.map +0 -1
- package/dist/routes/target.d.ts.map +0 -1
- package/dist/routes/target.js.map +0 -1
- package/dist/routes/template.d.ts.map +0 -1
- package/dist/routes/template.js.map +0 -1
- package/dist/runtime/artifact.d.ts.map +0 -1
- package/dist/runtime/artifact.js.map +0 -1
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js.map +0 -1
- package/dist/schema/index.d.ts.map +0 -1
- package/dist/schema/index.js.map +0 -1
- package/dist/schema/installation/index.d.ts.map +0 -1
- package/dist/schema/installation/index.js.map +0 -1
- package/dist/schema/installation/introspection/codec.d.ts.map +0 -1
- package/dist/schema/installation/introspection/codec.js.map +0 -1
- package/dist/schema/installation/introspection/index.d.ts.map +0 -1
- package/dist/schema/installation/introspection/index.js.map +0 -1
- package/dist/schema/installation/introspection/result.d.ts.map +0 -1
- package/dist/schema/installation/introspection/result.js.map +0 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import * as portable from '@astrale-os/kernel-dsl/value';
|
|
2
|
+
import { admitDigest } from '../digest.js';
|
|
3
|
+
import { servedUrl } from '../issuer.js';
|
|
4
|
+
import { admitServedContent } from '../served.js';
|
|
5
|
+
import { deepFreeze } from '../shape.js';
|
|
6
|
+
import { exact, fail, record, withPublicationError } from './error.js';
|
|
7
|
+
import { computeEtag } from './etag.js';
|
|
8
|
+
import { decodeLegacyRequirements, encodeLegacyRequirements } from './profiles.js';
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated Path of the v2/v3 Publication; use the release `PATH` (`release.json`) from
|
|
11
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
12
|
+
*/
|
|
13
|
+
export const PATH = '/.well-known/astrale/domain.json';
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated Media type of Publication v3; use the release `MEDIA_TYPE` from
|
|
16
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
17
|
+
*/
|
|
18
|
+
export const MEDIA_TYPE = 'application/vnd.astrale.domain-publication+json;v=3';
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated Media type of Publication v2; use the release `MEDIA_TYPE` from
|
|
21
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
22
|
+
*/
|
|
23
|
+
export const LEGACY_MEDIA_TYPE = 'application/vnd.astrale.domain-publication+json;v=2';
|
|
24
|
+
/**
|
|
25
|
+
* Select the media type of one v2 or v3 Publication.
|
|
26
|
+
*
|
|
27
|
+
* @deprecated Serves and retains v2/v3 Publications only; use the release `MEDIA_TYPE` from
|
|
28
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4), the one media type of a
|
|
29
|
+
* release.
|
|
30
|
+
*/
|
|
31
|
+
export function mediaType(input) {
|
|
32
|
+
return input.version === 2 ? LEGACY_MEDIA_TYPE : MEDIA_TYPE;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolve the canonical Publication URL beneath one exact HTTP(S) serving issuer.
|
|
36
|
+
*
|
|
37
|
+
* @deprecated Locates the v2/v3 Publication; use the release `url` (`release.json`) from
|
|
38
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
39
|
+
*/
|
|
40
|
+
export function url(input) {
|
|
41
|
+
return withPublicationError(() => servedUrl(input, PATH));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @deprecated Seals a v2/v3 Publication; use the release `seal` from
|
|
45
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
46
|
+
*/
|
|
47
|
+
export function seal(input) {
|
|
48
|
+
return withPublicationError(() => {
|
|
49
|
+
const canonical = withoutEtag(acceptPublication({ ...input, etag: 'canonicalizing' }, 'seal'));
|
|
50
|
+
return acceptPublication({ ...canonical, etag: computeEtag(canonical) }, 'canonical');
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* @deprecated Admits a v2/v3 Publication; use the release `accept` from
|
|
55
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
56
|
+
*/
|
|
57
|
+
export function accept(input) {
|
|
58
|
+
return withPublicationError(() => {
|
|
59
|
+
const publication = acceptPublication(input, 'wire');
|
|
60
|
+
if (publication.etag !== computeEtag(withoutEtag(publication))) {
|
|
61
|
+
fail('PUBLICATION_ETAG_MISMATCH', 'Publication ETag does not match its canonical content.');
|
|
62
|
+
}
|
|
63
|
+
return publication;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* @deprecated Encodes a v2/v3 Publication byte-identically to its accepted wire form; use the
|
|
68
|
+
* release `encode` from `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
69
|
+
*/
|
|
70
|
+
export function encode(input) {
|
|
71
|
+
const wire = input.version === 2
|
|
72
|
+
? { ...input, requirements: encodeLegacyRequirements(input.requirements) }
|
|
73
|
+
: input;
|
|
74
|
+
return portable.json.encode(wire);
|
|
75
|
+
}
|
|
76
|
+
function acceptPublication(input, mode) {
|
|
77
|
+
const value = record(input, 'PUBLICATION_INVALID', 'Expected a Publication object.');
|
|
78
|
+
exact(value, [
|
|
79
|
+
'format',
|
|
80
|
+
'version',
|
|
81
|
+
'origin',
|
|
82
|
+
'identity',
|
|
83
|
+
'etag',
|
|
84
|
+
'schema',
|
|
85
|
+
'requirements',
|
|
86
|
+
'manifest',
|
|
87
|
+
'bindings',
|
|
88
|
+
'routes',
|
|
89
|
+
'delivery',
|
|
90
|
+
], 'PUBLICATION_INVALID');
|
|
91
|
+
if (value.format !== 'astrale.domain.publication' ||
|
|
92
|
+
(value.version !== 2 && value.version !== 3)) {
|
|
93
|
+
fail('PUBLICATION_INVALID', 'Unsupported Publication format or version.');
|
|
94
|
+
}
|
|
95
|
+
// Version 2 is read-only: retained Publications keep their exact bytes and ETag, but no new one
|
|
96
|
+
// is sealed.
|
|
97
|
+
if (value.version !== 3 && mode === 'seal') {
|
|
98
|
+
fail('PUBLICATION_INVALID', 'Only Publication version 3 can be sealed.');
|
|
99
|
+
}
|
|
100
|
+
const served = admitServedContent(value, {
|
|
101
|
+
views: mode === 'seal' ? 'canonicalize' : 'admit',
|
|
102
|
+
...(value.version === 2 && mode === 'wire' ? { requirements: decodeLegacyRequirements } : {}),
|
|
103
|
+
});
|
|
104
|
+
const admittedEtag = mode === 'wire' ? admitDigest(value.etag) : value.etag;
|
|
105
|
+
if (typeof admittedEtag !== 'string')
|
|
106
|
+
fail('PUBLICATION_INVALID', 'Publication ETag is missing.');
|
|
107
|
+
return deepFreeze({
|
|
108
|
+
format: 'astrale.domain.publication',
|
|
109
|
+
version: value.version,
|
|
110
|
+
origin: served.origin,
|
|
111
|
+
identity: served.identity,
|
|
112
|
+
etag: admittedEtag,
|
|
113
|
+
schema: served.schema,
|
|
114
|
+
requirements: served.requirements,
|
|
115
|
+
...(served.manifest === undefined ? {} : { manifest: served.manifest }),
|
|
116
|
+
bindings: served.bindings,
|
|
117
|
+
routes: served.routes,
|
|
118
|
+
...(served.delivery === undefined ? {} : { delivery: served.delivery }),
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
function withoutEtag(input) {
|
|
122
|
+
const { etag: _etag, ...content } = input;
|
|
123
|
+
return content;
|
|
124
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Revision } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
|
+
import { type Key } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
|
+
import type { Etag } from './etag.js';
|
|
4
|
+
import type { Publication } from './publication.js';
|
|
5
|
+
/**
|
|
6
|
+
* Compact untrusted projection that witnesses one exact Publication.
|
|
7
|
+
*
|
|
8
|
+
* @deprecated Witnesses a v2/v3 Publication; use `ReleaseRef` from
|
|
9
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
10
|
+
*/
|
|
11
|
+
export interface PublicationRef {
|
|
12
|
+
readonly origin: Key.Origin;
|
|
13
|
+
readonly identity: Publication['identity'];
|
|
14
|
+
readonly revision: Revision;
|
|
15
|
+
readonly etag: Etag;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated Relation between two `PublicationRef`s; use `ReleaseReferenceRelation` from
|
|
19
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
20
|
+
*/
|
|
21
|
+
export type PublicationReferenceRelation = 'exact' | 'same-schema' | 'schema-drift' | 'identity-drift' | 'origin-drift';
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated Projects a v2/v3 Publication; use the release `reference` from
|
|
24
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
25
|
+
*/
|
|
26
|
+
export declare function reference(input: Publication): PublicationRef;
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated Admits a v2/v3 Publication reference; use the release `acceptReference` from
|
|
29
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
30
|
+
*/
|
|
31
|
+
export declare function acceptReference(input: unknown): PublicationRef;
|
|
32
|
+
/**
|
|
33
|
+
* @deprecated Classifies two `PublicationRef`s; use the release `compareReferences` from
|
|
34
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
35
|
+
*/
|
|
36
|
+
export declare function compareReferences(input: PublicationRef, expected: PublicationRef): PublicationReferenceRelation;
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated Compares a v2/v3 Publication with a `PublicationRef`; use
|
|
39
|
+
* `compareReferences(reference(release), expected)` from `@astrale-os/kernel-protocol/release`
|
|
40
|
+
* (added with `DomainRelease` v4).
|
|
41
|
+
*/
|
|
42
|
+
export declare function compareReference(input: Publication, expected: PublicationRef): PublicationReferenceRelation;
|
|
43
|
+
/**
|
|
44
|
+
* @deprecated Matches a v2/v3 Publication with a `PublicationRef`; use the release
|
|
45
|
+
* `matchesReference` from `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
46
|
+
*/
|
|
47
|
+
export declare function matchesReference(input: Publication, expected: PublicationRef): boolean;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { AuthValueError } from '@astrale-os/kernel-core/auth/error';
|
|
2
2
|
import { accept as acceptIssuerId } from '@astrale-os/kernel-core/auth/issuer';
|
|
3
3
|
import { patterns } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { admitDigest } from '../digest.js';
|
|
5
|
+
import { deepFreeze } from '../shape.js';
|
|
6
|
+
import { exact, fail, record, withPublicationError } from './error.js';
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated Projects a v2/v3 Publication; use the release `reference` from
|
|
9
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
10
|
+
*/
|
|
7
11
|
export function reference(input) {
|
|
8
12
|
return deepFreeze({
|
|
9
13
|
origin: input.origin,
|
|
@@ -12,7 +16,14 @@ export function reference(input) {
|
|
|
12
16
|
etag: input.etag,
|
|
13
17
|
});
|
|
14
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated Admits a v2/v3 Publication reference; use the release `acceptReference` from
|
|
21
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
22
|
+
*/
|
|
15
23
|
export function acceptReference(input) {
|
|
24
|
+
return withPublicationError(() => admitReference(input));
|
|
25
|
+
}
|
|
26
|
+
function admitReference(input) {
|
|
16
27
|
const value = record(input, 'PUBLICATION_INVALID', 'Publication reference is invalid.');
|
|
17
28
|
exact(value, ['origin', 'identity', 'revision', 'etag'], 'PUBLICATION_INVALID');
|
|
18
29
|
if (typeof value.origin !== 'string' || !patterns.origin.test(value.origin)) {
|
|
@@ -35,6 +46,10 @@ export function acceptReference(input) {
|
|
|
35
46
|
etag: admitDigest(value.etag),
|
|
36
47
|
});
|
|
37
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* @deprecated Classifies two `PublicationRef`s; use the release `compareReferences` from
|
|
51
|
+
* `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
52
|
+
*/
|
|
38
53
|
export function compareReferences(input, expected) {
|
|
39
54
|
if (input.origin !== expected.origin)
|
|
40
55
|
return 'origin-drift';
|
|
@@ -46,9 +61,18 @@ export function compareReferences(input, expected) {
|
|
|
46
61
|
return 'schema-drift';
|
|
47
62
|
return input.etag === expected.etag ? 'exact' : 'same-schema';
|
|
48
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* @deprecated Compares a v2/v3 Publication with a `PublicationRef`; use
|
|
66
|
+
* `compareReferences(reference(release), expected)` from `@astrale-os/kernel-protocol/release`
|
|
67
|
+
* (added with `DomainRelease` v4).
|
|
68
|
+
*/
|
|
49
69
|
export function compareReference(input, expected) {
|
|
50
70
|
return compareReferences(reference(input), expected);
|
|
51
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* @deprecated Matches a v2/v3 Publication with a `PublicationRef`; use the release
|
|
74
|
+
* `matchesReference` from `@astrale-os/kernel-protocol/release` (added with `DomainRelease` v4).
|
|
75
|
+
*/
|
|
52
76
|
export function matchesReference(input, expected) {
|
|
53
77
|
return compareReference(input, expected) === 'exact';
|
|
54
78
|
}
|
|
@@ -66,4 +90,3 @@ function acceptIssuer(input) {
|
|
|
66
90
|
throw cause;
|
|
67
91
|
}
|
|
68
92
|
}
|
|
69
|
-
//# sourceMappingURL=reference.js.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { schema } from '@astrale-os/kernel-dsl/v1';
|
|
2
|
+
import * as requirements from '../requirements.js';
|
|
3
|
+
/** @deprecated Use `NonEmpty` from `@astrale-os/kernel-protocol/release`. */
|
|
4
|
+
export type NonEmpty<Value> = requirements.NonEmpty<Value>;
|
|
5
|
+
/** @deprecated Use `ClassOperation` from `@astrale-os/kernel-protocol/release`. */
|
|
6
|
+
export type ClassOperation = requirements.ClassOperation;
|
|
7
|
+
/** @deprecated Use `ClassCapabilityRequirement` from `@astrale-os/kernel-protocol/release`. */
|
|
8
|
+
export type ClassCapabilityRequirement = requirements.ClassCapabilityRequirement;
|
|
9
|
+
/** @deprecated Use `CapabilityAuthorityRequirements` from `@astrale-os/kernel-protocol/release`. */
|
|
10
|
+
export type CapabilityAuthorityRequirements = requirements.CapabilityAuthorityRequirements;
|
|
11
|
+
/** @deprecated Use `CapabilityRequirements` from `@astrale-os/kernel-protocol/release`. */
|
|
12
|
+
export type CapabilityRequirements = requirements.CapabilityRequirements;
|
|
13
|
+
/** @deprecated Use `CoreCapabilityRequirement` from `@astrale-os/kernel-protocol/release`. */
|
|
14
|
+
export type CoreCapabilityRequirement = requirements.CoreCapabilityRequirement;
|
|
15
|
+
/** @deprecated Use `Requirements` from `@astrale-os/kernel-protocol/release`. */
|
|
16
|
+
export type PublicationRequirements = requirements.Requirements;
|
|
17
|
+
/**
|
|
18
|
+
* Admit the exact closed canonical requirements object used by Publication v3.
|
|
19
|
+
*
|
|
20
|
+
* @deprecated Use `admitRequirements` from `@astrale-os/kernel-protocol/release`, which reports
|
|
21
|
+
* `ReleaseError`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function admitRequirements(input: unknown): PublicationRequirements;
|
|
24
|
+
/**
|
|
25
|
+
* Bind explicit capability targets to exact functional dependencies in the bundle closure.
|
|
26
|
+
*
|
|
27
|
+
* @deprecated Use `validateRequirements` from `@astrale-os/kernel-protocol/release`, which reports
|
|
28
|
+
* `ReleaseError`.
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateRequirements(root: schema.DomainSchema, closure: readonly schema.DomainSchema[], input: PublicationRequirements): void;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as requirements from '../requirements.js';
|
|
2
|
+
import { withPublicationError } from './error.js';
|
|
3
|
+
/**
|
|
4
|
+
* Admit the exact closed canonical requirements object used by Publication v3.
|
|
5
|
+
*
|
|
6
|
+
* @deprecated Use `admitRequirements` from `@astrale-os/kernel-protocol/release`, which reports
|
|
7
|
+
* `ReleaseError`.
|
|
8
|
+
*/
|
|
9
|
+
export function admitRequirements(input) {
|
|
10
|
+
return withPublicationError(() => requirements.admitRequirements(input));
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Bind explicit capability targets to exact functional dependencies in the bundle closure.
|
|
14
|
+
*
|
|
15
|
+
* @deprecated Use `validateRequirements` from `@astrale-os/kernel-protocol/release`, which reports
|
|
16
|
+
* `ReleaseError`.
|
|
17
|
+
*/
|
|
18
|
+
export function validateRequirements(root, closure, input) {
|
|
19
|
+
withPublicationError(() => requirements.validateRequirements(root, closure, input));
|
|
20
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type ViewRef } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
2
|
export interface Manifest {
|
|
3
3
|
readonly logo?: string;
|
|
4
|
-
readonly entrypoint?:
|
|
4
|
+
readonly entrypoint?: ViewRef;
|
|
5
5
|
}
|
|
6
6
|
export declare function admitManifest(input: unknown): Manifest | undefined;
|
|
7
|
-
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { acceptDefinitionRef } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
|
+
import { fail } from './error.js';
|
|
3
|
+
import { exact, record } from './shape.js';
|
|
4
|
+
export function admitManifest(input) {
|
|
5
|
+
if (input === undefined)
|
|
6
|
+
return undefined;
|
|
7
|
+
const value = record(input, 'RELEASE_INVALID', 'Manifest is invalid.');
|
|
8
|
+
exact(value, ['logo', 'entrypoint'], 'RELEASE_INVALID');
|
|
9
|
+
if (value.logo !== undefined && typeof value.logo !== 'string') {
|
|
10
|
+
fail('RELEASE_INVALID', 'Manifest logo must be a string.');
|
|
11
|
+
}
|
|
12
|
+
let entrypoint;
|
|
13
|
+
if (value.entrypoint !== undefined) {
|
|
14
|
+
let ref;
|
|
15
|
+
try {
|
|
16
|
+
ref = acceptDefinitionRef(value.entrypoint);
|
|
17
|
+
}
|
|
18
|
+
catch (cause) {
|
|
19
|
+
return fail('RELEASE_INVALID', 'Manifest entrypoint must be a root View reference.', cause);
|
|
20
|
+
}
|
|
21
|
+
if (ref.kind !== 'view') {
|
|
22
|
+
fail('RELEASE_INVALID', 'Manifest entrypoint must be a root View reference.');
|
|
23
|
+
}
|
|
24
|
+
entrypoint = ref;
|
|
25
|
+
}
|
|
26
|
+
return Object.freeze({
|
|
27
|
+
...(value.logo === undefined ? {} : { logo: value.logo }),
|
|
28
|
+
...(entrypoint === undefined ? {} : { entrypoint }),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Revision } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
|
+
import { type Key } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
|
+
import type { ReleaseDigest } from './digest.js';
|
|
4
|
+
import type { DomainRelease } from './release.js';
|
|
5
|
+
/** Compact untrusted projection that witnesses one exact `DomainRelease`. */
|
|
6
|
+
export interface ReleaseRef {
|
|
7
|
+
readonly origin: Key.Origin;
|
|
8
|
+
readonly identity: DomainRelease['identity'];
|
|
9
|
+
readonly revision: Revision;
|
|
10
|
+
readonly digest: ReleaseDigest;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Relation between two `ReleaseRef`s. A release digest commits to identity, schema and build, so
|
|
14
|
+
* within one origin anything but the exact reference designates another release.
|
|
15
|
+
*/
|
|
16
|
+
export type ReleaseReferenceRelation = 'exact' | 'release-drift' | 'origin-drift';
|
|
17
|
+
export declare function reference(input: DomainRelease): ReleaseRef;
|
|
18
|
+
export declare function acceptReference(input: unknown): ReleaseRef;
|
|
19
|
+
/**
|
|
20
|
+
* Classify a received reference against the expected one. A different origin is origin drift.
|
|
21
|
+
* Within one origin the reference is exact only when every coordinate equals the expected one: for
|
|
22
|
+
* references of admitted releases that is digest equality, and a received reference that names
|
|
23
|
+
* the expected digest beside any other coordinate witnesses no release, so it is release drift.
|
|
24
|
+
*/
|
|
25
|
+
export declare function compareReferences(input: ReleaseRef, expected: ReleaseRef): ReleaseReferenceRelation;
|
|
26
|
+
export declare function matchesReference(input: DomainRelease, expected: ReleaseRef): boolean;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { AuthValueError } from '@astrale-os/kernel-core/auth/error';
|
|
2
|
+
import { accept as acceptIssuerId } from '@astrale-os/kernel-core/auth/issuer';
|
|
3
|
+
import { patterns } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
4
|
+
import { admitDigest } from './digest.js';
|
|
5
|
+
import { fail } from './error.js';
|
|
6
|
+
import { deepFreeze, exact, record } from './shape.js';
|
|
7
|
+
export function reference(input) {
|
|
8
|
+
return deepFreeze({
|
|
9
|
+
origin: input.origin,
|
|
10
|
+
identity: { ...input.identity },
|
|
11
|
+
revision: input.schema.revision,
|
|
12
|
+
digest: input.digest,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
export function acceptReference(input) {
|
|
16
|
+
const value = record(input, 'RELEASE_INVALID', 'Release reference is invalid.');
|
|
17
|
+
exact(value, ['origin', 'identity', 'revision', 'digest'], 'RELEASE_INVALID');
|
|
18
|
+
if (typeof value.origin !== 'string' || !patterns.origin.test(value.origin)) {
|
|
19
|
+
fail('RELEASE_INVALID', 'Release reference origin is invalid.');
|
|
20
|
+
}
|
|
21
|
+
const origin = value.origin;
|
|
22
|
+
const identity = record(value.identity, 'RELEASE_INVALID', 'Release reference identity is invalid.');
|
|
23
|
+
exact(identity, ['issuer', 'subject'], 'RELEASE_INVALID');
|
|
24
|
+
const issuer = acceptIssuer(identity.issuer);
|
|
25
|
+
if (identity.subject !== origin) {
|
|
26
|
+
fail('RELEASE_INVALID', 'Release reference subject must equal its root origin.');
|
|
27
|
+
}
|
|
28
|
+
if (typeof value.revision !== 'string' || !patterns.revision.test(value.revision)) {
|
|
29
|
+
fail('RELEASE_INVALID', 'Release reference revision is invalid.');
|
|
30
|
+
}
|
|
31
|
+
return deepFreeze({
|
|
32
|
+
origin,
|
|
33
|
+
identity: { issuer, subject: origin },
|
|
34
|
+
revision: value.revision,
|
|
35
|
+
digest: admitDigest(value.digest),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Classify a received reference against the expected one. A different origin is origin drift.
|
|
40
|
+
* Within one origin the reference is exact only when every coordinate equals the expected one: for
|
|
41
|
+
* references of admitted releases that is digest equality, and a received reference that names
|
|
42
|
+
* the expected digest beside any other coordinate witnesses no release, so it is release drift.
|
|
43
|
+
*/
|
|
44
|
+
export function compareReferences(input, expected) {
|
|
45
|
+
if (input.origin !== expected.origin)
|
|
46
|
+
return 'origin-drift';
|
|
47
|
+
return input.digest === expected.digest &&
|
|
48
|
+
input.revision === expected.revision &&
|
|
49
|
+
input.identity.issuer === expected.identity.issuer &&
|
|
50
|
+
input.identity.subject === expected.identity.subject
|
|
51
|
+
? 'exact'
|
|
52
|
+
: 'release-drift';
|
|
53
|
+
}
|
|
54
|
+
export function matchesReference(input, expected) {
|
|
55
|
+
return compareReferences(reference(input), expected) === 'exact';
|
|
56
|
+
}
|
|
57
|
+
function acceptIssuer(input) {
|
|
58
|
+
if (typeof input !== 'string') {
|
|
59
|
+
fail('RELEASE_INVALID', 'Release reference issuer is invalid.');
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
return acceptIssuerId(input);
|
|
63
|
+
}
|
|
64
|
+
catch (cause) {
|
|
65
|
+
if (cause instanceof AuthValueError) {
|
|
66
|
+
return fail('RELEASE_INVALID', 'Release reference issuer is invalid.', cause);
|
|
67
|
+
}
|
|
68
|
+
throw cause;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { IssuerId } from '@astrale-os/kernel-core/auth/issuer';
|
|
2
|
+
import type { Key } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
|
+
import type { CallableBinding, ViewBinding } from './bindings/index.js';
|
|
4
|
+
import type { Build } from './build.js';
|
|
5
|
+
import type { Endpoint as DeliveryEndpoint } from './delivery-endpoint.js';
|
|
6
|
+
import type { ReleaseDigest } from './digest.js';
|
|
7
|
+
import type { Manifest } from './manifest.js';
|
|
8
|
+
import type { Requirements } from './requirements.js';
|
|
9
|
+
import type { HttpRoute } from './route.js';
|
|
10
|
+
import type { Schema } from './schema.js';
|
|
11
|
+
/** Path of the release a deployment serves beneath its serving issuer. */
|
|
12
|
+
export declare const PATH: '/.well-known/astrale/release.json';
|
|
13
|
+
/** Media type of `DomainRelease` v4. */
|
|
14
|
+
export declare const MEDIA_TYPE: 'application/vnd.astrale.domain-release+json;v=4';
|
|
15
|
+
/** Resolve the canonical release URL beneath one exact HTTP(S) serving issuer, keeping its path. */
|
|
16
|
+
export declare function url(issuer: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Immutable deployment document pinned by the Kernel. Its digest covers the schema, serving
|
|
19
|
+
* identity and code through the build digest; `version` identifies the document format.
|
|
20
|
+
*/
|
|
21
|
+
export interface DomainRelease {
|
|
22
|
+
readonly format: 'astrale.domain.release';
|
|
23
|
+
readonly version: 4;
|
|
24
|
+
readonly origin: Key.Origin;
|
|
25
|
+
readonly identity: {
|
|
26
|
+
readonly issuer: IssuerId;
|
|
27
|
+
/** Always the root origin. */
|
|
28
|
+
readonly subject: string;
|
|
29
|
+
};
|
|
30
|
+
readonly digest: ReleaseDigest;
|
|
31
|
+
readonly build: Build;
|
|
32
|
+
readonly schema: Schema;
|
|
33
|
+
readonly requirements: Requirements;
|
|
34
|
+
readonly manifest?: Manifest;
|
|
35
|
+
readonly bindings: {
|
|
36
|
+
readonly callables: readonly CallableBinding[];
|
|
37
|
+
readonly views: readonly ViewBinding[];
|
|
38
|
+
};
|
|
39
|
+
readonly routes: readonly HttpRoute[];
|
|
40
|
+
readonly delivery?: DeliveryEndpoint;
|
|
41
|
+
}
|
|
42
|
+
/** Content of a release before its digest is computed. */
|
|
43
|
+
export type Content = Omit<DomainRelease, 'digest'>;
|
|
44
|
+
/**
|
|
45
|
+
* Release digest of canonical release content: SHA-256 of its canonical JSON. The content must be
|
|
46
|
+
* exactly what `seal` produces, a sealed release without its digest; content that `seal` would
|
|
47
|
+
* canonicalize or refuse throws `ReleaseError` instead of yielding a digest no decoder accepts.
|
|
48
|
+
* Authored content gets its digest from `seal(content).digest`.
|
|
49
|
+
*/
|
|
50
|
+
export declare function digestOf(input: Content): ReleaseDigest;
|
|
51
|
+
/** Validate release content, canonicalize its View bindings, and set its release digest. */
|
|
52
|
+
export declare function seal(input: Content): DomainRelease;
|
|
53
|
+
/**
|
|
54
|
+
* Admit one wire release: exact fields at every level, every value in the canonical form `seal`
|
|
55
|
+
* produces, and a digest matching its content. One release therefore has exactly one wire
|
|
56
|
+
* document: `encode(accept(input))` is the canonical JSON of `input`.
|
|
57
|
+
*/
|
|
58
|
+
export declare function accept(input: unknown): DomainRelease;
|
|
59
|
+
/** Encode one release as its canonical JSON bytes. */
|
|
60
|
+
export declare function encode(input: DomainRelease): Uint8Array;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import * as portable from '@astrale-os/kernel-dsl/value';
|
|
2
|
+
import { admitBuild } from './build.js';
|
|
3
|
+
import { admitDigest, sha256Hex } from './digest.js';
|
|
4
|
+
import { fail } from './error.js';
|
|
5
|
+
import { servedUrl } from './issuer.js';
|
|
6
|
+
import { admitServedContent } from './served.js';
|
|
7
|
+
import { deepFreeze, exact, record } from './shape.js';
|
|
8
|
+
/** Path of the release a deployment serves beneath its serving issuer. */
|
|
9
|
+
export const PATH = '/.well-known/astrale/release.json';
|
|
10
|
+
/** Media type of `DomainRelease` v4. */
|
|
11
|
+
export const MEDIA_TYPE = 'application/vnd.astrale.domain-release+json;v=4';
|
|
12
|
+
/** Resolve the canonical release URL beneath one exact HTTP(S) serving issuer, keeping its path. */
|
|
13
|
+
export function url(issuer) {
|
|
14
|
+
return servedUrl(issuer, PATH);
|
|
15
|
+
}
|
|
16
|
+
const CONTENT_FIELDS = [
|
|
17
|
+
'format',
|
|
18
|
+
'version',
|
|
19
|
+
'origin',
|
|
20
|
+
'identity',
|
|
21
|
+
'build',
|
|
22
|
+
'schema',
|
|
23
|
+
'requirements',
|
|
24
|
+
'manifest',
|
|
25
|
+
'bindings',
|
|
26
|
+
'routes',
|
|
27
|
+
'delivery',
|
|
28
|
+
];
|
|
29
|
+
/**
|
|
30
|
+
* Release digest of canonical release content: SHA-256 of its canonical JSON. The content must be
|
|
31
|
+
* exactly what `seal` produces, a sealed release without its digest; content that `seal` would
|
|
32
|
+
* canonicalize or refuse throws `ReleaseError` instead of yielding a digest no decoder accepts.
|
|
33
|
+
* Authored content gets its digest from `seal(content).digest`.
|
|
34
|
+
*/
|
|
35
|
+
export function digestOf(input) {
|
|
36
|
+
const value = record(input, 'RELEASE_INVALID', 'Expected release content.');
|
|
37
|
+
exact(value, CONTENT_FIELDS, 'RELEASE_INVALID');
|
|
38
|
+
return hash(admitCanonical(value));
|
|
39
|
+
}
|
|
40
|
+
/** Validate release content, canonicalize its View bindings, and set its release digest. */
|
|
41
|
+
export function seal(input) {
|
|
42
|
+
const authored = record(input, 'RELEASE_INVALID', 'Expected release content.');
|
|
43
|
+
exact(authored, CONTENT_FIELDS, 'RELEASE_INVALID');
|
|
44
|
+
const canonical = admitContent(admitContent(authored, 'canonicalize'), 'admit');
|
|
45
|
+
return release(canonical, hash(canonical));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Admit one wire release: exact fields at every level, every value in the canonical form `seal`
|
|
49
|
+
* produces, and a digest matching its content. One release therefore has exactly one wire
|
|
50
|
+
* document: `encode(accept(input))` is the canonical JSON of `input`.
|
|
51
|
+
*/
|
|
52
|
+
export function accept(input) {
|
|
53
|
+
const value = record(input, 'RELEASE_INVALID', 'Expected a DomainRelease object.');
|
|
54
|
+
exact(value, [...CONTENT_FIELDS, 'digest'], 'RELEASE_INVALID');
|
|
55
|
+
const { digest: received, ...wire } = value;
|
|
56
|
+
const content = admitCanonical(wire);
|
|
57
|
+
const digest = admitDigest(received);
|
|
58
|
+
if (digest !== hash(content)) {
|
|
59
|
+
fail('RELEASE_DIGEST_MISMATCH', 'Release digest does not match its canonical content.');
|
|
60
|
+
}
|
|
61
|
+
return release(content, digest);
|
|
62
|
+
}
|
|
63
|
+
/** Encode one release as its canonical JSON bytes. */
|
|
64
|
+
export function encode(input) {
|
|
65
|
+
return portable.json.encode(input);
|
|
66
|
+
}
|
|
67
|
+
function admitContent(value, views) {
|
|
68
|
+
if (value.format !== 'astrale.domain.release' || value.version !== 4) {
|
|
69
|
+
fail('RELEASE_INVALID', 'Unsupported release format or version.');
|
|
70
|
+
}
|
|
71
|
+
const served = admitServedContent(value, { views });
|
|
72
|
+
const build = admitBuild(value.build);
|
|
73
|
+
return deepFreeze({
|
|
74
|
+
format: 'astrale.domain.release',
|
|
75
|
+
version: 4,
|
|
76
|
+
origin: served.origin,
|
|
77
|
+
identity: served.identity,
|
|
78
|
+
build,
|
|
79
|
+
schema: served.schema,
|
|
80
|
+
requirements: served.requirements,
|
|
81
|
+
...(served.manifest === undefined ? {} : { manifest: served.manifest }),
|
|
82
|
+
bindings: served.bindings,
|
|
83
|
+
routes: served.routes,
|
|
84
|
+
...(served.delivery === undefined ? {} : { delivery: served.delivery }),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/** Shared validators normalize legacy values; releases require their exact canonical spelling. */
|
|
88
|
+
function admitCanonical(value) {
|
|
89
|
+
const content = admitContent(value, 'admit');
|
|
90
|
+
const canonical = portable.json.serialize(content);
|
|
91
|
+
let received;
|
|
92
|
+
try {
|
|
93
|
+
received = portable.json.serialize(value);
|
|
94
|
+
}
|
|
95
|
+
catch (cause) {
|
|
96
|
+
if (cause instanceof portable.BoundaryError) {
|
|
97
|
+
return fail('RELEASE_INVALID', 'Release content is not in canonical form.', cause);
|
|
98
|
+
}
|
|
99
|
+
throw cause;
|
|
100
|
+
}
|
|
101
|
+
if (received !== canonical)
|
|
102
|
+
fail('RELEASE_INVALID', 'Release content is not in canonical form.');
|
|
103
|
+
return content;
|
|
104
|
+
}
|
|
105
|
+
function hash(content) {
|
|
106
|
+
return `sha256:${sha256Hex(portable.json.encode(content))}`;
|
|
107
|
+
}
|
|
108
|
+
function release(content, digest) {
|
|
109
|
+
return deepFreeze({
|
|
110
|
+
format: content.format,
|
|
111
|
+
version: content.version,
|
|
112
|
+
origin: content.origin,
|
|
113
|
+
identity: content.identity,
|
|
114
|
+
digest,
|
|
115
|
+
build: content.build,
|
|
116
|
+
schema: content.schema,
|
|
117
|
+
requirements: content.requirements,
|
|
118
|
+
...(content.manifest === undefined ? {} : { manifest: content.manifest }),
|
|
119
|
+
bindings: content.bindings,
|
|
120
|
+
routes: content.routes,
|
|
121
|
+
...(content.delivery === undefined ? {} : { delivery: content.delivery }),
|
|
122
|
+
});
|
|
123
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { AuthorityOperation } from '@astrale-os/kernel-core/schema/authority/operation';
|
|
2
|
+
import type { schema as schemaLanguage } from '@astrale-os/kernel-dsl/v1';
|
|
3
|
+
import type { ClassRef, CoreRef, Key as SemanticKey } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
4
|
+
export type NonEmpty<Value> = readonly [Value, ...Value[]];
|
|
5
|
+
export declare const ClassOperationOrder: readonly ["create", "read", "traverse", "update", "delete"];
|
|
6
|
+
export type ClassOperation = (typeof ClassOperationOrder)[number];
|
|
7
|
+
export interface ClassCapabilityRequirement {
|
|
8
|
+
readonly class: ClassRef;
|
|
9
|
+
readonly operations: NonEmpty<ClassOperation>;
|
|
10
|
+
}
|
|
11
|
+
export interface CapabilityAuthorityRequirements {
|
|
12
|
+
readonly grant?: NonEmpty<AuthorityOperation>;
|
|
13
|
+
readonly revoke?: NonEmpty<AuthorityOperation>;
|
|
14
|
+
}
|
|
15
|
+
export interface CapabilityRequirements {
|
|
16
|
+
readonly functions?: NonEmpty<SemanticKey.Callable>;
|
|
17
|
+
readonly classes?: NonEmpty<ClassCapabilityRequirement>;
|
|
18
|
+
readonly authority?: CapabilityAuthorityRequirements;
|
|
19
|
+
readonly core?: NonEmpty<CoreCapabilityRequirement>;
|
|
20
|
+
}
|
|
21
|
+
/** Installation-owned authority materialized onto one local Core Identity. */
|
|
22
|
+
export interface CoreCapabilityRequirement {
|
|
23
|
+
readonly subject: CoreRef;
|
|
24
|
+
readonly functions?: NonEmpty<SemanticKey.Callable>;
|
|
25
|
+
readonly classes?: NonEmpty<ClassCapabilityRequirement>;
|
|
26
|
+
readonly authority?: CapabilityAuthorityRequirements;
|
|
27
|
+
}
|
|
28
|
+
export interface Requirements {
|
|
29
|
+
readonly capabilities: CapabilityRequirements;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Admit the exact closed canonical requirements object, the `core` form Publication v3 introduced.
|
|
33
|
+
*/
|
|
34
|
+
export declare function admitRequirements(input: unknown): Requirements;
|
|
35
|
+
/** Bind explicit capability targets to exact functional dependencies in the bundle closure. */
|
|
36
|
+
export declare function validateRequirements(root: schemaLanguage.DomainSchema, closure: readonly schemaLanguage.DomainSchema[], requirements: Requirements): void;
|
|
37
|
+
/**
|
|
38
|
+
* Distinct Function, Method and Class Keys, including Core-scoped targets, in code-unit order.
|
|
39
|
+
* Core subjects and authority operations contribute no Keys. Results may span multiple origins.
|
|
40
|
+
*/
|
|
41
|
+
export declare function capabilityKeys(capabilities: CapabilityRequirements): readonly SemanticKey[];
|