@zlink-systems/framework 0.25.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 (557) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
  3. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  4. package/dist/contracts/Common/CoreTypes.js +7 -0
  5. package/dist/contracts/Common/index.d.ts +1 -1
  6. package/dist/contracts/Common/index.js +0 -1
  7. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  8. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  9. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  10. package/dist/contracts/Configuration/Registration.js +58 -36
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  14. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  15. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  16. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  17. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  18. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  19. package/dist/contracts/Handlers/JsonContract.js +10 -4
  20. package/dist/contracts/Locations/Authority.d.ts +1 -1
  21. package/dist/contracts/Locations/Authority.js +3 -2
  22. package/dist/contracts/Locations/Options.js +1 -1
  23. package/dist/contracts/Locations/Stores.d.ts +12 -0
  24. package/dist/contracts/Locations/Stores.js +9 -0
  25. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
  26. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  27. package/dist/internal.d.ts +5 -0
  28. package/dist/internal.js +16 -1
  29. package/dist/nest-integration.d.ts +4 -2
  30. package/dist/nest-integration.js +14 -4
  31. package/dist/runtime/abort.d.ts +1 -0
  32. package/dist/runtime/abort.js +8 -5
  33. package/dist/runtime/activation-admission.d.ts +28 -0
  34. package/dist/runtime/activation-admission.js +57 -0
  35. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  36. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  37. package/dist/runtime/actors/actor-client.d.ts +2 -2
  38. package/dist/runtime/actors/actor-client.js +42 -143
  39. package/dist/runtime/actors/actor-context.d.ts +3 -5
  40. package/dist/runtime/actors/actor-context.js +19 -17
  41. package/dist/runtime/actors/actor-handoff.d.ts +13 -7
  42. package/dist/runtime/actors/actor-handoff.js +36 -25
  43. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  44. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  45. package/dist/runtime/actors/actor-local-native-join.js +85 -123
  46. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  47. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  48. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  49. package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
  50. package/dist/runtime/actors/actor-remote-joiner.js +11 -17
  51. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  52. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  53. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  54. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  55. package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
  56. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  57. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  58. package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
  59. package/dist/runtime/actors/bound-session-wire.js +2 -7
  60. package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
  61. package/dist/runtime/actors/deferred-join-completion.js +21 -0
  62. package/dist/runtime/actors/index.d.ts +10 -8
  63. package/dist/runtime/actors/index.js +101 -73
  64. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  65. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  66. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  67. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  68. package/dist/runtime/admission.d.ts +7 -1
  69. package/dist/runtime/admission.js +11 -1
  70. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  71. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  72. package/dist/runtime/backend/contracts/index.d.ts +8 -33
  73. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
  74. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  75. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  76. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
  77. package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
  78. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
  79. package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
  80. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  81. package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
  82. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  83. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
  84. package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
  85. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
  86. package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
  87. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  88. package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
  89. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  90. package/dist/runtime/backend/runtime-values.js +2 -0
  91. package/dist/runtime/channels/channel-clients.d.ts +20 -9
  92. package/dist/runtime/channels/channel-clients.js +68 -60
  93. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  94. package/dist/runtime/channels/channel-envelope.js +47 -29
  95. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  96. package/dist/runtime/channels/channel-outbound-operations.js +9 -18
  97. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  98. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  99. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  100. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  101. package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
  102. package/dist/runtime/channels/channel-runtime-manager.js +4 -12
  103. package/dist/runtime/channels/channel-socket-options.js +3 -2
  104. package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
  105. package/dist/runtime/channels/channel-socket-registry.js +296 -235
  106. package/dist/runtime/channels/channel-transports.d.ts +11 -20
  107. package/dist/runtime/channels/channel-transports.js +68 -47
  108. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  109. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  110. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  111. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  112. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  113. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  114. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  115. package/dist/runtime/channels/fanout-location-runtime.js +133 -81
  116. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  117. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  118. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  119. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  120. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  121. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  122. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  123. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  124. package/dist/runtime/diagnostics/flow-context.js +16 -2
  125. package/dist/runtime/diagnostics/index.d.ts +4 -2
  126. package/dist/runtime/diagnostics/index.js +14 -4
  127. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  128. package/dist/runtime/diagnostics/message-flow.js +10 -19
  129. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  130. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  131. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  132. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  133. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  134. package/dist/runtime/disposal.d.ts +5 -0
  135. package/dist/runtime/disposal.js +22 -0
  136. package/dist/runtime/execution/index.d.ts +22 -9
  137. package/dist/runtime/execution/index.js +107 -37
  138. package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
  139. package/dist/runtime/execution/serial-execution-queue.js +99 -26
  140. package/dist/runtime/execution/state-lane.d.ts +8 -1
  141. package/dist/runtime/execution/state-lane.js +118 -3
  142. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  143. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  144. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  145. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  146. package/dist/runtime/foundation/listener-records.d.ts +11 -0
  147. package/dist/runtime/foundation/listener-records.js +20 -0
  148. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  149. package/dist/runtime/foundation/operation-identity.js +9 -5
  150. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  151. package/dist/runtime/foundation/operation-registry.js +34 -44
  152. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
  153. package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
  154. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  155. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  156. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
  157. package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
  158. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  159. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  160. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  161. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  162. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  163. package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
  164. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  165. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  166. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  167. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
  168. package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
  169. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
  170. package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
  171. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  172. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  173. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  174. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
  175. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  176. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  177. package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
  178. package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
  179. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
  180. package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
  181. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
  182. package/dist/runtime/foundation/service-topology-registry.js +22 -61
  183. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  184. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  185. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  186. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  187. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  188. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  189. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  190. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  191. package/dist/runtime/framework-errors-internal.js +343 -122
  192. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  193. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  194. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  195. package/dist/runtime/host/actor-packet-relay.js +48 -91
  196. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  197. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  198. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  199. package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
  200. package/dist/runtime/host/actor-transfer-runtime.js +210 -256
  201. package/dist/runtime/host/application-job-queue.js +16 -33
  202. package/dist/runtime/host/bound-session-relay.js +1 -1
  203. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  204. package/dist/runtime/host/index.d.ts +19 -14
  205. package/dist/runtime/host/index.js +234 -175
  206. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  207. package/dist/runtime/host/instance-activation-authority.js +17 -45
  208. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  209. package/dist/runtime/host/location-runtime-owner.js +2 -2
  210. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  211. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  212. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  213. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  214. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  215. package/dist/runtime/host/remote-bound-session-relay.js +11 -23
  216. package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
  217. package/dist/runtime/host/route-mesh-runtime.js +178 -257
  218. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  219. package/dist/runtime/host/runtime-shutdown.js +18 -21
  220. package/dist/runtime/host/service-relocation-control.js +6 -1
  221. package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
  222. package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
  223. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  224. package/dist/runtime/host/spot-address-transport.js +34 -136
  225. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  226. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  227. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
  228. package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
  229. package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
  230. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
  231. package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
  232. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  233. package/dist/runtime/locations/authority-key-codec.js +4 -3
  234. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  235. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  236. package/dist/runtime/locations/creation-operation-id.js +6 -4
  237. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  238. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  239. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  240. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  241. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  242. package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
  243. package/dist/runtime/locations/key-codec.js +3 -2
  244. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  245. package/dist/runtime/locations/lease-tracker.js +7 -11
  246. package/dist/runtime/locations/lifecycle.d.ts +5 -10
  247. package/dist/runtime/locations/lifecycle.js +4 -33
  248. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  249. package/dist/runtime/locations/location-store-failure.js +7 -0
  250. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  251. package/dist/runtime/locations/location-store-pages.js +13 -0
  252. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  253. package/dist/runtime/locations/location-store-repository.js +303 -332
  254. package/dist/runtime/locations/relocation-blob.js +18 -5
  255. package/dist/runtime/locations/resolvers.d.ts +5 -5
  256. package/dist/runtime/locations/resolvers.js +44 -30
  257. package/dist/runtime/locations/runtime.d.ts +5 -4
  258. package/dist/runtime/locations/runtime.js +123 -92
  259. package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
  260. package/dist/runtime/locations/spot-location-claims.js +40 -23
  261. package/dist/runtime/messaging/payload-codec.js +26 -20
  262. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  263. package/dist/runtime/messaging/submission-result.js +48 -0
  264. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
  265. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
  266. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
  267. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
  268. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
  269. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
  270. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
  271. package/dist/runtime/spots/index.d.ts +29 -29
  272. package/dist/runtime/spots/index.js +441 -313
  273. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
  274. package/dist/runtime/spots/spot-activation-registry.js +27 -60
  275. package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
  276. package/dist/runtime/spots/spot-activation-state.js +4 -17
  277. package/dist/runtime/spots/spot-activation.d.ts +10 -9
  278. package/dist/runtime/spots/spot-activation.js +103 -81
  279. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  280. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  281. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  282. package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
  283. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
  284. package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
  285. package/dist/runtime/spots/spot-actor-membership.js +44 -53
  286. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  287. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  288. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  289. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  290. package/dist/runtime/spots/spot-context.d.ts +2 -2
  291. package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
  292. package/dist/runtime/spots/spot-entry-activation.js +9 -21
  293. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  294. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  295. package/dist/runtime/spots/spot-manager-public.js +6 -5
  296. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  297. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
  298. package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
  299. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  300. package/dist/runtime/spots/spot-outbound.js +10 -37
  301. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  302. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  303. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  304. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  305. package/dist/runtime/spots/spot-route-replies.js +3 -1
  306. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
  307. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
  308. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
  309. package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
  310. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  311. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  312. package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
  313. package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
  314. package/dist/runtime/spots/spot-serial-executor.js +9 -2
  315. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
  316. package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
  317. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  318. package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
  319. package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
  320. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
  321. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  322. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  323. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  324. package/dist/runtime/streams/bound-session-service.js +12 -19
  325. package/dist/runtime/streams/index.d.ts +15 -14
  326. package/dist/runtime/streams/index.js +38 -39
  327. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  328. package/dist/runtime/streams/managed-stream.js +17 -8
  329. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  330. package/dist/runtime/streams/protocol.d.ts +6 -33
  331. package/dist/runtime/streams/protocol.js +38 -110
  332. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  333. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  334. package/dist/runtime/streams/session-calls.d.ts +1 -1
  335. package/dist/runtime/streams/session-calls.js +5 -4
  336. package/dist/runtime/streams/session-context.d.ts +6 -6
  337. package/dist/runtime/streams/session-context.js +22 -4
  338. package/dist/runtime/streams/session-requests.js +2 -1
  339. package/dist/runtime/streams/session-serial-executor.js +2 -2
  340. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  341. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  342. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  343. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  344. package/dist/runtime/workers/index.d.ts +2 -2
  345. package/dist/runtime/workers/index.js +5 -4
  346. package/package.json +3 -3
  347. package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
  348. package/src/contracts/Common/CoreTypes.ts +7 -0
  349. package/src/contracts/Common/index.ts +1 -1
  350. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  351. package/src/contracts/Configuration/Registration.ts +92 -48
  352. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  353. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  354. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  355. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  356. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  357. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  358. package/src/contracts/Handlers/JsonContract.ts +14 -4
  359. package/src/contracts/Locations/Authority.ts +7 -3
  360. package/src/contracts/Locations/Options.ts +1 -1
  361. package/src/contracts/Locations/Stores.ts +14 -0
  362. package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
  363. package/src/contracts/Spots/Contracts.ts +1 -1
  364. package/src/internal.ts +15 -0
  365. package/src/nest-integration.ts +28 -10
  366. package/src/runtime/abort.ts +6 -5
  367. package/src/runtime/activation-admission.ts +72 -0
  368. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  369. package/src/runtime/actors/actor-client.ts +77 -204
  370. package/src/runtime/actors/actor-context.ts +45 -39
  371. package/src/runtime/actors/actor-handoff.ts +55 -45
  372. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  373. package/src/runtime/actors/actor-local-native-join.ts +174 -215
  374. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  375. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  376. package/src/runtime/actors/actor-remote-joiner.ts +15 -36
  377. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  378. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  379. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  380. package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
  381. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  382. package/src/runtime/actors/actor-source-transfer.ts +5 -18
  383. package/src/runtime/actors/bound-session-wire.ts +2 -8
  384. package/src/runtime/actors/deferred-join-completion.ts +44 -0
  385. package/src/runtime/actors/index.ts +122 -88
  386. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  387. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  388. package/src/runtime/admission.ts +13 -2
  389. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  390. package/src/runtime/backend/contracts/index.ts +15 -42
  391. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
  392. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  393. package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
  394. package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
  395. package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
  396. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  397. package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
  398. package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
  399. package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
  400. package/src/runtime/backend/raw-binding-port.ts +14 -1
  401. package/src/runtime/backend/runtime-values.ts +4 -1
  402. package/src/runtime/channels/channel-clients.ts +132 -96
  403. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  404. package/src/runtime/channels/channel-envelope.ts +58 -29
  405. package/src/runtime/channels/channel-outbound-operations.ts +10 -31
  406. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  407. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  408. package/src/runtime/channels/channel-runtime-manager.ts +8 -15
  409. package/src/runtime/channels/channel-socket-options.ts +8 -2
  410. package/src/runtime/channels/channel-socket-registry.ts +369 -262
  411. package/src/runtime/channels/channel-transports.ts +161 -115
  412. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  413. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  414. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  415. package/src/runtime/channels/fanout-location-runtime.ts +175 -106
  416. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  417. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  418. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  419. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  420. package/src/runtime/diagnostics/flow-context.ts +16 -2
  421. package/src/runtime/diagnostics/index.ts +27 -17
  422. package/src/runtime/diagnostics/message-flow.ts +15 -25
  423. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  424. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  425. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  426. package/src/runtime/disposal.ts +19 -0
  427. package/src/runtime/execution/index.ts +116 -38
  428. package/src/runtime/execution/serial-execution-queue.ts +179 -34
  429. package/src/runtime/execution/state-lane.ts +142 -4
  430. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  431. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  432. package/src/runtime/foundation/listener-records.ts +21 -0
  433. package/src/runtime/foundation/operation-identity.ts +11 -5
  434. package/src/runtime/foundation/operation-registry.ts +33 -50
  435. package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
  436. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  437. package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
  438. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  439. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  440. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  441. package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
  442. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  443. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  444. package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
  445. package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
  446. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  447. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  448. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
  449. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  450. package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
  451. package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
  452. package/src/runtime/foundation/service-topology-registry.ts +30 -79
  453. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  454. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  455. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  456. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  457. package/src/runtime/framework-errors-internal.ts +380 -134
  458. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  459. package/src/runtime/host/actor-packet-relay.ts +57 -147
  460. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  461. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  462. package/src/runtime/host/actor-transfer-runtime.ts +266 -418
  463. package/src/runtime/host/application-job-queue.ts +28 -34
  464. package/src/runtime/host/bound-session-relay.ts +1 -2
  465. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  466. package/src/runtime/host/index.ts +408 -312
  467. package/src/runtime/host/instance-activation-authority.ts +89 -109
  468. package/src/runtime/host/location-runtime-owner.ts +4 -2
  469. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  470. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  471. package/src/runtime/host/remote-bound-session-relay.ts +12 -44
  472. package/src/runtime/host/route-mesh-runtime.ts +236 -275
  473. package/src/runtime/host/runtime-shutdown.ts +17 -21
  474. package/src/runtime/host/service-relocation-control.ts +14 -1
  475. package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
  476. package/src/runtime/host/spot-address-transport.ts +73 -195
  477. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  478. package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
  479. package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
  480. package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
  481. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  482. package/src/runtime/locations/authority-key-codec.ts +7 -3
  483. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  484. package/src/runtime/locations/creation-operation-id.ts +6 -3
  485. package/src/runtime/locations/domain-store-contract.ts +12 -3
  486. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  487. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  488. package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
  489. package/src/runtime/locations/key-codec.ts +3 -2
  490. package/src/runtime/locations/lease-tracker.ts +8 -14
  491. package/src/runtime/locations/lifecycle.ts +16 -45
  492. package/src/runtime/locations/location-store-failure.ts +4 -0
  493. package/src/runtime/locations/location-store-pages.ts +18 -0
  494. package/src/runtime/locations/location-store-repository.ts +450 -478
  495. package/src/runtime/locations/relocation-blob.ts +17 -6
  496. package/src/runtime/locations/resolvers.ts +90 -58
  497. package/src/runtime/locations/runtime.ts +220 -110
  498. package/src/runtime/locations/spot-location-claims.ts +54 -26
  499. package/src/runtime/messaging/payload-codec.ts +35 -24
  500. package/src/runtime/messaging/submission-result.ts +57 -1
  501. package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
  502. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
  503. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
  504. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
  505. package/src/runtime/spots/index.ts +687 -437
  506. package/src/runtime/spots/spot-activation-registry.ts +42 -71
  507. package/src/runtime/spots/spot-activation-state.ts +4 -16
  508. package/src/runtime/spots/spot-activation.ts +167 -115
  509. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  510. package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
  511. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
  512. package/src/runtime/spots/spot-actor-membership.ts +107 -75
  513. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  514. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  515. package/src/runtime/spots/spot-context.ts +3 -3
  516. package/src/runtime/spots/spot-entry-activation.ts +13 -33
  517. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  518. package/src/runtime/spots/spot-manager-public.ts +29 -21
  519. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  520. package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
  521. package/src/runtime/spots/spot-outbound.ts +47 -68
  522. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  523. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  524. package/src/runtime/spots/spot-route-replies.ts +6 -4
  525. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
  526. package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
  527. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  528. package/src/runtime/spots/spot-runtime-ports.ts +10 -43
  529. package/src/runtime/spots/spot-serial-executor.ts +10 -2
  530. package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
  531. package/src/runtime/spots/spot-timer.ts +3 -2
  532. package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
  533. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
  534. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  535. package/src/runtime/streams/bound-session-service.ts +23 -37
  536. package/src/runtime/streams/index.ts +102 -88
  537. package/src/runtime/streams/managed-stream.ts +29 -10
  538. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  539. package/src/runtime/streams/protocol.ts +34 -88
  540. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  541. package/src/runtime/streams/session-calls.ts +6 -5
  542. package/src/runtime/streams/session-context.ts +54 -10
  543. package/src/runtime/streams/session-requests.ts +2 -1
  544. package/src/runtime/streams/session-serial-executor.ts +2 -2
  545. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  546. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  547. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  548. package/src/runtime/workers/index.ts +13 -12
  549. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
  550. package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
  551. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  552. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  553. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  554. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  555. package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
  556. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  557. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,14 +1,10 @@
