@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
@@ -37,26 +37,25 @@ class ZLinkSpotActivationRegistry {
37
37
  : this.activations.get(key);
38
38
  }
39
39
  resolveUnique(spotId) {
40
- const matches = [...this.activations.values()]
41
- .filter((activation) => String(activation.spotId) === String(spotId)
42
- && !this.staged.has(spotActivationKey(activation.meshName, activation.spotId))
43
- && !this.closing.has(spotActivationKey(activation.meshName, activation.spotId))
44
- && !this.failedClose.has(spotActivationKey(activation.meshName, activation.spotId)));
40
+ const matches = [...this.activations.values()].filter((activation) => String(activation.spotId) === String(spotId) &&
41
+ !this.staged.has(spotActivationKey(activation.meshName, activation.spotId)) &&
42
+ !this.closing.has(spotActivationKey(activation.meshName, activation.spotId)) &&
43
+ !this.failedClose.has(spotActivationKey(activation.meshName, activation.spotId)));
45
44
  return matches.length === 1 ? matches[0] : undefined;
46
45
  }
47
46
  has(meshName, spotId) {
48
47
  const key = spotActivationKey(meshName, spotId);
49
- return !this.staged.has(key)
50
- && !this.closing.has(key)
51
- && !this.failedClose.has(key)
52
- && this.activations.has(key);
48
+ return (!this.staged.has(key) &&
49
+ !this.closing.has(key) &&
50
+ !this.failedClose.has(key) &&
51
+ this.activations.has(key));
53
52
  }
54
53
  canClose(meshName, spotId) {
55
54
  const key = spotActivationKey(meshName, spotId);
56
- return !this.staged.has(key)
57
- && !this.closing.has(key)
58
- && !this.failedClose.has(key)
59
- && this.activations.get(key)?.canClose() === true;
55
+ return (!this.staged.has(key) &&
56
+ !this.closing.has(key) &&
57
+ !this.failedClose.has(key) &&
58
+ this.activations.get(key)?.canClose() === true);
60
59
  }
