@zlink-systems/framework 0.26.0 → 0.27.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 (521) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  3. package/dist/contracts/Common/CoreTypes.js +7 -0
  4. package/dist/contracts/Common/index.d.ts +1 -1
  5. package/dist/contracts/Common/index.js +0 -1
  6. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  7. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  8. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  9. package/dist/contracts/Configuration/Registration.js +58 -36
  10. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  12. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  16. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  17. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  18. package/dist/contracts/Handlers/JsonContract.js +10 -4
  19. package/dist/contracts/Locations/Authority.d.ts +1 -1
  20. package/dist/contracts/Locations/Authority.js +3 -2
  21. package/dist/contracts/Locations/Options.js +1 -1
  22. package/dist/contracts/Locations/Stores.d.ts +12 -0
  23. package/dist/contracts/Locations/Stores.js +9 -0
  24. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  25. package/dist/internal.d.ts +4 -0
  26. package/dist/internal.js +15 -1
  27. package/dist/nest-integration.d.ts +4 -2
  28. package/dist/nest-integration.js +14 -4
  29. package/dist/runtime/abort.d.ts +1 -0
  30. package/dist/runtime/abort.js +8 -5
  31. package/dist/runtime/activation-admission.d.ts +1 -2
  32. package/dist/runtime/activation-admission.js +2 -6
  33. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  34. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  35. package/dist/runtime/actors/actor-client.d.ts +2 -2
  36. package/dist/runtime/actors/actor-client.js +42 -143
  37. package/dist/runtime/actors/actor-context.d.ts +3 -5
  38. package/dist/runtime/actors/actor-context.js +13 -11
  39. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  40. package/dist/runtime/actors/actor-handoff.js +8 -8
  41. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  42. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  43. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  44. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  45. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  46. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  47. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  48. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  49. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  50. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  51. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  52. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  53. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  54. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  55. package/dist/runtime/actors/bound-session-wire.js +2 -7
  56. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  57. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  58. package/dist/runtime/actors/index.d.ts +9 -7
  59. package/dist/runtime/actors/index.js +87 -69
  60. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  61. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  62. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  63. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  64. package/dist/runtime/admission.d.ts +2 -0
  65. package/dist/runtime/admission.js +7 -1
  66. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  67. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  68. package/dist/runtime/backend/contracts/index.d.ts +6 -23
  69. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  70. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  71. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  72. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
  73. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
  74. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  75. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  76. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  77. package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
  78. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  79. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  80. package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
  81. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  82. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  83. package/dist/runtime/backend/runtime-values.js +2 -0
  84. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  85. package/dist/runtime/channels/channel-clients.js +68 -52
  86. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  87. package/dist/runtime/channels/channel-envelope.js +47 -29
  88. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  89. package/dist/runtime/channels/channel-outbound-operations.js +9 -10
  90. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  91. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  94. package/dist/runtime/channels/channel-runtime-manager.js +5 -2
  95. package/dist/runtime/channels/channel-socket-options.js +3 -2
  96. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  97. package/dist/runtime/channels/channel-socket-registry.js +248 -174
  98. package/dist/runtime/channels/channel-transports.d.ts +11 -17
  99. package/dist/runtime/channels/channel-transports.js +68 -47
  100. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  101. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  102. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  103. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  104. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  105. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  106. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  107. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  108. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  109. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  110. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  111. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  112. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  113. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  114. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  115. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  116. package/dist/runtime/diagnostics/flow-context.js +16 -2
  117. package/dist/runtime/diagnostics/index.d.ts +4 -2
  118. package/dist/runtime/diagnostics/index.js +14 -4
  119. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  120. package/dist/runtime/diagnostics/message-flow.js +10 -19
  121. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  122. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  123. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  124. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  125. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  126. package/dist/runtime/disposal.d.ts +5 -0
  127. package/dist/runtime/disposal.js +22 -0
  128. package/dist/runtime/execution/index.d.ts +12 -9
  129. package/dist/runtime/execution/index.js +58 -14
  130. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  131. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  132. package/dist/runtime/execution/state-lane.d.ts +8 -1
  133. package/dist/runtime/execution/state-lane.js +118 -3
  134. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  135. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  136. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  137. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  138. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  139. package/dist/runtime/foundation/operation-identity.js +9 -5
  140. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  141. package/dist/runtime/foundation/operation-registry.js +34 -44
  142. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  143. package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
  144. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  145. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  146. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  147. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  148. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  149. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  150. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  151. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  152. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  153. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  154. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  155. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  156. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  157. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  158. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  159. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  160. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  161. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  162. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  163. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  164. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  165. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  166. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  167. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  168. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  169. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  170. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  171. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  172. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  173. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  174. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  175. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  176. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  177. package/dist/runtime/framework-errors-internal.js +343 -122
  178. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  179. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  180. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  181. package/dist/runtime/host/actor-packet-relay.js +48 -91
  182. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  183. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  184. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  185. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  186. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  187. package/dist/runtime/host/application-job-queue.js +16 -33
  188. package/dist/runtime/host/bound-session-relay.js +1 -1
  189. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  190. package/dist/runtime/host/index.d.ts +14 -13
  191. package/dist/runtime/host/index.js +190 -157
  192. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  193. package/dist/runtime/host/instance-activation-authority.js +17 -45
  194. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  195. package/dist/runtime/host/location-runtime-owner.js +2 -2
  196. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  197. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  198. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  199. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  200. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  201. package/dist/runtime/host/remote-bound-session-relay.js +7 -20
  202. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  203. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  204. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  205. package/dist/runtime/host/runtime-shutdown.js +18 -21
  206. package/dist/runtime/host/service-relocation-control.js +6 -1
  207. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  208. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  209. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  210. package/dist/runtime/host/spot-address-transport.js +34 -136
  211. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  212. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  213. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  214. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  215. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  216. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  217. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  218. package/dist/runtime/locations/authority-key-codec.js +4 -3
  219. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  220. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  221. package/dist/runtime/locations/creation-operation-id.js +6 -4
  222. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  223. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  224. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  225. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  226. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  227. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  228. package/dist/runtime/locations/key-codec.js +3 -2
  229. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  230. package/dist/runtime/locations/lease-tracker.js +7 -11
  231. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  232. package/dist/runtime/locations/lifecycle.js +2 -31
  233. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  234. package/dist/runtime/locations/location-store-failure.js +7 -0
  235. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  236. package/dist/runtime/locations/location-store-pages.js +13 -0
  237. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  238. package/dist/runtime/locations/location-store-repository.js +303 -332
  239. package/dist/runtime/locations/relocation-blob.js +18 -5
  240. package/dist/runtime/locations/resolvers.d.ts +5 -5
  241. package/dist/runtime/locations/resolvers.js +37 -28
  242. package/dist/runtime/locations/runtime.d.ts +5 -4
  243. package/dist/runtime/locations/runtime.js +123 -92
  244. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  245. package/dist/runtime/locations/spot-location-claims.js +42 -1
  246. package/dist/runtime/messaging/payload-codec.js +26 -20
  247. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  248. package/dist/runtime/messaging/submission-result.js +48 -0
  249. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  250. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  251. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  252. package/dist/runtime/spots/index.d.ts +14 -20
  253. package/dist/runtime/spots/index.js +302 -176
  254. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  255. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  256. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  257. package/dist/runtime/spots/spot-activation-state.js +2 -2
  258. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  259. package/dist/runtime/spots/spot-activation.js +49 -32
  260. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  261. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  262. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  263. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  264. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  265. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  266. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  267. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  268. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  269. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  270. package/dist/runtime/spots/spot-context.d.ts +2 -2
  271. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  272. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  273. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  274. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  275. package/dist/runtime/spots/spot-manager-public.js +5 -4
  276. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  277. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  278. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  279. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  280. package/dist/runtime/spots/spot-outbound.js +9 -8
  281. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  282. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  283. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  284. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  285. package/dist/runtime/spots/spot-route-replies.js +3 -1
  286. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  287. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  288. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  289. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  290. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  291. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  292. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  293. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  294. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  295. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  296. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  297. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  298. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  299. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  300. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  301. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  302. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  303. package/dist/runtime/streams/bound-session-service.js +11 -1
  304. package/dist/runtime/streams/index.d.ts +14 -15
  305. package/dist/runtime/streams/index.js +20 -21
  306. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  307. package/dist/runtime/streams/managed-stream.js +17 -8
  308. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  309. package/dist/runtime/streams/protocol.d.ts +6 -33
  310. package/dist/runtime/streams/protocol.js +38 -110
  311. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  312. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  313. package/dist/runtime/streams/session-calls.d.ts +1 -1
  314. package/dist/runtime/streams/session-calls.js +5 -4
  315. package/dist/runtime/streams/session-context.d.ts +6 -6
  316. package/dist/runtime/streams/session-context.js +22 -4
  317. package/dist/runtime/streams/session-requests.js +2 -1
  318. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  319. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  320. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  321. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  322. package/dist/runtime/workers/index.d.ts +2 -2
  323. package/dist/runtime/workers/index.js +5 -4
  324. package/package.json +3 -3
  325. package/src/contracts/Common/CoreTypes.ts +7 -0
  326. package/src/contracts/Common/index.ts +1 -1
  327. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  328. package/src/contracts/Configuration/Registration.ts +92 -48
  329. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  330. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  331. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  332. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  333. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  334. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  335. package/src/contracts/Handlers/JsonContract.ts +14 -4
  336. package/src/contracts/Locations/Authority.ts +7 -3
  337. package/src/contracts/Locations/Options.ts +1 -1
  338. package/src/contracts/Locations/Stores.ts +14 -0
  339. package/src/contracts/Spots/Contracts.ts +1 -1
  340. package/src/internal.ts +14 -0
  341. package/src/nest-integration.ts +28 -10
  342. package/src/runtime/abort.ts +6 -5
  343. package/src/runtime/activation-admission.ts +2 -8
  344. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  345. package/src/runtime/actors/actor-client.ts +77 -204
  346. package/src/runtime/actors/actor-context.ts +39 -33
  347. package/src/runtime/actors/actor-handoff.ts +24 -22
  348. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  349. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  350. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  351. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  352. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  353. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  354. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  355. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  356. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  357. package/src/runtime/actors/bound-session-wire.ts +2 -8
  358. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  359. package/src/runtime/actors/index.ts +100 -79
  360. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  361. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  362. package/src/runtime/admission.ts +8 -1
  363. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  364. package/src/runtime/backend/contracts/index.ts +13 -29
  365. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  366. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  367. package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
  368. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  369. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  370. package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
  371. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  372. package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
  373. package/src/runtime/backend/raw-binding-port.ts +1 -1
  374. package/src/runtime/backend/runtime-values.ts +4 -1
  375. package/src/runtime/channels/channel-clients.ts +132 -85
  376. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  377. package/src/runtime/channels/channel-envelope.ts +58 -29
  378. package/src/runtime/channels/channel-outbound-operations.ts +10 -23
  379. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  380. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  381. package/src/runtime/channels/channel-runtime-manager.ts +6 -2
  382. package/src/runtime/channels/channel-socket-options.ts +8 -2
  383. package/src/runtime/channels/channel-socket-registry.ts +301 -192
  384. package/src/runtime/channels/channel-transports.ts +161 -112
  385. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  386. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  387. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  388. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  389. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  390. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  391. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  392. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  393. package/src/runtime/diagnostics/flow-context.ts +16 -2
  394. package/src/runtime/diagnostics/index.ts +27 -17
  395. package/src/runtime/diagnostics/message-flow.ts +15 -25
  396. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  397. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  398. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  399. package/src/runtime/disposal.ts +19 -0
  400. package/src/runtime/execution/index.ts +60 -20
  401. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  402. package/src/runtime/execution/state-lane.ts +142 -4
  403. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  404. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  405. package/src/runtime/foundation/operation-identity.ts +11 -5
  406. package/src/runtime/foundation/operation-registry.ts +33 -50
  407. package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
  408. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  409. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  410. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  411. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  412. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  413. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  414. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  415. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  416. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  417. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  418. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  419. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  420. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  421. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  422. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  423. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  424. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  425. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  426. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  427. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  428. package/src/runtime/framework-errors-internal.ts +380 -134
  429. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  430. package/src/runtime/host/actor-packet-relay.ts +57 -147
  431. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  432. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  433. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  434. package/src/runtime/host/application-job-queue.ts +28 -34
  435. package/src/runtime/host/bound-session-relay.ts +1 -2
  436. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  437. package/src/runtime/host/index.ts +327 -296
  438. package/src/runtime/host/instance-activation-authority.ts +89 -109
  439. package/src/runtime/host/location-runtime-owner.ts +4 -2
  440. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  441. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  442. package/src/runtime/host/remote-bound-session-relay.ts +8 -41
  443. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  444. package/src/runtime/host/runtime-shutdown.ts +17 -21
  445. package/src/runtime/host/service-relocation-control.ts +14 -1
  446. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  447. package/src/runtime/host/spot-address-transport.ts +73 -195
  448. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  449. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  450. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  451. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  452. package/src/runtime/locations/authority-key-codec.ts +7 -3
  453. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  454. package/src/runtime/locations/creation-operation-id.ts +6 -3
  455. package/src/runtime/locations/domain-store-contract.ts +12 -3
  456. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  457. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  458. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  459. package/src/runtime/locations/key-codec.ts +3 -2
  460. package/src/runtime/locations/lease-tracker.ts +8 -14
  461. package/src/runtime/locations/lifecycle.ts +13 -43
  462. package/src/runtime/locations/location-store-failure.ts +4 -0
  463. package/src/runtime/locations/location-store-pages.ts +18 -0
  464. package/src/runtime/locations/location-store-repository.ts +450 -478
  465. package/src/runtime/locations/relocation-blob.ts +17 -6
  466. package/src/runtime/locations/resolvers.ts +75 -49
  467. package/src/runtime/locations/runtime.ts +220 -110
  468. package/src/runtime/locations/spot-location-claims.ts +58 -1
  469. package/src/runtime/messaging/payload-codec.ts +35 -24
  470. package/src/runtime/messaging/submission-result.ts +57 -1
  471. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  472. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  473. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  474. package/src/runtime/spots/index.ts +433 -229
  475. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  476. package/src/runtime/spots/spot-activation-state.ts +2 -2
  477. package/src/runtime/spots/spot-activation.ts +67 -37
  478. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  479. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  480. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  481. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  482. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  483. package/src/runtime/spots/spot-context.ts +3 -3
  484. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  485. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  486. package/src/runtime/spots/spot-manager-public.ts +21 -17
  487. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  488. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  489. package/src/runtime/spots/spot-outbound.ts +45 -23
  490. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  491. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  492. package/src/runtime/spots/spot-route-replies.ts +6 -4
  493. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  494. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  495. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  496. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  497. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  498. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  499. package/src/runtime/spots/spot-timer.ts +3 -2
  500. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  501. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  502. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  503. package/src/runtime/streams/bound-session-service.ts +21 -1
  504. package/src/runtime/streams/index.ts +76 -64
  505. package/src/runtime/streams/managed-stream.ts +29 -10
  506. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  507. package/src/runtime/streams/protocol.ts +34 -88
  508. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  509. package/src/runtime/streams/session-calls.ts +6 -5
  510. package/src/runtime/streams/session-context.ts +54 -10
  511. package/src/runtime/streams/session-requests.ts +2 -1
  512. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  513. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  514. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  515. package/src/runtime/workers/index.ts +13 -12
  516. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  517. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  518. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  519. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  520. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  521. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,10 +1,8 @@
