@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,17 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
ZLinkActor,
|
|
9
|
-
ZLinkActorContext,
|
|
10
|
-
ZLinkSpot
|
|
2
|
+
type ActorRef,
|
|
3
|
+
type RoutingId,
|
|
4
|
+
type ZLinkActor,
|
|
5
|
+
type ZLinkActorContext,
|
|
6
|
+
type ZLinkSpot,
|
|
7
|
+
ZLinkSpotKind
|
|
11
8
|
} from '../../contracts';
|
|
12
|
-
|
|
9
|
+
|
|
13
10
|
import type { Message } from '../../contracts/Common/Message';
|
|
14
11
|
import type { ZLinkBackendActorRef, ZLinkBackendMeshNode } from '../backend/contracts';
|
|
12
|
+
import { isStructuralGuardEnabled } from '../execution/state-lane';
|
|
13
|
+
import {
|
|
14
|
+
ZLinkFrameworkInternalErrorKind,
|
|
15
|
+
createInternalFrameworkException
|
|
16
|
+
} from '../framework-errors-internal';
|
|
15
17
|
import { routingIdsEqual } from '../routing-id';
|
|
16
18
|
import { lookupNativeActorRef } from './actor-native-lookup';
|
|
17
19
|
|
|
@@ -52,85 +54,24 @@ export interface ZLinkRemoteBoundSessionTarget {
|
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
* service-wire relocation identity until command 44 releases the owner seal.
|
|
57
|
+
* Session–Actor binding §5·§6: the Actor owner keeps one current binding. The
|
|
58
|
+
* stored value is the binding identity and the route to its Session owner; a
|
|
59
|
+
* relocation fence belongs to the relocation operation that created it.
|
|
59
60
|
*/
|
|
60
|
-
|
|
61
|
-
target: ZLinkRemoteBoundSessionTarget
|
|
62
|
-
fallback: ZLinkRemoteBoundSessionTarget | undefined
|
|
61
|
+
function boundSessionIdentity(
|
|
62
|
+
target: ZLinkRemoteBoundSessionTarget
|
|
63
63
|
): ZLinkRemoteBoundSessionTarget {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const merged = {
|
|
75
|
-
...fallback,
|
|
76
|
-
...target,
|
|
77
|
-
sessionNodeRid: target.sessionNodeRid ?? fallback.sessionNodeRid,
|
|
78
|
-
sessionRid: target.sessionRid ?? fallback.sessionRid,
|
|
79
|
-
sessionOwnerNodeGeneration:
|
|
80
|
-
target.sessionOwnerNodeGeneration ?? fallback.sessionOwnerNodeGeneration,
|
|
81
|
-
sessionOwnerId: target.sessionOwnerId ?? fallback.sessionOwnerId,
|
|
82
|
-
sessionOwnerLeaseGeneration:
|
|
83
|
-
target.sessionOwnerLeaseGeneration ?? fallback.sessionOwnerLeaseGeneration,
|
|
84
|
-
bindingGeneration: target.bindingGeneration ?? fallback.bindingGeneration,
|
|
85
|
-
previousAuthorityOwnerGeneration:
|
|
86
|
-
target.previousAuthorityOwnerGeneration ?? fallback.previousAuthorityOwnerGeneration,
|
|
87
|
-
previousOwnerLeaseGeneration:
|
|
88
|
-
target.previousOwnerLeaseGeneration ?? fallback.previousOwnerLeaseGeneration,
|
|
89
|
-
relocationSealId: target.relocationSealId ?? fallback.relocationSealId,
|
|
90
|
-
serviceWireRelocation: target.serviceWireRelocation ?? fallback.serviceWireRelocation
|
|
64
|
+
return {
|
|
65
|
+
routerChannelId: target.routerChannelId,
|
|
66
|
+
targetNodeRid: target.targetNodeRid,
|
|
67
|
+
spotId: target.spotId,
|
|
68
|
+
sessionNodeRid: target.sessionNodeRid,
|
|
69
|
+
sessionRid: target.sessionRid,
|
|
70
|
+
sessionOwnerNodeGeneration: target.sessionOwnerNodeGeneration,
|
|
71
|
+
sessionOwnerId: target.sessionOwnerId,
|
|
72
|
+
sessionOwnerLeaseGeneration: target.sessionOwnerLeaseGeneration,
|
|
73
|
+
bindingGeneration: target.bindingGeneration
|
|
91
74
|
};
|
|
92
|
-
return merged;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Spec 48 §125: reconnection creates a new Session; the previous Session's
|
|
97
|
-
* binding — and its staged relocation fence — is never inherited by a
|
|
98
|
-
* successor. A Core bind refresh only omits routing coordinates it did not
|
|
99
|
-
* recompute, so an explicit Session identity on both sides that disagrees
|
|
100
|
-
* marks the refresh as belonging to a different Session binding, not a
|
|
101
|
-
* same-Session coordinate/generation-only refresh (a bindingGeneration bump
|
|
102
|
-
* with the same sessionNodeRid/sessionRid is a legitimate same-Session
|
|
103
|
-
* refresh and must keep the fence — see the transfer-target generation test
|
|
104
|
-
* below).
|
|
105
|
-
*
|
|
106
|
-
* NOTE: this identity check is a no-op on the path exercised by
|
|
107
|
-
* `remoteBoundSessionTargetForSource` (mesh-router-resolver.ts), which never
|
|
108
|
-
* populates sessionNodeRid/sessionRid on the refresh it emits. Confirmed via
|
|
109
|
-
* TTT reproduction (2026-08-22, run-dir preserved) that a rejected successor
|
|
110
|
-
* bound-session send still occurs through that path after this change; see
|
|
111
|
-
* session report for the STOP writeup.
|
|
112
|
-
*/
|
|
113
|
-
function isSuccessorSessionBinding(
|
|
114
|
-
fallback: ZLinkRemoteBoundSessionTarget,
|
|
115
|
-
target: ZLinkRemoteBoundSessionTarget
|
|
116
|
-
): boolean {
|
|
117
|
-
return (
|
|
118
|
-
(fallback.sessionNodeRid !== undefined &&
|
|
119
|
-
target.sessionNodeRid !== undefined &&
|
|
120
|
-
!routingIdsEqual(fallback.sessionNodeRid, target.sessionNodeRid)) ||
|
|
121
|
-
(fallback.sessionRid !== undefined &&
|
|
122
|
-
target.sessionRid !== undefined &&
|
|
123
|
-
!routingIdsEqual(fallback.sessionRid, target.sessionRid)) ||
|
|
124
|
-
(fallback.sessionOwnerNodeGeneration !== undefined &&
|
|
125
|
-
target.sessionOwnerNodeGeneration !== undefined &&
|
|
126
|
-
fallback.sessionOwnerNodeGeneration !== target.sessionOwnerNodeGeneration) ||
|
|
127
|
-
(fallback.sessionOwnerId !== undefined &&
|
|
128
|
-
target.sessionOwnerId !== undefined &&
|
|
129
|
-
fallback.sessionOwnerId !== target.sessionOwnerId) ||
|
|
130
|
-
(fallback.sessionOwnerLeaseGeneration !== undefined &&
|
|
131
|
-
target.sessionOwnerLeaseGeneration !== undefined &&
|
|
132
|
-
fallback.sessionOwnerLeaseGeneration !== target.sessionOwnerLeaseGeneration)
|
|
133
|
-
);
|
|
134
75
|
}
|
|
135
76
|
|
|
136
77
|
type ZLinkRemoteSessionOwnerIdentity = Pick<
|
|
@@ -144,20 +85,6 @@ type ZLinkRemoteSessionOwnerIdentity = Pick<
|
|
|
144
85
|
|
|
145
86
|
type ZLinkRemoteSessionOwnerLifecycle = Omit<ZLinkRemoteSessionOwnerIdentity, 'sessionRid'>;
|
|
146
87
|
|
|
147
|
-
function samePhysicalRemoteSession(
|
|
148
|
-
left: ZLinkRemoteBoundSessionTarget,
|
|
149
|
-
right: Pick<ZLinkRemoteBoundSessionTarget, 'sessionNodeRid' | 'sessionRid'>
|
|
150
|
-
): boolean {
|
|
151
|
-
return (
|
|
152
|
-
left.sessionNodeRid !== undefined &&
|
|
153
|
-
right.sessionNodeRid !== undefined &&
|
|
154
|
-
left.sessionRid !== undefined &&
|
|
155
|
-
right.sessionRid !== undefined &&
|
|
156
|
-
routingIdsEqual(left.sessionNodeRid, right.sessionNodeRid) &&
|
|
157
|
-
routingIdsEqual(left.sessionRid, right.sessionRid)
|
|
158
|
-
);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
88
|
function sameRemoteSessionOwnerLifecycle(
|
|
162
89
|
left: ZLinkRemoteBoundSessionTarget,
|
|
163
90
|
right: ZLinkRemoteSessionOwnerLifecycle
|
|
@@ -207,23 +134,6 @@ function sameRemoteSessionBinding(
|
|
|
207
134
|
);
|
|
208
135
|
}
|
|
209
136
|
|
|
210
|
-
/**
|
|
211
|
-
* Selects the route that still carries the relocation fence when a Core
|
|
212
|
-
* binding refresh and a formal transfer target temporarily coexist.
|
|
213
|
-
*/
|
|
214
|
-
export function preferredRemoteBoundSessionTarget(
|
|
215
|
-
remote: ZLinkRemoteBoundSessionTarget | undefined,
|
|
216
|
-
transfer: ZLinkRemoteBoundSessionTarget | undefined
|
|
217
|
-
): ZLinkRemoteBoundSessionTarget | undefined {
|
|
218
|
-
if (remote === undefined) return transfer;
|
|
219
|
-
if (hasRelocationFence(remote) || transfer === undefined) return remote;
|
|
220
|
-
return transfer;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
function hasRelocationFence(target: ZLinkRemoteBoundSessionTarget): boolean {
|
|
224
|
-
return target.relocationSealId !== undefined || target.serviceWireRelocation !== undefined;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
137
|
export interface ZLinkRemoteActorPacketTarget {
|
|
228
138
|
readonly routerChannelId: string;
|
|
229
139
|
readonly targetNodeRid: RoutingId;
|
|
@@ -269,10 +179,8 @@ export class ZLinkActorRuntimeState {
|
|
|
269
179
|
private spotGenerationValue: bigint | undefined;
|
|
270
180
|
private spotMembershipEpochValue = 0n;
|
|
271
181
|
private nativeActorRefValue: ZLinkBackendActorRef | undefined;
|
|
272
|
-
private boundSessionBindingGenerationValue = 0n;
|
|
273
182
|
private entryNodeRidValue: RoutingId | undefined;
|
|
274
|
-
private
|
|
275
|
-
private boundSessionTransferTargetValue: ZLinkRemoteBoundSessionTarget | undefined;
|
|
183
|
+
private boundSessionValue: ZLinkRemoteBoundSessionTarget | undefined;
|
|
276
184
|
private remoteActorPacketTargetValue: ZLinkRemoteActorPacketTarget | undefined;
|
|
277
185
|
private createRequestPayloadValue: Buffer | undefined;
|
|
278
186
|
private ownsLocationValue = false;
|
|
@@ -282,7 +190,11 @@ export class ZLinkActorRuntimeState {
|
|
|
282
190
|
private deferredJoinPendingValue = false;
|
|
283
191
|
private destroyTask: Promise<void> | undefined;
|
|
284
192
|
|
|
285
|
-
constructor(readonly actorId: string) {
|
|
193
|
+
constructor(readonly actorId: string) {
|
|
194
|
+
if (isStructuralGuardEnabled()) {
|
|
195
|
+
guardBoundSessionTargetWrites(this);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
286
198
|
|
|
287
199
|
get actorType(): string | undefined {
|
|
288
200
|
return this.actorTypeValue;
|
|
@@ -323,19 +235,31 @@ export class ZLinkActorRuntimeState {
|
|
|
323
235
|
}
|
|
324
236
|
|
|
325
237
|
get boundSessionBindingGeneration(): bigint {
|
|
326
|
-
return this.
|
|
238
|
+
return this.boundSessionValue?.bindingGeneration ?? 0n;
|
|
327
239
|
}
|
|
328
240
|
|
|
329
241
|
get entryNodeRid(): RoutingId | undefined {
|
|
330
242
|
return this.entryNodeRidValue;
|
|
331
243
|
}
|
|
332
244
|
|
|
333
|
-
|
|
334
|
-
|
|
245
|
+
/** The one current Session binding of this Actor (Session–Actor binding §6). */
|
|
246
|
+
get boundSession(): ZLinkRemoteBoundSessionTarget | undefined {
|
|
247
|
+
return this.boundSessionValue;
|
|
335
248
|
}
|
|
336
249
|
|
|
337
|
-
|
|
338
|
-
|
|
250
|
+
/**
|
|
251
|
+
* The current binding when its Session owner is another node. A same-node
|
|
252
|
+
* binding is served by the local Session registry, so remote routing sees
|
|
253
|
+
* no target for it.
|
|
254
|
+
*/
|
|
255
|
+
get remoteBoundSessionTarget(): ZLinkRemoteBoundSessionTarget | undefined {
|
|
256
|
+
const binding = this.boundSessionValue;
|
|
257
|
+
const actorNodeRid = this.nativeActorRefValue?.nodeRid;
|
|
258
|
+
return binding?.sessionNodeRid !== undefined &&
|
|
259
|
+
actorNodeRid !== undefined &&
|
|
260
|
+
routingIdsEqual(binding.sessionNodeRid, toFrameworkRoutingId(actorNodeRid))
|
|
261
|
+
? undefined
|
|
262
|
+
: binding;
|
|
339
263
|
}
|
|
340
264
|
|
|
341
265
|
get remoteActorPacketTarget(): ZLinkRemoteActorPacketTarget | undefined {
|
|
@@ -559,24 +483,6 @@ export class ZLinkActorRuntimeState {
|
|
|
559
483
|
this.entryNodeRidValue ??= toFrameworkRoutingId(actorRef.nodeRid);
|
|
560
484
|
}
|
|
561
485
|
|
|
562
|
-
setBoundSessionBindingGeneration(generation: bigint): void {
|
|
563
|
-
if (generation > this.boundSessionBindingGenerationValue) {
|
|
564
|
-
this.boundSessionBindingGenerationValue = generation;
|
|
565
|
-
if (this.remoteBoundSessionTargetValue !== undefined) {
|
|
566
|
-
this.remoteBoundSessionTargetValue = {
|
|
567
|
-
...this.remoteBoundSessionTargetValue,
|
|
568
|
-
bindingGeneration: generation
|
|
569
|
-
};
|
|
570
|
-
}
|
|
571
|
-
if (this.boundSessionTransferTargetValue !== undefined) {
|
|
572
|
-
this.boundSessionTransferTargetValue = {
|
|
573
|
-
...this.boundSessionTransferTargetValue,
|
|
574
|
-
bindingGeneration: generation
|
|
575
|
-
};
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
}
|
|
579
|
-
|
|
580
486
|
/** @internal Installs one authority-confirmed binding inside its Actor owner turn. */
|
|
581
487
|
installBoundSessionBinding(target: ZLinkRemoteBoundSessionTarget): boolean {
|
|
582
488
|
if (
|
|
@@ -587,34 +493,22 @@ export class ZLinkActorRuntimeState {
|
|
|
587
493
|
target.sessionOwnerLeaseGeneration === undefined ||
|
|
588
494
|
target.bindingGeneration === undefined
|
|
589
495
|
) {
|
|
590
|
-
throw new TypeError(
|
|
591
|
-
'An installed bound Session target requires its complete binding identity.'
|
|
592
|
-
);
|
|
496
|
+
throw new TypeError('An installed bound Session target requires its binding identity.');
|
|
593
497
|
}
|
|
594
|
-
const current =
|
|
595
|
-
this.remoteBoundSessionTargetValue,
|
|
596
|
-
this.boundSessionTransferTargetValue
|
|
597
|
-
);
|
|
498
|
+
const current = this.boundSessionValue;
|
|
598
499
|
if (current !== undefined && sameRemoteSessionOwnerLifecycle(current, target)) {
|
|
599
|
-
// A duplicate command for the exact physical Session
|
|
600
|
-
//
|
|
601
|
-
//
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
current.bindingGeneration
|
|
605
|
-
|
|
606
|
-
)
|
|
607
|
-
return false;
|
|
500
|
+
// A duplicate or late older command for the exact physical Session
|
|
501
|
+
// leaves the current binding; a newer generation of the same Session
|
|
502
|
+
// replaces it. A different Session in the same owner lifecycle must
|
|
503
|
+
// advance that lifecycle's generation; a late equal/lower one is stale.
|
|
504
|
+
const advances =
|
|
505
|
+
current.bindingGeneration === undefined ||
|
|
506
|
+
target.bindingGeneration > current.bindingGeneration;
|
|
507
|
+
if (!advances) return sameRemoteSessionOwner(current, target);
|
|
608
508
|
}
|
|
609
|
-
const installed = mergeRemoteBoundSessionTarget(target, current);
|
|
610
509
|
// Binding generations are scoped to a Session-owner lifecycle. A restarted
|
|
611
510
|
// owner can legitimately reset its counter below the predecessor value.
|
|
612
|
-
this.
|
|
613
|
-
this.remoteBoundSessionTargetValue = undefined;
|
|
614
|
-
this.boundSessionTransferTargetValue = {
|
|
615
|
-
...installed,
|
|
616
|
-
bindingGeneration: target.bindingGeneration
|
|
617
|
-
};
|
|
511
|
+
this.boundSessionValue = boundSessionIdentity(target);
|
|
618
512
|
return true;
|
|
619
513
|
}
|
|
620
514
|
|
|
@@ -628,75 +522,18 @@ export class ZLinkActorRuntimeState {
|
|
|
628
522
|
target.sessionOwnerLeaseGeneration === undefined ||
|
|
629
523
|
target.bindingGeneration === undefined
|
|
630
524
|
) {
|
|
631
|
-
throw new TypeError('A retired bound Session target requires its
|
|
525
|
+
throw new TypeError('A retired bound Session target requires its binding identity.');
|
|
632
526
|
}
|
|
633
|
-
|
|
634
|
-
if (
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
) {
|
|
638
|
-
this.remoteBoundSessionTargetValue = undefined;
|
|
639
|
-
retired = true;
|
|
640
|
-
}
|
|
641
|
-
if (
|
|
642
|
-
this.boundSessionTransferTargetValue !== undefined &&
|
|
643
|
-
sameRemoteSessionBinding(this.boundSessionTransferTargetValue, target)
|
|
644
|
-
) {
|
|
645
|
-
this.boundSessionTransferTargetValue = undefined;
|
|
646
|
-
retired = true;
|
|
647
|
-
}
|
|
648
|
-
if (retired) {
|
|
649
|
-
this.boundSessionBindingGenerationValue =
|
|
650
|
-
preferredRemoteBoundSessionTarget(
|
|
651
|
-
this.remoteBoundSessionTargetValue,
|
|
652
|
-
this.boundSessionTransferTargetValue
|
|
653
|
-
)?.bindingGeneration ?? 0n;
|
|
654
|
-
}
|
|
655
|
-
return retired;
|
|
527
|
+
const current = this.boundSessionValue;
|
|
528
|
+
if (current === undefined || !sameRemoteSessionBinding(current, target)) return false;
|
|
529
|
+
this.boundSessionValue = undefined;
|
|
530
|
+
return true;
|
|
656
531
|
}
|
|
657
532
|
|
|
658
533
|
setEntryNodeRid(entryNodeRid: RoutingId): void {
|
|
659
534
|
this.entryNodeRidValue = entryNodeRid;
|
|
660
535
|
}
|
|
661
536
|
|
|
662
|
-
setRemoteBoundSessionTarget(target: ZLinkRemoteBoundSessionTarget | undefined): void {
|
|
663
|
-
const current = preferredRemoteBoundSessionTarget(
|
|
664
|
-
this.remoteBoundSessionTargetValue,
|
|
665
|
-
this.boundSessionTransferTargetValue
|
|
666
|
-
);
|
|
667
|
-
const merged =
|
|
668
|
-
target === undefined ? undefined : mergeRemoteBoundSessionTarget(target, current);
|
|
669
|
-
const bindingGeneration = maxBindingGeneration(
|
|
670
|
-
merged?.bindingGeneration,
|
|
671
|
-
this.remoteBoundSessionTargetValue?.bindingGeneration,
|
|
672
|
-
this.boundSessionBindingGenerationValue
|
|
673
|
-
);
|
|
674
|
-
this.remoteBoundSessionTargetValue =
|
|
675
|
-
merged === undefined
|
|
676
|
-
? undefined
|
|
677
|
-
: bindingGeneration === undefined
|
|
678
|
-
? merged
|
|
679
|
-
: { ...merged, bindingGeneration };
|
|
680
|
-
}
|
|
681
|
-
|
|
682
|
-
setBoundSessionTransferTarget(target: ZLinkRemoteBoundSessionTarget | undefined): void {
|
|
683
|
-
const merged =
|
|
684
|
-
target === undefined
|
|
685
|
-
? undefined
|
|
686
|
-
: mergeRemoteBoundSessionTarget(target, this.boundSessionTransferTargetValue);
|
|
687
|
-
const bindingGeneration = maxBindingGeneration(
|
|
688
|
-
merged?.bindingGeneration,
|
|
689
|
-
this.boundSessionTransferTargetValue?.bindingGeneration,
|
|
690
|
-
this.boundSessionBindingGenerationValue
|
|
691
|
-
);
|
|
692
|
-
this.boundSessionTransferTargetValue =
|
|
693
|
-
merged === undefined
|
|
694
|
-
? undefined
|
|
695
|
-
: bindingGeneration === undefined
|
|
696
|
-
? merged
|
|
697
|
-
: { ...merged, bindingGeneration };
|
|
698
|
-
}
|
|
699
|
-
|
|
700
537
|
setRemoteActorPacketTarget(target: ZLinkRemoteActorPacketTarget | undefined): void {
|
|
701
538
|
this.remoteActorPacketTargetValue = target;
|
|
702
539
|
}
|
|
@@ -737,10 +574,8 @@ export class ZLinkActorRuntimeState {
|
|
|
737
574
|
this.spotGenerationValue = undefined;
|
|
738
575
|
this.spotMembershipEpochValue = 0n;
|
|
739
576
|
this.nativeActorRefValue = undefined;
|
|
740
|
-
this.boundSessionBindingGenerationValue = 0n;
|
|
741
577
|
this.entryNodeRidValue = undefined;
|
|
742
|
-
this.
|
|
743
|
-
this.boundSessionTransferTargetValue = undefined;
|
|
578
|
+
this.boundSessionValue = undefined;
|
|
744
579
|
this.remoteActorPacketTargetValue = undefined;
|
|
745
580
|
this.createRequestPayloadValue = undefined;
|
|
746
581
|
this.ownsLocationValue = false;
|
|
@@ -753,11 +588,6 @@ export class ZLinkActorRuntimeState {
|
|
|
753
588
|
|
|
754
589
|
prepareForRemoteReentry(): void {
|
|
755
590
|
if (this.remoteActorPacketTargetValue === undefined) return;
|
|
756
|
-
const relocationTransferTarget =
|
|
757
|
-
this.boundSessionTransferTargetValue !== undefined &&
|
|
758
|
-
hasRelocationFence(this.boundSessionTransferTargetValue)
|
|
759
|
-
? this.boundSessionTransferTargetValue
|
|
760
|
-
: undefined;
|
|
761
591
|
this.creationTask = undefined;
|
|
762
592
|
this.configured = false;
|
|
763
593
|
this.context = undefined;
|
|
@@ -766,9 +596,8 @@ export class ZLinkActorRuntimeState {
|
|
|
766
596
|
this.spotValue = undefined;
|
|
767
597
|
this.spotIdValue = undefined;
|
|
768
598
|
this.nativeActorRefValue = undefined;
|
|
769
|
-
|
|
770
|
-
this.
|
|
771
|
-
this.boundSessionTransferTargetValue = relocationTransferTarget;
|
|
599
|
+
// The arriving relocation installs the binding it carries.
|
|
600
|
+
this.boundSessionValue = undefined;
|
|
772
601
|
this.remoteActorPacketTargetValue = undefined;
|
|
773
602
|
this.createRequestPayloadValue = undefined;
|
|
774
603
|
this.ownsLocationValue = false;
|
|
@@ -780,13 +609,22 @@ export class ZLinkActorRuntimeState {
|
|
|
780
609
|
}
|
|
781
610
|
}
|
|
782
611
|
|
|
783
|
-
function
|
|
784
|
-
let
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
612
|
+
function guardBoundSessionTargetWrites(actor: ZLinkActorRuntimeState): void {
|
|
613
|
+
let current: ZLinkRemoteBoundSessionTarget | undefined;
|
|
614
|
+
Object.defineProperty(actor, 'boundSessionValue', {
|
|
615
|
+
configurable: true,
|
|
616
|
+
enumerable: true,
|
|
617
|
+
get: () => current,
|
|
618
|
+
set: (target: ZLinkRemoteBoundSessionTarget | undefined) => {
|
|
619
|
+
if (
|
|
620
|
+
target !== undefined &&
|
|
621
|
+
new Error().stack?.includes('installBoundSessionBinding') !== true
|
|
622
|
+
) {
|
|
623
|
+
throw new Error('Bound Session target must be installed by installBoundSessionBinding.');
|
|
624
|
+
}
|
|
625
|
+
current = target;
|
|
626
|
+
}
|
|
627
|
+
});
|
|
790
628
|
}
|
|
791
629
|
|
|
792
630
|
export function toFrameworkRoutingId(routingId: unknown): RoutingId {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FLOW_ORIGIN_VALUES } from '../diagnostics/flow-context';
|
|
1
2
|
export const ZLINK_REMOTE_BOUND_SESSION_FENCE_NACK_CODE = 'zlink.bound_session.fence';
|
|
2
3
|
|
|
3
4
|
/**
|
|
@@ -69,17 +70,10 @@ export function encodeRemoteBoundSessionSendPayload(input: {
|
|
|
69
70
|
};
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
const WIRE_FLOW_ORIGIN: Record<import('../../contracts').ZLinkFlowOrigin, string> = {
|
|
73
|
-
Inbound: 'inbound',
|
|
74
|
-
Timer: 'timer',
|
|
75
|
-
Application: 'application',
|
|
76
|
-
Lifecycle: 'lifecycle'
|
|
77
|
-
};
|
|
78
|
-
|
|
79
73
|
function encodeWireFlowOrigin(
|
|
80
74
|
origin: import('../../contracts').ZLinkFlowOrigin | undefined
|
|
81
75
|
): string | undefined {
|
|
82
|
-
return origin === undefined ? undefined :
|
|
76
|
+
return origin === undefined ? undefined : FLOW_ORIGIN_VALUES[origin];
|
|
83
77
|
}
|
|
84
78
|
|
|
85
79
|
export function encodeRemoteBoundSessionResponsePayload(input: {
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import type { ActorRef, ZLinkActorJoinOperationId } from '../../contracts';
|
|
1
|
+
import type { ActorRef, ZLinkActorJoinOperationId, ZLinkFrameworkErrorKind } from '../../contracts';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* The Accepted
|
|
5
|
-
* sections 4-5: the public OperationId,
|
|
4
|
+
* The Accepted or Failed result of a deferred cross-node Join. Spot Actor
|
|
5
|
+
* membership sections 4-5: the public OperationId, optional reply and delivery
|
|
6
6
|
* state live only while the current source and target processes run. The
|
|
7
|
-
* completion is never written to a Store
|
|
7
|
+
* completion is never written to a Store or replayed after a restart.
|
|
8
8
|
*/
|
|
9
|
-
export
|
|
9
|
+
export type ZLinkDeferredJoinCompletion = {
|
|
10
10
|
readonly operationId: ZLinkActorJoinOperationId;
|
|
11
11
|
readonly actor: ActorRef;
|
|
12
12
|
readonly rawReply: Buffer;
|
|
13
13
|
readonly replyContentType?: string;
|
|
14
|
-
}
|
|
14
|
+
} & (
|
|
15
|
+
| { readonly status: 'accepted' }
|
|
16
|
+
| { readonly status: 'failed'; readonly kind: ZLinkFrameworkErrorKind }
|
|
17
|
+
);
|
|
15
18
|
|
|
16
19
|
export function createDeferredJoinCompletion(
|
|
17
20
|
actorId: string,
|
|
@@ -32,6 +35,7 @@ export function createDeferredJoinCompletion(
|
|
|
32
35
|
throw new TypeError('Deferred Join reply content type must be non-empty.');
|
|
33
36
|
}
|
|
34
37
|
return {
|
|
38
|
+
status: 'accepted',
|
|
35
39
|
operationId,
|
|
36
40
|
actor,
|
|
37
41
|
rawReply: Buffer.from(rawReply),
|