61
60
  list(meshName) {
62
61
  return [...this.activations.values()]
@@ -169,7 +168,9 @@ class ZLinkSpotActivationRegistry {
169
168
  let occupiedAfterQuiescence = false;
170
169
  const ready = Promise.resolve()
171
170
  .then(() => close(activation))
172
- .then(() => { completed = true; })
171
+ .then(() => {
172
+ completed = true;
173
+ })
173
174
  .catch((error) => {
174
175
  // The seal's post-quiescence recheck (spot-activation.ts
175
176
  // closeAfterSeal) found a new join and released the seal instead of
@@ -52,7 +52,9 @@ class ZLinkSpotActivation {
52
52
  this.spotType = options.spotType;
53
53
  this.spot = options.spot;
54
54
  this.serial = options.serial;
55
- this.serialExecutor = options.serialExecutor ?? new spot_serial_executor_1.ZLinkSpotSerialExecutor(this.serial, this.executionMode, options.spotId);
55
+ this.serialExecutor =
56
+ options.serialExecutor ??
57
+ new spot_serial_executor_1.ZLinkSpotSerialExecutor(this.serial, this.executionMode, options.spotId);
56
58
  this.executionBarrier = options.executionBarrier ?? new execution_1.ZLinkExecutionBarrier();
57
59
  this.serialExecutor.setExecutionBarrier(this.executionBarrier);
58
60
  if (typeof options.timers.setExecutionBarrier === 'function') {
@@ -66,9 +68,7 @@ class ZLinkSpotActivation {
66
68
  this.actorDispatch = options.actorDispatch;
67
69
  }
68
70
  get objectGeneration() {
69
- return this.domain.kind === 'instance'
70
- ? this.domain.objectGeneration
71
- : undefined;
71
+ return this.domain.kind === 'instance' ? this.domain.objectGeneration : undefined;
72
72
  }
73
73
  get executionMode() {
74
74
  return this.domain.kind === 'user'
@@ -83,15 +83,15 @@ class ZLinkSpotActivation {
83
83
  relocationReadyCall() {
84
84
  return {
85
85
  defer: () => {
86
- if (this.relocationCoordinationMode !== contracts_1.ZLinkSpotRelocationCoordinationMode.ApplicationSignaled) {
86
+ if (this.relocationCoordinationMode !==
87
+ contracts_1.ZLinkSpotRelocationCoordinationMode.ApplicationSignaled) {
87
88
  throw new configuration_1.ZLinkConfigurationException('relocationReady().defer() requires ApplicationSignaled relocation readiness.');
88
89
  }
89
90
  if (!this.serial.isCurrentTurn) {
90
91
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, 'relocationReady().defer() requires the current Spot handler turn.');
91
92
  }
92
93
  const turnId = this.serial.activeTurnId;
93
- if (this.relocationReadyDeferredTurnId === turnId
94
- || this.relocationBoundaryConsumed) {
94
+ if (this.relocationReadyDeferredTurnId === turnId || this.relocationBoundaryConsumed) {
95
95
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, 'relocationReady().defer() was already called for this boundary.');
96
96
  }
97
97
  this.relocationReadyDeferredTurnId = turnId;
@@ -106,7 +106,8 @@ class ZLinkSpotActivation {
106
106
  return;
107
107
  }
108
108
  const seal = this.executionBarrier.seal();
109
- void this.serial.postBarrierTurn(async () => {
109
+ void this.serial
110
+ .postBarrierTurn(async () => {
110
111
  try {
111
112
  await this.notifyRelocationReadyCompleted(contracts_1.ZLinkSpotRelocationReadyOutcome.Continued);
112
113
  }
@@ -114,7 +115,8 @@ class ZLinkSpotActivation {
114
115
  this.relocationReadyDeferredTurnId = undefined;
115
116
  this.executionBarrier.abort(seal);
116
117
  }
117
- }).catch(() => undefined);
118
+ })
119
+ .catch(() => undefined);
118
120
  }
119
121
  };
120
122
  }
@@ -274,12 +276,12 @@ class ZLinkSpotActivation {
274
276
  return this.idleEvictionRequested;
275
277
  }
276
278
  isIdleFor(nowMs, timeoutMs) {
277
- return !this.idleEvictionRequested
278
- && !this.closeRequested
279
- && !this.serial.isExecuting
280
- && !this.serial.hasPendingWork
281
- && !this.timers.hasActiveTimers
282
- && nowMs - this.serial.lastActivityAt >= timeoutMs;
279
+ return (!this.idleEvictionRequested &&
280
+ !this.closeRequested &&
281
+ !this.serial.isExecuting &&
282
+ !this.serial.hasPendingWork &&
283
+ !this.timers.hasActiveTimers &&
284
+ nowMs - this.serial.lastActivityAt >= timeoutMs);
283
285
  }
284
286
  async notifyRelocationReadyCompleted(outcome) {
285
287
  await this.spot.onRelocationReadyCompleted?.({ outcome });
@@ -27,7 +27,7 @@ class ZLinkSpotActivationLifecycle {
27
27
  }
28
28
  async materializeRelocation(meshName, objectKind, stableType, implementation, spotId, objectGeneration, authorityOwnerGeneration, signal) {
29
29
  const executionMode = objectKind === 'user_spot'
30
- ? this.options.userSpotExecutionMode?.(meshName, implementation) ?? contracts_1.ZLinkUserSpotExecutionMode.SpotWide
30
+ ? (this.options.userSpotExecutionMode?.(meshName, implementation) ?? contracts_1.ZLinkUserSpotExecutionMode.SpotWide)
31
31
  : contracts_1.ZLinkUserSpotExecutionMode.SpotWide;
32
32
  const serial = new spot_serial_turn_executor_1.ZLinkSpotSerialTurnExecutor(executionMode === contracts_1.ZLinkUserSpotExecutionMode.SpotWide, spotId);
33
33
  const serialExecutor = new spot_serial_executor_1.ZLinkSpotSerialExecutor(serial, executionMode, spotId);
@@ -190,7 +190,7 @@ class ZLinkSpotActivationLifecycle {
190
190
  timers,
191
191
  actorHandlers,
192
192
  handlers,
193
- externalActorCount: () => this.options.actorCountProvider?.(spotId) ?? 0,
193
+ externalActorCount: () => this.options.actorCountProvider?.(spotId) ?? 0
194
194
  });
195
195
  try {
196
196
  await instance.configure?.();
@@ -243,14 +243,14 @@ class ZLinkSpotActivationLifecycle {
243
243
  }
244
244
  resourcesReleased(activation) {
245
245
  const state = this.cleanupStates.get(activation);
246
- return state?.timersDisposed === true &&
246
+ return (state?.timersDisposed === true &&
247
247
  state.handlersDisposed === true &&
248
248
  state.nativeDisposed === true &&
249
- state.locationReleased === true;
249
+ state.locationReleased === true);
250
250
  }
251
251
  async create(meshName, spotType, spotId, request, signal, authority) {
252
- const executionMode = this.options.userSpotExecutionMode?.(meshName, spotType)
253
- ?? contracts_1.ZLinkUserSpotExecutionMode.SpotWide;
252
+ const executionMode = this.options.userSpotExecutionMode?.(meshName, spotType) ??
253
+ contracts_1.ZLinkUserSpotExecutionMode.SpotWide;
254
254
  const serial = new spot_serial_turn_executor_1.ZLinkSpotSerialTurnExecutor(executionMode === contracts_1.ZLinkUserSpotExecutionMode.SpotWide, spotId);
255
255
  const serialExecutor = new spot_serial_executor_1.ZLinkSpotSerialExecutor(serial, executionMode, spotId);
256
256
  const actorHandlers = new actors_1.ZLinkSpotActorHandlerRegistryRuntime();
@@ -332,7 +332,8 @@ class ZLinkSpotActivationLifecycle {
332
332
  domain: {
333
333
  kind: 'user',
334
334
  executionMode,
335
- relocationCoordinationMode: this.options.userSpotRelocationCoordinationMode?.(meshName, spotType) ?? contracts_1.ZLinkSpotRelocationCoordinationMode.FrameworkManaged
335
+ relocationCoordinationMode: this.options.userSpotRelocationCoordinationMode?.(meshName, spotType) ??
336
+ contracts_1.ZLinkSpotRelocationCoordinationMode.FrameworkManaged
336
337
  },
337
338
  spotType,
338
339
  spot,
@@ -410,14 +411,19 @@ class ZLinkSpotActivationLifecycle {
410
411
  close: this.contextClose(meshName, spotId, () => activation)
411
412
  });
412
413
  spot = await (0, spot_provider_1.createFreshProviderInstance)(spotType, this.options.providerResolver, context);
413
- Object.defineProperty(spot, 'context', { configurable: true, enumerable: false, value: context });
414
+ Object.defineProperty(spot, 'context', {
415
+ configurable: true,
416
+ enumerable: false,
417
+ value: context
418
+ });
414
419
  activation = new spot_activation_state_1.ZLinkSpotActivation({
415
420
  meshName,
416
421
  spotId,
417
422
  domain: {
418
423
  kind: 'user',
419
424
  executionMode,
420
- relocationCoordinationMode: this.options.userSpotRelocationCoordinationMode?.(meshName, spotType) ?? contracts_1.ZLinkSpotRelocationCoordinationMode.FrameworkManaged
425
+ relocationCoordinationMode: this.options.userSpotRelocationCoordinationMode?.(meshName, spotType) ??
426
+ contracts_1.ZLinkSpotRelocationCoordinationMode.FrameworkManaged
421
427
  },
422
428
  spotType,
423
429
  spot,
@@ -440,7 +446,9 @@ class ZLinkSpotActivationLifecycle {
440
446
  if (activation?.serial.isExecuting === true && !activation.serial.isCurrentTurn) {
441
447
  activation.requestClose();
442
448
  const retry = activation.serial.post(() => this.options.closeSpot(meshName, spotId, signal));
443
- this.options.detachedTaskRunner?.runDetached(`spot close ${String(spotId)}`, async () => { await retry; });
449
+ this.options.detachedTaskRunner?.runDetached(`spot close ${String(spotId)}`, async () => {
450
+ await retry;
451
+ });
444
452
  if (this.options.detachedTaskRunner === undefined) {
445
453
  void retry.catch(() => undefined);
446
454
  }
@@ -540,8 +548,9 @@ class ZLinkSpotActivationLifecycle {
540
548
  this.cleanupStates.set(activation, state);
541
549
  if (state.inFlight !== undefined)
542
550
  return await state.inFlight;
543
- state.inFlight = this.runCleanup(activation, locationMeshName, notifyClosing, reason, state, deadline)
544
- .finally(() => { state.inFlight = undefined; });
551
+ state.inFlight = this.runCleanup(activation, locationMeshName, notifyClosing, reason, state, deadline).finally(() => {
552
+ state.inFlight = undefined;
553
+ });
545
554
  return await state.inFlight;
546
555
  }
547
556
  async runCleanup(activation, locationMeshName, notifyClosing, reason, state, deadline) {
@@ -560,18 +569,26 @@ class ZLinkSpotActivationLifecycle {
560
569
  await cleanup(() => (0, spot_closing_1.invokeSpotClosing)(activation.spot.onClosing?.bind(activation.spot), reason, deadline), () => undefined);
561
570
  }
562
571
  if (!state.timersDisposed) {
563
- await cleanup(() => activation.timers.dispose(), () => { state.timersDisposed = true; });
572
+ await cleanup(() => activation.timers.dispose(), () => {
573
+ state.timersDisposed = true;
574
+ });
564
575
  }
565
576
  await cleanup(() => activation.serialExecutor.close(), () => undefined);
566
577
  if (!state.handlersDisposed) {
567
- await cleanup(() => (0, handler_instance_scope_1.disposeLifecycleHandlers)(activation.spot), () => { state.handlersDisposed = true; });
578
+ await cleanup(() => (0, handler_instance_scope_1.disposeLifecycleHandlers)(activation.spot), () => {
579
+ state.handlersDisposed = true;
580
+ });
568
581
  }
569
582
  if (!state.nativeDisposed) {
570
583
  await cleanup(() => activation.actorDispatch?.dispose(), () => undefined);
571
- await cleanup(() => activation.nativeSpot?.dispose(), () => { state.nativeDisposed = true; });
584
+ await cleanup(() => activation.nativeSpot?.dispose(), () => {
585
+ state.nativeDisposed = true;
586
+ });
572
587
  }
573
588
  if (!state.locationReleased) {
574
- await cleanup(() => this.options.releaseLocation(activation, locationMeshName, activation.spotId), () => { state.locationReleased = true; });
589
+ await cleanup(() => this.options.releaseLocation(activation, locationMeshName, activation.spotId), () => {
590
+ state.locationReleased = true;
591
+ });
575
592
  }
576
593
  if (errors.length === 1)
577
594
  throw errors[0];
@@ -27,13 +27,15 @@ class ZLinkSpotActorAdmissionCoordinator {
27
27
  actors: {
28
28
  resolveActor: (actorId) => activation.hasDepartedActor(actorId)
29
29
  ? undefined
30
- : activation.resolveJoinedActor(actorId) ?? this.options.actorResolver?.(actorId),
30
+ : (activation.resolveJoinedActor(actorId) ?? this.options.actorResolver?.(actorId)),
31
31
  getTarget: () => activation.spot,
32
32
  defaultAccept: false,
33
- transfer: this.options.actorTransferRuntime === undefined ? { kind: 'disabled' } : {
34
- kind: 'enabled',
35
- runtime: this.options.actorTransferRuntime
36
- },
33
+ transfer: this.options.actorTransferRuntime === undefined
34
+ ? { kind: 'disabled' }
35
+ : {
36
+ kind: 'enabled',
37
+ runtime: this.options.actorTransferRuntime
38
+ },
37
39
  commitNativeActor: (actor) => this.commitNativeActorTransaction(activation, actor),
38
40
  commitActorDeparture: (actorId) => activation.commitActorDeparture(actorId),
39
41
  commitTransferredActor: (actor, backlog) => this.commitTransferredActorTransaction(activation, actor, backlog)
@@ -50,7 +52,9 @@ class ZLinkSpotActorAdmissionCoordinator {
50
52
  }
51
53
  node.bindRemoteActorSession(actor, sourceNodeRid, sourceSessionRid);
52
54
  },
53
- replyNoBind: (info, parts, result) => this.options.nativeSpotNodeProvider?.(activation.meshName)?.replyActorNoBind(info, parts, result)
55
+ replyNoBind: (info, parts, result) => this.options
56
+ .nativeSpotNodeProvider?.(activation.meshName)
57
+ ?.replyActorNoBind(info, parts, result)
54
58
  },
55
59
  boundSessionRuntime: this.options.boundSessionRuntime,
56
60
  messageSerializers: this.options.messageSerializers,
@@ -66,7 +70,7 @@ class ZLinkSpotActorAdmissionCoordinator {
66
70
  }
67
71
  /** @internal Dispatches a coordinator-owned replay without recapturing it. */
68
72
  dispatchActorPacketDirect(activation, actorId, parts, returnResponse = false, remoteBoundSessionTarget, fallbackActorRef, requestTerminal) {
69
- return activation.executeActor(actorId, actorSerial => this.dispatchActorPacketInActorTurn(activation, actorSerial, actorId, parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef, requestTerminal));
73
+ return activation.executeActor(actorId, (actorSerial) => this.dispatchActorPacketInActorTurn(activation, actorSerial, actorId, parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef, requestTerminal));
70
74
  }
71
75
  /**
72
76
  * Atomically restores one durable packet prefix at the Actor FIFO tail.
@@ -76,13 +80,13 @@ class ZLinkSpotActorAdmissionCoordinator {
76
80
  * @internal
77
81
  */
78
82
  admitActorPacketPrefix(activation, actorId, records) {
79
- const terminals = activation.admitActorDurablePrefix(actorId, records.map(record => ({
80
- operation: executeChild => record.drain((parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef) => executeChild(actorSerial => this.dispatchActorPacketInActorTurn(activation, actorSerial, actorId, parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef))),
83
+ const terminals = activation.admitActorDurablePrefix(actorId, records.map((record) => ({
84
+ operation: (executeChild) => record.drain((parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef) => executeChild((actorSerial) => this.dispatchActorPacketInActorTurn(activation, actorSerial, actorId, parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef))),
81
85
  preparation: record.preparation,
82
86
  workOptions: { payloadBytes: record.payloadBytes }
83
87
  })));
84
- const terminal = Promise.allSettled(terminals).then(outcomes => {
85
- const errors = outcomes.flatMap(outcome => outcome.status === 'rejected' ? [outcome.reason] : []);
88
+ const terminal = Promise.allSettled(terminals).then((outcomes) => {
89
+ const errors = outcomes.flatMap((outcome) => outcome.status === 'rejected' ? [outcome.reason] : []);
86
90
  if (errors.length === 1)
87
91
  throw errors[0];
88
92
  if (errors.length > 1) {
@@ -99,7 +103,8 @@ class ZLinkSpotActorAdmissionCoordinator {
99
103
  serial: actorSerial,
100
104
  resolveActor: (targetActorId) => activation.hasDepartedActor(targetActorId)
101
105
  ? undefined
102
- : activation.resolveJoinedActor(targetActorId) ?? this.options.actorResolver?.(targetActorId),
106
+ : (activation.resolveJoinedActor(targetActorId) ??
107
+ this.options.actorResolver?.(targetActorId)),
103
108
  actorLeft: (targetActorId) => activation.hasDepartedActor(targetActorId),
104
109
  onRemoteBoundSessionTarget: (targetActorId, target) => this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(targetActorId, target),
105
110
  onDisconnectActor: (actor) => activation.serial.execute(() => activation.spot.onDisconnectActor?.(actor)),
@@ -149,9 +154,7 @@ class ZLinkSpotActorAdmissionCoordinator {
149
154
  activation.commitActorJoin(actor);
150
155
  activation.beginActorTransfer(actor.context.actorId);
151
156
  await activation.serial.execute(() => activation.spot.onJoinedActor(actor));
152
- const results = backlog.length === 0
153
- ? []
154
- : await this.replayActorBacklog(activation, actor, backlog);
157
+ const results = backlog.length === 0 ? [] : await this.replayActorBacklog(activation, actor, backlog);
155
158
  await transfer?.claimRoutedActorLocation(actor, activation.spotId, activation.meshName);
156
159
  routeSwitchStarted = true;
157
160
  await transfer?.publishRoutedActorOwnership(actor);
@@ -58,9 +58,7 @@ class ZLinkSpotActorMembership {
58
58
  this.options.entryNodeRidProvider?.() ??
59
59
  this.options.entryNodeRid ??
60
60
  this.options.nodeRid;
61
- const entrySpotId = meshName === undefined
62
- ? undefined
63
- : this.options.entrySpotIdProvider?.(meshName);
61
+ const entrySpotId = meshName === undefined ? undefined : this.options.entrySpotIdProvider?.(meshName);
64
62
  const resolvedEntry = entrySpotId === undefined
65
63
  ? undefined
66
64
  : await this.options.spotRouteResolver?.resolve(entrySpotId, signal);
@@ -1,4 +1,4 @@
1
- import type { ActorRef, ZLinkActor, ZLinkMessageSerializer, ZLinkSpot } from '../../contracts';
1
+ import type { ActorRef, RoutingId, ZLinkActor, ZLinkMessageSerializer, ZLinkSpot } from '../../contracts';
2
2
  import type { Message } from '../../contracts/Common/Message';
3
3
  import type { ZLinkRemoteBoundSessionTarget } from '../actors';
4
4
  import { ZLinkSpotActorHandlerRegistryRuntime } from '../actors';
@@ -24,6 +24,7 @@ export interface ZLinkActorPacketDelivery {
24
24
  readonly fallbackActorRef?: ActorRef;
25
25
  readonly requestTerminal?: ZLinkActorRequestTerminal;
26
26
  readonly messageFollowOrigin?: ZLinkMessageFollowOrigin;
27
+ readonly sourceSessionRid?: RoutingId;
27
28
  }
28
29
  /**
29
30
  * Spec 15 §4.2 relocation temporary queue: consulted when {@code
@@ -6,6 +6,7 @@ const contracts_1 = require("../../contracts");
6
6
  const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
7
7
  const diagnostics_1 = require("../diagnostics");
8
8
  const flow_context_1 = require("../diagnostics/flow-context");
9
+ const managed_stream_1 = require("../streams/managed-stream");
9
10
  const actors_1 = require("../actors");
10
11
  const protocol_1 = require("../streams/protocol");
11
12
  const payload_codec_1 = require("../messaging/payload-codec");
@@ -39,15 +40,20 @@ class ZLinkSpotActorPacketDispatch {
39
40
  let requestDeadlineUnixMs;
40
41
  try {
41
42
  header = (0, protocol_1.decodeStreamHeader)((0, protocol_1.messageToBytes)(parts[0]), flowEnabled);
42
- requestDeadlineUnixMs = header.kind === protocol_1.ZLinkStreamMessageKind.Request
43
- ? (0, protocol_1.decodeActorRequestDeadlineUnixMs)((0, protocol_1.messageToBytes)(parts[0]))
44
- : undefined;
43
+ requestDeadlineUnixMs =
44
+ header.kind === protocol_1.ZLinkStreamMessageKind.Request
45
+ ? (0, protocol_1.decodeActorRequestDeadlineUnixMs)((0, protocol_1.messageToBytes)(parts[0]))
46
+ : undefined;
45
47
  }
46
48
  catch (error) {
47
49
  this.reportInvalidFrame(actorId, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.ActorSend, error);
48
50
  throw error;
49
51
  }
50
- return (0, flow_context_1.runWithFlow)((0, flow_context_1.createInboundFlow)(header.flowId, header.flowOrigin, flowEnabled), async () => {
52
+ return (0, flow_context_1.runWithFlow)((0, flow_context_1.createInboundFlow)(header.flowId, header.flowOrigin, flowEnabled, !flowEnabled
53
+ ? undefined
54
+ : delivery.sourceSessionRid === undefined
55
+ ? (0, flow_context_1.currentFlowContext)()?.streamSessionId
56
+ : (0, managed_stream_1.streamSessionIdFromRoutingId)(delivery.sourceSessionRid)), async () => {
51
57
  const messageKind = header.kind === protocol_1.ZLinkStreamMessageKind.Request
52
58
  ? ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.ActorRequest
53
59
  : ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.ActorSend;
@@ -59,8 +65,8 @@ class ZLinkSpotActorPacketDispatch {
59
65
  header.name === actors_1.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET) {
60
66
  return undefined;
61
67
  }
62
- if (remoteBoundSessionTarget !== undefined
63
- && (0, actors_1.actorMessageFollowContext)(fallbackActorRef) === undefined) {
68
+ if (remoteBoundSessionTarget !== undefined &&
69
+ (0, actors_1.actorMessageFollowContext)(fallbackActorRef) === undefined) {
64
70
  // A replayed handoff/Message Follow packet keeps its captured Session
65
71
  // route solely for that packet's response. It cannot republish the
66
72
  // predecessor route over a binding already confirmed by a later Actor
@@ -85,14 +91,14 @@ class ZLinkSpotActorPacketDispatch {
85
91
  });
86
92
  }
87
93
  async handleMissingActor(actorId, parts, header, messageKind, action, returnResponse, fallbackBoundSessionTarget, fallbackActorRef, requestTerminal) {
88
- if (this.options.routeToActorJoinPrewarm !== undefined
89
- && fallbackActorRef !== undefined
90
- && parts.length >= 2
94
+ if (this.options.routeToActorJoinPrewarm !== undefined &&
95
+ fallbackActorRef !== undefined &&
96
+ parts.length >= 2 &&
91
97
  // A Request without a terminal has no way to complete once
92
98
  // migrated later — parking it would leave the caller hanging
93
99
  // forever with no reply route. Fall through to the existing
94
100
  // missing-actor handling for that shape instead.
95
- && (messageKind !== ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.ActorRequest || requestTerminal !== undefined)) {
101
+ (messageKind !== ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.ActorRequest || requestTerminal !== undefined)) {
96
102
  const parked = this.parkForActorJoinPrewarm(actorId, parts, messageKind, returnResponse, fallbackBoundSessionTarget, fallbackActorRef, requestTerminal);
97
103
  if (parked !== undefined)
98
104
  return parked;
@@ -111,7 +117,9 @@ class ZLinkSpotActorPacketDispatch {
111
117
  return undefined;
112
118
  }
113
119
  const missingActorError = (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorDispatchHandlerNotFound, `SPOT actor is not registered locally: ${actorId}`);
114
- if (header.requestSeq !== undefined && !returnResponse && this.options.actorErrorSender !== undefined) {
120
+ if (header.requestSeq !== undefined &&
121
+ !returnResponse &&
122
+ this.options.actorErrorSender !== undefined) {
115
123
  await this.options.actorErrorSender(actorId, header.name, header.requestSeq, missingActorError, header.metadata, fallbackBoundSessionTarget, fallbackActorRef);
116
124
  return undefined;
117
125
  }
@@ -177,9 +185,7 @@ class ZLinkSpotActorPacketDispatch {
177
185
  return () => (0, payload_codec_1.decodeFrameworkTypedPayloadMessage)(message, this.options.messageSerializers, undefined, (0, protocol_1.streamCodecContentType)(header.codec), header.name);
178
186
  }
179
187
  async dispatchActorPacket(actor, actorId, decodePayload, header, messageKind, action, returnResponse, fallbackBoundSessionTarget, fallbackActorRef, requestTerminal, requestDeadlineUnixMs, workOptions) {
180
- const spot = typeof this.options.spot === 'function'
181
- ? this.options.spot()
182
- : this.options.spot;
188
+ const spot = typeof this.options.spot === 'function' ? this.options.spot() : this.options.spot;
183
189
  const dispatcher = new actors_1.ZLinkSpotActorDispatcher({
184
190
  registry: this.options.registry,
185
191
  spot,
@@ -192,9 +198,9 @@ class ZLinkSpotActorPacketDispatch {
192
198
  // A transferred backlog is returned to the Actor queue as one FIFO
193
199
  // prefix. Check the request deadline when its owner turn actually
194
200
  // starts, not when that prefix is admitted.
195
- if (messageKind === ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.ActorRequest
196
- && requestDeadlineUnixMs !== undefined
197
- && Date.now() >= requestDeadlineUnixMs) {
201
+ if (messageKind === ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.ActorRequest &&
202
+ requestDeadlineUnixMs !== undefined &&
203
+ Date.now() >= requestDeadlineUnixMs) {
198
204
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded, `Actor request '${actorId}' expired before handler admission.`);
199
205
  }
200
206
  (0, application_job_queue_scope_1.releaseApplicationJobPermitBeforeHandler)();
@@ -265,11 +271,13 @@ class ZLinkSpotActorPacketDispatch {
265
271
  this.options.dispatchErrors?.report({
266
272
  surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotActor,
267
273
  messageKind,
268
- reason: error instanceof contracts_1.ZLinkFrameworkException
269
- && (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorDispatchHandlerNotFound
274
+ reason: error instanceof contracts_1.ZLinkFrameworkException &&
275
+ (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) ===
276
+ framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorDispatchHandlerNotFound
270
277
  ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerMissing
271
- : error instanceof contracts_1.ZLinkFrameworkException
272
- && (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed
278
+ : error instanceof contracts_1.ZLinkFrameworkException &&
279
+ (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) ===
280
+ framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed
273
281
  ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.PayloadDecodeFailed
274
282
  : ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException,
275
283
  action,
@@ -86,6 +86,7 @@ class ZLinkSpotActorPacketDrain {
86
86
  actorId,
87
87
  parts,
88
88
  returnResponse: false,
89
+ sourceSessionRid,
89
90
  fallbackActorRef: actorRef
90
91
  });
91
92
  }
@@ -102,15 +103,15 @@ class ZLinkSpotActorPacketDrain {
102
103
  this.continuations.clear();
103
104
  }
104
105
  createNoBindReplyInfo(actor, sourceNodeRid, sourceSessionRid, requestId, flags, parts) {
105
- if (actor === undefined
106
- || sourceNodeRid === undefined
107
- || sourceSessionRid === undefined
108
- || requestId === undefined
109
- || requestId === 0n
110
- || flags === undefined
111
- || (flags & ZLINK_SPOT_ACTOR_RECV_INFO_NO_BIND) === 0
112
- || this.options.replyActorNoBind === undefined
113
- || !this.isActorRequest(parts)) {
106
+ if (actor === undefined ||
107
+ sourceNodeRid === undefined ||
108
+ sourceSessionRid === undefined ||
109
+ requestId === undefined ||
110
+ requestId === 0n ||
111
+ flags === undefined ||
112
+ (flags & ZLINK_SPOT_ACTOR_RECV_INFO_NO_BIND) === 0 ||
113
+ this.options.replyActorNoBind === undefined ||
114
+ !this.isActorRequest(parts)) {
114
115
  return undefined;
115
116
  }
116
117
  return { actor, sourceNodeRid, sourceSessionRid, requestId, flags };
@@ -133,12 +134,15 @@ class ZLinkSpotActorPacketDrain {
133
134
  actorId,
134
135
  parts,
135
136
  returnResponse: true,
137
+ sourceSessionRid: info.sourceSessionRid,
136
138
  fallbackActorRef: actorRef
137
139
  });
138
140
  this.options.replyActorNoBind?.(info, [this.encodeActorReplyFrame(parts[0], protocol_1.ZLinkStreamMessageKind.Response, response)], runtime_values_1.RequestResult.Ok);
139
141
  }
140
142
  catch (error) {
141
- this.options.replyActorNoBind?.(info, [this.encodeActorReplyFrame(parts[0], protocol_1.ZLinkStreamMessageKind.Error, frameworkErrorPayload(error))], runtime_values_1.RequestResult.Ok);
143
+ this.options.replyActorNoBind?.(info, [
144
+ this.encodeActorReplyFrame(parts[0], protocol_1.ZLinkStreamMessageKind.Error, frameworkErrorPayload(error))
145
+ ], runtime_values_1.RequestResult.Ok);
142
146
  }
143
147
  }
144
148
  encodeActorReplyFrame(requestHeaderPart, kind, payload) {
@@ -59,8 +59,8 @@ class ZLinkSpotActorPacketRelayDispatch {
59
59
  }
60
60
  return true;
61
61
  }
62
- if (actorPacketRelay.messageFollowContext?.deadlineUnixMs !== undefined
63
- && Date.now() >= actorPacketRelay.messageFollowContext.deadlineUnixMs) {
62
+ if (actorPacketRelay.messageFollowContext?.deadlineUnixMs !== undefined &&
63
+ Date.now() >= actorPacketRelay.messageFollowContext.deadlineUnixMs) {
64
64
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded, `Actor request '${actorPacketRelay.actorId}' expired before target handler admission.`);
65
65
  }
66
66
  // Spec 28 §5.2/§10 — a Message Follow relay is a one-way send that
@@ -71,9 +71,9 @@ class ZLinkSpotActorPacketRelayDispatch {
71
71
  // actorErrorSender instead of returning it locally, where it would
72
72
  // be discarded. Non-follow relays keep the synchronous-return path.
73
73
  const outerReplyable = (0, spot_route_replies_1.hasReplyToken)(received.replyToken);
74
- const followedBoundSessionReply = !outerReplyable
75
- && actorPacketRelay.messageFollowContext !== undefined
76
- && remoteBoundSessionTarget !== undefined;
74
+ const followedBoundSessionReply = !outerReplyable &&
75
+ actorPacketRelay.messageFollowContext !== undefined &&
76
+ remoteBoundSessionTarget !== undefined;
77
77
  const response = await this.options.actorPacketHandler({
78
78
  actorId: actorPacketRelay.actorId,
79
79
  parts: [header, payload],
@@ -83,7 +83,11 @@ class ZLinkSpotActorPacketRelayDispatch {
83
83
  });
84
84
  const actorPacketTarget = this.actorPacketTarget(actorPacketRelay.actorId);
85
85
  if ((0, spot_route_replies_1.hasReplyToken)(received.replyToken)) {
86
- (0, spot_route_replies_1.submitSpotRouteBridgeReply)(received, actorPacketRelay.envelope, { ok: true, response, actorPacketTarget });
86
+ (0, spot_route_replies_1.submitSpotRouteBridgeReply)(received, actorPacketRelay.envelope, {
87
+ ok: true,
88
+ response,
89
+ actorPacketTarget
90
+ });
87
91
  }
88
92
  return true;
89
93
  }
@@ -5,15 +5,11 @@ const DEFAULT_CLEANUP_TIMEOUT_MS = 30_000;
5
5
  async function invokeSpotClosing(callback, reason, cleanupDeadline = DEFAULT_CLEANUP_TIMEOUT_MS) {
6
6
  if (callback === undefined)
7
7
  return;
8
- const deadline = new Date(cleanupDeadline instanceof Date
9
- ? cleanupDeadline.getTime()
10
- : Date.now() + cleanupDeadline);
11
- const timeoutMs = Math.max(0, cleanupDeadline instanceof Date
12
- ? cleanupDeadline.getTime() - Date.now()
13
- : cleanupDeadline);
8
+ const deadline = new Date(cleanupDeadline instanceof Date ? cleanupDeadline.getTime() : Date.now() + cleanupDeadline);
9
+ const timeoutMs = Math.max(0, cleanupDeadline instanceof Date ? cleanupDeadline.getTime() - Date.now() : cleanupDeadline);
14
10
  const controller = new AbortController();
15
11
  let timer;
16
- const expired = new Promise(resolve => {
12
+ const expired = new Promise((resolve) => {
17
13
  timer = setTimeout(() => {
18
14
  controller.abort();
19
15
  resolve();
@@ -44,11 +44,11 @@ function createSpotContext(options) {
44
44
  },
45
45
  relocationReady: () => {
46
46
  options.ensureOperationAllowed?.();
47
- return options.relocationReady?.() ?? {
47
+ return (options.relocationReady?.() ?? {
48
48
  defer() {
49
49
  throw new configuration_1.ZLinkConfigurationException('Spot relocation readiness is not configured for application signaling.');
50
50
  }
51
- };
51
+ });
52
52
  },
53
53
  leaveActor: (actor, signal) => {
54
54
  options.ensureOperationAllowed?.();