1
1
  import type { ActorRef } from '../../contracts';
2
- import type { ServiceSessionBindingAdmissionResult } from '../foundation/service-session-binding-ingress-port';
3
2
  import type {
4
3
  ZLinkActorSessionAuthorityFence,
5
4
  ZLinkActorSessionRelocationClaim,
6
5
  ZLinkActorSessionRelocationSnapshot,
7
- ZLinkActorSessionRetainedOutbound,
8
6
  ZLinkActorSessionRouteFence
9
7
  } from './actor-session-binding-registry';
10
8
 
@@ -19,12 +17,6 @@ export interface ZLinkActorSessionBindingRuntimeOwner {
19
17
  actorId: string,
20
18
  sealId: string
21
19
  ): Promise<ZLinkActorSessionRelocationSnapshot | undefined>;
22
- retainRelocationOutbound(
23
- actorId: string,
24
- operation: ZLinkActorSessionRetainedOutbound,
25
- sealId?: string
26
- ): Promise<ServiceSessionBindingAdmissionResult>;
27
- discardRelocationOutbound(actorId: string, sealId: string, error: unknown): Promise<void>;
28
20
  applyRelocation(
29
21
  actorId: string,
30
22
  sealId: string,
@@ -1,25 +1,33 @@
1
1
  import type { ZLinkMessage, ZLinkMessageSerializer, ZLinkSessionActor } from '../../contracts';
2
- import { ZLinkSubmitStatus, type ZLinkSubmitResult } from '../messaging/submission-result';
3
2
  import type { Message } from '../../contracts/Common/Message';
4
- import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
5
3
  import {
6
- encodeStreamHeader,
7
- messageToBytes,
8
- type ZLinkStreamFrameHeader,
9
- ZLinkStreamMessageKind
10
- } from './protocol';
4
+ ZLinkDispatchErrorSurface,
5
+ ZLinkDispatchMessageKind,
6
+ ZLinkRuntimeMessageFlowOutcome
7
+ } from '../../contracts/Dispatch/ZLinkDispatchOptions';
11
8
  import { throwIfAborted } from '../abort';
