@zlink-systems/framework 0.26.0 → 0.28.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 (561) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
  3. package/dist/contracts/Channels/Calls.d.ts +1 -1
  4. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  5. package/dist/contracts/Common/CoreTypes.js +7 -0
  6. package/dist/contracts/Common/index.d.ts +1 -1
  7. package/dist/contracts/Common/index.js +0 -1
  8. package/dist/contracts/Configuration/Builders.d.ts +0 -1
  9. package/dist/contracts/Configuration/Configs.d.ts +0 -1
  10. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  11. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  12. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  13. package/dist/contracts/Configuration/Registration.js +58 -36
  14. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  15. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  16. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  17. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  18. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
  19. package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
  20. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  21. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  22. package/dist/contracts/Handlers/JsonContract.js +10 -4
  23. package/dist/contracts/Locations/Authority.d.ts +1 -1
  24. package/dist/contracts/Locations/Authority.js +3 -2
  25. package/dist/contracts/Locations/Options.js +1 -1
  26. package/dist/contracts/Locations/Stores.d.ts +12 -0
  27. package/dist/contracts/Locations/Stores.js +9 -0
  28. package/dist/contracts/Spots/Contracts.d.ts +2 -2
  29. package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
  30. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
  31. package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
  32. package/dist/internal.d.ts +4 -0
  33. package/dist/internal.js +15 -1
  34. package/dist/nest-integration.d.ts +4 -2
  35. package/dist/nest-integration.js +14 -4
  36. package/dist/runtime/abort.d.ts +1 -0
  37. package/dist/runtime/abort.js +8 -5
  38. package/dist/runtime/activation-admission.d.ts +1 -2
  39. package/dist/runtime/activation-admission.js +2 -6
  40. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  41. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  42. package/dist/runtime/actors/actor-client.d.ts +2 -2
  43. package/dist/runtime/actors/actor-client.js +49 -153
  44. package/dist/runtime/actors/actor-context.d.ts +3 -5
  45. package/dist/runtime/actors/actor-context.js +13 -11
  46. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  47. package/dist/runtime/actors/actor-handoff.js +8 -8
  48. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  49. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  50. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  51. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  52. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  53. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  54. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  55. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  56. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  57. package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
  58. package/dist/runtime/actors/actor-request-deadline.js +6 -0
  59. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  60. package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
  61. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  62. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  63. package/dist/runtime/actors/bound-session-wire.js +2 -7
  64. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  65. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  66. package/dist/runtime/actors/index.d.ts +9 -7
  67. package/dist/runtime/actors/index.js +87 -69
  68. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  69. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  70. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  71. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  72. package/dist/runtime/admission.d.ts +2 -0
  73. package/dist/runtime/admission.js +7 -1
  74. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  75. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  76. package/dist/runtime/backend/contracts/index.d.ts +7 -27
  77. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  78. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  79. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  80. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
  81. package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
  82. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  83. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
  84. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  85. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  86. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  87. package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
  88. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  89. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  90. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  91. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  92. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  93. package/dist/runtime/backend/runtime-values.js +2 -0
  94. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  95. package/dist/runtime/channels/channel-clients.js +73 -59
  96. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  97. package/dist/runtime/channels/channel-envelope.d.ts +1 -1
  98. package/dist/runtime/channels/channel-envelope.js +51 -39
  99. package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
  100. package/dist/runtime/channels/channel-outbound-operations.js +25 -42
  101. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  102. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  103. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  104. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  105. package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
  106. package/dist/runtime/channels/channel-runtime-manager.js +13 -10
  107. package/dist/runtime/channels/channel-socket-options.js +3 -12
  108. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  109. package/dist/runtime/channels/channel-socket-registry.js +240 -177
  110. package/dist/runtime/channels/channel-transports.d.ts +21 -31
  111. package/dist/runtime/channels/channel-transports.js +80 -62
  112. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  113. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  114. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  115. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  116. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  117. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  118. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  119. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  120. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  121. package/dist/runtime/channels/local-spot-route-transport.js +1 -3
  122. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
  123. package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
  124. package/dist/runtime/channels/source-spot-router.d.ts +1 -1
  125. package/dist/runtime/channels/source-spot-router.js +2 -4
  126. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  127. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  128. package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
  129. package/dist/runtime/channels/spot-node-route-transport.js +5 -5
  130. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
  131. package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
  132. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
  133. package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
  134. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  135. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  136. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  137. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  138. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  139. package/dist/runtime/diagnostics/flow-context.js +16 -2
  140. package/dist/runtime/diagnostics/index.d.ts +4 -2
  141. package/dist/runtime/diagnostics/index.js +14 -4
  142. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  143. package/dist/runtime/diagnostics/message-flow.js +10 -19
  144. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  145. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  146. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  147. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  148. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  149. package/dist/runtime/disposal.d.ts +5 -0
  150. package/dist/runtime/disposal.js +22 -0
  151. package/dist/runtime/execution/index.d.ts +12 -9
  152. package/dist/runtime/execution/index.js +58 -14
  153. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  154. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  155. package/dist/runtime/execution/state-lane.d.ts +8 -1
  156. package/dist/runtime/execution/state-lane.js +118 -3
  157. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  158. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  159. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  160. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  161. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  162. package/dist/runtime/foundation/operation-identity.js +9 -5
  163. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  164. package/dist/runtime/foundation/operation-registry.js +34 -44
  165. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  166. package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
  167. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  168. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  169. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  170. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  171. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  172. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  173. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  174. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  175. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  176. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  177. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  178. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  179. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  180. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  181. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  182. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  183. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  184. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  185. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  186. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  187. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  188. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  189. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  190. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  191. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  192. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  193. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  194. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  195. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  196. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  197. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  198. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  199. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  200. package/dist/runtime/framework-errors-internal.js +343 -122
  201. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  202. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  203. package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
  204. package/dist/runtime/host/actor-packet-relay.js +54 -99
  205. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  206. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  207. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  208. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  209. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  210. package/dist/runtime/host/application-job-queue.js +16 -33
  211. package/dist/runtime/host/bound-session-relay.js +1 -1
  212. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  213. package/dist/runtime/host/index.d.ts +14 -13
  214. package/dist/runtime/host/index.js +190 -171
  215. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  216. package/dist/runtime/host/instance-activation-authority.js +17 -45
  217. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  218. package/dist/runtime/host/location-runtime-owner.js +2 -2
  219. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  220. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  221. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  222. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  223. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  224. package/dist/runtime/host/remote-bound-session-relay.js +15 -28
  225. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  226. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  227. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  228. package/dist/runtime/host/runtime-shutdown.js +18 -21
  229. package/dist/runtime/host/service-relocation-control.js +6 -1
  230. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  231. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  232. package/dist/runtime/host/spot-address-transport.d.ts +3 -12
  233. package/dist/runtime/host/spot-address-transport.js +78 -220
  234. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  235. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  236. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  237. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  238. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  239. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  240. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  241. package/dist/runtime/locations/authority-key-codec.js +4 -3
  242. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  243. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  244. package/dist/runtime/locations/creation-operation-id.js +6 -4
  245. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  246. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  247. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  248. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  249. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  250. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  251. package/dist/runtime/locations/key-codec.js +3 -2
  252. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  253. package/dist/runtime/locations/lease-tracker.js +7 -11
  254. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  255. package/dist/runtime/locations/lifecycle.js +2 -31
  256. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  257. package/dist/runtime/locations/location-store-failure.js +7 -0
  258. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  259. package/dist/runtime/locations/location-store-pages.js +13 -0
  260. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  261. package/dist/runtime/locations/location-store-repository.js +309 -336
  262. package/dist/runtime/locations/relocation-blob.js +18 -5
  263. package/dist/runtime/locations/resolvers.d.ts +5 -5
  264. package/dist/runtime/locations/resolvers.js +37 -28
  265. package/dist/runtime/locations/runtime.d.ts +5 -4
  266. package/dist/runtime/locations/runtime.js +123 -92
  267. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  268. package/dist/runtime/locations/spot-location-claims.js +42 -1
  269. package/dist/runtime/messaging/payload-codec.js +26 -20
  270. package/dist/runtime/messaging/request-deadline.d.ts +3 -0
  271. package/dist/runtime/messaging/request-deadline.js +39 -0
  272. package/dist/runtime/messaging/submission-result.d.ts +4 -0
  273. package/dist/runtime/messaging/submission-result.js +56 -1
  274. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  275. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  276. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  277. package/dist/runtime/spots/index.d.ts +14 -20
  278. package/dist/runtime/spots/index.js +302 -176
  279. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  280. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  281. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  282. package/dist/runtime/spots/spot-activation-state.js +2 -2
  283. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  284. package/dist/runtime/spots/spot-activation.js +49 -32
  285. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  286. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  287. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  288. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  289. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  290. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  291. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  292. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  293. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  294. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  295. package/dist/runtime/spots/spot-context.d.ts +2 -2
  296. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  297. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  298. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  299. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  300. package/dist/runtime/spots/spot-manager-public.js +5 -4
  301. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  302. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  303. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  304. package/dist/runtime/spots/spot-outbound.d.ts +7 -8
  305. package/dist/runtime/spots/spot-outbound.js +21 -23
  306. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  307. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  308. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  309. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  310. package/dist/runtime/spots/spot-route-replies.js +3 -1
  311. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  312. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  313. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  314. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  315. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  316. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  317. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  318. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  319. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  320. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  321. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  322. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  323. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  324. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  325. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
  326. package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
  327. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  328. package/dist/runtime/streams/bound-session-service.js +12 -2
  329. package/dist/runtime/streams/index.d.ts +16 -17
  330. package/dist/runtime/streams/index.js +22 -23
  331. package/dist/runtime/streams/managed-stream.d.ts +5 -2
  332. package/dist/runtime/streams/managed-stream.js +20 -13
  333. package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
  334. package/dist/runtime/streams/protocol.d.ts +6 -33
  335. package/dist/runtime/streams/protocol.js +38 -110
  336. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  337. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  338. package/dist/runtime/streams/session-calls.d.ts +6 -8
  339. package/dist/runtime/streams/session-calls.js +6 -22
  340. package/dist/runtime/streams/session-context.d.ts +10 -10
  341. package/dist/runtime/streams/session-context.js +25 -10
  342. package/dist/runtime/streams/session-requests.js +2 -1
  343. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  344. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  345. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  346. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  347. package/dist/runtime/workers/index.d.ts +2 -2
  348. package/dist/runtime/workers/index.js +5 -4
  349. package/package.json +3 -3
  350. package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
  351. package/src/contracts/Channels/Calls.ts +1 -1
  352. package/src/contracts/Common/CoreTypes.ts +7 -0
  353. package/src/contracts/Common/index.ts +1 -1
  354. package/src/contracts/Configuration/Builders.ts +0 -1
  355. package/src/contracts/Configuration/Configs.ts +0 -1
  356. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  357. package/src/contracts/Configuration/Registration.ts +92 -48
  358. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  359. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
  360. package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
  361. package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
  362. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  363. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  364. package/src/contracts/Handlers/JsonContract.ts +14 -4
  365. package/src/contracts/Locations/Authority.ts +7 -3
  366. package/src/contracts/Locations/Options.ts +1 -1
  367. package/src/contracts/Locations/Stores.ts +14 -0
  368. package/src/contracts/Spots/Contracts.ts +2 -2
  369. package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
  370. package/src/contracts/Streams/IZLinkSession.ts +2 -3
  371. package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
  372. package/src/internal.ts +14 -0
  373. package/src/nest-integration.ts +28 -10
  374. package/src/runtime/abort.ts +6 -5
  375. package/src/runtime/activation-admission.ts +2 -8
  376. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  377. package/src/runtime/actors/actor-client.ts +85 -218
  378. package/src/runtime/actors/actor-context.ts +39 -33
  379. package/src/runtime/actors/actor-handoff.ts +24 -22
  380. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  381. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  382. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  383. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  384. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  385. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  386. package/src/runtime/actors/actor-request-deadline.ts +4 -0
  387. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  388. package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
  389. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  390. package/src/runtime/actors/bound-session-wire.ts +2 -8
  391. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  392. package/src/runtime/actors/index.ts +100 -79
  393. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  394. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  395. package/src/runtime/admission.ts +8 -1
  396. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  397. package/src/runtime/backend/contracts/index.ts +14 -37
  398. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  399. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  400. package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
  401. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
  402. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  403. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  404. package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
  405. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  406. package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
  407. package/src/runtime/backend/raw-binding-port.ts +1 -1
  408. package/src/runtime/backend/runtime-values.ts +4 -1
  409. package/src/runtime/channels/channel-clients.ts +139 -102
  410. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  411. package/src/runtime/channels/channel-envelope.ts +74 -57
  412. package/src/runtime/channels/channel-outbound-operations.ts +40 -55
  413. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  414. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  415. package/src/runtime/channels/channel-runtime-manager.ts +12 -30
  416. package/src/runtime/channels/channel-socket-options.ts +8 -15
  417. package/src/runtime/channels/channel-socket-registry.ts +291 -196
  418. package/src/runtime/channels/channel-transports.ts +168 -145
  419. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  420. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  421. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  422. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  423. package/src/runtime/channels/local-spot-route-transport.ts +1 -5
  424. package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
  425. package/src/runtime/channels/source-spot-router.ts +2 -9
  426. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  427. package/src/runtime/channels/spot-node-route-transport.ts +7 -9
  428. package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
  429. package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
  430. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  431. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  432. package/src/runtime/diagnostics/flow-context.ts +16 -2
  433. package/src/runtime/diagnostics/index.ts +27 -17
  434. package/src/runtime/diagnostics/message-flow.ts +15 -25
  435. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  436. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  437. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  438. package/src/runtime/disposal.ts +19 -0
  439. package/src/runtime/execution/index.ts +60 -20
  440. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  441. package/src/runtime/execution/state-lane.ts +142 -4
  442. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  443. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  444. package/src/runtime/foundation/operation-identity.ts +11 -5
  445. package/src/runtime/foundation/operation-registry.ts +33 -50
  446. package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
  447. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  448. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  449. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  450. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  451. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  452. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  453. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  454. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  455. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  456. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  457. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  458. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  459. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  460. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  461. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  462. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  463. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  464. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  465. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  466. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  467. package/src/runtime/framework-errors-internal.ts +380 -134
  468. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  469. package/src/runtime/host/actor-packet-relay.ts +63 -160
  470. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  471. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  472. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  473. package/src/runtime/host/application-job-queue.ts +28 -34
  474. package/src/runtime/host/bound-session-relay.ts +1 -2
  475. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  476. package/src/runtime/host/index.ts +327 -320
  477. package/src/runtime/host/instance-activation-authority.ts +89 -109
  478. package/src/runtime/host/location-runtime-owner.ts +4 -2
  479. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  480. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  481. package/src/runtime/host/remote-bound-session-relay.ts +16 -57
  482. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  483. package/src/runtime/host/runtime-shutdown.ts +17 -21
  484. package/src/runtime/host/service-relocation-control.ts +14 -1
  485. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  486. package/src/runtime/host/spot-address-transport.ts +175 -356
  487. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  488. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  489. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  490. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  491. package/src/runtime/locations/authority-key-codec.ts +7 -3
  492. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  493. package/src/runtime/locations/creation-operation-id.ts +6 -3
  494. package/src/runtime/locations/domain-store-contract.ts +12 -3
  495. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  496. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  497. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  498. package/src/runtime/locations/key-codec.ts +3 -2
  499. package/src/runtime/locations/lease-tracker.ts +8 -14
  500. package/src/runtime/locations/lifecycle.ts +13 -43
  501. package/src/runtime/locations/location-store-failure.ts +4 -0
  502. package/src/runtime/locations/location-store-pages.ts +18 -0
  503. package/src/runtime/locations/location-store-repository.ts +457 -482
  504. package/src/runtime/locations/relocation-blob.ts +17 -6
  505. package/src/runtime/locations/resolvers.ts +75 -49
  506. package/src/runtime/locations/runtime.ts +220 -110
  507. package/src/runtime/locations/spot-location-claims.ts +58 -1
  508. package/src/runtime/messaging/payload-codec.ts +35 -24
  509. package/src/runtime/messaging/request-deadline.ts +58 -0
  510. package/src/runtime/messaging/submission-result.ts +72 -2
  511. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  512. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  513. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  514. package/src/runtime/spots/index.ts +433 -229
  515. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  516. package/src/runtime/spots/spot-activation-state.ts +2 -2
  517. package/src/runtime/spots/spot-activation.ts +67 -37
  518. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  519. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  520. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  521. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  522. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  523. package/src/runtime/spots/spot-context.ts +3 -3
  524. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  525. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  526. package/src/runtime/spots/spot-manager-public.ts +21 -17
  527. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  528. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  529. package/src/runtime/spots/spot-outbound.ts +59 -47
  530. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  531. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  532. package/src/runtime/spots/spot-route-replies.ts +6 -4
  533. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  534. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  535. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  536. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  537. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  538. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  539. package/src/runtime/spots/spot-timer.ts +3 -2
  540. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  541. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  542. package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
  543. package/src/runtime/streams/bound-session-service.ts +22 -2
  544. package/src/runtime/streams/index.ts +78 -68
  545. package/src/runtime/streams/managed-stream.ts +32 -23
  546. package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
  547. package/src/runtime/streams/protocol.ts +34 -88
  548. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  549. package/src/runtime/streams/session-calls.ts +11 -36
  550. package/src/runtime/streams/session-context.ts +60 -25
  551. package/src/runtime/streams/session-requests.ts +2 -1
  552. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  553. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  554. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  555. package/src/runtime/workers/index.ts +13 -12
  556. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  557. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  558. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  559. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  560. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  561. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,7 +1,7 @@
