@zlink-systems/framework 0.26.0 → 0.28.0
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/.tsbuildinfo +1 -1
- package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
- package/dist/contracts/Channels/Calls.d.ts +1 -1
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/Builders.d.ts +0 -1
- package/dist/contracts/Configuration/Configs.d.ts +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/Spots/Contracts.d.ts +2 -2
- package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
- package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
- package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
- package/dist/internal.d.ts +4 -0
- package/dist/internal.js +15 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +1 -2
- package/dist/runtime/activation-admission.js +2 -6
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +49 -153
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +13 -11
- package/dist/runtime/actors/actor-handoff.d.ts +4 -4
- package/dist/runtime/actors/actor-handoff.js +8 -8
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +83 -105
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
- package/dist/runtime/actors/actor-remote-joiner.js +5 -9
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
- package/dist/runtime/actors/actor-request-deadline.js +6 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
- package/dist/runtime/actors/deferred-join-completion.js +1 -0
- package/dist/runtime/actors/index.d.ts +9 -7
- package/dist/runtime/actors/index.js +87 -69
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +2 -0
- package/dist/runtime/admission.js +7 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +7 -27
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -8
- package/dist/runtime/channels/channel-clients.js +73 -59
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.d.ts +1 -1
- package/dist/runtime/channels/channel-envelope.js +51 -39
- package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
- package/dist/runtime/channels/channel-outbound-operations.js +25 -42
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
- package/dist/runtime/channels/channel-runtime-manager.js +13 -10
- package/dist/runtime/channels/channel-socket-options.js +3 -12
- package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
- package/dist/runtime/channels/channel-socket-registry.js +240 -177
- package/dist/runtime/channels/channel-transports.d.ts +21 -31
- package/dist/runtime/channels/channel-transports.js +80 -62
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +130 -72
- package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/local-spot-route-transport.js +1 -3
- package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
- package/dist/runtime/channels/source-spot-router.d.ts +1 -1
- package/dist/runtime/channels/source-spot-router.js +2 -4
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
- package/dist/runtime/channels/spot-node-route-transport.js +5 -5
- package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
- package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
- package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +12 -9
- package/dist/runtime/execution/index.js +58 -14
- package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
- package/dist/runtime/execution/serial-execution-queue.js +54 -15
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
- package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
- package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
- package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
- package/dist/runtime/foundation/service-topology-registry.js +17 -32
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
- package/dist/runtime/host/actor-packet-relay.js +54 -99
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
- package/dist/runtime/host/actor-transfer-runtime.js +143 -176
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +14 -13
- package/dist/runtime/host/index.js +190 -171
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +15 -28
- package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
- package/dist/runtime/host/route-mesh-runtime.js +171 -252
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
- package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
- package/dist/runtime/host/spot-address-transport.d.ts +3 -12
- package/dist/runtime/host/spot-address-transport.js +78 -220
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
- package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
- package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +4 -9
- package/dist/runtime/locations/lifecycle.js +2 -31
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +309 -336
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +37 -28
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
- package/dist/runtime/locations/spot-location-claims.js +42 -1
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/request-deadline.d.ts +3 -0
- package/dist/runtime/messaging/request-deadline.js +39 -0
- package/dist/runtime/messaging/submission-result.d.ts +4 -0
- package/dist/runtime/messaging/submission-result.js +56 -1
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
- package/dist/runtime/spots/index.d.ts +14 -20
- package/dist/runtime/spots/index.js +302 -176
- package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
- package/dist/runtime/spots/spot-activation-registry.js +14 -50
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +2 -2
- package/dist/runtime/spots/spot-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-activation.js +49 -32
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
- package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
- package/dist/runtime/spots/spot-actor-membership.js +22 -45
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +9 -20
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +5 -4
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
- package/dist/runtime/spots/spot-outbound.d.ts +7 -8
- package/dist/runtime/spots/spot-outbound.js +21 -23
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
- package/dist/runtime/spots/spot-serial-executor.js +2 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
- package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
- package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -2
- package/dist/runtime/streams/index.d.ts +16 -17
- package/dist/runtime/streams/index.js +22 -23
- package/dist/runtime/streams/managed-stream.d.ts +5 -2
- package/dist/runtime/streams/managed-stream.js +20 -13
- package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +6 -8
- package/dist/runtime/streams/session-calls.js +6 -22
- package/dist/runtime/streams/session-context.d.ts +10 -10
- package/dist/runtime/streams/session-context.js +25 -10
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
- package/src/contracts/Channels/Calls.ts +1 -1
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/Builders.ts +0 -1
- package/src/contracts/Configuration/Configs.ts +0 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/Spots/Contracts.ts +2 -2
- package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
- package/src/contracts/Streams/IZLinkSession.ts +2 -3
- package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
- package/src/internal.ts +14 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +2 -8
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +85 -218
- package/src/runtime/actors/actor-context.ts +39 -33
- package/src/runtime/actors/actor-handoff.ts +24 -22
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +172 -174
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +9 -11
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +4 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +10 -6
- package/src/runtime/actors/index.ts +100 -79
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +8 -1
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +14 -37
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
- package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
- package/src/runtime/backend/raw-binding-port.ts +1 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +139 -102
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +74 -57
- package/src/runtime/channels/channel-outbound-operations.ts +40 -55
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +12 -30
- package/src/runtime/channels/channel-socket-options.ts +8 -15
- package/src/runtime/channels/channel-socket-registry.ts +291 -196
- package/src/runtime/channels/channel-transports.ts +168 -145
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +172 -91
- package/src/runtime/channels/local-spot-route-transport.ts +1 -5
- package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
- package/src/runtime/channels/source-spot-router.ts +2 -9
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +7 -9
- package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +60 -20
- package/src/runtime/execution/serial-execution-queue.ts +131 -18
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
- package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
- package/src/runtime/foundation/service-topology-registry.ts +23 -32
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +63 -160
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +180 -260
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +327 -320
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +16 -57
- package/src/runtime/host/route-mesh-runtime.ts +228 -271
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
- package/src/runtime/host/spot-address-transport.ts +175 -356
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
- package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +13 -43
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +457 -482
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +75 -49
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +58 -1
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/request-deadline.ts +58 -0
- package/src/runtime/messaging/submission-result.ts +72 -2
- package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
- package/src/runtime/spots/index.ts +433 -229
- package/src/runtime/spots/spot-activation-registry.ts +30 -69
- package/src/runtime/spots/spot-activation-state.ts +2 -2
- package/src/runtime/spots/spot-activation.ts +67 -37
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
- package/src/runtime/spots/spot-actor-membership.ts +40 -72
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -30
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +21 -17
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
- package/src/runtime/spots/spot-outbound.ts +59 -47
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +5 -27
- package/src/runtime/spots/spot-serial-executor.ts +2 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
- package/src/runtime/streams/bound-session-service.ts +22 -2
- package/src/runtime/streams/index.ts +78 -68
- package/src/runtime/streams/managed-stream.ts +32 -23
- package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +11 -36
- package/src/runtime/streams/session-context.ts +60 -25
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import { type ZLinkBackendMessageLike as MessageLike } from '../backend/runtime-values';
|
|
2
|
-
import type { ZLinkBackendMeshNode, ZLinkBackendSpot } from '../backend/contracts';
|
|
3
1
|
import { ZLinkFrameworkException } from '../../contracts';
|
|
4
2
|
import type { Message } from '../../contracts/Common/Message';
|
|
3
|
+
import type { ZLinkBackendMeshNode, ZLinkBackendSpot } from '../backend/contracts';
|
|
4
|
+
import { type ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
5
|
+
import { type ZLinkBackendMessageLike as MessageLike } from '../backend/runtime-values';
|
|
6
|
+
import type { ZLinkRuntimeMetrics } from '../diagnostics';
|
|
7
|
+
import { type ZLinkMessageFlowTracer } from '../diagnostics';
|
|
5
8
|
import { type ZLinkSubmitResult } from '../messaging/submission-result';
|
|
6
9
|
import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
|
|
7
|
-
import type {
|
|
8
|
-
import { type ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
10
|
+
import type { ZLinkSpotRoutedSendOptions, ZLinkSpotRoutedRequestOptions } from '../spots/spot-outbound';
|
|
9
11
|
import { type ZLinkChannelEnvelopeCodecRegistry } from './channel-envelope';
|
|
10
12
|
export interface ZLinkChannelClientTransport {
|
|
11
|
-
send(channelName: string, packetName: string | undefined, message: unknown,
|
|
13
|
+
send(channelName: string, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): void | ZLinkSubmitResult | Promise<void | ZLinkSubmitResult>;
|
|
12
14
|
request<TReply>(channelName: string, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<TReply>;
|
|
13
15
|
tryPublish?(channelName: string, topic: string, packetName: string | undefined, event: unknown, metadata?: ReadonlyMap<string, string>): ZLinkSubmitResult;
|
|
14
16
|
publish(channelName: string, topic: string, packetName: string | undefined, event: unknown, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): ZLinkSubmitResult | Promise<ZLinkSubmitResult>;
|
|
@@ -19,14 +21,12 @@ export interface ZLinkSpotPublisherClientTransport {
|
|
|
19
21
|
publish(meshName: string, channelName: string, topic: string, packetName: string | undefined, event: unknown, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): ZLinkSubmitResult | Promise<ZLinkSubmitResult>;
|
|
20
22
|
}
|
|
21
23
|
export interface ZLinkRouteClientTransport {
|
|
22
|
-
submit(routerChannelId: string, targetNodeRid: string, packetName: string | undefined, message: unknown,
|
|
24
|
+
submit(routerChannelId: string, targetNodeRid: string, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): void | ZLinkSubmitResult | Promise<void | ZLinkSubmitResult>;
|
|
23
25
|
request<TReply>(routerChannelId: string, targetNodeRid: string, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<TReply>;
|
|
24
|
-
submitToChannel(meshName: string, channelName: string, packetName: string | undefined, message: unknown,
|
|
26
|
+
submitToChannel(meshName: string, channelName: string, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): void | ZLinkSubmitResult | Promise<void | ZLinkSubmitResult>;
|
|
25
27
|
requestToChannel<TReply>(meshName: string, channelName: string, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<TReply>;
|
|
26
28
|
sendToSpot?(spotRouteTarget: ZLinkSpotRouteTarget, message: unknown, options: {
|
|
27
29
|
readonly packetName?: string;
|
|
28
|
-
readonly timeoutMs?: number;
|
|
29
|
-
readonly signal?: AbortSignal;
|
|
30
30
|
readonly metadata?: ReadonlyMap<string, string>;
|
|
31
31
|
}): Promise<ZLinkSubmitResult>;
|
|
32
32
|
requestToSpot?<TReply = unknown>(spotRouteTarget: ZLinkSpotRouteTarget, request: unknown, options: {
|
|
@@ -37,16 +37,16 @@ export interface ZLinkRouteClientTransport {
|
|
|
37
37
|
}): Promise<TReply>;
|
|
38
38
|
}
|
|
39
39
|
interface ZLinkChannelTransportRuntime {
|
|
40
|
-
send(channelName: string, packetName: string | undefined, message: unknown,
|
|
40
|
+
send(channelName: string, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<ZLinkSubmitResult>;
|
|
41
41
|
request<TReply>(channelName: string, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<TReply>;
|
|
42
42
|
tryPublish(channelName: string, topic: string, packetName: string | undefined, event: unknown, metadata?: ReadonlyMap<string, string>): ZLinkSubmitResult;
|
|
43
43
|
publish(channelName: string, topic: string, packetName: string | undefined, event: unknown, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<ZLinkSubmitResult>;
|
|
44
44
|
canRouteChannel(routerChannelId: string): boolean;
|
|
45
45
|
canRoutePacketChannel(routerChannelId: string): boolean;
|
|
46
|
-
routeSubmit(routerChannelId: string, targetNodeRid: string, packetName: string | undefined, message: unknown,
|
|
46
|
+
routeSubmit(routerChannelId: string, targetNodeRid: string, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<ZLinkSubmitResult>;
|
|
47
47
|
routeRequest<TReply>(routerChannelId: string, targetNodeRid: string, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<TReply>;
|
|
48
|
-
routeSendToSpot(spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown,
|
|
49
|
-
routeSendFromSpotToSpot(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown,
|
|
48
|
+
routeSendToSpot(spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<void>;
|
|
49
|
+
routeSendFromSpotToSpot(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<void>;
|
|
50
50
|
routeRequestToSpot<TReply>(spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<TReply>;
|
|
51
51
|
routeRequestFromSpotToSpot<TReply>(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply>;
|
|
52
52
|
routeRequestRawFromSpotToSpot(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal): Promise<readonly Message[]>;
|
|
@@ -61,41 +61,31 @@ export declare class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTrans
|
|
|
61
61
|
private readonly localNodeSubmit?;
|
|
62
62
|
private readonly metrics?;
|
|
63
63
|
private readonly flowCreationEnabled;
|
|
64
|
+
private readonly outboundFlow;
|
|
64
65
|
constructor(manager: () => ZLinkChannelTransportRuntime | undefined, routeChannelPredicate?: ((routerChannelId: string) => boolean) | undefined, meshRuntime?: (() => {
|
|
65
66
|
readonly meshNode: (meshName: string) => ZLinkBackendMeshNode | undefined;
|
|
66
67
|
readonly meshCompletionTable: (meshName: string) => ZLinkMeshCompletionTable | undefined;
|
|
67
|
-
} | undefined) | undefined, codecs?: ZLinkChannelEnvelopeCodecRegistry | undefined, manualNodeTarget?: ((meshName: string, targetNodeRid: string) => boolean | undefined) | undefined, localNodeSubmit?: ((meshName: string, sourceNodeRid: string, parts: readonly MessageLike[]) => ZLinkSubmitResult) | undefined, metrics?: ZLinkRuntimeMetrics | undefined, flowCreationEnabled?: () => boolean);
|
|
68
|
+
} | undefined) | undefined, codecs?: ZLinkChannelEnvelopeCodecRegistry | undefined, manualNodeTarget?: ((meshName: string, targetNodeRid: string) => boolean | undefined) | undefined, localNodeSubmit?: ((meshName: string, sourceNodeRid: string, parts: readonly MessageLike[]) => ZLinkSubmitResult) | undefined, metrics?: ZLinkRuntimeMetrics | undefined, flowCreationEnabled?: () => boolean, outboundFlow?: () => ZLinkMessageFlowTracer | undefined);
|
|
68
69
|
canRouteChannel(routerChannelId: string): boolean;
|
|
69
70
|
canRoutePacketChannel(routerChannelId: string): boolean;
|
|
70
|
-
submit(meshName: string, targetNodeRid: string, packetName: string | undefined, message: unknown,
|
|
71
|
-
submitInfrastructure(meshName: string, targetNodeRid: string, packetName: string | undefined, message: unknown,
|
|
71
|
+
submit(meshName: string, targetNodeRid: string, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<ZLinkSubmitResult>;
|
|
72
|
+
submitInfrastructure(meshName: string, targetNodeRid: string, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<ZLinkSubmitResult>;
|
|
72
73
|
private submitNode;
|
|
73
74
|
request<TReply>(meshName: string, targetNodeRid: string, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<TReply>;
|
|
74
75
|
private requestScoped;
|
|
75
|
-
|
|
76
|
+
private traceNodeRequest;
|
|
77
|
+
submitToChannel(meshName: string, channelName: string, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<ZLinkSubmitResult>;
|
|
76
78
|
private submitToChannelScoped;
|
|
77
79
|
requestToChannel<TReply>(meshName: string, channelName: string, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<TReply>;
|
|
78
80
|
private requestToChannelScoped;
|
|
79
81
|
private submitRequestOperation;
|
|
80
|
-
sendToSpot(spotRouteTarget: ZLinkSpotRouteTarget, message: unknown, options:
|
|
81
|
-
readonly packetName?: string;
|
|
82
|
-
readonly timeoutMs?: number;
|
|
83
|
-
readonly signal?: AbortSignal;
|
|
84
|
-
readonly metadata?: ReadonlyMap<string, string>;
|
|
85
|
-
}): Promise<ZLinkSubmitResult>;
|
|
82
|
+
sendToSpot(spotRouteTarget: ZLinkSpotRouteTarget, message: unknown, options: ZLinkSpotRoutedSendOptions): Promise<ZLinkSubmitResult>;
|
|
86
83
|
private sendToSpotScoped;
|
|
87
84
|
sendFromSpotToSpot(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, message: unknown, options: {
|
|
88
85
|
readonly packetName?: string;
|
|
89
|
-
readonly timeoutMs?: number;
|
|
90
|
-
readonly signal?: AbortSignal;
|
|
91
86
|
readonly metadata?: ReadonlyMap<string, string>;
|
|
92
87
|
}): Promise<ZLinkSubmitResult>;
|
|
93
|
-
requestToSpot<TReply = unknown>(spotRouteTarget: ZLinkSpotRouteTarget, request: unknown, options:
|
|
94
|
-
readonly packetName?: string;
|
|
95
|
-
readonly timeoutMs?: number;
|
|
96
|
-
readonly signal?: AbortSignal;
|
|
97
|
-
readonly metadata?: ReadonlyMap<string, string>;
|
|
98
|
-
}): Promise<TReply>;
|
|
88
|
+
requestToSpot<TReply = unknown>(spotRouteTarget: ZLinkSpotRouteTarget, request: unknown, options: ZLinkSpotRoutedRequestOptions): Promise<TReply>;
|
|
99
89
|
private requestToSpotScoped;
|
|
100
90
|
requestFromSpotToSpot<TReply = unknown>(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, request: unknown, options: {
|
|
101
91
|
readonly packetName?: string;
|
|
@@ -2,19 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkRuntimeRouteTransport = void 0;
|
|
4
4
|
exports.meshRequestFailure = meshRequestFailure;
|
|
5
|
-
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
6
|
-
const runtime_message_1 = require("../backend/runtime-message");
|
|
7
|
-
const runtime_values_1 = require("../backend/runtime-values");
|
|
8
5
|
const contracts_1 = require("../../contracts");
|
|
9
|
-
const
|
|
10
|
-
const configuration_1 = require("../configuration");
|
|
6
|
+
const Registration_1 = require("../../contracts/Configuration/Registration");
|
|
11
7
|
const Spots_1 = require("../../contracts/Spots");
|
|
12
8
|
const abort_1 = require("../abort");
|
|
13
9
|
const mesh_completion_table_1 = require("../backend/mesh-completion-table");
|
|
10
|
+
const runtime_message_1 = require("../backend/runtime-message");
|
|
11
|
+
const runtime_values_1 = require("../backend/runtime-values");
|
|
12
|
+
const configuration_1 = require("../configuration");
|
|
13
|
+
const flow_context_1 = require("../diagnostics/flow-context");
|
|
14
|
+
const diagnostics_1 = require("../diagnostics");
|
|
15
|
+
const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
|
|
16
|
+
const channel_outbound_operations_1 = require("./channel-outbound-operations");
|
|
17
|
+
const service_stateful_registry_1 = require("../foundation/service-stateful-registry");
|
|
18
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
19
|
+
const submission_result_1 = require("../messaging/submission-result");
|
|
14
20
|
const routing_id_1 = require("../routing-id");
|
|
15
21
|
const channel_envelope_1 = require("./channel-envelope");
|
|
16
|
-
const service_stateful_registry_1 = require("../foundation/service-stateful-registry");
|
|
17
|
-
const flow_context_1 = require("../diagnostics/flow-context");
|
|
18
22
|
class ZLinkRuntimeRouteTransport {
|
|
19
23
|
manager;
|
|
20
24
|
routeChannelPredicate;
|
|
@@ -24,7 +28,8 @@ class ZLinkRuntimeRouteTransport {
|
|
|
24
28
|
localNodeSubmit;
|
|
25
29
|
metrics;
|
|
26
30
|
flowCreationEnabled;
|
|
27
|
-
|
|
31
|
+
outboundFlow;
|
|
32
|
+
constructor(manager, routeChannelPredicate = undefined, meshRuntime = undefined, codecs, manualNodeTarget, localNodeSubmit, metrics, flowCreationEnabled = () => true, outboundFlow = () => undefined) {
|
|
28
33
|
this.manager = manager;
|
|
29
34
|
this.routeChannelPredicate = routeChannelPredicate;
|
|
30
35
|
this.meshRuntime = meshRuntime;
|
|
@@ -33,6 +38,7 @@ class ZLinkRuntimeRouteTransport {
|
|
|
33
38
|
this.localNodeSubmit = localNodeSubmit;
|
|
34
39
|
this.metrics = metrics;
|
|
35
40
|
this.flowCreationEnabled = flowCreationEnabled;
|
|
41
|
+
this.outboundFlow = outboundFlow;
|
|
36
42
|
}
|
|
37
43
|
canRouteChannel(routerChannelId) {
|
|
38
44
|
const manager = this.manager();
|
|
@@ -46,20 +52,19 @@ class ZLinkRuntimeRouteTransport {
|
|
|
46
52
|
this.routeChannelPredicate?.(routerChannelId) ??
|
|
47
53
|
false);
|
|
48
54
|
}
|
|
49
|
-
async submit(meshName, targetNodeRid, packetName, message,
|
|
55
|
+
async submit(meshName, targetNodeRid, packetName, message, metadata) {
|
|
50
56
|
// Call-scoped flow (spec 27 §4): the envelope flow pair lives only for
|
|
51
57
|
// the duration of this outbound call, never in the caller's context.
|
|
52
|
-
return (0, flow_context_1.runWithOutboundFlow)(this.flowCreationEnabled(), () => this.submitNode(meshName, targetNodeRid, packetName, message,
|
|
58
|
+
return (0, flow_context_1.runWithOutboundFlow)(this.flowCreationEnabled(), () => this.submitNode(meshName, targetNodeRid, packetName, message, metadata, false));
|
|
53
59
|
}
|
|
54
|
-
async submitInfrastructure(meshName, targetNodeRid, packetName, message,
|
|
55
|
-
return (0, flow_context_1.runWithOutboundFlow)(this.flowCreationEnabled(), () => this.submitNode(meshName, targetNodeRid, packetName, message,
|
|
60
|
+
async submitInfrastructure(meshName, targetNodeRid, packetName, message, metadata) {
|
|
61
|
+
return (0, flow_context_1.runWithOutboundFlow)(this.flowCreationEnabled(), () => this.submitNode(meshName, targetNodeRid, packetName, message, metadata, true));
|
|
56
62
|
}
|
|
57
|
-
async submitNode(meshName, targetNodeRid, packetName, message,
|
|
63
|
+
async submitNode(meshName, targetNodeRid, packetName, message, metadata, allowObjectClientTarget) {
|
|
58
64
|
const node = this.meshNode(meshName);
|
|
59
65
|
if (node === undefined) {
|
|
60
|
-
return this.requireManager().routeSubmit(meshName, targetNodeRid, packetName, message,
|
|
66
|
+
return this.requireManager().routeSubmit(meshName, targetNodeRid, packetName, message, metadata);
|
|
61
67
|
}
|
|
62
|
-
(0, abort_1.throwIfAborted)(signal);
|
|
63
68
|
if (!allowObjectClientTarget &&
|
|
64
69
|
node.isObjectClientNodeDirectTarget?.((0, routing_id_1.toBackendRoutingId)(targetNodeRid)) === true) {
|
|
65
70
|
return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
|
|
@@ -88,22 +93,51 @@ class ZLinkRuntimeRouteTransport {
|
|
|
88
93
|
if (node === undefined) {
|
|
89
94
|
return this.requireManager().routeRequest(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata);
|
|
90
95
|
}
|
|
91
|
-
(0,
|
|
92
|
-
|
|
93
|
-
|
|
96
|
+
const correlationId = (0, channel_envelope_1.newChannelCorrelationId)();
|
|
97
|
+
try {
|
|
98
|
+
(0, abort_1.throwIfAborted)(signal);
|
|
99
|
+
if (node.isObjectClientNodeDirectTarget?.((0, routing_id_1.toBackendRoutingId)(targetNodeRid)) === true) {
|
|
100
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, `MeshNode '${meshName}' target '${targetNodeRid}' is an Object Client.`);
|
|
101
|
+
}
|
|
102
|
+
const parts = this.encodeMessage(1 /* ZLinkChannelMessageKind.Request */, meshName, packetName, request, timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, metadata, correlationId);
|
|
103
|
+
const completion = await this.submitRequestOperation(meshName, timeoutMs, signal, `MeshNode '${meshName}' request to node '${targetNodeRid}'`, (remainingTimeoutMs) => {
|
|
104
|
+
const operationId = node.requestToNode((0, routing_id_1.toBackendRoutingId)(targetNodeRid), parts, {
|
|
105
|
+
flags: 1,
|
|
106
|
+
timeoutMs: remainingTimeoutMs
|
|
107
|
+
});
|
|
108
|
+
this.traceNodeRequest(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, undefined, meshName, targetNodeRid, packetName, correlationId);
|
|
109
|
+
return operationId;
|
|
110
|
+
});
|
|
111
|
+
const reply = this.decodeMeshReply(meshName, completion);
|
|
112
|
+
this.traceNodeRequest(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.ReplyReceived, 'succeeded', meshName, targetNodeRid, packetName, correlationId);
|
|
113
|
+
return reply;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
if (!(0, channel_outbound_operations_1.isRemoteChannelErrorReply)(error)) {
|
|
117
|
+
this.traceNodeRequest(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.ReplyReceived, (0, channel_outbound_operations_1.requestTerminalResult)(error, signal), meshName, targetNodeRid, packetName, correlationId, error);
|
|
118
|
+
}
|
|
119
|
+
throw error;
|
|
94
120
|
}
|
|
95
|
-
const parts = this.encodeMessage(1 /* ZLinkChannelMessageKind.Request */, meshName, packetName, request, timeoutMs ?? 30_000, metadata);
|
|
96
|
-
const completion = await this.submitRequestOperation(meshName, timeoutMs, signal, `MeshNode '${meshName}' request to node '${targetNodeRid}'`, (remainingTimeoutMs) => node.requestToNode((0, routing_id_1.toBackendRoutingId)(targetNodeRid), parts, {
|
|
97
|
-
flags: 1,
|
|
98
|
-
timeoutMs: remainingTimeoutMs
|
|
99
|
-
}));
|
|
100
|
-
return this.decodeMeshReply(meshName, completion);
|
|
101
|
-
}
|
|
102
|
-
submitToChannel(meshName, channelName, packetName, message, signal, metadata) {
|
|
103
|
-
return (0, flow_context_1.runWithOutboundFlow)(this.flowCreationEnabled(), () => this.submitToChannelScoped(meshName, channelName, packetName, message, signal, metadata));
|
|
104
121
|
}
|
|
105
|
-
|
|
106
|
-
(
|
|
122
|
+
traceNodeRequest(outcome, result, meshName, targetRid, packetName, correlationId, error) {
|
|
123
|
+
if (!this.flowCreationEnabled())
|
|
124
|
+
return;
|
|
125
|
+
(0, diagnostics_1.flowIfEnabled)(this.outboundFlow(), outcome, result)?.trace({
|
|
126
|
+
outcome,
|
|
127
|
+
result,
|
|
128
|
+
surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.Node,
|
|
129
|
+
messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request,
|
|
130
|
+
meshName,
|
|
131
|
+
targetRid,
|
|
132
|
+
packetName,
|
|
133
|
+
correlationId,
|
|
134
|
+
...(error instanceof Error ? { errorType: error.name, errorMessage: error.message } : {})
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
submitToChannel(meshName, channelName, packetName, message, metadata) {
|
|
138
|
+
return (0, flow_context_1.runWithOutboundFlow)(this.flowCreationEnabled(), () => this.submitToChannelScoped(meshName, channelName, packetName, message, metadata));
|
|
139
|
+
}
|
|
140
|
+
async submitToChannelScoped(meshName, channelName, packetName, message, metadata) {
|
|
107
141
|
const node = this.requireMeshNode(meshName);
|
|
108
142
|
const parts = this.encodeMessage(3 /* ZLinkChannelMessageKind.Command */, channelName, packetName, message, undefined, metadata);
|
|
109
143
|
const operation = `MeshNode '${meshName}' send to channel '${channelName}'`;
|
|
@@ -124,7 +158,7 @@ class ZLinkRuntimeRouteTransport {
|
|
|
124
158
|
async requestToChannelScoped(meshName, channelName, packetName, request, timeoutMs, signal, metadata) {
|
|
125
159
|
(0, abort_1.throwIfAborted)(signal);
|
|
126
160
|
const node = this.requireMeshNode(meshName);
|
|
127
|
-
const parts = this.encodeMessage(1 /* ZLinkChannelMessageKind.Request */, channelName, packetName, request, timeoutMs ??
|
|
161
|
+
const parts = this.encodeMessage(1 /* ZLinkChannelMessageKind.Request */, channelName, packetName, request, timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, metadata);
|
|
128
162
|
const metric = this.metrics?.startRequest(meshName, 'channel');
|
|
129
163
|
try {
|
|
130
164
|
const completion = await this.submitRequestOperation(meshName, timeoutMs, signal, `MeshNode '${meshName}' request to channel '${channelName}'`, (remainingTimeoutMs) => node.requestToChannel(channelName, parts, { flags: 1, timeoutMs: remainingTimeoutMs }));
|
|
@@ -141,7 +175,7 @@ class ZLinkRuntimeRouteTransport {
|
|
|
141
175
|
}
|
|
142
176
|
}
|
|
143
177
|
async submitRequestOperation(meshName, timeoutMs, signal, operation, attempt) {
|
|
144
|
-
const effectiveTimeoutMs = Math.max(1, timeoutMs ??
|
|
178
|
+
const effectiveTimeoutMs = Math.max(1, timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS);
|
|
145
179
|
const deadlineMs = performance.now() + effectiveTimeoutMs;
|
|
146
180
|
const remainingTimeoutMs = deadlineMs - performance.now();
|
|
147
181
|
if (remainingTimeoutMs <= 0) {
|
|
@@ -163,15 +197,14 @@ class ZLinkRuntimeRouteTransport {
|
|
|
163
197
|
if (spotRouteTarget.spotKind === Spots_1.ZLinkSpotKind.Instance) {
|
|
164
198
|
throw new configuration_1.ZLinkConfigurationException('Instance Spot routes require the MeshNode command 39 transport.');
|
|
165
199
|
}
|
|
166
|
-
await this.requireManager().routeSendToSpot(spotRouteTarget, options.packetName, message, options.
|
|
200
|
+
await this.requireManager().routeSendToSpot(spotRouteTarget, options.packetName, message, options.metadata);
|
|
167
201
|
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
168
202
|
}
|
|
169
|
-
(0, abort_1.throwIfAborted)(options.signal);
|
|
170
203
|
const operation = `MeshNode '${spotRouteTarget.routerChannelId}' send to Spot '${spotRouteTarget.spotId}'`;
|
|
171
204
|
try {
|
|
172
205
|
const encoded = this.encodeMessage(3 /* ZLinkChannelMessageKind.Command */, spotRouteTarget.routerChannelId, options.packetName, message, undefined, options.metadata);
|
|
173
206
|
if (spotRouteTarget.spotKind === Spots_1.ZLinkSpotKind.Instance) {
|
|
174
|
-
return mapMeshSubmitResult(await node.sendToInstanceSpot(instanceSpotRouteFence(spotRouteTarget), encoded, undefined, options.metadata));
|
|
207
|
+
return mapMeshSubmitResult(await node.sendToInstanceSpot(instanceSpotRouteFence(spotRouteTarget), encoded, undefined, options.metadata, options.instanceSpot));
|
|
175
208
|
}
|
|
176
209
|
return mapMeshSubmitResult(await node
|
|
177
210
|
.entrySpot()
|
|
@@ -186,7 +219,7 @@ class ZLinkRuntimeRouteTransport {
|
|
|
186
219
|
}
|
|
187
220
|
}
|
|
188
221
|
async sendFromSpotToSpot(sourceSpot, spotRouteTarget, message, options) {
|
|
189
|
-
await this.requireManager().routeSendFromSpotToSpot(sourceSpot, spotRouteTarget, options.packetName, message, options.
|
|
222
|
+
await this.requireManager().routeSendFromSpotToSpot(sourceSpot, spotRouteTarget, options.packetName, message, options.metadata);
|
|
190
223
|
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
191
224
|
}
|
|
192
225
|
requestToSpot(spotRouteTarget, request, options) {
|
|
@@ -206,7 +239,7 @@ class ZLinkRuntimeRouteTransport {
|
|
|
206
239
|
try {
|
|
207
240
|
const encoded = this.encodeMessage(1 /* ZLinkChannelMessageKind.Request */, meshName, options.packetName, request, options.timeoutMs, options.metadata);
|
|
208
241
|
completionPromise = this.completionTable(meshName).submit(() => spotRouteTarget.spotKind === Spots_1.ZLinkSpotKind.Instance
|
|
209
|
-
? node.requestInstanceSpot(instanceSpotRouteFence(spotRouteTarget), encoded, options.timeoutMs, undefined, options.metadata)
|
|
242
|
+
? node.requestInstanceSpot(instanceSpotRouteFence(spotRouteTarget), encoded, options.timeoutMs, undefined, options.metadata, options.instanceSpot)
|
|
210
243
|
: node
|
|
211
244
|
.entrySpot()
|
|
212
245
|
.requestToSpot((0, routing_id_1.toBackendRoutingId)(spotRouteTarget.targetNodeRid), (0, routing_id_1.toBackendRoutingId)(spotRouteTarget.spotId), spotRouteTarget.targetSpotGeneration ?? 0n, encoded, {
|
|
@@ -311,8 +344,8 @@ class ZLinkRuntimeRouteTransport {
|
|
|
311
344
|
}
|
|
312
345
|
return table;
|
|
313
346
|
}
|
|
314
|
-
encodeMessage(kind, channelName, packetName, message, timeoutMs, metadata) {
|
|
315
|
-
return (0, channel_envelope_1.encodeChannelEnvelopeParts)(kind, channelName, packetName, message, timeoutMs, undefined, this.codecs,
|
|
347
|
+
encodeMessage(kind, channelName, packetName, message, timeoutMs, metadata, correlationId) {
|
|
348
|
+
return (0, channel_envelope_1.encodeChannelEnvelopeParts)(kind, channelName, packetName, message, timeoutMs, undefined, this.codecs, correlationId, this.flowCreationEnabled(), metadata);
|
|
316
349
|
}
|
|
317
350
|
async waitForMeshReply(meshName, completionPromise) {
|
|
318
351
|
const completion = await completionPromise;
|
|
@@ -344,7 +377,7 @@ function directSpotRouteFence(target) {
|
|
|
344
377
|
target.targetOwnerId === undefined ||
|
|
345
378
|
target.ownerLeaseGeneration === undefined ||
|
|
346
379
|
target.authorityStoreVersion === undefined) {
|
|
347
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.
|
|
380
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `Spot '${String(target.spotId)}' has no complete Ready authority fence.`);
|
|
348
381
|
}
|
|
349
382
|
return {
|
|
350
383
|
spot: {
|
|
@@ -379,21 +412,7 @@ function instanceSpotRouteFence(target) {
|
|
|
379
412
|
};
|
|
380
413
|
}
|
|
381
414
|
function mapMeshSubmitResult(result) {
|
|
382
|
-
|
|
383
|
-
case runtime_values_1.SubmitResult.Ok:
|
|
384
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
385
|
-
case runtime_values_1.SubmitResult.Backpressured:
|
|
386
|
-
case runtime_values_1.SubmitResult.NotAdmitted:
|
|
387
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Backpressured };
|
|
388
|
-
case runtime_values_1.SubmitResult.NotFound:
|
|
389
|
-
return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
|
|
390
|
-
case runtime_values_1.SubmitResult.NotConnected:
|
|
391
|
-
return { status: submission_result_1.ZLinkSubmitStatus.RouteNotConnected };
|
|
392
|
-
case runtime_values_1.SubmitResult.Terminated:
|
|
393
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Shutdown };
|
|
394
|
-
default:
|
|
395
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed, `Mesh submission failed with result ${result}.`);
|
|
396
|
-
}
|
|
415
|
+
return (0, submission_result_1.classifySubmitResult)(result, 'Mesh submission');
|
|
397
416
|
}
|
|
398
417
|
function mapMeshSubmissionError(error, operation) {
|
|
399
418
|
if (error instanceof contracts_1.ZLinkFrameworkException) {
|
|
@@ -408,14 +427,13 @@ function mapMeshSubmissionError(error, operation) {
|
|
|
408
427
|
return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotGenerationStale, `${operation} received a stale Spot authority fence: ${error.message}`, true, error);
|
|
409
428
|
}
|
|
410
429
|
if ((0, runtime_values_1.isZLinkBackendResultError)(error)) {
|
|
411
|
-
const
|
|
412
|
-
|
|
413
|
-
error.result
|
|
414
|
-
|
|
415
|
-
error.result
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
: framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `${operation} failed with result ${error.result}.`, retriable, error);
|
|
430
|
+
const terminal = error.operation === 'request'
|
|
431
|
+
? error.result
|
|
432
|
+
: (0, submission_result_1.submitToRequestResult)(error.result, error.phase);
|
|
433
|
+
if (terminal === runtime_values_1.RequestResult.NotFound) {
|
|
434
|
+
return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, `${operation} failed with result ${error.result}.`, false, error);
|
|
435
|
+
}
|
|
436
|
+
return new contracts_1.ZLinkFrameworkException((0, framework_errors_internal_1.requestResultToPublicErrorKind)(terminal), `${operation} failed with result ${error.result}.`, error);
|
|
419
437
|
}
|
|
420
438
|
return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `${operation} failed before native submission completed: ${error instanceof Error ? error.message : String(error)}`, true, error);
|
|
421
439
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ZLinkClientServerServerDescriptor } from '../../contracts/Locations';
|
|
2
2
|
import { type ZLinkLocationOptionOverrides } from '../../contracts/Locations/Options';
|
|
3
|
-
import type
|
|
3
|
+
import { type ZLinkFrameworkRegistration } from '../configuration';
|
|
4
4
|
import type { ZLinkLocationRuntime, ZLinkLocationRuntimeStores } from '../locations';
|
|
5
5
|
import { ZLinkChannelSocketRegistry } from './channel-socket-registry';
|
|
6
6
|
/**
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkClientServerLocationRuntime = void 0;
|
|
4
|
+
const RegistrationBuilderPolicy_1 = require("../../contracts/Configuration/RegistrationBuilderPolicy");
|
|
4
5
|
const Locations_1 = require("../../contracts/Locations");
|
|
5
6
|
const Options_1 = require("../../contracts/Locations/Options");
|
|
6
|
-
const
|
|
7
|
+
const Stores_1 = require("../../contracts/Locations/Stores");
|
|
7
8
|
const runtime_message_1 = require("../backend/runtime-message");
|
|
8
|
-
const client_server_service_wire_1 = require("./client-server-service-wire");
|
|
9
|
-
const runtime_state_projections_1 = require("../foundation/runtime-state-projections");
|
|
10
|
-
const state_lane_1 = require("../execution/state-lane");
|
|
11
9
|
const runtime_values_1 = require("../backend/runtime-values");
|
|
10
|
+
const configuration_1 = require("../configuration");
|
|
11
|
+
const state_lane_1 = require("../execution/state-lane");
|
|
12
|
+
const runtime_state_projections_1 = require("../foundation/runtime-state-projections");
|
|
13
|
+
const client_server_service_wire_1 = require("./client-server-service-wire");
|
|
12
14
|
/**
|
|
13
15
|
* Owns the dedicated ClientServer discovery domain. It never converts these
|
|
14
16
|
* descriptors into RouteMesh peer rows.
|
|
@@ -129,7 +131,7 @@ class ZLinkClientServerLocationRuntime {
|
|
|
129
131
|
lifecycleGeneration: identity.lifecycleGeneration,
|
|
130
132
|
descriptorRevision: 1n,
|
|
131
133
|
endpoint: identity.endpoint,
|
|
132
|
-
weight: channel.server.weight ??
|
|
134
|
+
weight: channel.server.weight ?? RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT,
|
|
133
135
|
state: Locations_1.ZLinkFrameworkRuntimeState.Serving,
|
|
134
136
|
securityIdentity: 'default',
|
|
135
137
|
ownerId: owner.ownerId,
|
|
@@ -193,7 +195,7 @@ class ZLinkClientServerLocationRuntime {
|
|
|
193
195
|
const rows = [];
|
|
194
196
|
let continuationToken;
|
|
195
197
|
do {
|
|
196
|
-
const page = await this.store.listClientServers(channelName, { pageSize:
|
|
198
|
+
const page = await this.store.listClientServers(channelName, { pageSize: Stores_1.ZLINK_PROVIDER_MAX_PAGE_SIZE, continuationToken }, signal);
|
|
197
199
|
rows.push(...page.items);
|
|
198
200
|
continuationToken = page.continuationToken;
|
|
199
201
|
} while (continuationToken !== undefined);
|
|
@@ -405,7 +407,7 @@ function sameDescriptor(left, right) {
|
|
|
405
407
|
left.ownerId === right.ownerId &&
|
|
406
408
|
left.leaseGeneration === right.leaseGeneration);
|
|
407
409
|
}
|
|
408
|
-
function toDiscoveryDescriptor(descriptor, effectiveMaxMessageBytes =
|
|
410
|
+
function toDiscoveryDescriptor(descriptor, effectiveMaxMessageBytes = client_server_service_wire_1.DEFAULT_CLIENT_SERVER_MESSAGE_LIMIT) {
|
|
409
411
|
return {
|
|
410
412
|
channelName: descriptor.channelName,
|
|
411
413
|
serverRoutingId: String(descriptor.serverRid),
|
|
@@ -422,7 +424,7 @@ function requestAdmission(dealer, descriptor, timeoutMs) {
|
|
|
422
424
|
const message = runtime_message_1.ZLinkBufferMessage.from((0, client_server_service_wire_1.encodeClientServerHello)({
|
|
423
425
|
channelName: descriptor.channelName,
|
|
424
426
|
securityIdentity: descriptor.securityIdentity,
|
|
425
|
-
normalizedEffectiveMaxMessageBytes:
|
|
427
|
+
normalizedEffectiveMaxMessageBytes: (0, client_server_service_wire_1.normalizeClientServerMessageLimit)(dealer.maxMessageSize)
|
|
426
428
|
}));
|
|
427
429
|
return dealer.request(message, timeoutMs).then((parts) => {
|
|
428
430
|
try {
|
|
@@ -464,6 +466,3 @@ function closeMessages(parts) {
|
|
|
464
466
|
for (const part of parts)
|
|
465
467
|
part.close();
|
|
466
468
|
}
|
|
467
|
-
function normalizedMessageLimit(value) {
|
|
468
|
-
return Number.isSafeInteger(value) && value > 0 ? Math.min(value, 0xffff_ffff) : 0x7fff_ffff;
|
|
469
|
-
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
1
|
+
import { type ZLinkClientServerServerDescriptor, ZLinkFrameworkRuntimeState } from '../../contracts/Locations';
|
|
2
|
+
export declare const DEFAULT_CLIENT_SERVER_MESSAGE_LIMIT = 2147483647;
|
|
3
|
+
export declare function normalizeClientServerMessageLimit(value: number): number;
|
|
4
|
+
export declare enum ClientServerRejectReason {
|
|
5
|
+
ProtocolVersionUnsupported = 1,
|
|
6
|
+
AdmissionMismatch = 3
|
|
7
|
+
}
|
|
3
8
|
export interface ZLinkClientServerHello {
|
|
4
9
|
readonly channelName: string;
|
|
5
10
|
readonly securityIdentity: string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ZLinkClientServerServiceWireError = void 0;
|
|
3
|
+
exports.ZLinkClientServerServiceWireError = exports.ClientServerRejectReason = exports.DEFAULT_CLIENT_SERVER_MESSAGE_LIMIT = void 0;
|
|
4
|
+
exports.normalizeClientServerMessageLimit = normalizeClientServerMessageLimit;
|
|
4
5
|
exports.encodeClientServerHello = encodeClientServerHello;
|
|
5
6
|
exports.encodeClientServerAdmit = encodeClientServerAdmit;
|
|
6
7
|
exports.encodeClientServerUpdate = encodeClientServerUpdate;
|
|
@@ -9,12 +10,29 @@ exports.encodeClientServerLivenessProbe = encodeClientServerLivenessProbe;
|
|
|
9
10
|
exports.encodeClientServerLivenessAck = encodeClientServerLivenessAck;
|
|
10
11
|
exports.isClientServerControlFrame = isClientServerControlFrame;
|
|
11
12
|
exports.decodeClientServerControl = decodeClientServerControl;
|
|
13
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
14
|
+
const EndpointNotation_1 = require("../../contracts/Configuration/EndpointNotation");
|
|
15
|
+
const RegistrationBuilderPolicy_1 = require("../../contracts/Configuration/RegistrationBuilderPolicy");
|
|
12
16
|
const Locations_1 = require("../../contracts/Locations");
|
|
13
17
|
const service_wire_binary_primitives_1 = require("../foundation/service-wire-binary-primitives");
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
const service_wire_constants_generated_1 = require("../foundation/service-wire-constants.generated");
|
|
19
|
+
exports.DEFAULT_CLIENT_SERVER_MESSAGE_LIMIT = 0x7fff_ffff;
|
|
20
|
+
function normalizeClientServerMessageLimit(value) {
|
|
21
|
+
return Number.isSafeInteger(value) && value > 0
|
|
22
|
+
? Math.min(value, stream_wire_1.UINT32_MAX)
|
|
23
|
+
: exports.DEFAULT_CLIENT_SERVER_MESSAGE_LIMIT;
|
|
24
|
+
}
|
|
25
|
+
const CLIENT_SERVER_PREFIX_BYTES = 5;
|
|
26
|
+
const CLIENT_SERVER_ROLE_BODY_MAX_BYTES = 0xffff;
|
|
27
|
+
const CLIENT_SERVER_TEXT_MAX_BYTES = 4096;
|
|
28
|
+
var ClientServerRejectReason;
|
|
29
|
+
(function (ClientServerRejectReason) {
|
|
30
|
+
ClientServerRejectReason[ClientServerRejectReason["ProtocolVersionUnsupported"] = 1] = "ProtocolVersionUnsupported";
|
|
31
|
+
ClientServerRejectReason[ClientServerRejectReason["AdmissionMismatch"] = 3] = "AdmissionMismatch";
|
|
32
|
+
})(ClientServerRejectReason || (exports.ClientServerRejectReason = ClientServerRejectReason = {}));
|
|
33
|
+
const MAGIC_0 = service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[0];
|
|
34
|
+
const MAGIC_1 = service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[1];
|
|
35
|
+
const WIRE_MAJOR = service_wire_constants_generated_1.SERVICE_WIRE_MAJOR;
|
|
18
36
|
const TOPOLOGY_CLIENT_SERVER = 2;
|
|
19
37
|
const ROLE_CLIENT = 1;
|
|
20
38
|
const ROLE_SERVER = 2;
|
|
@@ -26,7 +44,7 @@ const COMMAND_UPDATE = 4;
|
|
|
26
44
|
const COMMAND_LIVENESS_PROBE = 5;
|
|
27
45
|
const COMMAND_LIVENESS_ACK = 6;
|
|
28
46
|
const MAX_DESCRIPTOR_BYTES = 1024 * 1024;
|
|
29
|
-
const MAX_U32 =
|
|
47
|
+
const MAX_U32 = stream_wire_1.UINT32_MAX;
|
|
30
48
|
const MAX_GENERATION = 0x7fffffffffffffffn;
|
|
31
49
|
class ZLinkClientServerServiceWireError extends Error {
|
|
32
50
|
constructor(message) {
|
|
@@ -58,7 +76,10 @@ function encodeClientServerLivenessAck(probeId) {
|
|
|
58
76
|
return encodeLiveness(COMMAND_LIVENESS_ACK, probeId);
|
|
59
77
|
}
|
|
60
78
|
function isClientServerControlFrame(frame) {
|
|
61
|
-
return (frame.byteLength >=
|
|
79
|
+
return (frame.byteLength >= CLIENT_SERVER_PREFIX_BYTES &&
|
|
80
|
+
frame[0] === MAGIC_0 &&
|
|
81
|
+
frame[1] === MAGIC_1 &&
|
|
82
|
+
frame[2] === WIRE_MAJOR);
|
|
62
83
|
}
|
|
63
84
|
function decodeClientServerControl(frame) {
|
|
64
85
|
if (frame.byteLength > MAX_DESCRIPTOR_BYTES)
|
|
@@ -121,7 +142,7 @@ function encodeServerAdmission(command, descriptor, normalizedEffectiveMaxMessag
|
|
|
121
142
|
return encodeAdmission(command, ROLE_SERVER, roleBody);
|
|
122
143
|
}
|
|
123
144
|
function encodeAdmission(command, role, roleBody) {
|
|
124
|
-
if (roleBody.byteLength >
|
|
145
|
+
if (roleBody.byteLength > CLIENT_SERVER_ROLE_BODY_MAX_BYTES)
|
|
125
146
|
fail('ClientServer role body is oversized.');
|
|
126
147
|
const admission = concat(Buffer.of(role), encodeU16(roleBody.byteLength), roleBody);
|
|
127
148
|
const result = concat(prefix(command), Buffer.of(TOPOLOGY_CLIENT_SERVER), encodeU32(admission.byteLength), admission);
|
|
@@ -149,7 +170,7 @@ function decodeServerAdmission(reader) {
|
|
|
149
170
|
const lifecycleGeneration = reader.nonZeroU64('lifecycleGeneration');
|
|
150
171
|
const descriptorRevision = reader.nonZeroU64('descriptorRevision');
|
|
151
172
|
const weight = reader.u32('weight');
|
|
152
|
-
if (
|
|
173
|
+
if (!(0, RegistrationBuilderPolicy_1.isValidPublicWeight)(weight))
|
|
153
174
|
fail('ClientServer weight is invalid.');
|
|
154
175
|
return {
|
|
155
176
|
channelName,
|
|
@@ -196,7 +217,7 @@ function encodeText8(value, field) {
|
|
|
196
217
|
return concat(Buffer.of(bytes.byteLength), bytes);
|
|
197
218
|
}
|
|
198
219
|
function encodeText16(value, field) {
|
|
199
|
-
const bytes = (0, service_wire_binary_primitives_1.encodeCanonicalServiceWireText)(value, field,
|
|
220
|
+
const bytes = (0, service_wire_binary_primitives_1.encodeCanonicalServiceWireText)(value, field, CLIENT_SERVER_TEXT_MAX_BYTES, fail);
|
|
200
221
|
return concat(encodeU16(bytes.byteLength), bytes);
|
|
201
222
|
}
|
|
202
223
|
function runtimeStateToWire(value) {
|
|
@@ -295,7 +316,7 @@ class Reader {
|
|
|
295
316
|
}
|
|
296
317
|
text16(field) {
|
|
297
318
|
const length = this.u16(`${field}.length`);
|
|
298
|
-
if (length < 1 || length >
|
|
319
|
+
if (length < 1 || length > CLIENT_SERVER_TEXT_MAX_BYTES)
|
|
299
320
|
fail(`${field} length is invalid.`);
|
|
300
321
|
return decodeText(this.bytes(length, field), field);
|
|
301
322
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type ZLinkDispatchFailure } from '../../contracts/Dispatch/ZLinkDispatchOptions';
|
|
2
|
-
import type
|
|
3
|
-
import { ZLinkMessageFlowTracer, type ZLinkDiagnosticsContext } from '../diagnostics';
|
|
2
|
+
import { type ZLinkRuntimeMetrics, ZLinkMessageFlowTracer, type ZLinkDiagnosticsContext } from '../diagnostics';
|
|
4
3
|
import type { ZLinkDispatchErrorSink } from '../diagnostics/dispatch-error-port';
|
|
5
4
|
export type { ZLinkDispatchErrorSink } from '../diagnostics/dispatch-error-port';
|
|
6
5
|
type ZLinkRuntimeDispatchFailure = ZLinkDispatchFailure & {
|
|
@@ -4,6 +4,7 @@ exports.ZLinkDispatchErrorReporter = void 0;
|
|
|
4
4
|
const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
|
|
5
5
|
const diagnostics_1 = require("../diagnostics");
|
|
6
6
|
const dispatch_error_details_1 = require("../diagnostics/dispatch-error-details");
|
|
7
|
+
const runtime_metrics_1 = require("../diagnostics/runtime-metrics");
|
|
7
8
|
class ZLinkDispatchErrorReporter {
|
|
8
9
|
metrics;
|
|
9
10
|
reportedEvents = 0;
|
|
@@ -26,7 +27,7 @@ class ZLinkDispatchErrorReporter {
|
|
|
26
27
|
const normalized = normalizeDispatchFailure(event);
|
|
27
28
|
const dropReason = channelDropReason(normalized);
|
|
28
29
|
if (dropReason !== undefined) {
|
|
29
|
-
this.metrics?.count(
|
|
30
|
+
this.metrics?.count(runtime_metrics_1.METRIC_NAMES.MeshNodeMessagesDropped, 1, {
|
|
30
31
|
surface: normalized.surface,
|
|
31
32
|
message_kind: normalized.messageKind,
|
|
32
33
|
reason: dropReason
|