@zlink-systems/framework 0.21.0 → 0.23.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.
Files changed (516) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
  13. package/dist/contracts/Handlers/JsonContract.js +23 -11
  14. package/dist/contracts/Spots/SpotKind.js +16 -8
  15. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
  16. package/dist/location-store-integration.js +16 -16
  17. package/dist/nest-integration.js +17 -11
  18. package/dist/runtime/abort.js +9 -5
  19. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  20. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  21. package/dist/runtime/actors/actor-client.js +83 -63
  22. package/dist/runtime/actors/actor-context.js +28 -22
  23. package/dist/runtime/actors/actor-creation.js +4 -3
  24. package/dist/runtime/actors/actor-handoff.js +89 -92
  25. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
  26. package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
  27. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  28. package/dist/runtime/actors/actor-mailbox.js +1 -1
  29. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  30. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  31. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  32. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  33. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  34. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  35. package/dist/runtime/actors/bound-session-wire.js +14 -9
  36. package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
  37. package/dist/runtime/actors/index.js +2 -5
  38. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  39. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  40. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  41. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  42. package/dist/runtime/admission.js +2 -6
  43. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  44. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  45. package/dist/runtime/backend/contracts/index.d.ts +1 -0
  46. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  47. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  48. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  49. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  50. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  51. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  52. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
  53. package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
  54. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  55. package/dist/runtime/backend/runtime-message.js +3 -3
  56. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  57. package/dist/runtime/backend/runtime-values.js +4 -5
  58. package/dist/runtime/channels/channel-clients.js +27 -24
  59. package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
  60. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  61. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  62. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  63. package/dist/runtime/channels/channel-envelope.js +83 -47
  64. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  65. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  66. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  67. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  68. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  69. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  70. package/dist/runtime/channels/channel-transports.js +46 -42
  71. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  72. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  73. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
  74. package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
  75. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  76. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  77. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  78. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  79. package/dist/runtime/channels/source-spot-router.js +6 -2
  80. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  81. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  82. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  83. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
  84. package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
  85. package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
  86. package/dist/runtime/diagnostics/flow-context.js +2 -2
  87. package/dist/runtime/diagnostics/index.js +38 -10
  88. package/dist/runtime/diagnostics/message-flow.js +58 -42
  89. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  90. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  91. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  92. package/dist/runtime/execution/index.js +7 -6
  93. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  94. package/dist/runtime/execution/state-lane.js +2 -2
  95. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
  96. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  97. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  98. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
  99. package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
  100. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  101. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  102. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  103. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  104. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  105. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  106. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  107. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  108. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  109. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  110. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  111. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
  112. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  113. package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
  114. package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
  115. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  116. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
  117. package/dist/runtime/foundation/service-topology-registry.js +105 -96
  118. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  119. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  120. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  121. package/dist/runtime/framework-errors-internal.js +7 -10
  122. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  123. package/dist/runtime/handlers/index.js +3 -1
  124. package/dist/runtime/host/actor-packet-relay.js +74 -70
  125. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  126. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  127. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  128. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  129. package/dist/runtime/host/application-job-queue.js +18 -22
  130. package/dist/runtime/host/bound-session-relay.js +3 -1
  131. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  132. package/dist/runtime/host/host-capacity-status.js +8 -4
  133. package/dist/runtime/host/index.js +245 -228
  134. package/dist/runtime/host/instance-activation-authority.js +93 -96
  135. package/dist/runtime/host/location-runtime-owner.js +16 -14
  136. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  137. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  138. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  139. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  140. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  141. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  142. package/dist/runtime/host/runtime-shutdown.js +1 -2
  143. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  144. package/dist/runtime/host/spot-address-transport.js +69 -71
  145. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  146. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  147. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  148. package/dist/runtime/locations/actor-location-claims.js +26 -20
  149. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  150. package/dist/runtime/locations/authority-key-codec.js +7 -7
  151. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  152. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  153. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  154. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  155. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  156. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  157. package/dist/runtime/locations/key-codec.js +1 -1
  158. package/dist/runtime/locations/lease-tracker.js +23 -21
  159. package/dist/runtime/locations/lifecycle.js +4 -5
  160. package/dist/runtime/locations/location-store-repository.js +368 -324
  161. package/dist/runtime/locations/opaque-record-key.js +2 -2
  162. package/dist/runtime/locations/resolvers.js +73 -82
  163. package/dist/runtime/locations/runtime.js +68 -63
  164. package/dist/runtime/locations/spot-location-claims.js +39 -35
  165. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  166. package/dist/runtime/messaging/packet-name.js +7 -6
  167. package/dist/runtime/messaging/payload-codec.js +21 -18
  168. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  169. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  170. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
  171. package/dist/runtime/routing-id.js +3 -5
  172. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  173. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  174. package/dist/runtime/spots/index.js +209 -220
  175. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  176. package/dist/runtime/spots/spot-activation-state.js +17 -15
  177. package/dist/runtime/spots/spot-activation.js +33 -16
  178. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  179. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  180. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
  181. package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
  182. package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
  183. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  184. package/dist/runtime/spots/spot-closing.js +3 -7
  185. package/dist/runtime/spots/spot-context.js +2 -2
  186. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  187. package/dist/runtime/spots/spot-handle.js +6 -3
  188. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  189. package/dist/runtime/spots/spot-manager-public.js +5 -6
  190. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  191. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  192. package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
  193. package/dist/runtime/spots/spot-outbound.js +10 -14
  194. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  195. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  196. package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
  197. package/dist/runtime/spots/spot-route-replies.js +4 -6
  198. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  199. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
  200. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  201. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  202. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  203. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  204. package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
  205. package/dist/runtime/spots/spot-timer.js +26 -30
  206. package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
  207. package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
  208. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
  209. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  210. package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
  211. package/dist/runtime/streams/bound-session-response-target.js +8 -1
  212. package/dist/runtime/streams/bound-session-service.d.ts +1 -0
  213. package/dist/runtime/streams/bound-session-service.js +14 -12
  214. package/dist/runtime/streams/index.js +28 -20
  215. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  216. package/dist/runtime/streams/managed-stream.js +52 -31
  217. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  218. package/dist/runtime/streams/protocol.d.ts +5 -1
  219. package/dist/runtime/streams/protocol.js +68 -20
  220. package/dist/runtime/streams/session-actor-coordinator.js +37 -41
  221. package/dist/runtime/streams/session-context.d.ts +9 -2
  222. package/dist/runtime/streams/session-context.js +50 -32
  223. package/dist/runtime/streams/session-local-actors.d.ts +3 -1
  224. package/dist/runtime/streams/session-local-actors.js +17 -2
  225. package/dist/runtime/streams/session-provider.js +2 -2
  226. package/dist/runtime/streams/session-serial-executor.js +1 -2
  227. package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
  228. package/dist/runtime/streams/stream-frame-factory.js +14 -7
  229. package/dist/runtime/streams/stream-session-runtime.js +112 -78
  230. package/dist/runtime/workers/index.js +15 -4
  231. package/package.json +3 -3
  232. package/src/contracts/Channels/RouteCalls.ts +6 -1
  233. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  234. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  235. package/src/contracts/Configuration/Builders.ts +14 -14
  236. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  237. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  238. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  239. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  240. package/src/contracts/Configuration/Registration.ts +46 -17
  241. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  242. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  243. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  244. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  245. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  246. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  247. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  248. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  249. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  250. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  251. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
  252. package/src/contracts/Errors/index.ts +1 -4
  253. package/src/contracts/Handlers/Attributes.ts +15 -9
  254. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  255. package/src/contracts/Handlers/JsonContract.ts +53 -19
  256. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  257. package/src/contracts/Locations/Authority.ts +4 -11
  258. package/src/contracts/Locations/Keys.ts +6 -1
  259. package/src/contracts/Locations/Options.ts +3 -2
  260. package/src/contracts/Locations/RelocationStore.ts +1 -4
  261. package/src/contracts/Locations/Resolvers.ts +5 -5
  262. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  263. package/src/contracts/Locations/Stores.ts +1 -2
  264. package/src/contracts/Locations/index.ts +2 -8
  265. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  266. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  267. package/src/contracts/Spots/Contracts.ts +2 -8
  268. package/src/contracts/Spots/SpotKind.ts +16 -8
  269. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  270. package/src/contracts/Streams/IZLinkSession.ts +2 -2
  271. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  272. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  273. package/src/internal.ts +5 -4
  274. package/src/location-store-integration.ts +24 -16
  275. package/src/nest-integration.ts +40 -25
  276. package/src/runtime/abort.ts +10 -4
  277. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  278. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  279. package/src/runtime/actors/actor-client.ts +162 -133
  280. package/src/runtime/actors/actor-context.ts +142 -134
  281. package/src/runtime/actors/actor-creation.ts +47 -44
  282. package/src/runtime/actors/actor-execution-context.ts +6 -4
  283. package/src/runtime/actors/actor-handoff.ts +269 -293
  284. package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
  285. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  286. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  287. package/src/runtime/actors/actor-mailbox.ts +16 -19
  288. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  289. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  290. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  291. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  292. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  293. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  294. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  295. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  296. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  297. package/src/runtime/actors/bound-session-wire.ts +37 -17
  298. package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
  299. package/src/runtime/actors/index.ts +43 -86
  300. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  301. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  302. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  303. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  304. package/src/runtime/admission.ts +9 -9
  305. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  306. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  307. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  308. package/src/runtime/backend/contracts/index.ts +77 -52
  309. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  310. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  311. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  312. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  313. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  314. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  315. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  316. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  317. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  318. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  319. package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
  320. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  321. package/src/runtime/backend/runtime-message.ts +5 -3
  322. package/src/runtime/backend/runtime-values.ts +10 -7
  323. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  324. package/src/runtime/channels/channel-clients.ts +93 -73
  325. package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
  326. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  327. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  328. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  329. package/src/runtime/channels/channel-envelope.ts +256 -150
  330. package/src/runtime/channels/channel-multipart.ts +13 -5
  331. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  332. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  333. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  334. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  335. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  336. package/src/runtime/channels/channel-socket-options.ts +3 -10
  337. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  338. package/src/runtime/channels/channel-transports.ts +218 -206
  339. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  340. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  341. package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
  342. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  343. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  344. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  345. package/src/runtime/channels/index.ts +1 -4
  346. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  347. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  348. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  349. package/src/runtime/channels/source-spot-router.ts +26 -22
  350. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  351. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  352. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  353. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  354. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  355. package/src/runtime/codecs/index.ts +3 -2
  356. package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
  357. package/src/runtime/diagnostics/flow-context.ts +18 -7
  358. package/src/runtime/diagnostics/index.ts +96 -61
  359. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  360. package/src/runtime/diagnostics/message-flow.ts +107 -79
  361. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  362. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  363. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  364. package/src/runtime/execution/index.ts +18 -26
  365. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  366. package/src/runtime/execution/state-lane.ts +2 -2
  367. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
  368. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  369. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  370. package/src/runtime/foundation/operation-identity.ts +1 -2
  371. package/src/runtime/foundation/operation-registry.ts +8 -2
  372. package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
  373. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  374. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  375. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  376. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  377. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  378. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  379. package/src/runtime/foundation/service-mailbox.ts +14 -14
  380. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  381. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  382. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  383. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  384. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  385. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  386. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  387. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
  388. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  389. package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
  390. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  391. package/src/runtime/foundation/service-topology-registry.ts +170 -159
  392. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  393. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  394. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  395. package/src/runtime/framework-errors-internal.ts +31 -30
  396. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  397. package/src/runtime/handlers/index.ts +18 -8
  398. package/src/runtime/host/actor-packet-relay.ts +290 -261
  399. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  400. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  401. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  402. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  403. package/src/runtime/host/application-job-queue.ts +32 -48
  404. package/src/runtime/host/bound-session-relay.ts +7 -9
  405. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  406. package/src/runtime/host/host-capacity-status.ts +10 -9
  407. package/src/runtime/host/index.ts +861 -789
  408. package/src/runtime/host/instance-activation-authority.ts +125 -143
  409. package/src/runtime/host/location-runtime-owner.ts +38 -26
  410. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  411. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  412. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  413. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  414. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  415. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  416. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  417. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  418. package/src/runtime/host/runtime-shutdown.ts +4 -3
  419. package/src/runtime/host/service-relocation-control.ts +14 -5
  420. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  421. package/src/runtime/host/spot-address-transport.ts +284 -237
  422. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  423. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  424. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  425. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  426. package/src/runtime/locations/actor-location-claims.ts +61 -49
  427. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  428. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  429. package/src/runtime/locations/authority-key-codec.ts +13 -10
  430. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  431. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  432. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  433. package/src/runtime/locations/canonical-codec.ts +3 -1
  434. package/src/runtime/locations/creation-operation-id.ts +4 -3
  435. package/src/runtime/locations/domain-store-contract.ts +13 -7
  436. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  437. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  438. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  439. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  440. package/src/runtime/locations/key-codec.ts +3 -4
  441. package/src/runtime/locations/lease-tracker.ts +36 -27
  442. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  443. package/src/runtime/locations/lifecycle.ts +33 -28
  444. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  445. package/src/runtime/locations/opaque-record-key.ts +4 -9
  446. package/src/runtime/locations/resolvers.ts +201 -178
  447. package/src/runtime/locations/runtime.ts +251 -159
  448. package/src/runtime/locations/spot-location-claims.ts +110 -112
  449. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  450. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  451. package/src/runtime/messaging/packet-name.ts +8 -6
  452. package/src/runtime/messaging/payload-codec.ts +70 -50
  453. package/src/runtime/messaging/submission-result.ts +6 -9
  454. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  455. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
  456. package/src/runtime/routing-id.ts +10 -7
  457. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  458. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  459. package/src/runtime/spots/index.ts +595 -564
  460. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  461. package/src/runtime/spots/spot-activation-state.ts +43 -51
  462. package/src/runtime/spots/spot-activation.ts +179 -116
  463. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  464. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  465. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  466. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  467. package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
  468. package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
  469. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  470. package/src/runtime/spots/spot-closing.ts +11 -12
  471. package/src/runtime/spots/spot-context.ts +46 -26
  472. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  473. package/src/runtime/spots/spot-handle.ts +17 -15
  474. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  475. package/src/runtime/spots/spot-location-claim.ts +5 -4
  476. package/src/runtime/spots/spot-manager-public.ts +62 -82
  477. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  478. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  479. package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
  480. package/src/runtime/spots/spot-outbound.ts +47 -59
  481. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  482. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  483. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  484. package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
  485. package/src/runtime/spots/spot-route-replies.ts +23 -24
  486. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  487. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  488. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
  489. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  490. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  491. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  492. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  493. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  494. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  495. package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
  496. package/src/runtime/spots/spot-timer.ts +103 -91
  497. package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
  498. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
  499. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  500. package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
  501. package/src/runtime/streams/bound-session-response-target.ts +39 -9
  502. package/src/runtime/streams/bound-session-service.ts +52 -42
  503. package/src/runtime/streams/index.ts +183 -100
  504. package/src/runtime/streams/managed-stream.ts +123 -90
  505. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  506. package/src/runtime/streams/protocol.ts +115 -46
  507. package/src/runtime/streams/session-actor-coordinator.ts +109 -93
  508. package/src/runtime/streams/session-calls.ts +2 -8
  509. package/src/runtime/streams/session-context.ts +96 -51
  510. package/src/runtime/streams/session-local-actors.ts +19 -3
  511. package/src/runtime/streams/session-provider.ts +5 -7
  512. package/src/runtime/streams/session-serial-executor.ts +7 -6
  513. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  514. package/src/runtime/streams/stream-frame-factory.ts +59 -40
  515. package/src/runtime/streams/stream-session-runtime.ts +317 -214
  516. package/src/runtime/workers/index.ts +68 -29