1
1
  import { AsyncLocalStorage, AsyncResource } from 'node:async_hooks';
2
2
  import type { Type, ZLinkMessageContext } from '../../contracts';
3
3
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
4
- import { ZLinkStateLane } from '../execution/state-lane';
4
+ import type { ZLinkDetachedTaskRunner } from '../spots/spot-actor-join-dispatch';
5
5
 
6
6
  export interface ZLinkHandlerInstanceScope {
7
7
  resolve<T>(type: Type<T>): Promise<T>;
@@ -22,16 +22,6 @@ interface Deferred<T> {
22
22
  readonly reject: (error: unknown) => void;
23
23
  }
24
24
 
25
- interface HandlerResolution<T> {
26
- readonly promise: Promise<T>;
27
- readonly activation?: Deferred<unknown>;
28
- }
29
-
30
- interface HandlerScopeDisposal {
31
- readonly pending: readonly Promise<unknown>[];
32
- readonly owned: readonly unknown[];
33
- }
34
-
35
25
  interface LifecycleScopeDisposal {
36
26
  readonly completion: Promise<void>;
37
27
  readonly deferred?: Deferred<void>;
@@ -41,9 +31,9 @@ interface LifecycleScopeDisposal {
41
31
  const HANDLER_SCOPE_FACTORY = Symbol.for('@zlink-systems/framework.handler-instance-scope-factory');
42
32
  const activeHandlerScope = new AsyncLocalStorage<ActiveHandlerScope>();
43
33
  const activeLifecycleScope = new AsyncLocalStorage<LifecycleHandlerInstanceScope>();
44
- const detachedStateLaneResource = new AsyncResource('zlink:handler-instance-scope');
34
+ const detachedLifecycleResource = new AsyncResource('zlink:handler-instance-scope');
45
35
  const dispatchScopes = new WeakMap<object, ZLinkHandlerInstanceScope>();
46
- const lifecycleScopes = new WeakMap<object, Promise<LifecycleHandlerInstanceScope>>();
36
+ const lifecycleScopes = new WeakMap<object, LifecycleHandlerInstanceScope>();
47
37
 
48
38
  export async function runInHandlerInstanceScope<T>(
49
39
  providerResolver: ZLinkProviderResolver | undefined,
@@ -80,14 +70,7 @@ export async function resolveLifecycleHandler<T>(
80
70
  type: Type<T>,
81
71
  providerResolver?: ZLinkProviderResolver
82
72
  ): Promise<T> {
83
- let scope = lifecycleScopes.get(owner);
84
- if (scope === undefined) {
85
- scope = Promise.resolve(
86
- new LifecycleHandlerInstanceScope(createHandlerInstanceScope(providerResolver))
87
- );
88
- lifecycleScopes.set(owner, scope);
89
- }
90
- return (await scope).resolve(type);
73
+ return lifecycleHandlerScope(owner, providerResolver).resolve(type);
91
74
  }
92
75
 
93
76
  export async function runWithLifecycleHandler<THandler, TResult>(
@@ -96,25 +79,34 @@ export async function runWithLifecycleHandler<THandler, TResult>(
96
79
  providerResolver: ZLinkProviderResolver | undefined,
97
80
  callback: (handler: THandler) => Promise<TResult>
98
81
  ): Promise<TResult> {
82
+ return lifecycleHandlerScope(owner, providerResolver).run(type, callback);
83
+ }
84
+
85
+ function lifecycleHandlerScope(
86
+ owner: object,
87
+ providerResolver?: ZLinkProviderResolver
88
+ ): LifecycleHandlerInstanceScope {
99
89
  let scope = lifecycleScopes.get(owner);
100
90
  if (scope === undefined) {
101
- scope = Promise.resolve(
102
- new LifecycleHandlerInstanceScope(createHandlerInstanceScope(providerResolver))
103
- );
91
+ scope = new LifecycleHandlerInstanceScope(createHandlerInstanceScope(providerResolver));
104
92
  lifecycleScopes.set(owner, scope);
105
93
  }
106
- return (await scope).run(type, callback);
94
+ return scope;
107
95
  }
108
96
 
109
- export async function disposeLifecycleHandlers(owner: object): Promise<void> {
97
+ export async function disposeLifecycleHandlers(
98
+ owner: object,
99
+ detachedTaskRunner: ZLinkDetachedTaskRunner
100
+ ): Promise<void> {
101
+ if ((detachedTaskRunner as unknown) === undefined) {
102
+ throw new Error('Lifecycle handler disposal requires a detached task runner.');
103
+ }
110
104
  const scope = lifecycleScopes.get(owner);
111
105
  if (scope === undefined) return;
112
- const resolved = await scope;
113
- await resolved.dispose();
106
+ await scope.dispose(detachedTaskRunner);
114
107
  // Keep the closed scope as a tombstone for the lifetime of the owner object.
115
108
  // A late dispatch must fail instead of creating a second activation.
116
109
  }
117
-
118
110
  function createHandlerInstanceScope(
119
111
  providerResolver?: ZLinkProviderResolver,
120
112
  context?: ZLinkMessageContext
@@ -138,72 +130,47 @@ function isHandlerInstanceScopeFactory(value: unknown): value is ZLinkHandlerIns
138
130
  }
139
131
 
140
132
  class DefaultHandlerInstanceScope implements ZLinkHandlerInstanceScope {
141
- private readonly lane = new ZLinkStateLane();
142
133
  private readonly instances = new Map<Type, Promise<unknown>>();
143
134
  private readonly owned: unknown[] = [];
144
135
  private disposed = false;
145
136
 
146
137
  constructor(private readonly providerResolver?: ZLinkProviderResolver) {}
147
138
 
148
- async resolve<T>(type: Type<T>): Promise<T> {
149
- const resolution = await this.lane.run(() => this.resolveCore(type));
150
- if (resolution.activation !== undefined) {
151
- startOutsideStateLane(() => {
152
- void this.activate(type, resolution.activation!);
153
- });
154
- }
155
- return await resolution.promise;
156
- }
157
-
158
- async dispose(): Promise<void> {
159
- const disposal = await this.lane.run(() => this.beginDisposeCore());
160
- if (disposal === undefined) return;
161
-
162
- await Promise.allSettled(disposal.pending);
163
- for (const instance of disposal.owned) {
164
- await disposeOwnedInstance(instance);
165
- }
166
- await this.lane.run(() => this.completeDisposeCore());
167
- }
168
-
169
- private resolveCore<T>(type: Type<T>): HandlerResolution<T> {
139
+ resolve<T>(type: Type<T>): Promise<T> {
170
140
  if (this.disposed) {
171
- throw new Error('Handler instance scope is already disposed.');
141
+ return Promise.reject(new Error('Handler instance scope is already disposed.'));
172
142
  }
173
- let instance = this.instances.get(type) as Promise<T> | undefined;
174
- if (instance !== undefined) return { promise: instance };
175
-
143
+ const existing = this.instances.get(type) as Promise<T> | undefined;
144
+ if (existing !== undefined) return existing;
176
145
  const activation = createDeferred<unknown>();
177
- instance = activation.promise as Promise<T>;
178
146
  this.instances.set(type, activation.promise);
179
- return { promise: instance, activation };
147
+ void this.activate(type, activation);
148
+ return activation.promise as Promise<T>;
180
149
  }
181
150
 
182
- private beginDisposeCore(): HandlerScopeDisposal | undefined {
183
- if (this.disposed) return undefined;
151
+ async dispose(): Promise<void> {
152
+ if (this.disposed) return;
184
153
  this.disposed = true;
185
- return {
186
- pending: [...this.instances.values()],
187
- owned: [...this.owned].reverse()
188
- };
189
- }
190
-
191
- private completeDisposeCore(): void {
192
- this.owned.length = 0;
193
- this.instances.clear();
154
+ await Promise.allSettled(this.instances.values());
155
+ try {
156
+ await disposeOwnedInstances(this.owned);
157
+ } finally {
158
+ this.owned.length = 0;
159
+ this.instances.clear();
160
+ }
194
161
  }
195
-
196
162
  private async activate<T>(type: Type<T>, activation: Deferred<unknown>): Promise<void> {
197
163
  let instance: T;
198
164
  try {
199
- instance = (await this.providerResolver?.create?.(type)) ?? new type();
165
+ const created = this.providerResolver?.create?.(type);
166
+ instance = created === undefined ? new type() : await created;
200
167
  } catch (error) {
201
168
  activation.reject(error);
202
169
  return;
203
170
  }
204
171
 
205
- const accepted = await this.lane.run(() => this.acceptActivationCore(instance));
206
- if (accepted) {
172
+ if (!this.disposed) {
173
+ this.owned.push(instance);
207
174
  activation.resolve(instance);
208
175
  return;
209
176
  }
@@ -214,16 +181,9 @@ class DefaultHandlerInstanceScope implements ZLinkHandlerInstanceScope {
214
181
  activation.reject(error);
215
182
  }
216
183
  }
217
-
218
- private acceptActivationCore(instance: unknown): boolean {
219
- if (this.disposed) return false;
220
- this.owned.push(instance);
221
- return true;
222
- }
223
184
  }
224
185
 
225
186
  class LifecycleHandlerInstanceScope {
226
- private readonly lane = new ZLinkStateLane();
227
187
  private activeInvocations = 0;
228
188
  private closing = false;
229
189
  private idle?: Promise<void>;
@@ -232,12 +192,7 @@ class LifecycleHandlerInstanceScope {
232
192
 
233
193
  constructor(private readonly instances: ZLinkHandlerInstanceScope) {}
234
194
 
235
- async resolve<T>(type: Type<T>): Promise<T> {
236
- const resolution = await this.lane.run(() => ({ promise: this.resolveCore(type) }));
237
- return await resolution.promise;
238
- }
239
-
240
- private resolveCore<T>(type: Type<T>): Promise<T> {
195
+ resolve<T>(type: Type<T>): Promise<T> {
241
196
  this.throwIfClosingCore();
242
197
  return this.instances.resolve(type);
243
198
  }
@@ -246,29 +201,34 @@ class LifecycleHandlerInstanceScope {
246
201
  type: Type<THandler>,
247
202
  callback: (handler: THandler) => Promise<TResult>
248
203
  ): Promise<TResult> {
249
- await this.lane.run(() => this.beginInvocationCore());
204
+ this.beginInvocationCore();
250
205
  try {
251
206
  return await activeLifecycleScope.run(this, async () =>
252
207
  callback(await this.instances.resolve(type))
253
208
  );
254
209
  } finally {
255
- await this.lane.run(() => this.completeInvocationCore());
210
+ this.completeInvocationCore();
256
211
  }
257
212
  }
258
213
 
259
- async dispose(): Promise<void> {
214
+ async dispose(detachedTaskRunner: ZLinkDetachedTaskRunner): Promise<void> {
260
215
  const disposeFromActiveInvocation = activeLifecycleScope.getStore() === this;
261
- const disposal = await this.lane.run(() => this.beginDisposeCore());
216
+ const disposal = this.beginDisposeCore();
262
217
  if (disposal.deferred !== undefined) {
263
- startOutsideStateLane(() => {
218
+ startOutsideLifecycleInvocation(() => {
264
219
  void this.disposeWhenIdle(disposal);
220
+ if (disposeFromActiveInvocation) {
221
+ detachedTaskRunner.runDetached(
222
+ LifecycleHandlerInstanceScope.name,
223
+ () => disposal.completion
224
+ );
225
+ }
265
226
  });
266
227
  }
267
228
  if (disposeFromActiveInvocation) {
268
229
  // Waiting here would make the current handler wait for its own terminal
269
230
  // completion. The same disposal promise continues after run() releases
270
231
  // the final active invocation.
271
- void disposal.completion.catch(() => undefined);
272
232
  return;
273
233
  }
274
234
  await disposal.completion;
@@ -318,7 +278,7 @@ class LifecycleHandlerInstanceScope {
318
278
  await this.instances.dispose();
319
279
  deferred.resolve();
320
280
  } catch (error) {
321
- await this.lane.run(() => this.failDisposalCore(deferred.promise));
281
+ this.failDisposalCore(deferred.promise);
322
282
  deferred.reject(error);
323
283
  }
324
284
  }
@@ -340,8 +300,8 @@ function createDeferred<T>(): Deferred<T> {
340
300
  return { promise, resolve, reject };
341
301
  }
342
302
 
343
- function startOutsideStateLane<T>(work: () => T): T {
344
- return detachedStateLaneResource.runInAsyncScope(work);
303
+ function startOutsideLifecycleInvocation<T>(work: () => T): T {
304
+ return detachedLifecycleResource.runInAsyncScope(work);
345
305
  }
346
306
 
347
307
  export async function disposeOwnedInstance(instance: unknown): Promise<void> {
@@ -359,3 +319,16 @@ export async function disposeOwnedInstance(instance: unknown): Promise<void> {
359
319
  await value.onModuleDestroy();
360
320
  }
361
321
  }
322
+
323
+ export async function disposeOwnedInstances(instances: readonly unknown[]): Promise<void> {
324
+ const failures: unknown[] = [];
325
+ for (let index = instances.length - 1; index >= 0; index -= 1) {
326
+ try {
327
+ await disposeOwnedInstance(instances[index]);
328
+ } catch (error) {
329
+ failures.push(error);
330
+ }
331
+ }
332
+ if (failures.length === 1) throw failures[0];
333
+ if (failures.length > 1) throw new AggregateError(failures, 'Handler scope cleanup failed.');
334
+ }
@@ -20,10 +20,6 @@ import {
20
20
  type ZLinkRemoteActorPacketTarget,
21
21
  type ZLinkRemoteBoundSessionTarget
22
22
  } from '../actors';
23
- import {
24
- mergeRemoteBoundSessionTarget,
25
- preferredRemoteBoundSessionTarget
26
- } from '../actors/actor-runtime-state';
27
23
  import type { DefaultZLinkActorManager } from '../actors';
28
24
  import {
29
25
  decodeRemoteActorSessionBinding,
@@ -44,13 +40,14 @@ import { streamMetadataMap } from '../actors/bound-session-wire';
44
40
  import { decodeRoutingId, normalizeRoutingId, routingIdsEqual } from '../routing-id';
45
41
  import { ZLinkSubmitStatus } from '../messaging/submission-result';
46
42
  import type { DefaultZLinkSpotManager, ZLinkSpotNodeRuntimeManager } from '../spots';
47
- import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
48
43
  import type { ZLinkDetachedTaskRunner } from '../spots/spot-actor-join-dispatch';
49
44
  import type { ZLinkBoundSessionResponseTarget } from '../streams';
50
45
  import type {
51
46
  ZLinkBoundSessionResponsePort,
47
+ ZLinkSessionBindingConfirmationOptions,
52
48
  ZLinkStreamActorLookupPort
53
49
  } from '../streams/stream-binding-runtime-ports';
50
+ import type { ServiceStreamSessionBinding } from '../foundation/service-runtime-contracts';
54
51
  import { actorSessionBindingRuntimeOwnerIfRegistered } from '../streams/actor-session-binding-runtime-owner';
55
52
  import {
56
53
  decodeStreamHeader,
@@ -65,10 +62,6 @@ import type { MeshRouterResolver } from './mesh-router-resolver';
65
62
  import { ZLinkRemoteActorPacketTargetStore } from './remote-actor-packet-target-store';
66
63
  import type { ZLinkStoreLocationResolvers } from '../locations';
67
64
 
68
- const REMOTE_SESSION_BIND_RETRY_DEADLINE_MS = 30_000;
69
- const REMOTE_SESSION_BIND_RETRY_INITIAL_DELAY_MS = 25;
70
- const REMOTE_SESSION_BIND_RETRY_MAX_DELAY_MS = 1_000;
71
-
72
65
  export interface ZLinkActorPacketRelayOptions {
73
66
  readonly requestTimeoutMs?: number;
74
67
  readonly routeTransport: ZLinkActorRoutedJoinTransport;
@@ -120,12 +113,7 @@ export class ZLinkActorPacketRelay {
120
113
  ): Promise<void> {
121
114
  const state = this.options.actorManager()?.getState(actor.actorId);
122
115
  const currentRemoteBoundSessionTarget =
123
- state?.spotId === undefined
124
- ? undefined
125
- : preferredRemoteBoundSessionTarget(
126
- state.remoteBoundSessionTarget,
127
- state.boundSessionTransferTarget
128
- );
116
+ state?.spotId === undefined ? undefined : state.remoteBoundSessionTarget;
129
117
  const currentRemoteActorPacketTarget =
130
118
  state?.spotId === undefined ? undefined : state.remoteActorPacketTarget;
131
119
  const remoteTarget =
@@ -162,11 +150,8 @@ export class ZLinkActorPacketRelay {
162
150
  await this.targets.updateFromWire(actorId, value);
163
151
  }
164
152
 
165
- actorPacketTargetForState(
166
- actorId: string,
167
- routerChannelIdHint?: string
168
- ): ZLinkRemoteActorPacketTarget | undefined {
169
- return this.targets.targetForState(actorId, routerChannelIdHint);
153
+ actorPacketTargetForState(actorId: string): ZLinkRemoteActorPacketTarget | undefined {
154
+ return this.targets.targetForState(actorId);
170
155
  }
171
156
 
172
157
  async notifyActorDisconnectedById(actorId: string, signal?: AbortSignal): Promise<void> {
@@ -174,10 +159,7 @@ export class ZLinkActorPacketRelay {
174
159
  const remoteTarget =
175
160
  state === undefined
176
161
  ? undefined
177
- : (preferredRemoteBoundSessionTarget(
178
- state.remoteBoundSessionTarget,
179
- state.boundSessionTransferTarget
180
- ) ?? state.remoteActorPacketTarget);
162
+ : (state.remoteBoundSessionTarget ?? state.remoteActorPacketTarget);
181
163
  if (remoteTarget !== undefined) {
182
164
  await this.notifyRemoteActorDisconnected(actorId, remoteTarget, signal);
183
165
  return;
@@ -288,66 +270,28 @@ export class ZLinkActorPacketRelay {
288
270
  if (frameHeader.kind !== ZLinkStreamMessageKind.Send) {
289
271
  throw new Error('Remote actor session binding requires a send frame.');
290
272
  }
291
- const { sessionNodeRid, sessionRid } = decodeRemoteActorSessionBinding(
292
- messageToBytes(body)
293
- );
273
+ const { sessionNodeRid } = decodeRemoteActorSessionBinding(messageToBytes(body));
294
274
  if (!routingIdsEqual(sessionNodeRid, _routeContext.sourceNodeRid)) {
295
275
  throw new Error(
296
276
  'Remote actor session binding source did not match the declared session node.'
297
277
  );
298
278
  }
279
+ // The Actor owner installs the binding from the Session owner's
280
+ // command 38 (Session–Actor binding §5); this relay confirmation only
281
+ // acknowledges that the Actor is still owned here.
299
282
  const state = this.options.actorManager()?.getState(relay.actorId);
300
- const actorRef = state?.nativeActorRef;
301
- if (state === undefined || actorRef === undefined) {
283
+ if (state?.nativeActorRef === undefined) {
302
284
  throw new Error(`Actor '${relay.actorId}' does not have a concrete actor ref.`);
303
285
  }
304
- if (this.requireSpotNodeRuntime().primaryMeshNode === undefined) {
305
- throw new Error('MeshNode actor runtime is not started.');
306
- }
307
- const target =
308
- relay.routerChannelId === undefined
309
- ? this.options.meshRouters.remoteBoundSessionTargetForSource(sessionNodeRid)
310
- : {
311
- routerChannelId: relay.routerChannelId,
312
- targetNodeRid: sessionNodeRid,
313
- spotId: sessionNodeRid
314
- };
315
- if (target === undefined) {
316
- throw new Error('Remote actor session binding did not declare a return router.');
317
- }
318
- const bindingGeneration = (
319
- fallbackActorRef as
320
- | (ActorRef & {
321
- readonly bindingGeneration?: bigint;
322
- })
323
- | undefined
324
- )?.bindingGeneration;
325
- const refreshedTarget = mergeRemoteBoundSessionTarget(
326
- {
327
- ...target,
328
- sessionNodeRid,
329
- sessionRid,
330
- ...(bindingGeneration === undefined ? {} : { bindingGeneration })
331
- },
332
- preferredRemoteBoundSessionTarget(
333
- state.remoteBoundSessionTarget,
334
- state.boundSessionTransferTarget
335
- )
336
- );
337
- state.setRemoteBoundSessionTarget(refreshedTarget);
338
286
  return { ok: true, response: { acknowledged: true } };
339
287
  }
340
288
  if (frameHeader.name === ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET) {
341
289
  this.requireCurrentRemoteBinding(relay, _routeContext);
342
- this.options
343
- .actorManager()
344
- ?.getState(relay.actorId)
345
- ?.setRemoteBoundSessionTarget(undefined);
346
290
  await this.notifyLocalActorDisconnectedById(relay.actorId);
347
291
  return {
348
292
  ok: true,
349
293
  actorPacketTarget: encodeRemoteActorPacketTarget(
350
- this.actorPacketTargetForState(relay.actorId, relay.routerChannelId)
294
+ this.actorPacketTargetForState(relay.actorId)
351
295
  )
352
296
  };
353
297
  }
@@ -400,7 +344,7 @@ export class ZLinkActorPacketRelay {
400
344
  return {
401
345
  ok: true,
402
346
  actorPacketTarget: encodeRemoteActorPacketTarget(
403
- this.actorPacketTargetForState(relay.actorId, relay.routerChannelId)
347
+ this.actorPacketTargetForState(relay.actorId)
404
348
  )
405
349
  };
406
350
  }
@@ -472,7 +416,7 @@ export class ZLinkActorPacketRelay {
472
416
  ok: true,
473
417
  deferredResponse: true,
474
418
  actorPacketTarget: encodeRemoteActorPacketTarget(
475
- this.actorPacketTargetForState(relay.actorId, relay.routerChannelId)
419
+ this.actorPacketTargetForState(relay.actorId)
476
420
  )
477
421
  };
478
422
  }
@@ -497,7 +441,7 @@ export class ZLinkActorPacketRelay {
497
441
  ok: true,
498
442
  response,
499
443
  actorPacketTarget: encodeRemoteActorPacketTarget(
500
- this.actorPacketTargetForState(relay.actorId, relay.routerChannelId)
444
+ this.actorPacketTargetForState(relay.actorId)
501
445
  )
502
446
  };
503
447
  } catch (error) {
@@ -520,37 +464,12 @@ export class ZLinkActorPacketRelay {
520
464
  async relayActorPacket(
521
465
  actor: ZLinkSessionActor,
522
466
  frameHeader: ZLinkStreamFrameHeader,
523
- payload: Message,
524
- signal?: AbortSignal
467
+ payload: Message
525
468
  ): Promise<boolean> {
526
- // Spec 32:87 — a route/owner that is not currently usable is
527
- // Unavailable and retryable within the request deadline. Right after a
528
- // relocation the cached packet target can carry a transiently
529
- // incomplete Ready authority fence (route publication still
530
- // converging); failing the request on the fence check would surface a
531
- // NotFound for a Spot that exists and is Ready on its owner. Clear the
532
- // stale hint and re-resolve with a short bound instead.
533
- const fenceRetryDeadlineMs = performance.now() + 1_000;
534
- for (;;) {
535
- try {
536
- if (await this.relayRemoteActorPacket(actor, frameHeader, payload, signal)) {
537
- return true;
538
- }
539
- return await this.relayLocalActorPacket(actor, frameHeader, payload, signal);
540
- } catch (error) {
541
- if (
542
- !(
543
- error instanceof Error && error.message.includes('no complete Ready authority fence')
544
- ) ||
545
- performance.now() >= fenceRetryDeadlineMs
546
- ) {
547
- throw error;
548
- }
549
- this.targets.clear(actor.actorId);
550
- this.options.actorManager()?.getState(actor.actorId)?.setRemoteActorPacketTarget(undefined);
551
- await new Promise<void>((resolve) => setTimeout(resolve, 25));
552
- }
469
+ if (await this.relayRemoteActorPacket(actor, frameHeader, payload)) {
470
+ return true;
553
471
  }
472
+ return this.relayLocalActorPacket(actor, frameHeader, payload);
554
473
  }
555
474
 
556
475
  async confirmRemoteSessionBinding(
@@ -558,10 +477,13 @@ export class ZLinkActorPacketRelay {
558
477
  sessionNodeRid: RoutingId,
559
478
  sessionRid: RoutingId,
560
479
  signal?: AbortSignal,
561
- options?: { readonly waitForAcknowledgement?: boolean }
480
+ options?: ZLinkSessionBindingConfirmationOptions
562
481
  ): Promise<void> {
563
482
  const target = this.targets.targetForActorRef(actor);
564
- if (target === undefined) return;
483
+ if (target === undefined) {
484
+ this.installSameNodeSessionBinding(actor.actorId, options?.binding);
485
+ return;
486
+ }
565
487
  const header = encodeStreamHeader({
566
488
  kind: ZLinkStreamMessageKind.Send,
567
489
  codec: ZLinkStreamCodec.Json,
@@ -579,12 +501,9 @@ export class ZLinkActorPacketRelay {
579
501
  payload: encodeRemoteActorSessionBinding({ sessionNodeRid, sessionRid })
580
502
  });
581
503
  if (options?.waitForAcknowledgement === false) {
582
- await this.retryRemoteSessionBindingSend(
583
- withDefaultSpotKind(target),
584
- request,
585
- performance.now() + REMOTE_SESSION_BIND_RETRY_DEADLINE_MS,
586
- REMOTE_SESSION_BIND_RETRY_INITIAL_DELAY_MS
587
- );
504
+ await this.options.routeTransport.sendToSpot(withDefaultSpotKind(target), request, {
505
+ packetName: ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
506
+ });
588
507
  return;
589
508
  }
590
509
  const reply = await this.requestRemoteTarget<{
@@ -624,49 +543,44 @@ export class ZLinkActorPacketRelay {
624
543
  }
625
544
  }
626
545
 
627
- private async retryRemoteSessionBindingSend(
628
- target: ZLinkSpotRouteTarget,
629
- request: unknown,
630
- deadline: number,
631
- delayMs: number
632
- ): Promise<void> {
633
- try {
634
- await this.options.routeTransport.sendToSpot(target, request, {
635
- packetName: ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
636
- });
637
- } catch (error) {
638
- if (performance.now() >= deadline) {
639
- // Spec 32-framework-error-model: DeadlineExceeded(7). Retry
640
- // exhaustion on the one-way bind send remains diagnostics-only but
641
- // the caller waits for its bounded submission terminal so later
642
- // application relay cannot overtake it.
643
- this.options
644
- .errorSink()
645
- .reportRuntimeTaskException(
646
- 'remote session binding send',
647
- createInternalFrameworkException(
648
- ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
649
- 'Remote actor session binding send retries exceeded their deadline.',
650
- error
651
- )
652
- );
653
- return;
654
- }
655
- await new Promise<void>((resolve) => setTimeout(resolve, delayMs));
656
- await this.retryRemoteSessionBindingSend(
657
- target,
658
- request,
659
- deadline,
660
- Math.min(delayMs * 2, REMOTE_SESSION_BIND_RETRY_MAX_DELAY_MS)
546
+ /**
547
+ * Session–Actor binding §5·§6 (.NET ZLinkSessionActorCoordinator rule): a
548
+ * same-node bind installs the Session owner's registry identity through the
549
+ * same install a remote command 38 uses, so relocation seals and carries it.
550
+ */
551
+ private installSameNodeSessionBinding(
552
+ actorId: string,
553
+ binding: ServiceStreamSessionBinding | undefined
554
+ ): void {
555
+ // The Actor is gone (destroyed or relocated away): nothing to record.
556
+ const state = this.options.actorManager()?.getState(actorId);
557
+ // No registry binding exists only for a native-fallback bind, which has no
558
+ // Session owner registry (managed-stream.ts `bindActor` fallback).
559
+ if (state === undefined || binding === undefined) return;
560
+ const route = this.options.meshRouters.remoteBoundSessionTargetForSource(
561
+ binding.sessionOwnerNodeRid
562
+ );
563
+ if (route === undefined) {
564
+ throw createInternalFrameworkException(
565
+ ZLinkFrameworkInternalErrorKind.ActorLocationStale,
566
+ `Actor '${actorId}' Session route is unavailable.`
661
567
  );
662
568
  }
569
+ state.installBoundSessionBinding({
570
+ ...route,
571
+ sessionNodeRid: binding.sessionOwnerNodeRid,
572
+ sessionRid: binding.sessionRid,
573
+ sessionOwnerNodeGeneration: binding.sessionOwnerNodeGeneration,
574
+ sessionOwnerId: binding.sessionOwnerId,
575
+ sessionOwnerLeaseGeneration: binding.sessionOwnerLeaseGeneration,
576
+ bindingGeneration: binding.bindingGeneration
577
+ });
663
578
  }
664
579
 
665
580
  async relayRemoteActorPacket(
666
581
  actor: ZLinkSessionActor,
667
582
  frameHeader: ZLinkStreamFrameHeader,
668
- payload: Message,
669
- signal?: AbortSignal
583
+ payload: Message
670
584
  ): Promise<boolean> {
671
585
  const streamRuntime = this.options.streamBindingRuntime();
672
586
  const responseTarget = await streamRuntime.captureBoundSessionResponseTarget(actor);
@@ -755,8 +669,7 @@ export class ZLinkActorPacketRelay {
755
669
  remoteAddress.routerChannelId,
756
670
  String(remoteAddress.targetNodeRid),
757
671
  ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET,
758
- request,
759
- signal
672
+ request
760
673
  );
761
674
  if (result.status !== ZLinkSubmitStatus.Submitted) {
762
675
  throw new Error(`Actor '${actor.actorId}' remote node relay was not admitted.`);
@@ -765,8 +678,7 @@ export class ZLinkActorPacketRelay {
765
678
  }
766
679
  if (frameHeader.kind === ZLinkStreamMessageKind.Send || frameHeader.requestSeq === undefined) {
767
680
  await this.options.routeTransport.sendToSpot(remoteAddress, request, {
768
- packetName: ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET,
769
- signal
681
+ packetName: ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
770
682
  });
771
683
  return true;
772
684
  }
@@ -786,8 +698,7 @@ export class ZLinkActorPacketRelay {
786
698
  throw new Error(`Remote actor packet relay reply was empty for '${actor.actorId}'.`);
787
699
  }
788
700
  return JSON.parse(parts[0].getString('utf8')) as typeof reply;
789
- },
790
- signal
701
+ }
791
702
  );
792
703
  const actorPacketTarget = this.targets.decodeFromWire(reply.actorPacketTarget);
793
704
  const currentStoredRoute = await streamRuntime.sessionRouteFence(actor.actorId);
@@ -894,13 +805,7 @@ export class ZLinkActorPacketRelay {
894
805
  routeContext: ZLinkRouteMessageContext
895
806
  ): void {
896
807
  const state = this.options.actorManager()?.getState(relay.actorId);
897
- const current =
898
- state === undefined
899
- ? undefined
900
- : preferredRemoteBoundSessionTarget(
901
- state.remoteBoundSessionTarget,
902
- state.boundSessionTransferTarget
903
- );
808
+ const current = state?.boundSession;
904
809
  if (
905
810
  current === undefined ||
906
811
  current.sessionNodeRid === undefined ||
@@ -953,10 +858,8 @@ export class ZLinkActorPacketRelay {
953
858
  private async relayLocalActorPacket(
954
859
  actor: ZLinkSessionActor,
955
860
  frameHeader: ZLinkStreamFrameHeader,
956
- payload: Message,
957
- signal?: AbortSignal
861
+ payload: Message
958
862
  ): Promise<boolean> {
959
- void signal;
960
863
  const state = this.options.actorManager()?.getState(actor.actorId);
961
864
  const spotId = state?.spotId as RoutingId | undefined;
962
865
  const hasActiveSpot =