@zlink-systems/framework 0.25.0 → 0.27.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/Channels/IZLinkFanoutClient.d.ts +0 -6
- 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/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 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- 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/RouteMesh/RuntimeTopology.d.ts +8 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +16 -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 +28 -0
- package/dist/runtime/activation-admission.js +57 -0
- 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 +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +19 -17
- package/dist/runtime/actors/actor-handoff.d.ts +13 -7
- package/dist/runtime/actors/actor-handoff.js +36 -25
- 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 +85 -123
- 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 +3 -3
- package/dist/runtime/actors/actor-remote-joiner.js +11 -17
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
- 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/actor-source-transfer.d.ts +5 -5
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
- package/dist/runtime/actors/deferred-join-completion.js +21 -0
- package/dist/runtime/actors/index.d.ts +10 -8
- package/dist/runtime/actors/index.js +101 -73
- 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 +7 -1
- package/dist/runtime/admission.js +11 -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 +8 -33
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
- 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-factory.d.ts +1 -2
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
- package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +13 -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 -9
- package/dist/runtime/channels/channel-clients.js +68 -60
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -18
- 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 +2 -5
- package/dist/runtime/channels/channel-runtime-manager.js +4 -12
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
- package/dist/runtime/channels/channel-socket-registry.js +296 -235
- package/dist/runtime/channels/channel-transports.d.ts +11 -20
- package/dist/runtime/channels/channel-transports.js +68 -47
- 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 +133 -81
- 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.js +3 -2
- 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 +22 -9
- package/dist/runtime/execution/index.js +107 -37
- package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
- package/dist/runtime/execution/serial-execution-queue.js +99 -26
- 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/listener-records.d.ts +11 -0
- package/dist/runtime/foundation/listener-records.js +20 -0
- 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 +18 -26
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
- 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.d.ts +1 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +30 -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 +23 -8
- 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-coordinator.d.ts +9 -0
- package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
- 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 -19
- 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 +28 -24
- package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
- package/dist/runtime/foundation/service-topology-registry.js +22 -61
- 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 +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- 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 +28 -28
- package/dist/runtime/host/actor-transfer-runtime.js +210 -256
- 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 +19 -14
- package/dist/runtime/host/index.js +234 -175
- 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 +11 -23
- package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
- package/dist/runtime/host/route-mesh-runtime.js +178 -257
- 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 +71 -38
- package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- 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 -7
- package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
- package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
- package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
- 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 +79 -27
- 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 +5 -10
- package/dist/runtime/locations/lifecycle.js +4 -33
- 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 +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +44 -30
- 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 +8 -2
- package/dist/runtime/locations/spot-location-claims.js +40 -23
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
- package/dist/runtime/spots/index.d.ts +29 -29
- package/dist/runtime/spots/index.js +441 -313
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
- package/dist/runtime/spots/spot-activation-registry.js +27 -60
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
- package/dist/runtime/spots/spot-activation-state.js +4 -17
- package/dist/runtime/spots/spot-activation.d.ts +10 -9
- package/dist/runtime/spots/spot-activation.js +103 -81
- 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 +5 -55
- package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
- package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
- package/dist/runtime/spots/spot-actor-membership.js +44 -53
- 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 +3 -4
- package/dist/runtime/spots/spot-entry-activation.js +9 -21
- 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 +6 -5
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
- package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +10 -37
- 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 -2
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
- 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 +4 -20
- package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
- package/dist/runtime/spots/spot-serial-executor.js +9 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
- package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
- package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -19
- package/dist/runtime/streams/index.d.ts +15 -14
- package/dist/runtime/streams/index.js +38 -39
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- 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 +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/session-serial-executor.js +2 -2
- 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/Channels/IZLinkFanoutClient.ts +0 -7
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -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 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- 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/RouteMesh/RuntimeTopology.ts +10 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +15 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +72 -0
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +45 -39
- package/src/runtime/actors/actor-handoff.ts +55 -45
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +174 -215
- 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 +15 -36
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/actor-source-transfer.ts +5 -18
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +44 -0
- package/src/runtime/actors/index.ts +122 -88
- 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 +13 -2
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +15 -42
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
- package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
- package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
- package/src/runtime/backend/raw-binding-port.ts +14 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -31
- 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 +8 -15
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +369 -262
- package/src/runtime/channels/channel-transports.ts +161 -115
- 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 +175 -106
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- 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 +116 -38
- package/src/runtime/execution/serial-execution-queue.ts +179 -34
- 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/listener-records.ts +21 -0
- 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 +170 -571
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +41 -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 +30 -19
- 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-coordinator.ts +13 -0
- package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
- 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 -25
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
- package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
- package/src/runtime/foundation/service-topology-registry.ts +30 -79
- 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 +57 -147
- 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 +266 -418
- 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 +408 -312
- 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 +12 -44
- package/src/runtime/host/route-mesh-runtime.ts +236 -275
- 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 +1161 -904
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
- package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
- package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
- 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 +110 -31
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +16 -45
- 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 +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +90 -58
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +54 -26
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
- package/src/runtime/spots/index.ts +687 -437
- package/src/runtime/spots/spot-activation-registry.ts +42 -71
- package/src/runtime/spots/spot-activation-state.ts +4 -16
- package/src/runtime/spots/spot-activation.ts +167 -115
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
- package/src/runtime/spots/spot-actor-membership.ts +107 -75
- 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 -33
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +29 -21
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
- package/src/runtime/spots/spot-outbound.ts +47 -68
- 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 -6
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +10 -43
- package/src/runtime/spots/spot-serial-executor.ts +10 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +23 -37
- package/src/runtime/streams/index.ts +102 -88
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- 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 +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/session-serial-executor.ts +2 -2
- 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/deferred-join-accepted-journal.d.ts +0 -47
- package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
- 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/deferred-join-accepted-journal.ts +0 -1346
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -4,8 +4,11 @@ exports.ZLinkFanoutLocationRuntime = void 0;
|
|
|
4
4
|
const node_crypto_1 = require("node:crypto");
|
|
5
5
|
const Locations_1 = require("../../contracts/Locations");
|
|
6
6
|
const Options_1 = require("../../contracts/Locations/Options");
|
|
7
|
+
const Stores_1 = require("../../contracts/Locations/Stores");
|
|
7
8
|
const configuration_1 = require("../configuration");
|
|
8
9
|
const state_lane_1 = require("../execution/state-lane");
|
|
10
|
+
const runtime_state_projections_1 = require("../foundation/runtime-state-projections");
|
|
11
|
+
const event_loop_resources_1 = require("../foundation/event-loop-resources");
|
|
9
12
|
class ZLinkFanoutLocationRuntime {
|
|
10
13
|
registration;
|
|
11
14
|
sockets;
|
|
@@ -17,7 +20,7 @@ class ZLinkFanoutLocationRuntime {
|
|
|
17
20
|
store;
|
|
18
21
|
localDescriptors = new Map();
|
|
19
22
|
publisherIdentities = new Map();
|
|
20
|
-
|
|
23
|
+
targets = new Map();
|
|
21
24
|
controller;
|
|
22
25
|
timer;
|
|
23
26
|
constructor(registration, sockets, locationRuntime, stores, options, onSubscriberOpened) {
|
|
@@ -64,16 +67,39 @@ class ZLinkFanoutLocationRuntime {
|
|
|
64
67
|
});
|
|
65
68
|
if (timer !== undefined)
|
|
66
69
|
clearTimeout(timer);
|
|
67
|
-
const
|
|
68
|
-
await Promise.allSettled(
|
|
69
|
-
await this.removeLocalPublishers(signal);
|
|
70
|
+
const targets = await this.lane.run(() => [...this.targets]);
|
|
71
|
+
const targetResults = await Promise.allSettled(targets.map(([id, target]) => this.removeTarget(id, target)));
|
|
72
|
+
const publisherResults = await Promise.allSettled([this.removeLocalPublishers(signal)]);
|
|
73
|
+
(0, event_loop_resources_1.finishResourceCleanup)([...targetResults, ...publisherResults].flatMap((result) => result.status === 'rejected' ? [result.reason] : []));
|
|
70
74
|
}
|
|
71
75
|
activeTargets(channelName) {
|
|
72
|
-
return [...this.
|
|
73
|
-
.filter((target) => target.state === 'ready')
|
|
76
|
+
return [...this.targets.values()]
|
|
77
|
+
.filter((target) => target.connection?.state === 'ready')
|
|
74
78
|
.map((target) => target.descriptor)
|
|
75
79
|
.filter((descriptor) => descriptor.channelName === channelName);
|
|
76
80
|
}
|
|
81
|
+
topologyTargets(channelName) {
|
|
82
|
+
if (!this.isAutomaticSubscriber(channelName))
|
|
83
|
+
return undefined;
|
|
84
|
+
return [...this.targets.values()]
|
|
85
|
+
.filter((target) => target.descriptor.channelName === channelName)
|
|
86
|
+
.map((target) => ({
|
|
87
|
+
channelName,
|
|
88
|
+
publisherRoutingId: String(target.descriptor.publisherRid),
|
|
89
|
+
lifecycleGeneration: target.descriptor.lifecycleGeneration,
|
|
90
|
+
descriptorRevision: target.descriptor.descriptorRevision,
|
|
91
|
+
advertisedEndpoint: target.descriptor.endpoint,
|
|
92
|
+
state: target.descriptor.state === Locations_1.ZLinkFrameworkRuntimeState.Serving
|
|
93
|
+
? target.connection?.state === 'ready'
|
|
94
|
+
? 'serving'
|
|
95
|
+
: 'preparing'
|
|
96
|
+
: (0, runtime_state_projections_1.discoveryAvailabilityForRuntimeState)(target.descriptor.state)
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
isAutomaticSubscriber(channelName) {
|
|
100
|
+
const subscriber = this.registration.channels.get(channelName)?.subscriber;
|
|
101
|
+
return subscriber !== undefined && (subscriber.manualConnections?.length ?? 0) === 0;
|
|
102
|
+
}
|
|
77
103
|
async reclaimOwnerRows(signal) {
|
|
78
104
|
const owner = this.requireOwnerToken();
|
|
79
105
|
const descriptors = await this.lane.run(() => [...this.localDescriptors]);
|
|
@@ -101,8 +127,9 @@ class ZLinkFanoutLocationRuntime {
|
|
|
101
127
|
for (const [channelName, channel] of this.registration.channels) {
|
|
102
128
|
if (channel.publisher === undefined)
|
|
103
129
|
continue;
|
|
104
|
-
|
|
105
|
-
|
|
130
|
+
// Opening the publisher binds it and fixes its advertised endpoint.
|
|
131
|
+
this.sockets.publisher(channelName);
|
|
132
|
+
const endpoint = this.sockets.fanoutPublisherEndpoint(channelName) ?? '';
|
|
106
133
|
if (endpoint.length === 0) {
|
|
107
134
|
throw new configuration_1.ZLinkConfigurationException(`Fanout publisher '${channelName}' did not report a bound endpoint.`);
|
|
108
135
|
}
|
|
@@ -153,124 +180,150 @@ class ZLinkFanoutLocationRuntime {
|
|
|
153
180
|
}
|
|
154
181
|
}
|
|
155
182
|
async reconcileSubscribers(signal) {
|
|
156
|
-
for (const
|
|
157
|
-
if (
|
|
158
|
-
(channel.subscriber.manualConnections?.length ?? 0) > 0) {
|
|
183
|
+
for (const channelName of this.registration.channels.keys()) {
|
|
184
|
+
if (!this.isAutomaticSubscriber(channelName))
|
|
159
185
|
continue;
|
|
160
|
-
|
|
186
|
+
const previous = this.topologyTargets(channelName);
|
|
161
187
|
const rows = await this.listLivePublishers(channelName, signal);
|
|
162
188
|
const desired = new Map(rows.map((row) => [fanoutConnectionId(row), row]));
|
|
163
189
|
for (const [connectionId, descriptor] of desired) {
|
|
164
|
-
|
|
190
|
+
let current = await this.lane.run(() => this.targets.get(connectionId));
|
|
165
191
|
if (current === undefined) {
|
|
166
|
-
|
|
167
|
-
|
|
192
|
+
const created = { descriptor };
|
|
193
|
+
current = created;
|
|
194
|
+
await this.lane.run(() => this.targets.set(connectionId, created));
|
|
168
195
|
}
|
|
169
|
-
if (descriptor.descriptorRevision < current.descriptor.descriptorRevision) {
|
|
196
|
+
else if (descriptor.descriptorRevision < current.descriptor.descriptorRevision) {
|
|
170
197
|
continue;
|
|
171
198
|
}
|
|
172
|
-
if (descriptor.descriptorRevision === current.descriptor.descriptorRevision) {
|
|
199
|
+
else if (descriptor.descriptorRevision === current.descriptor.descriptorRevision) {
|
|
173
200
|
if (!sameFanoutDescriptor(descriptor, current.descriptor)) {
|
|
174
|
-
await this.
|
|
201
|
+
await this.removeTarget(connectionId, current);
|
|
202
|
+
continue;
|
|
175
203
|
}
|
|
176
|
-
continue;
|
|
177
204
|
}
|
|
178
|
-
if (!sameFanoutImmutableIdentity(descriptor, current.descriptor)) {
|
|
179
|
-
await this.
|
|
205
|
+
else if (!sameFanoutImmutableIdentity(descriptor, current.descriptor)) {
|
|
206
|
+
await this.removeTarget(connectionId, current);
|
|
180
207
|
continue;
|
|
181
208
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
209
|
+
else {
|
|
210
|
+
const target = current;
|
|
211
|
+
await this.lane.run(() => {
|
|
212
|
+
if (this.targets.get(connectionId) === target)
|
|
213
|
+
target.descriptor = descriptor;
|
|
214
|
+
});
|
|
215
|
+
if (current.connection?.state === 'ready') {
|
|
216
|
+
this.sockets.admitFanoutPublisher(current.descriptor, connectionId);
|
|
217
|
+
}
|
|
188
218
|
}
|
|
219
|
+
await this.reconcileConnection(connectionId, current);
|
|
189
220
|
}
|
|
190
|
-
const
|
|
191
|
-
for (const [connectionId, current] of
|
|
221
|
+
const targets = await this.lane.run(() => [...this.targets]);
|
|
222
|
+
for (const [connectionId, current] of targets) {
|
|
192
223
|
if (current.descriptor.channelName === channelName && !desired.has(connectionId)) {
|
|
193
|
-
await this.
|
|
224
|
+
await this.removeTarget(connectionId, current);
|
|
194
225
|
}
|
|
195
226
|
}
|
|
227
|
+
const next = this.topologyTargets(channelName);
|
|
228
|
+
if (previous.length !== next.length ||
|
|
229
|
+
previous.some((publisher, index) => publisher.publisherRoutingId !== next[index].publisherRoutingId ||
|
|
230
|
+
publisher.state !== next[index].state)) {
|
|
231
|
+
this.sockets.notifyFanoutTopology(channelName);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
async reconcileConnection(connectionId, target) {
|
|
236
|
+
if (target.descriptor.state !== Locations_1.ZLinkFrameworkRuntimeState.Serving) {
|
|
237
|
+
await this.closeConnection(target);
|
|
238
|
+
}
|
|
239
|
+
else if (target.connection === undefined) {
|
|
240
|
+
await this.openConnection(connectionId, target);
|
|
196
241
|
}
|
|
197
242
|
}
|
|
198
|
-
async openConnection(connectionId,
|
|
199
|
-
|
|
243
|
+
async openConnection(connectionId, target) {
|
|
244
|
+
const descriptor = target.descriptor;
|
|
245
|
+
let connection;
|
|
200
246
|
const subscriber = this.sockets.openFanoutSubscriberConnection(descriptor.channelName, connectionId, descriptor.endpoint, {
|
|
201
247
|
onReady: () => {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
this.sockets.admitFanoutPublisher(descriptor, connectionId);
|
|
248
|
+
if (connection !== undefined && target.connection === connection) {
|
|
249
|
+
connection.state = 'ready';
|
|
250
|
+
this.sockets.admitFanoutPublisher(target.descriptor, connectionId);
|
|
206
251
|
}
|
|
207
252
|
},
|
|
208
253
|
onTerminated: () => {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
254
|
+
if (connection !== undefined && target.connection === connection) {
|
|
255
|
+
this.sockets.removeFanoutPublisher(target.descriptor, connectionId);
|
|
256
|
+
connection.state = 'connecting';
|
|
257
|
+
const terminated = connection;
|
|
213
258
|
setImmediate(() => {
|
|
214
|
-
void this.replaceConnection(
|
|
259
|
+
void this.replaceConnection(target, terminated).catch((error) => this.locationRuntime.reportDiscoveryFailure(error));
|
|
215
260
|
});
|
|
216
261
|
}
|
|
217
262
|
}
|
|
218
263
|
});
|
|
219
|
-
|
|
220
|
-
descriptor,
|
|
264
|
+
connection = {
|
|
221
265
|
connectionId,
|
|
222
|
-
subscriber,
|
|
223
|
-
reconnectEligible: true,
|
|
224
266
|
stopReceiver: async () => { },
|
|
225
267
|
state: 'connecting'
|
|
226
268
|
};
|
|
227
|
-
|
|
228
|
-
|
|
269
|
+
const opened = connection;
|
|
270
|
+
await this.lane.run(() => (target.connection = opened));
|
|
271
|
+
connection.stopReceiver = this.onSubscriberOpened(descriptor.channelName, connectionId, subscriber);
|
|
229
272
|
}
|
|
230
|
-
async
|
|
231
|
-
const
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
}
|
|
237
|
-
return target;
|
|
273
|
+
async removeTarget(connectionId, target) {
|
|
274
|
+
const detached = await this.lane.run(() => {
|
|
275
|
+
if (this.targets.get(connectionId) !== target)
|
|
276
|
+
return undefined;
|
|
277
|
+
this.targets.delete(connectionId);
|
|
278
|
+
return this.detachConnection(target);
|
|
238
279
|
});
|
|
280
|
+
await this.closeDetachedConnection(target.descriptor, detached);
|
|
281
|
+
}
|
|
282
|
+
async closeConnection(target) {
|
|
283
|
+
const detached = await this.lane.run(() => this.detachConnection(target));
|
|
284
|
+
await this.closeDetachedConnection(target.descriptor, detached);
|
|
285
|
+
}
|
|
286
|
+
detachConnection(target) {
|
|
287
|
+
const connection = target.connection;
|
|
288
|
+
target.connection = undefined;
|
|
289
|
+
return connection;
|
|
290
|
+
}
|
|
291
|
+
async closeDetachedConnection(descriptor, current) {
|
|
239
292
|
if (current === undefined)
|
|
240
293
|
return;
|
|
241
|
-
this.sockets.removeFanoutPublisher(
|
|
242
|
-
await
|
|
243
|
-
|
|
294
|
+
this.sockets.removeFanoutPublisher(descriptor, current.connectionId);
|
|
295
|
+
await (0, event_loop_resources_1.closeResources)([
|
|
296
|
+
{ close: () => current.stopReceiver() },
|
|
297
|
+
{ close: () => this.sockets.closeFanoutSubscriberConnection(current.connectionId) }
|
|
298
|
+
]);
|
|
244
299
|
}
|
|
245
|
-
async replaceConnection(expected) {
|
|
300
|
+
async replaceConnection(target, expected) {
|
|
246
301
|
const prepared = await this.lane.run(() => {
|
|
247
302
|
const controller = this.controller;
|
|
248
|
-
if (this.
|
|
249
|
-
|
|
303
|
+
if (this.targets.get(expected.connectionId) !== target ||
|
|
304
|
+
target.connection !== expected ||
|
|
250
305
|
controller === undefined)
|
|
251
306
|
return undefined;
|
|
252
|
-
return
|
|
307
|
+
return controller;
|
|
253
308
|
});
|
|
254
309
|
if (prepared === undefined) {
|
|
255
310
|
return;
|
|
256
311
|
}
|
|
257
|
-
await this.closeConnection(
|
|
258
|
-
if (await this.lane.run(() => this.controller === prepared.
|
|
259
|
-
await this.
|
|
312
|
+
await this.closeConnection(target);
|
|
313
|
+
if (await this.lane.run(() => this.controller === prepared && this.targets.get(expected.connectionId) === target)) {
|
|
314
|
+
await this.reconcileConnection(expected.connectionId, target);
|
|
260
315
|
}
|
|
261
316
|
}
|
|
262
317
|
async listLivePublishers(channelName, signal) {
|
|
263
318
|
const rows = [];
|
|
264
319
|
let continuationToken;
|
|
265
320
|
do {
|
|
266
|
-
const page = await this.store.listFanoutPublishers(channelName, { pageSize:
|
|
321
|
+
const page = await this.store.listFanoutPublishers(channelName, { pageSize: Stores_1.ZLINK_PROVIDER_MAX_PAGE_SIZE, continuationToken }, signal);
|
|
267
322
|
rows.push(...page.items);
|
|
268
323
|
continuationToken = page.continuationToken;
|
|
269
324
|
} while (continuationToken !== undefined);
|
|
270
325
|
const live = [];
|
|
271
326
|
for (const descriptor of rows) {
|
|
272
|
-
if (descriptor.state !== Locations_1.ZLinkFrameworkRuntimeState.Serving)
|
|
273
|
-
continue;
|
|
274
327
|
const lease = await this.storeOwnerLease(descriptor.ownerId, signal);
|
|
275
328
|
if (lease.kind === 'found' &&
|
|
276
329
|
lease.token.leaseGeneration === descriptor.leaseGeneration &&
|
|
@@ -288,13 +341,19 @@ class ZLinkFanoutLocationRuntime {
|
|
|
288
341
|
if (owner === undefined)
|
|
289
342
|
return;
|
|
290
343
|
const descriptors = await this.lane.run(() => [...this.localDescriptors.values()]);
|
|
291
|
-
|
|
292
|
-
await
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
344
|
+
try {
|
|
345
|
+
await (0, event_loop_resources_1.closeResources)(descriptors.map((descriptor) => ({
|
|
346
|
+
close: async () => {
|
|
347
|
+
await this.store.removeFanoutPublisher({
|
|
348
|
+
channelName: descriptor.channelName,
|
|
349
|
+
publisherRid: descriptor.publisherRid
|
|
350
|
+
}, owner, signal);
|
|
351
|
+
}
|
|
352
|
+
})));
|
|
353
|
+
}
|
|
354
|
+
finally {
|
|
355
|
+
await this.lane.run(() => this.localDescriptors.clear());
|
|
296
356
|
}
|
|
297
|
-
await this.lane.run(() => this.localDescriptors.clear());
|
|
298
357
|
}
|
|
299
358
|
requireOwnerToken() {
|
|
300
359
|
const token = this.locationRuntime.currentOwnerToken;
|
|
@@ -316,13 +375,6 @@ class ZLinkFanoutLocationRuntime {
|
|
|
316
375
|
}
|
|
317
376
|
}
|
|
318
377
|
exports.ZLinkFanoutLocationRuntime = ZLinkFanoutLocationRuntime;
|
|
319
|
-
function advertisedEndpoint(boundEndpoint, advertiseHost) {
|
|
320
|
-
const result = (0, configuration_1.buildAdvertisedEndpoint)(boundEndpoint, advertiseHost);
|
|
321
|
-
if (result === undefined) {
|
|
322
|
-
throw new configuration_1.ZLinkConfigurationException(`Fanout publisher bound endpoint '${boundEndpoint}' cannot be advertised.`);
|
|
323
|
-
}
|
|
324
|
-
return result;
|
|
325
|
-
}
|
|
326
378
|
function fanoutConnectionId(descriptor) {
|
|
327
379
|
return (`${descriptor.channelName}\0${String(descriptor.publisherRid)}\0` +
|
|
328
380
|
descriptor.lifecycleGeneration.toString());
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Message } from '../../contracts/Common/Message';
|
|
2
2
|
import type { ZLinkBackendMessageLike as MessageLike } from '../backend/runtime-values';
|
|
3
3
|
import { ZLinkChannelMessageKind } from './channel-envelope';
|
|
4
|
+
export declare const SPOT_DIRECT_ENVELOPE = "zlink.framework.spot-direct.v1";
|
|
4
5
|
export declare function encodeSpotDirectEnvelope(kind: ZLinkChannelMessageKind.Request | ZLinkChannelMessageKind.Command, channelName: string, packetName: string | undefined, payload: unknown, metadata?: ReadonlyMap<string, string>): MessageLike;
|
|
5
6
|
export declare function decodeSpotDirectReply<TReply>(parts: readonly Message[]): TReply;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SPOT_DIRECT_ENVELOPE = void 0;
|
|
3
4
|
exports.encodeSpotDirectEnvelope = encodeSpotDirectEnvelope;
|
|
4
5
|
exports.decodeSpotDirectReply = decodeSpotDirectReply;
|
|
5
6
|
const configuration_1 = require("../configuration");
|
|
6
|
-
|
|
7
|
+
exports.SPOT_DIRECT_ENVELOPE = 'zlink.framework.spot-direct.v1';
|
|
7
8
|
function encodeSpotDirectEnvelope(kind, channelName, packetName, payload, metadata) {
|
|
8
9
|
return Buffer.from(JSON.stringify({
|
|
9
|
-
marker: SPOT_DIRECT_ENVELOPE,
|
|
10
|
+
marker: exports.SPOT_DIRECT_ENVELOPE,
|
|
10
11
|
kind,
|
|
11
12
|
channelName,
|
|
12
13
|
packetName,
|
|
@@ -19,7 +20,7 @@ function decodeSpotDirectReply(parts) {
|
|
|
19
20
|
throw new configuration_1.ZLinkConfigurationException('Spot direct reply is missing.');
|
|
20
21
|
}
|
|
21
22
|
const reply = JSON.parse(parts[0].data().toString());
|
|
22
|
-
if (reply.marker !== SPOT_DIRECT_ENVELOPE) {
|
|
23
|
+
if (reply.marker !== exports.SPOT_DIRECT_ENVELOPE) {
|
|
23
24
|
throw new configuration_1.ZLinkConfigurationException('Spot direct reply marker is invalid.');
|
|
24
25
|
}
|
|
25
26
|
if (reply.ok !== true) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkSpotNodeRouteTransport = void 0;
|
|
4
|
+
const Registration_1 = require("../../contracts/Configuration/Registration");
|
|
4
5
|
const abort_1 = require("../abort");
|
|
5
6
|
const channel_envelope_1 = require("./channel-envelope");
|
|
6
7
|
class ZLinkSpotNodeRouteTransport {
|
|
@@ -29,7 +30,7 @@ class ZLinkSpotNodeRouteTransport {
|
|
|
29
30
|
if (router === undefined) {
|
|
30
31
|
return undefined;
|
|
31
32
|
}
|
|
32
|
-
const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ??
|
|
33
|
+
const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS;
|
|
33
34
|
(0, abort_1.throwIfAborted)(signal);
|
|
34
35
|
const operation = router.requestToSpot(target.targetNodeRid, target.spotId, parts, effectiveTimeoutMs);
|
|
35
36
|
return (0, abort_1.awaitWithAbort)(operation, signal, () => {
|
|
@@ -49,7 +50,7 @@ class ZLinkSpotNodeRouteTransport {
|
|
|
49
50
|
if (router === undefined) {
|
|
50
51
|
return undefined;
|
|
51
52
|
}
|
|
52
|
-
const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ??
|
|
53
|
+
const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS;
|
|
53
54
|
(0, abort_1.throwIfAborted)(signal);
|
|
54
55
|
const operation = router.requestToSpot(target.targetNodeRid, target.spotId, request, effectiveTimeoutMs);
|
|
55
56
|
return (0, abort_1.awaitWithAbort)(operation, signal, () => {
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.diagnosticTextOrAbsent = diagnosticTextOrAbsent;
|
|
4
|
+
/** Formats absent diagnostic text consistently across the Node runtime. */
|
|
5
|
+
function diagnosticTextOrAbsent(value) {
|
|
6
|
+
return value ?? '<none>';
|
|
7
|
+
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason } from '../../contracts/Dispatch/ZLinkDispatchOptions';
|
|
2
|
+
export declare function dispatchReasonFromError(error: unknown): ZLinkDispatchErrorReason;
|
|
3
|
+
export declare const ERROR_MESSAGE_MAX_LENGTH = 512;
|
|
1
4
|
export declare function dispatchErrorDetails(error: unknown): {
|
|
2
5
|
readonly errorType?: string;
|
|
3
6
|
readonly errorMessage?: string;
|
|
@@ -1,7 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ERROR_MESSAGE_MAX_LENGTH = void 0;
|
|
4
|
+
exports.dispatchReasonFromError = dispatchReasonFromError;
|
|
3
5
|
exports.dispatchErrorDetails = dispatchErrorDetails;
|
|
4
|
-
const
|
|
6
|
+
const ZLinkFrameworkException_1 = require("../../contracts/Errors/ZLinkFrameworkException");
|
|
7
|
+
const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
|
|
8
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
9
|
+
function dispatchReasonFromError(error) {
|
|
10
|
+
if (!(error instanceof ZLinkFrameworkException_1.ZLinkFrameworkException))
|
|
11
|
+
return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException;
|
|
12
|
+
const origin = (0, framework_errors_internal_1.internalFrameworkErrorKind)(error);
|
|
13
|
+
if (origin === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed)
|
|
14
|
+
return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.PayloadDecodeFailed;
|
|
15
|
+
if (origin === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotGenerationStale ||
|
|
16
|
+
origin === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorGenerationStale ||
|
|
17
|
+
origin === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving ||
|
|
18
|
+
origin === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorMoving ||
|
|
19
|
+
origin === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale)
|
|
20
|
+
return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.StaleTarget;
|
|
21
|
+
switch (error.kind) {
|
|
22
|
+
case ZLinkFrameworkException_1.ZLinkFrameworkErrorKind.NotFound:
|
|
23
|
+
return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerMissing;
|
|
24
|
+
case ZLinkFrameworkException_1.ZLinkFrameworkErrorKind.ProtocolError:
|
|
25
|
+
return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.InvalidFrame;
|
|
26
|
+
case ZLinkFrameworkException_1.ZLinkFrameworkErrorKind.ShuttingDown:
|
|
27
|
+
return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Shutdown;
|
|
28
|
+
default:
|
|
29
|
+
return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.ERROR_MESSAGE_MAX_LENGTH = 512;
|
|
5
33
|
const CREDENTIAL_PATTERNS = [
|
|
6
34
|
[/Authorization\s*:\s*(?:(?:Bearer|Basic)\s+)?[^\s,;]+/gi, 'Authorization: <redacted>'],
|
|
7
35
|
[/Bearer\s+[^\s,;]+/gi, 'Bearer <redacted>'],
|
|
@@ -51,5 +79,5 @@ function sanitizeErrorMessage(message) {
|
|
|
51
79
|
pattern.lastIndex = 0;
|
|
52
80
|
sanitized = sanitized.replace(pattern, replacement);
|
|
53
81
|
}
|
|
54
|
-
return sanitized.slice(0, ERROR_MESSAGE_MAX_LENGTH);
|
|
82
|
+
return sanitized.slice(0, exports.ERROR_MESSAGE_MAX_LENGTH);
|
|
55
83
|
}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { ZLinkFlowOrigin } from '../../contracts';
|
|
2
|
+
/**
|
|
3
|
+
* Spec 27 §3 defines the flow_origin value set as lowercase
|
|
4
|
+
* (`inbound|timer|application|lifecycle`); every language emits these exact
|
|
5
|
+
* strings so records remain comparable across runtimes (spec 26 §3.1).
|
|
6
|
+
*/
|
|
7
|
+
export declare const FLOW_ORIGIN_VALUES: Readonly<Record<ZLinkFlowOrigin, string>>;
|
|
2
8
|
export interface ZLinkFlowContextValue {
|
|
3
9
|
readonly flowId: string;
|
|
4
10
|
readonly flowOrigin: ZLinkFlowOrigin;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FLOW_ORIGIN_VALUES = void 0;
|
|
3
4
|
exports.currentFlowContext = currentFlowContext;
|
|
4
5
|
exports.currentOrCreateFlow = currentOrCreateFlow;
|
|
5
6
|
exports.runWithFlow = runWithFlow;
|
|
@@ -7,6 +8,19 @@ exports.runWithOutboundFlow = runWithOutboundFlow;
|
|
|
7
8
|
exports.createInboundFlow = createInboundFlow;
|
|
8
9
|
const node_async_hooks_1 = require("node:async_hooks");
|
|
9
10
|
const node_crypto_1 = require("node:crypto");
|
|
11
|
+
const FLOW_UUID_BYTES = 16;
|
|
12
|
+
const FLOW_UUID_VARIANT_BYTE = 8;
|
|
13
|
+
/**
|
|
14
|
+
* Spec 27 §3 defines the flow_origin value set as lowercase
|
|
15
|
+
* (`inbound|timer|application|lifecycle`); every language emits these exact
|
|
16
|
+
* strings so records remain comparable across runtimes (spec 26 §3.1).
|
|
17
|
+
*/
|
|
18
|
+
exports.FLOW_ORIGIN_VALUES = Object.freeze({
|
|
19
|
+
Inbound: 'inbound',
|
|
20
|
+
Timer: 'timer',
|
|
21
|
+
Application: 'application',
|
|
22
|
+
Lifecycle: 'lifecycle'
|
|
23
|
+
});
|
|
10
24
|
const flowStorage = new node_async_hooks_1.AsyncLocalStorage();
|
|
11
25
|
function currentFlowContext() {
|
|
12
26
|
return flowStorage.getStore();
|
|
@@ -57,12 +71,12 @@ function createInboundFlow(flowId, flowOrigin, createIfAbsent, streamSessionId)
|
|
|
57
71
|
return { flowId: flowId ?? createFlowId(), flowOrigin: flowOrigin ?? 'Inbound', streamSessionId };
|
|
58
72
|
}
|
|
59
73
|
function createFlowId() {
|
|
60
|
-
const bytes = (0, node_crypto_1.randomBytes)(
|
|
74
|
+
const bytes = (0, node_crypto_1.randomBytes)(FLOW_UUID_BYTES);
|
|
61
75
|
// Date.now() is always within 48 bits, which is exactly the UUIDv7
|
|
62
76
|
// timestamp field.
|
|
63
77
|
bytes.writeUIntBE(Date.now(), 0, 6);
|
|
64
78
|
bytes[6] = 0x70 | (bytes[6] & 0x0f);
|
|
65
|
-
bytes[
|
|
79
|
+
bytes[FLOW_UUID_VARIANT_BYTE] = 0x80 | (bytes[FLOW_UUID_VARIANT_BYTE] & 0x3f);
|
|
66
80
|
const hex = bytes.toString('hex');
|
|
67
81
|
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
68
82
|
}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import type { ZLinkLocationRuntimeQuery } from '../../contracts';
|
|
2
|
-
import type { ZLinkActorLocation, ZLinkPeerLocation, ZLinkRouteLocation, ZLinkSpotLocation } from '../../contracts/Locations/Rows';
|
|
3
2
|
import type { ZLinkActorLocationKey, ZLinkLocationKey, ZLinkRouteLocationKey, ZLinkSpotLocationKey } from '../../contracts/Locations/Keys';
|
|
3
|
+
import type { ZLinkActorLocation, ZLinkPeerLocation, ZLinkRouteLocation, ZLinkSpotLocation } from '../../contracts/Locations/Rows';
|
|
4
|
+
import type { ZLinkBackendSocketMonitor, ZLinkBackendSocketMonitorEvent } from '../backend';
|
|
4
5
|
import { type ZLinkAutoConnectDesiredSetChange, type ZLinkLocationMonitoringRegistration, type ZLinkPollingMonitoringRegistration, type ZLinkRuntimeEvent, type ZLinkRuntimeEventHandler, type ZLinkSocketMonitoringRegistration } from './internal-event-contracts';
|
|
5
6
|
export { ZLinkLocationActorEventKind, ZLinkLocationPeerEventKind, ZLinkLocationRouteEventKind, ZLinkLocationSpotEventKind, ZLinkSocketNativeEventType } from './internal-event-contracts';
|
|
6
|
-
import type { ZLinkBackendSocketMonitor, ZLinkBackendSocketMonitorEvent } from '../backend';
|
|
7
7
|
export interface ZLinkActorOwnerLeaseObservation {
|
|
8
8
|
readonly actorId: string;
|
|
9
9
|
readonly authorityGeneration: bigint;
|
|
10
10
|
readonly remainingLeaseMs: number;
|
|
11
11
|
readonly decision: 'owner_unavailable';
|
|
12
12
|
}
|
|
13
|
+
export declare function isRelocationDebugEnabled(): boolean;
|
|
14
|
+
export declare function relocationDebug(marker: string, detail: Record<string, unknown>): void;
|
|
13
15
|
/** Emits high-cardinality resolver detail only on the existing relocation debug path. */
|
|
14
16
|
export declare function emitActorOwnerLeaseObservation(observation: ZLinkActorOwnerLeaseObservation): void;
|
|
15
17
|
/** Runtime composition port. It is intentionally absent from the public contract barrel. */
|
|
@@ -15,7 +15,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.ZLinkLocationMonitoringEventEmitter = exports.ZLinkLocationRuntimeMonitoringSource = exports.ZLinkSocketMonitoringSource = exports.DefaultZLinkRuntimeEventPublisher = exports.ZLinkSocketNativeEventType = exports.ZLinkLocationSpotEventKind = exports.ZLinkLocationRouteEventKind = exports.ZLinkLocationPeerEventKind = exports.ZLinkLocationActorEventKind = void 0;
|
|
18
|
+
exports.isRelocationDebugEnabled = isRelocationDebugEnabled;
|
|
19
|
+
exports.relocationDebug = relocationDebug;
|
|
18
20
|
exports.emitActorOwnerLeaseObservation = emitActorOwnerLeaseObservation;
|
|
21
|
+
const node_async_hooks_1 = require("node:async_hooks");
|
|
22
|
+
const state_lane_1 = require("../execution/state-lane");
|
|
23
|
+
const routing_id_1 = require("../routing-id");
|
|
19
24
|
const internal_event_contracts_1 = require("./internal-event-contracts");
|
|
20
25
|
var internal_event_contracts_2 = require("./internal-event-contracts");
|
|
21
26
|
Object.defineProperty(exports, "ZLinkLocationActorEventKind", { enumerable: true, get: function () { return internal_event_contracts_2.ZLinkLocationActorEventKind; } });
|
|
@@ -23,14 +28,19 @@ Object.defineProperty(exports, "ZLinkLocationPeerEventKind", { enumerable: true,
|
|
|
23
28
|
Object.defineProperty(exports, "ZLinkLocationRouteEventKind", { enumerable: true, get: function () { return internal_event_contracts_2.ZLinkLocationRouteEventKind; } });
|
|
24
29
|
Object.defineProperty(exports, "ZLinkLocationSpotEventKind", { enumerable: true, get: function () { return internal_event_contracts_2.ZLinkLocationSpotEventKind; } });
|
|
25
30
|
Object.defineProperty(exports, "ZLinkSocketNativeEventType", { enumerable: true, get: function () { return internal_event_contracts_2.ZLinkSocketNativeEventType; } });
|
|
26
|
-
const node_async_hooks_1 = require("node:async_hooks");
|
|
27
|
-
const state_lane_1 = require("../execution/state-lane");
|
|
28
|
-
const routing_id_1 = require("../routing-id");
|
|
29
31
|
const ZLINK_DISCONNECT_REASON_HANDSHAKE_FAILED = 3;
|
|
30
32
|
const detachedStateLaneResource = new node_async_hooks_1.AsyncResource('zlink:location-runtime-monitoring-source');
|
|
33
|
+
function isRelocationDebugEnabled() {
|
|
34
|
+
return process.env.ZLINK_DEBUG_FRAMEWORK_RELOCATION === '1';
|
|
35
|
+
}
|
|
36
|
+
function relocationDebug(marker, detail) {
|
|
37
|
+
if (!isRelocationDebugEnabled())
|
|
38
|
+
return;
|
|
39
|
+
console.error('[zlink.runtime.relocation]', marker, detail);
|
|
40
|
+
}
|
|
31
41
|
/** Emits high-cardinality resolver detail only on the existing relocation debug path. */
|
|
32
42
|
function emitActorOwnerLeaseObservation(observation) {
|
|
33
|
-
if (
|
|
43
|
+
if (!isRelocationDebugEnabled())
|
|
34
44
|
return;
|
|
35
45
|
console.error('[zlink.runtime.relocation]', 'actor_route.owner_lease_observed', observation);
|
|
36
46
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ZLinkDiagnosticsOptions, type ZLinkMessageFlowLogMode } from '../../contracts';
|
|
2
|
-
import { ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome, type
|
|
2
|
+
import { ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome, type ZLinkRuntimeMessageFlowEvent, type ZLinkRuntimeMessageFlowResult } from '../../contracts/Dispatch/ZLinkDispatchOptions';
|
|
3
3
|
import type { ZLinkDispatchErrorSink } from './dispatch-error-port';
|
|
4
4
|
export interface ZLinkMessageFlowModeCell {
|
|
5
5
|
mode: ZLinkMessageFlowLogMode;
|