1
1
  import type { ActorRef } from '../../contracts';
2
- import type { ServiceSessionBindingAdmissionClaim, ServiceSessionBindingAdmissionResult } from '../foundation/service-session-binding-ingress-port';
3
- import type { ZLinkActorSessionAuthorityFence, ZLinkActorSessionAcceptedProducerProof, ZLinkActorSessionRelocationClaim, ZLinkActorSessionRelocationSnapshot, ZLinkActorSessionRetainedOutbound, ZLinkActorSessionRouteFence } from './actor-session-binding-registry';
2
+ import type { ZLinkActorSessionAuthorityFence, ZLinkActorSessionRelocationClaim, ZLinkActorSessionRelocationSnapshot, ZLinkActorSessionRouteFence } from './actor-session-binding-registry';
4
3
  export interface ZLinkActorSessionBindingRuntimeOwner {
5
4
  actorSlot(actorId: string, sessionRid: string): Promise<number | undefined>;
6
5
  sealRelocation(claim: ZLinkActorSessionRelocationClaim, expected: ZLinkActorSessionRouteFence, signal?: AbortSignal): Promise<void>;
7
6
  relocationSnapshot(actorId: string, sealId: string): Promise<ZLinkActorSessionRelocationSnapshot | undefined>;
8
- retainRelocationOutbound(actorId: string, operation: ZLinkActorSessionRetainedOutbound, sealId?: string): Promise<ServiceSessionBindingAdmissionResult>;
9
- admitRelocationOutbound(claim: ServiceSessionBindingAdmissionClaim, operation: ZLinkActorSessionRetainedOutbound): Promise<ServiceSessionBindingAdmissionResult>;
10
- discardRelocationOutbound(actorId: string, sealId: string, error: unknown): Promise<void>;
11
- applyRelocation(actorId: string, sealId: string, applyFingerprint: string, action: 'commit' | 'abort', commitOwnerTransition: () => Promise<void>, acceptedProducerProof?: ZLinkActorSessionAcceptedProducerProof): Promise<void>;
7
+ applyRelocation(actorId: string, sealId: string, applyFingerprint: string, commitOwnerTransition: () => Promise<void>): Promise<void>;
12
8
  observeRelocationTerminal(actorId: string, sealId: string, applyFingerprint: string): Promise<void>;
13
9
  clearRelocation(actorId: string, error: unknown): Promise<void>;
14
10
  committedRoute(actorId: string): Promise<{
@@ -1,12 +1,15 @@
1
1
  import type { ZLinkMessage, ZLinkMessageSerializer, ZLinkSessionActor } from '../../contracts';
2
- import { type ZLinkSubmitResult } from '../messaging/submission-result';
3
2
  import type { Message } from '../../contracts/Common/Message';
4
- import { type ZLinkStreamFrameHeader } from './protocol';
3
+ import type { ZLinkDispatchErrorReporter } from '../channels';
4
+ import { type ZLinkSubmitResult } from '../messaging/submission-result';
5
5
  import { ZLinkActorSessionBindingRegistry } from './actor-session-binding-registry';
6
6
  import { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
7
+ import { type ZLinkStreamFrameHeader } from './protocol';
7
8
  import { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
8
9
  import { ZLinkStreamFrameMessageFactory } from './stream-frame-factory';
10
+ export declare const DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS = 2000;
9
11
  export interface ZLinkBoundActorRelaySenderOptions {
12
+ readonly dispatchErrors?: ZLinkDispatchErrorReporter;
10
13
  readonly actorBindTimeoutMs?: number;
11
14
  readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
12
15
  readonly relay?: (actor: ZLinkSessionActor, header: ZLinkStreamFrameHeader, payload: Message, signal?: AbortSignal) => Promise<boolean>;
@@ -19,6 +22,7 @@ export declare class ZLinkBoundActorRelaySender {
19
22
  private readonly lifecycle;
20
23
  constructor(routes: ZLinkActorSessionBindingRegistry<DefaultZLinkSessionContext, DefaultZLinkSessionActor>, frameMessages: ZLinkStreamFrameMessageFactory, options?: ZLinkBoundActorRelaySenderOptions, lifecycle?: ZLinkActorSessionLifecycleCoordinator);
21
24
  relay(actor: DefaultZLinkSessionActor, payload: ZLinkMessage, signal?: AbortSignal, dispatchHeader?: ZLinkStreamFrameHeader): Promise<ZLinkSubmitResult>;
25
+ private traceHeldDrop;
22
26
  private relayAcceptedFrame;
23
27
  private currentHeader;
24
28
  private requireDispatchHeader;
@@ -1,14 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZLinkBoundActorRelaySender = void 0;
4
- const submission_result_1 = require("../messaging/submission-result");
5
- const payload_codec_1 = require("../messaging/payload-codec");
6
- const protocol_1 = require("./protocol");
3
+ exports.ZLinkBoundActorRelaySender = exports.DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS = void 0;
4
+ const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
7
5
  const abort_1 = require("../abort");
8
- const execution_1 = require("../execution");
6
+ const diagnostics_1 = require("../diagnostics");
7
+ const payload_codec_1 = require("../messaging/payload-codec");
8
+ const submission_result_1 = require("../messaging/submission-result");
9
9
  const actor_session_binding_registry_1 = require("./actor-session-binding-registry");
10
10
  const actor_session_lifecycle_coordinator_1 = require("./actor-session-lifecycle-coordinator");
11
11
  const managed_stream_1 = require("./managed-stream");
12
+ const protocol_1 = require("./protocol");
13
+ exports.DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS = 2000;
12
14
  class ZLinkBoundActorRelaySender {
13
15
  routes;
14
16
  frameMessages;
@@ -34,37 +36,58 @@ class ZLinkBoundActorRelaySender {
34
36
  await admission.complete();
35
37
  }
36
38
  };
37
- if ((await this.routes.isSealed(actor.actorId)) &&
38
- (0, execution_1.captureZLinkExecutionTurn)() !== undefined) {
39
- void operation().catch(() => undefined);
40
- return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
41
- }
42
39
  return await operation();
43
40
  }
44
- if ((await this.routes.isSealed(actor.actorId)) && (0, execution_1.captureZLinkExecutionTurn)() !== undefined) {
45
- // Spec 32:62 — a Send completes once the source outbound queue
46
- // accepts it; spec 05 — infrastructure send progress must not depend
47
- // on the application turn. When the CALLER IS an application turn
48
- // (a lifecycle callback pushing to a bound actor), awaiting the seal
49
- // release here deadlocks: the relocation seal waits for that very
50
- // callback to finish (onJoinedActor -> push -> seal ->
51
- // onJoinedActor). Accept the frame now and deliver it after the
52
- // seal releases, in per-actor order through the lifecycle lane; the
53
- // bounded seal wait converts a stuck seal into a typed failure.
54
- // Non-turn callers (stream ingress relays) keep the waiting
55
- // semantics so a held frame across a failed rebind still
56
- // terminalizes to the caller.
57
- void this.routes
58
- .runAcceptedFrameWhenReady(actor.actorId, actor.bindingToken, () => this.relayAcceptedFrame(actor, payload, signal), signal)
59
- .catch(() => undefined);
41
+ (0, abort_1.throwIfAborted)(signal);
42
+ const held = await this.routes.acceptOneWay(actor.actorId, actor.bindingToken, () => {
43
+ let heldMessage = (0, payload_codec_1.encodeFrameworkPayloadMessage)(payload, this.options.messageSerializers);
44
+ return {
45
+ deliver: async () => {
46
+ try {
47
+ const result = await this.routes.runAcceptedFrameWhenReady(actor.actorId, actor.bindingToken, () => this.relayAcceptedFrame(actor, payload, undefined, header, undefined, heldMessage));
48
+ if (result.status !== submission_result_1.ZLinkSubmitStatus.Submitted) {
49
+ this.traceHeldDrop(header, result.status === submission_result_1.ZLinkSubmitStatus.Backpressured ||
50
+ result.status === submission_result_1.ZLinkSubmitStatus.TimedOut
51
+ ? 'backpressure'
52
+ : result.status === submission_result_1.ZLinkSubmitStatus.Shutdown
53
+ ? 'shutdown'
54
+ : 'stale_target');
55
+ }
56
+ }
57
+ finally {
58
+ heldMessage?.close();
59
+ heldMessage = undefined;
60
+ }
61
+ },
62
+ drop: (reason, error) => {
63
+ heldMessage?.close();
64
+ heldMessage = undefined;
65
+ this.traceHeldDrop(header, reason, error);
66
+ }
67
+ };
68
+ });
69
+ if (held) {
60
70
  return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
61
71
  }
62
72
  return this.routes.runAcceptedFrameWhenReady(actor.actorId, actor.bindingToken, () => this.relayAcceptedFrame(actor, payload, signal), signal);
63
73
  }
64
- async relayAcceptedFrame(actor, payload, signal, header, requestAdmission) {
74
+ traceHeldDrop(header, reason, error) {
75
+ (0, diagnostics_1.flowIfEnabled)(this.options.dispatchErrors?.flow, ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, undefined, header.flowId)?.trace({
76
+ outcome: ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped,
77
+ surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.StreamSession,
78
+ messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
79
+ packetName: header.name,
80
+ flowId: header.flowId,
81
+ flowOrigin: header.flowOrigin,
82
+ correlationId: header.correlationId,
83
+ errorReason: reason,
84
+ ...(error instanceof Error ? { errorType: error.name, errorMessage: error.message } : {})
85
+ });
86
+ }
87
+ async relayAcceptedFrame(actor, payload, signal, header, requestAdmission, acceptedPayload) {
65
88
  const activeHeader = header ?? (await this.currentHeader(actor));
66
89
  const started = await this.lifecycle.run(actor.actorId, async () => {
67
- const completion = this.relayInsideLifecycle(actor, payload, signal, activeHeader, requestAdmission);
90
+ const completion = this.relayInsideLifecycle(actor, payload, signal, activeHeader, requestAdmission, acceptedPayload);
68
91
  if (activeHeader.kind === protocol_1.ZLinkStreamMessageKind.Request &&
69
92
  activeHeader.requestSeq !== undefined) {
70
93
  // A routed REQUEST only needs this lane while its ordered submission
@@ -96,13 +119,13 @@ class ZLinkBoundActorRelaySender {
96
119
  }
97
120
  return header;
98
121
  }
99
- async relayInsideLifecycle(actor, payload, signal, currentHeader, requestAdmission) {
122
+ async relayInsideLifecycle(actor, payload, signal, currentHeader, requestAdmission, acceptedPayload) {
100
123
  const header = currentHeader ?? (await this.currentHeader(actor));
101
124
  const held = requestAdmission?.beginSubmission(signal);
102
125
  if (held !== undefined)
103
126
  await held;
104
127
  (0, abort_1.throwIfAborted)(signal);
105
- const payloadMessage = (0, payload_codec_1.encodeFrameworkPayloadMessage)(payload, this.options.messageSerializers);
128
+ const payloadMessage = acceptedPayload ?? (0, payload_codec_1.encodeFrameworkPayloadMessage)(payload, this.options.messageSerializers);
106
129
  try {
107
130
  if (this.options.relay !== undefined) {
108
131
  const handled = await this.options.relay(actor, header, payloadMessage, signal);
@@ -125,7 +148,8 @@ class ZLinkBoundActorRelaySender {
125
148
  }
126
149
  }
127
150
  finally {
128
- payloadMessage.close();
151
+ if (acceptedPayload === undefined)
152
+ payloadMessage.close();
129
153
  }
130
154
  }
131
155
  async notifyDisconnected(actor, signal) {
@@ -141,13 +165,13 @@ class ZLinkBoundActorRelaySender {
141
165
  if (unbindNative &&
142
166
  detached.bindingToken === actor.bindingToken &&
143
167
  detached.context.stream instanceof managed_stream_1.ZLinkManagedStream) {
144
- await detached.context.stream.unbindActor(actor.actorId, this.options.actorBindTimeoutMs ?? 2000, signal);
168
+ await detached.context.stream.unbindActor(actor.actorId, this.options.actorBindTimeoutMs ?? exports.DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS, signal);
145
169
  }
146
170
  await this.options.notifyDisconnected?.(actor, signal);
147
171
  }
148
172
  async notifyPhysicalDisconnect(context) {
149
173
  const snapshot = [...context.boundActors];
150
- const timeoutMs = this.options.actorBindTimeoutMs ?? 2000;
174
+ const timeoutMs = this.options.actorBindTimeoutMs ?? exports.DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS;
151
175
  await Promise.allSettled(snapshot.map(async (actor) => {
152
176
  const detached = await this.lifecycle.run(actor.actorId, async () => {
153
177
  const route = await this.routes.route(actor.actorId);
@@ -5,6 +5,7 @@ import { ZLinkActorSessionBindingRegistry } from './actor-session-binding-regist
5
5
  import type { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
6
6
  import { ZLinkStreamFrameMessageFactory } from './stream-frame-factory';
7
7
  import { ZLinkManagedStream } from './managed-stream';
8
+ import type { ZLinkSessionBindingIdentity } from './stream-binding-runtime-ports';
8
9
  export interface ZLinkBoundSessionTransport {
9
10
  send(actorId: string, message: unknown, options: ZLinkBoundSessionSendOptions): Promise<ZLinkSubmitResult>;
10
11
  disconnect(actorId: string, options: ZLinkBoundSessionDisconnectOptions): Promise<void>;
@@ -39,6 +40,12 @@ export declare class ZLinkBoundSessionService {
39
40
  sendNativeBoundSessionError(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, packetName: string, requestSeq: bigint, error: unknown, metadata: ReadonlyMap<string, string>, signal?: AbortSignal): Promise<void>;
40
41
  disconnectNativeBoundSession(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, signal?: AbortSignal): Promise<void>;
41
42
  disconnectBoundSession(actorId: string, signal?: AbortSignal): Promise<void>;
43
+ /**
44
+ * Closes the physical Session of one exact binding after its relocation
45
+ * failed (Session–Actor binding §8.1). A newer binding of the same Actor is
46
+ * not selected.
47
+ */
48
+ closeSessionBinding(actorId: string, expected: ZLinkSessionBindingIdentity, signal?: AbortSignal): Promise<void>;
42
49
  relayRemoteBoundSessionBind(stream: ZLinkManagedStream, actorRef: ActorRef): Promise<void>;
43
50
  private writeLocalBoundSessionFrame;
44
51
  private sendNativeBoundSessionPayload;
@@ -7,6 +7,7 @@ const submission_result_1 = require("../messaging/submission-result");
7
7
  const abort_1 = require("../abort");
8
8
  const protocol_1 = require("./protocol");
9
9
  const bound_session_response_target_1 = require("./bound-session-response-target");
10
+ const spot_remote_codec_1 = require("../spots/spot-remote-codec");
10
11
  const ZLINK_SEND_DONT_WAIT = 1;
11
12
  class ZLinkBoundSessionService {
12
13
  routes;
@@ -102,12 +103,21 @@ class ZLinkBoundSessionService {
102
103
  await this.routes.unbind(actorId, route.context, route.bindingToken);
103
104
  }
104
105
  }
106
+ /**
107
+ * Closes the physical Session of one exact binding after its relocation
108
+ * failed (Session–Actor binding §8.1). A newer binding of the same Actor is
109
+ * not selected.
110
+ */
111
+ async closeSessionBinding(actorId, expected, signal) {
112
+ const route = await this.routes.routeForSessionBinding(actorId, expected.sessionRid, expected.bindingGeneration);
113
+ await route?.context.close(signal);
114
+ }
105
115
  async relayRemoteBoundSessionBind(stream, actorRef) {
106
116
  const encodedBindHeader = (0, protocol_1.encodeStreamHeader)({
107
117
  kind: protocol_1.ZLinkStreamMessageKind.Send,
108
118
  codec: protocol_1.ZLinkStreamCodec.Raw,
109
119
  flags: protocol_1.ZLinkStreamHeaderFlags.None,
110
- name: 'zlink.framework.actor.bound_session.bind',
120
+ name: spot_remote_codec_1.REMOTE_BOUND_SESSION_BIND_PACKET,
111
121
  metadata: new Map()
112
122
  });
113
123
  // encodeStreamHeader returns a fresh, unaliased array; view it without re-copying.
@@ -157,7 +167,7 @@ class ZLinkBoundSessionService {
157
167
  async submitNativeBoundSessionFrame(node, actorRef, frame, signal) {
158
168
  const backendActorRef = toBoundSessionSendActorRef(actorRef);
159
169
  (0, abort_1.throwIfAborted)(signal);
160
- return await node.sendActorBoundSession(backendActorRef, requireBoundSessionGeneration(actorRef), [frame], ZLINK_SEND_DONT_WAIT, boundSessionSendFence(node, backendActorRef, actorRef));
170
+ return await node.sendActorBoundSession(backendActorRef, requireBoundSessionGeneration(actorRef), [frame], ZLINK_SEND_DONT_WAIT);
161
171
  }
162
172
  requireTransport() {
163
173
  if (this.options.transport === undefined) {
@@ -184,20 +194,3 @@ function toBoundSessionSendActorRef(actor) {
184
194
  generation: actor.objectGeneration
185
195
  };
186
196
  }
187
- function boundSessionSendFence(node, backendActor, actor) {
188
- const internal = actor;
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) {
196
- return undefined;
197
- }
198
- return Object.freeze({
199
- targetNodeGeneration: ownerNodeGeneration,
200
- authorityOwnerGeneration: internal.ownershipGeneration,
201
- ownerLeaseGeneration: internal.ownerLeaseGeneration
202
- });
203
- }
@@ -1,21 +1,21 @@
1
- import type { ActorRef, ZLinkActor, ZLinkBoundSession, ZLinkSessionActor, ZLinkMessageSerializer, ZLinkStreamCompressionOptions } from '../../contracts';
2
- import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
3
- import type { ZLinkSubmitResult } from '../messaging/submission-result';
4
- import { ZLinkMessage } from '../../contracts';
1
+ import { type ActorRef, type ZLinkActor, type ZLinkBoundSession, type ZLinkMessageSerializer, type ZLinkSessionActor, type ZLinkStreamCompressionOptions, ZLinkMessage } from '../../contracts';
5
2
  import type { Message } from '../../contracts/Common/Message';
6
- import { type ZLinkFrameworkRegistration } from '../configuration';
7
- import { ZLinkDispatchErrorReporter } from '../channels';
8
- import type { ZLinkBackendAdapterFactory, ZLinkBackendActorSessionNode, ZLinkBackendContext, ZLinkBackendMeshNode } from '../backend/contracts';
3
+ import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
4
+ import type { ZLinkBackendActorSessionNode, ZLinkBackendAdapterFactory, ZLinkBackendContext, ZLinkBackendMeshNode } from '../backend/contracts';
9
5
  import type { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
10
- import { ZLinkStreamCodec, type ZLinkStreamFrameHeader, ZLinkStreamMessageKind, type ZLinkStreamReplyMessageKind } from './protocol';
11
- import { type ZLinkActorSessionAuthorityFence } from './actor-session-binding-registry';
6
+ import { ZLinkDispatchErrorReporter } from '../channels';
7
+ import { type ZLinkFrameworkRegistration } from '../configuration';
8
+ import type { ZLinkListenerRecords } from '../foundation/listener-records';
12
9
  import { ApplicationJobQueue } from '../host/application-job-queue';
13
- import { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
10
+ import type { ZLinkSubmitResult } from '../messaging/submission-result';
11
+ import { type ZLinkActorSessionAuthorityFence } from './actor-session-binding-registry';
14
12
  import { type ZLinkBoundSessionResponseTarget } from './bound-session-response-target';
15
13
  import { type ZLinkBoundSessionTransport } from './bound-session-service';
16
14
  import { ZLinkManagedStream } from './managed-stream';
15
+ import { ZLinkStreamCodec, ZLinkStreamMessageKind, type ZLinkStreamFrameHeader, type ZLinkStreamReplyMessageKind } from './protocol';
16
+ import { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
17
+ import type { ZLinkActorRouteCommitOptions, ZLinkSessionBindingConfirmationOptions, ZLinkSessionBindingIdentity } from './stream-binding-runtime-ports';
17
18
  import { ZLinkStreamSessionNodeRuntime as ZLinkStreamSessionNodeRuntimeCore, ZLinkStreamSessionRuntime as ZLinkStreamSessionRuntimeCore, type ZLinkStreamSessionNodeRuntimeOptions as ZLinkStreamSessionNodeRuntimeCoreOptions, type ZLinkStreamSessionRuntimeOptions as ZLinkStreamSessionRuntimeCoreOptions } from './stream-session-runtime';
18
- import type { ZLinkActorRouteCommitOptions } from './stream-binding-runtime-ports';
19
19
  export { ZLinkPendingSessionRequest } from './session-requests';
20
20
  export { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
21
21
  export { ZLinkActorSessionBindingRegistry } from './actor-session-binding-registry';
@@ -25,6 +25,7 @@ export { DefaultZLinkBoundSession, DefaultZLinkBoundSessionFactory, DefaultZLink
25
25
  export type { ZLinkBoundSessionResponseTarget } from './bound-session-response-target';
26
26
  export type { ZLinkBoundSessionDisconnectOptions, ZLinkBoundSessionSendOptions, ZLinkBoundSessionTransport } from './bound-session-service';
27
27
  export interface ZLinkStreamBindingRuntimeOptions {
28
+ readonly dispatchErrors?: ZLinkDispatchErrorReporter;
28
29
  readonly transport?: ZLinkBoundSessionTransport;
29
30
  readonly messageFactory?: ZLinkStreamMessageFactory;
30
31
  readonly streamPayloadCodec?: ZLinkStreamPayloadCodec;
@@ -40,9 +41,7 @@ export interface ZLinkStreamBindingRuntimeOptions {
40
41
  readonly routingId: unknown;
41
42
  };
42
43
  } | undefined;
43
- readonly confirmRemoteActorSessionBinding?: (actor: ActorRef, sessionRid: ActorRef['nodeRid'], signal?: AbortSignal, options?: {
44
- readonly waitForAcknowledgement?: boolean;
45
- }) => Promise<void>;
44
+ readonly confirmRemoteActorSessionBinding?: (actor: ActorRef, sessionRid: ActorRef['nodeRid'], signal?: AbortSignal, options?: ZLinkSessionBindingConfirmationOptions) => Promise<void>;
46
45
  readonly errorSink?: () => {
47
46
  reportRuntimeTaskException(taskName: string, error: unknown): void;
48
47
  } | undefined;
@@ -68,6 +67,7 @@ export interface ZLinkStreamSessionNodeRuntimeOptions extends Omit<ZLinkStreamSe
68
67
  readonly bindingRuntime?: ZLinkStreamBindingRuntime;
69
68
  }
70
69
  export interface ZLinkStreamRuntimeManagerOptions {
70
+ readonly listenerRecords?: ZLinkListenerRecords;
71
71
  readonly registration: ZLinkFrameworkRegistration;
72
72
  readonly backendAdapterFactory: ZLinkBackendAdapterFactory;
73
73
  readonly context: ZLinkBackendContext;
@@ -142,6 +142,7 @@ export declare class ZLinkStreamBindingRuntime {
142
142
  sendNativeBoundSessionError(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, packetName: string, requestSeq: bigint, error: unknown, metadata: ReadonlyMap<string, string>, signal?: AbortSignal): Promise<void>;
143
143
  disconnectNativeBoundSession(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, signal?: AbortSignal): Promise<void>;
144
144
  disconnectBoundSession(actorId: string, signal?: AbortSignal): Promise<void>;
145
+ closeSessionBinding(actorId: string, expected: ZLinkSessionBindingIdentity, signal?: AbortSignal): Promise<void>;
145
146
  relay(actor: DefaultZLinkSessionActor, payload: ZLinkMessage, signal?: AbortSignal, dispatchHeader?: ZLinkStreamFrameHeader): Promise<ZLinkSubmitResult>;
146
147
  notifyDisconnected(actor: DefaultZLinkSessionActor, signal?: AbortSignal): Promise<void>;
147
148
  createTextMessage(payload: string): Message;
@@ -1,23 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkStreamBindingRuntime = exports.ZLinkStreamSessionNodeRuntime = exports.ZLinkStreamSessionRuntime = exports.ZLinkStreamRuntimeManager = exports.DefaultZLinkSessionContext = exports.DefaultZLinkSessionActor = exports.DefaultZLinkBoundSessionFactory = exports.DefaultZLinkBoundSession = exports.ZLinkManagedStream = exports.zlinkStreamLz4CompressionCodec = exports.ZLinkActorSessionBindingRegistry = exports.ZLinkActorSessionLifecycleCoordinator = exports.ZLinkPendingSessionRequest = void 0;
4
+ const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
5
+ const Options_1 = require("../../contracts/Locations/Options");
4
6
  const configuration_1 = require("../configuration");
5
7
  const service_session_binding_ingress_port_1 = require("../foundation/service-session-binding-ingress-port");
6
- const protocol_1 = require("./protocol");
8
+ const application_job_queue_1 = require("../host/application-job-queue");
7
9
  const actor_session_binding_registry_1 = require("./actor-session-binding-registry");
8
10
  const actor_session_binding_runtime_owner_1 = require("./actor-session-binding-runtime-owner");
9
11
  const actor_session_lifecycle_coordinator_1 = require("./actor-session-lifecycle-coordinator");
10
- const stream_frame_factory_1 = require("./stream-frame-factory");
11
- const application_job_queue_1 = require("../host/application-job-queue");
12
- const stream_message_utils_1 = require("./stream-message-utils");
13
- const session_context_1 = require("./session-context");
12
+ const bound_actor_relay_sender_1 = require("./bound-actor-relay-sender");
14
13
  const bound_session_response_target_1 = require("./bound-session-response-target");
15
14
  const bound_session_service_1 = require("./bound-session-service");
15
+ const protocol_1 = require("./protocol");
16
16
  const session_actor_coordinator_1 = require("./session-actor-coordinator");
17
- const bound_actor_relay_sender_1 = require("./bound-actor-relay-sender");
17
+ const session_context_1 = require("./session-context");
18
18
  const session_provider_1 = require("./session-provider");
19
- const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
19
+ const stream_frame_factory_1 = require("./stream-frame-factory");
20
+ const stream_message_utils_1 = require("./stream-message-utils");
20
21
  const stream_session_runtime_1 = require("./stream-session-runtime");
22
+ const DEFAULT_STREAM_SERVICE_SHUTDOWN_TIMEOUT_MS = 1000;
21
23
  var session_requests_1 = require("./session-requests");
22
24
  Object.defineProperty(exports, "ZLinkPendingSessionRequest", { enumerable: true, get: function () { return session_requests_1.ZLinkPendingSessionRequest; } });
23
25
  var actor_session_lifecycle_coordinator_2 = require("./actor-session-lifecycle-coordinator");
@@ -56,6 +58,12 @@ class ZLinkStreamRuntimeManager {
56
58
  const nativeMeshNode = actorDispatchEnabled ? this.options.nativeMeshNode : undefined;
57
59
  const meshCompletions = actorDispatchEnabled ? this.options.meshCompletions : undefined;
58
60
  const socket = streamAdapter.createStreamSocket(this.options.context);
61
+ const node = {
62
+ meshName: applicationMeshName,
63
+ socket,
64
+ nativeSessionServices: []
65
+ };
66
+ this.nodes.set(nodeName, node);
59
67
  // Core uses -1 as the explicit unlimited value. The Framework value 0
60
68
  // means that it adds no separate STREAM cap, so preserve that meaning
61
69
  // when applying the socket option.
@@ -71,7 +79,6 @@ class ZLinkStreamRuntimeManager {
71
79
  if (advertisedEndpoint === undefined) {
72
80
  throw new configuration_1.ZLinkConfigurationException(`STREAM node '${nodeName}' advertised host requires a TCP endpoint, received '${boundEndpoint}'.`);
73
81
  }
74
- const readablePoller = streamAdapter.createReadablePoller(socket);
75
82
  const nativeSessionRoutes = new Map();
76
83
  if (actorDispatchEnabled) {
77
84
  for (const [meshName, mesh] of this.options.registration.spotNodes) {
@@ -86,11 +93,10 @@ class ZLinkStreamRuntimeManager {
86
93
  if (typeof createService !== 'function' || completions === undefined)
87
94
  continue;
88
95
  const service = createService.call(meshNode, socket.nativeInstance);
96
+ node.nativeSessionServices.push(service);
89
97
  const bindingOwner = (0, actor_session_binding_runtime_owner_1.actorSessionBindingRuntimeOwner)(this.options.bindingRuntime);
90
98
  (0, service_session_binding_ingress_port_1.registerServiceSessionBindingIngressPort)(service, {
91
- actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid),
92
- retainOutbound: (claim, delivery) => bindingOwner.admitRelocationOutbound(claim, delivery),
93
- clearOutbound: (actorId, error) => bindingOwner.clearRelocation(actorId, error)
99
+ actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid)
94
100
  });
95
101
  nativeSessionRoutes.set(meshName, {
96
102
  service,
@@ -102,8 +108,12 @@ class ZLinkStreamRuntimeManager {
102
108
  ? undefined
103
109
  : nativeSessionRoutes.get(applicationMeshName)?.service;
104
110
  const monitor = monitoringAdapter.openSocketMonitor(socket);
111
+ node.monitor = monitor;
105
112
  const sessionType = streamNode.session;
106
113
  const sessionHandlerTypes = streamNode[Symbol.for('@zlink-systems/framework:session-handler-types')] ?? [];
114
+ // The runtime disposes the poller, so the poller is created where nothing
115
+ // can fail before the runtime owns it.
116
+ const readablePoller = streamAdapter.createReadablePoller(socket);
107
117
  const runtime = new stream_session_runtime_1.ZLinkStreamSessionNodeRuntime({
108
118
  nodeName,
109
119
  socket,
@@ -123,42 +133,33 @@ class ZLinkStreamRuntimeManager {
123
133
  replacementCallbackTimeoutMs: this.options.registration.sessionReplacementCallbackTimeoutMs,
124
134
  sessionFactory: (context) => (0, session_provider_1.createStreamSessionInstance)(sessionType, this.options.providerResolver, context, sessionHandlerTypes)
125
135
  });
136
+ node.runtime = runtime;
126
137
  runtime.start();
127
- this.nodes.set(nodeName, {
128
- meshName: applicationMeshName,
129
- advertisedEndpoint,
130
- runtime,
131
- socket,
132
- monitor,
133
- nativeSessionService,
134
- nativeSessionServices: [...nativeSessionRoutes.values()].map((route) => route.service)
135
- });
138
+ this.options.listenerRecords?.record('stream', nodeName, advertisedEndpoint);
136
139
  }
137
140
  }
138
141
  async dispose() {
139
142
  const nodes = [...this.nodes.values()];
140
- this.nodes.clear();
141
143
  for (const node of nodes.reverse()) {
142
- await node.runtime.dispose();
143
- const nativeServices = node.nativeSessionServices ??
144
- (node.nativeSessionService === undefined ? [] : [node.nativeSessionService]);
145
- for (const service of nativeServices) {
146
- service.shutdown(1000);
144
+ await node.runtime?.dispose();
145
+ for (const service of node.nativeSessionServices) {
146
+ service.shutdown(DEFAULT_STREAM_SERVICE_SHUTDOWN_TIMEOUT_MS);
147
147
  service.close();
148
148
  }
149
- await node.monitor.dispose();
149
+ await node.monitor?.dispose();
150
150
  await node.socket.dispose();
151
151
  }
152
+ this.nodes.clear();
152
153
  }
153
154
  async notifyServerDrain(meshName) {
154
155
  await Promise.all([...this.nodes.values()]
155
156
  .filter((node) => node.meshName === meshName)
156
- .map((node) => node.runtime.drainCloseSessions()));
157
+ .map((node) => node.runtime?.drainCloseSessions()));
157
158
  }
158
159
  async notifyUnscopedServerDrain() {
159
160
  await Promise.all([...this.nodes.values()]
160
161
  .filter((node) => node.meshName === undefined)
161
- .map((node) => node.runtime.drainCloseSessions()));
162
+ .map((node) => node.runtime?.drainCloseSessions()));
162
163
  }
163
164
  }
164
165
  exports.ZLinkStreamRuntimeManager = ZLinkStreamRuntimeManager;
@@ -169,6 +170,7 @@ class ZLinkStreamSessionRuntime extends stream_session_runtime_1.ZLinkStreamSess
169
170
  // dispatch-error flow tracer.
170
171
  const bindingRuntime = options.bindingRuntime ??
171
172
  new ZLinkStreamBindingRuntime({
173
+ dispatchErrors: options.dispatchErrors,
172
174
  flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
173
175
  });
174
176
  super({
@@ -186,6 +188,7 @@ class ZLinkStreamSessionNodeRuntime extends stream_session_runtime_1.ZLinkStream
186
188
  // process diagnostics Off gate (see ZLinkStreamSessionRuntime above).
187
189
  const bindingRuntime = options.bindingRuntime ??
188
190
  new ZLinkStreamBindingRuntime({
191
+ dispatchErrors: options.dispatchErrors,
189
192
  flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
190
193
  });
191
194
  super({
@@ -207,7 +210,8 @@ class ZLinkStreamBindingRuntime {
207
210
  ...options,
208
211
  actorBindTimeoutMs: options.actorBindTimeoutMs ?? DEFAULT_ACTOR_BIND_TIMEOUT_MS
209
212
  };
210
- this.routes = new actor_session_binding_registry_1.ZLinkActorSessionBindingRegistry(4096, 4096, runtimeOptions.sessionRelocationSealTimeoutMs ?? 3_000, runtimeOptions.errorSink);
213
+ this.routes = new actor_session_binding_registry_1.ZLinkActorSessionBindingRegistry(actor_session_binding_registry_1.DEFAULT_TERMINAL_RELOCATION_CAPACITY, runtimeOptions.sessionRelocationSealTimeoutMs ??
214
+ Options_1.zlinkDefaultLocationOptions.sessionRelocationSealTimeoutMs, runtimeOptions.errorSink);
211
215
  this.compressionCodec = (0, stream_frame_factory_1.resolveStreamCompressionCodec)(runtimeOptions.streamCompression);
212
216
  this.frameMessages = new stream_frame_factory_1.ZLinkStreamFrameMessageFactory(runtimeOptions);
213
217
  this.boundSessions = new bound_session_service_1.ZLinkBoundSessionService(this.routes, this.frameMessages, runtimeOptions);
@@ -215,17 +219,9 @@ class ZLinkStreamBindingRuntime {
215
219
  this.sessionActors = new session_actor_coordinator_1.ZLinkSessionActorCoordinator(this.routes, this, runtimeOptions, actorSessionLifecycle);
216
220
  this.boundActorRelay = new bound_actor_relay_sender_1.ZLinkBoundActorRelaySender(this.routes, this.frameMessages, runtimeOptions, actorSessionLifecycle);
217
221
  (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
- },
222
+ actorSlot: async (actorId, sessionRid) => (await this.routes.routeForSessionBinding(actorId, sessionRid))?.actorSlot,
224
223
  sealRelocation: (claim, expected, signal) => this.routes.sealRelocation(claim, expected, signal),
225
224
  relocationSnapshot: (actorId, sealId) => this.routes.relocationSnapshot(actorId, sealId),
226
- retainRelocationOutbound: (actorId, operation, sealId) => this.routes.retainRelocationOutbound(actorId, operation, sealId),
227
- admitRelocationOutbound: (claim, operation) => this.routes.admitRelocationOutbound(claim, operation),
228
- discardRelocationOutbound: (actorId, sealId, error) => this.routes.discardRelocationOutbound(actorId, sealId, error),
229
225
  applyRelocation: (...args) => this.routes.applyRelocation(...args),
230
226
  observeRelocationTerminal: (...args) => this.routes.observeRelocationTerminal(...args),
231
227
  clearRelocation: (actorId, error) => this.routes.clearRelocation(actorId, error),
@@ -328,6 +324,9 @@ class ZLinkStreamBindingRuntime {
328
324
  async disconnectBoundSession(actorId, signal) {
329
325
  await this.boundSessions.disconnectBoundSession(actorId, signal);
330
326
  }
327
+ async closeSessionBinding(actorId, expected, signal) {
328
+ await this.boundSessions.closeSessionBinding(actorId, expected, signal);
329
+ }
331
330
  async relay(actor, payload, signal, dispatchHeader) {
332
331
  return await this.boundActorRelay.relay(actor, payload, signal, dispatchHeader);
333
332
  }
@@ -5,6 +5,7 @@ import type { ZLinkBackendSendFlags, ZLinkBackendStreamSocket } from '../backend
5
5
  import type { StreamSessionService } from '../foundation/service-runtime-contracts';
6
6
  import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
7
7
  import type { ServiceActorRef } from '../foundation/service-stateful-registry';
8
+ import type { ServiceStreamSessionBinding } from '../foundation/service-runtime-contracts';
8
9
  import { type ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
9
10
  import { ZLinkStreamCloseReasonCode } from './protocol';
10
11
  import type { ZLinkActorSessionAuthorityFence } from './actor-session-binding-registry';
@@ -29,6 +30,8 @@ export declare class ZLinkManagedStream implements ZLinkStream {
29
30
  get routingId(): RoutingId;
30
31
  get actorBindingRoutingId(): RoutingId;
31
32
  actorBindingGeneration(actorId: string): bigint | undefined;
33
+ /** The Session owner's registry snapshot of the Actor's current native binding. */
34
+ actorBinding(actorId: string): ServiceStreamSessionBinding | undefined;
32
35
  private isTransportClosed;
33
36
  get localAddr(): string | undefined;
34
37
  get remoteAddr(): string | undefined;
@@ -8,6 +8,7 @@ const abort_1 = require("../abort");
8
8
  const payload_codec_1 = require("../messaging/payload-codec");
9
9
  const runtime_values_1 = require("../backend/runtime-values");
10
10
  const runtime_message_1 = require("../backend/runtime-message");
11
+ const diagnostic_text_1 = require("../diagnostics/diagnostic-text");
11
12
  const mesh_completion_table_1 = require("../backend/mesh-completion-table");
12
13
  const protocol_1 = require("./protocol");
13
14
  const ZLINK_SEND_DONT_WAIT = 1;
@@ -47,7 +48,11 @@ class ZLinkManagedStream {
47
48
  return this.backendSessionRoutingId;
48
49
  }
49
50
  actorBindingGeneration(actorId) {
50
- return this.nativeActorBindings.get(actorId)?.bindingGeneration;
51
+ return this.nativeActorBindings.get(actorId)?.binding?.bindingGeneration;
52
+ }
53
+ /** The Session owner's registry snapshot of the Actor's current native binding. */
54
+ actorBinding(actorId) {
55
+ return this.nativeActorBindings.get(actorId)?.binding;
51
56
  }
52
57
  isTransportClosed() {
53
58
  return this.transportClosed;
@@ -77,8 +82,9 @@ class ZLinkManagedStream {
77
82
  return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
78
83
  }
79
84
  catch (error) {
80
- if ((0, runtime_values_1.isBackendNotConnectedError)(error))
81
- return { status: submission_result_1.ZLinkSubmitStatus.Backpressured };
85
+ if ((0, runtime_values_1.isZLinkBackendResultError)(error) && error.operation === 'submit') {
86
+ return (0, submission_result_1.classifySubmitResult)(error.result, 'STREAM submit', error.phase);
87
+ }
82
88
  throw error;
83
89
  }
84
90
  }
@@ -157,7 +163,7 @@ class ZLinkManagedStream {
157
163
  }
158
164
  this.nativeActorBindings.set(actor.actorId, {
159
165
  actor: nativeActor,
160
- bindingGeneration: binding.bindingGeneration,
166
+ binding,
161
167
  route
162
168
  });
163
169
  return;
@@ -179,7 +185,9 @@ class ZLinkManagedStream {
179
185
  String(resolved.nodeRid) !== String(actor.nodeRid)) {
180
186
  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
187
  `(expected ${String(actor.nodeRid)}/${actor.objectGeneration}, ` +
182
- `resolved ${resolved === undefined ? 'none' : `${String(resolved.nodeRid)}/${resolved.generation}`}, ` +
188
+ `resolved ${(0, diagnostic_text_1.diagnosticTextOrAbsent)(resolved === undefined
189
+ ? undefined
190
+ : `${String(resolved.nodeRid)}/${resolved.generation}`)}, ` +
183
191
  `terminal=${completion.terminalResult}, failure=${completion.failureErrno}).`);
184
192
  }
185
193
  }
@@ -198,12 +206,13 @@ class ZLinkManagedStream {
198
206
  const binding = this.nativeActorBindings.get(actorId);
199
207
  if (binding?.route !== undefined) {
200
208
  const route = binding.route;
201
- if (!this.hasNativeBinding(route, actorId, binding.bindingGeneration)) {
209
+ const bindingGeneration = binding.binding.bindingGeneration;
210
+ if (!this.hasNativeBinding(route, actorId, bindingGeneration)) {
202
211
  this.nativeActorBindings.delete(actorId);
203
212
  return;
204
213
  }
205
214
  try {
206
- await this.requireSuccessfulCompletion(route.completions.submit(() => route.service.unbindActor(this.backendRoutingId(), binding.actor, binding.bindingGeneration, timeoutMs), signal), `Actor '${actorId}' native session unbind`,
215
+ await this.requireSuccessfulCompletion(route.completions.submit(() => route.service.unbindActor(this.backendRoutingId(), binding.actor, bindingGeneration, timeoutMs), signal), `Actor '${actorId}' native session unbind`,
207
216
  // Destroy can remove the actor registry entry before the old
208
217
  // session owner processes its cleanup. Both a disconnected route and
209
218
  // that stale actor route are idempotent unbind outcomes.
@@ -214,7 +223,7 @@ class ZLinkManagedStream {
214
223
  // tombstone. A transport teardown can therefore report an internal
215
224
  // completion after the exact binding is already gone. Treat only that
216
225
  // exact missing binding as stale cleanup; preserve other failures.
217
- if (this.hasNativeBinding(route, actorId, binding.bindingGeneration)) {
226
+ if (this.hasNativeBinding(route, actorId, bindingGeneration)) {
218
227
  throw error;
219
228
  }
220
229
  }