@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,65 +1,76 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZLinkUserSpotCreationCoordinator = exports.ZLinkHostSpotAddressTransport = exports.ZLinkRelocationStateIncompatibleError = exports.ZLinkRouteMeshRuntimeCoordinator = exports.ZLinkRetiringRollbackError = exports.transferIdString = exports.ZLinkActorTransferAuthorityRuntime = exports.ZLinkFrameworkRuntimeHost = void 0;
3
+ exports.ZLinkUserSpotCreationCoordinator = exports.ZLinkHostSpotAddressTransport = exports.ZLinkRelocationStateIncompatibleError = exports.ZLinkRouteMeshRuntimeCoordinator = exports.ZLinkRetiringRollbackError = exports.ZLinkDrainingStatePublishError = exports.transferIdString = exports.ZLinkActorTransferAuthorityRuntime = exports.ZLinkFrameworkRuntimeHost = void 0;
4
4
  exports.hasUnsupportedManualTopology = hasUnsupportedManualTopology;
5
5
  exports.hasExactPeerReadiness = hasExactPeerReadiness;
6
- const framework_errors_internal_1 = require("../framework-errors-internal");
6
+ const location_store_pages_1 = require("../locations/location-store-pages");
7
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
7
8
  const node_crypto_1 = require("node:crypto");
8
- const runtime_message_1 = require("../backend/runtime-message");
9
- const runtime_values_1 = require("../backend/runtime-values");
10
- const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
11
- const runtime_state_projections_1 = require("../foundation/runtime-state-projections");
12
- const abort_1 = require("../abort");
13
- const backend_1 = require("../backend");
14
- const LEGACY_MESH_SEND_TIMEOUT_MS = 1000;
15
9
  const contracts_1 = require("../../contracts");
16
- const submission_result_1 = require("../messaging/submission-result");
17
- const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
10
+ const ConfigurationException_1 = require("../../contracts/Configuration/ConfigurationException");
18
11
  const DiagnosticsValidation_1 = require("../../contracts/Configuration/DiagnosticsValidation");
19
- const channels_1 = require("../channels");
20
- const channel_envelope_1 = require("../channels/channel-envelope");
12
+ const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
13
+ const Registration_1 = require("../../contracts/Configuration/Registration");
14
+ const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
15
+ const Locations_1 = require("../../contracts/Locations");
16
+ const Stores_1 = require("../../contracts/Locations/Stores");
17
+ const abort_1 = require("../abort");
18
+ const activation_admission_1 = require("../activation-admission");
21
19
  const actors_1 = require("../actors");
20
+ const actor_message_follow_context_1 = require("../actors/actor-message-follow-context");
22
21
  const actor_transport_delivery_gate_1 = require("../actors/actor-transport-delivery-gate");
22
+ const admission_1 = require("../admission");
23
23
  const application_job_queue_handler_start_gate_1 = require("../application-jobs/application-job-queue-handler-start-gate");
24
- const execution_1 = require("../execution");
24
+ const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
25
+ const backend_1 = require("../backend");
26
+ const runtime_message_1 = require("../backend/runtime-message");
27
+ const runtime_values_1 = require("../backend/runtime-values");
28
+ const channels_1 = require("../channels");
29
+ const channel_envelope_1 = require("../channels/channel-envelope");
25
30
  const diagnostics_1 = require("../diagnostics");
26
- const topology_runtime_projections_1 = require("../diagnostics/topology-runtime-projections");
31
+ const runtime_metrics_1 = require("../diagnostics/runtime-metrics");
27
32
  const runtime_observation_queue_1 = require("../diagnostics/runtime-observation-queue");
33
+ const topology_runtime_projections_1 = require("../diagnostics/topology-runtime-projections");
34
+ const execution_1 = require("../execution");
35
+ const listener_records_1 = require("../foundation/listener-records");
36
+ const runtime_state_projections_1 = require("../foundation/runtime-state-projections");
37
+ const service_authority_payload_codec_1 = require("../foundation/service-authority-payload-codec");
38
+ const service_relocation_coordinator_1 = require("../foundation/service-relocation-coordinator");
39
+ const service_relocation_runtime_1 = require("../foundation/service-relocation-runtime");
40
+ const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
41
+ const framework_errors_internal_1 = require("../framework-errors-internal");
42
+ const locations_1 = require("../locations");
43
+ const creation_payload_codec_1 = require("../messaging/creation-payload-codec");
44
+ const payload_codec_1 = require("../messaging/payload-codec");
45
+ const submission_result_1 = require("../messaging/submission-result");
46
+ const routing_id_1 = require("../routing-id");
28
47
  const spots_1 = require("../spots");
29
- const actor_message_follow_context_1 = require("../actors/actor-message-follow-context");
30
- const actors_2 = require("../actors");
31
48
  const streams_1 = require("../streams");
32
- const locations_1 = require("../locations");
33
- const Locations_1 = require("../../contracts/Locations");
49
+ const actor_placement_coordinator_1 = require("./actor-placement-coordinator");
34
50
  const actor_runtime_options_factory_1 = require("./actor-runtime-options-factory");
35
- const actor_transfer_runtime_1 = require("./actor-transfer-runtime");
36
51
  const actor_transfer_authority_runtime_1 = require("./actor-transfer-authority-runtime");
52
+ const actor_transfer_runtime_1 = require("./actor-transfer-runtime");
53
+ const application_job_queue_1 = require("./application-job-queue");
54
+ const bound_session_relay_1 = require("./bound-session-relay");
55
+ const channel_runtime_options_factory_1 = require("./channel-runtime-options-factory");
37
56
  const entry_actor_runtime_1 = require("./entry-actor-runtime");
57
+ const host_capacity_status_1 = require("./host-capacity-status");
58
+ const instance_activation_authority_1 = require("./instance-activation-authority");
38
59
  const location_runtime_owner_1 = require("./location-runtime-owner");
39
60
  const mesh_router_resolver_1 = require("./mesh-router-resolver");
40
- const bound_session_relay_1 = require("./bound-session-relay");
41
- const routing_id_1 = require("../routing-id");
42
- const service_authority_payload_codec_1 = require("../foundation/service-authority-payload-codec");
43
- const service_relocation_runtime_1 = require("../foundation/service-relocation-runtime");
44
- const spot_runtime_options_factory_1 = require("./spot-runtime-options-factory");
45
- const channel_runtime_options_factory_1 = require("./channel-runtime-options-factory");
46
- const spot_node_runtime_options_factory_1 = require("./spot-node-runtime-options-factory");
47
- const runtime_shutdown_1 = require("./runtime-shutdown");
48
- const admission_1 = require("../admission");
49
61
  const route_mesh_runtime_1 = require("./route-mesh-runtime");
50
- const ConfigurationException_1 = require("../../contracts/Configuration/ConfigurationException");
51
- const stateful_authority_route_runtime_1 = require("./stateful-authority-route-runtime");
52
- const instance_activation_authority_1 = require("./instance-activation-authority");
53
- const spot_address_transport_1 = require("./spot-address-transport");
54
- const user_spot_creation_coordinator_1 = require("./user-spot-creation-coordinator");
55
- const actor_placement_coordinator_1 = require("./actor-placement-coordinator");
56
- const payload_codec_1 = require("../messaging/payload-codec");
57
- const creation_payload_codec_1 = require("../messaging/creation-payload-codec");
58
62
  const route_mesh_runtime_options_1 = require("./route-mesh-runtime-options");
63
+ const runtime_shutdown_1 = require("./runtime-shutdown");
59
64
  const service_relocation_host_runtime_1 = require("./service-relocation-host-runtime");