12
- import { captureZLinkExecutionTurn } from '../execution';
9
+ import type { ZLinkDispatchErrorReporter } from '../channels';
10
+ import { flowIfEnabled } from '../diagnostics';
11
+ import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
12
+ import { ZLinkSubmitStatus, type ZLinkSubmitResult } from '../messaging/submission-result';
13
13
  import {
14
14
  ZLinkActorSessionBindingRegistry,
15
15
  ZLinkActorSessionBindingTermination
16
16
  } from './actor-session-binding-registry';
17
17
  import { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
18
18
  import { ZLinkManagedStream } from './managed-stream';
19
+ import {
20
+ encodeStreamHeader,
21
+ messageToBytes,
22
+ ZLinkStreamMessageKind,
23
+ type ZLinkStreamFrameHeader
24
+ } from './protocol';
19
25
  import { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
20
26
  import { ZLinkStreamFrameMessageFactory } from './stream-frame-factory';
27
+ export const DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS = 2000;
21
28
 
22
29
  export interface ZLinkBoundActorRelaySenderOptions {
30
+ readonly dispatchErrors?: ZLinkDispatchErrorReporter;
23
31
  readonly actorBindTimeoutMs?: number;
24
32
  readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
25
33
  readonly relay?: (
@@ -65,36 +73,47 @@ export class ZLinkBoundActorRelaySender {
65
73
  await admission.complete();
66
74
  }
67
75
  };
68
- if (
69
- (await this.routes.isSealed(actor.actorId)) &&
70
- captureZLinkExecutionTurn() !== undefined
71
- ) {
72
- void operation().catch(() => undefined);
73
- return { status: ZLinkSubmitStatus.Submitted };
74
- }
75
76
  return await operation();
76
77
  }
77
- if ((await this.routes.isSealed(actor.actorId)) && captureZLinkExecutionTurn() !== undefined) {
78
- // Spec 32:62 — a Send completes once the source outbound queue
79
- // accepts it; spec 05 — infrastructure send progress must not depend
80
- // on the application turn. When the CALLER IS an application turn
81
- // (a lifecycle callback pushing to a bound actor), awaiting the seal
82
- // release here deadlocks: the relocation seal waits for that very
83
- // callback to finish (onJoinedActor -> push -> seal ->
84
- // onJoinedActor). Accept the frame now and deliver it after the
85
- // seal releases, in per-actor order through the lifecycle lane; the
86
- // bounded seal wait converts a stuck seal into a typed failure.
87
- // Non-turn callers (stream ingress relays) keep the waiting
88
- // semantics so a held frame across a failed rebind still
89
- // terminalizes to the caller.
90
- void this.routes
91
- .runAcceptedFrameWhenReady(
92
- actor.actorId,
93
- actor.bindingToken,
94
- () => this.relayAcceptedFrame(actor, payload, signal),
95
- signal
96
- )
97
- .catch(() => undefined);
78
+ throwIfAborted(signal);
79
+ const held = await this.routes.acceptOneWay(actor.actorId, actor.bindingToken, () => {
80
+ let heldMessage: Message | undefined = encodeFrameworkPayloadMessage(
81
+ payload,
82
+ this.options.messageSerializers
83
+ );
84
+ return {
85
+ deliver: async () => {
86
+ try {
87
+ const result = await this.routes.runAcceptedFrameWhenReady(
88
+ actor.actorId,
89
+ actor.bindingToken,
90
+ () =>
91
+ this.relayAcceptedFrame(actor, payload, undefined, header, undefined, heldMessage)
92
+ );
93
+ if (result.status !== ZLinkSubmitStatus.Submitted) {
94
+ this.traceHeldDrop(
95
+ header,
96
+ result.status === ZLinkSubmitStatus.Backpressured ||
97
+ result.status === ZLinkSubmitStatus.TimedOut
98
+ ? 'backpressure'
99
+ : result.status === ZLinkSubmitStatus.Shutdown
100
+ ? 'shutdown'
101
+ : 'stale_target'
102
+ );
103
+ }
104
+ } finally {
105
+ heldMessage?.close();
106
+ heldMessage = undefined;
107
+ }
108
+ },
109
+ drop: (reason, error) => {
110
+ heldMessage?.close();
111
+ heldMessage = undefined;
112
+ this.traceHeldDrop(header, reason, error);
113
+ }
114
+ };
115
+ });
116
+ if (held) {
98
117
  return { status: ZLinkSubmitStatus.Submitted };
99
118
  }
100
119
  return this.routes.runAcceptedFrameWhenReady(
@@ -105,12 +124,36 @@ export class ZLinkBoundActorRelaySender {
105
124
  );
106
125
  }
107
126
 
127
+ private traceHeldDrop(
128
+ header: ZLinkStreamFrameHeader,
129
+ reason: 'backpressure' | 'target_closed' | 'stale_target' | 'shutdown',
130
+ error?: unknown
131
+ ): void {
132
+ flowIfEnabled(
133
+ this.options.dispatchErrors?.flow,
134
+ ZLinkRuntimeMessageFlowOutcome.Dropped,
135
+ undefined,
136
+ header.flowId
137
+ )?.trace({
138
+ outcome: ZLinkRuntimeMessageFlowOutcome.Dropped,
139
+ surface: ZLinkDispatchErrorSurface.StreamSession,
140
+ messageKind: ZLinkDispatchMessageKind.Send,
141
+ packetName: header.name,
142
+ flowId: header.flowId,
143
+ flowOrigin: header.flowOrigin,
144
+ correlationId: header.correlationId,
145
+ errorReason: reason,
146
+ ...(error instanceof Error ? { errorType: error.name, errorMessage: error.message } : {})
147
+ });
148
+ }
149
+
108
150
  private async relayAcceptedFrame(
109
151
  actor: DefaultZLinkSessionActor,
110
152
  payload: ZLinkMessage,
111
153
  signal?: AbortSignal,
112
154
  header?: ZLinkStreamFrameHeader,
113
- requestAdmission?: { beginSubmission(signal?: AbortSignal): Promise<void> | undefined }
155
+ requestAdmission?: { beginSubmission(signal?: AbortSignal): Promise<void> | undefined },
156
+ acceptedPayload?: Message
114
157
  ): Promise<ZLinkSubmitResult> {
115
158
  const activeHeader = header ?? (await this.currentHeader(actor));
116
159
  const started = await this.lifecycle.run(actor.actorId, async () => {
@@ -119,7 +162,8 @@ export class ZLinkBoundActorRelaySender {
119
162
  payload,
120
163
  signal,
121
164
  activeHeader,
122
- requestAdmission
165
+ requestAdmission,
166
+ acceptedPayload
123
167
  );
124
168
  if (
125
169
  activeHeader.kind === ZLinkStreamMessageKind.Request &&
@@ -165,13 +209,15 @@ export class ZLinkBoundActorRelaySender {
165
209
  payload: ZLinkMessage,
166
210
  signal: AbortSignal | undefined,
167
211
  currentHeader?: ZLinkStreamFrameHeader,
168
- requestAdmission?: { beginSubmission(signal?: AbortSignal): Promise<void> | undefined }
212
+ requestAdmission?: { beginSubmission(signal?: AbortSignal): Promise<void> | undefined },
213
+ acceptedPayload?: Message
169
214
  ): Promise<ZLinkSubmitResult> {
170
215
  const header = currentHeader ?? (await this.currentHeader(actor));
171
216
  const held = requestAdmission?.beginSubmission(signal);
172
217
  if (held !== undefined) await held;
173
218
  throwIfAborted(signal);
174
- const payloadMessage = encodeFrameworkPayloadMessage(payload, this.options.messageSerializers);
219
+ const payloadMessage =
220
+ acceptedPayload ?? encodeFrameworkPayloadMessage(payload, this.options.messageSerializers);
175
221
  try {
176
222
  if (this.options.relay !== undefined) {
177
223
  const handled = await this.options.relay(actor, header, payloadMessage, signal);
@@ -198,7 +244,7 @@ export class ZLinkBoundActorRelaySender {
198
244
  framePayloadMessage.close();
199
245
  }
200
246
  } finally {
201
- payloadMessage.close();
247
+ if (acceptedPayload === undefined) payloadMessage.close();
202
248
  }
203
249
  }
204
250
 
@@ -224,7 +270,7 @@ export class ZLinkBoundActorRelaySender {
224
270
  ) {
225
271
  await detached.context.stream.unbindActor(
226
272
  actor.actorId,
227
- this.options.actorBindTimeoutMs ?? 2000,
273
+ this.options.actorBindTimeoutMs ?? DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS,
228
274
  signal
229
275
  );
230
276
  }
@@ -233,7 +279,7 @@ export class ZLinkBoundActorRelaySender {
233
279
 
234
280
  async notifyPhysicalDisconnect(context: DefaultZLinkSessionContext): Promise<void> {
235
281
  const snapshot = [...context.boundActors];
236
- const timeoutMs = this.options.actorBindTimeoutMs ?? 2000;
282
+ const timeoutMs = this.options.actorBindTimeoutMs ?? DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS;
237
283
  await Promise.allSettled(
238
284
  snapshot.map(async (actor) => {
239
285
  const detached = await this.lifecycle.run(actor.actorId, async () => {
@@ -23,6 +23,8 @@ import type { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './ses
23
23
  import { boundSessionErrorPayload } from './bound-session-response-target';
24
24
  import { ZLinkStreamFrameMessageFactory } from './stream-frame-factory';
25
25
  import { ZLinkManagedStream } from './managed-stream';
26
+ import type { ZLinkSessionBindingIdentity } from './stream-binding-runtime-ports';
27
+ import { REMOTE_BOUND_SESSION_BIND_PACKET } from '../spots/spot-remote-codec';
26
28
 
27
29
  const ZLINK_SEND_DONT_WAIT = 1;
28
30
 
@@ -301,12 +303,30 @@ export class ZLinkBoundSessionService {
301
303
  }
302
304
  }
303
305
 
306
+ /**
307
+ * Closes the physical Session of one exact binding after its relocation
308
+ * failed (Session–Actor binding §8.1). A newer binding of the same Actor is
309
+ * not selected.
310
+ */
311
+ async closeSessionBinding(
312
+ actorId: string,
313
+ expected: ZLinkSessionBindingIdentity,
314
+ signal?: AbortSignal
315
+ ): Promise<void> {
316
+ const route = await this.routes.routeForSessionBinding(
317
+ actorId,
318
+ expected.sessionRid,
319
+ expected.bindingGeneration
320
+ );
321
+ await route?.context.close(signal);
322
+ }
323
+
304
324
  async relayRemoteBoundSessionBind(stream: ZLinkManagedStream, actorRef: ActorRef): Promise<void> {
305
325
  const encodedBindHeader = encodeStreamHeader({
306
326
  kind: ZLinkStreamMessageKind.Send,
307
327
  codec: ZLinkStreamCodec.Raw,
308
328
  flags: ZLinkStreamHeaderFlags.None,
309
- name: 'zlink.framework.actor.bound_session.bind',
329
+ name: REMOTE_BOUND_SESSION_BIND_PACKET,
310
330
  metadata: new Map()
311
331
  });
312
332
  // encodeStreamHeader returns a fresh, unaliased array; view it without re-copying.
@@ -1,45 +1,45 @@
1
- import type { ZLinkListenerRecords } from '../foundation/listener-records';
2
- import type {
3
- ActorRef,
4
- Type,
5
- ZLinkActor,
6
- ZLinkBoundSession,
7
- ZLinkSessionActor,
8
- ZLinkSessionFactory,
9
- ZLinkSession,
10
- ZLinkMessageSerializer,
11
- ZLinkStreamCompressionCodec,
12
- ZLinkStreamCompressionOptions
1
+ import {
2
+ type ActorRef,
3
+ type Type,
4
+ type ZLinkActor,
5
+ type ZLinkBoundSession,
6
+ type ZLinkMessageSerializer,
7
+ type ZLinkSession,
8
+ type ZLinkSessionActor,
9
+ type ZLinkSessionFactory,
10
+ type ZLinkStreamCompressionCodec,
11
+ type ZLinkStreamCompressionOptions,
12
+ ZLinkMessage
13
13
  } from '../../contracts';
14
- import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
15
- import type { ZLinkSubmitResult } from '../messaging/submission-result';
16
- import { ZLinkMessage } from '../../contracts';
17
14
  import type { Message } from '../../contracts/Common/Message';
18
- import {
19
- buildAdvertisedEndpoint,
20
- ZLinkConfigurationException,
21
- type ZLinkFrameworkRegistration
22
- } from '../configuration';
23
- import { ZLinkDispatchErrorReporter } from '../channels';
15
+ import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
16
+ import { DEFAULT_STREAM_NODE_MAX_MESSAGE_SIZE } from '../../contracts/Configuration/InternalDefaults';
17
+ import { zlinkDefaultLocationOptions } from '../../contracts/Locations/Options';
24
18
  import type {
25
- ZLinkBackendAdapterFactory,
26
19
  ZLinkBackendActorSessionNode,
20
+ ZLinkBackendAdapterFactory,
27
21
  ZLinkBackendContext,
28
22
  ZLinkBackendMeshNode,
29
23
  ZLinkBackendSocketMonitor,
30
24
  ZLinkBackendStreamSocket
31
25
  } from '../backend/contracts';
32
26
  import type { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
27
+ import { ZLinkDispatchErrorReporter } from '../channels';
28
+ import {
29
+ buildAdvertisedEndpoint,
30
+ ZLinkConfigurationException,
31
+ type ZLinkFrameworkRegistration
32
+ } from '../configuration';
33
+ import type { ZLinkListenerRecords } from '../foundation/listener-records';
33
34
  import type { StreamSessionService } from '../foundation/service-runtime-contracts';
34
35
  import { registerServiceSessionBindingIngressPort } from '../foundation/service-session-binding-ingress-port';
35
36
  import {
36
- messageToBytes,
37
- ZLinkStreamCodec,
38
- type ZLinkStreamFrameHeader,
39
- ZLinkStreamMessageKind,
40
- type ZLinkStreamReplyMessageKind
41
- } from './protocol';
37
+ ApplicationJobQueue,
38
+ resolveApplicationJobQueueConfiguration
39
+ } from '../host/application-job-queue';
40
+ import type { ZLinkSubmitResult } from '../messaging/submission-result';
42
41
  import {
42
+ DEFAULT_TERMINAL_RELOCATION_CAPACITY,
43
43
  ZLinkActorSessionBindingRegistry,
44
44
  type ZLinkActorSessionAuthorityFence
45
45
  } from './actor-session-binding-registry';
@@ -48,38 +48,45 @@ import {
48
48
  registerActorSessionBindingRuntimeOwner
49
49
  } from './actor-session-binding-runtime-owner';
50
50
  import { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
51
+ import { ZLinkBoundActorRelaySender } from './bound-actor-relay-sender';
51
52
  import {
52
- decompressStreamPayload,
53
- resolveStreamCompressionCodec,
54
- ZLinkStreamFrameMessageFactory
55
- } from './stream-frame-factory';
53
+ DefaultZLinkBoundSessionResponseTarget,
54
+ type ZLinkBoundSessionResponseTarget
55
+ } from './bound-session-response-target';
56
+ import { ZLinkBoundSessionService, type ZLinkBoundSessionTransport } from './bound-session-service';
57
+ import { ZLinkManagedStream } from './managed-stream';
56
58
  import {
57
- ApplicationJobQueue,
58
- resolveApplicationJobQueueConfiguration
59
- } from '../host/application-job-queue';
60
- import { simpleMessage } from './stream-message-utils';
59
+ messageToBytes,
60
+ ZLinkStreamCodec,
61
+ ZLinkStreamMessageKind,
62
+ type ZLinkStreamFrameHeader,
63
+ type ZLinkStreamReplyMessageKind
64
+ } from './protocol';
65
+ import { ZLinkSessionActorCoordinator } from './session-actor-coordinator';
61
66
  import {
62
67
  DefaultZLinkBoundSession,
63
68
  DefaultZLinkSessionActor,
64
69
  DefaultZLinkSessionContext
65
70
  } from './session-context';
66
- import {
67
- DefaultZLinkBoundSessionResponseTarget,
68
- type ZLinkBoundSessionResponseTarget
69
- } from './bound-session-response-target';
70
- import { ZLinkBoundSessionService, type ZLinkBoundSessionTransport } from './bound-session-service';
71
- import { ZLinkSessionActorCoordinator } from './session-actor-coordinator';
72
- import { ZLinkBoundActorRelaySender } from './bound-actor-relay-sender';
73
- import { ZLinkManagedStream } from './managed-stream';
74
71
  import { createStreamSessionInstance } from './session-provider';
75
- import { DEFAULT_STREAM_NODE_MAX_MESSAGE_SIZE } from '../../contracts/Configuration/InternalDefaults';
72
+ import type {
73
+ ZLinkActorRouteCommitOptions,
74
+ ZLinkSessionBindingConfirmationOptions,
75
+ ZLinkSessionBindingIdentity
76
+ } from './stream-binding-runtime-ports';
77
+ import {
78
+ decompressStreamPayload,
79
+ resolveStreamCompressionCodec,
80
+ ZLinkStreamFrameMessageFactory
81
+ } from './stream-frame-factory';
82
+ import { simpleMessage } from './stream-message-utils';
76
83
  import {
77
84
  ZLinkStreamSessionNodeRuntime as ZLinkStreamSessionNodeRuntimeCore,
78
85
  ZLinkStreamSessionRuntime as ZLinkStreamSessionRuntimeCore,
79
86
  type ZLinkStreamSessionNodeRuntimeOptions as ZLinkStreamSessionNodeRuntimeCoreOptions,
80
87
  type ZLinkStreamSessionRuntimeOptions as ZLinkStreamSessionRuntimeCoreOptions
81
88
  } from './stream-session-runtime';
82
- import type { ZLinkActorRouteCommitOptions } from './stream-binding-runtime-ports';
89
+ const DEFAULT_STREAM_SERVICE_SHUTDOWN_TIMEOUT_MS = 1000;
83
90
  export { ZLinkPendingSessionRequest } from './session-requests';
84
91
  export { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
85
92
  export { ZLinkActorSessionBindingRegistry } from './actor-session-binding-registry';
@@ -99,6 +106,7 @@ export type {
99
106
  } from './bound-session-service';
100
107
 
101
108
  export interface ZLinkStreamBindingRuntimeOptions {
109
+ readonly dispatchErrors?: ZLinkDispatchErrorReporter;
102
110
  readonly transport?: ZLinkBoundSessionTransport;
103
111
  readonly messageFactory?: ZLinkStreamMessageFactory;
104
112
  readonly streamPayloadCodec?: ZLinkStreamPayloadCodec;
@@ -121,7 +129,7 @@ export interface ZLinkStreamBindingRuntimeOptions {
121
129
  actor: ActorRef,
122
130
  sessionRid: ActorRef['nodeRid'],
123
131
  signal?: AbortSignal,
124
- options?: { readonly waitForAcknowledgement?: boolean }
132
+ options?: ZLinkSessionBindingConfirmationOptions
125
133
  ) => Promise<void>;
126
134
  readonly errorSink?: () =>
127
135
  | {
@@ -274,10 +282,7 @@ export class ZLinkStreamRuntimeManager {
274
282
  node.nativeSessionServices.push(service);
275
283
  const bindingOwner = actorSessionBindingRuntimeOwner(this.options.bindingRuntime);
276
284
  registerServiceSessionBindingIngressPort(service, {
277
- actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid),
278
- retainOutbound: (actorId, delivery) =>
279
- bindingOwner.retainRelocationOutbound(actorId, delivery),
280
- clearOutbound: (actorId, error) => bindingOwner.clearRelocation(actorId, error)
285
+ actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid)
281
286
  });
282
287
  nativeSessionRoutes.set(meshName, {
283
288
  service,
@@ -332,16 +337,16 @@ export class ZLinkStreamRuntimeManager {
332
337
 
333
338
  async dispose(): Promise<void> {
334
339
  const nodes = [...this.nodes.values()];
335
- this.nodes.clear();
336
340
  for (const node of nodes.reverse()) {
337
341
  await node.runtime?.dispose();
338
342
  for (const service of node.nativeSessionServices) {
339
- service.shutdown(1000);
343
+ service.shutdown(DEFAULT_STREAM_SERVICE_SHUTDOWN_TIMEOUT_MS);
340
344
  service.close();
341
345
  }
342
346
  await node.monitor?.dispose();
343
347
  await node.socket.dispose();
344
348
  }
349
+ this.nodes.clear();
345
350
  }
346
351
 
347
352
  async notifyServerDrain(meshName: string): Promise<void> {
@@ -373,6 +378,7 @@ export class ZLinkStreamSessionRuntime extends ZLinkStreamSessionRuntimeCore {
373
378
  const bindingRuntime =
374
379
  options.bindingRuntime ??
375
380
  new ZLinkStreamBindingRuntime({
381
+ dispatchErrors: options.dispatchErrors,
376
382
  flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
377
383
  });
378
384
  super(
@@ -396,6 +402,7 @@ export class ZLinkStreamSessionNodeRuntime extends ZLinkStreamSessionNodeRuntime
396
402
  const bindingRuntime =
397
403
  options.bindingRuntime ??
398
404
  new ZLinkStreamBindingRuntime({
405
+ dispatchErrors: options.dispatchErrors,
399
406
  flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
400
407
  });
401
408
  super({
@@ -424,7 +431,12 @@ export class ZLinkStreamBindingRuntime {
424
431
  this.routes = new ZLinkActorSessionBindingRegistry<
425
432
  DefaultZLinkSessionContext,
426
433
  DefaultZLinkSessionActor
427
- >(4096, 4096, runtimeOptions.sessionRelocationSealTimeoutMs ?? 3_000, runtimeOptions.errorSink);
434
+ >(
435
+ DEFAULT_TERMINAL_RELOCATION_CAPACITY,
436
+ runtimeOptions.sessionRelocationSealTimeoutMs ??
437
+ zlinkDefaultLocationOptions.sessionRelocationSealTimeoutMs,
438
+ runtimeOptions.errorSink
439
+ );
428
440
  this.compressionCodec = resolveStreamCompressionCodec(runtimeOptions.streamCompression);
429
441
  this.frameMessages = new ZLinkStreamFrameMessageFactory(runtimeOptions);
430
442
  this.boundSessions = new ZLinkBoundSessionService(
@@ -446,19 +458,11 @@ export class ZLinkStreamBindingRuntime {
446
458
  actorSessionLifecycle
447
459
  );
448
460
  registerActorSessionBindingRuntimeOwner(this, {
449
- actorSlot: async (actorId, sessionRid) => {
450
- const route = await this.routes.route(actorId);
451
- return route !== undefined && route.sessionIdentity === sessionRid
452
- ? route.actorSlot
453
- : undefined;
454
- },
461
+ actorSlot: async (actorId, sessionRid) =>
462
+ (await this.routes.routeForSessionBinding(actorId, sessionRid))?.actorSlot,
455
463
  sealRelocation: (claim, expected, signal) =>
456
464
  this.routes.sealRelocation(claim, expected, signal),
457
465
  relocationSnapshot: (actorId, sealId) => this.routes.relocationSnapshot(actorId, sealId),
458
- retainRelocationOutbound: (actorId, operation, sealId) =>
459
- this.routes.retainRelocationOutbound(actorId, operation, sealId),
460
- discardRelocationOutbound: (actorId, sealId, error) =>
461
- this.routes.discardRelocationOutbound(actorId, sealId, error),
462
466
  applyRelocation: (...args) => this.routes.applyRelocation(...args),
463
467
  observeRelocationTerminal: (...args) => this.routes.observeRelocationTerminal(...args),
464
468
  clearRelocation: (actorId, error) => this.routes.clearRelocation(actorId, error),
@@ -743,6 +747,14 @@ export class ZLinkStreamBindingRuntime {
743
747
  await this.boundSessions.disconnectBoundSession(actorId, signal);
744
748
  }
745
749
 
750
+ async closeSessionBinding(
751
+ actorId: string,
752
+ expected: ZLinkSessionBindingIdentity,
753
+ signal?: AbortSignal
754
+ ): Promise<void> {
755
+ await this.boundSessions.closeSessionBinding(actorId, expected, signal);
756
+ }
757
+
746
758
  async relay(
747
759
  actor: DefaultZLinkSessionActor,
748
760
  payload: ZLinkMessage,
@@ -10,7 +10,11 @@ import type {
10
10
  ZLinkMessageSerializer,
11
11
  ZLinkStream
12
12
  } from '../../contracts';
13
- import { ZLinkSubmitStatus, type ZLinkSubmitResult } from '../messaging/submission-result';
13
+ import {
14
+ ZLinkSubmitStatus,
15
+ classifySubmitResult,
16
+ type ZLinkSubmitResult
17
+ } from '../messaging/submission-result';
14
18
  import type { Message } from '../../contracts/Common/Message';
15
19
  import { throwIfAborted } from '../abort';
16
20
  import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
@@ -19,14 +23,16 @@ import type {
19
23
  ZLinkBackendSendFlags,
20
24
  ZLinkBackendStreamSocket
21
25
  } from '../backend/contracts';
22
- import { RequestResult, isBackendNotConnectedError } from '../backend/runtime-values';
26
+ import { RequestResult, isZLinkBackendResultError } from '../backend/runtime-values';
23
27
  import { ZLinkBufferMessage as NativeMessage } from '../backend/runtime-message';
28
+ import { diagnosticTextOrAbsent } from '../diagnostics/diagnostic-text';
24
29
  import type {
25
30
  StreamSessionActorAuthorityFence,
26
31
  StreamSessionService
27
32
  } from '../foundation/service-runtime-contracts';
28
33
  import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
29
34
  import type { ServiceActorRef } from '../foundation/service-stateful-registry';
35
+ import type { ServiceStreamSessionBinding } from '../foundation/service-runtime-contracts';
30
36
  import {
31
37
  closeMeshCompletion,
32
38
  type ZLinkMeshCompletion,
@@ -55,7 +61,8 @@ export interface ZLinkNativeSessionRoute {
55
61
 
56
62
  interface ZLinkManagedActorBinding {
57
63
  readonly actor: ZLinkBackendActorRef;
58
- readonly bindingGeneration?: bigint;
64
+ /** The Session owner's registry snapshot of this binding (Session–Actor binding §5-2). */
65
+ readonly binding?: ServiceStreamSessionBinding;
59
66
  readonly route?: ZLinkNativeSessionRoute;
60
67
  }
61
68
 
@@ -90,7 +97,12 @@ export class ZLinkManagedStream implements ZLinkStream {
90
97
  }
91
98
 
92
99
  actorBindingGeneration(actorId: string): bigint | undefined {
93
- return this.nativeActorBindings.get(actorId)?.bindingGeneration;
100
+ return this.nativeActorBindings.get(actorId)?.binding?.bindingGeneration;
101
+ }
102
+
103
+ /** The Session owner's registry snapshot of the Actor's current native binding. */
104
+ actorBinding(actorId: string): ServiceStreamSessionBinding | undefined {
105
+ return this.nativeActorBindings.get(actorId)?.binding;
94
106
  }
95
107
 
96
108
  private isTransportClosed(): boolean {
@@ -128,7 +140,9 @@ export class ZLinkManagedStream implements ZLinkStream {
128
140
  await this.socket.submit(this.backendRoutingId(), payload, timeoutMs);
129
141
  return { status: ZLinkSubmitStatus.Submitted };
130
142
  } catch (error) {
131
- if (isBackendNotConnectedError(error)) return { status: ZLinkSubmitStatus.Backpressured };
143
+ if (isZLinkBackendResultError(error) && error.operation === 'submit') {
144
+ return classifySubmitResult(error.result, 'STREAM submit', error.phase);
145
+ }
132
146
  throw error;
133
147
  }
134
148
  }
@@ -268,7 +282,7 @@ export class ZLinkManagedStream implements ZLinkStream {
268
282
  }
269
283
  this.nativeActorBindings.set(actor.actorId, {
270
284
  actor: nativeActor,
271
- bindingGeneration: binding.bindingGeneration,
285
+ binding,
272
286
  route
273
287
  });
274
288
  return;
@@ -309,7 +323,11 @@ export class ZLinkManagedStream implements ZLinkStream {
309
323
  ZLinkFrameworkInternalErrorKind.ActorRouteNotFound,
310
324
  `Actor '${actor.actorId}' native route fence does not match its ActorRef ` +
311
325
  `(expected ${String(actor.nodeRid)}/${actor.objectGeneration}, ` +
312
- `resolved ${resolved === undefined ? 'none' : `${String(resolved.nodeRid)}/${resolved.generation}`}, ` +
326
+ `resolved ${diagnosticTextOrAbsent(
327
+ resolved === undefined
328
+ ? undefined
329
+ : `${String(resolved.nodeRid)}/${resolved.generation}`
330
+ )}, ` +
313
331
  `terminal=${completion.terminalResult}, failure=${completion.failureErrno}).`
314
332
  );
315
333
  }
@@ -329,7 +347,8 @@ export class ZLinkManagedStream implements ZLinkStream {
329
347
  const binding = this.nativeActorBindings.get(actorId);
330
348
  if (binding?.route !== undefined) {
331
349
  const route = binding.route;
332
- if (!this.hasNativeBinding(route, actorId, binding.bindingGeneration!)) {
350
+ const bindingGeneration = binding.binding!.bindingGeneration;
351
+ if (!this.hasNativeBinding(route, actorId, bindingGeneration)) {
333
352
  this.nativeActorBindings.delete(actorId);
334
353
  return;
335
354
  }
@@ -340,7 +359,7 @@ export class ZLinkManagedStream implements ZLinkStream {
340
359
  route.service.unbindActor(
341
360
  this.backendRoutingId(),
342
361
  binding.actor as never,
343
- binding.bindingGeneration!,
362
+ bindingGeneration,
344
363
  timeoutMs
345
364
  ),
346
365
  signal
@@ -356,7 +375,7 @@ export class ZLinkManagedStream implements ZLinkStream {
356
375
  // tombstone. A transport teardown can therefore report an internal
357
376
  // completion after the exact binding is already gone. Treat only that
358
377
  // exact missing binding as stale cleanup; preserve other failures.
359
- if (this.hasNativeBinding(route, actorId, binding.bindingGeneration!)) {
378
+ if (this.hasNativeBinding(route, actorId, bindingGeneration)) {
360
379
  throw error;
361
380
  }
362
381
  }
@@ -160,9 +160,8 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
160
160
  ): Promise<ZLinkSubmitResult> {
161
161
  const localActor = this.options.localActorProvider?.() === true;
162
162
  const remoteTarget = this.options.remoteBoundSessionTargetProvider();
163
- const sealedRemoteTarget = remoteTarget?.relocationSealId !== undefined;
164
163
  let nativeAttempted = false;
165
- if (localActor && !sealedRemoteTarget) {
164
+ if (localActor) {
166
165
  const result = await this.options.runtime.submitLocalBoundSession(
167
166
  this.options.actorId,
168
167
  this.message,
@@ -213,7 +212,6 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
213
212
  actorNodeRidHex: (actorRef?.nodeRid as { toHex?: () => string } | undefined)?.toHex?.(),
214
213
  actorGeneration: actorRef?.objectGeneration.toString(),
215
214
  actorOwnershipGeneration: ownershipGeneration?.toString(),
216
- relocationSealId: remoteTarget.relocationSealId,
217
215
  message: this.message,
218
216
  boundPacketName: packetName,
219
217
  metadata: this.selectedMetadata,