@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
@@ -14,9 +14,7 @@ import {
14
14
  ZLinkDispatchMessageKind
15
15
  } from '../../contracts/Dispatch/ZLinkDispatchOptions';
16
16
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
17
- import type {
18
- ZLinkBackendReceived as BackendReceived
19
- } from '../backend/runtime-values';
17
+ import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
20
18
  import type { Message } from '../../contracts/Common/Message';
21
19
  import type { ZLinkDispatchErrorReporter } from '../channels';
22
20
  import {
@@ -41,11 +39,7 @@ import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
41
39
  import type { ZLinkApplicationWorkClaim } from '../admission';
42
40
  import { zlinkMetadataByteLength, zlinkSerialWorkOptions } from '../execution/serial-work-size';
43
41
  import { REMOTE_ACTOR_JOIN_PACKET } from './spot-remote-codec';
44
- import {
45
- appendRouteReplyParts,
46
- hasReplyToken,
47
- submitRouteReply
48
- } from './spot-route-replies';
42
+ import { appendRouteReplyParts, hasReplyToken, submitRouteReply } from './spot-route-replies';
49
43
  import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
50
44
  import {
51
45
  ZLinkFrameworkInternalErrorKind,
@@ -115,9 +109,7 @@ export class ZLinkSpotRoutePacketDispatch {
115
109
  }
116
110
  const registrations = this.options.packetHandlers.get(envelope.packetName ?? '');
117
111
  const replyable = hasReplyToken(received.replyToken);
118
- const action = replyable
119
- ? ZLinkDispatchErrorAction.ReplyError
120
- : ZLinkDispatchErrorAction.Drop;
112
+ const action = replyable ? ZLinkDispatchErrorAction.ReplyError : ZLinkDispatchErrorAction.Drop;
121
113
  if (registrations === undefined || registrations.length === 0) {
122
114
  this.options.dispatchErrors?.report({
123
115
  surface: ZLinkDispatchErrorSurface.SpotRoute,
@@ -136,14 +128,16 @@ export class ZLinkSpotRoutePacketDispatch {
136
128
  // D5: this error is generated by the framework itself, so the reply
137
129
  // carries the framework-origin marker (never set for application
138
130
  // handler failures).
139
- submitRouteReply(appendRouteReplyParts(
140
- received.reply(),
141
- encodeChannelErrorReplyParts(
142
- envelope.header,
143
- `SPOT route handler not found: ${envelope.packetName}`,
144
- FRAMEWORK_ORIGIN_REPLY_METADATA
131
+ submitRouteReply(
132
+ appendRouteReplyParts(
133
+ received.reply(),
134
+ encodeChannelErrorReplyParts(
135
+ envelope.header,
136
+ `SPOT route handler not found: ${envelope.packetName}`,
137
+ FRAMEWORK_ORIGIN_REPLY_METADATA
138
+ )
145
139
  )
146
- ));
140
+ );
147
141
  }
148
142
  return true;
149
143
  }
@@ -158,43 +152,56 @@ export class ZLinkSpotRoutePacketDispatch {
158
152
  let response: unknown;
159
153
  const applicationClaim = this.options.claimApplicationWork?.();
160
154
  try {
161
- await runWithFlow(createInboundFlow(
162
- envelope.header.flowId,
163
- envelope.header.flowOrigin,
164
- this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true
165
- ), () =>
166
- this.options.serial.execute(async () => {
167
- const spot = this.options.getTarget();
168
- // Keep the wire payload raw until this Spot has acquired its
169
- // execution authority. A rejected or superseded work item must not
170
- // pay the deserialization cost.
171
- const payload = decodeChannelPayload(envelope, this.channelCodecs());
172
- for (const registration of registrations) {
173
- const handler = await resolveLifecycleHandler(
174
- spot,
175
- registration.handlerType as Type<ZLinkSpotPacketHandler<ZLinkSpot, unknown> | ZLinkSpotRequestHandler<ZLinkSpot, unknown, unknown>>,
176
- this.options.providerResolver
177
- );
178
- releaseApplicationJobPermitBeforeHandler();
179
- response = await handler.handle(spot, payload, context);
180
- }
181
- }, zlinkSerialWorkOptions(
182
- envelope.payload.byteLength,
183
- zlinkMetadataByteLength(envelope.header.metadata)
184
- )));
155
+ await runWithFlow(
156
+ createInboundFlow(
157
+ envelope.header.flowId,
158
+ envelope.header.flowOrigin,
159
+ this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true,
160
+ undefined
161
+ ),
162
+ () =>
163
+ this.options.serial.execute(
164
+ async () => {
165
+ const spot = this.options.getTarget();
166
+ // Keep the wire payload raw until this Spot has acquired its
167
+ // execution authority. A rejected or superseded work item must not
168
+ // pay the deserialization cost.
169
+ const payload = decodeChannelPayload(envelope, this.channelCodecs());
170
+ for (const registration of registrations) {
171
+ const handler = await resolveLifecycleHandler(
172
+ spot,
173
+ registration.handlerType as Type<
174
+ | ZLinkSpotPacketHandler<ZLinkSpot, unknown>
175
+ | ZLinkSpotRequestHandler<ZLinkSpot, unknown, unknown>
176
+ >,
177
+ this.options.providerResolver
178
+ );
179
+ releaseApplicationJobPermitBeforeHandler();
180
+ response = await handler.handle(spot, payload, context);
181
+ }
182
+ },
183
+ zlinkSerialWorkOptions(
184
+ envelope.payload.byteLength,
185
+ zlinkMetadataByteLength(envelope.header.metadata)
186
+ )
187
+ )
188
+ );
185
189
  } finally {
186
190
  applicationClaim?.close();
187
191
  }
188
192
  if (replyable) {
189
- submitRouteReply(appendRouteReplyParts(
190
- received.reply(),
191
- encodeChannelReplyParts(envelope.header, response)
192
- ));
193
+ submitRouteReply(
194
+ appendRouteReplyParts(
195
+ received.reply(),
196
+ encodeChannelReplyParts(envelope.header, response)
197
+ )
198
+ );
193
199
  }
194
200
  return true;
195
201
  } catch (error) {
196
- const payloadDecodeFailed = error instanceof ZLinkFrameworkException
197
- && internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed;
202
+ const payloadDecodeFailed =
203
+ error instanceof ZLinkFrameworkException &&
204
+ internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed;
198
205
  this.options.dispatchErrors?.report({
199
206
  surface: ZLinkDispatchErrorSurface.SpotRoute,
200
207
  messageKind: replyable ? ZLinkDispatchMessageKind.Request : ZLinkDispatchMessageKind.Send,
@@ -215,14 +222,16 @@ export class ZLinkSpotRoutePacketDispatch {
215
222
  // D5: only a decode failure created by the framework's own payload
216
223
  // decoding carries the framework-origin marker; application handler
217
224
  // failures never do.
218
- submitRouteReply(appendRouteReplyParts(
219
- received.reply(),
220
- encodeChannelErrorReplyParts(
221
- envelope.header,
222
- error,
223
- payloadDecodeFailed ? FRAMEWORK_ORIGIN_REPLY_METADATA : undefined
225
+ submitRouteReply(
226
+ appendRouteReplyParts(
227
+ received.reply(),
228
+ encodeChannelErrorReplyParts(
229
+ envelope.header,
230
+ error,
231
+ payloadDecodeFailed ? FRAMEWORK_ORIGIN_REPLY_METADATA : undefined
232
+ )
224
233
  )
225
- ));
234
+ );
226
235
  }
227
236
  return true;
228
237
  }
@@ -232,8 +241,11 @@ export class ZLinkSpotRoutePacketDispatch {
232
241
  received: BackendReceived,
233
242
  envelope: ZLinkSpotDirectEnvelope
234
243
  ): Promise<void> {
235
- const replyable = envelope.kind === ZLinkChannelMessageKind.Request && hasReplyToken(received.replyToken);
236
- const messageKind = replyable ? ZLinkDispatchMessageKind.Request : ZLinkDispatchMessageKind.Send;
244
+ const replyable =
245
+ envelope.kind === ZLinkChannelMessageKind.Request && hasReplyToken(received.replyToken);
246
+ const messageKind = replyable
247
+ ? ZLinkDispatchMessageKind.Request
248
+ : ZLinkDispatchMessageKind.Send;
237
249
  const action = replyable ? ZLinkDispatchErrorAction.ReplyError : ZLinkDispatchErrorAction.Drop;
238
250
  const registrations = this.options.packetHandlers.get(envelope.packetName ?? '');
239
251
  if (registrations === undefined || registrations.length === 0) {
@@ -247,39 +259,49 @@ export class ZLinkSpotRoutePacketDispatch {
247
259
  });
248
260
  if (replyable) {
249
261
  submitRouteReply(
250
- received.reply()
251
- .message(encodeSpotDirectReply(false, undefined, `SPOT route handler not found: ${envelope.packetName}`))
262
+ received
263
+ .reply()
264
+ .message(
265
+ encodeSpotDirectReply(
266
+ false,
267
+ undefined,
268
+ `SPOT route handler not found: ${envelope.packetName}`
269
+ )
270
+ )
252
271
  );
253
272
  }
254
273
  return;
255
274
  }
256
275
  try {
257
276
  let response: unknown;
258
- await this.options.serial.execute(async () => {
259
- const spot = this.options.getTarget();
260
- for (const registration of registrations) {
261
- const handler = await resolveLifecycleHandler(
262
- spot,
263
- registration.handlerType as Type<ZLinkSpotPacketHandler<ZLinkSpot, unknown> | ZLinkSpotRequestHandler<ZLinkSpot, unknown, unknown>>,
264
- this.options.providerResolver
265
- );
266
- releaseApplicationJobPermitBeforeHandler();
267
- response = await handler.handle(spot, envelope.payload, {
268
- channelName: envelope.channelName,
269
- packetName: envelope.packetName!,
270
- metadata: zlinkMessageMetadata(envelope.metadata),
271
- correlationId: undefined
272
- });
273
- }
274
- }, zlinkSerialWorkOptions(
275
- received.parts[0]?.size() ?? 0,
276
- zlinkMetadataByteLength(envelope.metadata)
277
- ));
277
+ await this.options.serial.execute(
278
+ async () => {
279
+ const spot = this.options.getTarget();
280
+ for (const registration of registrations) {
281
+ const handler = await resolveLifecycleHandler(
282
+ spot,
283
+ registration.handlerType as Type<
284
+ | ZLinkSpotPacketHandler<ZLinkSpot, unknown>
285
+ | ZLinkSpotRequestHandler<ZLinkSpot, unknown, unknown>
286
+ >,
287
+ this.options.providerResolver
288
+ );
289
+ releaseApplicationJobPermitBeforeHandler();
290
+ response = await handler.handle(spot, envelope.payload, {
291
+ channelName: envelope.channelName,
292
+ packetName: envelope.packetName!,
293
+ metadata: zlinkMessageMetadata(envelope.metadata),
294
+ correlationId: undefined
295
+ });
296
+ }
297
+ },
298
+ zlinkSerialWorkOptions(
299
+ received.parts[0]?.size() ?? 0,
300
+ zlinkMetadataByteLength(envelope.metadata)
301
+ )
302
+ );
278
303
  if (replyable) {
279
- submitRouteReply(
280
- received.reply()
281
- .message(encodeSpotDirectReply(true, response))
282
- );
304
+ submitRouteReply(received.reply().message(encodeSpotDirectReply(true, response)));
283
305
  }
284
306
  } catch (error) {
285
307
  this.options.dispatchErrors?.report({
@@ -293,8 +315,15 @@ export class ZLinkSpotRoutePacketDispatch {
293
315
  });
294
316
  if (replyable) {
295
317
  submitRouteReply(
296
- received.reply()
297
- .message(encodeSpotDirectReply(false, undefined, error instanceof Error ? error.message : String(error)))
318
+ received
319
+ .reply()
320
+ .message(
321
+ encodeSpotDirectReply(
322
+ false,
323
+ undefined,
324
+ error instanceof Error ? error.message : String(error)
325
+ )
326
+ )
298
327
  );
299
328
  return;
300
329
  }
@@ -324,16 +353,17 @@ function decodeSpotDirectEnvelope(parts: readonly Message[]): ZLinkSpotDirectEnv
324
353
  };
325
354
  if (
326
355
  decoded.marker !== SPOT_DIRECT_ENVELOPE ||
327
- (decoded.kind !== ZLinkChannelMessageKind.Request && decoded.kind !== ZLinkChannelMessageKind.Command) ||
356
+ (decoded.kind !== ZLinkChannelMessageKind.Request &&
357
+ decoded.kind !== ZLinkChannelMessageKind.Command) ||
328
358
  typeof decoded.channelName !== 'string'
329
359
  ) {
330
360
  return undefined;
331
361
  }
332
362
  const metadata = decoded.metadata ?? {};
333
363
  if (
334
- typeof metadata !== 'object'
335
- || Array.isArray(metadata)
336
- || !Object.values(metadata).every(value => typeof value === 'string')
364
+ typeof metadata !== 'object' ||
365
+ Array.isArray(metadata) ||
366
+ !Object.values(metadata).every((value) => typeof value === 'string')
337
367
  ) {
338
368
  return undefined;
339
369
  }
@@ -350,10 +380,14 @@ function decodeSpotDirectEnvelope(parts: readonly Message[]): ZLinkSpotDirectEnv
350
380
  }
351
381
 
352
382
  function encodeSpotDirectReply(ok: boolean, response?: unknown, error?: string): Message {
353
- return RuntimeMessage.fromOwned(Buffer.from(JSON.stringify({
354
- marker: SPOT_DIRECT_ENVELOPE,
355
- ok,
356
- response,
357
- error
358
- })));
383
+ return RuntimeMessage.fromOwned(
384
+ Buffer.from(
385
+ JSON.stringify({
386
+ marker: SPOT_DIRECT_ENVELOPE,
387
+ ok,
388
+ response,
389
+ error
390
+ })
391
+ )
392
+ );
359
393
  }
@@ -34,15 +34,11 @@ export function submitRoutePayloadReply(
34
34
  payload: unknown
35
35
  ): boolean {
36
36
  if (envelope === undefined) {
37
- return submitRouteReply(
38
- received.reply()
39
- .message(Buffer.from(JSON.stringify(payload)))
40
- );
37
+ return submitRouteReply(received.reply().message(Buffer.from(JSON.stringify(payload))));
41
38
  }
42
- return submitRouteReply(appendRouteReplyParts(
43
- received.reply(),
44
- encodeChannelReplyParts(envelope.header, payload)
45
- ));
39
+ return submitRouteReply(
40
+ appendRouteReplyParts(received.reply(), encodeChannelReplyParts(envelope.header, payload))
41
+ );
46
42
  }
47
43
 
48
44
  export function submitSpotRouteBridgeReply(
@@ -59,15 +55,14 @@ export function submitRoutedActorJoinReply(
59
55
  payload: unknown
60
56
  ): boolean {
61
57
  if (decoded.raw) {
62
- return submitRouteReply(
63
- received.reply()
64
- .message(Buffer.from(JSON.stringify(payload)))
65
- );
58
+ return submitRouteReply(received.reply().message(Buffer.from(JSON.stringify(payload))));
66
59
  }
67
- return submitRouteReply(appendRouteReplyParts(
68
- received.reply(),
69
- encodeChannelReplyParts(requireRoutedActorJoinEnvelope(decoded).header, payload)
70
- ));
60
+ return submitRouteReply(
61
+ appendRouteReplyParts(
62
+ received.reply(),
63
+ encodeChannelReplyParts(requireRoutedActorJoinEnvelope(decoded).header, payload)
64
+ )
65
+ );
71
66
  }
72
67
 
73
68
  export function submitRoutedActorJoinError(
@@ -83,13 +78,15 @@ export function submitRoutedActorJoinError(
83
78
  actorGeneration: '0'
84
79
  });
85
80
  }
86
- return submitRouteReply(appendRouteReplyParts(
87
- received.reply(),
88
- encodeChannelErrorReplyParts(
89
- requireRoutedActorJoinEnvelope(decoded).header,
90
- error instanceof Error ? error.message : String(error)
81
+ return submitRouteReply(
82
+ appendRouteReplyParts(
83
+ received.reply(),
84
+ encodeChannelErrorReplyParts(
85
+ requireRoutedActorJoinEnvelope(decoded).header,
86
+ error instanceof Error ? error.message : String(error)
87
+ )
91
88
  )
92
- ));
89
+ );
93
90
  }
94
91
 
95
92
  export function appendRouteReplyParts(
@@ -120,7 +117,9 @@ function requireRoutedActorJoinEnvelope(
120
117
  }
121
118
 
122
119
  function isNativeBadAddress(error: unknown): boolean {
123
- return typeof error === 'object' &&
120
+ return (
121
+ typeof error === 'object' &&
124
122
  error !== null &&
125
- Number((error as { nativeErrno?: unknown }).nativeErrno) === 14;
123
+ Number((error as { nativeErrno?: unknown }).nativeErrno) === 14
124
+ );
126
125
  }
@@ -9,7 +9,8 @@ export interface ZLinkSpotRouteBridgeReplyPayload {
9
9
  readonly actorPacketTarget?: ZLinkRemoteActorPacketTargetWire;
10
10
  }
11
11
 
12
- export function encodeSpotRouteBridgeReply(payload: ZLinkSpotRouteBridgeReplyPayload): ZLinkSpotRouteBridgeReplyPayload {
12
+ export function encodeSpotRouteBridgeReply(
13
+ payload: ZLinkSpotRouteBridgeReplyPayload
14
+ ): ZLinkSpotRouteBridgeReplyPayload {
13
15
  return payload;
14
16
  }
15
-
@@ -26,10 +26,7 @@ import {
26
26
  type ZLinkRoutedActorTransferProvider,
27
27
  type ZLinkRemoteActorJoinWirePayload
28
28
  } from './spot-remote-codec';
29
- import {
30
- submitRoutedActorJoinError,
31
- submitRoutedActorJoinReply
32
- } from './spot-route-replies';
29
+ import { submitRoutedActorJoinError, submitRoutedActorJoinReply } from './spot-route-replies';
33
30
  import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
34
31
  import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
35
32
 
@@ -107,8 +104,9 @@ export class ZLinkSpotRoutedActorAdmission {
107
104
  const existing = this.pending.get(decoded.transferId);
108
105
  if (existing !== undefined) {
109
106
  this.requireMatchingTransfer(existing, decoded);
110
- const reply = existing.admissionReply ?? await existing.admissionTask;
111
- if (reply === undefined) throw new Error(`Remote actor transfer '${decoded.transferId}' has no admission result.`);
107
+ const reply = existing.admissionReply ?? (await existing.admissionTask);
108
+ if (reply === undefined)
109
+ throw new Error(`Remote actor transfer '${decoded.transferId}' has no admission result.`);
112
110
  submitRoutedActorJoinReply(received, decoded, reply);
113
111
  return;
114
112
  }
@@ -138,8 +136,14 @@ export class ZLinkSpotRoutedActorAdmission {
138
136
  throw new Error('Remote actor transfer commit requires a transfer id.');
139
137
  }
140
138
  const pending = this.pending.get(transferId);
141
- if (pending === undefined || pending.actorId !== decoded.actorId || pending.actorType !== decoded.actorType) {
142
- throw new Error(`Remote actor transfer '${transferId}' does not have a matching admission.`);
139
+ if (
140
+ pending === undefined ||
141
+ pending.actorId !== decoded.actorId ||
142
+ pending.actorType !== decoded.actorType
143
+ ) {
144
+ throw new Error(
145
+ `Remote actor transfer '${transferId}' does not have a matching admission.`
146
+ );
143
147
  }
144
148
  if (pending.phase === 'rejected') {
145
149
  throw new Error(`Remote actor transfer '${transferId}' admission was rejected.`);
@@ -152,7 +156,7 @@ export class ZLinkSpotRoutedActorAdmission {
152
156
  if (pending.deadline !== undefined) clearTimeout(pending.deadline);
153
157
  pending.commitTask = this.evaluateCommit(decoded, transferId, pending);
154
158
  }
155
- const commitReply = pending.commitReply ?? await pending.commitTask;
159
+ const commitReply = pending.commitReply ?? (await pending.commitTask);
156
160
  submitRoutedActorJoinReply(received, decoded, commitReply);
157
161
  } catch (error) {
158
162
  submitRoutedActorJoinError(received, decoded, error);
@@ -167,15 +171,17 @@ export class ZLinkSpotRoutedActorAdmission {
167
171
  ): Promise<Record<string, unknown>> {
168
172
  try {
169
173
  const response = await this.runJoinCallback(decoded, decoded.request);
170
- const reply = response.reply === undefined
171
- ? undefined
172
- : encodeFrameworkPayloadMessage(response.reply, this.options.messageSerializers);
174
+ const reply =
175
+ response.reply === undefined
176
+ ? undefined
177
+ : encodeFrameworkPayloadMessage(response.reply, this.options.messageSerializers);
173
178
  try {
174
179
  const actorRef = decoded.actorRef;
175
180
  const admissionReply = {
176
181
  accepted: response.accepted,
177
182
  actorNodeRid: String(actorRef?.nodeRid ?? ''),
178
- actorNodeRidHex: actorRef?.nodeRid === undefined ? undefined : encodeRoutingIdHex(actorRef.nodeRid),
183
+ actorNodeRidHex:
184
+ actorRef?.nodeRid === undefined ? undefined : encodeRoutingIdHex(actorRef.nodeRid),
179
185
  actorId: decoded.actorId,
180
186
  actorGeneration: (actorRef?.generation ?? 0n).toString(),
181
187
  reply: reply?.data().toString('base64')
@@ -199,7 +205,10 @@ export class ZLinkSpotRoutedActorAdmission {
199
205
  pending: ZLinkPendingRoutedActorTransfer
200
206
  ): Promise<Record<string, unknown>> {
201
207
  try {
202
- if (decoded.transferState === undefined || this.options.routedActorTransferProvider === undefined) {
208
+ if (
209
+ decoded.transferState === undefined ||
210
+ this.options.routedActorTransferProvider === undefined
211
+ ) {
203
212
  throw new Error('Remote actor transfer commit cannot materialize the target actor.');
204
213
  }
205
214
  const { actor, actorRef } = await this.options.routedActorTransferProvider(
@@ -210,7 +219,8 @@ export class ZLinkSpotRoutedActorAdmission {
210
219
  decoded.actorEntryNodeRid,
211
220
  decoded.remoteBoundSessionTarget
212
221
  );
213
- const handoffResults = await this.options.commitTransferredActor?.(actor, decoded.handoffBacklog) ?? [];
222
+ const handoffResults =
223
+ (await this.options.commitTransferredActor?.(actor, decoded.handoffBacklog)) ?? [];
214
224
  const commitReply = {
215
225
  accepted: true,
216
226
  actorNodeRid: String(actorRef.nodeRid),
@@ -258,18 +268,17 @@ export class ZLinkSpotRoutedActorAdmission {
258
268
  decoded: ZLinkDecodedRemoteActorJoinRequest
259
269
  ): void {
260
270
  if (pending.actorId !== decoded.actorId || pending.actorType !== decoded.actorType) {
261
- throw new Error(`Remote actor transfer '${decoded.transferId}' identity does not match its first request.`);
271
+ throw new Error(
272
+ `Remote actor transfer '${decoded.transferId}' identity does not match its first request.`
273
+ );
262
274
  }
263
275
  }
264
276
 
265
277
  private scheduleExpiration(transferId: string, pending: ZLinkPendingRoutedActorTransfer): void {
266
278
  if (pending.deadline !== undefined) clearTimeout(pending.deadline);
267
- pending.deadline = setTimeout(
268
- () => {
269
- if (this.pending.get(transferId) === pending) this.pending.delete(transferId);
270
- },
271
- this.options.pendingAdmissionTimeoutMs ?? 30_000
272
- );
279
+ pending.deadline = setTimeout(() => {
280
+ if (this.pending.get(transferId) === pending) this.pending.delete(transferId);
281
+ }, this.options.pendingAdmissionTimeoutMs ?? 30_000);
273
282
  pending.deadline.unref();
274
283
  }
275
284
 
@@ -289,10 +298,7 @@ export class ZLinkSpotRoutedActorAdmission {
289
298
  }
290
299
  try {
291
300
  const payload = JSON.parse(parts[0].data().toString()) as ZLinkRemoteActorJoinWirePayload;
292
- if (
293
- payload.packetName !== REMOTE_ACTOR_JOIN_PACKET ||
294
- !isRemoteActorJoinPayload(payload)
295
- ) {
301
+ if (payload.packetName !== REMOTE_ACTOR_JOIN_PACKET || !isRemoteActorJoinPayload(payload)) {
296
302
  return undefined;
297
303
  }
298
304
  return decodeRemoteActorJoinPayload(
@@ -306,7 +312,11 @@ export class ZLinkSpotRoutedActorAdmission {
306
312
  }
307
313
  }
308
314
  try {
309
- const envelope = decodeChannelEnvelope(parts, undefined, this.options.flowEnabled?.() ?? true);
315
+ const envelope = decodeChannelEnvelope(
316
+ parts,
317
+ undefined,
318
+ this.options.flowEnabled?.() ?? true
319
+ );
310
320
  if (envelope.packetName !== REMOTE_ACTOR_JOIN_PACKET) {
311
321
  return undefined;
312
322
  }
@@ -6,11 +6,7 @@ import {
6
6
  decodeRemoteBoundSessionResponse,
7
7
  decodeRemoteBoundSessionSend
8
8
  } from './spot-remote-route-codec';
9
- import {
10
- hasReplyToken,
11
- submitRoutePayloadReply,
12
- submitRouteReply
13
- } from './spot-route-replies';
9
+ import { hasReplyToken, submitRoutePayloadReply, submitRouteReply } from './spot-route-replies';
14
10
  import type { ZLinkActorResponseOptions } from './spot-actor-packet-dispatch';
15
11
  import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
16
12
  import type { ZLinkDispatchErrorReporter } from '../channels';
@@ -61,16 +57,18 @@ export class ZLinkSpotRoutedBoundSessionDispatch {
61
57
  createInboundFlow(
62
58
  boundSessionSend.flowId ?? boundSessionSend.envelope?.header.flowId,
63
59
  boundSessionSend.flowOrigin ?? boundSessionSend.envelope?.header.flowOrigin,
64
- this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true
60
+ this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true,
61
+ undefined
65
62
  ),
66
- () => this.options.routedBoundSessionReceiver?.(
67
- boundSessionSend.actorId,
68
- boundSessionSend.message,
69
- boundSessionSend.packetName,
70
- boundSessionSend.metadata,
71
- boundSessionSend.actorRef,
72
- boundSessionSend.actorPacketTarget
73
- )
63
+ () =>
64
+ this.options.routedBoundSessionReceiver?.(
65
+ boundSessionSend.actorId,
66
+ boundSessionSend.message,
67
+ boundSessionSend.packetName,
68
+ boundSessionSend.metadata,
69
+ boundSessionSend.actorRef,
70
+ boundSessionSend.actorPacketTarget
71
+ )
74
72
  );
75
73
  if (hasReplyToken(received.replyToken)) {
76
74
  submitRoutePayloadReply(received, boundSessionSend.envelope, { ok: true });
@@ -124,9 +122,6 @@ export class ZLinkSpotRoutedBoundSessionDispatch {
124
122
  if (!hasReplyToken(received.replyToken)) {
125
123
  return;
126
124
  }
127
- submitRouteReply(
128
- received.reply()
129
- .message(Buffer.from(JSON.stringify({ ok: true })))
130
- );
125
+ submitRouteReply(received.reply().message(Buffer.from(JSON.stringify({ ok: true }))));
131
126
  }
132
127
  }