@zlink-systems/framework 0.30.1 → 0.30.2
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/Common/ZLinkEncodedPayload.d.ts +6 -0
- package/dist/contracts/Common/ZLinkEncodedPayload.js +18 -3
- package/dist/contracts/Common/encoded-payload-storage.d.ts +1 -1
- package/dist/contracts/Common/encoded-payload-storage.js +5 -2
- package/dist/contracts/Configuration/Builders.d.ts +1 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +2 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +5 -1
- package/dist/contracts/Configuration/RegistrationBuilders.js +2 -2
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +2 -2
- package/dist/contracts/Locations/Rows.d.ts +2 -0
- package/dist/contracts/Spots/Contracts.d.ts +4 -0
- package/dist/contracts/Spots/ZLinkSpot.d.ts +3 -3
- package/dist/runtime/abort.d.ts +5 -0
- package/dist/runtime/abort.js +10 -0
- package/dist/runtime/actors/actor-authority-publication.js +3 -2
- package/dist/runtime/actors/actor-client.d.ts +0 -1
- package/dist/runtime/actors/actor-client.js +38 -45
- package/dist/runtime/actors/actor-context.d.ts +2 -0
- package/dist/runtime/actors/actor-context.js +46 -9
- package/dist/runtime/actors/actor-handoff.d.ts +7 -3
- package/dist/runtime/actors/actor-handoff.js +212 -88
- package/dist/runtime/actors/actor-join-relocation.d.ts +2 -0
- package/dist/runtime/actors/actor-local-native-join.js +4 -0
- package/dist/runtime/actors/actor-mailbox.js +27 -1
- package/dist/runtime/actors/actor-remote-joiner.js +3 -1
- package/dist/runtime/actors/actor-reply.d.ts +4 -0
- package/dist/runtime/actors/actor-reply.js +29 -0
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -0
- package/dist/runtime/actors/actor-runtime-state.js +2 -20
- package/dist/runtime/actors/actor-source-transfer.d.ts +1 -17
- package/dist/runtime/actors/index.d.ts +6 -2
- package/dist/runtime/actors/index.js +37 -21
- package/dist/runtime/actors/session-disconnected-wire.d.ts +8 -0
- package/dist/runtime/actors/session-disconnected-wire.js +48 -0
- package/dist/runtime/admission.d.ts +9 -1
- package/dist/runtime/admission.js +55 -32
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +13 -0
- package/dist/runtime/application-jobs/application-job-queue-scope.js +27 -1
- package/dist/runtime/application-jobs/contracts.d.ts +2 -0
- package/dist/runtime/backend/contracts/index.d.ts +19 -3
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +2 -2
- package/dist/runtime/backend/mesh-completion-table.js +5 -0
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +26 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +193 -107
- package/dist/runtime/backend/node/node-raw-binding-port.js +90 -58
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +33 -8
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +142 -143
- package/dist/runtime/backend/node/node-socket-backend-adapter.d.ts +1 -1
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +5 -5
- package/dist/runtime/channels/channel-clients.d.ts +1 -0
- package/dist/runtime/channels/channel-clients.js +20 -5
- package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +22 -3
- package/dist/runtime/channels/channel-dispatch-pipeline.js +103 -57
- package/dist/runtime/channels/channel-dispatchers.d.ts +3 -2
- package/dist/runtime/channels/channel-dispatchers.js +44 -37
- package/dist/runtime/channels/channel-envelope.d.ts +1 -0
- package/dist/runtime/channels/channel-envelope.js +74 -31
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +4 -3
- package/dist/runtime/channels/channel-runtime-lifecycle.js +19 -24
- package/dist/runtime/channels/channel-runtime-manager.d.ts +3 -2
- package/dist/runtime/channels/channel-runtime-manager.js +4 -4
- package/dist/runtime/channels/channel-transports.d.ts +0 -1
- package/dist/runtime/channels/channel-transports.js +35 -33
- package/dist/runtime/channels/client-server-location-runtime.js +5 -4
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +2 -1
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/fanout-location-runtime.js +3 -3
- package/dist/runtime/diagnostics/flow-context.js +19 -7
- package/dist/runtime/diagnostics/index.js +4 -9
- package/dist/runtime/diagnostics/message-flow.d.ts +8 -0
- package/dist/runtime/diagnostics/message-flow.js +35 -5
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +2 -2
- package/dist/runtime/diagnostics/runtime-metrics.js +10 -8
- package/dist/runtime/execution/index.d.ts +4 -2
- package/dist/runtime/execution/index.js +33 -10
- package/dist/runtime/execution/serial-execution-queue.d.ts +4 -0
- package/dist/runtime/execution/serial-execution-queue.js +21 -2
- package/dist/runtime/execution/state-lane.d.ts +2 -0
- package/dist/runtime/execution/state-lane.js +5 -0
- package/dist/runtime/foundation/operation-registry.d.ts +25 -1
- package/dist/runtime/foundation/operation-registry.js +86 -18
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +39 -3
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +151 -55
- package/dist/runtime/foundation/service-liveness-registry.d.ts +12 -1
- package/dist/runtime/foundation/service-liveness-registry.js +38 -0
- package/dist/runtime/foundation/service-mailbox.d.ts +7 -0
- package/dist/runtime/foundation/service-maintenance-runtime.js +1 -6
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +2 -3
- package/dist/runtime/foundation/service-relocation-object-owner.js +48 -35
- package/dist/runtime/foundation/service-relocation-runtime.js +7 -3
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +8 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +2 -1
- package/dist/runtime/foundation/service-stateful-registry.d.ts +5 -4
- package/dist/runtime/foundation/service-stateful-registry.js +24 -26
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +72 -6
- package/dist/runtime/foundation/service-stateful-runtime.js +444 -117
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +14 -1
- package/dist/runtime/foundation/service-stateful-wire-codec.js +48 -27
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +6 -1
- package/dist/runtime/foundation/service-wire-binary-primitives.js +27 -11
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +1 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +10 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +166 -53
- package/dist/runtime/host/actor-packet-relay.d.ts +6 -4
- package/dist/runtime/host/actor-packet-relay.js +59 -72
- package/dist/runtime/host/actor-placement-coordinator.js +25 -8
- package/dist/runtime/host/actor-transfer-runtime.d.ts +7 -31
- package/dist/runtime/host/actor-transfer-runtime.js +85 -331
- package/dist/runtime/host/application-job-queue.d.ts +24 -3
- package/dist/runtime/host/application-job-queue.js +28 -41
- package/dist/runtime/host/index.d.ts +5 -1
- package/dist/runtime/host/index.js +171 -97
- package/dist/runtime/host/location-runtime-owner.js +2 -6
- package/dist/runtime/host/mesh-router-resolver.d.ts +4 -0
- package/dist/runtime/host/mesh-router-resolver.js +14 -6
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -4
- package/dist/runtime/host/remote-bound-session-relay.js +71 -190
- package/dist/runtime/host/route-mesh-runtime.d.ts +2 -2
- package/dist/runtime/host/route-mesh-runtime.js +5 -3
- package/dist/runtime/host/runtime-shutdown.d.ts +1 -0
- package/dist/runtime/host/runtime-shutdown.js +3 -2
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +17 -7
- package/dist/runtime/host/service-relocation-host-runtime.js +550 -367
- package/dist/runtime/host/spot-runtime-options-factory.js +15 -7
- package/dist/runtime/host/user-spot-creation-coordinator.js +33 -84
- package/dist/runtime/locations/auto-connect-loop.d.ts +2 -0
- package/dist/runtime/locations/auto-connect-loop.js +22 -14
- package/dist/runtime/locations/auto-connect-reconciler.js +0 -6
- package/dist/runtime/locations/auto-connect-types.d.ts +0 -1
- package/dist/runtime/locations/descriptor-publication.d.ts +4 -0
- package/dist/runtime/locations/descriptor-publication.js +11 -0
- package/dist/runtime/locations/domain-store-contract.d.ts +1 -0
- package/dist/runtime/locations/in-memory-authority-store.d.ts +7 -1
- package/dist/runtime/locations/in-memory-authority-store.js +56 -19
- package/dist/runtime/locations/in-memory-location-store.js +1 -10
- package/dist/runtime/locations/index.d.ts +1 -0
- package/dist/runtime/locations/index.js +1 -0
- package/dist/runtime/locations/lease-tracker.js +1 -6
- package/dist/runtime/locations/location-store-repository.d.ts +51 -1
- package/dist/runtime/locations/location-store-repository.js +363 -139
- package/dist/runtime/locations/relocation-blob.d.ts +18 -1
- package/dist/runtime/locations/relocation-blob.js +52 -1
- package/dist/runtime/locations/request-source-resolver.d.ts +37 -0
- package/dist/runtime/locations/request-source-resolver.js +80 -0
- package/dist/runtime/locations/resolvers.js +1 -1
- package/dist/runtime/locations/runtime.d.ts +6 -2
- package/dist/runtime/locations/runtime.js +37 -30
- package/dist/runtime/messaging/payload-codec.d.ts +7 -1
- package/dist/runtime/messaging/payload-codec.js +7 -6
- package/dist/runtime/messaging/request-result.js +29 -26
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +19 -1
- package/dist/runtime/protocol/service_wire_codec.generated.js +85 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +7 -1
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +23 -7
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +3 -2
- package/dist/runtime/spots/index.d.ts +18 -11
- package/dist/runtime/spots/index.js +234 -176
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -2
- package/dist/runtime/spots/spot-activation-registry.js +21 -11
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +7 -7
- package/dist/runtime/spots/spot-activation.d.ts +6 -3
- package/dist/runtime/spots/spot-activation.js +123 -44
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -0
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +13 -22
- package/dist/runtime/spots/spot-actor-membership.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-membership.js +0 -8
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +33 -8
- package/dist/runtime/spots/spot-actor-packet-drain.js +5 -33
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -0
- package/dist/runtime/spots/spot-entry-activation.js +14 -9
- package/dist/runtime/spots/spot-handler-registry.d.ts +4 -3
- package/dist/runtime/spots/spot-handler-registry.js +6 -2
- package/dist/runtime/spots/spot-manager-internal-contracts.d.ts +2 -2
- package/dist/runtime/spots/spot-manager-public.js +2 -2
- package/dist/runtime/spots/spot-node-autoconnect.d.ts +2 -1
- package/dist/runtime/spots/spot-node-autoconnect.js +18 -39
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -2
- package/dist/runtime/spots/spot-node-runtime-manager.js +115 -50
- package/dist/runtime/spots/spot-outbound.js +3 -3
- package/dist/runtime/spots/spot-remote-codec.js +5 -1
- package/dist/runtime/spots/spot-runtime-ports.d.ts +0 -1
- package/dist/runtime/spots/spot-serial-executor.d.ts +10 -0
- package/dist/runtime/spots/spot-serial-executor.js +61 -8
- package/dist/runtime/spots/spot-serial-turn-executor.js +19 -2
- package/dist/runtime/spots/spot-subscription-dispatch.js +1 -1
- package/dist/runtime/spots/spot-timer.d.ts +57 -5
- package/dist/runtime/spots/spot-timer.js +287 -103
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +42 -11
- package/dist/runtime/streams/actor-session-binding-registry.js +165 -48
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +8 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +15 -8
- package/dist/runtime/streams/bound-session-service.d.ts +1 -1
- package/dist/runtime/streams/bound-session-service.js +6 -11
- package/dist/runtime/streams/index.d.ts +3 -2
- package/dist/runtime/streams/index.js +6 -4
- package/dist/runtime/streams/managed-stream.js +3 -2
- package/dist/runtime/streams/native-fallback-bound-session.js +8 -73
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -8
- package/dist/runtime/streams/session-actor-coordinator.js +15 -32
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +3 -10
- package/dist/runtime/streams/stream-session-runtime.js +1 -4
- package/dist/runtime/workers/index.js +1 -1
- package/package.json +3 -3
- package/src/contracts/Common/ZLinkEncodedPayload.ts +24 -4
- package/src/contracts/Common/encoded-payload-storage.ts +6 -3
- package/src/contracts/Configuration/Builders.ts +4 -1
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +7 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +6 -2
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -1
- package/src/contracts/Locations/Rows.ts +2 -0
- package/src/contracts/Spots/Contracts.ts +8 -0
- package/src/contracts/Spots/ZLinkSpot.ts +3 -3
- package/src/runtime/abort.ts +12 -0
- package/src/runtime/actors/actor-authority-publication.ts +3 -2
- package/src/runtime/actors/actor-client.ts +61 -70
- package/src/runtime/actors/actor-context.ts +49 -9
- package/src/runtime/actors/actor-handoff.ts +282 -106
- package/src/runtime/actors/actor-join-relocation.ts +2 -0
- package/src/runtime/actors/actor-local-native-join.ts +4 -0
- package/src/runtime/actors/actor-mailbox.ts +40 -2
- package/src/runtime/actors/actor-remote-joiner.ts +6 -1
- package/src/runtime/actors/actor-reply.ts +42 -0
- package/src/runtime/actors/actor-runtime-contracts.ts +2 -0
- package/src/runtime/actors/actor-runtime-state.ts +2 -20
- package/src/runtime/actors/actor-source-transfer.ts +1 -34
- package/src/runtime/actors/index.ts +41 -27
- package/src/runtime/actors/session-disconnected-wire.ts +66 -0
- package/src/runtime/admission.ts +69 -34
- package/src/runtime/application-jobs/application-job-queue-scope.ts +33 -1
- package/src/runtime/application-jobs/contracts.ts +2 -0
- package/src/runtime/backend/contracts/index.ts +39 -4
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +5 -3
- package/src/runtime/backend/mesh-completion-table.ts +4 -0
- package/src/runtime/backend/mesh-dispatch-pump.ts +223 -124
- package/src/runtime/backend/node/node-raw-binding-port.ts +106 -70
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +221 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -5
- package/src/runtime/channels/channel-clients.ts +49 -24
- package/src/runtime/channels/channel-dispatch-pipeline.ts +173 -124
- package/src/runtime/channels/channel-dispatchers.ts +116 -72
- package/src/runtime/channels/channel-envelope.ts +105 -36
- package/src/runtime/channels/channel-runtime-lifecycle.ts +13 -13
- package/src/runtime/channels/channel-runtime-manager.ts +12 -5
- package/src/runtime/channels/channel-transports.ts +49 -58
- package/src/runtime/channels/client-server-location-runtime.ts +11 -10
- package/src/runtime/channels/dispatch-error-reporter.ts +4 -2
- package/src/runtime/channels/fanout-location-runtime.ts +17 -9
- package/src/runtime/diagnostics/flow-context.ts +20 -7
- package/src/runtime/diagnostics/index.ts +1 -7
- package/src/runtime/diagnostics/message-flow.ts +47 -9
- package/src/runtime/diagnostics/runtime-metrics.ts +12 -10
- package/src/runtime/execution/index.ts +40 -14
- package/src/runtime/execution/serial-execution-queue.ts +31 -4
- package/src/runtime/execution/state-lane.ts +7 -0
- package/src/runtime/foundation/operation-registry.ts +98 -20
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +244 -67
- package/src/runtime/foundation/service-liveness-registry.ts +39 -0
- package/src/runtime/foundation/service-mailbox.ts +8 -0
- package/src/runtime/foundation/service-maintenance-runtime.ts +1 -8
- package/src/runtime/foundation/service-relocation-object-owner.ts +54 -37
- package/src/runtime/foundation/service-relocation-runtime.ts +7 -3
- package/src/runtime/foundation/service-runtime-contracts.ts +12 -1
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -1
- package/src/runtime/foundation/service-stateful-registry.ts +38 -35
- package/src/runtime/foundation/service-stateful-runtime.ts +667 -152
- package/src/runtime/foundation/service-stateful-wire-codec.ts +49 -11
- package/src/runtime/foundation/service-wire-binary-primitives.ts +35 -12
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +187 -51
- package/src/runtime/host/actor-packet-relay.ts +113 -94
- package/src/runtime/host/actor-placement-coordinator.ts +31 -8
- package/src/runtime/host/actor-transfer-runtime.ts +104 -430
- package/src/runtime/host/application-job-queue.ts +29 -44
- package/src/runtime/host/index.ts +286 -129
- package/src/runtime/host/location-runtime-owner.ts +2 -6
- package/src/runtime/host/mesh-router-resolver.ts +13 -5
- package/src/runtime/host/remote-bound-session-relay.ts +86 -248
- package/src/runtime/host/route-mesh-runtime.ts +11 -5
- package/src/runtime/host/runtime-shutdown.ts +15 -4
- package/src/runtime/host/service-relocation-host-runtime.ts +784 -475
- package/src/runtime/host/spot-runtime-options-factory.ts +18 -7
- package/src/runtime/host/user-spot-creation-coordinator.ts +41 -100
- package/src/runtime/locations/auto-connect-loop.ts +22 -14
- package/src/runtime/locations/auto-connect-reconciler.ts +0 -6
- package/src/runtime/locations/auto-connect-types.ts +0 -1
- package/src/runtime/locations/descriptor-publication.ts +7 -0
- package/src/runtime/locations/domain-store-contract.ts +5 -0
- package/src/runtime/locations/in-memory-authority-store.ts +85 -23
- package/src/runtime/locations/in-memory-location-store.ts +1 -12
- package/src/runtime/locations/index.ts +1 -0
- package/src/runtime/locations/lease-tracker.ts +2 -9
- package/src/runtime/locations/location-store-repository.ts +628 -152
- package/src/runtime/locations/relocation-blob.ts +75 -1
- package/src/runtime/locations/request-source-resolver.ts +138 -0
- package/src/runtime/locations/resolvers.ts +2 -2
- package/src/runtime/locations/runtime.ts +70 -40
- package/src/runtime/messaging/payload-codec.ts +8 -11
- package/src/runtime/messaging/request-result.ts +33 -29
- package/src/runtime/protocol/service_wire_codec.generated.ts +87 -4
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +13 -10
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +3 -2
- package/src/runtime/spots/index.ts +375 -281
- package/src/runtime/spots/spot-activation-registry.ts +25 -13
- package/src/runtime/spots/spot-activation-state.ts +12 -19
- package/src/runtime/spots/spot-activation.ts +170 -86
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +25 -55
- package/src/runtime/spots/spot-actor-membership.ts +0 -15
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +56 -11
- package/src/runtime/spots/spot-actor-packet-drain.ts +9 -52
- package/src/runtime/spots/spot-entry-activation.ts +24 -19
- package/src/runtime/spots/spot-handler-registry.ts +15 -4
- package/src/runtime/spots/spot-manager-internal-contracts.ts +2 -2
- package/src/runtime/spots/spot-manager-public.ts +2 -2
- package/src/runtime/spots/spot-node-autoconnect.ts +22 -45
- package/src/runtime/spots/spot-node-runtime-manager.ts +197 -67
- package/src/runtime/spots/spot-outbound.ts +3 -3
- package/src/runtime/spots/spot-remote-codec.ts +9 -2
- package/src/runtime/spots/spot-runtime-ports.ts +0 -1
- package/src/runtime/spots/spot-serial-executor.ts +97 -25
- package/src/runtime/spots/spot-serial-turn-executor.ts +22 -3
- package/src/runtime/spots/spot-subscription-dispatch.ts +1 -1
- package/src/runtime/spots/spot-timer.ts +413 -157
- package/src/runtime/streams/actor-session-binding-registry.ts +236 -64
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +16 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +23 -9
- package/src/runtime/streams/bound-session-service.ts +7 -10
- package/src/runtime/streams/index.ts +12 -6
- package/src/runtime/streams/managed-stream.ts +4 -2
- package/src/runtime/streams/native-fallback-bound-session.ts +14 -103
- package/src/runtime/streams/session-actor-coordinator.ts +39 -88
- package/src/runtime/streams/stream-binding-runtime-ports.ts +3 -9
- package/src/runtime/streams/stream-session-runtime.ts +1 -5
- package/src/runtime/workers/index.ts +1 -1
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { isUtf8 } from 'node:buffer';
|
|
2
|
+
import { channelErrorKindFromCode } from '../channels/channel-envelope';
|
|
3
|
+
import { routingIdsEqual } from '../routing-id';
|
|
1
4
|
import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
|
|
2
5
|
import { createZLinkRequest } from '../messaging/request-result';
|
|
3
6
|
import type { ZLinkRequest } from '../../contracts/Handlers/Attributes';
|
|
@@ -8,7 +11,6 @@ import {
|
|
|
8
11
|
type ZLinkActorRequestCall,
|
|
9
12
|
type ZLinkActorSendCall,
|
|
10
13
|
type ZLinkMessageSerializer,
|
|
11
|
-
ZLinkFrameworkErrorKind,
|
|
12
14
|
ZLinkFrameworkException,
|
|
13
15
|
ZLinkSpotKind
|
|
14
16
|
} from '../../contracts';
|
|
@@ -27,7 +29,6 @@ import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message
|
|
|
27
29
|
import {
|
|
28
30
|
isZLinkBackendResultError,
|
|
29
31
|
RequestResult,
|
|
30
|
-
SubmitResult,
|
|
31
32
|
ZLINK_BACKEND_SEND_NONE
|
|
32
33
|
} from '../backend/runtime-values';
|
|
33
34
|
import { ZLinkConfigurationException } from '../configuration';
|
|
@@ -60,6 +61,7 @@ import {
|
|
|
60
61
|
encodeStreamHeader,
|
|
61
62
|
streamCodecForContentType,
|
|
62
63
|
tryDecodeStreamFrame,
|
|
64
|
+
ZLinkStreamCodec,
|
|
63
65
|
ZLinkStreamHeaderFlags,
|
|
64
66
|
ZLinkStreamMessageKind
|
|
65
67
|
} from '../streams/protocol';
|
|
@@ -186,7 +188,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
186
188
|
const node = this.requireNode(meshName);
|
|
187
189
|
if (
|
|
188
190
|
this.options.routeTransport !== undefined &&
|
|
189
|
-
|
|
191
|
+
!routingIdsEqual(node.status().routingId, actor.nodeRid)
|
|
190
192
|
) {
|
|
191
193
|
await this.options.routeTransport.sendToSpot(
|
|
192
194
|
remoteActorRouteTarget(route),
|
|
@@ -203,7 +205,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
203
205
|
);
|
|
204
206
|
return { status: ZLinkSubmitStatus.Submitted };
|
|
205
207
|
}
|
|
206
|
-
return await this.submitActorSend(meshName, toBackendActorRef(actor), parts);
|
|
208
|
+
return await this.submitActorSend(meshName, toBackendActorRef(actor), parts, route);
|
|
207
209
|
} catch (error) {
|
|
208
210
|
if (isStaleActorError(error)) {
|
|
209
211
|
this.invalidateActorRoute(actorId);
|
|
@@ -414,13 +416,15 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
414
416
|
private async submitActorSend(
|
|
415
417
|
meshName: string,
|
|
416
418
|
actor: ZLinkBackendActorRef,
|
|
417
|
-
parts: readonly Message[]
|
|
419
|
+
parts: readonly Message[],
|
|
420
|
+
route: ZLinkResolvedActorRoute
|
|
418
421
|
): Promise<ZLinkSubmitResult> {
|
|
419
422
|
const node = this.requireNode(meshName);
|
|
420
423
|
try {
|
|
421
424
|
return classifySubmitResult(
|
|
422
425
|
await node.sendToActor(actor, toMessageLikeParts(parts), {
|
|
423
|
-
flags: ZLINK_BACKEND_SEND_NONE
|
|
426
|
+
flags: ZLINK_BACKEND_SEND_NONE,
|
|
427
|
+
routeFence: nativeActorRouteFence(route, actor)
|
|
424
428
|
}),
|
|
425
429
|
'Actor send'
|
|
426
430
|
);
|
|
@@ -437,16 +441,15 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
437
441
|
actor: ZLinkBackendActorRef,
|
|
438
442
|
parts: readonly Message[],
|
|
439
443
|
timeoutMs: number | undefined,
|
|
440
|
-
signal
|
|
441
|
-
route
|
|
442
|
-
messageFollowContext
|
|
444
|
+
signal: AbortSignal | undefined,
|
|
445
|
+
route: ZLinkResolvedActorRoute,
|
|
446
|
+
messageFollowContext: ZLinkActorMessageFollowContext,
|
|
443
447
|
onAdmitted?: () => void
|
|
444
448
|
): Promise<TReply> {
|
|
445
449
|
const node = this.requireNode(meshName);
|
|
446
450
|
if (
|
|
447
451
|
this.options.routeTransport !== undefined &&
|
|
448
|
-
|
|
449
|
-
route !== undefined
|
|
452
|
+
!routingIdsEqual(node.status().routingId, actor.nodeRid)
|
|
450
453
|
) {
|
|
451
454
|
const relay = encodeRemoteActorPacketRelayPayload({
|
|
452
455
|
actorId: actor.actorId,
|
|
@@ -498,6 +501,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
498
501
|
() =>
|
|
499
502
|
node.requestToActor(actor, toMessageLikeParts(parts), {
|
|
500
503
|
flags: ZLINK_BACKEND_SEND_NONE,
|
|
504
|
+
routeFence: nativeActorRouteFence(route, actor),
|
|
501
505
|
timeoutMs,
|
|
502
506
|
onAdmitted
|
|
503
507
|
}),
|
|
@@ -527,6 +531,15 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
527
531
|
}
|
|
528
532
|
}
|
|
529
533
|
|
|
534
|
+
function nativeActorRouteFence(route: ZLinkResolvedActorRoute, actor: ZLinkBackendActorRef) {
|
|
535
|
+
return {
|
|
536
|
+
actor,
|
|
537
|
+
targetNodeGeneration: route.ownerNodeGeneration,
|
|
538
|
+
authorityOwnerGeneration: route.authorityOwnerGeneration,
|
|
539
|
+
ownerLeaseGeneration: route.ownerLeaseGeneration
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
|
|
530
543
|
function remoteActorRouteTarget(route: ZLinkResolvedActorRoute) {
|
|
531
544
|
if (route.enclosingSpotRoute !== undefined) {
|
|
532
545
|
return route.enclosingSpotRoute;
|
|
@@ -597,45 +610,6 @@ function requireActorId(actorId: string): void {
|
|
|
597
610
|
}
|
|
598
611
|
}
|
|
599
612
|
|
|
600
|
-
export async function forwardEncodedActorPacket(
|
|
601
|
-
node: ZLinkBackendMeshNode,
|
|
602
|
-
completions: ZLinkMeshCompletionTable,
|
|
603
|
-
actor: ActorRef,
|
|
604
|
-
header: Buffer,
|
|
605
|
-
payload: Buffer,
|
|
606
|
-
returnResponse: boolean,
|
|
607
|
-
timeoutMs: number | undefined,
|
|
608
|
-
serializers?: ReadonlyMap<string, ZLinkMessageSerializer>
|
|
609
|
-
): Promise<unknown> {
|
|
610
|
-
const target = toBackendActorRef(actor);
|
|
611
|
-
const parts = [header, payload];
|
|
612
|
-
const packetName = decodeStreamHeader(header).name;
|
|
613
|
-
if (!returnResponse) {
|
|
614
|
-
if (
|
|
615
|
-
(await node.sendToActor(target, parts, { flags: ZLINK_BACKEND_SEND_NONE })) !==
|
|
616
|
-
SubmitResult.Ok
|
|
617
|
-
) {
|
|
618
|
-
throw routeNotConnected('Actor handoff send submit was not accepted.');
|
|
619
|
-
}
|
|
620
|
-
return undefined;
|
|
621
|
-
}
|
|
622
|
-
const completion = await completions.submit(() =>
|
|
623
|
-
node.requestToActor(target, parts, {
|
|
624
|
-
flags: ZLINK_BACKEND_SEND_NONE,
|
|
625
|
-
timeoutMs
|
|
626
|
-
})
|
|
627
|
-
);
|
|
628
|
-
if (completion.terminalResult !== RequestResult.Ok) {
|
|
629
|
-
closeMeshCompletion(completion);
|
|
630
|
-
throw mapRequestResult(
|
|
631
|
-
completion.terminalResult,
|
|
632
|
-
completion.failureErrno,
|
|
633
|
-
'Actor handoff request'
|
|
634
|
-
);
|
|
635
|
-
}
|
|
636
|
-
return decodeActorReply(completion.parts, serializers, packetName);
|
|
637
|
-
}
|
|
638
|
-
|
|
639
613
|
function toBackendActorRef(actor: ActorRef): ZLinkBackendActorRef {
|
|
640
614
|
return {
|
|
641
615
|
nodeRid: actor.nodeRid,
|
|
@@ -756,7 +730,7 @@ class DefaultZLinkActorRequestCall implements ZLinkActorRequestCall {
|
|
|
756
730
|
this.rejectSelfActorRequest();
|
|
757
731
|
const turn = requireZLinkYieldTurn(this.turn);
|
|
758
732
|
const pending = this.execute<TReply>('yield', signal);
|
|
759
|
-
return turn.
|
|
733
|
+
return turn.yieldFrameworkPromise(pending);
|
|
760
734
|
}
|
|
761
735
|
|
|
762
736
|
private execute<TReply>(
|
|
@@ -804,19 +778,21 @@ function decodeActorReply<TReply>(
|
|
|
804
778
|
const header = decodeStreamHeader(frame.header);
|
|
805
779
|
const payload = RuntimeMessage.from(frame.payload) as Message;
|
|
806
780
|
try {
|
|
807
|
-
return decodeActorReplyPayload<TReply>(
|
|
781
|
+
return decodeActorReplyPayload<TReply>(
|
|
782
|
+
header.kind,
|
|
783
|
+
header.codec,
|
|
784
|
+
payload,
|
|
785
|
+
serializers,
|
|
786
|
+
packetName
|
|
787
|
+
);
|
|
808
788
|
} finally {
|
|
809
789
|
payload.close();
|
|
810
790
|
}
|
|
811
791
|
}
|
|
812
792
|
}
|
|
813
|
-
if (reply.length >= 2) {
|
|
814
|
-
const header = decodeStreamHeader(reply[0].data());
|
|
815
|
-
return decodeActorReplyPayload<TReply>(header.kind, reply[1], serializers, packetName);
|
|
816
|
-
}
|
|
817
793
|
throw createInternalFrameworkException(
|
|
818
794
|
ZLinkFrameworkInternalErrorKind.RequestProtocolError,
|
|
819
|
-
'Actor request reply
|
|
795
|
+
'Actor request reply must contain one valid STREAM frame.'
|
|
820
796
|
);
|
|
821
797
|
} finally {
|
|
822
798
|
closeMessages(reply);
|
|
@@ -829,24 +805,39 @@ function closeMessages(parts: readonly Message[]): void {
|
|
|
829
805
|
|
|
830
806
|
function decodeActorReplyPayload<TReply>(
|
|
831
807
|
kind: ZLinkStreamMessageKind,
|
|
808
|
+
codec: ZLinkStreamCodec,
|
|
832
809
|
payload: Message,
|
|
833
810
|
serializers?: ReadonlyMap<string, ZLinkMessageSerializer>,
|
|
834
811
|
packetName?: string
|
|
835
812
|
): TReply {
|
|
836
813
|
if (kind === ZLinkStreamMessageKind.Error) {
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
814
|
+
if (codec !== ZLinkStreamCodec.Json || !isUtf8(payload.data())) {
|
|
815
|
+
throw createInternalFrameworkException(
|
|
816
|
+
ZLinkFrameworkInternalErrorKind.RequestProtocolError,
|
|
817
|
+
'Actor Error reply requires UTF-8 JSON.'
|
|
818
|
+
);
|
|
819
|
+
}
|
|
820
|
+
const error = decodeFrameworkPayloadMessage<unknown>(payload);
|
|
821
|
+
if (
|
|
822
|
+
typeof error !== 'object' ||
|
|
823
|
+
error === null ||
|
|
824
|
+
typeof (error as { code?: unknown }).code !== 'string' ||
|
|
825
|
+
typeof (error as { message?: unknown }).message !== 'string'
|
|
826
|
+
) {
|
|
827
|
+
throw createInternalFrameworkException(
|
|
828
|
+
ZLinkFrameworkInternalErrorKind.RequestProtocolError,
|
|
829
|
+
'Actor Error reply requires code and message strings.'
|
|
830
|
+
);
|
|
831
|
+
}
|
|
832
|
+
const wire = error as { code: string; message: string };
|
|
833
|
+
const kind = channelErrorKindFromCode(wire.code);
|
|
834
|
+
if (kind === undefined) {
|
|
835
|
+
throw createInternalFrameworkException(
|
|
836
|
+
ZLinkFrameworkInternalErrorKind.RequestProtocolError,
|
|
837
|
+
`Actor Error reply uses an unknown error code '${wire.code}'.`
|
|
838
|
+
);
|
|
839
|
+
}
|
|
840
|
+
throw new ZLinkFrameworkException(kind, wire.message);
|
|
850
841
|
}
|
|
851
842
|
return decodeFrameworkPayloadMessage<TReply>(
|
|
852
843
|
payload,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { routingIdsEqual } from '../routing-id';
|
|
1
2
|
import {
|
|
2
3
|
type RoutingId,
|
|
3
4
|
type SpotId,
|
|
@@ -90,6 +91,11 @@ export class DefaultZLinkActorContext implements ZLinkActorContext {
|
|
|
90
91
|
return this.state.actorId;
|
|
91
92
|
}
|
|
92
93
|
|
|
94
|
+
/** Actor-turn view of the single current Session binding (§7). */
|
|
95
|
+
get currentSessionBinding() {
|
|
96
|
+
return this.state.boundSession;
|
|
97
|
+
}
|
|
98
|
+
|
|
93
99
|
get objectGeneration(): bigint {
|
|
94
100
|
return this.state.nativeActorRef?.generation ?? 1n;
|
|
95
101
|
}
|
|
@@ -282,11 +288,24 @@ class DefaultZLinkActorJoinSpotCall implements ZLinkActorJoinSpotCall {
|
|
|
282
288
|
deadline.close();
|
|
283
289
|
requestMessage.close();
|
|
284
290
|
}
|
|
291
|
+
if (result.sourceCleanup !== undefined) {
|
|
292
|
+
// Infrastructure cleanup has its own terminal, outside the public Failed conversion.
|
|
293
|
+
try {
|
|
294
|
+
const cleanup = result.sourceCleanup();
|
|
295
|
+
await (this.turn === undefined ? cleanup : this.turn.yieldFrameworkPromise(cleanup));
|
|
296
|
+
} catch (error) {
|
|
297
|
+
traceJoinError(this.actor, error, this.coordinator, ZLinkDispatchErrorAction.Drop);
|
|
298
|
+
throw error;
|
|
299
|
+
} finally {
|
|
300
|
+
this.state.endDeferredJoin();
|
|
301
|
+
}
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
285
304
|
if (
|
|
286
305
|
!result.accepted ||
|
|
287
306
|
sourceNodeRid === undefined ||
|
|
288
307
|
result.actor === undefined ||
|
|
289
|
-
|
|
308
|
+
routingIdsEqual(sourceNodeRid, result.actor.nodeRid)
|
|
290
309
|
) {
|
|
291
310
|
await notifyJoinCompletion(this.actor, operationId, result, this.messageSerializers);
|
|
292
311
|
} else {
|
|
@@ -417,11 +436,24 @@ class DefaultZLinkActorJoinEntrySpotCall implements ZLinkActorJoinEntrySpotCall
|
|
|
417
436
|
deadline.close();
|
|
418
437
|
requestMessage.close();
|
|
419
438
|
}
|
|
439
|
+
if (result.sourceCleanup !== undefined) {
|
|
440
|
+
// Infrastructure cleanup has its own terminal, outside the public Failed conversion.
|
|
441
|
+
try {
|
|
442
|
+
const cleanup = result.sourceCleanup();
|
|
443
|
+
await (this.turn === undefined ? cleanup : this.turn.yieldFrameworkPromise(cleanup));
|
|
444
|
+
} catch (error) {
|
|
445
|
+
traceJoinError(this.actor, error, this.coordinator, ZLinkDispatchErrorAction.Drop);
|
|
446
|
+
throw error;
|
|
447
|
+
} finally {
|
|
448
|
+
this.state.endDeferredJoin();
|
|
449
|
+
}
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
420
452
|
if (
|
|
421
453
|
!result.accepted ||
|
|
422
454
|
sourceNodeRid === undefined ||
|
|
423
455
|
result.actor === undefined ||
|
|
424
|
-
|
|
456
|
+
routingIdsEqual(sourceNodeRid, result.actor.nodeRid)
|
|
425
457
|
) {
|
|
426
458
|
await notifyJoinCompletion(this.actor, operationId, result, this.messageSerializers);
|
|
427
459
|
} else {
|
|
@@ -580,7 +612,6 @@ async function notifyJoinFailure(
|
|
|
580
612
|
error: unknown,
|
|
581
613
|
coordinator?: ZLinkActorJoinCoordinator
|
|
582
614
|
): Promise<void> {
|
|
583
|
-
console.error(`actor join failure actor=${actor.context.actorId}`, error);
|
|
584
615
|
const frameworkError =
|
|
585
616
|
error instanceof ZLinkFrameworkException
|
|
586
617
|
? error
|
|
@@ -590,6 +621,20 @@ async function notifyJoinFailure(
|
|
|
590
621
|
false,
|
|
591
622
|
error
|
|
592
623
|
);
|
|
624
|
+
traceJoinError(actor, error, coordinator, ZLinkDispatchErrorAction.ReplyError);
|
|
625
|
+
await actor.onJoinCompleted?.({
|
|
626
|
+
status: 'failed',
|
|
627
|
+
operationId,
|
|
628
|
+
kind: frameworkError.kind
|
|
629
|
+
});
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
function traceJoinError(
|
|
633
|
+
actor: ZLinkActor,
|
|
634
|
+
error: unknown,
|
|
635
|
+
coordinator: ZLinkActorJoinCoordinator | undefined,
|
|
636
|
+
errorAction: ZLinkDispatchErrorAction
|
|
637
|
+
): void {
|
|
593
638
|
// The completion carries only an error kind, so trace the cause on the
|
|
594
639
|
// message flow under the same flow id as the Join that produced it.
|
|
595
640
|
const tracePoint = coordinator?.messageFlow?.()?.begin(ZLinkMessageFlowOutcome.Error);
|
|
@@ -601,13 +646,8 @@ async function notifyJoinFailure(
|
|
|
601
646
|
packetName: 'JoinSpot',
|
|
602
647
|
actorId: actor.context.actorId,
|
|
603
648
|
errorReason: ZLinkDispatchErrorReason.HandlerException,
|
|
604
|
-
errorAction
|
|
649
|
+
errorAction,
|
|
605
650
|
errorType: errorDetails?.errorType,
|
|
606
651
|
errorMessage: errorDetails?.errorMessage
|
|
607
652
|
});
|
|
608
|
-
await actor.onJoinCompleted?.({
|
|
609
|
-
status: 'failed',
|
|
610
|
-
operationId,
|
|
611
|
-
kind: frameworkError.kind
|
|
612
|
-
});
|
|
613
653
|
}
|