@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
|
@@ -11,9 +11,18 @@ exports.encodeServiceRelocationEnvelope = encodeServiceRelocationEnvelope;
|
|
|
11
11
|
exports.decodeServiceRelocationEnvelope = decodeServiceRelocationEnvelope;
|
|
12
12
|
exports.inventoryDigest = inventoryDigest;
|
|
13
13
|
exports.crc32c = crc32c;
|
|
14
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
14
15
|
const node_crypto_1 = require("node:crypto");
|
|
16
|
+
const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
|
|
15
17
|
const authority_key_codec_1 = require("../locations/authority-key-codec");
|
|
18
|
+
const service_wire_codec_generated_1 = require("../protocol/service_wire_codec.generated");
|
|
16
19
|
const service_wire_pilot_codec_generated_1 = require("../protocol/service_wire_pilot_codec.generated");
|
|
20
|
+
const actor_join_recovery_codec_1 = require("./actor-join-recovery-codec");
|
|
21
|
+
const MAX_RELOCATION_GENERATION = 0x7fffffffffffffffn;
|
|
22
|
+
const RELOCATION_PREPARING_PHASE = (0, service_wire_codec_generated_1.enumWireRelocationPhase)('preparing');
|
|
23
|
+
const RELOCATION_ACTIVATING_PHASE = (0, service_wire_codec_generated_1.enumWireRelocationPhase)('activating');
|
|
24
|
+
const RELOCATION_COMPLETED_PHASE = (0, service_wire_codec_generated_1.enumWireRelocationPhase)('completed');
|
|
25
|
+
const RELOCATION_LAST_PHASE = (0, service_wire_codec_generated_1.enumWireRelocationPhase)('aborted');
|
|
17
26
|
/** Deterministic Location authority wrapper for one immutable relocation root. */
|
|
18
27
|
class ServiceRelocationAuthorityPayloadCodec {
|
|
19
28
|
publish(currentPayload, publication) {
|
|
@@ -109,7 +118,7 @@ function projectServiceRelocationAuthorityTargetReady(payload, target) {
|
|
|
109
118
|
coordinatorNodeRid: target.nodeRid,
|
|
110
119
|
coordinatorNodeGeneration: target.nodeGeneration,
|
|
111
120
|
coordinatorExpectedStoreVersion: target.coordinatorExpectedStoreVersion,
|
|
112
|
-
phase:
|
|
121
|
+
phase: RELOCATION_ACTIVATING_PHASE,
|
|
113
122
|
sourceCleanupState: 0
|
|
114
123
|
});
|
|
115
124
|
return replaceCanonicalRelocationSlot(layout, slot);
|
|
@@ -150,7 +159,7 @@ function decodeCanonicalAuthorityPublication(payload) {
|
|
|
150
159
|
function decodeCanonicalAuthorityLayout(payload) {
|
|
151
160
|
try {
|
|
152
161
|
const bytes = Buffer.from(payload);
|
|
153
|
-
if (bytes.byteLength < 20 || bytes.byteLength >
|
|
162
|
+
if (bytes.byteLength < 20 || bytes.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES)
|
|
154
163
|
return undefined;
|
|
155
164
|
const reader = new CanonicalReader(bytes);
|
|
156
165
|
reader.expect(Buffer.from('ZLAU'));
|
|
@@ -223,21 +232,21 @@ function decodeCanonicalRelocationSlot(payload, rootAggregateGeneration) {
|
|
|
223
232
|
const sourceCleanupState = reader.u8();
|
|
224
233
|
if (!reader.done ||
|
|
225
234
|
aggregateGeneration > 0x7ffffffffffffffen ||
|
|
226
|
-
(aggregateGeneration === 0n && phase !==
|
|
235
|
+
(aggregateGeneration === 0n && phase !== RELOCATION_PREPARING_PHASE) ||
|
|
227
236
|
(rootAggregateGeneration !== undefined && aggregateGeneration !== rootAggregateGeneration) ||
|
|
228
|
-
targetAttemptGeneration >
|
|
237
|
+
targetAttemptGeneration > MAX_RELOCATION_GENERATION ||
|
|
229
238
|
sourceNodeGeneration === 0n ||
|
|
230
|
-
sourceNodeGeneration >
|
|
239
|
+
sourceNodeGeneration > MAX_RELOCATION_GENERATION ||
|
|
231
240
|
sourceOwnerLeaseGeneration === 0n ||
|
|
232
|
-
sourceOwnerLeaseGeneration >
|
|
233
|
-
targetNodeGeneration >
|
|
234
|
-
targetOwnerLeaseGeneration >
|
|
241
|
+
sourceOwnerLeaseGeneration > MAX_RELOCATION_GENERATION ||
|
|
242
|
+
targetNodeGeneration > MAX_RELOCATION_GENERATION ||
|
|
243
|
+
targetOwnerLeaseGeneration > MAX_RELOCATION_GENERATION ||
|
|
235
244
|
coordinatorLeaseGeneration === 0n ||
|
|
236
|
-
coordinatorLeaseGeneration >
|
|
245
|
+
coordinatorLeaseGeneration > MAX_RELOCATION_GENERATION ||
|
|
237
246
|
coordinatorNodeGeneration === 0n ||
|
|
238
|
-
coordinatorNodeGeneration >
|
|
239
|
-
phase <
|
|
240
|
-
phase >
|
|
247
|
+
coordinatorNodeGeneration > MAX_RELOCATION_GENERATION ||
|
|
248
|
+
phase < RELOCATION_PREPARING_PHASE ||
|
|
249
|
+
phase > RELOCATION_LAST_PHASE ||
|
|
241
250
|
applicationVersion < 0n ||
|
|
242
251
|
sourceCleanupState > 2)
|
|
243
252
|
return undefined;
|
|
@@ -276,10 +285,10 @@ function encodeCanonicalRelocationSlot(value) {
|
|
|
276
285
|
if (aggregateGeneration > 0x7ffffffffffffffen) {
|
|
277
286
|
throw new TypeError('Aggregate generation exceeds the issued range.');
|
|
278
287
|
}
|
|
279
|
-
if (aggregateGeneration === 0n && value.phase !==
|
|
288
|
+
if (aggregateGeneration === 0n && value.phase !== RELOCATION_PREPARING_PHASE) {
|
|
280
289
|
throw new TypeError('Zero aggregate generation is only valid while preparing.');
|
|
281
290
|
}
|
|
282
|
-
if (targetAttemptGeneration >
|
|
291
|
+
if (targetAttemptGeneration > MAX_RELOCATION_GENERATION) {
|
|
283
292
|
throw new TypeError('Target attempt generation exceeds the ordinal range.');
|
|
284
293
|
}
|
|
285
294
|
const sourceNodeGeneration = canonicalNonZeroOrdinal(value.sourceNodeGeneration, 'source node generation');
|
|
@@ -288,7 +297,9 @@ function encodeCanonicalRelocationSlot(value) {
|
|
|
288
297
|
const targetOwnerLeaseGeneration = canonicalOrdinal(value.targetOwnerLeaseGeneration, 'target owner lease generation');
|
|
289
298
|
const coordinatorLeaseGeneration = canonicalNonZeroOrdinal(value.coordinatorLeaseGeneration, 'coordinator lease generation');
|
|
290
299
|
const coordinatorNodeGeneration = canonicalNonZeroOrdinal(value.coordinatorNodeGeneration, 'coordinator node generation');
|
|
291
|
-
if (!Number.isInteger(value.phase) ||
|
|
300
|
+
if (!Number.isInteger(value.phase) ||
|
|
301
|
+
value.phase < RELOCATION_PREPARING_PHASE ||
|
|
302
|
+
value.phase > RELOCATION_LAST_PHASE) {
|
|
292
303
|
throw new TypeError('Canonical relocation phase is invalid.');
|
|
293
304
|
}
|
|
294
305
|
if (!Number.isInteger(value.sourceCleanupState) ||
|
|
@@ -348,7 +359,7 @@ function encodeCanonicalRelocationPublicationSlot(layout, publication) {
|
|
|
348
359
|
coordinatorNodeRid: publication.coordinatorNodeRid ?? nodeRid,
|
|
349
360
|
coordinatorNodeGeneration: publication.coordinatorNodeGeneration ?? layout.nodeGeneration,
|
|
350
361
|
coordinatorExpectedStoreVersion: publication.coordinatorExpectedStoreVersion ?? '',
|
|
351
|
-
phase: publication.canonicalPhase ??
|
|
362
|
+
phase: publication.canonicalPhase ?? RELOCATION_COMPLETED_PHASE,
|
|
352
363
|
applicationVersion,
|
|
353
364
|
sourceCleanupState: publication.canonicalSourceCleanupState ?? 0
|
|
354
365
|
});
|
|
@@ -370,8 +381,8 @@ function replaceCanonicalRelocationSlot(layout, slot) {
|
|
|
370
381
|
body
|
|
371
382
|
]);
|
|
372
383
|
const result = Buffer.concat([envelope, canonicalU32(crc32c(envelope))]);
|
|
373
|
-
if (result.byteLength >
|
|
374
|
-
throw new TypeError(
|
|
384
|
+
if (result.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
385
|
+
throw new TypeError(`Canonical authority payload exceeds ${InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
|
|
375
386
|
}
|
|
376
387
|
return result;
|
|
377
388
|
}
|
|
@@ -721,8 +732,8 @@ function encodeAuthorityEnvelope(base, publication) {
|
|
|
721
732
|
}
|
|
722
733
|
const aggregateGeneration = positiveBigInt(publication.aggregateGeneration, 'aggregate generation');
|
|
723
734
|
const targetOwnerLeaseGeneration = positiveBigInt(publication.targetOwnerLeaseGeneration, 'target owner lease generation');
|
|
724
|
-
if (aggregateGeneration >
|
|
725
|
-
targetOwnerLeaseGeneration >
|
|
735
|
+
if (aggregateGeneration > MAX_RELOCATION_GENERATION ||
|
|
736
|
+
targetOwnerLeaseGeneration > MAX_RELOCATION_GENERATION) {
|
|
726
737
|
throw new TypeError('Relocation publication generations must fit signed 64-bit storage.');
|
|
727
738
|
}
|
|
728
739
|
const payload = Buffer.concat([
|
|
@@ -738,8 +749,8 @@ function encodeAuthorityEnvelope(base, publication) {
|
|
|
738
749
|
i64le(targetOwnerLeaseGeneration),
|
|
739
750
|
bytes32le(base)
|
|
740
751
|
]);
|
|
741
|
-
if (payload.byteLength >
|
|
742
|
-
throw new TypeError(
|
|
752
|
+
if (payload.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
753
|
+
throw new TypeError(`Location authority relocation payload exceeds ${InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
|
|
743
754
|
}
|
|
744
755
|
return payload;
|
|
745
756
|
}
|
|
@@ -759,8 +770,8 @@ function decodeAuthorityEnvelope(payload) {
|
|
|
759
770
|
const base = reader.bytes32();
|
|
760
771
|
if (!reader.done ||
|
|
761
772
|
aggregateGeneration === 0n ||
|
|
762
|
-
aggregateGeneration >
|
|
763
|
-
inventoryDigestBytes.byteLength !==
|
|
773
|
+
aggregateGeneration > MAX_RELOCATION_GENERATION ||
|
|
774
|
+
inventoryDigestBytes.byteLength !== actor_join_recovery_codec_1.SHA256_DIGEST_BYTES ||
|
|
764
775
|
targetOwnerLeaseGeneration <= 0n) {
|
|
765
776
|
return undefined;
|
|
766
777
|
}
|
|
@@ -852,8 +863,8 @@ function text16le(value) {
|
|
|
852
863
|
}
|
|
853
864
|
function bytes32le(value) {
|
|
854
865
|
const bytes = Buffer.from(value);
|
|
855
|
-
if (bytes.byteLength >
|
|
856
|
-
throw new TypeError(
|
|
866
|
+
if (bytes.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
867
|
+
throw new TypeError(`Relocation byte field exceeds ${InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
|
|
857
868
|
}
|
|
858
869
|
const length = Buffer.alloc(4);
|
|
859
870
|
length.writeInt32LE(bytes.byteLength);
|
|
@@ -1001,7 +1012,7 @@ function canonicalU32(value) {
|
|
|
1001
1012
|
return result;
|
|
1002
1013
|
}
|
|
1003
1014
|
function canonicalU64(value) {
|
|
1004
|
-
if (value < 0n || value >
|
|
1015
|
+
if (value < 0n || value > stream_wire_1.UINT64_MAX) {
|
|
1005
1016
|
throw new TypeError('Canonical authority u64 is invalid.');
|
|
1006
1017
|
}
|
|
1007
1018
|
const result = Buffer.alloc(8);
|
|
@@ -1010,7 +1021,7 @@ function canonicalU64(value) {
|
|
|
1010
1021
|
}
|
|
1011
1022
|
function canonicalOrdinal(value, name) {
|
|
1012
1023
|
const ordinal = nonNegativeBigInt(value, name);
|
|
1013
|
-
if (ordinal >
|
|
1024
|
+
if (ordinal > MAX_RELOCATION_GENERATION) {
|
|
1014
1025
|
throw new TypeError(`${name} exceeds the ordinal range.`);
|
|
1015
1026
|
}
|
|
1016
1027
|
return ordinal;
|
|
@@ -1022,7 +1033,7 @@ function canonicalNonZeroOrdinal(value, name) {
|
|
|
1022
1033
|
return ordinal;
|
|
1023
1034
|
}
|
|
1024
1035
|
function canonicalI64(value) {
|
|
1025
|
-
if (value < 0n || value >
|
|
1036
|
+
if (value < 0n || value > MAX_RELOCATION_GENERATION) {
|
|
1026
1037
|
throw new TypeError('Canonical authority i64 is invalid.');
|
|
1027
1038
|
}
|
|
1028
1039
|
const result = Buffer.alloc(8);
|
|
@@ -1034,8 +1045,8 @@ class DotnetBinaryReader {
|
|
|
1034
1045
|
offset = 0;
|
|
1035
1046
|
constructor(payload) {
|
|
1036
1047
|
this.bytes = Buffer.from(payload);
|
|
1037
|
-
if (this.bytes.byteLength >
|
|
1038
|
-
throw new TypeError(
|
|
1048
|
+
if (this.bytes.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
1049
|
+
throw new TypeError(`Location authority relocation payload exceeds ${InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
|
|
1039
1050
|
}
|
|
1040
1051
|
}
|
|
1041
1052
|
get done() {
|
|
@@ -1066,7 +1077,7 @@ class DotnetBinaryReader {
|
|
|
1066
1077
|
}
|
|
1067
1078
|
bytes32() {
|
|
1068
1079
|
const length = this.take(4).readInt32LE(0);
|
|
1069
|
-
if (length < 0 || length >
|
|
1080
|
+
if (length < 0 || length > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
1070
1081
|
throw new TypeError('Location authority relocation byte field is invalid.');
|
|
1071
1082
|
}
|
|
1072
1083
|
return Buffer.from(this.take(length));
|
|
@@ -1,9 +1,30 @@
|
|
|
1
|
-
import type { Message } from '../../contracts/Common/Message';
|
|
2
|
-
import type { RequestResult, SubmitResult, ZLinkBackendMessageLike as MessageLike } from '../backend/runtime-values';
|
|
3
1
|
import type { RoutingId } from '../../contracts';
|
|
2
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
4
3
|
import type { ApplicationJobPermitPort } from '../application-jobs/contracts';
|
|
4
|
+
import type { ZLinkBackendMessageLike as MessageLike, RequestResult, SubmitResult } from '../backend/runtime-values';
|
|
5
5
|
import type { ServiceActorRef } from './service-stateful-registry';
|
|
6
6
|
import type { ServiceDirectSpotRouteFence, ServiceRetiredBoundSessionRouteFence } from './service-stateful-wire-codec';
|
|
7
|
+
export declare enum StreamSessionRuntimeState {
|
|
8
|
+
Created = 1,
|
|
9
|
+
Started = 2,
|
|
10
|
+
Closed = 5
|
|
11
|
+
}
|
|
12
|
+
export declare enum MeshNodeRuntimeState {
|
|
13
|
+
Preparing = 1,
|
|
14
|
+
Serving = 2,
|
|
15
|
+
Retiring = 3,
|
|
16
|
+
Draining = 4,
|
|
17
|
+
Stopped = 5,
|
|
18
|
+
Error = 6
|
|
19
|
+
}
|
|
20
|
+
export declare enum MeshPeerRuntimeState {
|
|
21
|
+
Connecting = 1,
|
|
22
|
+
Preparing = 2,
|
|
23
|
+
Serving = 3,
|
|
24
|
+
Draining = 4,
|
|
25
|
+
Closed = 5,
|
|
26
|
+
NotRequired = 6
|
|
27
|
+
}
|
|
7
28
|
export interface MeshOperationId {
|
|
8
29
|
readonly high: bigint;
|
|
9
30
|
readonly low: bigint;
|
|
@@ -142,6 +163,17 @@ export interface ActorTransferControlPayload {
|
|
|
142
163
|
readonly resultCode: number;
|
|
143
164
|
readonly failureErrno: number;
|
|
144
165
|
}
|
|
166
|
+
/** The Session owner's registry view of one Session binding (Session–Actor binding §5-2). */
|
|
167
|
+
export interface ServiceStreamSessionBinding {
|
|
168
|
+
readonly sessionRid: RoutingId;
|
|
169
|
+
readonly actor: ServiceActorRef;
|
|
170
|
+
readonly sessionOwnerNodeRid: RoutingId;
|
|
171
|
+
readonly sessionOwnerNodeGeneration: bigint;
|
|
172
|
+
readonly sessionOwnerId: string;
|
|
173
|
+
readonly sessionOwnerLeaseGeneration: bigint;
|
|
174
|
+
readonly bindingGeneration: bigint;
|
|
175
|
+
readonly membershipEpoch: bigint;
|
|
176
|
+
}
|
|
145
177
|
export interface ActorBindingControlPayload {
|
|
146
178
|
readonly kind: 'actorBinding';
|
|
147
179
|
readonly transition: 'active' | 'tombstone';
|
|
@@ -199,8 +231,13 @@ export interface ReceiveRecord {
|
|
|
199
231
|
readonly isPending?: () => boolean;
|
|
200
232
|
/** Absolute deadline used by the local lifecycle dispatch fence. */
|
|
201
233
|
readonly deadlineUnixMs?: bigint;
|
|
234
|
+
readonly activationRecord?: Extract<import('./service-stateful-wire-codec').ServiceStatefulWireRecord, {
|
|
235
|
+
readonly kind: 'instanceSpot';
|
|
236
|
+
}>;
|
|
202
237
|
readonly messageFollowOrigin?: ZLinkMessageFollowOrigin;
|
|
203
238
|
readonly onTerminalCompletion?: () => void | Promise<void>;
|
|
239
|
+
/** Marks the start of the first handler turn whose terminal record a Close waits for. */
|
|
240
|
+
readonly onHandlerTurnStarted?: () => void;
|
|
204
241
|
readonly applicationJobPermit?: ApplicationJobPermitPort;
|
|
205
242
|
readonly releaseRetainedIngress?: () => void;
|
|
206
243
|
reply(parts: MessageLike | readonly MessageLike[], flags?: number): SubmitResult;
|
|
@@ -279,12 +316,7 @@ export interface StreamSessionService {
|
|
|
279
316
|
lookupActor(targetNodeRid: RoutingId, actorId: string, timeoutMs?: number): MeshOperationId;
|
|
280
317
|
bindActor(sessionRid: RoutingId, actor: ServiceActorRef, timeoutMs?: number, onBindingReplaced?: (actorId: string, retiredSession: ServiceRetiredBoundSessionRouteFence, actor: ServiceActorRef) => void, actorAuthority?: StreamSessionActorAuthorityFence): MeshOperationId;
|
|
281
318
|
unbindActor(sessionRid: RoutingId, actor: ServiceActorRef, expectedBindingGeneration: bigint, timeoutMs?: number): MeshOperationId;
|
|
282
|
-
bindings(sessionRid: RoutingId): ReadonlyArray<
|
|
283
|
-
readonly sessionRid: RoutingId;
|
|
284
|
-
readonly actor: ServiceActorRef;
|
|
285
|
-
readonly bindingGeneration: bigint;
|
|
286
|
-
readonly membershipEpoch: bigint;
|
|
287
|
-
}>;
|
|
319
|
+
bindings(sessionRid: RoutingId): ReadonlyArray<ServiceStreamSessionBinding>;
|
|
288
320
|
sendToActor(sessionRid: RoutingId, actor: ServiceActorRef, parts: MessageLike | readonly MessageLike[], options?: {
|
|
289
321
|
flags?: number;
|
|
290
322
|
}): Promise<SubmitResult>;
|
|
@@ -1,7 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ActorTransferPhase = exports.ActorTransferRole = exports.ActorLifecycleKind = exports.OperationKind = exports.ReceiveKind = exports.ReadyOwnerKind = exports.ReadyDomain = void 0;
|
|
3
|
+
exports.ActorTransferPhase = exports.ActorTransferRole = exports.ActorLifecycleKind = exports.OperationKind = exports.ReceiveKind = exports.ReadyOwnerKind = exports.ReadyDomain = exports.MeshPeerRuntimeState = exports.MeshNodeRuntimeState = exports.StreamSessionRuntimeState = void 0;
|
|
4
4
|
exports.operationRequiresReply = operationRequiresReply;
|
|
5
|
+
var StreamSessionRuntimeState;
|
|
6
|
+
(function (StreamSessionRuntimeState) {
|
|
7
|
+
StreamSessionRuntimeState[StreamSessionRuntimeState["Created"] = 1] = "Created";
|
|
8
|
+
StreamSessionRuntimeState[StreamSessionRuntimeState["Started"] = 2] = "Started";
|
|
9
|
+
StreamSessionRuntimeState[StreamSessionRuntimeState["Closed"] = 5] = "Closed";
|
|
10
|
+
})(StreamSessionRuntimeState || (exports.StreamSessionRuntimeState = StreamSessionRuntimeState = {}));
|
|
11
|
+
var MeshNodeRuntimeState;
|
|
12
|
+
(function (MeshNodeRuntimeState) {
|
|
13
|
+
MeshNodeRuntimeState[MeshNodeRuntimeState["Preparing"] = 1] = "Preparing";
|
|
14
|
+
MeshNodeRuntimeState[MeshNodeRuntimeState["Serving"] = 2] = "Serving";
|
|
15
|
+
MeshNodeRuntimeState[MeshNodeRuntimeState["Retiring"] = 3] = "Retiring";
|
|
16
|
+
MeshNodeRuntimeState[MeshNodeRuntimeState["Draining"] = 4] = "Draining";
|
|
17
|
+
MeshNodeRuntimeState[MeshNodeRuntimeState["Stopped"] = 5] = "Stopped";
|
|
18
|
+
MeshNodeRuntimeState[MeshNodeRuntimeState["Error"] = 6] = "Error";
|
|
19
|
+
})(MeshNodeRuntimeState || (exports.MeshNodeRuntimeState = MeshNodeRuntimeState = {}));
|
|
20
|
+
var MeshPeerRuntimeState;
|
|
21
|
+
(function (MeshPeerRuntimeState) {
|
|
22
|
+
MeshPeerRuntimeState[MeshPeerRuntimeState["Connecting"] = 1] = "Connecting";
|
|
23
|
+
MeshPeerRuntimeState[MeshPeerRuntimeState["Preparing"] = 2] = "Preparing";
|
|
24
|
+
MeshPeerRuntimeState[MeshPeerRuntimeState["Serving"] = 3] = "Serving";
|
|
25
|
+
MeshPeerRuntimeState[MeshPeerRuntimeState["Draining"] = 4] = "Draining";
|
|
26
|
+
MeshPeerRuntimeState[MeshPeerRuntimeState["Closed"] = 5] = "Closed";
|
|
27
|
+
MeshPeerRuntimeState[MeshPeerRuntimeState["NotRequired"] = 6] = "NotRequired";
|
|
28
|
+
})(MeshPeerRuntimeState || (exports.MeshPeerRuntimeState = MeshPeerRuntimeState = {}));
|
|
5
29
|
exports.ReadyDomain = Object.freeze({
|
|
6
30
|
None: 0,
|
|
7
31
|
Application: 1,
|
|
@@ -1,24 +1,5 @@
|
|
|
1
|
-
export interface ServiceSessionBindingRetainedDelivery {
|
|
2
|
-
deliver(): Promise<boolean>;
|
|
3
|
-
fail(error: unknown): void;
|
|
4
|
-
}
|
|
5
|
-
export interface ServiceSessionBindingAdmissionClaim {
|
|
6
|
-
readonly actorId: string;
|
|
7
|
-
readonly objectGeneration: bigint;
|
|
8
|
-
readonly actorNodeRid: string;
|
|
9
|
-
readonly actorNodeGeneration: bigint;
|
|
10
|
-
readonly authorityOwnerGeneration: bigint;
|
|
11
|
-
readonly ownerLeaseGeneration: bigint;
|
|
12
|
-
readonly producerNodeRid: string;
|
|
13
|
-
readonly producerNodeGeneration: bigint;
|
|
14
|
-
readonly sessionIdentity: string;
|
|
15
|
-
readonly bindingGeneration: bigint;
|
|
16
|
-
}
|
|
17
|
-
export type ServiceSessionBindingAdmissionResult = 'passThrough' | 'retained' | 'rejected';
|
|
18
1
|
export interface ServiceSessionBindingIngressPort {
|
|
19
2
|
actorSlot(actorId: string, sessionRid: string): Promise<number | undefined>;
|
|
20
|
-
retainOutbound(claim: ServiceSessionBindingAdmissionClaim, delivery: ServiceSessionBindingRetainedDelivery): Promise<ServiceSessionBindingAdmissionResult>;
|
|
21
|
-
clearOutbound(actorId: string, error: unknown): Promise<void>;
|
|
22
3
|
}
|
|
23
4
|
export declare function registerServiceSessionBindingIngressPort(service: object, port: ServiceSessionBindingIngressPort): void;
|
|
24
5
|
export declare function serviceSessionBindingIngressPortIfRegistered(service: object): ServiceSessionBindingIngressPort | undefined;
|
|
@@ -137,6 +137,8 @@ export declare class ServiceTerminalOperationRegistry<T> {
|
|
|
137
137
|
fail(id: bigint, error: unknown): boolean;
|
|
138
138
|
cancel(id: bigint): boolean;
|
|
139
139
|
isPending(id: bigint): boolean;
|
|
140
|
+
get size(): number;
|
|
141
|
+
expire(nowMs: number, turnDeadlineMs: number): number;
|
|
140
142
|
close(): void;
|
|
141
143
|
}
|
|
142
144
|
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ServiceTerminalOperationRegistry = exports.ServiceStatefulRegistry = exports.ServiceStaleGenerationError = void 0;
|
|
4
|
+
const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
|
|
4
5
|
const operation_registry_1 = require("./operation-registry");
|
|
5
6
|
class ServiceStaleGenerationError extends Error {
|
|
6
7
|
objectKind;
|
|
@@ -184,6 +185,7 @@ class ServiceStatefulRegistry {
|
|
|
184
185
|
this.actorGenerations.set(actor.actorId, max(this.actorGenerations.get(actor.actorId) ?? 0n, actor.generation));
|
|
185
186
|
this.actorTypes.set(actor.actorId, stableType);
|
|
186
187
|
this.actors.set(actor.actorId, restored);
|
|
188
|
+
this.updateBindingMembership(restored);
|
|
187
189
|
return restored;
|
|
188
190
|
}
|
|
189
191
|
actor(actorId) {
|
|
@@ -443,6 +445,12 @@ class ServiceTerminalOperationRegistry {
|
|
|
443
445
|
isPending(id) {
|
|
444
446
|
return this.operations.isPending(id);
|
|
445
447
|
}
|
|
448
|
+
get size() {
|
|
449
|
+
return this.operations.size;
|
|
450
|
+
}
|
|
451
|
+
expire(nowMs, turnDeadlineMs) {
|
|
452
|
+
return this.operations.expire(nowMs, turnDeadlineMs);
|
|
453
|
+
}
|
|
446
454
|
close() {
|
|
447
455
|
this.operations.close('Stateful runtime closed.');
|
|
448
456
|
}
|
|
@@ -453,8 +461,8 @@ function actorKey(actor) {
|
|
|
453
461
|
}
|
|
454
462
|
function requireText(value, name) {
|
|
455
463
|
const bytes = Buffer.byteLength(value);
|
|
456
|
-
if (bytes < 1 || bytes >
|
|
457
|
-
throw new RangeError(`${name} must be 1
|
|
464
|
+
if (bytes < 1 || bytes > CoreTypes_1.ZLINK_MAX_IDENTITY_TEXT_BYTES || value.includes('\0')) {
|
|
465
|
+
throw new RangeError(`${name} must be 1..${CoreTypes_1.ZLINK_MAX_IDENTITY_TEXT_BYTES} UTF-8 bytes without NUL.`);
|
|
458
466
|
}
|
|
459
467
|
}
|
|
460
468
|
function requirePositive(value, name) {
|
|
@@ -1,21 +1,16 @@
|
|
|
1
|
+
import type { ZLinkAuthoritySnapshot } from '../locations/internal-location-contracts';
|
|
1
2
|
import type { ZLinkDispatchErrorReporter } from '../channels/dispatch-error-reporter';
|
|
2
3
|
import type { RawServiceMeshRuntime } from './raw-service-mesh-runtime';
|
|
3
|
-
import
|
|
4
|
+
import type { ServiceInstanceActivationRecoveryEnvelope } from './service-instance-activation-recovery-codec';
|
|
4
5
|
import type { ServiceMailboxRecord } from './service-mailbox';
|
|
6
|
+
import { type ReceiveKindData, type ServiceStreamSessionBinding, type StreamSessionActorAuthorityFence } from './service-runtime-contracts';
|
|
5
7
|
import { ServiceStatefulRegistry, type ServiceActorRef, type ServiceActorState, type ServiceSessionBinding, type ServiceSpotRef, type ServiceSpotState } from './service-stateful-registry';
|
|
6
|
-
import { type
|
|
8
|
+
import { type ServiceActorCreateRecord, type ServiceActorRouteFence, type ServiceDirectSpotRouteFence, type ServiceInstanceActivationTarget, type ServiceInstanceRouteFence, type ServiceRetiredBoundSessionRouteFence, type ServiceStatefulReplyTail, type ServiceStatefulWireRecord, type ServiceUserSpotCloseRecord, type ServiceUserSpotCreateRecord } from './service-stateful-wire-codec';
|
|
7
9
|
import { type ServiceApplicationPayload } from './service-wire-m6a-codec';
|
|
8
|
-
import type { ServiceInstanceActivationRecoveryEnvelope } from './service-instance-activation-recovery-codec';
|
|
9
|
-
import type { ServiceSessionBindingIngressPort } from './service-session-binding-ingress-port';
|
|
10
10
|
export interface ServiceSpotMessageFollowSeal {
|
|
11
11
|
readonly key: string;
|
|
12
12
|
readonly serial: bigint;
|
|
13
13
|
}
|
|
14
|
-
export interface ServiceBoundSessionSendFence {
|
|
15
|
-
readonly targetNodeGeneration: bigint;
|
|
16
|
-
readonly authorityOwnerGeneration: bigint;
|
|
17
|
-
readonly ownerLeaseGeneration: bigint;
|
|
18
|
-
}
|
|
19
14
|
export interface ServiceStatefulResult {
|
|
20
15
|
readonly terminalResult: number;
|
|
21
16
|
readonly failureCode: number;
|
|
@@ -50,7 +45,11 @@ export interface ServiceStatefulMailboxData {
|
|
|
50
45
|
readonly isPending?: () => boolean;
|
|
51
46
|
/** Carries the local operation deadline into the lifecycle dispatch lane. */
|
|
52
47
|
readonly deadlineUnixMs?: bigint;
|
|
48
|
+
readonly activationRecord?: Extract<ServiceStatefulWireRecord, {
|
|
49
|
+
readonly kind: 'instanceSpot';
|
|
50
|
+
}>;
|
|
53
51
|
readonly onTerminalCompletion?: () => void | Promise<void>;
|
|
52
|
+
readonly onHandlerTurnStarted?: () => void;
|
|
54
53
|
/** Decoded only by the canonical command-28 generator path. */
|
|
55
54
|
readonly canonicalApplicationPayload?: ServiceApplicationPayload;
|
|
56
55
|
readonly reply?: (terminalResult: number, failureCode: number, payload?: ServiceApplicationPayload, tail?: ServiceStatefulReplyTail) => boolean;
|
|
@@ -70,9 +69,8 @@ export interface ServiceCanonicalActorJoinCandidate {
|
|
|
70
69
|
}
|
|
71
70
|
export interface ServiceSessionDelivery {
|
|
72
71
|
readonly binding: ServiceSessionBinding;
|
|
73
|
-
readonly bindingIngress?: ServiceSessionBindingIngressPort;
|
|
74
72
|
/**
|
|
75
|
-
* Delivers the
|
|
73
|
+
* Delivers the M6A application frame after the binding fence has
|
|
76
74
|
* been validated. The stream adapter owns multipart decoding at that point.
|
|
77
75
|
*/
|
|
78
76
|
readonly deliver: (sessionRid: string, payloadFrame: Uint8Array) => Promise<boolean>;
|
|
@@ -91,7 +89,6 @@ export type ServiceInstanceApplicationTarget = ServiceInstanceApplicationIdentit
|
|
|
91
89
|
export interface ServiceInstanceApplicationLifecycle {
|
|
92
90
|
isMaterialized(target: ServiceInstanceApplicationIdentity): boolean;
|
|
93
91
|
isMaterializing?(target: ServiceInstanceApplicationIdentity): boolean;
|
|
94
|
-
isClosing?(target: ServiceInstanceApplicationIdentity): boolean;
|
|
95
92
|
isIdleEvicting?(target: ServiceInstanceApplicationIdentity): boolean;
|
|
96
93
|
beginIdleEviction?(target: ServiceInstanceApplicationIdentity): boolean;
|
|
97
94
|
materialize(target: ServiceInstanceApplicationIdentity, objectGeneration: bigint): Promise<void>;
|
|
@@ -119,9 +116,11 @@ export type ServiceInstanceAuthorityRead = {
|
|
|
119
116
|
readonly kind: 'creating';
|
|
120
117
|
readonly objectGeneration: bigint;
|
|
121
118
|
readonly authorityOwnerGeneration: bigint;
|
|
119
|
+
readonly authority?: ZLinkAuthoritySnapshot;
|
|
122
120
|
} | {
|
|
123
121
|
readonly kind: 'ready';
|
|
124
122
|
readonly route: ServiceInstanceRouteFence;
|
|
123
|
+
readonly authority?: ZLinkAuthoritySnapshot;
|
|
125
124
|
};
|
|
126
125
|
export type ServiceInstanceAuthorityReserve = {
|
|
127
126
|
readonly kind: 'reserved';
|
|
@@ -153,9 +152,9 @@ export interface ServiceInstanceActivationAuthority {
|
|
|
153
152
|
*/
|
|
154
153
|
export interface ServiceAsyncInstanceActivationAuthority {
|
|
155
154
|
read(target: ServiceInstanceActivationTarget): Promise<ServiceInstanceAuthorityRead>;
|
|
156
|
-
reserve(activation: Omit<ServiceInstanceActivationRecoveryEnvelope, 'targetMeshName'
|
|
155
|
+
reserve(activation: Omit<ServiceInstanceActivationRecoveryEnvelope, 'targetMeshName'>, signal?: AbortSignal): Promise<ServiceInstanceAuthorityReserve>;
|
|
157
156
|
resume(target: ServiceInstanceActivationTarget, pending: ServicePendingInstanceActivation): Promise<ServiceInstanceActivationReservation>;
|
|
158
|
-
commit(target: ServiceInstanceActivationTarget, reservation: ServiceInstanceActivationReservation, spot: ServiceSpotState): Promise<{
|
|
157
|
+
commit(target: ServiceInstanceActivationTarget, reservation: ServiceInstanceActivationReservation, spot: ServiceSpotState, deadlineUnixMs?: bigint): Promise<{
|
|
159
158
|
readonly kind: 'committed' | 'lost';
|
|
160
159
|
readonly route: ServiceInstanceRouteFence;
|
|
161
160
|
}>;
|
|
@@ -201,7 +200,6 @@ export declare class ServiceStatefulRuntime {
|
|
|
201
200
|
private readonly subscriptions;
|
|
202
201
|
private readonly instanceIntents;
|
|
203
202
|
private readonly admittedInstanceOperations;
|
|
204
|
-
private readonly pendingInstanceTerminals;
|
|
205
203
|
private readonly pendingInstanceAuthorityTerminals;
|
|
206
204
|
private readonly instanceApplicationWaiters;
|
|
207
205
|
private readonly canonicalActorJoinHandoffs;
|
|
@@ -227,7 +225,7 @@ export declare class ServiceStatefulRuntime {
|
|
|
227
225
|
private readonly admittedUserSpotOperations;
|
|
228
226
|
private readonly pendingInstanceActivations;
|
|
229
227
|
private closed;
|
|
230
|
-
constructor(raw: RawServiceMeshRuntime, nodeRid: string, nodeGeneration: bigint);
|
|
228
|
+
constructor(raw: RawServiceMeshRuntime, nodeRid: string, nodeGeneration: bigint, onPendingOperationsChanged?: () => void);
|
|
231
229
|
setMailboxDropHandler(handler: (record: {
|
|
232
230
|
readonly kind: 'spot_multicast' | 'actor_control' | 'actor_binding';
|
|
233
231
|
readonly owner: string;
|
|
@@ -263,6 +261,7 @@ export declare class ServiceStatefulRuntime {
|
|
|
263
261
|
private finishRecoveredInstanceActivation;
|
|
264
262
|
recoverPendingInstanceActivation(envelope: ServiceInstanceActivationRecoveryEnvelope, pending: ServicePendingInstanceActivation, expectedCurrentRoute?: ServiceInstanceRouteFence | null): Promise<boolean>;
|
|
265
263
|
completeRecoveredInstanceActivation(target: ServiceInstanceActivationTarget, route: ServiceInstanceRouteFence, expectedCurrentRoute?: ServiceInstanceRouteFence | null): Promise<ServiceInstanceRouteFence | undefined>;
|
|
264
|
+
/** Resolves once every first terminal record of an activated Instance message is durable. */
|
|
266
265
|
waitForInstanceApplicationQuiescence(spotId: string, signal?: AbortSignal): Promise<void>;
|
|
267
266
|
rememberActorRoute(route: ServiceActorRouteFence): void;
|
|
268
267
|
rememberSpotRoute(route: ServiceDirectSpotRouteFence, expectedCurrentRoute?: ServiceDirectSpotRouteFence | null): void;
|
|
@@ -287,10 +286,10 @@ export declare class ServiceStatefulRuntime {
|
|
|
287
286
|
readonly sessionRid: string;
|
|
288
287
|
readonly bindingGeneration: bigint;
|
|
289
288
|
}): ServiceStatefulPendingOperation;
|
|
290
|
-
sendToInstanceSpot(route: ServiceInstanceRouteFence, payload: ServiceApplicationPayload, sourceSpotId?: string, metadataFrame?: Uint8Array): Promise<number>;
|
|
289
|
+
sendToInstanceSpot(route: ServiceInstanceRouteFence, payload: ServiceApplicationPayload, sourceSpotId?: string, metadataFrame?: Uint8Array, instanceIntent?: boolean): Promise<number>;
|
|
291
290
|
sendToMissingInstanceSpot(target: ServiceInstanceActivationTarget, payload: ServiceApplicationPayload, deadlineUnixMs: bigint, sourceSpotId?: string, metadataFrame?: Uint8Array): Promise<number>;
|
|
292
291
|
sendToMissingInstanceSpotFrame(target: ServiceInstanceActivationTarget, payloadFrame: Buffer, deadlineUnixMs: bigint, sourceSpotId?: string, metadataFrame?: Uint8Array): Promise<number>;
|
|
293
|
-
requestToInstanceSpot(route: ServiceInstanceRouteFence, payload: ServiceApplicationPayload, timeoutMs: number, sourceSpotId?: string, metadataFrame?: Uint8Array): ServiceStatefulPendingOperation;
|
|
292
|
+
requestToInstanceSpot(route: ServiceInstanceRouteFence, payload: ServiceApplicationPayload, timeoutMs: number, sourceSpotId?: string, metadataFrame?: Uint8Array, instanceIntent?: boolean): ServiceStatefulPendingOperation;
|
|
294
293
|
requestToMissingInstanceSpot(target: ServiceInstanceActivationTarget, payload: ServiceApplicationPayload, timeoutMs: number, sourceSpotId?: string, metadataFrame?: Uint8Array): ServiceStatefulPendingOperation;
|
|
295
294
|
requestToMissingInstanceSpotFrame(target: ServiceInstanceActivationTarget, payloadFrame: Buffer, deadlineUnixMs: bigint, sourceSpotId?: string, metadataFrame?: Uint8Array): ServiceStatefulPendingOperation;
|
|
296
295
|
lookupRemoteActor(targetNodeRid: string, actorId: string, timeoutMs: number): ServiceStatefulPendingOperation;
|
|
@@ -300,12 +299,14 @@ export declare class ServiceStatefulRuntime {
|
|
|
300
299
|
joinActorEntrySpot(actor: ServiceActorRef, targetNodeRid: string, payload: ServiceApplicationPayload | undefined, timeoutMs: number): ServiceStatefulPendingOperation;
|
|
301
300
|
joinActorEntrySpotCanonical(actor: ServiceActorRef, targetNodeRid: string, request: ServiceApplicationPayload, actorFence: ServiceCanonicalActorJoinCandidate['actorFence'], local: ServiceCanonicalActorJoinCandidate['local'], timeoutMs: number): ServiceStatefulPendingOperation;
|
|
302
301
|
leaveActor(actor: ServiceActorRef, expectedMembershipEpoch: bigint, timeoutMs: number): ServiceStatefulPendingOperation;
|
|
303
|
-
bindSession(sessionRid: string, actor: ServiceActorRef, timeoutMs: number, deliver: ServiceSessionDelivery['deliver'], onBindingReplaced?: ServiceSessionDelivery['onBindingReplaced'],
|
|
302
|
+
bindSession(sessionRid: string, actor: ServiceActorRef, timeoutMs: number, deliver: ServiceSessionDelivery['deliver'], onBindingReplaced?: ServiceSessionDelivery['onBindingReplaced'], actorAuthority?: StreamSessionActorAuthorityFence): ServiceStatefulPendingOperation;
|
|
304
303
|
unbindSession(sessionRid: string, actor: ServiceActorRef, expectedBindingGeneration: bigint, timeoutMs: number): ServiceStatefulPendingOperation;
|
|
305
|
-
sessionBindings(sessionRid: string): readonly
|
|
304
|
+
sessionBindings(sessionRid: string): readonly ServiceStreamSessionBinding[];
|
|
306
305
|
allSessionBindings(): readonly ServiceSessionBinding[];
|
|
307
306
|
sendSessionToActor(sessionRid: string, actor: ServiceActorRef, payload: ServiceApplicationPayload): Promise<number>;
|
|
308
|
-
sendBoundSession(actor: ServiceActorRef, expectedBindingGeneration: bigint, payload: ServiceApplicationPayload
|
|
307
|
+
sendBoundSession(actor: ServiceActorRef, expectedBindingGeneration: bigint, payload: ServiceApplicationPayload): Promise<number>;
|
|
308
|
+
expireOperations(nowMs: number, turnDeadlineMs: number): number;
|
|
309
|
+
get pendingOperationCount(): number;
|
|
309
310
|
close(): void;
|
|
310
311
|
private ingress;
|
|
311
312
|
private handleIngress;
|
|
@@ -314,12 +315,15 @@ export declare class ServiceStatefulRuntime {
|
|
|
314
315
|
private enqueueActivatedInstanceSpot;
|
|
315
316
|
private continueMissingInstanceActivation;
|
|
316
317
|
private continueReadyInstanceMaterialization;
|
|
318
|
+
/**
|
|
319
|
+
* Spot messaging §4 step 12 with §7 step 1: a Close waits for the first terminal
|
|
320
|
+
* record only of a message whose handler turn started before it; a message queued
|
|
321
|
+
* behind that Close is not counted, so it cannot hold the Close it follows.
|
|
322
|
+
*/
|
|
317
323
|
private activationTerminalCompletion;
|
|
318
324
|
private instanceApplicationTerminalCompletion;
|
|
319
325
|
private instanceApplicationTarget;
|
|
320
|
-
private beginInstanceApplicationOperation;
|
|
321
326
|
private beginInstanceAuthorityOperation;
|
|
322
|
-
private completeInstanceApplicationOperation;
|
|
323
327
|
private completeInstanceAuthorityOperation;
|
|
324
328
|
private completeInstanceApplicationWaitersIfQuiescent;
|
|
325
329
|
private relayMissingInstanceActivation;
|
|
@@ -349,6 +353,7 @@ export declare class ServiceStatefulRuntime {
|
|
|
349
353
|
private enqueueSessionBindingTombstone;
|
|
350
354
|
private enqueueSessionBindingRetirement;
|
|
351
355
|
private deliverBoundSession;
|
|
356
|
+
private traceRejectedBoundSessionSend;
|
|
352
357
|
private enqueueApplicationFrame;
|
|
353
358
|
private enqueueLifecycleFrame;
|
|
354
359
|
private enqueueFrame;
|
|
@@ -384,7 +389,6 @@ export declare class ServiceStatefulRuntime {
|
|
|
384
389
|
private peekSpotMessageFollow;
|
|
385
390
|
private takeSpotMessageFollow;
|
|
386
391
|
private actorFence;
|
|
387
|
-
private tryBoundSessionSendFence;
|
|
388
392
|
private tryActorFence;
|
|
389
393
|
private acceptCanonicalActorFence;
|
|
390
394
|
private trySpotFence;
|