@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
@@ -6,6 +6,7 @@ const payload_codec_1 = require("../messaging/payload-codec");
6
6
  const protocol_1 = require("./protocol");
7
7
  const abort_1 = require("../abort");
8
8
  const execution_1 = require("../execution");
9
+ const actor_session_binding_registry_1 = require("./actor-session-binding-registry");
9
10
  const actor_session_lifecycle_coordinator_1 = require("./actor-session-lifecycle-coordinator");
10
11
  const managed_stream_1 = require("./managed-stream");
11
12
  class ZLinkBoundActorRelaySender {
@@ -23,8 +24,7 @@ class ZLinkBoundActorRelaySender {
23
24
  const header = dispatchHeader === undefined
24
25
  ? await this.currentHeader(actor)
25
26
  : await this.requireDispatchHeader(actor, dispatchHeader);
26
- if (header.kind === protocol_1.ZLinkStreamMessageKind.Request
27
- && header.requestSeq !== undefined) {
27
+ if (header.kind === protocol_1.ZLinkStreamMessageKind.Request && header.requestSeq !== undefined) {
28
28
  const operation = async () => {
29
29
  const admission = await this.routes.beginAcceptedRequestFrameWhenReady(actor.actorId, actor.bindingToken, signal);
30
30
  try {
@@ -34,13 +34,14 @@ class ZLinkBoundActorRelaySender {
34
34
  await admission.complete();
35
35
  }
36
36
  };
37
- if (await this.routes.isSealed(actor.actorId) && (0, execution_1.captureZLinkExecutionTurn)() !== undefined) {
37
+ if ((await this.routes.isSealed(actor.actorId)) &&
38
+ (0, execution_1.captureZLinkExecutionTurn)() !== undefined) {
38
39
  void operation().catch(() => undefined);
39
40
  return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
40
41
  }
41
42
  return await operation();
42
43
  }
43
- if (await this.routes.isSealed(actor.actorId) && (0, execution_1.captureZLinkExecutionTurn)() !== undefined) {
44
+ if ((await this.routes.isSealed(actor.actorId)) && (0, execution_1.captureZLinkExecutionTurn)() !== undefined) {
44
45
  // Spec 32:62 — a Send completes once the source outbound queue
45
46
  // accepts it; spec 05 — infrastructure send progress must not depend
46
47
  // on the application turn. When the CALLER IS an application turn
@@ -53,17 +54,19 @@ class ZLinkBoundActorRelaySender {
53
54
  // Non-turn callers (stream ingress relays) keep the waiting
54
55
  // semantics so a held frame across a failed rebind still
55
56
  // terminalizes to the caller.
56
- void this.routes.runAcceptedFrameWhenReady(actor.actorId, actor.bindingToken, () => this.relayAcceptedFrame(actor, payload, signal), signal).catch(() => undefined);
57
+ void this.routes
58
+ .runAcceptedFrameWhenReady(actor.actorId, actor.bindingToken, () => this.relayAcceptedFrame(actor, payload, signal), signal)
59
+ .catch(() => undefined);
57
60
  return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
58
61
  }
59
62
  return this.routes.runAcceptedFrameWhenReady(actor.actorId, actor.bindingToken, () => this.relayAcceptedFrame(actor, payload, signal), signal);
60
63
  }
61
64
  async relayAcceptedFrame(actor, payload, signal, header, requestAdmission) {
62
- const activeHeader = header ?? await this.currentHeader(actor);
65
+ const activeHeader = header ?? (await this.currentHeader(actor));
63
66
  const started = await this.lifecycle.run(actor.actorId, async () => {
64
67
  const completion = this.relayInsideLifecycle(actor, payload, signal, activeHeader, requestAdmission);
65
- if (activeHeader.kind === protocol_1.ZLinkStreamMessageKind.Request
66
- && activeHeader.requestSeq !== undefined) {
68
+ if (activeHeader.kind === protocol_1.ZLinkStreamMessageKind.Request &&
69
+ activeHeader.requestSeq !== undefined) {
67
70
  // A routed REQUEST only needs this lane while its ordered submission
68
71
  // is started. Its admission acknowledgement can depend on relocation
69
72
  // route publication, and command 44 uses the same lane. Keeping the
@@ -94,7 +97,7 @@ class ZLinkBoundActorRelaySender {
94
97
  return header;
95
98
  }
96
99
  async relayInsideLifecycle(actor, payload, signal, currentHeader, requestAdmission) {
97
- const header = currentHeader ?? await this.currentHeader(actor);
100
+ const header = currentHeader ?? (await this.currentHeader(actor));
98
101
  const held = requestAdmission?.beginSubmission(signal);
99
102
  if (held !== undefined)
100
103
  await held;
@@ -135,9 +138,9 @@ class ZLinkBoundActorRelaySender {
135
138
  await this.routes.unbind(actor.actorId, route.context, actor.bindingToken);
136
139
  return route;
137
140
  });
138
- if (unbindNative
139
- && detached.bindingToken === actor.bindingToken
140
- && detached.context.stream instanceof managed_stream_1.ZLinkManagedStream) {
141
+ if (unbindNative &&
142
+ detached.bindingToken === actor.bindingToken &&
143
+ detached.context.stream instanceof managed_stream_1.ZLinkManagedStream) {
141
144
  await detached.context.stream.unbindActor(actor.actorId, this.options.actorBindTimeoutMs ?? 2000, signal);
142
145
  }
143
146
  await this.options.notifyDisconnected?.(actor, signal);
@@ -148,16 +151,16 @@ class ZLinkBoundActorRelaySender {
148
151
  await Promise.allSettled(snapshot.map(async (actor) => {
149
152
  const detached = await this.lifecycle.run(actor.actorId, async () => {
150
153
  const route = await this.routes.route(actor.actorId);
151
- if (route === undefined
152
- || route.context !== context
153
- || route.actor !== actor
154
- || route.bindingToken !== actor.bindingToken) {
154
+ if (route === undefined ||
155
+ route.context !== context ||
156
+ route.actor !== actor ||
157
+ route.bindingToken !== actor.bindingToken) {
155
158
  return false;
156
159
  }
157
160
  // The transport is already closed, so remove its exact route before
158
161
  // invoking application lifecycle code. A reconnect can then install
159
162
  // a successor while this best-effort notification is in flight.
160
- await this.routes.unbind(actor.actorId, context, actor.bindingToken);
163
+ await this.routes.unbind(actor.actorId, context, actor.bindingToken, actor_session_binding_registry_1.ZLinkActorSessionBindingTermination.PhysicalDisconnect);
161
164
  return true;
162
165
  });
163
166
  if (!detached)
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DefaultZLinkBoundSessionResponseTarget = void 0;
4
4
  exports.boundSessionErrorPayload = boundSessionErrorPayload;
5
+ const contracts_1 = require("../../contracts");
6
+ const channel_envelope_1 = require("../channels/channel-envelope");
7
+ const route_disconnected_error_1 = require("../channels/route-disconnected-error");
5
8
  const submission_result_1 = require("../messaging/submission-result");
6
9
  const protocol_1 = require("./protocol");
7
10
  class DefaultZLinkBoundSessionResponseTarget {
@@ -36,7 +39,11 @@ class DefaultZLinkBoundSessionResponseTarget {
36
39
  exports.DefaultZLinkBoundSessionResponseTarget = DefaultZLinkBoundSessionResponseTarget;
37
40
  function boundSessionErrorPayload(error) {
38
41
  return {
39
- code: error instanceof Error ? error.constructor.name : 'RemoteError',
42
+ code: (0, channel_envelope_1.channelErrorCodeName)(error instanceof contracts_1.ZLinkFrameworkException
43
+ ? error.kind
44
+ : error instanceof route_disconnected_error_1.ZLinkRouteDisconnectedError
45
+ ? contracts_1.ZLinkFrameworkErrorKind.Unavailable
46
+ : contracts_1.ZLinkFrameworkErrorKind.InternalFailure),
40
47
  message: errorMessage(error)
41
48
  };
42
49
  }
@@ -45,4 +45,5 @@ export declare class ZLinkBoundSessionService {
45
45
  private submitNativeBoundSessionPayload;
46
46
  private submitNativeBoundSessionFrame;
47
47
  private requireTransport;
48
+ private actorSlot;
48
49
  }
@@ -20,7 +20,7 @@ class ZLinkBoundSessionService {
20
20
  async sendBoundSession(actorId, message, packetName, metadata, signal) {
21
21
  (0, abort_1.throwIfAborted)(signal);
22
22
  const route = await this.routes.requireRoute(actorId);
23
- const frame = this.frameMessages.createJsonFrameMessage(protocol_1.ZLinkStreamMessageKind.Send, (0, protocol_1.resolvePacketName)(message, packetName), metadata, false, undefined, message);
23
+ const frame = this.frameMessages.createJsonFrameMessage(protocol_1.ZLinkStreamMessageKind.Send, (0, protocol_1.resolvePacketName)(message, packetName), metadata, false, undefined, message, undefined, this.actorSlot(route));
24
24
  try {
25
25
  const result = await this.requireTransport().send(actorId, frame, {
26
26
  bindingToken: route.bindingToken,
@@ -40,7 +40,7 @@ class ZLinkBoundSessionService {
40
40
  if (route === undefined) {
41
41
  return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
42
42
  }
43
- const frame = this.frameMessages.createJsonFrameMessage(protocol_1.ZLinkStreamMessageKind.Send, (0, protocol_1.resolvePacketName)(message, packetName), metadata, false, undefined, message);
43
+ const frame = this.frameMessages.createJsonFrameMessage(protocol_1.ZLinkStreamMessageKind.Send, (0, protocol_1.resolvePacketName)(message, packetName), metadata, false, undefined, message, undefined, this.actorSlot(route));
44
44
  try {
45
45
  (0, abort_1.throwIfAborted)(signal);
46
46
  if ((await this.routes.route(actorId))?.bindingToken !== route.bindingToken) {
@@ -114,7 +114,7 @@ class ZLinkBoundSessionService {
114
114
  const header = runtime_message_1.ZLinkBufferMessage.fromOwned(Buffer.from(encodedBindHeader.buffer, encodedBindHeader.byteOffset, encodedBindHeader.byteLength));
115
115
  const body = runtime_message_1.ZLinkBufferMessage.fromOwned(Buffer.alloc(0));
116
116
  try {
117
- if (!await stream.sendBoundActor(actorRef.actorId, [header, body], 0)) {
117
+ if (!(await stream.sendBoundActor(actorRef.actorId, [header, body], 0))) {
118
118
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, `Actor '${actorRef.actorId}' remote bound session bind relay failed.`);
119
119
  }
120
120
  }
@@ -124,7 +124,7 @@ class ZLinkBoundSessionService {
124
124
  }
125
125
  }
126
126
  async writeLocalBoundSessionFrame(actorId, route, kind, packetName, metadata, compressPayload, requestSeq, payload, operationName) {
127
- const frame = this.frameMessages.createJsonFrameMessage(kind, packetName, metadata, compressPayload, requestSeq, payload);
127
+ const frame = this.frameMessages.createJsonFrameMessage(kind, packetName, metadata, compressPayload, requestSeq, payload, undefined, this.actorSlot(route));
128
128
  try {
129
129
  if ((await this.routes.route(actorId))?.bindingToken !== route.bindingToken) {
130
130
  return false;
@@ -165,6 +165,9 @@ class ZLinkBoundSessionService {
165
165
  }
166
166
  return this.options.transport;
167
167
  }
168
+ actorSlot(route) {
169
+ return route.actorSlot;
170
+ }
168
171
  }
169
172
  exports.ZLinkBoundSessionService = ZLinkBoundSessionService;
170
173
  function requireBoundSessionGeneration(actorRef) {
@@ -183,14 +186,13 @@ function toBoundSessionSendActorRef(actor) {
183
186
  }
184
187
  function boundSessionSendFence(node, backendActor, actor) {
185
188
  const internal = actor;
186
- const ownerNodeGeneration = internal.ownerNodeGeneration
187
- ?? node.actorNodeGeneration?.(backendActor);
188
- if (internal.ownershipGeneration === undefined
189
- || internal.ownershipGeneration <= 0n
190
- || internal.ownerLeaseGeneration === undefined
191
- || internal.ownerLeaseGeneration <= 0n
192
- || ownerNodeGeneration === undefined
193
- || ownerNodeGeneration <= 0n) {
189
+ const ownerNodeGeneration = internal.ownerNodeGeneration ?? node.actorNodeGeneration?.(backendActor);
190
+ if (internal.ownershipGeneration === undefined ||
191
+ internal.ownershipGeneration <= 0n ||
192
+ internal.ownerLeaseGeneration === undefined ||
193
+ internal.ownerLeaseGeneration <= 0n ||
194
+ ownerNodeGeneration === undefined ||
195
+ ownerNodeGeneration <= 0n) {
194
196
  return undefined;
195
197
  }
196
198
  return Object.freeze({
@@ -40,8 +40,9 @@ class ZLinkStreamRuntimeManager {
40
40
  applicationJobQueue;
41
41
  constructor(options) {
42
42
  this.options = options;
43
- this.applicationJobQueue = options.applicationJobQueue
44
- ?? new application_job_queue_1.ApplicationJobQueue((0, application_job_queue_1.resolveApplicationJobQueueConfiguration)());
43
+ this.applicationJobQueue =
44
+ options.applicationJobQueue ??
45
+ new application_job_queue_1.ApplicationJobQueue((0, application_job_queue_1.resolveApplicationJobQueueConfiguration)());
45
46
  }
46
47
  start() {
47
48
  if (this.options.registration.streamNodes.size === 0) {
@@ -75,20 +76,19 @@ class ZLinkStreamRuntimeManager {
75
76
  if (actorDispatchEnabled) {
76
77
  for (const [meshName, mesh] of this.options.registration.spotNodes) {
77
78
  const isPrimaryMesh = meshName === applicationMeshName;
78
- if (!isPrimaryMesh
79
- && mesh.objectRole !== 'client'
80
- && mesh.objectRole !== 'server')
79
+ if (!isPrimaryMesh && mesh.objectRole !== 'client' && mesh.objectRole !== 'server')
81
80
  continue;
82
- const meshNode = this.options.nativeMeshNodeForName?.(meshName)
83
- ?? (isPrimaryMesh ? nativeMeshNode : undefined);
84
- const completions = this.options.meshCompletionsForName?.(meshName)
85
- ?? (isPrimaryMesh ? meshCompletions : undefined);
81
+ const meshNode = this.options.nativeMeshNodeForName?.(meshName) ??
82
+ (isPrimaryMesh ? nativeMeshNode : undefined);
83
+ const completions = this.options.meshCompletionsForName?.(meshName) ??
84
+ (isPrimaryMesh ? meshCompletions : undefined);
86
85
  const createService = meshNode?.createStreamSessionService;
87
86
  if (typeof createService !== 'function' || completions === undefined)
88
87
  continue;
89
88
  const service = createService.call(meshNode, socket.nativeInstance);
90
89
  const bindingOwner = (0, actor_session_binding_runtime_owner_1.actorSessionBindingRuntimeOwner)(this.options.bindingRuntime);
91
90
  (0, service_session_binding_ingress_port_1.registerServiceSessionBindingIngressPort)(service, {
91
+ actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid),
92
92
  retainOutbound: (claim, delivery) => bindingOwner.admitRelocationOutbound(claim, delivery),
93
93
  clearOutbound: (actorId, error) => bindingOwner.clearRelocation(actorId, error)
94
94
  });
@@ -112,7 +112,7 @@ class ZLinkStreamRuntimeManager {
112
112
  applicationJobQueue: this.applicationJobQueue,
113
113
  nativeSessionService,
114
114
  meshCompletions,
115
- nativeSessionRouteForMesh: meshName => nativeSessionRoutes.get(meshName),
115
+ nativeSessionRouteForMesh: (meshName) => nativeSessionRoutes.get(meshName),
116
116
  monitor,
117
117
  bindingRuntime: this.options.bindingRuntime,
118
118
  acceptNewSession: () => this.options.acceptNewSession?.(applicationMeshName) !== false,
@@ -131,7 +131,7 @@ class ZLinkStreamRuntimeManager {
131
131
  socket,
132
132
  monitor,
133
133
  nativeSessionService,
134
- nativeSessionServices: [...nativeSessionRoutes.values()].map(route => route.service)
134
+ nativeSessionServices: [...nativeSessionRoutes.values()].map((route) => route.service)
135
135
  });
136
136
  }
137
137
  }
@@ -140,8 +140,8 @@ class ZLinkStreamRuntimeManager {
140
140
  this.nodes.clear();
141
141
  for (const node of nodes.reverse()) {
142
142
  await node.runtime.dispose();
143
- const nativeServices = node.nativeSessionServices
144
- ?? (node.nativeSessionService === undefined ? [] : [node.nativeSessionService]);
143
+ const nativeServices = node.nativeSessionServices ??
144
+ (node.nativeSessionService === undefined ? [] : [node.nativeSessionService]);
145
145
  for (const service of nativeServices) {
146
146
  service.shutdown(1000);
147
147
  service.close();
@@ -167,9 +167,10 @@ class ZLinkStreamSessionRuntime extends stream_session_runtime_1.ZLinkStreamSess
167
167
  // Spec 27 §4: a default-constructed binding runtime must still honor the
168
168
  // process diagnostics level, so wire its Off gate to the runtime's
169
169
  // dispatch-error flow tracer.
170
- const bindingRuntime = options.bindingRuntime ?? new ZLinkStreamBindingRuntime({
171
- flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
172
- });
170
+ const bindingRuntime = options.bindingRuntime ??
171
+ new ZLinkStreamBindingRuntime({
172
+ flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
173
+ });
173
174
  super({
174
175
  ...options,
175
176
  bindingRuntime
@@ -183,9 +184,10 @@ class ZLinkStreamSessionNodeRuntime extends stream_session_runtime_1.ZLinkStream
183
184
  constructor(options) {
184
185
  // Spec 27 §4: keep the default binding runtime's flow creation behind the
185
186
  // process diagnostics Off gate (see ZLinkStreamSessionRuntime above).
186
- const bindingRuntime = options.bindingRuntime ?? new ZLinkStreamBindingRuntime({
187
- flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
188
- });
187
+ const bindingRuntime = options.bindingRuntime ??
188
+ new ZLinkStreamBindingRuntime({
189
+ flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
190
+ });
189
191
  super({
190
192
  ...options,
191
193
  bindingRuntime
@@ -205,7 +207,7 @@ class ZLinkStreamBindingRuntime {
205
207
  ...options,
206
208
  actorBindTimeoutMs: options.actorBindTimeoutMs ?? DEFAULT_ACTOR_BIND_TIMEOUT_MS
207
209
  };
208
- this.routes = new actor_session_binding_registry_1.ZLinkActorSessionBindingRegistry(4096, 4096, runtimeOptions.sessionRelocationSealTimeoutMs ?? 3_000);
210
+ this.routes = new actor_session_binding_registry_1.ZLinkActorSessionBindingRegistry(4096, 4096, runtimeOptions.sessionRelocationSealTimeoutMs ?? 3_000, runtimeOptions.errorSink);
209
211
  this.compressionCodec = (0, stream_frame_factory_1.resolveStreamCompressionCodec)(runtimeOptions.streamCompression);
210
212
  this.frameMessages = new stream_frame_factory_1.ZLinkStreamFrameMessageFactory(runtimeOptions);
211
213
  this.boundSessions = new bound_session_service_1.ZLinkBoundSessionService(this.routes, this.frameMessages, runtimeOptions);
@@ -213,6 +215,12 @@ class ZLinkStreamBindingRuntime {
213
215
  this.sessionActors = new session_actor_coordinator_1.ZLinkSessionActorCoordinator(this.routes, this, runtimeOptions, actorSessionLifecycle);
214
216
  this.boundActorRelay = new bound_actor_relay_sender_1.ZLinkBoundActorRelaySender(this.routes, this.frameMessages, runtimeOptions, actorSessionLifecycle);
215
217
  (0, actor_session_binding_runtime_owner_1.registerActorSessionBindingRuntimeOwner)(this, {
218
+ actorSlot: async (actorId, sessionRid) => {
219
+ const route = await this.routes.route(actorId);
220
+ return route !== undefined && route.sessionIdentity === sessionRid
221
+ ? route.actorSlot
222
+ : undefined;
223
+ },
216
224
  sealRelocation: (claim, expected, signal) => this.routes.sealRelocation(claim, expected, signal),
217
225
  relocationSnapshot: (actorId, sealId) => this.routes.relocationSnapshot(actorId, sealId),
218
226
  retainRelocationOutbound: (actorId, operation, sealId) => this.routes.retainRelocationOutbound(actorId, operation, sealId),
@@ -43,6 +43,9 @@ export declare class ZLinkManagedStream implements ZLinkStream {
43
43
  bindActor(actor: ActorRef, timeoutMs: number, signal?: AbortSignal, onBindingReplaced?: (actor: ServiceActorRef, retiredSession: ServiceRetiredBoundSessionRouteFence) => void, authorityFence?: ZLinkActorSessionAuthorityFence): Promise<void>;
44
44
  private ensureNativeActorRoute;
45
45
  unbindActor(actorId: string, timeoutMs: number, signal?: AbortSignal): Promise<void>;
46
+ enqueueActorBound(actorSlot: number, actorId: string): Promise<void>;
47
+ enqueueActorUnbound(actorSlot: number): Promise<void>;
48
+ private submitActorBindingControl;
46
49
  sendBoundActor(actorId: string, parts: readonly Message[], flags?: ZLinkBackendSendFlags): Promise<boolean>;
47
50
  updateAddresses(localAddr: string | undefined, remoteAddr: string | undefined): void;
48
51
  private hasNativeBinding;
@@ -84,7 +84,7 @@ class ZLinkManagedStream {
84
84
  }
85
85
  async submitBoundActor(actorId, parts, signal) {
86
86
  (0, abort_1.throwIfAborted)(signal);
87
- return await this.sendBoundActor(actorId, parts, ZLINK_SEND_DONT_WAIT)
87
+ return (await this.sendBoundActor(actorId, parts, ZLINK_SEND_DONT_WAIT))
88
88
  ? { status: submission_result_1.ZLinkSubmitStatus.Submitted }
89
89
  : { status: submission_result_1.ZLinkSubmitStatus.Backpressured };
90
90
  }
@@ -122,12 +122,12 @@ class ZLinkManagedStream {
122
122
  if (this.transportClosed) {
123
123
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `Stream session '${this.sessionId}' is disconnected.`);
124
124
  }
125
+ const nativeActor = toNativeActorRef(actor);
125
126
  const route = this.nativeRoute(actor.meshName);
126
127
  if (route !== undefined) {
127
128
  if (route.service.status().state === 1) {
128
129
  route.service.start();
129
130
  }
130
- const nativeActor = toNativeActorRef(actor);
131
131
  await this.ensureNativeActorRoute(route, actor, timeoutMs, signal);
132
132
  if (this.isTransportClosed()) {
133
133
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `Stream session '${this.sessionId}' is disconnected.`);
@@ -137,9 +137,10 @@ class ZLinkManagedStream {
137
137
  : (_actorId, retiredSession, replacedActor) => {
138
138
  onBindingReplaced(replacedActor, retiredSession);
139
139
  }, toStreamSessionActorAuthorityFence(authorityFence)), signal), `Actor '${actor.actorId}' native session bind`);
140
- const binding = route.service.bindings(this.backendRoutingId())
141
- .find((candidate) => candidate.actor.actorId === nativeActor.actorId
142
- && candidate.actor.generation === nativeActor.generation);
140
+ const binding = route.service
141
+ .bindings(this.backendRoutingId())
142
+ .find((candidate) => candidate.actor.actorId === nativeActor.actorId &&
143
+ candidate.actor.generation === nativeActor.generation);
143
144
  if (binding === undefined) {
144
145
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `Actor '${actor.actorId}' native session bind completed without a binding snapshot.`);
145
146
  }
@@ -162,6 +163,7 @@ class ZLinkManagedStream {
162
163
  return;
163
164
  }
164
165
  await this.socket.bindActor(this.backendRoutingId(), toBackendActorRef(actor), timeoutMs, signal);
166
+ this.nativeActorBindings.set(actor.actorId, { actor: nativeActor });
165
167
  }
166
168
  async ensureNativeActorRoute(route, actor, timeoutMs, signal) {
167
169
  const completion = await route.completions.submit(() => route.service.lookupActor(actor.nodeRid, actor.actorId, timeoutMs), signal);
@@ -169,16 +171,16 @@ class ZLinkManagedStream {
169
171
  const resolved = completion.kindData?.kind === 'actorLookupCompletion'
170
172
  ? completion.kindData.location.actor
171
173
  : undefined;
172
- if (completion.terminalResult !== 0
173
- || completion.failureErrno !== 0
174
- || resolved === undefined
175
- || resolved.actorId !== actor.actorId
176
- || resolved.generation !== actor.objectGeneration
177
- || String(resolved.nodeRid) !== String(actor.nodeRid)) {
178
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, `Actor '${actor.actorId}' native route fence does not match its ActorRef `
179
- + `(expected ${String(actor.nodeRid)}/${actor.objectGeneration}, `
180
- + `resolved ${resolved === undefined ? 'none' : `${String(resolved.nodeRid)}/${resolved.generation}`}, `
181
- + `terminal=${completion.terminalResult}, failure=${completion.failureErrno}).`);
174
+ if (completion.terminalResult !== 0 ||
175
+ completion.failureErrno !== 0 ||
176
+ resolved === undefined ||
177
+ resolved.actorId !== actor.actorId ||
178
+ resolved.generation !== actor.objectGeneration ||
179
+ String(resolved.nodeRid) !== String(actor.nodeRid)) {
180
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, `Actor '${actor.actorId}' native route fence does not match its ActorRef ` +
181
+ `(expected ${String(actor.nodeRid)}/${actor.objectGeneration}, ` +
182
+ `resolved ${resolved === undefined ? 'none' : `${String(resolved.nodeRid)}/${resolved.generation}`}, ` +
183
+ `terminal=${completion.terminalResult}, failure=${completion.failureErrno}).`);
182
184
  }
183
185
  }
184
186
  finally {
@@ -222,6 +224,24 @@ class ZLinkManagedStream {
222
224
  return;
223
225
  }
224
226
  await this.socket.unbindActor(this.backendRoutingId(), actorId, timeoutMs, signal);
227
+ if (binding !== undefined && this.nativeActorBindings.get(actorId) === binding) {
228
+ this.nativeActorBindings.delete(actorId);
229
+ }
230
+ }
231
+ async enqueueActorBound(actorSlot, actorId) {
232
+ await this.submitActorBindingControl((0, protocol_1.encodeActorBoundFrame)(actorSlot, actorId));
233
+ }
234
+ async enqueueActorUnbound(actorSlot) {
235
+ await this.submitActorBindingControl((0, protocol_1.encodeActorUnboundFrame)(actorSlot));
236
+ }
237
+ async submitActorBindingControl(frame) {
238
+ const message = runtime_message_1.ZLinkBufferMessage.from(frame);
239
+ try {
240
+ await this.socket.submit(this.backendRoutingId(), message);
241
+ }
242
+ finally {
243
+ message.close();
244
+ }
225
245
  }
226
246
  async sendBoundActor(actorId, parts, flags) {
227
247
  if (this.transportClosed) {
@@ -231,7 +251,7 @@ class ZLinkManagedStream {
231
251
  if (binding?.route !== undefined) {
232
252
  const nativeParts = parts.map((part) => runtime_message_1.ZLinkBufferMessage.from(part.data()));
233
253
  try {
234
- return await binding.route.service.sendToActor(this.backendRoutingId(), binding.actor, nativeParts, { flags: flags ?? 0 }) === 0;
254
+ return ((await binding.route.service.sendToActor(this.backendRoutingId(), binding.actor, nativeParts, { flags: flags ?? 0 })) === 0);
235
255
  }
236
256
  finally {
237
257
  for (const part of nativeParts) {
@@ -251,8 +271,9 @@ class ZLinkManagedStream {
251
271
  }
252
272
  hasNativeBinding(route, actorId, bindingGeneration) {
253
273
  try {
254
- return route.service.bindings(this.backendRoutingId()).some(candidate => candidate.actor.actorId === actorId
255
- && candidate.bindingGeneration === bindingGeneration);
274
+ return route.service
275
+ .bindings(this.backendRoutingId())
276
+ .some((candidate) => candidate.actor.actorId === actorId && candidate.bindingGeneration === bindingGeneration);
256
277
  }
257
278
  catch {
258
279
  // A closed native service owns the teardown state. Keep the original
@@ -266,8 +287,8 @@ class ZLinkManagedStream {
266
287
  async requireSuccessfulCompletion(completionPromise, operationName, acceptedTerminalResults = NO_ACCEPTED_TERMINAL_RESULTS) {
267
288
  const completion = await completionPromise;
268
289
  try {
269
- if (completion.terminalResult !== 0
270
- && !acceptedTerminalResults.has(completion.terminalResult)) {
290
+ if (completion.terminalResult !== 0 &&
291
+ !acceptedTerminalResults.has(completion.terminalResult)) {
271
292
  throw (0, framework_errors_internal_1.wireReplyFailureException)(completion.terminalResult, completion.failureErrno, `${operationName} failed with result ${completion.terminalResult} (errno ${completion.failureErrno}).`);
272
293
  }
273
294
  }
@@ -276,13 +297,13 @@ class ZLinkManagedStream {
276
297
  }
277
298
  }
278
299
  nativeRoute(meshName) {
279
- return this.nativeSessionRouteForMesh?.(meshName)
280
- ?? (this.nativeSessionService !== undefined && this.meshCompletions !== undefined
300
+ return (this.nativeSessionRouteForMesh?.(meshName) ??
301
+ (this.nativeSessionService !== undefined && this.meshCompletions !== undefined
281
302
  ? {
282
303
  service: this.nativeSessionService,
283
304
  completions: this.meshCompletions
284
305
  }
285
- : undefined);
306
+ : undefined));
286
307
  }
287
308
  }
288
309
  exports.ZLinkManagedStream = ZLinkManagedStream;
@@ -290,16 +311,16 @@ function streamSessionIdFromRoutingId(routingId) {
290
311
  if (typeof routingId === 'string') {
291
312
  return routingId;
292
313
  }
293
- if (typeof routingId === 'object'
294
- && routingId !== null
295
- && 'toHex' in routingId
296
- && typeof routingId.toHex === 'function') {
314
+ if (typeof routingId === 'object' &&
315
+ routingId !== null &&
316
+ 'toHex' in routingId &&
317
+ typeof routingId.toHex === 'function') {
297
318
  return routingId.toHex();
298
319
  }
299
- if (typeof routingId === 'object'
300
- && routingId !== null
301
- && 'toString' in routingId
302
- && typeof routingId.toString === 'function') {
320
+ if (typeof routingId === 'object' &&
321
+ routingId !== null &&
322
+ 'toString' in routingId &&
323
+ typeof routingId.toString === 'function') {
303
324
  return routingId.toString();
304
325
  }
305
326
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, 'Stream session routing id is invalid.');
@@ -23,7 +23,9 @@ class ZLinkNativeFallbackBoundSession {
23
23
  async disconnect(signal) {
24
24
  const remoteTarget = this.options.remoteBoundSessionTargetProvider();
25
25
  if (remoteTarget !== undefined) {
26
- const spotKind = 'spotKind' in remoteTarget ? remoteTarget.spotKind : undefined;
26
+ const spotKind = 'spotKind' in remoteTarget
27
+ ? remoteTarget.spotKind
28
+ : undefined;
27
29
  const payload = (0, actor_packet_relay_wire_1.encodeRemoteActorPacketRelayPayload)({
28
30
  actorId: this.options.actorId,
29
31
  routerChannelId: remoteTarget.routerChannelId,
@@ -36,17 +38,23 @@ class ZLinkNativeFallbackBoundSession {
36
38
  spotId: remoteTarget.spotId,
37
39
  spotKind: spotKind ?? contracts_1.ZLinkSpotKind.Entry
38
40
  };
39
- if (await (0, actor_routed_json_request_1.tryRequestRoutedJson)(this.options.routedTransport, target, payload, { timeoutMs: this.options.requestTimeoutMs, signal })) {
41
+ if (await (0, actor_routed_json_request_1.tryRequestRoutedJson)(this.options.routedTransport, target, payload, {
42
+ timeoutMs: this.options.requestTimeoutMs,
43
+ signal
44
+ })) {
40
45
  return;
41
46
  }
42
- await this.options.routedTransport.sendToSpot(target, payload, { packetName: actors_1.ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET, signal });
47
+ await this.options.routedTransport.sendToSpot(target, payload, {
48
+ packetName: actors_1.ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET,
49
+ signal
50
+ });
43
51
  return;
44
52
  }
45
53
  const actorRef = this.options.actorRefProvider();
46
54
  const node = this.options.nativeActorNodeProvider();
47
- if (actorRef !== undefined
48
- && node !== undefined
49
- && currentBindingGeneration(actorRef) !== undefined) {
55
+ if (actorRef !== undefined &&
56
+ node !== undefined &&
57
+ currentBindingGeneration(actorRef) !== undefined) {
50
58
  await this.options.runtime.disconnectNativeBoundSession(node, actorRef, signal);
51
59
  return;
52
60
  }
@@ -106,9 +114,7 @@ class ZLinkNativeFallbackBoundSessionSendCall {
106
114
  const actorRef = this.options.actorRefProvider();
107
115
  const node = this.options.nativeActorNodeProvider();
108
116
  const bindingGeneration = currentBindingGeneration(actorRef);
109
- if (actorRef !== undefined
110
- && node !== undefined
111
- && bindingGeneration !== undefined) {
117
+ if (actorRef !== undefined && node !== undefined && bindingGeneration !== undefined) {
112
118
  nativeAttempted = true;
113
119
  const result = await this.options.runtime.sendNativeBoundSession(node, actorRef, this.message, packetName, this.selectedMetadata, signal);
114
120
  if (result.status !== submission_result_1.ZLinkSubmitStatus.TargetNotFound) {
@@ -122,8 +128,7 @@ class ZLinkNativeFallbackBoundSessionSendCall {
122
128
  }
123
129
  if (remoteTarget !== undefined) {
124
130
  const actorRef = this.options.actorRefProvider();
125
- const ownershipGeneration = actorRef
126
- ?.ownershipGeneration;
131
+ const ownershipGeneration = actorRef?.ownershipGeneration;
127
132
  const payload = (0, bound_session_wire_1.encodeRemoteBoundSessionSendPayload)({
128
133
  actorId: this.options.actorId,
129
134
  actorMeshName: actorRef?.meshName,
@@ -140,8 +145,7 @@ class ZLinkNativeFallbackBoundSessionSendCall {
140
145
  ? (0, flow_context_1.currentOrCreateFlow)('Application')
141
146
  : undefined)
142
147
  });
143
- const submit = this.options.routedTransport.submitInfrastructure
144
- ?? this.options.routedTransport.submit;
148
+ const submit = this.options.routedTransport.submitInfrastructure ?? this.options.routedTransport.submit;
145
149
  const result = submit === undefined
146
150
  ? await this.options.routedTransport.sendToSpot({
147
151
  routerChannelId: remoteTarget.routerChannelId,
@@ -161,10 +165,10 @@ class ZLinkNativeFallbackBoundSessionSendCall {
161
165
  const actorRef = this.options.actorRefProvider();
162
166
  const node = this.options.nativeActorNodeProvider();
163
167
  const bindingGeneration = currentBindingGeneration(actorRef);
164
- if (!nativeAttempted
165
- && actorRef !== undefined
166
- && node !== undefined
167
- && bindingGeneration !== undefined) {
168
+ if (!nativeAttempted &&
169
+ actorRef !== undefined &&
170
+ node !== undefined &&
171
+ bindingGeneration !== undefined) {
168
172
  const result = await this.options.runtime.sendNativeBoundSession(node, actorRef, this.message, packetName, this.selectedMetadata, signal);
169
173
  this.traceSubmitted(result, packetName);
170
174
  return result;
@@ -22,7 +22,8 @@ export declare enum ZLinkStreamHeaderFlags {
22
22
  HasMetadata = 2,
23
23
  PayloadCompressed = 4,
24
24
  HasCorrelationId = 8,
25
- HasFlowId = 16
25
+ HasFlowId = 16,
26
+ HasActorSlot = 32
26
27
  }
27
28
  export declare enum ZLinkStreamCloseReasonCode {
28
29
  ClientClose = 1,
@@ -44,6 +45,7 @@ export interface ZLinkStreamFrameHeader {
44
45
  readonly correlationId?: string;
45
46
  readonly flowId?: string;
46
47
  readonly flowOrigin?: ZLinkFlowOrigin;
48
+ readonly actorSlot?: number;
47
49
  }
48
50
  export type ZLinkStreamReplyMessageKind = ZLinkStreamMessageKind.Response | ZLinkStreamMessageKind.Error;
49
51
  export interface ZLinkStreamFrame {
@@ -54,6 +56,8 @@ export declare function resolvePacketName(message: unknown, explicitPacketName:
54
56
  export declare function ensureSingleSubmit(executed: boolean): void;
55
57
  export declare function encodeStreamFrame(header: ZLinkStreamFrameHeader, payload: Uint8Array): Uint8Array;
56
58
  export declare function encodeStreamControlFrame(name: string): Uint8Array;
59
+ export declare function encodeActorBoundFrame(actorSlot: number, actorId: string): Uint8Array;
60
+ export declare function encodeActorUnboundFrame(actorSlot: number): Uint8Array;
57
61
  export declare function encodeSessionClosingFrame(diagnostic?: string, reason?: ZLinkStreamCloseReasonCode): Uint8Array;
58
62
  export declare function decodeStreamFrame(frame: Uint8Array): ZLinkStreamFrame;
59
63
  export declare function tryDecodeStreamFrame(frame: Uint8Array): ZLinkStreamFrame | undefined;