@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
@@ -18,7 +18,8 @@ import { ZLinkSpotActorPacketDispatch } from './spot-actor-packet-dispatch';
18
18
  import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
19
19
  import type { ZLinkNativeActorJoinSnapshot } from './spot-runtime-ports';
20
20
 
21
- type AdmissionOptions = Pick<ZLinkSpotActivationLifecycleOptions,
21
+ type AdmissionOptions = Pick<
22
+ ZLinkSpotActivationLifecycleOptions,
22
23
  | 'actorHandoffRuntime'
23
24
  | 'admission'
24
25
  | 'actorResolver'
@@ -57,7 +58,12 @@ export class ZLinkSpotActorAdmissionCoordinator {
57
58
  fallbackActorRef,
58
59
  undefined,
59
60
  messageFollowOrigin,
60
- (replayedParts, replayReturnResponse, replayRemoteBoundSessionTarget, replayFallbackActorRef) =>
61
+ (
62
+ replayedParts,
63
+ replayReturnResponse,
64
+ replayRemoteBoundSessionTarget,
65
+ replayFallbackActorRef
66
+ ) =>
61
67
  this.dispatchActorPacketDirect(
62
68
  activation,
63
69
  actorId,
@@ -87,21 +93,29 @@ export class ZLinkSpotActorAdmissionCoordinator {
87
93
  const nativeDispatch = new ZLinkSpotActorJoinDispatch({
88
94
  nativeSpot,
89
95
  createReceived: requireBackendValueFactory(this.options.createReceived, 'Received'),
90
- createTopicMessage: requireBackendValueFactory(this.options.createTopicMessage, 'TopicMessage'),
96
+ createTopicMessage: requireBackendValueFactory(
97
+ this.options.createTopicMessage,
98
+ 'TopicMessage'
99
+ ),
91
100
  serial: activation.serial,
92
101
  actors: {
93
- resolveActor: (actorId) => activation.hasDepartedActor(actorId)
94
- ? undefined
95
- : activation.resolveJoinedActor(actorId) ?? this.options.actorResolver?.(actorId),
102
+ resolveActor: (actorId) =>
103
+ activation.hasDepartedActor(actorId)
104
+ ? undefined
105
+ : (activation.resolveJoinedActor(actorId) ?? this.options.actorResolver?.(actorId)),
96
106
  getTarget: () => activation.spot,
97
107
  defaultAccept: false,
98
- transfer: this.options.actorTransferRuntime === undefined ? { kind: 'disabled' } : {
99
- kind: 'enabled',
100
- runtime: this.options.actorTransferRuntime
101
- },
108
+ transfer:
109
+ this.options.actorTransferRuntime === undefined
110
+ ? { kind: 'disabled' }
111
+ : {
112
+ kind: 'enabled',
113
+ runtime: this.options.actorTransferRuntime
114
+ },
102
115
  commitNativeActor: (actor) => this.commitNativeActorTransaction(activation, actor),
103
116
  commitActorDeparture: (actorId) => activation.commitActorDeparture(actorId),
104
- commitTransferredActor: (actor, backlog) => this.commitTransferredActorTransaction(activation, actor, backlog)
117
+ commitTransferredActor: (actor, backlog) =>
118
+ this.commitTransferredActorTransaction(activation, actor, backlog)
105
119
  },
106
120
  packets: {
107
121
  handle: (delivery) =>
@@ -116,22 +130,31 @@ export class ZLinkSpotActorAdmissionCoordinator {
116
130
  bindRemoteSession: (actor, sourceNodeRid, sourceSessionRid) => {
117
131
  const node = this.options.nativeSpotNodeProvider?.(activation.meshName);
118
132
  if (node === undefined || routingIdsEqual(sourceNodeRid, node.routingId)) return;
119
- const target = this.options.boundSessionRuntime?.resolveRemoteBoundSessionTarget(sourceNodeRid, sourceSessionRid);
133
+ const target = this.options.boundSessionRuntime?.resolveRemoteBoundSessionTarget(
134
+ sourceNodeRid,
135
+ sourceSessionRid
136
+ );
120
137
  if (target !== undefined) {
121
- this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(actor.actorId, target);
138
+ this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(
139
+ actor.actorId,
140
+ target
141
+ );
122
142
  }
123
143
  node.bindRemoteActorSession(actor, sourceNodeRid, sourceSessionRid);
124
144
  },
125
145
  replyNoBind: (info, parts, result) =>
126
- this.options.nativeSpotNodeProvider?.(activation.meshName)?.replyActorNoBind(info, parts, result)
146
+ this.options
147
+ .nativeSpotNodeProvider?.(activation.meshName)
148
+ ?.replyActorNoBind(info, parts, result)
127
149
  },
128
150
  boundSessionRuntime: this.options.boundSessionRuntime,
129
151
  messageSerializers: this.options.messageSerializers,
130
152
  providerResolver: this.options.providerResolver,
131
153
  dispatchErrors: this.options.dispatchErrors,
132
- claimApplicationWork: this.options.admission === undefined
133
- ? undefined
134
- : () => this.options.admission!.claim(activation.meshName, 'Spot route dispatch'),
154
+ claimApplicationWork:
155
+ this.options.admission === undefined
156
+ ? undefined
157
+ : () => this.options.admission!.claim(activation.meshName, 'Spot route dispatch'),
135
158
  detachedTaskRunner: this.options.detachedTaskRunner
136
159
  });
137
160
  nativeDispatch.attach();
@@ -148,7 +171,7 @@ export class ZLinkSpotActorAdmissionCoordinator {
148
171
  fallbackActorRef?: ActorRef,
149
172
  requestTerminal?: (response: unknown) => Promise<void> | void
150
173
  ): Promise<unknown> {
151
- return activation.executeActor(actorId, actorSerial =>
174
+ return activation.executeActor(actorId, (actorSerial) =>
152
175
  this.dispatchActorPacketInActorTurn(
153
176
  activation,
154
177
  actorSerial,
@@ -176,28 +199,29 @@ export class ZLinkSpotActorAdmissionCoordinator {
176
199
  ): ZLinkActorHandoffPrefixAdmission {
177
200
  const terminals = activation.admitActorDurablePrefix(
178
201
  actorId,
179
- records.map(record => ({
180
- operation: executeChild => record.drain((
181
- parts,
182
- returnResponse,
183
- remoteBoundSessionTarget,
184
- fallbackActorRef
185
- ) => executeChild(actorSerial => this.dispatchActorPacketInActorTurn(
186
- activation,
187
- actorSerial,
188
- actorId,
189
- parts,
190
- returnResponse,
191
- remoteBoundSessionTarget,
192
- fallbackActorRef
193
- ))),
202
+ records.map((record) => ({
203
+ operation: (executeChild) =>
204
+ record.drain((parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef) =>
205
+ executeChild((actorSerial) =>
206
+ this.dispatchActorPacketInActorTurn(
207
+ activation,
208
+ actorSerial,
209
+ actorId,
210
+ parts,
211
+ returnResponse,
212
+ remoteBoundSessionTarget,
213
+ fallbackActorRef
214
+ )
215
+ )
216
+ ),
194
217
  preparation: record.preparation,
195
218
  workOptions: { payloadBytes: record.payloadBytes }
196
219
  }))
197
220
  );
198
- const terminal = Promise.allSettled(terminals).then(outcomes => {
199
- const errors = outcomes.flatMap(outcome =>
200
- outcome.status === 'rejected' ? [outcome.reason] : []);
221
+ const terminal = Promise.allSettled(terminals).then((outcomes) => {
222
+ const errors = outcomes.flatMap((outcome) =>
223
+ outcome.status === 'rejected' ? [outcome.reason] : []
224
+ );
201
225
  if (errors.length === 1) throw errors[0];
202
226
  if (errors.length > 1) {
203
227
  throw new AggregateError(errors, `Actor '${actorId}' durable prefix replay failed.`);
@@ -217,32 +241,38 @@ export class ZLinkSpotActorAdmissionCoordinator {
217
241
  requestTerminal?: (response: unknown) => Promise<void> | void
218
242
  ): Promise<unknown> {
219
243
  return new ZLinkSpotActorPacketDispatch({
220
- spot: activation.spot,
221
- spotId: () => String(activation.spotId),
222
- registry: activation.actorHandlers,
223
- serial: actorSerial,
224
- resolveActor: (targetActorId) => activation.hasDepartedActor(targetActorId)
244
+ spot: activation.spot,
245
+ spotId: () => String(activation.spotId),
246
+ registry: activation.actorHandlers,
247
+ serial: actorSerial,
248
+ resolveActor: (targetActorId) =>
249
+ activation.hasDepartedActor(targetActorId)
225
250
  ? undefined
226
- : activation.resolveJoinedActor(targetActorId) ?? this.options.actorResolver?.(targetActorId),
227
- actorLeft: (targetActorId) => activation.hasDepartedActor(targetActorId),
228
- onRemoteBoundSessionTarget: (targetActorId, target) =>
229
- this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(targetActorId, target),
230
- onDisconnectActor: (actor) =>
231
- activation.serial.execute(() => activation.spot.onDisconnectActor?.(actor)),
232
- actorResponseSender: this.options.boundSessionRuntime?.sendActorResponse.bind(this.options.boundSessionRuntime),
233
- actorErrorSender: this.options.boundSessionRuntime?.sendActorError.bind(this.options.boundSessionRuntime),
234
- providerResolver: this.options.providerResolver,
235
- messageSerializers: this.options.messageSerializers,
236
- dispatchErrors: this.options.dispatchErrors,
237
- routeToActorJoinPrewarm: this.options.routeToActorJoinPrewarm
238
- }).dispatch(
239
- actorId,
240
- parts,
241
- returnResponse,
242
- remoteBoundSessionTarget,
243
- fallbackActorRef,
244
- requestTerminal
245
- );
251
+ : (activation.resolveJoinedActor(targetActorId) ??
252
+ this.options.actorResolver?.(targetActorId)),
253
+ actorLeft: (targetActorId) => activation.hasDepartedActor(targetActorId),
254
+ onRemoteBoundSessionTarget: (targetActorId, target) =>
255
+ this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(targetActorId, target),
256
+ onDisconnectActor: (actor) =>
257
+ activation.serial.execute(() => activation.spot.onDisconnectActor?.(actor)),
258
+ actorResponseSender: this.options.boundSessionRuntime?.sendActorResponse.bind(
259
+ this.options.boundSessionRuntime
260
+ ),
261
+ actorErrorSender: this.options.boundSessionRuntime?.sendActorError.bind(
262
+ this.options.boundSessionRuntime
263
+ ),
264
+ providerResolver: this.options.providerResolver,
265
+ messageSerializers: this.options.messageSerializers,
266
+ dispatchErrors: this.options.dispatchErrors,
267
+ routeToActorJoinPrewarm: this.options.routeToActorJoinPrewarm
268
+ }).dispatch(
269
+ actorId,
270
+ parts,
271
+ returnResponse,
272
+ remoteBoundSessionTarget,
273
+ fallbackActorRef,
274
+ requestTerminal
275
+ );
246
276
  }
247
277
 
248
278
  private async commitNativeActorTransaction(
@@ -273,7 +303,10 @@ export class ZLinkSpotActorAdmissionCoordinator {
273
303
  try {
274
304
  if (snapshot !== undefined) await transfer?.rollbackNativeActorJoin(actor, snapshot);
275
305
  } catch (rollbackError) {
276
- throw new AggregateError([error, rollbackError], 'Native actor admission and rollback both failed.');
306
+ throw new AggregateError(
307
+ [error, rollbackError],
308
+ 'Native actor admission and rollback both failed.'
309
+ );
277
310
  }
278
311
  throw error;
279
312
  }
@@ -291,14 +324,9 @@ export class ZLinkSpotActorAdmissionCoordinator {
291
324
  activation.commitActorJoin(actor);
292
325
  activation.beginActorTransfer(actor.context.actorId);
293
326
  await activation.serial.execute(() => activation.spot.onJoinedActor(actor));
294
- const results = backlog.length === 0
295
- ? []
296
- : await this.replayActorBacklog(activation, actor, backlog);
297
- await transfer?.claimRoutedActorLocation(
298
- actor,
299
- activation.spotId,
300
- activation.meshName
301
- );
327
+ const results =
328
+ backlog.length === 0 ? [] : await this.replayActorBacklog(activation, actor, backlog);
329
+ await transfer?.claimRoutedActorLocation(actor, activation.spotId, activation.meshName);
302
330
  routeSwitchStarted = true;
303
331
  await transfer?.publishRoutedActorOwnership(actor);
304
332
  await transfer?.openRoutedActorSession(actor);
@@ -311,7 +339,10 @@ export class ZLinkSpotActorAdmissionCoordinator {
311
339
  try {
312
340
  await transfer?.rollbackRoutedActor(actor);
313
341
  } catch (rollbackError) {
314
- throw new AggregateError([error, rollbackError], 'Actor admission and rollback both failed.');
342
+ throw new AggregateError(
343
+ [error, rollbackError],
344
+ 'Actor admission and rollback both failed.'
345
+ );
315
346
  }
316
347
  throw error;
317
348
  }
@@ -333,13 +364,14 @@ export class ZLinkSpotActorAdmissionCoordinator {
333
364
  remoteBoundSessionTarget,
334
365
  fallbackActorRef
335
366
  ),
336
- (index) => this.options.runtimeEventPublisher?.publish({
337
- sourceName: 'zlink.framework.actor-handoff',
338
- timestamp: new Date(),
339
- marker: 'backlog_enqueued',
340
- actorId: actor.context.actorId,
341
- index
342
- })
367
+ (index) =>
368
+ this.options.runtimeEventPublisher?.publish({
369
+ sourceName: 'zlink.framework.actor-handoff',
370
+ timestamp: new Date(),
371
+ marker: 'backlog_enqueued',
372
+ actorId: actor.context.actorId,
373
+ index
374
+ })
343
375
  );
344
376
  }
345
377
  }
@@ -18,21 +18,14 @@ import type {
18
18
  import type { Message } from '../../contracts/Common/Message';
19
19
  import type { RequestResult } from '../backend/runtime-values';
20
20
  type RuntimeMessage = Message;
21
- import type {
22
- ZLinkRemoteBoundSessionTarget
23
- } from '../actors';
21
+ import type { ZLinkRemoteBoundSessionTarget } from '../actors';
24
22
  import type { ZLinkDispatchErrorReporter } from '../channels';
25
23
  import { ZLinkSpotActorLifecycleDrain } from './spot-actor-lifecycle-drain';
26
- import {
27
- ZLinkSpotActorPacketDrain,
28
- type ZLinkActorDispatchPart
29
- } from './spot-actor-packet-drain';
24
+ import { ZLinkSpotActorPacketDrain, type ZLinkActorDispatchPart } from './spot-actor-packet-drain';
30
25
  import { ZLINK_RECV_DONT_WAIT } from './spot-native-flags';
31
26
  import { ZLinkSpotNativeActorJoinAdmission } from './spot-native-actor-join-admission';
32
27
  import { ZLinkSpotRoutedFrameDispatch } from './spot-routed-frame-dispatch';
33
- import {
34
- ZLinkSpotSubscriptionDispatch
35
- } from './spot-subscription-dispatch';
28
+ import { ZLinkSpotSubscriptionDispatch } from './spot-subscription-dispatch';
36
29
  import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
37
30
  import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
38
31
  import type { ZLinkApplicationWorkClaim } from '../admission';
@@ -62,12 +55,14 @@ interface ZLinkSpotActorAdmissionRuntime {
62
55
  readonly resolveActor: (actorId: string) => ZLinkActor | undefined;
63
56
  readonly getTarget: () => ZLinkActorJoinAdmissionTarget;
64
57
  readonly defaultAccept: boolean;
65
- readonly transfer: {
66
- readonly kind: 'disabled';
67
- } | {
68
- readonly kind: 'enabled';
69
- readonly runtime: ZLinkSpotActorTransferRuntime;
70
- };
58
+ readonly transfer:
59
+ | {
60
+ readonly kind: 'disabled';
61
+ }
62
+ | {
63
+ readonly kind: 'enabled';
64
+ readonly runtime: ZLinkSpotActorTransferRuntime;
65
+ };
71
66
  readonly commitNativeActor?: (actor: ZLinkActor) => Promise<void>;
72
67
  readonly commitActorDeparture?: (actorId: string) => void;
73
68
  readonly commitTransferredActor?: (
@@ -163,23 +158,34 @@ export class ZLinkSpotActorJoinDispatch {
163
158
  routedActorTransferProvider: transfer?.runtime.materializeRoutedActor.bind(transfer.runtime),
164
159
  commitTransferredActor: actors.commitTransferredActor,
165
160
  actorPacketHandler: options.packets?.handle,
166
- bindRemoteSession: options.packets?.bindRemoteSession === undefined
167
- ? undefined
168
- : (actor, sourceNodeRid, sourceSessionRid, declaredTarget) =>
169
- options.packets!.bindRemoteSession!(
170
- {
171
- actorId: actor.actorId,
172
- generation: actor.objectGeneration,
173
- nodeRid: actor.nodeRid
174
- },
175
- sourceNodeRid,
176
- sourceSessionRid,
177
- declaredTarget
178
- ),
179
- routedBoundSessionReceiver: options.boundSessionRuntime?.receiveRoutedBoundSession.bind(options.boundSessionRuntime),
180
- routedBoundSessionResponseReceiver: options.boundSessionRuntime?.receiveRoutedBoundSessionResponse.bind(options.boundSessionRuntime),
181
- routedBoundSessionErrorReceiver: options.boundSessionRuntime?.receiveRoutedBoundSessionError.bind(options.boundSessionRuntime),
182
- actorPacketTargetProvider: options.boundSessionRuntime?.actorPacketTargetForState.bind(options.boundSessionRuntime),
161
+ bindRemoteSession:
162
+ options.packets?.bindRemoteSession === undefined
163
+ ? undefined
164
+ : (actor, sourceNodeRid, sourceSessionRid, declaredTarget) =>
165
+ options.packets!.bindRemoteSession!(
166
+ {
167
+ actorId: actor.actorId,
168
+ generation: actor.objectGeneration,
169
+ nodeRid: actor.nodeRid
170
+ },
171
+ sourceNodeRid,
172
+ sourceSessionRid,
173
+ declaredTarget
174
+ ),
175
+ routedBoundSessionReceiver: options.boundSessionRuntime?.receiveRoutedBoundSession.bind(
176
+ options.boundSessionRuntime
177
+ ),
178
+ routedBoundSessionResponseReceiver:
179
+ options.boundSessionRuntime?.receiveRoutedBoundSessionResponse.bind(
180
+ options.boundSessionRuntime
181
+ ),
182
+ routedBoundSessionErrorReceiver:
183
+ options.boundSessionRuntime?.receiveRoutedBoundSessionError.bind(
184
+ options.boundSessionRuntime
185
+ ),
186
+ actorPacketTargetProvider: options.boundSessionRuntime?.actorPacketTargetForState.bind(
187
+ options.boundSessionRuntime
188
+ ),
183
189
  messageSerializers: options.messageSerializers,
184
190
  providerResolver: options.providerResolver,
185
191
  dispatchErrors: options.dispatchErrors,
@@ -229,27 +235,37 @@ export class ZLinkSpotActorJoinDispatch {
229
235
  return;
230
236
  }
231
237
  if (info.event === ZLinkBackendSpotDispatchEvent.ChannelReplyReadable) {
232
- if (info.subjectKind === ZLINK_SPOT_DISPATCH_SUBJECT_CHANNEL_DEALER &&
233
- info.subjectHandle !== undefined) {
238
+ if (
239
+ info.subjectKind === ZLINK_SPOT_DISPATCH_SUBJECT_CHANNEL_DEALER &&
240
+ info.subjectHandle !== undefined
241
+ ) {
234
242
  this.nativeSpot.drainChannelReply(info.subjectHandle);
235
243
  return;
236
244
  }
237
- if (info.subjectKind === ZLINK_SPOT_DISPATCH_SUBJECT_SPOT ||
238
- info.subjectKind === undefined) {
245
+ if (
246
+ info.subjectKind === ZLINK_SPOT_DISPATCH_SUBJECT_SPOT ||
247
+ info.subjectKind === undefined
248
+ ) {
239
249
  this.nativeSpot.drainReply();
240
250
  }
241
251
  return;
242
252
  }
243
253
  if (info.event === ZLinkBackendSpotDispatchEvent.RoutedReadable) {
244
254
  if (info.routed !== undefined && info.routed !== null) {
245
- this.runDetached('spot routed frame dispatch', () => this.routedFrames.dispatchFromEvent(info.routed!));
255
+ this.runDetached('spot routed frame dispatch', () =>
256
+ this.routedFrames.dispatchFromEvent(info.routed!)
257
+ );
246
258
  }
247
259
  return;
248
260
  }
249
261
  if (info.event === ZLinkBackendSpotDispatchEvent.ActorReadable) {
250
- this.runDetached('spot actor packet drain', () => this.actorPacketDrain.drain(info as unknown as {
251
- recvActorPart(flags?: number): ZLinkActorDispatchPart | null;
252
- }));
262
+ this.runDetached('spot actor packet drain', () =>
263
+ this.actorPacketDrain.drain(
264
+ info as unknown as {
265
+ recvActorPart(flags?: number): ZLinkActorDispatchPart | null;
266
+ }
267
+ )
268
+ );
253
269
  return;
254
270
  }
255
271
  if (info.event === ZLinkBackendSpotDispatchEvent.ActorLifecycleReadable) {
@@ -1,8 +1,5 @@
1
1
  import type { ZLinkActor } from '../../contracts';
2
- import type {
3
- ZLinkBackendActorRef,
4
- ZLinkBackendSpot
5
- } from '../backend/contracts';
2
+ import type { ZLinkBackendActorRef, ZLinkBackendSpot } from '../backend/contracts';
6
3
  import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
7
4
  import { ZLINK_RECV_DONT_WAIT } from './spot-native-flags';
8
5
 
@@ -47,9 +44,10 @@ export class ZLinkSpotActorLifecycleDrain {
47
44
  await this.options.waitIdle();
48
45
  return;
49
46
  }
50
- const actorRef = event.kind === ZLINK_SPOT_ACTOR_LIFECYCLE_LEFT
51
- ? event.info.previousActor
52
- : event.info.currentActor;
47
+ const actorRef =
48
+ event.kind === ZLINK_SPOT_ACTOR_LIFECYCLE_LEFT
49
+ ? event.info.previousActor
50
+ : event.info.currentActor;
53
51
  const actorId = actorRef?.actorId;
54
52
  if (actorId === undefined || this.options.resolveActor(actorId) === undefined) {
55
53
  continue;
@@ -10,17 +10,10 @@ import { ZLinkEncodedPayload, ZLinkMessage } from '../../contracts';
10
10
  import { throwIfAborted } from '../abort';
11
11
  import type { Message } from '../../contracts/Common/Message';
12
12
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
13
- import {
14
- ZLinkConfigurationException
15
- } from '../configuration';
13
+ import { ZLinkConfigurationException } from '../configuration';
16
14
  import { ZLinkDispatchErrorReporter } from '../channels';
17
- import {
18
- ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME,
19
- ZLinkSpotActorDispatcher
20
- } from '../actors';
21
- import {
22
- encodeFrameworkPayloadMessage
23
- } from '../messaging/payload-codec';
15
+ import { ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME, ZLinkSpotActorDispatcher } from '../actors';
16
+ import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
24
17
  import { routingIdsEqual } from '../routing-id';
25
18
  import type { ZLinkSpotActivation } from './spot-activation-state';
26
19
  import type { ZLinkSpotActorTransferRuntime } from './spot-runtime-ports';
@@ -55,7 +48,9 @@ export class ZLinkSpotActorMembership {
55
48
  spotId: RoutingId,
56
49
  actor: ZLinkActor,
57
50
  request: Message,
58
- commit: (spot: ZLinkSpot) => Promise<ZLinkActorJoinRollback | void> | ZLinkActorJoinRollback | void,
51
+ commit: (
52
+ spot: ZLinkSpot
53
+ ) => Promise<ZLinkActorJoinRollback | void> | ZLinkActorJoinRollback | void,
59
54
  signal?: AbortSignal,
60
55
  leaveSource?: () => Promise<void>,
61
56
  contentType = 'application/json'
@@ -93,9 +88,10 @@ export class ZLinkSpotActorMembership {
93
88
  }
94
89
  return {
95
90
  accepted: response.accepted,
96
- reply: response.reply === undefined
97
- ? undefined
98
- : encodeFrameworkPayloadMessage(response.reply, this.options.messageSerializers)
91
+ reply:
92
+ response.reply === undefined
93
+ ? undefined
94
+ : encodeFrameworkPayloadMessage(response.reply, this.options.messageSerializers)
99
95
  };
100
96
  }
101
97
 
@@ -112,19 +108,23 @@ export class ZLinkSpotActorMembership {
112
108
  this.options.entryNodeRidProvider?.() ??
113
109
  this.options.entryNodeRid ??
114
110
  this.options.nodeRid;
115
- const entrySpotId = meshName === undefined
116
- ? undefined
117
- : this.options.entrySpotIdProvider?.(meshName);
118
- const resolvedEntry = entrySpotId === undefined
119
- ? undefined
120
- : await this.options.spotRouteResolver?.resolve(entrySpotId, signal);
121
- const entryNodeRid = resolvedEntry?.targetNodeRid ??
111
+ const entrySpotId =
112
+ meshName === undefined ? undefined : this.options.entrySpotIdProvider?.(meshName);
113
+ const resolvedEntry =
114
+ entrySpotId === undefined
115
+ ? undefined
116
+ : await this.options.spotRouteResolver?.resolve(entrySpotId, signal);
117
+ const entryNodeRid =
118
+ resolvedEntry?.targetNodeRid ??
122
119
  this.options.actorTransferRuntime?.actorEntryNodeRid(actor) ??
123
120
  localEntryNodeRid;
124
121
  if (entryNodeRid === undefined) {
125
- throw new ZLinkConfigurationException('Spot actor leave requires an Entry Spot node routing id.');
122
+ throw new ZLinkConfigurationException(
123
+ 'Spot actor leave requires an Entry Spot node routing id.'
124
+ );
126
125
  }
127
- const remoteEntry = localEntryNodeRid !== undefined && !routingIdsEqual(entryNodeRid, localEntryNodeRid);
126
+ const remoteEntry =
127
+ localEntryNodeRid !== undefined && !routingIdsEqual(entryNodeRid, localEntryNodeRid);
128
128
  if (!remoteEntry) {
129
129
  const leaveSource = async () => {
130
130
  activation.beginActorTransfer(actor.context.actorId);
@@ -149,7 +149,7 @@ export class ZLinkSpotActorMembership {
149
149
  request: unknown,
150
150
  signal?: AbortSignal
151
151
  ): Promise<boolean>;
152
- };
152
+ };
153
153
  const joinEntry = context[ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME](
154
154
  entryNodeRid,
155
155
  ZLinkMessage.fromEncoded(ZLinkEncodedPayload.from(request.data())),
@@ -184,7 +184,6 @@ export class ZLinkSpotActorMembership {
184
184
  });
185
185
  }
186
186
 
187
-
188
187
  async prepareActorLeaveForTransfer(
189
188
  spotId: RoutingId,
190
189
  actor: ZLinkActor,
@@ -241,8 +240,7 @@ export class ZLinkSpotActorMembership {
241
240
  if (joinedActor === undefined) {
242
241
  return false;
243
242
  }
244
- await activation.serial.execute(() =>
245
- activation.spot.onDisconnectActor?.(joinedActor));
243
+ await activation.serial.execute(() => activation.spot.onDisconnectActor?.(joinedActor));
246
244
  return true;
247
245
  }
248
246