@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,3 +1,5 @@
1
+ import { ZLINK_MAX_SPOT_ID_BYTES } from '../../contracts/Common/CoreTypes';
2
+ import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
1
3
  import type { ZLinkBackendActorRef } from '../backend/contracts';
2
4
  import { decodeActorMessageFollowContext, type ZLinkRemoteBoundSessionTarget } from '../actors';
3
5
  import type { RoutingId, ZLinkActor } from '../../contracts';
@@ -146,7 +148,7 @@ export function decodeRemoteActorJoinPayload(
146
148
  requestContentType:
147
149
  typeof payload.requestContentType === 'string'
148
150
  ? payload.requestContentType
149
- : 'application/json'
151
+ : ZlinkStreamContentType.Json
150
152
  };
151
153
  }
152
154
 
@@ -302,8 +304,10 @@ function decodeBoundSessionServiceWireRelocation(
302
304
 
303
305
  function requireSpotId(value: string): string {
304
306
  const bytes = Buffer.byteLength(value, 'utf8');
305
- if (bytes < 1 || bytes > 255) {
306
- throw new Error('Remote bound session SpotId must contain 1..255 UTF-8 bytes.');
307
+ if (bytes < 1 || bytes > ZLINK_MAX_SPOT_ID_BYTES) {
308
+ throw new Error(
309
+ `Remote bound session SpotId must contain 1..${ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes.`
310
+ );
307
311
  }
308
312
  return value;
309
313
  }
@@ -1,21 +1,31 @@
1
- import type {
2
- Type,
3
- ZLinkMessageSerializer,
4
- ZLinkSpot,
5
- ZLinkSpotPacketHandler,
6
- ZLinkSpotRequestHandler
1
+ import {
2
+ type Type,
3
+ type ZLinkMessageSerializer,
4
+ type ZLinkSpot,
5
+ type ZLinkSpotPacketHandler,
6
+ type ZLinkSpotRequestHandler,
7
+ ZLinkFrameworkException,
8
+ zlinkMessageMetadata
7
9
  } from '../../contracts';
10
+
11
+ import type { Message } from '../../contracts/Common/Message';
8
12
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
9
- import { ZLinkFrameworkException, zlinkMessageMetadata } from '../../contracts';
10
13
  import {
11
14
  ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
12
15
  ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
13
16
  ZLinkDispatchErrorSurface,
14
17
  ZLinkDispatchMessageKind
15
18
  } from '../../contracts/Dispatch/ZLinkDispatchOptions';
19
+ import {
20
+ ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET,
21
+ ZLINK_REMOTE_BOUND_SESSION_ERROR_PACKET,
22
+ ZLINK_REMOTE_BOUND_SESSION_RESPONSE_PACKET,
23
+ ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET
24
+ } from '../actors';
25
+ import type { ZLinkApplicationWorkClaim } from '../admission';
26
+ import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
16
27
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
17
28
  import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
18
- import type { Message } from '../../contracts/Common/Message';
19
29
  import type { ZLinkDispatchErrorReporter } from '../channels';
20
30
  import {
21
31
  decodeChannelEnvelope,
@@ -27,25 +37,18 @@ import {
27
37
  ZLinkChannelMessageKind,
28
38
  type ZLinkChannelEnvelopeCodecRegistry
29
39
  } from '../channels/channel-envelope';
40
+ import { SPOT_DIRECT_ENVELOPE } from '../channels/spot-direct-envelope';
41
+ import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
42
+ import { zlinkMetadataByteLength, zlinkSerialWorkOptions } from '../execution/serial-work-size';
30
43
  import {
31
- ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET,
32
- ZLINK_REMOTE_BOUND_SESSION_ERROR_PACKET,
33
- ZLINK_REMOTE_BOUND_SESSION_RESPONSE_PACKET,
34
- ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET
35
- } from '../actors';
44
+ internalFrameworkErrorKind,
45
+ ZLinkFrameworkInternalErrorKind
46
+ } from '../framework-errors-internal';
36
47
  import { resolveLifecycleHandler } from '../handlers/handler-instance-scope';
37
48
  import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
38
- import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
39
- import type { ZLinkApplicationWorkClaim } from '../admission';
40
- import { zlinkMetadataByteLength, zlinkSerialWorkOptions } from '../execution/serial-work-size';
41
49
  import { REMOTE_ACTOR_JOIN_PACKET } from './spot-remote-codec';
42
50
  import { appendRouteReplyParts, hasReplyToken, submitRouteReply } from './spot-route-replies';
43
- import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
44
- import {
45
- ZLinkFrameworkInternalErrorKind,
46
- internalFrameworkErrorKind
47
- } from '../framework-errors-internal';
48
- import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
51
+ import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
49
52
 
50
53
  interface ZLinkSpotRoutePacketDispatchOptions {
51
54
  readonly packetHandlers: ReadonlyMap<string, readonly ZLinkSpotHandlerRegistration[]>;
@@ -58,8 +61,6 @@ interface ZLinkSpotRoutePacketDispatchOptions {
58
61
  readonly claimApplicationWork?: () => ZLinkApplicationWorkClaim;
59
62
  }
60
63
 
61
- const SPOT_DIRECT_ENVELOPE = 'zlink.framework.spot-direct.v1';
62
-
63
64
  /** D5: reply metadata attached only to framework-self-generated errors. */
64
65
  const FRAMEWORK_ORIGIN_REPLY_METADATA: Readonly<Record<string, string>> = Object.freeze({
65
66
  [ZLINK_FRAMEWORK_ORIGIN_METADATA_KEY]: ZLINK_FRAMEWORK_ORIGIN_METADATA_VALUE
@@ -1,6 +1,7 @@
1
+ import { constants as osConstants } from 'node:os';
1
2
  import type {
2
- ZLinkBackendMessageLike as MessageLike,
3
- ZLinkBackendReceived as BackendReceived
3
+ ZLinkBackendReceived as BackendReceived,
4
+ ZLinkBackendMessageLike as MessageLike
4
5
  } from '../backend/runtime-values';
5
6
  import {
6
7
  decodeChannelEnvelope,
@@ -8,8 +9,9 @@ import {
8
9
  encodeChannelReplyParts
9
10
  } from '../channels/channel-envelope';
10
11
  import { ZLinkConfigurationException } from '../configuration';
11
- import { encodeSpotRouteBridgeReply } from './spot-route-reply-wire';
12
12
  import type { ZLinkDecodedRemoteActorJoinRequest } from './spot-remote-codec';
13
+ import { encodeSpotRouteBridgeReply } from './spot-route-reply-wire';
14
+ const nativeErrnoValues = osConstants.errno;
13
15
 
14
16
  export interface ZLinkRouteReplySubmitOperation {
15
17
  message(message: MessageLike): ZLinkRouteReplySubmitOperation;
@@ -120,6 +122,6 @@ function isNativeBadAddress(error: unknown): boolean {
120
122
  return (
121
123
  typeof error === 'object' &&
122
124
  error !== null &&
123
- Number((error as { nativeErrno?: unknown }).nativeErrno) === 14
125
+ Number((error as { nativeErrno?: unknown }).nativeErrno) === nativeErrnoValues.EFAULT
124
126
  );
125
127
  }
@@ -5,6 +5,8 @@ import type {
5
5
  ZLinkSpotActorJoinResult
6
6
  } from '../../contracts';
7
7
  import type { Message } from '../../contracts/Common/Message';
8
+ import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
9
+ import type { ZLinkRemoteBoundSessionTarget } from '../actors/actor-runtime-state';
8
10
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
9
11
  import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
10
12
  import {
@@ -23,12 +25,12 @@ import {
23
25
  hasRemoteActorJoinIdentity,
24
26
  isRemoteActorJoinPayload,
25
27
  type ZLinkDecodedRemoteActorJoinRequest,
26
- type ZLinkRoutedActorTransferProvider,
27
- type ZLinkRemoteActorJoinWirePayload
28
+ type ZLinkRemoteActorJoinWirePayload,
29
+ type ZLinkRoutedActorTransferProvider
28
30
  } from './spot-remote-codec';
29
31
  import { submitRoutedActorJoinError, submitRoutedActorJoinReply } from './spot-route-replies';
30
32
  import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
31
- import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
33
+ const DEFAULT_PENDING_ADMISSION_TIMEOUT_MS = 30_000;
32
34
 
33
35
  interface ZLinkRoutedActorAdmissionTarget {
34
36
  onActorJoin?(actorId: string, request: ZLinkMessage): Promise<ZLinkSpotActorJoinResult>;
@@ -41,7 +43,8 @@ interface ZLinkSpotRoutedActorAdmissionOptions {
41
43
  readonly routedActorTransferProvider?: ZLinkRoutedActorTransferProvider;
42
44
  readonly commitTransferredActor?: (
43
45
  actor: ZLinkActor,
44
- backlog: readonly ZLinkActorHandoffPacket[]
46
+ backlog: readonly ZLinkActorHandoffPacket[],
47
+ sealedSession: ZLinkRemoteBoundSessionTarget | undefined
45
48
  ) => Promise<readonly ZLinkActorHandoffResult[]>;
46
49
  readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
47
50
  readonly pendingAdmissionTimeoutMs?: number;
@@ -220,7 +223,11 @@ export class ZLinkSpotRoutedActorAdmission {
220
223
  decoded.remoteBoundSessionTarget
221
224
  );
222
225
  const handoffResults =
223
- (await this.options.commitTransferredActor?.(actor, decoded.handoffBacklog)) ?? [];
226
+ (await this.options.commitTransferredActor?.(
227
+ actor,
228
+ decoded.handoffBacklog,
229
+ decoded.remoteBoundSessionTarget
230
+ )) ?? [];
224
231
  const commitReply = {
225
232
  accepted: true,
226
233
  actorNodeRid: String(actorRef.nodeRid),
@@ -278,7 +285,7 @@ export class ZLinkSpotRoutedActorAdmission {
278
285
  if (pending.deadline !== undefined) clearTimeout(pending.deadline);
279
286
  pending.deadline = setTimeout(() => {
280
287
  if (this.pending.get(transferId) === pending) this.pending.delete(transferId);
281
- }, this.options.pendingAdmissionTimeoutMs ?? 30_000);
288
+ }, this.options.pendingAdmissionTimeoutMs ?? DEFAULT_PENDING_ADMISSION_TIMEOUT_MS);
282
289
  pending.deadline.unref();
283
290
  }
284
291
 
@@ -9,11 +9,10 @@ import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProvider
9
9
  import type { RoutingId } from '../../contracts';
10
10
  import type { ActorRef } from '../../contracts/Common/ActorRef';
11
11
  import type { ZLinkRemoteActorPacketTarget, ZLinkRemoteBoundSessionTarget } from '../actors';
12
- import type { ZLinkBackendReceived, ZLinkBackendSpot } from '../backend/contracts';
12
+ import type { ZLinkBackendReceived } from '../backend/contracts';
13
13
  import type { ZLinkDispatchErrorReporter } from '../channels';
14
14
  import type { ZLinkChannelEnvelopeCodecRegistry } from '../channels/channel-envelope';
15
15
  import { decodeRemoteActorPacketRelay } from './spot-remote-route-codec';
16
- import { ZLINK_RECV_DONT_WAIT } from './spot-native-flags';
17
16
  import { ZLinkSpotActorPacketRelayDispatch } from './spot-actor-packet-relay-dispatch';
18
17
  import type {
19
18
  ZLinkActorPacketDelivery,
@@ -33,8 +32,6 @@ interface ZLinkRoutedFrameAdmissionTarget {
33
32
  }
34
33
 
35
34
  interface ZLinkSpotRoutedFrameDispatchOptions {
36
- readonly nativeSpot: ZLinkBackendSpot;
37
- readonly createReceived: () => ZLinkBackendReceived;
38
35
  readonly nativeSpotId: string;
39
36
  readonly serial: ZLinkSpotSerialTurnExecutor;
40
37
  readonly resolveActor: (actorId: string) => ZLinkActor | undefined;
@@ -43,7 +40,8 @@ interface ZLinkSpotRoutedFrameDispatchOptions {
43
40
  readonly routedActorTransferProvider?: ZLinkRoutedActorTransferProvider;
44
41
  readonly commitTransferredActor?: (
45
42
  actor: ZLinkActor,
46
- backlog: readonly ZLinkActorHandoffPacket[]
43
+ backlog: readonly ZLinkActorHandoffPacket[],
44
+ sealedSession: ZLinkRemoteBoundSessionTarget | undefined
47
45
  ) => Promise<readonly ZLinkActorHandoffResult[]>;
48
46
  readonly actorPacketHandler?: (delivery: ZLinkActorPacketDelivery) => Promise<unknown>;
49
47
  readonly routedBoundSessionReceiver?: (
@@ -86,11 +84,9 @@ interface ZLinkSpotRoutedFrameDispatchOptions {
86
84
  readonly providerResolver?: ZLinkProviderResolver;
87
85
  readonly dispatchErrors?: ZLinkDispatchErrorReporter;
88
86
  readonly claimApplicationWork?: () => ZLinkApplicationWorkClaim;
89
- readonly waitIdle: () => Promise<void>;
90
87
  }
91
88
 
92
89
  export class ZLinkSpotRoutedFrameDispatch {
93
- private routeDraining = false;
94
90
  private readonly packetHandlers = new Map<string, ZLinkSpotHandlerRegistration[]>();
95
91
  private readonly routedBoundSessionDispatch: ZLinkSpotRoutedBoundSessionDispatch;
96
92
  private readonly actorPacketRelayDispatch: ZLinkSpotActorPacketRelayDispatch;
@@ -144,61 +140,6 @@ export class ZLinkSpotRoutedFrameDispatch {
144
140
  }
145
141
  }
146
142
 
147
- async drain(
148
- received: ZLinkBackendReceived | undefined = undefined,
149
- retryDeadlineMs = performance.now()
150
- ): Promise<void> {
151
- if (this.routeDraining) {
152
- if (received !== undefined) {
153
- try {
154
- await this.dispatch(received);
155
- } finally {
156
- received.close();
157
- }
158
- }
159
- return;
160
- }
161
- this.routeDraining = true;
162
- try {
163
- if (received !== undefined) {
164
- try {
165
- await this.dispatch(received);
166
- } finally {
167
- received.close();
168
- }
169
- received = undefined;
170
- }
171
- for (;;) {
172
- received ??= this.options.createReceived();
173
- try {
174
- if (!this.options.nativeSpot.recvRoute(received, ZLINK_RECV_DONT_WAIT)) {
175
- received.close();
176
- await this.options.waitIdle();
177
- return;
178
- }
179
- } catch (error) {
180
- if (isRouteRecvRetryable(error)) {
181
- closeReceivedQuietly(received);
182
- if (performance.now() < retryDeadlineMs) {
183
- setTimeout(() => void this.drain(undefined, retryDeadlineMs), 10);
184
- }
185
- return;
186
- }
187
- received.close();
188
- throw error;
189
- }
190
- try {
191
- await this.dispatch(received);
192
- } finally {
193
- received.close();
194
- }
195
- received = this.options.createReceived();
196
- }
197
- } finally {
198
- this.routeDraining = false;
199
- }
200
- }
201
-
202
143
  async dispatchFromEvent(received: ZLinkBackendReceived): Promise<void> {
203
144
  try {
204
145
  await this.dispatch(received);
@@ -234,20 +175,8 @@ export class ZLinkSpotRoutedFrameDispatch {
234
175
  if (await this.routePacketDispatch.dispatch(received)) {
235
176
  return;
236
177
  }
237
- await this.routedActorAdmission.admit(received);
178
+ await this.options.serial.executeLifecycleOperation(() =>
179
+ this.routedActorAdmission.admit(received)
180
+ );
238
181
  }
239
182
  }
240
-
241
- function isRouteRecvRetryable(error: unknown): boolean {
242
- return (
243
- typeof error === 'object' &&
244
- error !== null &&
245
- [201, 202, 204].includes(Number((error as { result?: unknown }).result))
246
- );
247
- }
248
-
249
- function closeReceivedQuietly(received: ZLinkBackendReceived): void {
250
- try {
251
- received.close();
252
- } catch {}
253
- }
@@ -1,3 +1,4 @@
1
+ import { dispatchReasonFromError } from '../diagnostics/dispatch-error-details';
1
2
  import type {
2
3
  RoutingId,
3
4
  Type,
@@ -7,7 +8,7 @@ import type {
7
8
  } from '../../contracts';
8
9
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
9
10
  import type { ZLinkApplicationWorkClaim } from '../admission';
10
- import { ZLinkFrameworkException, zlinkMessageMetadata } from '../../contracts';
11
+ import { zlinkMessageMetadata } from '../../contracts';
11
12
  import {
12
13
  ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
13
14
  ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
@@ -18,8 +19,7 @@ import type { ZLinkDispatchErrorReporter } from '../channels';
18
19
  import { ZLinkConfigurationException } from '../configuration';
19
20
  import {
20
21
  ZLinkFrameworkInternalErrorKind,
21
- createInternalFrameworkException,
22
- internalFrameworkErrorKind
22
+ createInternalFrameworkException
23
23
  } from '../framework-errors-internal';
24
24
  import { resolveLifecycleHandler } from '../handlers/handler-instance-scope';
25
25
  import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
@@ -31,6 +31,7 @@ import {
31
31
  } from '../application-jobs/application-job-queue-scope';
32
32
 
33
33
  interface ZLinkRoutedSpotPacketActivation {
34
+ readonly objectGeneration?: bigint;
34
35
  readonly meshName?: string;
35
36
  readonly spotId: RoutingId;
36
37
  readonly spot: ZLinkSpot;
@@ -55,6 +56,9 @@ interface ZLinkRoutedSpotPacketContext {
55
56
  readonly signal?: AbortSignal;
56
57
  /** Wait until a recovered activation has actually entered its first handler. */
57
58
  readonly awaitFirstHandlerTurn?: boolean;
59
+ readonly onOneWayError?: (error: unknown) => void;
60
+ /** Retains the caller's Instance address intent through an incarnation boundary. */
61
+ readonly activationRecord?: import('../foundation/service-runtime-contracts').ReceiveRecord;
58
62
  }
59
63
 
60
64
  export class ZLinkRoutedSpotPacketDispatch {
@@ -143,14 +147,52 @@ export class ZLinkRoutedSpotPacketDispatch {
143
147
  activation.meshName === undefined
144
148
  ? undefined
145
149
  : this.options.claimApplicationWork?.(activation.meshName);
146
- const runHandler = async () => {
150
+ const originalRecord = context.activationRecord?.activationRecord;
151
+ const instanceIntent =
152
+ originalRecord?.activation === 'missing' ||
153
+ (originalRecord?.activation === 'ready' && originalRecord.instanceIntent);
154
+ const runHandler = async (failure?: unknown) => {
147
155
  try {
156
+ if (failure !== undefined) throw failure;
157
+ const current = this.options.resolveActivation(spotId);
158
+ if (
159
+ current === undefined ||
160
+ (!instanceIntent &&
161
+ (current !== activation ||
162
+ (originalRecord?.activation === 'ready' &&
163
+ originalRecord.route.objectGeneration !== current.objectGeneration)))
164
+ ) {
165
+ throw createInternalFrameworkException(
166
+ ZLinkFrameworkInternalErrorKind.RequestTargetNotFound,
167
+ `Spot '${String(spotId)}' is not active.`
168
+ );
169
+ }
170
+ if (
171
+ context.activationRecord?.deadlineUnixMs !== undefined &&
172
+ context.activationRecord.deadlineUnixMs < BigInt(Date.now())
173
+ ) {
174
+ throw createInternalFrameworkException(
175
+ ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
176
+ `Spot '${String(spotId)}' request deadline has expired.`
177
+ );
178
+ }
179
+ const currentRegistrations =
180
+ current === activation
181
+ ? registrations
182
+ : current.handlers
183
+ .snapshot()
184
+ .filter(
185
+ (registration) =>
186
+ registration.kind === 'packet' &&
187
+ (registration.packetName ?? registration.handlerType.name) ===
188
+ (packetName ?? '')
189
+ );
148
190
  // Decode only after the Spot has acquired both application admission
149
191
  // and its execution authority.
150
192
  const payload = decodePayload();
151
- for (const registration of registrations) {
193
+ for (const registration of currentRegistrations) {
152
194
  const handler = await resolveLifecycleHandler(
153
- activation.spot,
195
+ current.spot,
154
196
  registration.handlerType as Type<
155
197
  | ZLinkSpotPacketHandler<ZLinkSpot, unknown>
156
198
  | ZLinkSpotRequestHandler<ZLinkSpot, unknown, unknown>
@@ -159,8 +201,9 @@ export class ZLinkRoutedSpotPacketDispatch {
159
201
  );
160
202
  resolveFirstHandlerTurn?.();
161
203
  resolveFirstHandlerTurn = undefined;
204
+ context.activationRecord?.onHandlerTurnStarted?.();
162
205
  releaseApplicationJobPermitBeforeHandler();
163
- response = await handler.handle(activation.spot, payload, {
206
+ response = await handler.handle(current.spot, payload, {
164
207
  channelName: context.channelName,
165
208
  contentType: context.contentType,
166
209
  packetName: packetName!,
@@ -186,17 +229,33 @@ export class ZLinkRoutedSpotPacketDispatch {
186
229
  applicationClaim?.close();
187
230
  }
188
231
  },
189
- (error) => this.reportFailure(spotId, packetName, context, false, error),
232
+ (error) => {
233
+ if (context.onOneWayError === undefined) {
234
+ this.reportFailure(spotId, packetName, context, false, error);
235
+ } else if (resolveFirstHandlerTurn === undefined) {
236
+ context.onOneWayError(error);
237
+ }
238
+ },
190
239
  context.workOptions,
191
- { signal: context.signal }
240
+ { signal: context.signal },
241
+ instanceIntent
242
+ ? async (failure?: unknown) => {
243
+ try {
244
+ await runHandler(failure);
245
+ } finally {
246
+ detachedApplicationPermit?.releaseAfterInternalProcessing();
247
+ applicationClaim?.close();
248
+ }
249
+ }
250
+ : undefined
192
251
  );
193
- await firstHandlerTurn;
194
252
  } catch (error) {
195
253
  detached = false;
196
254
  detachedApplicationPermit?.releaseAfterInternalProcessing();
197
255
  rejectFirstHandlerTurn?.(error);
198
256
  throw error;
199
257
  }
258
+ await firstHandlerTurn;
200
259
  } else {
201
260
  if (activation.serial.isCurrentTurn) {
202
261
  throw createInternalFrameworkException(
@@ -204,10 +263,15 @@ export class ZLinkRoutedSpotPacketDispatch {
204
263
  `Spot '${spotId}' cannot await a request to its current serial turn.`
205
264
  );
206
265
  }
207
- await activation.serial.execute(runHandler, context.workOptions);
266
+ await activation.serial.execute(
267
+ runHandler,
268
+ context.workOptions,
269
+ instanceIntent ? runHandler : undefined
270
+ );
208
271
  }
209
272
  } catch (error) {
210
- this.reportFailure(spotId, packetName, context, returnResponse, error);
273
+ if (context.activationRecord?.activationRecord === undefined)
274
+ this.reportFailure(spotId, packetName, context, returnResponse, error);
211
275
  throw error;
212
276
  } finally {
213
277
  if (!detached) applicationClaim?.close();
@@ -222,18 +286,17 @@ export class ZLinkRoutedSpotPacketDispatch {
222
286
  returnResponse: boolean,
223
287
  error: unknown
224
288
  ): void {
225
- const frameworkErrorKind =
226
- error instanceof ZLinkFrameworkException ? internalFrameworkErrorKind(error) : undefined;
227
- this.options.dispatchErrors?.report({
228
- surface: ZLinkDispatchErrorSurface.SpotRoute,
289
+ const reporter = this.options.dispatchErrors;
290
+ if (reporter?.captureEnabled() !== true) return;
291
+ reporter.report({
292
+ surface:
293
+ context.activationRecord?.activationRecord?.kind === 'instanceSpot'
294
+ ? ZLinkDispatchErrorSurface.InstanceSpot
295
+ : ZLinkDispatchErrorSurface.SpotRoute,
229
296
  messageKind: returnResponse
230
297
  ? ZLinkDispatchMessageKind.Request
231
298
  : ZLinkDispatchMessageKind.Send,
232
- reason:
233
- frameworkErrorKind === ZLinkFrameworkInternalErrorKind.WorkerQueueFull ||
234
- frameworkErrorKind === ZLinkFrameworkInternalErrorKind.DeadlineExceeded
235
- ? ZLinkDispatchErrorReason.Backpressure
236
- : ZLinkDispatchErrorReason.HandlerException,
299
+ reason: dispatchReasonFromError(error),
237
300
  action: returnResponse ? ZLinkDispatchErrorAction.FailCaller : ZLinkDispatchErrorAction.Drop,
238
301
  packetName,
239
302
  channelName: context.channelName,
@@ -245,9 +308,19 @@ export class ZLinkRoutedSpotPacketDispatch {
245
308
  private reportMissing(
246
309
  spotId: RoutingId,
247
310
  packetName: string | undefined,
248
- context: { readonly channelName: string },
311
+ context: ZLinkRoutedSpotPacketContext,
249
312
  returnResponse: boolean
250
313
  ): void {
314
+ if (context.activationRecord?.activationRecord !== undefined) {
315
+ if (!returnResponse && context.onOneWayError !== undefined)
316
+ context.onOneWayError(
317
+ createInternalFrameworkException(
318
+ ZLinkFrameworkInternalErrorKind.HandlerNotFound,
319
+ `SPOT route handler not found: ${packetName}`
320
+ )
321
+ );
322
+ return;
323
+ }
251
324
  this.options.dispatchErrors?.report({
252
325
  surface: ZLinkDispatchErrorSurface.SpotRoute,
253
326
  messageKind: returnResponse
@@ -10,7 +10,7 @@ import type { ZLinkMessageFollowOrigin } from '../foundation/service-runtime-con
10
10
  import type {
11
11
  ZLinkRemoteActorPacketTarget,
12
12
  ZLinkRemoteBoundSessionTarget,
13
- ZLinkDeferredJoinAcceptedRoot
13
+ ZLinkDeferredJoinCompletion
14
14
  } from '../actors';
15
15
  import type { ZLinkActorHandoffDispatch } from '../actors/actor-handoff';
16
16
  import type { ZLinkActorResponseOptions } from './spot-actor-packet-dispatch';
@@ -44,26 +44,15 @@ export interface ZLinkSpotActorTransferRuntime {
44
44
  operationId: ZLinkActorJoinOperationId,
45
45
  actorRef: ActorRef,
46
46
  rawReply: Uint8Array,
47
- replyContentType?: string,
48
- signal?: AbortSignal,
49
- canonicalInventoryDigest?: string
50
- ): Promise<ZLinkDeferredJoinAcceptedRoot>;
51
- discardDeferredJoinAccepted(
52
- root: ZLinkDeferredJoinAcceptedRoot,
53
- signal?: AbortSignal
54
- ): Promise<void>;
55
- markDeferredJoinAcceptedCommitted(
56
- root: ZLinkDeferredJoinAcceptedRoot,
57
- actorRef: ActorRef,
58
- signal?: AbortSignal
59
- ): Promise<ZLinkDeferredJoinAcceptedRoot>;
60
- commitAndDeliverDeferredJoinAccepted(
61
- root: ZLinkDeferredJoinAcceptedRoot,
47
+ replyContentType?: string
48
+ ): ZLinkDeferredJoinCompletion;
49
+ deliverDeferredJoinCompletion(
50
+ completion: ZLinkDeferredJoinCompletion,
62
51
  actor: ZLinkActor,
63
52
  actorRef: ActorRef,
64
53
  submitMailbox: <T>(operation: () => Promise<T>) => Promise<T>,
65
54
  signal?: AbortSignal
66
- ): Promise<ZLinkDeferredJoinAcceptedRoot>;
55
+ ): Promise<void>;
67
56
  getOrCreateRoutedActor(
68
57
  actorId: string,
69
58
  actorType: string,
@@ -83,15 +72,6 @@ export interface ZLinkSpotActorTransferRuntime {
83
72
  deadlineAtMs: number,
84
73
  signal?: AbortSignal
85
74
  ): Promise<import('../locations/internal-location-contracts').ZLinkAuthoritySnapshot>;
86
- rememberRoutedActorTransferTarget(
87
- actorId: string,
88
- target: ZLinkRemoteBoundSessionTarget | undefined
89
- ): void;
90
- claimNativeActorLocation(
91
- actor: ZLinkActor,
92
- spotId: RoutingId,
93
- spotMeshName: string
94
- ): Promise<ZLinkNativeActorJoinSnapshot>;
95
75
  claimRoutedActorLocation(
96
76
  actor: ZLinkActor,
97
77
  spotId: RoutingId,
@@ -101,28 +81,19 @@ export interface ZLinkSpotActorTransferRuntime {
101
81
  readonly membershipEpoch: bigint;
102
82
  }
103
83
  ): Promise<void>;
104
- publishRoutedActorOwnership(actor: ZLinkActor): Promise<void>;
84
+ publishRoutedActorOwnership(
85
+ actor: ZLinkActor,
86
+ sealedSession: ZLinkRemoteBoundSessionTarget | undefined
87
+ ): Promise<void>;
105
88
  openRoutedActorSession(actor: ZLinkActor): Promise<void>;
106
89
  bindRoutedActorRef(actor: ZLinkActor, actorRef: ActorRef): void;
107
90
  commitRoutedActor(actor: ZLinkActor, spotId: RoutingId, spot: ZLinkSpot): void;
108
91
  clearRoutedActor(actor: ZLinkActor): void;
109
- rollbackNativeActorJoin(actor: ZLinkActor, snapshot: ZLinkNativeActorJoinSnapshot): Promise<void>;
110
92
  rollbackRoutedActor(actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
111
93
  notifyCoreSourceLeave(actor: ZLinkActor, callback: () => Promise<void>): Promise<void>;
112
94
  actorEntryNodeRid(actor: ZLinkActor): RoutingId | undefined;
113
95
  }
114
96
 
115
- export interface ZLinkNativeActorJoinSnapshot {
116
- readonly spotId?: RoutingId;
117
- readonly spot?: ZLinkSpot;
118
- readonly locationSpotId?: RoutingId;
119
- readonly spotMeshName?: string;
120
- readonly actorRef?: ActorRef;
121
- readonly spotGeneration?: bigint;
122
- readonly membershipEpoch?: bigint;
123
- readonly ownerNodeGeneration?: bigint;
124
- }
125
-
126
97
  export interface ZLinkSpotBoundSessionRuntime {
127
98
  receiveRoutedBoundSession(
128
99
  actorId: string,
@@ -151,10 +122,6 @@ export interface ZLinkSpotBoundSessionRuntime {
151
122
  actorPacketTarget?: unknown,
152
123
  signal?: AbortSignal
153
124
  ): Promise<void>;
154
- rememberRemoteBoundSessionTarget(
155
- actorId: string,
156
- target: ZLinkRemoteBoundSessionTarget | undefined
157
- ): void;
158
125
  resolveRemoteBoundSessionTarget(
159
126
  sourceNodeRid: RoutingId,
160
127
  sourceSessionRid: RoutingId
@@ -107,6 +107,15 @@ export class ZLinkSpotSerialExecutor {
107
107
  * ownership turn. Already accepted work remains drainable.
108
108
  */
109
109
  close(): Promise<void> {
110
+ const children = this.closeChildren();
111
+ return Promise.all([children, this.spotSerial.whenIdle()]).then(() => undefined);
112
+ }
113
+
114
+ /**
115
+ * Closes the Actor and timer queues. The Spot queue stays open for the Spot
116
+ * Close lifecycle item that owns it; that Close closes it when it finishes.
117
+ */
118
+ closeChildren(): Promise<void> {
110
119
  if (this.closePromise !== undefined) return this.closePromise;
111
120
  this.closing = true;
112
121
  const childSerials = [...this.actorSerials.values(), ...this.timerSerials.values()];
@@ -115,8 +124,7 @@ export class ZLinkSpotSerialExecutor {
115
124
  this.timerSerials.clear();
116
125
  this.actorExecutors.clear();
117
126
  this.closePromise = Promise.all([
118
- this.spotSerial.close(),
119
- ...childSerials.map((serial) => serial.close()),
127
+ ...childSerials.map((serial) => serial.whenIdle()),
120
128
  ...actorExecutors.map((executor) => executor.close())
121
129
  ]).then(() => undefined);
122
130
  return this.closePromise;