@astrale-os/kernel-protocol 0.5.0-beta.4 → 0.5.0-beta.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/artifact/index.d.ts +0 -1
- package/dist/artifact/index.js +0 -1
- package/dist/artifact/ref.d.ts +0 -1
- package/dist/artifact/ref.js +0 -1
- package/dist/codecs/codec.d.ts +0 -1
- package/dist/codecs/codec.js +0 -1
- package/dist/codecs/index.d.ts +0 -1
- package/dist/codecs/index.js +0 -1
- package/dist/codecs/json.d.ts +0 -1
- package/dist/codecs/json.js +0 -1
- package/dist/codecs/media-types.d.ts +0 -1
- package/dist/codecs/media-types.js +0 -1
- package/dist/codecs/msgpack.d.ts +0 -1
- package/dist/codecs/msgpack.js +1 -5
- 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 +0 -1
- package/dist/errors/index.js +0 -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/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/invocation/admission.d.ts +0 -1
- package/dist/invocation/admission.js +2 -6
- package/dist/invocation/binary.d.ts +1 -1
- package/dist/invocation/binary.js +14 -2
- package/dist/invocation/binding-codecs.d.ts +0 -1
- package/dist/invocation/binding-codecs.js +0 -1
- 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 +0 -1
- package/dist/invocation/delegate.js +0 -1
- package/dist/invocation/http/binary.d.ts +3 -2
- package/dist/invocation/http/binary.js +4 -2
- package/dist/invocation/http/index.d.ts +1 -2
- package/dist/invocation/http/index.js +1 -2
- package/dist/invocation/http/negotiation.d.ts +0 -1
- package/dist/invocation/http/negotiation.js +0 -1
- 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 +1 -2
- package/dist/invocation/index.js +1 -2
- package/dist/invocation/miss.d.ts +0 -1
- package/dist/invocation/miss.js +0 -1
- package/dist/invocation/redirect.d.ts +0 -1
- package/dist/invocation/redirect.js +0 -1
- package/dist/invocation/request.d.ts +0 -1
- package/dist/invocation/request.js +0 -1
- package/dist/invocation/response.d.ts +0 -1
- package/dist/invocation/response.js +0 -1
- package/dist/invocation/routing.d.ts +0 -1
- package/dist/invocation/routing.js +0 -1
- package/dist/invocation/schema.d.ts +1 -2
- package/dist/invocation/schema.js +0 -1
- package/dist/invocation/service-reason.d.ts +3 -11
- package/dist/invocation/service-reason.js +0 -12
- package/dist/invocation/stale-route.d.ts +0 -1
- 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 +2 -3
- package/dist/invocation/target.js +0 -1
- 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 +2 -2
- package/dist/invocation/websocket/index.d.ts +0 -1
- package/dist/invocation/websocket/index.js +0 -1
- package/dist/invocation/websocket/subprotocol.d.ts +0 -1
- package/dist/invocation/websocket/subprotocol.js +0 -1
- 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 +0 -1
- package/dist/issuer/index.js +0 -1
- package/dist/issuer/key-set.d.ts +0 -1
- package/dist/issuer/key-set.js +0 -1
- package/dist/issuer/paths.d.ts +0 -1
- package/dist/issuer/paths.js +0 -1
- package/dist/issuer/url.d.ts +0 -1
- package/dist/issuer/url.js +0 -1
- package/dist/publication/bindings/callable.d.ts +0 -1
- package/dist/publication/bindings/callable.js +8 -6
- package/dist/publication/bindings/index.d.ts +1 -2
- package/dist/publication/bindings/index.js +0 -1
- package/dist/publication/bindings/invocation.d.ts +0 -1
- package/dist/publication/bindings/invocation.js +0 -1
- package/dist/publication/bindings/view.d.ts +7 -1
- package/dist/publication/bindings/view.js +111 -3
- package/dist/publication/bundle-admission.d.ts +0 -1
- package/dist/publication/bundle-admission.js +12 -13
- package/dist/publication/bundle-descriptor.d.ts +0 -1
- package/dist/publication/bundle-descriptor.js +0 -1
- package/dist/publication/bundle-evidence.d.ts +0 -1
- package/dist/publication/bundle-evidence.js +0 -1
- package/dist/publication/bundle.d.ts +1 -2
- package/dist/publication/bundle.js +3 -4
- package/dist/publication/content.d.ts +0 -1
- package/dist/publication/content.js +0 -1
- package/dist/publication/declaration.d.ts +0 -1
- package/dist/publication/declaration.js +0 -1
- package/dist/publication/delivery/attestation.d.ts +0 -1
- package/dist/publication/delivery/attestation.js +0 -1
- package/dist/publication/delivery/claims.d.ts +1 -2
- package/dist/publication/delivery/claims.js +0 -1
- package/dist/publication/delivery/delivery.d.ts +0 -1
- package/dist/publication/delivery/delivery.js +0 -1
- package/dist/publication/delivery/error.d.ts +0 -1
- package/dist/publication/delivery/error.js +0 -1
- package/dist/publication/delivery/index.d.ts +0 -1
- package/dist/publication/delivery/index.js +0 -1
- package/dist/publication/delivery/limits.d.ts +0 -1
- package/dist/publication/delivery/limits.js +0 -1
- package/dist/publication/delivery/request.d.ts +0 -1
- package/dist/publication/delivery/request.js +0 -1
- package/dist/publication/delivery-declaration.d.ts +0 -1
- package/dist/publication/delivery-declaration.js +0 -1
- package/dist/publication/delivery-endpoint.d.ts +0 -1
- package/dist/publication/delivery-endpoint.js +0 -1
- package/dist/publication/error.d.ts +0 -1
- package/dist/publication/error.js +0 -1
- package/dist/publication/etag.d.ts +0 -1
- package/dist/publication/etag.js +0 -1
- package/dist/publication/index.d.ts +2 -3
- package/dist/publication/index.js +0 -1
- package/dist/publication/manifest.d.ts +2 -3
- package/dist/publication/manifest.js +10 -6
- package/dist/publication/publication.d.ts +0 -1
- package/dist/publication/publication.js +9 -5
- package/dist/publication/reference.d.ts +1 -2
- package/dist/publication/reference.js +0 -1
- package/dist/publication/requirements.d.ts +14 -7
- package/dist/publication/requirements.js +141 -44
- package/dist/publication/route.d.ts +0 -1
- package/dist/publication/route.js +0 -1
- package/dist/publication/schema.d.ts +1 -2
- package/dist/publication/schema.js +0 -1
- package/dist/routes/admission.d.ts +0 -1
- package/dist/routes/admission.js +5 -6
- package/dist/routes/binding.d.ts +3 -4
- package/dist/routes/binding.js +5 -6
- package/dist/routes/collision.d.ts +0 -1
- package/dist/routes/collision.js +0 -1
- package/dist/routes/compiler.d.ts +2 -3
- package/dist/routes/compiler.js +12 -10
- package/dist/routes/credential.d.ts +0 -1
- package/dist/routes/credential.js +0 -1
- package/dist/routes/decode.d.ts +2 -3
- package/dist/routes/decode.js +15 -20
- package/dist/routes/encode.d.ts +2 -3
- package/dist/routes/encode.js +10 -15
- 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 +3 -4
- package/dist/routes/evidence.js +14 -14
- package/dist/routes/index.d.ts +0 -1
- package/dist/routes/index.js +0 -1
- package/dist/routes/mapping.d.ts +0 -1
- package/dist/routes/mapping.js +0 -1
- package/dist/routes/match.d.ts +0 -1
- package/dist/routes/match.js +0 -1
- package/dist/routes/placement.d.ts +0 -1
- package/dist/routes/placement.js +1 -2
- package/dist/routes/plan.d.ts +5 -5
- package/dist/routes/plan.js +0 -1
- package/dist/routes/release-unavailable.d.ts +0 -1
- package/dist/routes/release-unavailable.js +0 -1
- package/dist/routes/request.d.ts +0 -1
- package/dist/routes/request.js +3 -2
- package/dist/routes/reservation.d.ts +0 -1
- package/dist/routes/reservation.js +5 -2
- package/dist/routes/routing.d.ts +0 -1
- package/dist/routes/routing.js +0 -1
- package/dist/routes/scalar.d.ts +3 -4
- package/dist/routes/scalar.js +5 -6
- package/dist/routes/select.d.ts +0 -1
- 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 +0 -1
- package/dist/routes/table.js +0 -1
- package/dist/routes/target.d.ts +0 -1
- package/dist/routes/target.js +0 -1
- package/dist/routes/template.d.ts +0 -1
- package/dist/routes/template.js +0 -1
- package/dist/runtime/artifact.d.ts +2 -3
- package/dist/runtime/artifact.js +3 -4
- package/dist/runtime/index.d.ts +0 -1
- package/dist/runtime/index.js +0 -1
- package/dist/schema/index.d.ts +0 -1
- package/dist/schema/index.js +0 -1
- package/dist/schema/installation/codec.d.ts +4 -0
- package/dist/schema/installation/codec.js +70 -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 +3 -3
- package/dist/schema/installation/introspection/codec.js +144 -204
- 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 +18 -23
- package/dist/schema/installation/introspection/result.js +0 -1
- package/dist/schema/installation/result.d.ts +9 -0
- package/dist/schema/installation/result.js +1 -0
- package/package.json +23 -13
- 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.map +0 -1
- 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.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.map +0 -1
- package/dist/publication/bindings/view.d.ts.map +0 -1
- package/dist/publication/bindings/view.js.map +0 -1
- package/dist/publication/bundle-admission.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/publication/bundle-evidence.d.ts.map +0 -1
- package/dist/publication/bundle-evidence.js.map +0 -1
- package/dist/publication/bundle.d.ts.map +0 -1
- package/dist/publication/bundle.js.map +0 -1
- 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.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.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.map +0 -1
- 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.map +0 -1
- package/dist/publication/error.d.ts.map +0 -1
- package/dist/publication/error.js.map +0 -1
- package/dist/publication/etag.d.ts.map +0 -1
- package/dist/publication/etag.js.map +0 -1
- package/dist/publication/index.d.ts.map +0 -1
- package/dist/publication/index.js.map +0 -1
- package/dist/publication/manifest.d.ts.map +0 -1
- package/dist/publication/manifest.js.map +0 -1
- package/dist/publication/publication.d.ts.map +0 -1
- package/dist/publication/publication.js.map +0 -1
- package/dist/publication/reference.d.ts.map +0 -1
- package/dist/publication/reference.js.map +0 -1
- package/dist/publication/requirements.d.ts.map +0 -1
- 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.map +0 -1
- 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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Subject } from '@astrale-os/kernel-core/auth/identity';
|
|
2
|
-
import type { Revision } from '@astrale-os/kernel-dsl/v1/
|
|
2
|
+
import type { Revision } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
3
|
import { type IssuerId } from '@astrale-os/kernel-core/auth/issuer';
|
|
4
4
|
import type { Etag } from '../etag.js';
|
|
5
5
|
import { PURPOSE } from './limits.js';
|
|
@@ -14,4 +14,3 @@ export interface Claims {
|
|
|
14
14
|
readonly exp: number;
|
|
15
15
|
}
|
|
16
16
|
export declare function acceptClaims(input: unknown): Claims;
|
|
17
|
-
//# sourceMappingURL=claims.d.ts.map
|
|
@@ -4,4 +4,3 @@ export { DeliveryError as Error, type DeliveryErrorCode as ErrorCode } from './e
|
|
|
4
4
|
export { accept, type Delivery } from './delivery.js';
|
|
5
5
|
export { ATTESTATION_MAX_BYTES, NONCE_MAX_LENGTH, NONCE_MIN_LENGTH, PURPOSE } from './limits.js';
|
|
6
6
|
export { acceptRequest, type Token, type Request } from './request.js';
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -4,4 +4,3 @@ export { DeliveryError as Error } from './error.js';
|
|
|
4
4
|
export { accept } from './delivery.js';
|
|
5
5
|
export { ATTESTATION_MAX_BYTES, NONCE_MAX_LENGTH, NONCE_MIN_LENGTH, PURPOSE } from './limits.js';
|
|
6
6
|
export { acceptRequest } from './request.js';
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -2,4 +2,3 @@ import type { DeliveryDeclaration } from './declaration.js';
|
|
|
2
2
|
import type { Endpoint } from './delivery-endpoint.js';
|
|
3
3
|
/** Place one provider-neutral Delivery declaration beneath an exact serving issuer. */
|
|
4
4
|
export declare function placeDelivery(input: DeliveryDeclaration, issuer: string, bundleHref: string): Endpoint;
|
|
5
|
-
//# sourceMappingURL=delivery-declaration.d.ts.map
|
|
@@ -5,4 +5,3 @@ export declare class PublicationError extends Error {
|
|
|
5
5
|
constructor(code: PublicationErrorCode, message: string, options?: ErrorOptions);
|
|
6
6
|
}
|
|
7
7
|
export declare function fail(code: PublicationErrorCode, message: string, cause?: unknown): never;
|
|
8
|
-
//# sourceMappingURL=error.d.ts.map
|
package/dist/publication/etag.js
CHANGED
|
@@ -77,4 +77,3 @@ const ROUND = new Uint32Array([
|
|
|
77
77
|
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
|
78
78
|
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
|
|
79
79
|
]);
|
|
80
|
-
//# sourceMappingURL=etag.js.map
|
|
@@ -10,9 +10,8 @@ export { PublicationError, type PublicationErrorCode } from './error.js';
|
|
|
10
10
|
export * as delivery from './delivery/index.js';
|
|
11
11
|
export type { Authentication as DeliveryAuthentication, Endpoint as DeliveryEndpoint, } from './delivery-endpoint.js';
|
|
12
12
|
export type { Manifest } from './manifest.js';
|
|
13
|
-
export { ClassOperationOrder, admitRequirements, validateRequirements, type
|
|
13
|
+
export { ClassOperationOrder, admitRequirements, validateRequirements, type CapabilityAuthorityRequirements, type CapabilityProfileRequirement, type CapabilityRequirements, type ClassCapabilityRequirement, type ClassOperation, type NonEmpty, type PublicationRequirements, } from './requirements.js';
|
|
14
14
|
export { acceptReference, compareReference, compareReferences, matchesReference, reference, type PublicationRef, type PublicationReferenceRelation, } from './reference.js';
|
|
15
15
|
export type { BodyPick, CredentialSource, HttpMethod, HttpRoute, HttpRouteDeclaration, RouteBody, RouteHeaders, SingleCredentialSource, } from './route.js';
|
|
16
16
|
export type { Schema } from './schema.js';
|
|
17
|
-
export { acceptInvocationEndpoints, type CallableBinding, type InvocationEndpoints, type ViewBinding, } from './bindings/index.js';
|
|
18
|
-
//# sourceMappingURL=index.d.ts.map
|
|
17
|
+
export { acceptInvocationEndpoints, type CallableBinding, type IframeRequirements, type InvocationEndpoints, type ViewBinding, } from './bindings/index.js';
|
|
@@ -8,4 +8,3 @@ export * as delivery from './delivery/index.js';
|
|
|
8
8
|
export { ClassOperationOrder, admitRequirements, validateRequirements, } from './requirements.js';
|
|
9
9
|
export { acceptReference, compareReference, compareReferences, matchesReference, reference, } from './reference.js';
|
|
10
10
|
export { acceptInvocationEndpoints, } from './bindings/index.js';
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { acceptDefinitionRef } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
2
|
import { exact, record } from './content.js';
|
|
3
3
|
import { fail } from './error.js';
|
|
4
4
|
export function admitManifest(input) {
|
|
@@ -11,16 +11,20 @@ export function admitManifest(input) {
|
|
|
11
11
|
}
|
|
12
12
|
let entrypoint;
|
|
13
13
|
if (value.entrypoint !== undefined) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
let ref;
|
|
15
|
+
try {
|
|
16
|
+
ref = acceptDefinitionRef(value.entrypoint);
|
|
17
|
+
}
|
|
18
|
+
catch (cause) {
|
|
19
|
+
return fail('PUBLICATION_INVALID', 'Manifest entrypoint must be a root View reference.', cause);
|
|
20
|
+
}
|
|
21
|
+
if (ref.kind !== 'view') {
|
|
17
22
|
fail('PUBLICATION_INVALID', 'Manifest entrypoint must be a root View reference.');
|
|
18
23
|
}
|
|
19
|
-
entrypoint =
|
|
24
|
+
entrypoint = ref;
|
|
20
25
|
}
|
|
21
26
|
return Object.freeze({
|
|
22
27
|
...(value.logo === undefined ? {} : { logo: value.logo }),
|
|
23
28
|
...(entrypoint === undefined ? {} : { entrypoint }),
|
|
24
29
|
});
|
|
25
30
|
}
|
|
26
|
-
//# sourceMappingURL=manifest.js.map
|
|
@@ -3,6 +3,7 @@ import { accept as acceptIssuerId } from '@astrale-os/kernel-core/auth/issuer';
|
|
|
3
3
|
import { Key, patterns } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
4
4
|
import * as portable from '@astrale-os/kernel-dsl/value';
|
|
5
5
|
import { admitCallableBinding, admitViewBinding } from './bindings/index.js';
|
|
6
|
+
import { canonicalizeViewBinding } from './bindings/view.js';
|
|
6
7
|
import { array, deepFreeze, exact, record, unique } from './content.js';
|
|
7
8
|
import { admitEndpoint as admitDeliveryEndpoint } from './delivery-endpoint.js';
|
|
8
9
|
import { fail } from './error.js';
|
|
@@ -33,7 +34,8 @@ export function url(input) {
|
|
|
33
34
|
return `${admitted.replace(/\/+$/u, '')}${PATH}`;
|
|
34
35
|
}
|
|
35
36
|
export function seal(input) {
|
|
36
|
-
|
|
37
|
+
const canonical = withoutEtag(acceptPublication({ ...input, etag: 'canonicalizing' }, false, true));
|
|
38
|
+
return acceptPublication({ ...canonical, etag: computeEtag(canonical) }, false);
|
|
37
39
|
}
|
|
38
40
|
export function accept(input) {
|
|
39
41
|
const publication = acceptPublication(input, true);
|
|
@@ -45,7 +47,7 @@ export function accept(input) {
|
|
|
45
47
|
export function encode(input) {
|
|
46
48
|
return portable.json.encode(input);
|
|
47
49
|
}
|
|
48
|
-
function acceptPublication(input, requireEtag) {
|
|
50
|
+
function acceptPublication(input, requireEtag, canonicalizeViews = false) {
|
|
49
51
|
const value = record(input, 'PUBLICATION_INVALID', 'Expected a Publication object.');
|
|
50
52
|
exact(value, [
|
|
51
53
|
'format',
|
|
@@ -80,7 +82,7 @@ function acceptPublication(input, requireEtag) {
|
|
|
80
82
|
exact(bindingSet, ['callables', 'views'], 'PUBLICATION_BINDING_INVALID');
|
|
81
83
|
const callables = array(bindingSet.callables, 'PUBLICATION_BINDING_INVALID').map((entry) => admitCallableBinding(entry, origin));
|
|
82
84
|
unique(callables.map(({ callable }) => callable), 'PUBLICATION_BINDING_INVALID', 'callable binding');
|
|
83
|
-
const views = array(bindingSet.views, 'PUBLICATION_VIEW_INVALID').map((entry) => admitViewBinding(entry, origin));
|
|
85
|
+
const views = array(bindingSet.views, 'PUBLICATION_VIEW_INVALID').map((entry) => canonicalizeViews ? canonicalizeViewBinding(entry, origin) : admitViewBinding(entry, origin));
|
|
84
86
|
unique(views.map(({ view }) => view), 'PUBLICATION_VIEW_INVALID', 'View binding');
|
|
85
87
|
const routes = array(value.routes, 'PUBLICATION_ROUTE_INVALID').map((entry) => admitRoute(entry, origin));
|
|
86
88
|
unique(routes.map(({ name }) => name), 'PUBLICATION_ROUTE_INVALID', 'route name');
|
|
@@ -90,7 +92,10 @@ function acceptPublication(input, requireEtag) {
|
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
if (manifest?.entrypoint !== undefined) {
|
|
93
|
-
|
|
95
|
+
if (manifest.entrypoint.origin !== origin) {
|
|
96
|
+
fail('PUBLICATION_VIEW_INVALID', 'Manifest entrypoint must belong to the root origin.');
|
|
97
|
+
}
|
|
98
|
+
const key = Key.of(manifest.entrypoint);
|
|
94
99
|
if (!views.some(({ view }) => view === key)) {
|
|
95
100
|
fail('PUBLICATION_VIEW_INVALID', 'Manifest entrypoint must have a published View binding.');
|
|
96
101
|
}
|
|
@@ -128,4 +133,3 @@ function withoutEtag(input) {
|
|
|
128
133
|
const { etag: _etag, ...content } = input;
|
|
129
134
|
return content;
|
|
130
135
|
}
|
|
131
|
-
//# sourceMappingURL=publication.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Revision } from '@astrale-os/kernel-dsl/v1/
|
|
1
|
+
import type { Revision } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
2
|
import { type Key } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
3
|
import type { Etag } from './etag.js';
|
|
4
4
|
import type { Publication } from './publication.js';
|
|
@@ -15,4 +15,3 @@ export declare function acceptReference(input: unknown): PublicationRef;
|
|
|
15
15
|
export declare function compareReferences(input: PublicationRef, expected: PublicationRef): PublicationReferenceRelation;
|
|
16
16
|
export declare function compareReference(input: Publication, expected: PublicationRef): PublicationReferenceRelation;
|
|
17
17
|
export declare function matchesReference(input: Publication, expected: PublicationRef): boolean;
|
|
18
|
-
//# sourceMappingURL=reference.d.ts.map
|
|
@@ -1,21 +1,29 @@
|
|
|
1
1
|
import type { AuthorityOperation } from '@astrale-os/kernel-core/schema/authority/operation';
|
|
2
|
-
import type { schema } from '@astrale-os/kernel-dsl/v1';
|
|
3
|
-
import type { Key as SemanticKey } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
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
4
|
export type NonEmpty<Value> = readonly [Value, ...Value[]];
|
|
5
5
|
export declare const ClassOperationOrder: readonly ["create", "read", "traverse", "update", "delete"];
|
|
6
6
|
export type ClassOperation = (typeof ClassOperationOrder)[number];
|
|
7
7
|
export interface ClassCapabilityRequirement {
|
|
8
|
-
readonly class:
|
|
8
|
+
readonly class: ClassRef;
|
|
9
9
|
readonly operations: NonEmpty<ClassOperation>;
|
|
10
10
|
}
|
|
11
|
-
export interface
|
|
11
|
+
export interface CapabilityAuthorityRequirements {
|
|
12
12
|
readonly grant?: NonEmpty<AuthorityOperation>;
|
|
13
13
|
readonly revoke?: NonEmpty<AuthorityOperation>;
|
|
14
14
|
}
|
|
15
15
|
export interface CapabilityRequirements {
|
|
16
16
|
readonly functions?: NonEmpty<SemanticKey.Callable>;
|
|
17
17
|
readonly classes?: NonEmpty<ClassCapabilityRequirement>;
|
|
18
|
-
readonly
|
|
18
|
+
readonly authority?: CapabilityAuthorityRequirements;
|
|
19
|
+
readonly profiles?: NonEmpty<CapabilityProfileRequirement>;
|
|
20
|
+
}
|
|
21
|
+
/** Installation-owned authority materialized onto one local Core Identity. */
|
|
22
|
+
export interface CapabilityProfileRequirement {
|
|
23
|
+
readonly subject: CoreRef;
|
|
24
|
+
readonly functions?: NonEmpty<SemanticKey.Callable>;
|
|
25
|
+
readonly classes?: NonEmpty<ClassCapabilityRequirement>;
|
|
26
|
+
readonly authority?: CapabilityAuthorityRequirements;
|
|
19
27
|
}
|
|
20
28
|
export interface PublicationRequirements {
|
|
21
29
|
readonly capabilities: CapabilityRequirements;
|
|
@@ -23,5 +31,4 @@ export interface PublicationRequirements {
|
|
|
23
31
|
/** Admit the exact closed Publication v2 requirements object. */
|
|
24
32
|
export declare function admitRequirements(input: unknown): PublicationRequirements;
|
|
25
33
|
/** Bind explicit capability targets to exact functional dependencies in the bundle closure. */
|
|
26
|
-
export declare function validateRequirements(root:
|
|
27
|
-
//# sourceMappingURL=requirements.d.ts.map
|
|
34
|
+
export declare function validateRequirements(root: schemaLanguage.DomainSchema, closure: readonly schemaLanguage.DomainSchema[], requirements: PublicationRequirements): void;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { KernelSchema } from '@astrale-os/kernel-core/schema';
|
|
2
1
|
import { AuthorityOperationOrder } from '@astrale-os/kernel-core/schema/authority/operation';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { acceptDefinitionRef, callableAddress, Key } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
|
+
import { revision } from '@astrale-os/kernel-dsl/v1/schema/revision';
|
|
5
4
|
import { array, deepFreeze, exact, record, unique } from './content.js';
|
|
6
5
|
import { fail } from './error.js';
|
|
6
|
+
const KernelIdentityClass = Object.freeze({
|
|
7
|
+
origin: 'kernel.astrale.ai',
|
|
8
|
+
kind: 'class',
|
|
9
|
+
name: 'Identity',
|
|
10
|
+
});
|
|
7
11
|
export const ClassOperationOrder = Object.freeze([
|
|
8
12
|
'create',
|
|
9
13
|
'read',
|
|
@@ -16,7 +20,7 @@ export function admitRequirements(input) {
|
|
|
16
20
|
const requirements = record(input, 'PUBLICATION_INVALID', 'Publication requirements are invalid.');
|
|
17
21
|
exact(requirements, ['capabilities'], 'PUBLICATION_INVALID');
|
|
18
22
|
const capabilities = record(requirements.capabilities, 'PUBLICATION_INVALID', 'Publication capability requirements are invalid.');
|
|
19
|
-
exact(capabilities, ['
|
|
23
|
+
exact(capabilities, ['authority', 'classes', 'functions', 'profiles'], 'PUBLICATION_INVALID');
|
|
20
24
|
const functions = capabilities.functions === undefined
|
|
21
25
|
? undefined
|
|
22
26
|
: nonEmpty(capabilities.functions, 'Function capability requirements').map(admitCallable);
|
|
@@ -31,7 +35,16 @@ export function admitRequirements(input) {
|
|
|
31
35
|
unique(classes.map((entry) => classKey(entry.class)), 'PUBLICATION_INVALID', 'Class capability requirement');
|
|
32
36
|
canonical(classes, (left, right) => compare(classKey(left.class), classKey(right.class)), 'Class capability requirements');
|
|
33
37
|
}
|
|
34
|
-
const
|
|
38
|
+
const authority = capabilities.authority === undefined
|
|
39
|
+
? undefined
|
|
40
|
+
: admitAuthorityRequirements(capabilities.authority);
|
|
41
|
+
const profiles = capabilities.profiles === undefined
|
|
42
|
+
? undefined
|
|
43
|
+
: nonEmpty(capabilities.profiles, 'Capability profiles').map(admitCapabilityProfile);
|
|
44
|
+
if (profiles !== undefined) {
|
|
45
|
+
unique(profiles.map(({ subject }) => Key.of(subject)), 'PUBLICATION_INVALID', 'Capability profile subject');
|
|
46
|
+
canonical(profiles, (left, right) => compare(Key.of(left.subject), Key.of(right.subject)), 'Capability profiles');
|
|
47
|
+
}
|
|
35
48
|
return deepFreeze({
|
|
36
49
|
capabilities: {
|
|
37
50
|
...(functions === undefined
|
|
@@ -40,35 +53,109 @@ export function admitRequirements(input) {
|
|
|
40
53
|
...(classes === undefined
|
|
41
54
|
? {}
|
|
42
55
|
: { classes: Object.freeze(classes) }),
|
|
43
|
-
...(
|
|
56
|
+
...(authority === undefined ? {} : { authority }),
|
|
57
|
+
...(profiles === undefined
|
|
58
|
+
? {}
|
|
59
|
+
: { profiles: Object.freeze(profiles) }),
|
|
44
60
|
},
|
|
45
61
|
});
|
|
46
62
|
}
|
|
63
|
+
function admitCapabilityProfile(input) {
|
|
64
|
+
const profile = record(input, 'PUBLICATION_INVALID', 'Capability profile requirement is invalid.');
|
|
65
|
+
exact(profile, ['authority', 'classes', 'functions', 'subject'], 'PUBLICATION_INVALID');
|
|
66
|
+
const subject = admitCoreRef(profile.subject);
|
|
67
|
+
const functions = profile.functions === undefined
|
|
68
|
+
? undefined
|
|
69
|
+
: nonEmpty(profile.functions, 'Capability profile Function requirements').map(admitCallable);
|
|
70
|
+
if (functions !== undefined) {
|
|
71
|
+
unique(functions, 'PUBLICATION_INVALID', 'Capability profile Function requirement');
|
|
72
|
+
canonical(functions, compare, 'Capability profile Function requirements');
|
|
73
|
+
}
|
|
74
|
+
const classes = profile.classes === undefined
|
|
75
|
+
? undefined
|
|
76
|
+
: nonEmpty(profile.classes, 'Capability profile Class requirements').map(admitClassRequirement);
|
|
77
|
+
if (classes !== undefined) {
|
|
78
|
+
unique(classes.map((entry) => classKey(entry.class)), 'PUBLICATION_INVALID', 'Capability profile Class requirement');
|
|
79
|
+
canonical(classes, (left, right) => compare(classKey(left.class), classKey(right.class)), 'Capability profile Class requirements');
|
|
80
|
+
}
|
|
81
|
+
const authority = profile.authority === undefined ? undefined : admitAuthorityRequirements(profile.authority);
|
|
82
|
+
if (functions === undefined && classes === undefined && authority === undefined) {
|
|
83
|
+
fail('PUBLICATION_INVALID', 'Capability profile requirements cannot be empty.');
|
|
84
|
+
}
|
|
85
|
+
return Object.freeze({
|
|
86
|
+
subject,
|
|
87
|
+
...(functions === undefined
|
|
88
|
+
? {}
|
|
89
|
+
: { functions: Object.freeze(functions) }),
|
|
90
|
+
...(classes === undefined
|
|
91
|
+
? {}
|
|
92
|
+
: { classes: Object.freeze(classes) }),
|
|
93
|
+
...(authority === undefined ? {} : { authority }),
|
|
94
|
+
});
|
|
95
|
+
}
|
|
47
96
|
/** Bind explicit capability targets to exact functional dependencies in the bundle closure. */
|
|
48
97
|
export function validateRequirements(root, closure, requirements) {
|
|
49
98
|
const dependencies = exactDependencyClosure(root, closure);
|
|
50
99
|
for (const callable of requirements.capabilities.functions ?? []) {
|
|
51
100
|
const dependency = capabilityOwner(root, dependencies, callable, 'Function');
|
|
52
|
-
|
|
53
|
-
if (!hasCallable(dependency, reference)) {
|
|
101
|
+
if (!hasCallable(dependency, callable)) {
|
|
54
102
|
fail('PUBLICATION_INVALID', 'Function capability requirement names an unknown dependency callable.');
|
|
55
103
|
}
|
|
56
104
|
}
|
|
57
105
|
for (const requirement of requirements.capabilities.classes ?? []) {
|
|
58
|
-
const key = Key.
|
|
106
|
+
const key = Key.of(requirement.class);
|
|
59
107
|
const dependency = capabilityOwner(root, dependencies, key, 'Class');
|
|
60
108
|
if (dependency.classes[requirement.class.name] === undefined) {
|
|
61
109
|
fail('PUBLICATION_INVALID', 'Class capability requirement names an unknown dependency Class.');
|
|
62
110
|
}
|
|
63
111
|
}
|
|
112
|
+
for (const profile of requirements.capabilities.profiles ?? []) {
|
|
113
|
+
const subject = root.core.nodes[profile.subject.name];
|
|
114
|
+
if (profile.subject.origin !== root.origin ||
|
|
115
|
+
subject === undefined ||
|
|
116
|
+
!classSatisfies(root, dependencies, subject.class, KernelIdentityClass)) {
|
|
117
|
+
fail('PUBLICATION_INVALID', 'Capability profile subject must name one local Core Identity.');
|
|
118
|
+
}
|
|
119
|
+
for (const callable of profile.functions ?? []) {
|
|
120
|
+
const dependency = capabilityOwner(root, dependencies, callable, 'Function');
|
|
121
|
+
if (!hasCallable(dependency, callable)) {
|
|
122
|
+
fail('PUBLICATION_INVALID', 'Capability profile Function requirement names an unknown dependency callable.');
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
for (const requirement of profile.classes ?? []) {
|
|
126
|
+
const key = Key.of(requirement.class);
|
|
127
|
+
const owner = requirement.class.origin === root.origin
|
|
128
|
+
? root
|
|
129
|
+
: capabilityOwner(root, dependencies, key, 'Class');
|
|
130
|
+
if (owner.classes[requirement.class.name] === undefined) {
|
|
131
|
+
fail('PUBLICATION_INVALID', 'Capability profile Class requirement names an unknown dependency Class.');
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function classSatisfies(root, dependencies, candidate, expected) {
|
|
137
|
+
const expectedKey = Key.of(expected);
|
|
138
|
+
const visited = new Set();
|
|
139
|
+
const visit = (reference) => {
|
|
140
|
+
const key = Key.of(reference);
|
|
141
|
+
if (key === expectedKey)
|
|
142
|
+
return true;
|
|
143
|
+
if (visited.has(key))
|
|
144
|
+
return false;
|
|
145
|
+
visited.add(key);
|
|
146
|
+
const owner = reference.origin === root.origin ? root : dependencies.get(reference.origin);
|
|
147
|
+
const definition = owner?.classes[reference.name];
|
|
148
|
+
return definition?.kind === 'node' && definition.extends.some(visit);
|
|
149
|
+
};
|
|
150
|
+
return visit(candidate);
|
|
64
151
|
}
|
|
65
152
|
function exactDependencyClosure(root, closure) {
|
|
66
153
|
const supplied = new Map(closure.map((dependency) => [dependency.origin, dependency]));
|
|
67
154
|
const reachable = new Map();
|
|
68
155
|
const visit = (owner) => {
|
|
69
|
-
for (const coordinate of owner.dependencies) {
|
|
156
|
+
for (const coordinate of Object.values(owner.dependencies)) {
|
|
70
157
|
const dependency = supplied.get(coordinate.origin);
|
|
71
|
-
if (dependency === undefined ||
|
|
158
|
+
if (dependency === undefined || revision(dependency) !== coordinate.revision) {
|
|
72
159
|
fail('PUBLICATION_INVALID', 'Publication Bundle omits an exact dependency.');
|
|
73
160
|
}
|
|
74
161
|
if (reachable.has(dependency.origin))
|
|
@@ -84,8 +171,10 @@ function admitCallable(input) {
|
|
|
84
171
|
if (typeof input !== 'string' || !Key.is(input)) {
|
|
85
172
|
return fail('PUBLICATION_INVALID', 'Function capability reference is invalid.');
|
|
86
173
|
}
|
|
87
|
-
|
|
88
|
-
|
|
174
|
+
try {
|
|
175
|
+
callableAddress(input);
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
89
178
|
return fail('PUBLICATION_INVALID', 'Function capability reference must name a Function or Method.');
|
|
90
179
|
}
|
|
91
180
|
return input;
|
|
@@ -101,14 +190,14 @@ function admitClassRequirement(input) {
|
|
|
101
190
|
operations: Object.freeze(operations),
|
|
102
191
|
});
|
|
103
192
|
}
|
|
104
|
-
function
|
|
105
|
-
const
|
|
106
|
-
exact(
|
|
107
|
-
if (
|
|
108
|
-
fail('PUBLICATION_INVALID', '
|
|
193
|
+
function admitAuthorityRequirements(input) {
|
|
194
|
+
const authority = record(input, 'PUBLICATION_INVALID', 'Authority capability requirements are invalid.');
|
|
195
|
+
exact(authority, ['grant', 'revoke'], 'PUBLICATION_INVALID');
|
|
196
|
+
if (authority.grant === undefined && authority.revoke === undefined) {
|
|
197
|
+
fail('PUBLICATION_INVALID', 'Authority capability requirements cannot be empty.');
|
|
109
198
|
}
|
|
110
|
-
const grant = admitAuthorityOperations(
|
|
111
|
-
const revoke = admitAuthorityOperations(
|
|
199
|
+
const grant = admitAuthorityOperations(authority.grant, 'grant');
|
|
200
|
+
const revoke = admitAuthorityOperations(authority.revoke, 'revoke');
|
|
112
201
|
return Object.freeze({
|
|
113
202
|
...(grant === undefined ? {} : { grant }),
|
|
114
203
|
...(revoke === undefined ? {} : { revoke }),
|
|
@@ -117,22 +206,35 @@ function admitAdminRequirements(input) {
|
|
|
117
206
|
function admitAuthorityOperations(input, kind) {
|
|
118
207
|
if (input === undefined)
|
|
119
208
|
return undefined;
|
|
120
|
-
const values = nonEmpty(input, `
|
|
121
|
-
unique(values, 'PUBLICATION_INVALID', `
|
|
122
|
-
canonical(values, ordered(AuthorityOperationOrder), `
|
|
209
|
+
const values = nonEmpty(input, `Authority ${kind} operations`).map((entry) => admitOperation(entry, AuthorityOperationOrder, `Authority ${kind} operation`));
|
|
210
|
+
unique(values, 'PUBLICATION_INVALID', `authority ${kind} operation`);
|
|
211
|
+
canonical(values, ordered(AuthorityOperationOrder), `Authority ${kind} operations`);
|
|
123
212
|
return Object.freeze(values);
|
|
124
213
|
}
|
|
125
214
|
function admitClassRef(input) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
typeof value.name !== 'string' ||
|
|
132
|
-
!patterns.memberName.test(value.name)) {
|
|
215
|
+
let value;
|
|
216
|
+
try {
|
|
217
|
+
value = acceptDefinitionRef(input);
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
133
220
|
fail('PUBLICATION_INVALID', 'Class capability reference is invalid.');
|
|
134
221
|
}
|
|
135
|
-
|
|
222
|
+
if (value.kind !== 'class')
|
|
223
|
+
fail('PUBLICATION_INVALID', 'Class capability reference is invalid.');
|
|
224
|
+
return value;
|
|
225
|
+
}
|
|
226
|
+
function admitCoreRef(input) {
|
|
227
|
+
let value;
|
|
228
|
+
try {
|
|
229
|
+
value = acceptDefinitionRef(input);
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
fail('PUBLICATION_INVALID', 'Capability profile subject is invalid.');
|
|
233
|
+
}
|
|
234
|
+
if (value.kind !== 'core') {
|
|
235
|
+
fail('PUBLICATION_INVALID', 'Capability profile subject must be one local Core reference.');
|
|
236
|
+
}
|
|
237
|
+
return value;
|
|
136
238
|
}
|
|
137
239
|
function nonEmpty(input, label) {
|
|
138
240
|
const values = [...array(input, 'PUBLICATION_INVALID')];
|
|
@@ -158,28 +260,23 @@ function compare(left, right) {
|
|
|
158
260
|
return left < right ? -1 : left > right ? 1 : 0;
|
|
159
261
|
}
|
|
160
262
|
function classKey(input) {
|
|
161
|
-
return String(Key.
|
|
263
|
+
return String(Key.of(input));
|
|
162
264
|
}
|
|
163
265
|
function capabilityOwner(root, dependencies, key, label) {
|
|
164
266
|
const origin = Key.origin(key);
|
|
165
267
|
if (origin === root.origin)
|
|
166
268
|
fail('PUBLICATION_INVALID', `${label} capability target cannot be local.`);
|
|
167
|
-
if (origin === KernelSchema.origin)
|
|
168
|
-
return KernelSchema;
|
|
169
269
|
const dependency = dependencies.get(origin);
|
|
170
270
|
if (dependency === undefined) {
|
|
171
271
|
fail('PUBLICATION_INVALID', `${label} capability target must belong to the exact dependency closure.`);
|
|
172
272
|
}
|
|
173
273
|
return dependency;
|
|
174
274
|
}
|
|
175
|
-
function hasCallable(dependency,
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
const
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
const declaration = ownerKind === 'class' ? dependency.classes[owner] : dependency.interfaces[owner];
|
|
183
|
-
return declaration?.family === 'node' && declaration.methods[method] !== undefined;
|
|
275
|
+
function hasCallable(dependency, callable) {
|
|
276
|
+
const coordinate = callableAddress(callable);
|
|
277
|
+
if (coordinate.kind === 'function')
|
|
278
|
+
return dependency.functions[coordinate.name] !== undefined;
|
|
279
|
+
const declaration = dependency.classes[coordinate.owner.name];
|
|
280
|
+
const method = declaration?.kind === 'node' ? declaration.methods[coordinate.name] : undefined;
|
|
281
|
+
return method !== undefined && method.inheritance !== 'abstract';
|
|
184
282
|
}
|
|
185
|
-
//# sourceMappingURL=requirements.js.map
|
|
@@ -35,4 +35,3 @@ export interface HttpRouteDeclaration extends Omit<HttpRoute, 'href'> {
|
|
|
35
35
|
}
|
|
36
36
|
export declare function admitRoute(input: unknown, origin: string): HttpRoute;
|
|
37
37
|
export declare function admitRouteDeclaration(input: unknown, origin: string): HttpRouteDeclaration;
|
|
38
|
-
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { Revision } from '@astrale-os/kernel-dsl/v1/
|
|
1
|
+
import type { Revision } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
2
|
import type { BundleDescriptor } from './bundle-descriptor.js';
|
|
3
3
|
export interface Schema {
|
|
4
4
|
readonly revision: Revision;
|
|
5
5
|
readonly bundle: BundleDescriptor;
|
|
6
6
|
}
|
|
7
7
|
export declare function admitSchema(input: unknown): Schema;
|
|
8
|
-
//# sourceMappingURL=schema.d.ts.map
|