60
- const application_job_queue_1 = require("./application-job-queue");
61
- const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
62
- const host_capacity_status_1 = require("./host-capacity-status");
65
+ const spot_address_transport_1 = require("./spot-address-transport");
66
+ const spot_node_runtime_options_factory_1 = require("./spot-node-runtime-options-factory");
67
+ const spot_runtime_options_factory_1 = require("./spot-runtime-options-factory");
68
+ const stateful_authority_route_runtime_1 = require("./stateful-authority-route-runtime");
69
+ const user_spot_creation_coordinator_1 = require("./user-spot-creation-coordinator");
70
+ const HOST_SHUTDOWN_POLL_INTERVAL_MS = 100;
71
+ const HANDOFF_ACCEPTANCE_POLL_INTERVAL_MS = 10;
72
+ const DEFAULT_HOST_CONTROL_TIMEOUT_MS = 30_000;
73
+ const LEGACY_MESH_SEND_TIMEOUT_MS = 1000;
63
74
  class ZLinkFrameworkRuntimeHost {
64
75
  options;
65
76
  backendAdapterFactory;
@@ -69,6 +80,7 @@ class ZLinkFrameworkRuntimeHost {
69
80
  runtimeSequence = 0n;
70
81
  runtimeObservationSource = Symbol('zlink.framework-runtime');
71
82
  runtimeDeadline;
83
+ shutdownDeadline;
72
84
  runtimeRelocationResult;
73
85
  runtimeTerminationResult;
74
86
  relocationOperation;
@@ -95,6 +107,7 @@ class ZLinkFrameworkRuntimeHost {
95
107
  actorManager;
96
108
  actorPlacement;
97
109
  spotManager;
110
+ userSpotCoordinator;
98
111
  ownerLeaseRecoveryRuntime;
99
112
  ownerLeaseRecoveryHandler;
100
113
  registerUserSpotHandlers;
@@ -105,6 +118,8 @@ class ZLinkFrameworkRuntimeHost {
105
118
  capacityStatus;
106
119
  metricRegistrations = [];
107
120
  admission = new admission_1.ZLinkRuntimeAdmissionGate(() => this.ownerAdmissionOpen());
121
+ activationAdmission = new activation_admission_1.ZLinkActivationAdmission((meshName) => this.options.registration.spotNodes.get(meshName)?.activationConcurrencyLimit ??
122
+ InternalDefaults_1.DEFAULT_ACTIVATION_CONCURRENCY_LIMIT);
108
123
  cachedLocationSpotRouteResolver;
109
124
  actorClientLocationResolver;
110
125
  // Shared, runtime-mutable message-flow mode cell — installed once so
@@ -163,7 +178,7 @@ class ZLinkFrameworkRuntimeHost {
163
178
  return sendTimeoutMsForSpotMesh(routeChannelId);
164
179
  };
165
180
  const defaultSpotSendTimeoutMs = Math.max(LEGACY_MESH_SEND_TIMEOUT_MS, ...[...options.registration.spotNodes.values()].map((node) => node.router?.sendTimeoutMs ?? LEGACY_MESH_SEND_TIMEOUT_MS), ...[...options.registration.routeChannelOptions.values()].map((route) => route.sendTimeoutMs ?? LEGACY_MESH_SEND_TIMEOUT_MS));
166
- this.routeTransport = new channels_1.ZLinkRuntimeRouteTransport(() => this.channelRuntime, (routerChannelId) => this.meshRouters.canUseRouterChannel(routerChannelId), () => this.spotNodeRuntime, { serializers: options.registration.messageSerializers }, (meshName, targetNodeRid) => this.meshRouters.classifyManualNodeTarget(meshName, targetNodeRid), (meshName, sourceNodeRid, parts) => this.submitLocalMeshRoute(meshName, sourceNodeRid, parts), this.metrics, () => this.flowCreationEnabled());
181
+ this.routeTransport = new channels_1.ZLinkRuntimeRouteTransport(() => this.channelRuntime, (routerChannelId) => this.meshRouters.canUseRouterChannel(routerChannelId), () => this.spotNodeRuntime, { serializers: options.registration.messageSerializers }, (meshName, targetNodeRid) => this.meshRouters.classifyManualNodeTarget(meshName, targetNodeRid), (meshName, sourceNodeRid, parts) => this.submitLocalMeshRoute(meshName, sourceNodeRid, parts), this.metrics, () => this.flowCreationEnabled(), () => this.createDispatchErrorReporter(this.runtimeOrPreStartErrorSink).flow);
167
182
  this.spotAddressTransport = new spot_address_transport_1.ZLinkHostSpotAddressTransport({
168
183
  resolver: () => this.createLocationSpotRouteResolver(),
169
184
  routed: this.routeTransport,
@@ -174,7 +189,7 @@ class ZLinkFrameworkRuntimeHost {
174
189
  meshNode: (meshName) => this.spotNodeRuntime?.meshNode(meshName),
175
190
  completions: (meshName) => this.spotNodeRuntime?.meshCompletionTable(meshName),
176
191
  codecs: { serializers: options.registration.messageSerializers },
177
- defaultRequestTimeoutMs: options.registration.requestTimeoutMs ?? 30_000,
192
+ defaultRequestTimeoutMs: options.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS,
178
193
  defaultSendTimeoutMs: defaultSpotSendTimeoutMs,
179
194
  sendTimeoutMsForMesh: sendTimeoutMsForSpotMesh,
180
195
  sendTimeoutMsForRouteChannel: sendTimeoutMsForSpotRouteChannel,
@@ -188,6 +203,7 @@ class ZLinkFrameworkRuntimeHost {
188
203
  rewriteAuthorityPayloadForOwner
189
204
  });
190
205
  this.streamBindingRuntime = new streams_1.ZLinkStreamBindingRuntime({
206
+ dispatchErrors: this.createDispatchErrorReporter(this.runtimeOrPreStartErrorSink),
191
207
  streamPayloadCodec: resolveStreamPayloadCodec(options.registration),
192
208
  streamCompression: options.registration.streamCompression,
193
209
  messageSerializers: options.registration.messageSerializers,
@@ -220,7 +236,7 @@ class ZLinkFrameworkRuntimeHost {
220
236
  relay: (actor, header, payload, signal) => this.boundSessionRelay.actorPackets.relayActorPacket(actor, header, payload, signal),
221
237
  notifyDisconnected: (actor, signal) => this.boundSessionRelay.actorPackets.notifyBoundActorDisconnected(actor, signal)
222
238
  });
223
- this.actorHandoff = new actors_2.ZLinkActorHandoffCoordinator({
239
+ this.actorHandoff = new actors_1.ZLinkActorHandoffCoordinator({
224
240
  routedTransport: this.routeTransport,
225
241
  messageFollowDurationMs: options.registration.locations.options.messageFollowDurationMs,
226
242
  requestTimeoutMs: options.registration.requestTimeoutMs,
@@ -376,7 +392,7 @@ class ZLinkFrameworkRuntimeHost {
376
392
  });
377
393
  }
378
394
  });
379
- this.actorTransferRegistry = new actors_2.ZLinkActorTransferRegistry(options.registration.spotNodes, options.providerResolver, options.registration.messageSerializers);
395
+ this.actorTransferRegistry = new actors_1.ZLinkActorTransferRegistry(options.registration.spotNodes, options.providerResolver, options.registration.messageSerializers);
380
396
  this.boundSessionFactory = new streams_1.DefaultZLinkBoundSessionFactory(this.streamBindingRuntime);
381
397
  this.boundSessionRelay = new bound_session_relay_1.ZLinkBoundSessionRelay({
382
398
  requestTimeoutMs: options.registration.requestTimeoutMs,
@@ -441,7 +457,6 @@ class ZLinkFrameworkRuntimeHost {
441
457
  actorTransferRegistry: this.actorTransferRegistry,
442
458
  authorityStore: () => this.locationOwner.currentStores?.locationStore,
443
459
  currentOwner: () => this.locationOwner.currentRuntime?.currentOwnerToken,
444
- relocationStore: () => this.options.registration.locations.relocationStoreInstance,
445
460
  liveDescriptors: (meshName, signal) => {
446
461
  const runtime = this.locationOwner.currentRuntime;
447
462
  if (runtime === undefined) {
@@ -506,6 +521,7 @@ class ZLinkFrameworkRuntimeHost {
506
521
  });
507
522
  this.serviceRelocation = new service_relocation_host_runtime_1.ZLinkHostServiceRelocationRuntime({
508
523
  registration: options.registration,
524
+ targetAdmissionSealed: () => this.shutdownOperationStartedAt !== undefined,
509
525
  providerResolver: options.providerResolver,
510
526
  locationStore: () => this.locationOwner.currentStores?.locationStore,
511
527
  currentOwner: () => this.locationOwner.currentRuntime?.currentOwnerToken,
@@ -527,7 +543,8 @@ class ZLinkFrameworkRuntimeHost {
527
543
  invalidateActorRoute: (actorId) => this.actorClientLocationResolver?.invalidateActorRoute(actorId),
528
544
  reconcileStatefulAuthorityRoutes: (signal) => this.statefulAuthorityRoutes?.reconcile(signal) ?? Promise.resolve(),
529
545
  runtimeEventPublisher: this.runtimeEventPublisher,
530
- metrics: this.metrics
546
+ metrics: this.metrics,
547
+ activationAdmission: this.activationAdmission
531
548
  });
532
549
  this.actorTransferAuthorityRuntime = new actor_transfer_authority_runtime_1.ZLinkActorTransferAuthorityRuntime({
533
550
  store: () => this.locationOwner.actorTransferStore(),
@@ -561,6 +578,7 @@ class ZLinkFrameworkRuntimeHost {
561
578
  },
562
579
  hostState: () => this.runtimeState,
563
580
  admission: this.admission,
581
+ activationAdmission: this.activationAdmission,
564
582
  publishRetiring: (meshName, signal) => this.publishMeshRetiring(meshName, signal),
565
583
  rollbackRetiring: (meshName, signal) => this.publishMeshServing(meshName, signal),
566
584
  publishDraining: (meshName, signal) => this.publishMeshDraining(meshName, signal),
@@ -574,7 +592,7 @@ class ZLinkFrameworkRuntimeHost {
574
592
  this.routeMeshRuntime = this.routeMeshCoordinator;
575
593
  }
576
594
  get isStarted() {
577
- return this.executionState !== undefined;
595
+ return this.executionState !== undefined && !this.executionState.abortController.signal.aborted;
578
596
  }
579
597
  get status() {
580
598
  return {
@@ -590,10 +608,20 @@ class ZLinkFrameworkRuntimeHost {
590
608
  observedAt: new Date()
591
609
  };
592
610
  }
611
+ // Bound listener records of the current runtime generation.
612
+ listenerRecords = new listener_records_1.ZLinkListenerRecords();
613
+ getListenerStatus(kind, name) {
614
+ const endpoint = this.listenerRecords.endpoint(kind, name);
615
+ if (endpoint === undefined || endpoint.length === 0) {
616
+ throw new ConfigurationException_1.ZLinkConfigurationException(`Listener '${kind}:${name}' is not configured or has not bound.`);
617
+ }
618
+ return { kind, name, endpoint, observedAt: new Date() };
619
+ }
593
620
  observe(signal) {
594
621
  const queue = new runtime_observation_queue_1.RuntimeEventQueue(undefined, signal);
595
622
  this.runtimeObservers.add(queue);
596
623
  queue.onClose(() => this.runtimeObservers.delete(queue));
624
+ this.publishRuntimeStatus(queue, this.status);
597
625
  return queue;
598
626
  }
599
627
  resetCapacityMetrics() {
@@ -605,7 +633,7 @@ class ZLinkFrameworkRuntimeHost {
605
633
  }
606
634
  relocate(options) {
607
635
  const effectiveTargetApplicationVersion = validateRelocationOptions(options, this.options.registration.applicationVersion);
608
- const deadlineMs = options.deadlineMs ?? 30_000;
636
+ const deadlineMs = options.deadlineMs ?? DEFAULT_HOST_CONTROL_TIMEOUT_MS;
609
637
  if (!Number.isFinite(deadlineMs) || deadlineMs <= 0) {
610
638
  return Promise.reject(new RangeError('Relocation deadlineMs must be greater than zero.'));
611
639
  }
@@ -667,7 +695,7 @@ class ZLinkFrameworkRuntimeHost {
667
695
  return waitForRuntimeOperation(this.relocationOperation, options.signal);
668
696
  }
669
697
  shutdown(options) {
670
- const deadlineMs = options?.deadlineMs ?? 30_000;
698
+ const deadlineMs = options?.deadlineMs ?? DEFAULT_HOST_CONTROL_TIMEOUT_MS;
671
699
  if (!Number.isFinite(deadlineMs) || deadlineMs <= 0) {
672
700
  return Promise.reject(new RangeError('Shutdown deadlineMs must be greater than zero.'));
673
701
  }
@@ -704,6 +732,11 @@ class ZLinkFrameworkRuntimeHost {
704
732
  this.setRuntimeState(contracts_1.ZLinkFrameworkRuntimeState.Relocating);
705
733
  const drained = await this.routeMeshCoordinator.relocateHost(remainingDeadlineMs(), stopStartingSignal);
706
734
  if (drained.kind === 'forceStopped') {
735
+ // Settled authority on both sides or an expired source owner lease
736
+ // ends the host in Error (spec 30 §13).
737
+ if (drained.error instanceof service_relocation_coordinator_1.ServiceRelocationAuthorityError) {
738
+ return this.completeRelocation(blockedRelocation(mode, effectiveTargetApplicationVersion, contracts_1.ZLinkFrameworkRelocationReason.RelocationFailed));
739
+ }
707
740
  return this.resetBlockedRelocation(blockedRelocation(mode, effectiveTargetApplicationVersion, stopStartingSignal.aborted
708
741
  ? contracts_1.ZLinkFrameworkRelocationReason.ShutdownRequested
709
742
  : drained.error instanceof service_relocation_host_runtime_1.ZLinkRelocationStateIncompatibleError
@@ -732,46 +765,69 @@ class ZLinkFrameworkRuntimeHost {
732
765
  }
733
766
  }
734
767
  async runShutdown(deadlineMs) {
735
- const deadlineAtMs = performance.now() + deadlineMs;
736
- try {
737
- this.admission.close();
738
- this.setRuntimeState(contracts_1.ZLinkFrameworkRuntimeState.Draining);
739
- if (this.relocationOperation !== undefined &&
740
- this.relocationStopStarting?.signal.aborted === true) {
741
- await this.relocationOperation;
768
+ return await this.runWithShutdownDeadline(deadlineMs, async () => {
769
+ const deadlineAtMs = performance.now() + deadlineMs;
770
+ try {
771
+ this.admission.close();
772
+ if (this.runtimeState === contracts_1.ZLinkFrameworkRuntimeState.Preparing) {
773
+ this.executionState?.abortController.abort();
774
+ }
775
+ this.setRuntimeState(contracts_1.ZLinkFrameworkRuntimeState.Draining);
776
+ if (this.relocationOperation !== undefined &&
777
+ this.relocationStopStarting?.signal.aborted === true) {
778
+ await this.relocationOperation;
779
+ }
780
+ // Seal application admission before the public status reports that the
781
+ // host no longer accepts work. This prevents status polling from racing
782
+ // with the coordinator's synchronous seal step.
783
+ const unscopedStreamDrain = this.streamRuntime?.notifyUnscopedServerDrain();
784
+ const shutdown = this.routeMeshCoordinator.shutdownHost(this.runtimeDeadline, this.shutdownDeadline.signal);
785
+ const drain = await shutdown;
786
+ await unscopedStreamDrain;
787
+ await this.stop();
788
+ if (drain.kind === 'forceStopped') {
789
+ return this.completeTermination({
790
+ outcome: contracts_1.ZLinkFrameworkTerminationOutcome.ForceStopped,
791
+ reason: drain.reason === 'deadline_exceeded'
792
+ ? contracts_1.ZLinkFrameworkTerminationReason.DeadlineExceeded
793
+ : contracts_1.ZLinkFrameworkTerminationReason.TeardownFailed
794
+ });
795
+ }
796
+ if (performance.now() >= deadlineAtMs) {
797
+ throw (0, abort_1.createDeadlineExceededError)('Shutdown resource cleanup exceeded its deadline.');
798
+ }
799
+ return this.completeTermination({
800
+ outcome: contracts_1.ZLinkFrameworkTerminationOutcome.Stopped,
801
+ reason: contracts_1.ZLinkFrameworkTerminationReason.None
802
+ });
742
803
  }
743
- // Seal application admission before the public status reports that the
744
- // host no longer accepts work. This prevents status polling from racing
745
- // with the coordinator's synchronous seal step.
746
- const unscopedStreamDrain = this.streamRuntime?.notifyUnscopedServerDrain();
747
- const shutdown = this.routeMeshCoordinator.shutdownHost(this.runtimeDeadline, undefined, Math.max(0, deadlineAtMs - performance.now()));
748
- const drain = await shutdown;
749
- await unscopedStreamDrain;
750
- await this.stop();
751
- if (drain.kind === 'forceStopped') {
804
+ catch (error) {
805
+ await this.stop().catch(() => undefined);
752
806
  return this.completeTermination({
753
807
  outcome: contracts_1.ZLinkFrameworkTerminationOutcome.ForceStopped,
754
- reason: drain.reason === 'deadline_exceeded'
808
+ reason: (0, abort_1.isDeadlineExceededError)(error)
755
809
  ? contracts_1.ZLinkFrameworkTerminationReason.DeadlineExceeded
756
810
  : contracts_1.ZLinkFrameworkTerminationReason.TeardownFailed
757
811
  });
758
812
  }
759
- if (performance.now() >= deadlineAtMs) {
760
- throw (0, abort_1.createDeadlineExceededError)('Shutdown resource cleanup exceeded its deadline.');
761
- }
762
- return this.completeTermination({
763
- outcome: contracts_1.ZLinkFrameworkTerminationOutcome.Stopped,
764
- reason: contracts_1.ZLinkFrameworkTerminationReason.None
765
- });
813
+ });
814
+ }
815
+ async runWithShutdownDeadline(deadlineMs, operation) {
816
+ if (this.shutdownDeadline !== undefined)
817
+ return await operation();
818
+ const deadline = new AbortController();
819
+ this.shutdownDeadline = deadline;
820
+ const ownsRuntimeDeadline = this.runtimeDeadline === undefined;
821
+ this.runtimeDeadline ??= new Date(Date.now() + deadlineMs);
822
+ const timer = setTimeout(() => deadline.abort((0, abort_1.createDeadlineExceededError)('Shutdown deadline exceeded.')), Math.max(0, this.runtimeDeadline.getTime() - Date.now()));
823
+ try {
824
+ return await operation();
766
825
  }
767
- catch (error) {
768
- await this.stop().catch(() => undefined);
769
- return this.completeTermination({
770
- outcome: contracts_1.ZLinkFrameworkTerminationOutcome.ForceStopped,
771
- reason: (0, abort_1.isDeadlineExceededError)(error)
772
- ? contracts_1.ZLinkFrameworkTerminationReason.DeadlineExceeded
773
- : contracts_1.ZLinkFrameworkTerminationReason.TeardownFailed
774
- });
826
+ finally {
827
+ clearTimeout(timer);
828
+ this.shutdownDeadline = undefined;
829
+ if (ownsRuntimeDeadline)
830
+ this.runtimeDeadline = undefined;
775
831
  }
776
832
  }
777
833
  resetBlockedRelocation(result) {
@@ -798,13 +854,14 @@ class ZLinkFrameworkRuntimeHost {
798
854
  }
799
855
  recordRelocationResult(result) {
800
856
  if (this.relocationOperationStartedAt !== undefined) {
801
- this.metrics.duration('zlink.host.relocation.duration', Math.max(0, performance.now() - this.relocationOperationStartedAt) / 1000, {
857
+ this.metrics.duration(runtime_metrics_1.METRIC_NAMES.HostRelocationDuration, Math.max(0, performance.now() - this.relocationOperationStartedAt) /
858
+ runtime_metrics_1.MILLISECONDS_PER_SECOND, {
802
859
  mode: relocationModeMetricName(result.mode),
803
860
  outcome: result.outcome === contracts_1.ZLinkFrameworkRelocationOutcome.Relocated ? 'relocated' : 'blocked'
804
861
  });
805
862
  }
806
863
  if (result.outcome === contracts_1.ZLinkFrameworkRelocationOutcome.Blocked) {
807
- this.metrics.count('zlink.host.relocation.blocked', 1, {
864
+ this.metrics.count(runtime_metrics_1.METRIC_NAMES.HostRelocationBlocked, 1, {
808
865
  mode: relocationModeMetricName(result.mode),
809
866
  reason: relocationReasonMetricName(result.reason)
810
867
  });
@@ -823,14 +880,14 @@ class ZLinkFrameworkRuntimeHost {
823
880
  this.runtimeTerminationResult = result;
824
881
  this.runtimeDeadline = undefined;
825
882
  if (this.shutdownOperationStartedAt !== undefined) {
826
- this.metrics.duration('zlink.host.shutdown.duration', Math.max(0, performance.now() - this.shutdownOperationStartedAt) / 1000, {
883
+ this.metrics.duration(runtime_metrics_1.METRIC_NAMES.HostShutdownDuration, Math.max(0, performance.now() - this.shutdownOperationStartedAt) / runtime_metrics_1.MILLISECONDS_PER_SECOND, {
827
884
  outcome: result.outcome === contracts_1.ZLinkFrameworkTerminationOutcome.Stopped
828
885
  ? 'stopped'
829
886
  : 'force_stopped'
830
887
  });
831
888
  }
832
889
  if (result.outcome === contracts_1.ZLinkFrameworkTerminationOutcome.ForceStopped) {
833
- this.metrics.count('zlink.host.shutdown.forced', 1, {
890
+ this.metrics.count(runtime_metrics_1.METRIC_NAMES.HostShutdownForced, 1, {
834
891
  reason: terminationReasonMetricName(result.reason)
835
892
  });
836
893
  }
@@ -852,15 +909,15 @@ class ZLinkFrameworkRuntimeHost {
852
909
  this.notifyTopologyHostStateChanged();
853
910
  const status = this.status;
854
911
  for (const observer of this.runtimeObservers) {
855
- if (state === contracts_1.ZLinkFrameworkRuntimeState.Stopped) {
856
- observer.seal(status, this.runtimeObservationSource);
857
- }
858
- else {
859
- observer.push(status, this.runtimeObservationSource);
860
- }
912
+ this.publishRuntimeStatus(observer, status);
913
+ }
914
+ }
915
+ publishRuntimeStatus(observer, status) {
916
+ if ((0, runtime_state_projections_1.runtimeObservationIsTerminal)(status.state)) {
917
+ observer.complete(status, this.runtimeObservationSource);
861
918
  }
862
- if (state === contracts_1.ZLinkFrameworkRuntimeState.Stopped) {
863
- this.runtimeObservers.clear();
919
+ else {
920
+ observer.push(status, this.runtimeObservationSource);
864
921
  }
865
922
  }
866
923
  notifyTopologyHostStateChanged() {
@@ -947,6 +1004,8 @@ class ZLinkFrameworkRuntimeHost {
947
1004
  }
948
1005
  this.setRuntimeState(contracts_1.ZLinkFrameworkRuntimeState.Preparing);
949
1006
  this.lifecycleSink?.push('framework:start');
1007
+ const listenerRecords = new listener_records_1.ZLinkListenerRecords();
1008
+ this.listenerRecords = listenerRecords;
950
1009
  const channelAdapter = this.backendAdapterFactory.createChannelAdapter();
951
1010
  const context = channelAdapter.createContext();
952
1011
  const coreHwm = this.options.registration.coreHwm;
@@ -964,10 +1023,13 @@ class ZLinkFrameworkRuntimeHost {
964
1023
  this.messageFlowModeCell.mode =
965
1024
  this.options.registration.dispatch?.diagnostics.messageFlow ?? 'errors';
966
1025
  const dispatchErrors = this.createDispatchErrorReporter(this.executionState.errorSink);
967
- channelRuntime = new channels_1.ZLinkChannelRuntimeManager(this.options.registration, channelAdapter, context, this.options.providerResolver, this.createChannelRuntimeOptions());
1026
+ channelRuntime = new channels_1.ZLinkChannelRuntimeManager(this.options.registration, channelAdapter, context, this.options.providerResolver, { ...this.createChannelRuntimeOptions(), listenerRecords });
968
1027
  this.channelRuntime = channelRuntime;
969
1028
  channelRuntime.prepareMeshDispatch(this.executionState.taskRunner);
970
- spotNodeRuntime = new spots_1.ZLinkSpotNodeRuntimeManager(this.createSpotNodeRuntimeOptions(context, dispatchErrors));
1029
+ spotNodeRuntime = new spots_1.ZLinkSpotNodeRuntimeManager({
1030
+ ...this.createSpotNodeRuntimeOptions(context, dispatchErrors),
1031
+ listenerRecords
1032
+ });
971
1033
  await spotNodeRuntime.start();
972
1034
  this.spotNodeRuntime = spotNodeRuntime;
973
1035
  this.registerUserSpotHandlers?.(spotNodeRuntime);
@@ -975,7 +1037,7 @@ class ZLinkFrameworkRuntimeHost {
975
1037
  // Start bound receivers before publishing Serving descriptors. A
976
1038
  // discovered ClientServer endpoint must already be able to dispatch.
977
1039
  this.executionState.listenerTasks.push(...channelRuntime.start(this.executionState.taskRunner));
978
- const locationRuntime = await this.locationOwner.startForRuntime(this.meshRouters.primaryMeshName(), spotNodeRuntime, channelRuntime);
1040
+ const locationRuntime = await this.locationOwner.startForRuntime(this.meshRouters.primaryMeshName(), spotNodeRuntime, channelRuntime, this.executionState.abortController.signal, () => this.shutdownDeadline.signal);
979
1041
  startedLocationRuntime = locationRuntime;
980
1042
  if (locationRuntime !== undefined) {
981
1043
  this.installOwnerLeaseRecoveryPublication(locationRuntime, spotNodeRuntime, channelRuntime);
@@ -991,6 +1053,7 @@ class ZLinkFrameworkRuntimeHost {
991
1053
  }
992
1054
  }
993
1055
  streamRuntime = new streams_1.ZLinkStreamRuntimeManager({
1056
+ listenerRecords,
994
1057
  registration: this.options.registration,
995
1058
  backendAdapterFactory: this.backendAdapterFactory,
996
1059
  context,
@@ -1016,15 +1079,24 @@ class ZLinkFrameworkRuntimeHost {
1016
1079
  this.lifecycleSink?.push('framework:started');
1017
1080
  }
1018
1081
  catch (error) {
1082
+ if (this.shutdownDeadline !== undefined && (0, abort_1.isAbortError)(error))
1083
+ throw error;
1019
1084
  await statefulAuthorityRoutes?.stop();
1020
- await (0, runtime_shutdown_1.rollbackRuntimeStart)({
1021
- context,
1022
- startedLocationRuntime,
1023
- streamRuntime,
1024
- spotNodeRuntime,
1025
- channelRuntime,
1026
- ownedStores: registeredRuntimeStores(this.options.registration)
1027
- });
1085
+ try {
1086
+ await this.runWithShutdownDeadline(DEFAULT_HOST_CONTROL_TIMEOUT_MS, async () => (0, runtime_shutdown_1.rollbackRuntimeStart)({
1087
+ context,
1088
+ startedLocationRuntime: startedLocationRuntime ?? this.locationOwner.currentRuntime,
1089
+ shutdownSignal: this.shutdownDeadline.signal,
1090
+ streamRuntime,
1091
+ spotNodeRuntime,
1092
+ channelRuntime,
1093
+ ownedStores: registeredRuntimeStores(this.options.registration)
1094
+ }));
1095
+ }
1096
+ catch (cleanupError) {
1097
+ this.runtimeOrPreStartErrorSink.reportRuntimeTaskException('framework start rollback', cleanupError);
1098
+ throw new AggregateError([error, cleanupError], 'Framework start and rollback failed.');
1099
+ }
1028
1100
  this.executionState = undefined;
1029
1101
  this.channelRuntime = undefined;
1030
1102
  this.spotNodeRuntime = undefined;
@@ -1037,7 +1109,7 @@ class ZLinkFrameworkRuntimeHost {
1037
1109
  }
1038
1110
  }
1039
1111
  async stop() {
1040
- await this.runLifecycle(() => this.stopCore());
1112
+ await this.runWithShutdownDeadline(DEFAULT_HOST_CONTROL_TIMEOUT_MS, async () => this.runLifecycle(() => this.stopCore()));
1041
1113
  }
1042
1114
  runtimeMetricMeshSnapshots() {
1043
1115
  const snapshots = [];
@@ -1076,7 +1148,7 @@ class ZLinkFrameworkRuntimeHost {
1076
1148
  reserved: capacity.reserved,
1077
1149
  limit: capacity.limit
1078
1150
  })),
1079
- activation: descriptor?.activationConcurrency ?? { active: 0, limit: 0 },
1151
+ activation: this.activationAdmission.current(meshName),
1080
1152
  instanceSpots: []
1081
1153
  });
1082
1154
  }
@@ -1087,6 +1159,7 @@ class ZLinkFrameworkRuntimeHost {
1087
1159
  if (state === undefined) {
1088
1160
  return;
1089
1161
  }
1162
+ state.abortController.abort();
1090
1163
  const channelRuntime = this.channelRuntime;
1091
1164
  const spotNodeRuntime = this.spotNodeRuntime;
1092
1165
  const streamRuntime = this.streamRuntime;
@@ -1094,24 +1167,26 @@ class ZLinkFrameworkRuntimeHost {
1094
1167
  this.stopTopologyObservers();
1095
1168
  this.removeOwnerLeaseRecoveryPublication();
1096
1169
  const locationSnapshot = this.locationOwner.clearForStop();
1097
- this.executionState = undefined;
1098
- this.channelRuntime = undefined;
1099
- this.spotNodeRuntime = undefined;
1100
- this.streamRuntime = undefined;
1101
- this.statefulAuthorityRoutes = undefined;
1102
- this.cachedLocationSpotRouteResolver = undefined;
1103
1170
  this.lifecycleSink?.push('framework:stop');
1104
1171
  await statefulAuthorityRoutes?.stop();
1105
1172
  await (0, runtime_shutdown_1.stopRuntimeParts)({
1106
1173
  state,
1107
1174
  locationSnapshot,
1108
1175
  cleanupDeadline: this.runtimeDeadline,
1176
+ shutdownSignal: this.shutdownDeadline.signal,
1109
1177
  streamRuntime,
1110
1178
  spotNodeRuntime,
1111
1179
  channelRuntime,
1112
1180
  serviceRelocation: this.serviceRelocation,
1113
1181
  ownedStores: registeredRuntimeStores(this.options.registration)
1114
1182
  });
1183
+ this.executionState = undefined;
1184
+ this.channelRuntime = undefined;
1185
+ this.spotNodeRuntime = undefined;
1186
+ this.streamRuntime = undefined;
1187
+ this.statefulAuthorityRoutes = undefined;
1188
+ this.cachedLocationSpotRouteResolver = undefined;
1189
+ this.listenerRecords.clear();
1115
1190
  this.lifecycleSink?.push('framework:stopped');
1116
1191
  if (this.shutdownOperation === undefined) {
1117
1192
  this.setRuntimeState(contracts_1.ZLinkFrameworkRuntimeState.Stopped);
@@ -1160,7 +1235,7 @@ class ZLinkFrameworkRuntimeHost {
1160
1235
  meshNodes: spotNodeRuntime.meshNodesByName,
1161
1236
  pollingIntervalMs: this.options.registration.locations.options.pollingIntervalMs ??
1162
1237
  Locations_1.zlinkDefaultLocationOptions.pollingIntervalMs,
1163
- pageSize: 1000,
1238
+ pageSize: Stores_1.ZLINK_PROVIDER_MAX_PAGE_SIZE,
1164
1239
  reportError: (error) => this.runtimeOrPreStartErrorSink.reportRuntimeTaskException('stateful authority route reconciliation', error),
1165
1240
  onSpotRouteChanged: (spotId) => this.cachedLocationSpotRouteResolver?.invalidate?.(spotId)
1166
1241
  });
@@ -1328,8 +1403,9 @@ class ZLinkFrameworkRuntimeHost {
1328
1403
  }
1329
1404
  }
1330
1405
  catch (error) {
1331
- throw new ZLinkDrainingStatePublishError(error);
1406
+ throw new route_mesh_runtime_1.ZLinkDrainingStatePublishError(error);
1332
1407
  }
1408
+ await awaitWithDrainSignal(this.serviceRelocation.drainTargetAttempts(), signal);
1333
1409
  }
1334
1410
  async cleanupOwnerForDrain(signal) {
1335
1411
  const runtime = this.locationOwner.currentRuntime;
@@ -1351,7 +1427,6 @@ class ZLinkFrameworkRuntimeHost {
1351
1427
  activationNode.registerInstanceApplicationLifecycle?.({
1352
1428
  isMaterialized: (target) => spotManager.isInstanceMaterialized(meshName, target.stableType, target.targetSpotId),
1353
1429
  isMaterializing: (target) => spotManager.isInstanceMaterializing(meshName, target.targetSpotId),
1354
- isClosing: (target) => spotManager.isInstanceClosing(meshName, target.targetSpotId),
1355
1430
  isIdleEvicting: (target) => spotManager.isInstanceSpotIdleEvicting(meshName, target.targetSpotId),
1356
1431
  beginIdleEviction: (target) => spotManager.beginInstanceSpotIdleEviction(meshName, target.targetSpotId),
1357
1432
  materialize: (target, objectGeneration) => spotManager.materializeInstance(meshName, target.stableType, target.targetSpotId, objectGeneration, this.executionState?.abortController.signal),
@@ -1373,6 +1448,7 @@ class ZLinkFrameworkRuntimeHost {
1373
1448
  this.ensureLocationRuntime();
1374
1449
  return {
1375
1450
  ...this.actorRuntimeOptionsFactory().createActorManagerOptions(),
1451
+ activationAdmission: this.activationAdmission,
1376
1452
  placementCreate: async (actorId, actorType, createOnly, call, signal) => {
1377
1453
  const placement = this.actorPlacement;
1378
1454
  if (placement === undefined) {
@@ -1416,10 +1492,16 @@ class ZLinkFrameworkRuntimeHost {
1416
1492
  ?.meshNode(meshName)
1417
1493
  ?.completeClosedInstance?.(spotId, objectGeneration);
1418
1494
  },
1419
- beginInstanceIdleClosingAuthority: (meshName, spotId) => this.locationOwner.currentLifecycle?.beginInstanceSpotClosing(meshName, spotId) ??
1420
- Promise.resolve(undefined),
1421
- beginInstanceClosingAuthority: (meshName, spotId) => this.locationOwner.currentLifecycle?.beginInstanceSpotClosing(meshName, spotId) ??
1422
- Promise.resolve(undefined),
1495
+ beginInstanceIdleClosingAuthority: (meshName, spotId, onCommitted) => this.locationOwner.currentLifecycle?.beginInstanceSpotClosing(meshName, spotId, onCommitted) ?? Promise.resolve(undefined),
1496
+ beginInstanceClosingAuthority: (meshName, spotId, onCommitted) => this.locationOwner.currentLifecycle?.beginInstanceSpotClosing(meshName, spotId, onCommitted) ?? Promise.resolve(undefined),
1497
+ beginUserClosingAuthority: async (meshName, spotId, objectGeneration, onCommitted) => {
1498
+ const coordinator = this.userSpotCoordinator;
1499
+ const nodeRid = this.spotNodeRuntime?.meshNode(meshName)?.status().routingId;
1500
+ if (coordinator === undefined || nodeRid === undefined) {
1501
+ throw new ConfigurationException_1.ZLinkConfigurationException('User Spot context Close requires its authority coordinator.');
1502
+ }
1503
+ return await coordinator.beginOwnerClose({ spotId: spotId, objectGeneration, meshName, nodeRid }, onCommitted);
1504
+ },
1423
1505
  createLocationSpotRouteResolver: () => this.createLocationSpotRouteResolver(),
1424
1506
  boundSessionRelay: this.boundSessionRelay,
1425
1507
  actorHandoff: this.actorHandoff,
@@ -1428,14 +1510,12 @@ class ZLinkFrameworkRuntimeHost {
1428
1510
  detachedTaskRunner: this.detachedTaskRunner(),
1429
1511
  metrics: this.metrics,
1430
1512
  admission: this.admission,
1431
- statefulExecutionAllowed: () => this.ownerAdmissionOpen()
1513
+ statefulExecution: {
1514
+ admissionOpen: () => this.ownerAdmissionOpen(),
1515
+ hostState: () => this.runtimeState
1516
+ }
1432
1517
  }).create(this.actorTransferRuntime),
1433
- activationConcurrencyLimitProvider: (meshName) => this.options.registration.spotNodes.get(meshName)?.activationConcurrencyLimit ?? 128,
1434
- onInstanceActivationConcurrencyChanged: (meshName) => {
1435
- void this.spotNodeRuntime
1436
- ?.publishMeshNodeState(this.runtimeState, this.executionState?.abortController.signal, meshName)
1437
- .catch(() => undefined);
1438
- }
1518
+ activationAdmission: this.activationAdmission
1439
1519
  };
1440
1520
  }
1441
1521
  createPublicSpotManager(local) {
@@ -1477,7 +1557,7 @@ class ZLinkFrameworkRuntimeHost {
1477
1557
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ObjectClientNotConfigured, `RouteMesh '${meshName}' has no object-client role.`);
1478
1558
  }
1479
1559
  const meshNode = this.spotNodeRuntime?.meshNode(meshName);
1480
- const descriptors = (await locationStore.listMeshNodes(meshName, undefined, signal)).items;
1560
+ const descriptors = await (0, location_store_pages_1.listAllMeshNodeDescriptors)(locationStore, meshName, signal);
1481
1561
  const selected = await selectReadyLocationPlacementDescriptor(descriptors, meshNode, signal, (descriptor) => {
1482
1562
  const capability = descriptor.objectCapabilities.find((candidate) => candidate.objectKind === 'actor' && candidate.stableType === stableType);
1483
1563
  const actors = descriptor.populationCapacity.actors;
@@ -1511,7 +1591,7 @@ class ZLinkFrameworkRuntimeHost {
1511
1591
  };
1512
1592
  }
1513
1593
  });
1514
- const coordinator = new user_spot_creation_coordinator_1.ZLinkUserSpotCreationCoordinator({
1594
+ const coordinator = (this.userSpotCoordinator = new user_spot_creation_coordinator_1.ZLinkUserSpotCreationCoordinator({
1515
1595
  store: locationStore,
1516
1596
  publishReadyRoute: (meshName, route) => {
1517
1597
  this.cachedLocationSpotRouteResolver?.invalidate?.(route.spot.spotId);
@@ -1558,7 +1638,7 @@ class ZLinkFrameworkRuntimeHost {
1558
1638
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ObjectClientNotConfigured, `RouteMesh '${meshName}' has no object-client role.`);
1559
1639
  }
1560
1640
  const meshNode = this.spotNodeRuntime?.meshNode(meshName);
1561
- const descriptors = (await locationStore.listMeshNodes(meshName, undefined, signal)).items;
1641
+ const descriptors = await (0, location_store_pages_1.listAllMeshNodeDescriptors)(locationStore, meshName, signal);
1562
1642
  const selected = await selectReadyLocationPlacementDescriptor(descriptors, meshNode, signal, (descriptor) => {
1563
1643
  const capability = descriptor.objectCapabilities.find((candidate) => candidate.objectKind === 'user_spot' && candidate.stableType === request.stableType);
1564
1644
  const spotTypeCapacity = descriptor.populationCapacity.spotTypes.find((candidate) => candidate.objectKind === 'user_spot' && candidate.stableType === request.stableType);
@@ -1589,7 +1669,7 @@ class ZLinkFrameworkRuntimeHost {
1589
1669
  localStatus.lifecycleGeneration === selected.lifecycleGeneration
1590
1670
  };
1591
1671
  }
1592
- });
1672
+ }));
1593
1673
  const factories = new Map([...this.options.registration.spotNodes].map(([meshName, node]) => [
1594
1674
  meshName,
1595
1675
  new Map(Object.entries(node.spotFactoryRegistrations ?? {}))
@@ -1636,7 +1716,7 @@ class ZLinkFrameworkRuntimeHost {
1636
1716
  try {
1637
1717
  payload = {
1638
1718
  packetName: 'ZLinkFrameworkUserSpotReply',
1639
- contentType: 'application/octet-stream',
1719
+ contentType: stream_wire_1.ZlinkStreamContentType.Raw,
1640
1720
  payload: Buffer.from(message.data())
1641
1721
  };
1642
1722
  }
@@ -1725,25 +1805,12 @@ class ZLinkFrameworkRuntimeHost {
1725
1805
  }, signal);
1726
1806
  },
1727
1807
  close: async (record, signal) => {
1728
- if (!local.hasActiveSpot(record.target.spotId)) {
1729
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving, `User Spot '${record.target.spotId}' is not materialized on its authority owner.`, true);
1730
- }
1731
- if (!local.canCloseUserSpot(meshName, record.target.spotId)) {
1732
- return {
1733
- terminalResult: runtime_values_1.RequestResult.Ok,
1734
- failureCode: 0,
1735
- tail: {
1736
- kind: 'userSpotClose',
1737
- closed: false
1738
- }
1739
- };
1740
- }
1741
1808
  return {
1742
1809
  terminalResult: runtime_values_1.RequestResult.Ok,
1743
1810
  failureCode: 0,
1744
1811
  tail: {
1745
1812
  kind: 'userSpotClose',
1746
- closed: await coordinator.handleRemoteClose(record, (spot, closeSignal) => local.close(spot.meshName, spot.spotId, closeSignal), signal)
1813
+ closed: await coordinator.handleRemoteClose(record, (spot, beginAuthority, closeSignal) => local.closeUserWithAuthority(spot.meshName, spot.spotId, beginAuthority, closeSignal), signal, (spot) => local.isSpotClosing(spot.meshName, spot.spotId))
1747
1814
  }
1748
1815
  };
1749
1816
  }
@@ -1773,7 +1840,7 @@ class ZLinkFrameworkRuntimeHost {
1773
1840
  }
1774
1841
  return node.requestUserSpotClose(targetNodeRid, request, timeoutMs);
1775
1842
  },
1776
- defaultTimeoutMs: this.options.registration.requestTimeoutMs ?? 30_000,
1843
+ defaultTimeoutMs: this.options.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS,
1777
1844
  messageSerializers: this.options.registration.messageSerializers
1778
1845
  });
1779
1846
  }
@@ -1793,6 +1860,8 @@ class ZLinkFrameworkRuntimeHost {
1793
1860
  meshCompletions: (meshName) => this.spotNodeRuntime?.meshCompletionTable(meshName),
1794
1861
  notifyEntrySpotActorCreated: (nodeRid, actor, createRequest, signal) => this.spotNodeRuntime?.notifyEntrySpotActorCreated(nodeRid, actor, createRequest, signal) ??
1795
1862
  Promise.resolve(undefined),
1863
+ notifyEntrySpotActorJoined: (actor, signal) => this.spotNodeRuntime?.notifyPrimaryEntrySpotActorJoined(actor, signal) ?? Promise.resolve(),
1864
+ notifyEntrySpotActorLeft: (actor, signal) => this.spotNodeRuntime?.notifyPrimaryEntrySpotActorLeft(actor, signal) ?? Promise.resolve(),
1796
1865
  locationLifecycle: () => this.locationOwner.currentLifecycle,
1797
1866
  primaryMeshName: () => this.meshRouters.primaryMeshName(),
1798
1867
  actorMeshName: (actorType) => this.meshRouters.actorMeshName(actorType),
@@ -1814,7 +1883,7 @@ class ZLinkFrameworkRuntimeHost {
1814
1883
  if (entrySpotId === undefined) {
1815
1884
  throw new ConfigurationException_1.ZLinkConfigurationException(`Actor '${actorRef.actorId}' authority requires its RouteMesh Entry Spot.`);
1816
1885
  }
1817
- await (0, actors_2.publishInitialActorAuthority)(store, {
1886
+ await (0, actors_1.publishInitialActorAuthority)(store, {
1818
1887
  actorType,
1819
1888
  actor: actorRef,
1820
1889
  meshName,
@@ -1882,6 +1951,7 @@ class ZLinkFrameworkRuntimeHost {
1882
1951
  }).create();
1883
1952
  return {
1884
1953
  ...options,
1954
+ errorSink: this.runtimeOrPreStartErrorSink,
1885
1955
  peerAdmissionSealed: (meshName) => !this.admission.accepts(meshName),
1886
1956
  messageFollowReceiver: (record) => {
1887
1957
  if (record.source.kind === 'actor') {
@@ -1905,12 +1975,7 @@ class ZLinkFrameworkRuntimeHost {
1905
1975
  });
1906
1976
  },
1907
1977
  meshRecordDispatcher: (meshName, owner, record) => this.dispatchMeshRecord(meshName, owner, record, this.executionState?.abortController.signal),
1908
- instanceActivationConcurrencyProvider: (meshName) => {
1909
- return (this.spotManager?.instanceActivationConcurrency(meshName) ?? {
1910
- active: 0,
1911
- limit: this.options.registration.spotNodes.get(meshName)?.activationConcurrencyLimit ?? 128
1912
- });
1913
- }
1978
+ activationConcurrency: (meshName) => this.activationAdmission.current(meshName)
1914
1979
  };
1915
1980
  }
1916
1981
  async dispatchMeshRecord(meshName, owner, record, signal) {
@@ -1925,10 +1990,8 @@ class ZLinkFrameworkRuntimeHost {
1925
1990
  throw new ConfigurationException_1.ZLinkConfigurationException('MeshNode Actor binding record has no binding generation.');
1926
1991
  }
1927
1992
  const binding = record.kindData;
1928
- const replyBindingFailure = (kind, message) => {
1929
- const terminal = kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorGenerationStale
1930
- ? { terminalResult: runtime_values_1.RequestResult.InvalidState, failureCode: 0 }
1931
- : (0, framework_errors_internal_1.internalFrameworkWireReply)((0, framework_errors_internal_1.createInternalFrameworkException)(kind, message));
1993
+ const replyBindingFailure = (kind) => {
1994
+ const terminal = (0, framework_errors_internal_1.internalFrameworkWireReply)(kind);
1932
1995
  if (record.replyFailure?.(terminal.terminalResult, terminal.failureCode) !== runtime_values_1.SubmitResult.Ok) {
1933
1996
  throw new ConfigurationException_1.ZLinkConfigurationException(`MeshNode Actor binding target '${binding.actor.actorId}' failure acknowledgement failed.`);
1934
1997
  }
@@ -1944,11 +2007,11 @@ class ZLinkFrameworkRuntimeHost {
1944
2007
  nativeActorRef === undefined ||
1945
2008
  nativeActorRef.actorId !== binding.actor.actorId ||
1946
2009
  !(0, routing_id_1.routingIdsEqual)(nativeActorRef.nodeRid, binding.actor.nodeRid)) {
1947
- replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${binding.actor.actorId}' binding target is no longer current.`);
2010
+ replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
1948
2011
  return;
1949
2012
  }
1950
2013
  if (nativeActorRef.generation !== binding.actor.generation) {
1951
- replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorGenerationStale, `Actor '${binding.actor.actorId}' binding object generation is stale.`);
2014
+ replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorGenerationStale);
1952
2015
  return;
1953
2016
  }
1954
2017
  const node = state.meshName === meshName ? this.spotNodeRuntime?.meshNode(meshName) : undefined;
@@ -1960,7 +2023,7 @@ class ZLinkFrameworkRuntimeHost {
1960
2023
  localStatus.lifecycleGeneration !== binding.actorNodeGeneration ||
1961
2024
  state.locationGeneration !== binding.authorityOwnerGeneration ||
1962
2025
  state.isMoving) {
1963
- replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${binding.actor.actorId}' binding authority fence is stale.`);
2026
+ replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
1964
2027
  return;
1965
2028
  }
1966
2029
  const sessionOwnerIsLocal = (0, routing_id_1.routingIdsEqual)(localStatus.routingId, binding.sessionNodeRid) &&
@@ -1973,6 +2036,7 @@ class ZLinkFrameworkRuntimeHost {
1973
2036
  nodeRid: binding.actor.nodeRid
1974
2037
  };
1975
2038
  if (sessionOwnerIsLocal) {
2039
+ (0, application_job_queue_scope_1.releaseApplicationJobPermitBeforeHandler)();
1976
2040
  await this.streamBindingRuntime.retireRemoteBinding(actorRef, binding.sessionRid, binding.bindingGeneration, signal);
1977
2041
  }
1978
2042
  state.retireBoundSessionBinding(binding);
@@ -1981,7 +2045,7 @@ class ZLinkFrameworkRuntimeHost {
1981
2045
  }
1982
2046
  const target = this.boundSessionRelay.boundSessions.resolveRemoteBoundSessionTarget(binding.sessionNodeRid, binding.sessionRid);
1983
2047
  if (target === undefined) {
1984
- replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${binding.actor.actorId}' Session route is unavailable.`);
2048
+ replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
1985
2049
  return;
1986
2050
  }
1987
2051
  const installed = state.installBoundSessionBinding({
@@ -1994,7 +2058,7 @@ class ZLinkFrameworkRuntimeHost {
1994
2058
  bindingGeneration: binding.bindingGeneration
1995
2059
  });
1996
2060
  if (!installed) {
1997
- replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${binding.actor.actorId}' Session binding generation is stale.`);
2061
+ replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
1998
2062
  return;
1999
2063
  }
2000
2064
  replyBindingSuccess();
@@ -2021,7 +2085,7 @@ class ZLinkFrameworkRuntimeHost {
2021
2085
  return;
2022
2086
  }
2023
2087
  if (record.kind === service_runtime_contracts_1.ReceiveKind.NodeRequest && record.parts.length === 1) {
2024
- const terminal = (0, actors_2.decodeRemoteActorSourceLeaveTerminal)(record.parts[0].data());
2088
+ const terminal = (0, actors_1.decodeRemoteActorSourceLeaveTerminal)(record.parts[0].data());
2025
2089
  if (terminal !== undefined) {
2026
2090
  if ((await this.spotManager?.completeFormalSourceLeaveTerminal(terminal.actorId, terminal.transferId, terminal.succeeded)) !== true) {
2027
2091
  throw new ConfigurationException_1.ZLinkConfigurationException(`Actor '${terminal.actorId}' has no matching formal transfer terminal gate.`);
@@ -2205,7 +2269,7 @@ class ZLinkFrameworkRuntimeHost {
2205
2269
  const resolver = authority === undefined
2206
2270
  ? legacy
2207
2271
  : new locations_1.ZLinkAuthoritySpotRouteResolver(authority, this.meshRouters.spotRouterChannelIdByMesh(), legacy, this.locationOwner.currentLeaseTracker, this.options.registration.locations.options.routeCacheMaxAgeMs, undefined, async (meshName, nodeRid, expectedLifecycleGeneration, signal) => {
2208
- const descriptor = (await authority.listMeshNodes(meshName, undefined, signal)).items.find((candidate) => (0, routing_id_1.routingIdsEqual)(candidate.rid, nodeRid) &&
2272
+ const descriptor = (await (0, location_store_pages_1.listAllMeshNodeDescriptors)(authority, meshName, signal)).find((candidate) => (0, routing_id_1.routingIdsEqual)(candidate.rid, nodeRid) &&
2209
2273
  candidate.lifecycleGeneration === expectedLifecycleGeneration);
2210
2274
  return descriptor?.state;
2211
2275
  });
@@ -2256,12 +2320,13 @@ function hasExactPeerReadiness(descriptors, local, peers) {
2256
2320
  replacementDescriptors.some((descriptor) => peers.some((peer) => peer.routingId !== null &&
2257
2321
  String(peer.routingId) === String(descriptor.rid) &&
2258
2322
  peer.lifecycleGeneration === descriptor.lifecycleGeneration &&
2259
- peer.state === 3)));
2323
+ peer.state === service_runtime_contracts_1.MeshPeerRuntimeState.Serving)));
2260
2324
  }
2261
2325
  var actor_transfer_authority_runtime_2 = require("./actor-transfer-authority-runtime");
2262
2326
  Object.defineProperty(exports, "ZLinkActorTransferAuthorityRuntime", { enumerable: true, get: function () { return actor_transfer_authority_runtime_2.ZLinkActorTransferAuthorityRuntime; } });
2263
2327
  Object.defineProperty(exports, "transferIdString", { enumerable: true, get: function () { return actor_transfer_authority_runtime_2.transferIdString; } });
2264
2328
  var route_mesh_runtime_2 = require("./route-mesh-runtime");
2329
+ Object.defineProperty(exports, "ZLinkDrainingStatePublishError", { enumerable: true, get: function () { return route_mesh_runtime_2.ZLinkDrainingStatePublishError; } });
2265
2330
  Object.defineProperty(exports, "ZLinkRetiringRollbackError", { enumerable: true, get: function () { return route_mesh_runtime_2.ZLinkRetiringRollbackError; } });
2266
2331
  Object.defineProperty(exports, "ZLinkRouteMeshRuntimeCoordinator", { enumerable: true, get: function () { return route_mesh_runtime_2.ZLinkRouteMeshRuntimeCoordinator; } });
2267
2332
  var service_relocation_host_runtime_2 = require("./service-relocation-host-runtime");
@@ -2275,7 +2340,7 @@ async function waitForForcedSessionNotification(operation) {
2275
2340
  return;
2276
2341
  let timeoutHandle;
2277
2342
  const timeout = new Promise((resolve) => {
2278
- timeoutHandle = setTimeout(resolve, 100);
2343
+ timeoutHandle = setTimeout(resolve, HOST_SHUTDOWN_POLL_INTERVAL_MS);
2279
2344
  });
2280
2345
  try {
2281
2346
  await Promise.race([operation.catch(() => undefined), timeout]);
@@ -2304,12 +2369,6 @@ async function awaitWithDrainSignal(operation, signal) {
2304
2369
  });
2305
2370
  });
2306
2371
  }
2307
- class ZLinkDrainingStatePublishError extends Error {
2308
- constructor(cause) {
2309
- super('Failed to publish draining peer rows.', { cause });
2310
- this.name = 'ZLinkDrainingStatePublishError';
2311
- }
2312
- }
2313
2372
  function resolveBackendAdapterFactory(internalOptions) {
2314
2373
  if (typeof internalOptions === 'object' &&
2315
2374
  internalOptions !== null &&
@@ -2439,7 +2498,7 @@ function waitForPlacementReadiness(signal) {
2439
2498
  const timer = setTimeout(() => {
2440
2499
  signal?.removeEventListener('abort', abort);
2441
2500
  resolve();
2442
- }, 10);
2501
+ }, HANDOFF_ACCEPTANCE_POLL_INTERVAL_MS);
2443
2502
  const abort = () => {
2444
2503
  clearTimeout(timer);
2445
2504
  signal?.removeEventListener('abort', abort);
@@ -2477,8 +2536,8 @@ function relocationReason(reason) {
2477
2536
  }
2478
2537
  function rewriteAuthorityPayloadForOwner(payload, owner) {
2479
2538
  const applicationPayload = (0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(payload);
2480
- const rewritten = (0, actors_2.isActorAuthorityPayload)(applicationPayload)
2481
- ? (0, actors_2.rewriteActorAuthorityOwner)(applicationPayload, owner)
2539
+ const rewritten = (0, actors_1.isActorAuthorityPayload)(applicationPayload)
2540
+ ? (0, actors_1.rewriteActorAuthorityOwner)(applicationPayload, owner)
2482
2541
  : ((0, service_authority_payload_codec_1.rewriteServiceAuthorityOwner)(applicationPayload, owner) ?? applicationPayload);
2483
2542
  return (0, service_relocation_runtime_1.replaceServiceRelocationAuthorityApplicationPayload)(payload, rewritten);
2484
2543
  }