@@ -12,9 +12,7 @@ import type {
12
12
  } from '../../contracts';
13
13
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
14
14
  import type { ZLinkSubmitResult } from '../messaging/submission-result';
15
- import {
16
- ZLinkMessage
17
- } from '../../contracts';
15
+ import { ZLinkMessage } from '../../contracts';
18
16
  import type { Message } from '../../contracts/Common/Message';
19
17
  import {
20
18
  buildAdvertisedEndpoint,
@@ -32,8 +30,7 @@ import type {
32
30
  } from '../backend/contracts';
33
31
  import type { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
34
32
  import type { StreamSessionService } from '../foundation/service-runtime-contracts';
35
- import { registerServiceSessionBindingIngressPort } from
36
- '../foundation/service-session-binding-ingress-port';
33
+ import { registerServiceSessionBindingIngressPort } from '../foundation/service-session-binding-ingress-port';
37
34
  import {
38
35
  messageToBytes,
39
36
  ZLinkStreamCodec,
@@ -69,19 +66,10 @@ import {
69
66
  DefaultZLinkBoundSessionResponseTarget,
70
67
  type ZLinkBoundSessionResponseTarget
71
68
  } from './bound-session-response-target';
72
- import {
73
- ZLinkBoundSessionService,
74
- type ZLinkBoundSessionTransport
75
- } from './bound-session-service';
76
- import {
77
- ZLinkSessionActorCoordinator
78
- } from './session-actor-coordinator';
79
- import {
80
- ZLinkBoundActorRelaySender
81
- } from './bound-actor-relay-sender';
82
- import {
83
- ZLinkManagedStream
84
- } from './managed-stream';
69
+ import { ZLinkBoundSessionService, type ZLinkBoundSessionTransport } from './bound-session-service';
70
+ import { ZLinkSessionActorCoordinator } from './session-actor-coordinator';
71
+ import { ZLinkBoundActorRelaySender } from './bound-actor-relay-sender';
72
+ import { ZLinkManagedStream } from './managed-stream';
85
73
  import { createStreamSessionInstance } from './session-provider';
86
74
  import { DEFAULT_STREAM_NODE_MAX_MESSAGE_SIZE } from '../../contracts/Configuration/InternalDefaults';
87
75
  import {
@@ -123,19 +111,28 @@ export interface ZLinkStreamBindingRuntimeOptions {
123
111
  actorId: string,
124
112
  signal?: AbortSignal
125
113
  ) => Promise<ZLinkActorSessionAuthorityFence | undefined>;
126
- readonly nativeActorNodeProvider?: () => {
127
- status(): { readonly routingId: unknown };
128
- } | undefined;
114
+ readonly nativeActorNodeProvider?: () =>
115
+ | {
116
+ status(): { readonly routingId: unknown };
117
+ }
118
+ | undefined;
129
119
  readonly confirmRemoteActorSessionBinding?: (
130
120
  actor: ActorRef,
131
121
  sessionRid: ActorRef['nodeRid'],
132
122
  signal?: AbortSignal,
133
123
  options?: { readonly waitForAcknowledgement?: boolean }
134
124
  ) => Promise<void>;
135
- readonly errorSink?: () => {
136
- reportRuntimeTaskException(taskName: string, error: unknown): void;
137
- } | undefined;
138
- readonly relay?: (actor: ZLinkSessionActor, header: ZLinkStreamFrameHeader, payload: Message, signal?: AbortSignal) => Promise<boolean>;
125
+ readonly errorSink?: () =>
126
+ | {
127
+ reportRuntimeTaskException(taskName: string, error: unknown): void;
128
+ }
129
+ | undefined;
130
+ readonly relay?: (
131
+ actor: ZLinkSessionActor,
132
+ header: ZLinkStreamFrameHeader,
133
+ payload: Message,
134
+ signal?: AbortSignal
135
+ ) => Promise<boolean>;
139
136
  readonly notifyDisconnected?: (actor: ZLinkSessionActor, signal?: AbortSignal) => Promise<void>;
140
137
  readonly flowCreationEnabled?: () => boolean;
141
138
  readonly metrics?: import('../diagnostics').ZLinkRuntimeMetrics;
@@ -155,11 +152,17 @@ export interface ZLinkStreamMessageFactory {
155
152
  createBinaryMessage?(payload: Uint8Array): Message;
156
153
  }
157
154
 
158
- export interface ZLinkStreamSessionRuntimeOptions extends Omit<ZLinkStreamSessionRuntimeCoreOptions, 'bindingRuntime'> {
155
+ export interface ZLinkStreamSessionRuntimeOptions extends Omit<
156
+ ZLinkStreamSessionRuntimeCoreOptions,
157
+ 'bindingRuntime'
158
+ > {
159
159
  readonly bindingRuntime?: ZLinkStreamBindingRuntime;
160
160
  }
161
161
 
162
- export interface ZLinkStreamSessionNodeRuntimeOptions extends Omit<ZLinkStreamSessionNodeRuntimeCoreOptions, 'bindingRuntime'> {
162
+ export interface ZLinkStreamSessionNodeRuntimeOptions extends Omit<
163
+ ZLinkStreamSessionNodeRuntimeCoreOptions,
164
+ 'bindingRuntime'
165
+ > {
163
166
  readonly bindingRuntime?: ZLinkStreamBindingRuntime;
164
167
  }
165
168
 
@@ -195,8 +198,9 @@ export class ZLinkStreamRuntimeManager {
195
198
  private readonly applicationJobQueue: ApplicationJobQueue;
196
199
 
197
200
  constructor(private readonly options: ZLinkStreamRuntimeManagerOptions) {
198
- this.applicationJobQueue = options.applicationJobQueue
199
- ?? new ApplicationJobQueue(resolveApplicationJobQueueConfiguration());
201
+ this.applicationJobQueue =
202
+ options.applicationJobQueue ??
203
+ new ApplicationJobQueue(resolveApplicationJobQueueConfiguration());
200
204
  }
201
205
 
202
206
  start(): void {
@@ -237,31 +241,33 @@ export class ZLinkStreamRuntimeManager {
237
241
  );
238
242
  }
239
243
  const readablePoller = streamAdapter.createReadablePoller(socket);
240
- const nativeSessionRoutes = new Map<string, {
241
- readonly service: StreamSessionService;
242
- readonly completions: ZLinkMeshCompletionTable;
243
- }>();
244
+ const nativeSessionRoutes = new Map<
245
+ string,
246
+ {
247
+ readonly service: StreamSessionService;
248
+ readonly completions: ZLinkMeshCompletionTable;
249
+ }
250
+ >();
244
251
  if (actorDispatchEnabled) {
245
252
  for (const [meshName, mesh] of this.options.registration.spotNodes) {
246
253
  const isPrimaryMesh = meshName === applicationMeshName;
247
- if (
248
- !isPrimaryMesh
249
- && mesh.objectRole !== 'client'
250
- && mesh.objectRole !== 'server'
251
- ) continue;
252
- const meshNode = this.options.nativeMeshNodeForName?.(meshName)
253
- ?? (isPrimaryMesh ? nativeMeshNode : undefined);
254
- const completions = this.options.meshCompletionsForName?.(meshName)
255
- ?? (isPrimaryMesh ? meshCompletions : undefined);
254
+ if (!isPrimaryMesh && mesh.objectRole !== 'client' && mesh.objectRole !== 'server')
255
+ continue;
256
+ const meshNode =
257
+ this.options.nativeMeshNodeForName?.(meshName) ??
258
+ (isPrimaryMesh ? nativeMeshNode : undefined);
259
+ const completions =
260
+ this.options.meshCompletionsForName?.(meshName) ??
261
+ (isPrimaryMesh ? meshCompletions : undefined);
256
262
  const createService = meshNode?.createStreamSessionService;
257
263
  if (typeof createService !== 'function' || completions === undefined) continue;
258
264
  const service = createService.call(meshNode, socket.nativeInstance as never);
259
265
  const bindingOwner = actorSessionBindingRuntimeOwner(this.options.bindingRuntime);
260
266
  registerServiceSessionBindingIngressPort(service, {
267
+ actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid),
261
268
  retainOutbound: (claim, delivery) =>
262
269
  bindingOwner.admitRelocationOutbound(claim, delivery),
263
- clearOutbound: (actorId, error) =>
264
- bindingOwner.clearRelocation(actorId, error)
270
+ clearOutbound: (actorId, error) => bindingOwner.clearRelocation(actorId, error)
265
271
  });
266
272
  nativeSessionRoutes.set(meshName, {
267
273
  service,
@@ -269,14 +275,16 @@ export class ZLinkStreamRuntimeManager {
269
275
  });
270
276
  }
271
277
  }
272
- const nativeSessionService = applicationMeshName === undefined
273
- ? undefined
274
- : nativeSessionRoutes.get(applicationMeshName)?.service;
278
+ const nativeSessionService =
279
+ applicationMeshName === undefined
280
+ ? undefined
281
+ : nativeSessionRoutes.get(applicationMeshName)?.service;
275
282
  const monitor = monitoringAdapter.openSocketMonitor(socket);
276
283
  const sessionType = streamNode.session!;
277
- const sessionHandlerTypes = (
278
- streamNode as unknown as Record<symbol, readonly Type[] | undefined>
279
- )[Symbol.for('@zlink-systems/framework:session-handler-types')] ?? [];
284
+ const sessionHandlerTypes =
285
+ (streamNode as unknown as Record<symbol, readonly Type[] | undefined>)[
286
+ Symbol.for('@zlink-systems/framework:session-handler-types')
287
+ ] ?? [];
280
288
  const runtime = new ZLinkStreamSessionNodeRuntimeCore({
281
289
  nodeName,
282
290
  socket,
@@ -285,7 +293,7 @@ export class ZLinkStreamRuntimeManager {
285
293
  applicationJobQueue: this.applicationJobQueue,
286
294
  nativeSessionService,
287
295
  meshCompletions,
288
- nativeSessionRouteForMesh: meshName => nativeSessionRoutes.get(meshName),
296
+ nativeSessionRouteForMesh: (meshName) => nativeSessionRoutes.get(meshName),
289
297
  monitor,
290
298
  bindingRuntime: this.options.bindingRuntime,
291
299
  acceptNewSession: () => this.options.acceptNewSession?.(applicationMeshName) !== false,
@@ -294,13 +302,14 @@ export class ZLinkStreamRuntimeManager {
294
302
  providerResolver: this.options.providerResolver,
295
303
  messageSerializers: this.options.registration.messageSerializers,
296
304
  replacementCallbackTimeoutMs: this.options.registration.sessionReplacementCallbackTimeoutMs,
297
- sessionFactory: (context) => createStreamSessionInstance(
298
- sessionType as Type<ZLinkSession> | Type<ZLinkSessionFactory>,
299
- this.options.providerResolver,
300
- context,
301
- sessionHandlerTypes
302
- )
303
- });
305
+ sessionFactory: (context) =>
306
+ createStreamSessionInstance(
307
+ sessionType as Type<ZLinkSession> | Type<ZLinkSessionFactory>,
308
+ this.options.providerResolver,
309
+ context,
310
+ sessionHandlerTypes
311
+ )
312
+ });
304
313
  runtime.start();
305
314
  this.nodes.set(nodeName, {
306
315
  meshName: applicationMeshName,
@@ -309,7 +318,7 @@ export class ZLinkStreamRuntimeManager {
309
318
  socket,
310
319
  monitor,
311
320
  nativeSessionService,
312
- nativeSessionServices: [...nativeSessionRoutes.values()].map(route => route.service)
321
+ nativeSessionServices: [...nativeSessionRoutes.values()].map((route) => route.service)
313
322
  });
314
323
  }
315
324
  }
@@ -319,8 +328,9 @@ export class ZLinkStreamRuntimeManager {
319
328
  this.nodes.clear();
320
329
  for (const node of nodes.reverse()) {
321
330
  await node.runtime.dispose();
322
- const nativeServices = node.nativeSessionServices
323
- ?? (node.nativeSessionService === undefined ? [] : [node.nativeSessionService]);
331
+ const nativeServices =
332
+ node.nativeSessionServices ??
333
+ (node.nativeSessionService === undefined ? [] : [node.nativeSessionService]);
324
334
  for (const service of nativeServices) {
325
335
  service.shutdown(1000);
326
336
  service.close();
@@ -331,17 +341,20 @@ export class ZLinkStreamRuntimeManager {
331
341
  }
332
342
 
333
343
  async notifyServerDrain(meshName: string): Promise<void> {
334
- await Promise.all([...this.nodes.values()]
335
- .filter((node) => node.meshName === meshName)
336
- .map((node) => node.runtime.drainCloseSessions()));
344
+ await Promise.all(
345
+ [...this.nodes.values()]
346
+ .filter((node) => node.meshName === meshName)
347
+ .map((node) => node.runtime.drainCloseSessions())
348
+ );
337
349
  }
338
350
 
339
351
  async notifyUnscopedServerDrain(): Promise<void> {
340
- await Promise.all([...this.nodes.values()]
341
- .filter((node) => node.meshName === undefined)
342
- .map((node) => node.runtime.drainCloseSessions()));
352
+ await Promise.all(
353
+ [...this.nodes.values()]
354
+ .filter((node) => node.meshName === undefined)
355
+ .map((node) => node.runtime.drainCloseSessions())
356
+ );
343
357
  }
344
-
345
358
  }
346
359
 
347
360
  export class ZLinkStreamSessionRuntime extends ZLinkStreamSessionRuntimeCore {
@@ -353,9 +366,11 @@ export class ZLinkStreamSessionRuntime extends ZLinkStreamSessionRuntimeCore {
353
366
  // Spec 27 §4: a default-constructed binding runtime must still honor the
354
367
  // process diagnostics level, so wire its Off gate to the runtime's
355
368
  // dispatch-error flow tracer.
356
- const bindingRuntime = options.bindingRuntime ?? new ZLinkStreamBindingRuntime({
357
- flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
358
- });
369
+ const bindingRuntime =
370
+ options.bindingRuntime ??
371
+ new ZLinkStreamBindingRuntime({
372
+ flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
373
+ });
359
374
  super(
360
375
  {
361
376
  ...options,
@@ -364,7 +379,8 @@ export class ZLinkStreamSessionRuntime extends ZLinkStreamSessionRuntimeCore {
364
379
  routingId,
365
380
  removeSession === undefined
366
381
  ? undefined
367
- : (sessionId, session) => removeSession(sessionId, session as unknown as ZLinkStreamSessionRuntime)
382
+ : (sessionId, session) =>
383
+ removeSession(sessionId, session as unknown as ZLinkStreamSessionRuntime)
368
384
  );
369
385
  }
370
386
  }
@@ -373,9 +389,11 @@ export class ZLinkStreamSessionNodeRuntime extends ZLinkStreamSessionNodeRuntime
373
389
  constructor(options: ZLinkStreamSessionNodeRuntimeOptions) {
374
390
  // Spec 27 §4: keep the default binding runtime's flow creation behind the
375
391
  // process diagnostics Off gate (see ZLinkStreamSessionRuntime above).
376
- const bindingRuntime = options.bindingRuntime ?? new ZLinkStreamBindingRuntime({
377
- flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
378
- });
392
+ const bindingRuntime =
393
+ options.bindingRuntime ??
394
+ new ZLinkStreamBindingRuntime({
395
+ flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
396
+ });
379
397
  super({
380
398
  ...options,
381
399
  bindingRuntime
@@ -384,7 +402,10 @@ export class ZLinkStreamSessionNodeRuntime extends ZLinkStreamSessionNodeRuntime
384
402
  }
385
403
 
386
404
  export class ZLinkStreamBindingRuntime {
387
- private readonly routes: ZLinkActorSessionBindingRegistry<DefaultZLinkSessionContext, DefaultZLinkSessionActor>;
405
+ private readonly routes: ZLinkActorSessionBindingRegistry<
406
+ DefaultZLinkSessionContext,
407
+ DefaultZLinkSessionActor
408
+ >;
388
409
  private readonly frameMessages: ZLinkStreamFrameMessageFactory;
389
410
  private readonly compressionCodec: ZLinkStreamCompressionCodec | undefined;
390
411
  private readonly boundSessions: ZLinkBoundSessionService;
@@ -396,14 +417,17 @@ export class ZLinkStreamBindingRuntime {
396
417
  ...options,
397
418
  actorBindTimeoutMs: options.actorBindTimeoutMs ?? DEFAULT_ACTOR_BIND_TIMEOUT_MS
398
419
  };
399
- this.routes = new ZLinkActorSessionBindingRegistry<DefaultZLinkSessionContext, DefaultZLinkSessionActor>(
400
- 4096,
401
- 4096,
402
- runtimeOptions.sessionRelocationSealTimeoutMs ?? 3_000
403
- );
420
+ this.routes = new ZLinkActorSessionBindingRegistry<
421
+ DefaultZLinkSessionContext,
422
+ DefaultZLinkSessionActor
423
+ >(4096, 4096, runtimeOptions.sessionRelocationSealTimeoutMs ?? 3_000, runtimeOptions.errorSink);
404
424
  this.compressionCodec = resolveStreamCompressionCodec(runtimeOptions.streamCompression);
405
425
  this.frameMessages = new ZLinkStreamFrameMessageFactory(runtimeOptions);
406
- this.boundSessions = new ZLinkBoundSessionService(this.routes, this.frameMessages, runtimeOptions);
426
+ this.boundSessions = new ZLinkBoundSessionService(
427
+ this.routes,
428
+ this.frameMessages,
429
+ runtimeOptions
430
+ );
407
431
  const actorSessionLifecycle = new ZLinkActorSessionLifecycleCoordinator();
408
432
  this.sessionActors = new ZLinkSessionActorCoordinator(
409
433
  this.routes,
@@ -418,10 +442,15 @@ export class ZLinkStreamBindingRuntime {
418
442
  actorSessionLifecycle
419
443
  );
420
444
  registerActorSessionBindingRuntimeOwner(this, {
445
+ actorSlot: async (actorId, sessionRid) => {
446
+ const route = await this.routes.route(actorId);
447
+ return route !== undefined && route.sessionIdentity === sessionRid
448
+ ? route.actorSlot
449
+ : undefined;
450
+ },
421
451
  sealRelocation: (claim, expected, signal) =>
422
452
  this.routes.sealRelocation(claim, expected, signal),
423
- relocationSnapshot: (actorId, sealId) =>
424
- this.routes.relocationSnapshot(actorId, sealId),
453
+ relocationSnapshot: (actorId, sealId) => this.routes.relocationSnapshot(actorId, sealId),
425
454
  retainRelocationOutbound: (actorId, operation, sealId) =>
426
455
  this.routes.retainRelocationOutbound(actorId, operation, sealId),
427
456
  admitRelocationOutbound: (claim, operation) =>
@@ -431,7 +460,7 @@ export class ZLinkStreamBindingRuntime {
431
460
  applyRelocation: (...args) => this.routes.applyRelocation(...args),
432
461
  observeRelocationTerminal: (...args) => this.routes.observeRelocationTerminal(...args),
433
462
  clearRelocation: (actorId, error) => this.routes.clearRelocation(actorId, error),
434
- committedRoute: async actorId => {
463
+ committedRoute: async (actorId) => {
435
464
  const route = await this.routes.route(actorId);
436
465
  return route === undefined
437
466
  ? undefined
@@ -527,10 +556,13 @@ export class ZLinkStreamBindingRuntime {
527
556
  );
528
557
  }
529
558
 
530
- async authorityFence(actorId: string): Promise<{
531
- readonly authorityOwnerGeneration: bigint;
532
- readonly ownerLeaseGeneration: bigint;
533
- } | undefined> {
559
+ async authorityFence(actorId: string): Promise<
560
+ | {
561
+ readonly authorityOwnerGeneration: bigint;
562
+ readonly ownerLeaseGeneration: bigint;
563
+ }
564
+ | undefined
565
+ > {
534
566
  return await this.sessionActors.authorityFence(actorId);
535
567
  }
536
568
 
@@ -546,7 +578,11 @@ export class ZLinkStreamBindingRuntime {
546
578
  return await this.routes.validateSeal(actorId, sealId);
547
579
  }
548
580
 
549
- async unbind(actorId: string, context: DefaultZLinkSessionContext, bindingToken: string): Promise<void> {
581
+ async unbind(
582
+ actorId: string,
583
+ context: DefaultZLinkSessionContext,
584
+ bindingToken: string
585
+ ): Promise<void> {
550
586
  await this.routes.unbind(actorId, context, bindingToken);
551
587
  }
552
588
 
@@ -565,7 +601,13 @@ export class ZLinkStreamBindingRuntime {
565
601
  metadata: ReadonlyMap<string, string>,
566
602
  signal?: AbortSignal
567
603
  ): Promise<ZLinkSubmitResult> {
568
- return await this.boundSessions.sendBoundSession(actorId, message, packetName, metadata, signal);
604
+ return await this.boundSessions.sendBoundSession(
605
+ actorId,
606
+ message,
607
+ packetName,
608
+ metadata,
609
+ signal
610
+ );
569
611
  }
570
612
 
571
613
  async submitLocalBoundSession(
@@ -575,7 +617,13 @@ export class ZLinkStreamBindingRuntime {
575
617
  metadata: ReadonlyMap<string, string>,
576
618
  signal?: AbortSignal
577
619
  ): Promise<ZLinkSubmitResult> {
578
- return await this.boundSessions.submitLocalBoundSession(actorId, message, packetName, metadata, signal);
620
+ return await this.boundSessions.submitLocalBoundSession(
621
+ actorId,
622
+ message,
623
+ packetName,
624
+ metadata,
625
+ signal
626
+ );
579
627
  }
580
628
 
581
629
  async sendLocalBoundSession(
@@ -612,10 +660,15 @@ export class ZLinkStreamBindingRuntime {
612
660
  error: unknown,
613
661
  metadata: ReadonlyMap<string, string>
614
662
  ): Promise<boolean> {
615
- return await this.boundSessions.sendLocalBoundSessionError(actorId, packetName, requestSeq, error, metadata);
663
+ return await this.boundSessions.sendLocalBoundSessionError(
664
+ actorId,
665
+ packetName,
666
+ requestSeq,
667
+ error,
668
+ metadata
669
+ );
616
670
  }
617
671
 
618
-
619
672
  async sendNativeBoundSession(
620
673
  node: ZLinkBackendActorSessionNode,
621
674
  actorRef: ActorRef,
@@ -624,7 +677,14 @@ export class ZLinkStreamBindingRuntime {
624
677
  metadata: ReadonlyMap<string, string>,
625
678
  signal?: AbortSignal
626
679
  ): Promise<ZLinkSubmitResult> {
627
- return await this.boundSessions.sendNativeBoundSession(node, actorRef, message, packetName, metadata, signal);
680
+ return await this.boundSessions.sendNativeBoundSession(
681
+ node,
682
+ actorRef,
683
+ message,
684
+ packetName,
685
+ metadata,
686
+ signal
687
+ );
628
688
  }
629
689
 
630
690
  async sendNativeBoundSessionResponse(
@@ -658,7 +718,15 @@ export class ZLinkStreamBindingRuntime {
658
718
  metadata: ReadonlyMap<string, string>,
659
719
  signal?: AbortSignal
660
720
  ): Promise<void> {
661
- await this.boundSessions.sendNativeBoundSessionError(node, actorRef, packetName, requestSeq, error, metadata, signal);
721
+ await this.boundSessions.sendNativeBoundSessionError(
722
+ node,
723
+ actorRef,
724
+ packetName,
725
+ requestSeq,
726
+ error,
727
+ metadata,
728
+ signal
729
+ );
662
730
  }
663
731
 
664
732
  async disconnectNativeBoundSession(
@@ -695,7 +763,9 @@ export class ZLinkStreamBindingRuntime {
695
763
  }
696
764
 
697
765
  decompressPayload(payload: Message): Message {
698
- return simpleMessage(decompressStreamPayload(messageToBytes(payload), this.compressionCodec)) as Message;
766
+ return simpleMessage(
767
+ decompressStreamPayload(messageToBytes(payload), this.compressionCodec)
768
+ ) as Message;
699
769
  }
700
770
 
701
771
  createJsonFrameMessage(
@@ -707,7 +777,15 @@ export class ZLinkStreamBindingRuntime {
707
777
  payload: unknown,
708
778
  correlationId?: string
709
779
  ): Message {
710
- return this.frameMessages.createJsonFrameMessage(kind, packetName, metadata, compressed, requestSeq, payload, correlationId);
780
+ return this.frameMessages.createJsonFrameMessage(
781
+ kind,
782
+ packetName,
783
+ metadata,
784
+ compressed,
785
+ requestSeq,
786
+ payload,
787
+ correlationId
788
+ );
711
789
  }
712
790
 
713
791
  createJsonReplyFrameMessage(
@@ -717,7 +795,12 @@ export class ZLinkStreamBindingRuntime {
717
795
  compressed: boolean,
718
796
  payload: unknown
719
797
  ): Message {
720
- return this.frameMessages.createJsonReplyFrameMessage(requestHeader, kind, metadata, compressed, payload);
798
+ return this.frameMessages.createJsonReplyFrameMessage(
799
+ requestHeader,
800
+ kind,
801
+ metadata,
802
+ compressed,
803
+ payload
804
+ );
721
805
  }
722
-
723
806
  }