@zlink-systems/framework 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  3. package/dist/contracts/Common/CoreTypes.js +7 -0
  4. package/dist/contracts/Common/index.d.ts +1 -1
  5. package/dist/contracts/Common/index.js +0 -1
  6. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  7. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  8. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  9. package/dist/contracts/Configuration/Registration.js +58 -36
  10. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  12. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  16. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  17. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  18. package/dist/contracts/Handlers/JsonContract.js +10 -4
  19. package/dist/contracts/Locations/Authority.d.ts +1 -1
  20. package/dist/contracts/Locations/Authority.js +3 -2
  21. package/dist/contracts/Locations/Options.js +1 -1
  22. package/dist/contracts/Locations/Stores.d.ts +12 -0
  23. package/dist/contracts/Locations/Stores.js +9 -0
  24. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  25. package/dist/internal.d.ts +4 -0
  26. package/dist/internal.js +15 -1
  27. package/dist/nest-integration.d.ts +4 -2
  28. package/dist/nest-integration.js +14 -4
  29. package/dist/runtime/abort.d.ts +1 -0
  30. package/dist/runtime/abort.js +8 -5
  31. package/dist/runtime/activation-admission.d.ts +1 -2
  32. package/dist/runtime/activation-admission.js +2 -6
  33. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  34. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  35. package/dist/runtime/actors/actor-client.d.ts +2 -2
  36. package/dist/runtime/actors/actor-client.js +42 -143
  37. package/dist/runtime/actors/actor-context.d.ts +3 -5
  38. package/dist/runtime/actors/actor-context.js +13 -11
  39. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  40. package/dist/runtime/actors/actor-handoff.js +8 -8
  41. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  42. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  43. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  44. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  45. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  46. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  47. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  48. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  49. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  50. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  51. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  52. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  53. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  54. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  55. package/dist/runtime/actors/bound-session-wire.js +2 -7
  56. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  57. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  58. package/dist/runtime/actors/index.d.ts +9 -7
  59. package/dist/runtime/actors/index.js +87 -69
  60. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  61. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  62. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  63. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  64. package/dist/runtime/admission.d.ts +2 -0
  65. package/dist/runtime/admission.js +7 -1
  66. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  67. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  68. package/dist/runtime/backend/contracts/index.d.ts +6 -23
  69. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  70. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  71. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  72. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
  73. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
  74. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  75. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  76. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  77. package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
  78. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  79. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  80. package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
  81. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  82. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  83. package/dist/runtime/backend/runtime-values.js +2 -0
  84. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  85. package/dist/runtime/channels/channel-clients.js +68 -52
  86. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  87. package/dist/runtime/channels/channel-envelope.js +47 -29
  88. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  89. package/dist/runtime/channels/channel-outbound-operations.js +9 -10
  90. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  91. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  94. package/dist/runtime/channels/channel-runtime-manager.js +5 -2
  95. package/dist/runtime/channels/channel-socket-options.js +3 -2
  96. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  97. package/dist/runtime/channels/channel-socket-registry.js +248 -174
  98. package/dist/runtime/channels/channel-transports.d.ts +11 -17
  99. package/dist/runtime/channels/channel-transports.js +68 -47
  100. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  101. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  102. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  103. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  104. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  105. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  106. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  107. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  108. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  109. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  110. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  111. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  112. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  113. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  114. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  115. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  116. package/dist/runtime/diagnostics/flow-context.js +16 -2
  117. package/dist/runtime/diagnostics/index.d.ts +4 -2
  118. package/dist/runtime/diagnostics/index.js +14 -4
  119. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  120. package/dist/runtime/diagnostics/message-flow.js +10 -19
  121. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  122. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  123. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  124. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  125. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  126. package/dist/runtime/disposal.d.ts +5 -0
  127. package/dist/runtime/disposal.js +22 -0
  128. package/dist/runtime/execution/index.d.ts +12 -9
  129. package/dist/runtime/execution/index.js +58 -14
  130. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  131. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  132. package/dist/runtime/execution/state-lane.d.ts +8 -1
  133. package/dist/runtime/execution/state-lane.js +118 -3
  134. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  135. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  136. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  137. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  138. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  139. package/dist/runtime/foundation/operation-identity.js +9 -5
  140. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  141. package/dist/runtime/foundation/operation-registry.js +34 -44
  142. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  143. package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
  144. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  145. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  146. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  147. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  148. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  149. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  150. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  151. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  152. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  153. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  154. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  155. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  156. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  157. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  158. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  159. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  160. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  161. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  162. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  163. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  164. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  165. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  166. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  167. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  168. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  169. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  170. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  171. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  172. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  173. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  174. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  175. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  176. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  177. package/dist/runtime/framework-errors-internal.js +343 -122
  178. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  179. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  180. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  181. package/dist/runtime/host/actor-packet-relay.js +48 -91
  182. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  183. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  184. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  185. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  186. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  187. package/dist/runtime/host/application-job-queue.js +16 -33
  188. package/dist/runtime/host/bound-session-relay.js +1 -1
  189. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  190. package/dist/runtime/host/index.d.ts +14 -13
  191. package/dist/runtime/host/index.js +190 -157
  192. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  193. package/dist/runtime/host/instance-activation-authority.js +17 -45
  194. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  195. package/dist/runtime/host/location-runtime-owner.js +2 -2
  196. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  197. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  198. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  199. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  200. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  201. package/dist/runtime/host/remote-bound-session-relay.js +7 -20
  202. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  203. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  204. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  205. package/dist/runtime/host/runtime-shutdown.js +18 -21
  206. package/dist/runtime/host/service-relocation-control.js +6 -1
  207. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  208. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  209. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  210. package/dist/runtime/host/spot-address-transport.js +34 -136
  211. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  212. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  213. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  214. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  215. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  216. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  217. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  218. package/dist/runtime/locations/authority-key-codec.js +4 -3
  219. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  220. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  221. package/dist/runtime/locations/creation-operation-id.js +6 -4
  222. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  223. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  224. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  225. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  226. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  227. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  228. package/dist/runtime/locations/key-codec.js +3 -2
  229. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  230. package/dist/runtime/locations/lease-tracker.js +7 -11
  231. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  232. package/dist/runtime/locations/lifecycle.js +2 -31
  233. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  234. package/dist/runtime/locations/location-store-failure.js +7 -0
  235. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  236. package/dist/runtime/locations/location-store-pages.js +13 -0
  237. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  238. package/dist/runtime/locations/location-store-repository.js +303 -332
  239. package/dist/runtime/locations/relocation-blob.js +18 -5
  240. package/dist/runtime/locations/resolvers.d.ts +5 -5
  241. package/dist/runtime/locations/resolvers.js +37 -28
  242. package/dist/runtime/locations/runtime.d.ts +5 -4
  243. package/dist/runtime/locations/runtime.js +123 -92
  244. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  245. package/dist/runtime/locations/spot-location-claims.js +42 -1
  246. package/dist/runtime/messaging/payload-codec.js +26 -20
  247. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  248. package/dist/runtime/messaging/submission-result.js +48 -0
  249. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  250. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  251. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  252. package/dist/runtime/spots/index.d.ts +14 -20
  253. package/dist/runtime/spots/index.js +302 -176
  254. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  255. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  256. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  257. package/dist/runtime/spots/spot-activation-state.js +2 -2
  258. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  259. package/dist/runtime/spots/spot-activation.js +49 -32
  260. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  261. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  262. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  263. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  264. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  265. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  266. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  267. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  268. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  269. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  270. package/dist/runtime/spots/spot-context.d.ts +2 -2
  271. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  272. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  273. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  274. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  275. package/dist/runtime/spots/spot-manager-public.js +5 -4
  276. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  277. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  278. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  279. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  280. package/dist/runtime/spots/spot-outbound.js +9 -8
  281. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  282. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  283. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  284. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  285. package/dist/runtime/spots/spot-route-replies.js +3 -1
  286. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  287. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  288. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  289. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  290. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  291. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  292. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  293. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  294. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  295. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  296. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  297. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  298. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  299. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  300. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  301. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  302. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  303. package/dist/runtime/streams/bound-session-service.js +11 -1
  304. package/dist/runtime/streams/index.d.ts +14 -15
  305. package/dist/runtime/streams/index.js +20 -21
  306. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  307. package/dist/runtime/streams/managed-stream.js +17 -8
  308. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  309. package/dist/runtime/streams/protocol.d.ts +6 -33
  310. package/dist/runtime/streams/protocol.js +38 -110
  311. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  312. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  313. package/dist/runtime/streams/session-calls.d.ts +1 -1
  314. package/dist/runtime/streams/session-calls.js +5 -4
  315. package/dist/runtime/streams/session-context.d.ts +6 -6
  316. package/dist/runtime/streams/session-context.js +22 -4
  317. package/dist/runtime/streams/session-requests.js +2 -1
  318. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  319. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  320. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  321. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  322. package/dist/runtime/workers/index.d.ts +2 -2
  323. package/dist/runtime/workers/index.js +5 -4
  324. package/package.json +3 -3
  325. package/src/contracts/Common/CoreTypes.ts +7 -0
  326. package/src/contracts/Common/index.ts +1 -1
  327. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  328. package/src/contracts/Configuration/Registration.ts +92 -48
  329. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  330. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  331. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  332. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  333. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  334. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  335. package/src/contracts/Handlers/JsonContract.ts +14 -4
  336. package/src/contracts/Locations/Authority.ts +7 -3
  337. package/src/contracts/Locations/Options.ts +1 -1
  338. package/src/contracts/Locations/Stores.ts +14 -0
  339. package/src/contracts/Spots/Contracts.ts +1 -1
  340. package/src/internal.ts +14 -0
  341. package/src/nest-integration.ts +28 -10
  342. package/src/runtime/abort.ts +6 -5
  343. package/src/runtime/activation-admission.ts +2 -8
  344. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  345. package/src/runtime/actors/actor-client.ts +77 -204
  346. package/src/runtime/actors/actor-context.ts +39 -33
  347. package/src/runtime/actors/actor-handoff.ts +24 -22
  348. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  349. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  350. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  351. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  352. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  353. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  354. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  355. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  356. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  357. package/src/runtime/actors/bound-session-wire.ts +2 -8
  358. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  359. package/src/runtime/actors/index.ts +100 -79
  360. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  361. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  362. package/src/runtime/admission.ts +8 -1
  363. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  364. package/src/runtime/backend/contracts/index.ts +13 -29
  365. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  366. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  367. package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
  368. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  369. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  370. package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
  371. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  372. package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
  373. package/src/runtime/backend/raw-binding-port.ts +1 -1
  374. package/src/runtime/backend/runtime-values.ts +4 -1
  375. package/src/runtime/channels/channel-clients.ts +132 -85
  376. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  377. package/src/runtime/channels/channel-envelope.ts +58 -29
  378. package/src/runtime/channels/channel-outbound-operations.ts +10 -23
  379. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  380. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  381. package/src/runtime/channels/channel-runtime-manager.ts +6 -2
  382. package/src/runtime/channels/channel-socket-options.ts +8 -2
  383. package/src/runtime/channels/channel-socket-registry.ts +301 -192
  384. package/src/runtime/channels/channel-transports.ts +161 -112
  385. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  386. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  387. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  388. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  389. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  390. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  391. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  392. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  393. package/src/runtime/diagnostics/flow-context.ts +16 -2
  394. package/src/runtime/diagnostics/index.ts +27 -17
  395. package/src/runtime/diagnostics/message-flow.ts +15 -25
  396. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  397. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  398. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  399. package/src/runtime/disposal.ts +19 -0
  400. package/src/runtime/execution/index.ts +60 -20
  401. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  402. package/src/runtime/execution/state-lane.ts +142 -4
  403. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  404. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  405. package/src/runtime/foundation/operation-identity.ts +11 -5
  406. package/src/runtime/foundation/operation-registry.ts +33 -50
  407. package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
  408. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  409. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  410. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  411. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  412. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  413. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  414. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  415. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  416. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  417. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  418. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  419. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  420. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  421. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  422. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  423. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  424. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  425. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  426. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  427. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  428. package/src/runtime/framework-errors-internal.ts +380 -134
  429. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  430. package/src/runtime/host/actor-packet-relay.ts +57 -147
  431. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  432. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  433. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  434. package/src/runtime/host/application-job-queue.ts +28 -34
  435. package/src/runtime/host/bound-session-relay.ts +1 -2
  436. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  437. package/src/runtime/host/index.ts +327 -296
  438. package/src/runtime/host/instance-activation-authority.ts +89 -109
  439. package/src/runtime/host/location-runtime-owner.ts +4 -2
  440. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  441. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  442. package/src/runtime/host/remote-bound-session-relay.ts +8 -41
  443. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  444. package/src/runtime/host/runtime-shutdown.ts +17 -21
  445. package/src/runtime/host/service-relocation-control.ts +14 -1
  446. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  447. package/src/runtime/host/spot-address-transport.ts +73 -195
  448. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  449. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  450. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  451. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  452. package/src/runtime/locations/authority-key-codec.ts +7 -3
  453. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  454. package/src/runtime/locations/creation-operation-id.ts +6 -3
  455. package/src/runtime/locations/domain-store-contract.ts +12 -3
  456. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  457. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  458. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  459. package/src/runtime/locations/key-codec.ts +3 -2
  460. package/src/runtime/locations/lease-tracker.ts +8 -14
  461. package/src/runtime/locations/lifecycle.ts +13 -43
  462. package/src/runtime/locations/location-store-failure.ts +4 -0
  463. package/src/runtime/locations/location-store-pages.ts +18 -0
  464. package/src/runtime/locations/location-store-repository.ts +450 -478
  465. package/src/runtime/locations/relocation-blob.ts +17 -6
  466. package/src/runtime/locations/resolvers.ts +75 -49
  467. package/src/runtime/locations/runtime.ts +220 -110
  468. package/src/runtime/locations/spot-location-claims.ts +58 -1
  469. package/src/runtime/messaging/payload-codec.ts +35 -24
  470. package/src/runtime/messaging/submission-result.ts +57 -1
  471. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  472. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  473. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  474. package/src/runtime/spots/index.ts +433 -229
  475. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  476. package/src/runtime/spots/spot-activation-state.ts +2 -2
  477. package/src/runtime/spots/spot-activation.ts +67 -37
  478. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  479. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  480. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  481. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  482. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  483. package/src/runtime/spots/spot-context.ts +3 -3
  484. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  485. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  486. package/src/runtime/spots/spot-manager-public.ts +21 -17
  487. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  488. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  489. package/src/runtime/spots/spot-outbound.ts +45 -23
  490. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  491. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  492. package/src/runtime/spots/spot-route-replies.ts +6 -4
  493. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  494. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  495. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  496. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  497. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  498. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  499. package/src/runtime/spots/spot-timer.ts +3 -2
  500. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  501. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  502. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  503. package/src/runtime/streams/bound-session-service.ts +21 -1
  504. package/src/runtime/streams/index.ts +76 -64
  505. package/src/runtime/streams/managed-stream.ts +29 -10
  506. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  507. package/src/runtime/streams/protocol.ts +34 -88
  508. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  509. package/src/runtime/streams/session-calls.ts +6 -5
  510. package/src/runtime/streams/session-context.ts +54 -10
  511. package/src/runtime/streams/session-requests.ts +2 -1
  512. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  513. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  514. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  515. package/src/runtime/workers/index.ts +13 -12
  516. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  517. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  518. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  519. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  520. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  521. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,68 +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 listener_records_1 = require("../foundation/listener-records");
7
- 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");
8
8
  const node_crypto_1 = require("node:crypto");
9
- const runtime_message_1 = require("../backend/runtime-message");
10
- const runtime_values_1 = require("../backend/runtime-values");
11
- const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
12
- const runtime_state_projections_1 = require("../foundation/runtime-state-projections");
13
- const abort_1 = require("../abort");
14
- const backend_1 = require("../backend");
15
- const LEGACY_MESH_SEND_TIMEOUT_MS = 1000;
16
9
  const contracts_1 = require("../../contracts");
17
- const submission_result_1 = require("../messaging/submission-result");
18
- const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
10
+ const ConfigurationException_1 = require("../../contracts/Configuration/ConfigurationException");
19
11
  const DiagnosticsValidation_1 = require("../../contracts/Configuration/DiagnosticsValidation");
20
- const channels_1 = require("../channels");
21
- 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");
22
19
  const actors_1 = require("../actors");
20
+ const actor_message_follow_context_1 = require("../actors/actor-message-follow-context");
23
21
  const actor_transport_delivery_gate_1 = require("../actors/actor-transport-delivery-gate");
22
+ const admission_1 = require("../admission");
24
23
  const application_job_queue_handler_start_gate_1 = require("../application-jobs/application-job-queue-handler-start-gate");
25
- 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");
26
30
  const diagnostics_1 = require("../diagnostics");
27
- const topology_runtime_projections_1 = require("../diagnostics/topology-runtime-projections");
31
+ const runtime_metrics_1 = require("../diagnostics/runtime-metrics");
28
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");
29
47
  const spots_1 = require("../spots");
30
- const actor_message_follow_context_1 = require("../actors/actor-message-follow-context");
31
- const actors_2 = require("../actors");
32
48
  const streams_1 = require("../streams");
33
- const locations_1 = require("../locations");
34
- const Locations_1 = require("../../contracts/Locations");
49
+ const actor_placement_coordinator_1 = require("./actor-placement-coordinator");
35
50
  const actor_runtime_options_factory_1 = require("./actor-runtime-options-factory");
36
- const actor_transfer_runtime_1 = require("./actor-transfer-runtime");
37
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");
38
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");
39
59
  const location_runtime_owner_1 = require("./location-runtime-owner");
40
60
  const mesh_router_resolver_1 = require("./mesh-router-resolver");
41
- const bound_session_relay_1 = require("./bound-session-relay");
42
- const routing_id_1 = require("../routing-id");
43
- const service_authority_payload_codec_1 = require("../foundation/service-authority-payload-codec");
44
- const service_relocation_runtime_1 = require("../foundation/service-relocation-runtime");
45
- const spot_runtime_options_factory_1 = require("./spot-runtime-options-factory");
46
- const channel_runtime_options_factory_1 = require("./channel-runtime-options-factory");
47
- const spot_node_runtime_options_factory_1 = require("./spot-node-runtime-options-factory");
48
- const runtime_shutdown_1 = require("./runtime-shutdown");
49
- const admission_1 = require("../admission");
50
- const activation_admission_1 = require("../activation-admission");
51
61
  const route_mesh_runtime_1 = require("./route-mesh-runtime");
52
- const service_relocation_coordinator_1 = require("../foundation/service-relocation-coordinator");
53
- const ConfigurationException_1 = require("../../contracts/Configuration/ConfigurationException");
54
- const stateful_authority_route_runtime_1 = require("./stateful-authority-route-runtime");
55
- const instance_activation_authority_1 = require("./instance-activation-authority");
56
- const spot_address_transport_1 = require("./spot-address-transport");
57
- const user_spot_creation_coordinator_1 = require("./user-spot-creation-coordinator");
58
- const actor_placement_coordinator_1 = require("./actor-placement-coordinator");
59
- const payload_codec_1 = require("../messaging/payload-codec");
60
- const creation_payload_codec_1 = require("../messaging/creation-payload-codec");
61
62
  const route_mesh_runtime_options_1 = require("./route-mesh-runtime-options");
63
+ const runtime_shutdown_1 = require("./runtime-shutdown");
62
64
  const service_relocation_host_runtime_1 = require("./service-relocation-host-runtime");
63
- const application_job_queue_1 = require("./application-job-queue");
64
- const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
65
- 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;
66
74
  class ZLinkFrameworkRuntimeHost {
67
75
  options;
68
76
  backendAdapterFactory;
@@ -72,6 +80,7 @@ class ZLinkFrameworkRuntimeHost {
72
80
  runtimeSequence = 0n;
73
81
  runtimeObservationSource = Symbol('zlink.framework-runtime');
74
82
  runtimeDeadline;
83
+ shutdownDeadline;
75
84
  runtimeRelocationResult;
76
85
  runtimeTerminationResult;
77
86
  relocationOperation;
@@ -109,11 +118,8 @@ class ZLinkFrameworkRuntimeHost {
109
118
  capacityStatus;
110
119
  metricRegistrations = [];
111
120
  admission = new admission_1.ZLinkRuntimeAdmissionGate(() => this.ownerAdmissionOpen());
112
- activationAdmission = new activation_admission_1.ZLinkActivationAdmission((meshName) => this.options.registration.spotNodes.get(meshName)?.activationConcurrencyLimit ?? 128, (meshName) => {
113
- void this.spotNodeRuntime
114
- ?.publishMeshNodeState(this.runtimeState, this.executionState?.abortController.signal, meshName)
115
- .catch(() => undefined);
116
- });
121
+ activationAdmission = new activation_admission_1.ZLinkActivationAdmission((meshName) => this.options.registration.spotNodes.get(meshName)?.activationConcurrencyLimit ??
122
+ InternalDefaults_1.DEFAULT_ACTIVATION_CONCURRENCY_LIMIT);
117
123
  cachedLocationSpotRouteResolver;
118
124
  actorClientLocationResolver;
119
125
  // Shared, runtime-mutable message-flow mode cell — installed once so
@@ -172,7 +178,7 @@ class ZLinkFrameworkRuntimeHost {
172
178
  return sendTimeoutMsForSpotMesh(routeChannelId);
173
179
  };
174
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));
175
- 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);
176
182
  this.spotAddressTransport = new spot_address_transport_1.ZLinkHostSpotAddressTransport({
177
183
  resolver: () => this.createLocationSpotRouteResolver(),
178
184
  routed: this.routeTransport,
@@ -183,7 +189,7 @@ class ZLinkFrameworkRuntimeHost {
183
189
  meshNode: (meshName) => this.spotNodeRuntime?.meshNode(meshName),
184
190
  completions: (meshName) => this.spotNodeRuntime?.meshCompletionTable(meshName),
185
191
  codecs: { serializers: options.registration.messageSerializers },
186
- defaultRequestTimeoutMs: options.registration.requestTimeoutMs ?? 30_000,
192
+ defaultRequestTimeoutMs: options.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS,
187
193
  defaultSendTimeoutMs: defaultSpotSendTimeoutMs,
188
194
  sendTimeoutMsForMesh: sendTimeoutMsForSpotMesh,
189
195
  sendTimeoutMsForRouteChannel: sendTimeoutMsForSpotRouteChannel,
@@ -197,6 +203,7 @@ class ZLinkFrameworkRuntimeHost {
197
203
  rewriteAuthorityPayloadForOwner
198
204
  });
199
205
  this.streamBindingRuntime = new streams_1.ZLinkStreamBindingRuntime({
206
+ dispatchErrors: this.createDispatchErrorReporter(this.runtimeOrPreStartErrorSink),
200
207
  streamPayloadCodec: resolveStreamPayloadCodec(options.registration),
201
208
  streamCompression: options.registration.streamCompression,
202
209
  messageSerializers: options.registration.messageSerializers,
@@ -229,7 +236,7 @@ class ZLinkFrameworkRuntimeHost {
229
236
  relay: (actor, header, payload, signal) => this.boundSessionRelay.actorPackets.relayActorPacket(actor, header, payload, signal),
230
237
  notifyDisconnected: (actor, signal) => this.boundSessionRelay.actorPackets.notifyBoundActorDisconnected(actor, signal)
231
238
  });
232
- this.actorHandoff = new actors_2.ZLinkActorHandoffCoordinator({
239
+ this.actorHandoff = new actors_1.ZLinkActorHandoffCoordinator({
233
240
  routedTransport: this.routeTransport,
234
241
  messageFollowDurationMs: options.registration.locations.options.messageFollowDurationMs,
235
242
  requestTimeoutMs: options.registration.requestTimeoutMs,
@@ -385,7 +392,7 @@ class ZLinkFrameworkRuntimeHost {
385
392
  });
386
393
  }
387
394
  });
388
- 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);
389
396
  this.boundSessionFactory = new streams_1.DefaultZLinkBoundSessionFactory(this.streamBindingRuntime);
390
397
  this.boundSessionRelay = new bound_session_relay_1.ZLinkBoundSessionRelay({
391
398
  requestTimeoutMs: options.registration.requestTimeoutMs,
@@ -514,6 +521,7 @@ class ZLinkFrameworkRuntimeHost {
514
521
  });
515
522
  this.serviceRelocation = new service_relocation_host_runtime_1.ZLinkHostServiceRelocationRuntime({
516
523
  registration: options.registration,
524
+ targetAdmissionSealed: () => this.shutdownOperationStartedAt !== undefined,
517
525
  providerResolver: options.providerResolver,
518
526
  locationStore: () => this.locationOwner.currentStores?.locationStore,
519
527
  currentOwner: () => this.locationOwner.currentRuntime?.currentOwnerToken,
@@ -584,7 +592,7 @@ class ZLinkFrameworkRuntimeHost {
584
592
  this.routeMeshRuntime = this.routeMeshCoordinator;
585
593
  }
586
594
  get isStarted() {
587
- return this.executionState !== undefined;
595
+ return this.executionState !== undefined && !this.executionState.abortController.signal.aborted;
588
596
  }
589
597
  get status() {
590
598
  return {
@@ -613,6 +621,7 @@ class ZLinkFrameworkRuntimeHost {
613
621
  const queue = new runtime_observation_queue_1.RuntimeEventQueue(undefined, signal);
614
622
  this.runtimeObservers.add(queue);
615
623
  queue.onClose(() => this.runtimeObservers.delete(queue));
624
+ this.publishRuntimeStatus(queue, this.status);
616
625
  return queue;
617
626
  }
618
627
  resetCapacityMetrics() {
@@ -624,7 +633,7 @@ class ZLinkFrameworkRuntimeHost {
624
633
  }
625
634
  relocate(options) {
626
635
  const effectiveTargetApplicationVersion = validateRelocationOptions(options, this.options.registration.applicationVersion);
627
- const deadlineMs = options.deadlineMs ?? 30_000;
636
+ const deadlineMs = options.deadlineMs ?? DEFAULT_HOST_CONTROL_TIMEOUT_MS;
628
637
  if (!Number.isFinite(deadlineMs) || deadlineMs <= 0) {
629
638
  return Promise.reject(new RangeError('Relocation deadlineMs must be greater than zero.'));
630
639
  }
@@ -686,7 +695,7 @@ class ZLinkFrameworkRuntimeHost {
686
695
  return waitForRuntimeOperation(this.relocationOperation, options.signal);
687
696
  }
688
697
  shutdown(options) {
689
- const deadlineMs = options?.deadlineMs ?? 30_000;
698
+ const deadlineMs = options?.deadlineMs ?? DEFAULT_HOST_CONTROL_TIMEOUT_MS;
690
699
  if (!Number.isFinite(deadlineMs) || deadlineMs <= 0) {
691
700
  return Promise.reject(new RangeError('Shutdown deadlineMs must be greater than zero.'));
692
701
  }
@@ -756,46 +765,69 @@ class ZLinkFrameworkRuntimeHost {
756
765
  }
757
766
  }
758
767
  async runShutdown(deadlineMs) {
759
- const deadlineAtMs = performance.now() + deadlineMs;
760
- try {
761
- this.admission.close();
762
- this.setRuntimeState(contracts_1.ZLinkFrameworkRuntimeState.Draining);
763
- if (this.relocationOperation !== undefined &&
764
- this.relocationStopStarting?.signal.aborted === true) {
765
- 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
+ });
766
803
  }
767
- // Seal application admission before the public status reports that the
768
- // host no longer accepts work. This prevents status polling from racing
769
- // with the coordinator's synchronous seal step.
770
- const unscopedStreamDrain = this.streamRuntime?.notifyUnscopedServerDrain();
771
- const shutdown = this.routeMeshCoordinator.shutdownHost(this.runtimeDeadline, undefined, Math.max(0, deadlineAtMs - performance.now()));
772
- const drain = await shutdown;
773
- await unscopedStreamDrain;
774
- await this.stop();
775
- if (drain.kind === 'forceStopped') {
804
+ catch (error) {
805
+ await this.stop().catch(() => undefined);
776
806
  return this.completeTermination({
777
807
  outcome: contracts_1.ZLinkFrameworkTerminationOutcome.ForceStopped,
778
- reason: drain.reason === 'deadline_exceeded'
808
+ reason: (0, abort_1.isDeadlineExceededError)(error)
779
809
  ? contracts_1.ZLinkFrameworkTerminationReason.DeadlineExceeded
780
810
  : contracts_1.ZLinkFrameworkTerminationReason.TeardownFailed
781
811
  });
782
812
  }
783
- if (performance.now() >= deadlineAtMs) {
784
- throw (0, abort_1.createDeadlineExceededError)('Shutdown resource cleanup exceeded its deadline.');
785
- }
786
- return this.completeTermination({
787
- outcome: contracts_1.ZLinkFrameworkTerminationOutcome.Stopped,
788
- reason: contracts_1.ZLinkFrameworkTerminationReason.None
789
- });
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();
790
825
  }
791
- catch (error) {
792
- await this.stop().catch(() => undefined);
793
- return this.completeTermination({
794
- outcome: contracts_1.ZLinkFrameworkTerminationOutcome.ForceStopped,
795
- reason: (0, abort_1.isDeadlineExceededError)(error)
796
- ? contracts_1.ZLinkFrameworkTerminationReason.DeadlineExceeded
797
- : contracts_1.ZLinkFrameworkTerminationReason.TeardownFailed
798
- });
826
+ finally {
827
+ clearTimeout(timer);
828
+ this.shutdownDeadline = undefined;
829
+ if (ownsRuntimeDeadline)
830
+ this.runtimeDeadline = undefined;
799
831
  }
800
832
  }
801
833
  resetBlockedRelocation(result) {
@@ -822,13 +854,14 @@ class ZLinkFrameworkRuntimeHost {
822
854
  }
823
855
  recordRelocationResult(result) {
824
856
  if (this.relocationOperationStartedAt !== undefined) {
825
- 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, {
826
859
  mode: relocationModeMetricName(result.mode),
827
860
  outcome: result.outcome === contracts_1.ZLinkFrameworkRelocationOutcome.Relocated ? 'relocated' : 'blocked'
828
861
  });
829
862
  }
830
863
  if (result.outcome === contracts_1.ZLinkFrameworkRelocationOutcome.Blocked) {
831
- this.metrics.count('zlink.host.relocation.blocked', 1, {
864
+ this.metrics.count(runtime_metrics_1.METRIC_NAMES.HostRelocationBlocked, 1, {
832
865
  mode: relocationModeMetricName(result.mode),
833
866
  reason: relocationReasonMetricName(result.reason)
834
867
  });
@@ -847,14 +880,14 @@ class ZLinkFrameworkRuntimeHost {
847
880
  this.runtimeTerminationResult = result;
848
881
  this.runtimeDeadline = undefined;
849
882
  if (this.shutdownOperationStartedAt !== undefined) {
850
- 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, {
851
884
  outcome: result.outcome === contracts_1.ZLinkFrameworkTerminationOutcome.Stopped
852
885
  ? 'stopped'
853
886
  : 'force_stopped'
854
887
  });
855
888
  }
856
889
  if (result.outcome === contracts_1.ZLinkFrameworkTerminationOutcome.ForceStopped) {
857
- this.metrics.count('zlink.host.shutdown.forced', 1, {
890
+ this.metrics.count(runtime_metrics_1.METRIC_NAMES.HostShutdownForced, 1, {
858
891
  reason: terminationReasonMetricName(result.reason)
859
892
  });
860
893
  }
@@ -876,15 +909,15 @@ class ZLinkFrameworkRuntimeHost {
876
909
  this.notifyTopologyHostStateChanged();
877
910
  const status = this.status;
878
911
  for (const observer of this.runtimeObservers) {
879
- if (state === contracts_1.ZLinkFrameworkRuntimeState.Stopped) {
880
- observer.seal(status, this.runtimeObservationSource);
881
- }
882
- else {
883
- observer.push(status, this.runtimeObservationSource);
884
- }
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);
885
918
  }
886
- if (state === contracts_1.ZLinkFrameworkRuntimeState.Stopped) {
887
- this.runtimeObservers.clear();
919
+ else {
920
+ observer.push(status, this.runtimeObservationSource);
888
921
  }
889
922
  }
890
923
  notifyTopologyHostStateChanged() {
@@ -1004,7 +1037,7 @@ class ZLinkFrameworkRuntimeHost {
1004
1037
  // Start bound receivers before publishing Serving descriptors. A
1005
1038
  // discovered ClientServer endpoint must already be able to dispatch.
1006
1039
  this.executionState.listenerTasks.push(...channelRuntime.start(this.executionState.taskRunner));
1007
- 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);
1008
1041
  startedLocationRuntime = locationRuntime;
1009
1042
  if (locationRuntime !== undefined) {
1010
1043
  this.installOwnerLeaseRecoveryPublication(locationRuntime, spotNodeRuntime, channelRuntime);
@@ -1046,15 +1079,24 @@ class ZLinkFrameworkRuntimeHost {
1046
1079
  this.lifecycleSink?.push('framework:started');
1047
1080
  }
1048
1081
  catch (error) {
1082
+ if (this.shutdownDeadline !== undefined && (0, abort_1.isAbortError)(error))
1083
+ throw error;
1049
1084
  await statefulAuthorityRoutes?.stop();
1050
- await (0, runtime_shutdown_1.rollbackRuntimeStart)({
1051
- context,
1052
- startedLocationRuntime,
1053
- streamRuntime,
1054
- spotNodeRuntime,
1055
- channelRuntime,
1056
- ownedStores: registeredRuntimeStores(this.options.registration)
1057
- });
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
+ }
1058
1100
  this.executionState = undefined;
1059
1101
  this.channelRuntime = undefined;
1060
1102
  this.spotNodeRuntime = undefined;
@@ -1067,7 +1109,7 @@ class ZLinkFrameworkRuntimeHost {
1067
1109
  }
1068
1110
  }
1069
1111
  async stop() {
1070
- await this.runLifecycle(() => this.stopCore());
1112
+ await this.runWithShutdownDeadline(DEFAULT_HOST_CONTROL_TIMEOUT_MS, async () => this.runLifecycle(() => this.stopCore()));
1071
1113
  }
1072
1114
  runtimeMetricMeshSnapshots() {
1073
1115
  const snapshots = [];
@@ -1117,6 +1159,7 @@ class ZLinkFrameworkRuntimeHost {
1117
1159
  if (state === undefined) {
1118
1160
  return;
1119
1161
  }
1162
+ state.abortController.abort();
1120
1163
  const channelRuntime = this.channelRuntime;
1121
1164
  const spotNodeRuntime = this.spotNodeRuntime;
1122
1165
  const streamRuntime = this.streamRuntime;
@@ -1124,24 +1167,25 @@ class ZLinkFrameworkRuntimeHost {
1124
1167
  this.stopTopologyObservers();
1125
1168
  this.removeOwnerLeaseRecoveryPublication();
1126
1169
  const locationSnapshot = this.locationOwner.clearForStop();
1127
- this.executionState = undefined;
1128
- this.channelRuntime = undefined;
1129
- this.spotNodeRuntime = undefined;
1130
- this.streamRuntime = undefined;
1131
- this.statefulAuthorityRoutes = undefined;
1132
- this.cachedLocationSpotRouteResolver = undefined;
1133
1170
  this.lifecycleSink?.push('framework:stop');
1134
1171
  await statefulAuthorityRoutes?.stop();
1135
1172
  await (0, runtime_shutdown_1.stopRuntimeParts)({
1136
1173
  state,
1137
1174
  locationSnapshot,
1138
1175
  cleanupDeadline: this.runtimeDeadline,
1176
+ shutdownSignal: this.shutdownDeadline.signal,
1139
1177
  streamRuntime,
1140
1178
  spotNodeRuntime,
1141
1179
  channelRuntime,
1142
1180
  serviceRelocation: this.serviceRelocation,
1143
1181
  ownedStores: registeredRuntimeStores(this.options.registration)
1144
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;
1145
1189
  this.listenerRecords.clear();
1146
1190
  this.lifecycleSink?.push('framework:stopped');
1147
1191
  if (this.shutdownOperation === undefined) {
@@ -1191,7 +1235,7 @@ class ZLinkFrameworkRuntimeHost {
1191
1235
  meshNodes: spotNodeRuntime.meshNodesByName,
1192
1236
  pollingIntervalMs: this.options.registration.locations.options.pollingIntervalMs ??
1193
1237
  Locations_1.zlinkDefaultLocationOptions.pollingIntervalMs,
1194
- pageSize: 1000,
1238
+ pageSize: Stores_1.ZLINK_PROVIDER_MAX_PAGE_SIZE,
1195
1239
  reportError: (error) => this.runtimeOrPreStartErrorSink.reportRuntimeTaskException('stateful authority route reconciliation', error),
1196
1240
  onSpotRouteChanged: (spotId) => this.cachedLocationSpotRouteResolver?.invalidate?.(spotId)
1197
1241
  });
@@ -1211,11 +1255,6 @@ class ZLinkFrameworkRuntimeHost {
1211
1255
  const activationNode = node;
1212
1256
  const spotManager = this.spotManager;
1213
1257
  if (spotManager !== undefined) {
1214
- activationNode.setSpotAdmissionProvider?.({
1215
- isClosing: (spotId) => spotManager.isSpotClosing(meshName, spotId),
1216
- awaitCloseDecision: (spotId) => spotManager.pendingSpotCloseDecision(meshName, spotId),
1217
- runtimeState: () => this.runtimeState
1218
- });
1219
1258
  this.registerInstanceApplicationLifecycle(meshName, activationNode, spotManager);
1220
1259
  }
1221
1260
  activationNode.registerAsyncInstanceActivationAuthority?.(new instance_activation_authority_1.ZLinkInstanceActivationAuthority({
@@ -1364,8 +1403,9 @@ class ZLinkFrameworkRuntimeHost {
1364
1403
  }
1365
1404
  }
1366
1405
  catch (error) {
1367
- throw new ZLinkDrainingStatePublishError(error);
1406
+ throw new route_mesh_runtime_1.ZLinkDrainingStatePublishError(error);
1368
1407
  }
1408
+ await awaitWithDrainSignal(this.serviceRelocation.drainTargetAttempts(), signal);
1369
1409
  }
1370
1410
  async cleanupOwnerForDrain(signal) {
1371
1411
  const runtime = this.locationOwner.currentRuntime;
@@ -1387,7 +1427,6 @@ class ZLinkFrameworkRuntimeHost {
1387
1427
  activationNode.registerInstanceApplicationLifecycle?.({
1388
1428
  isMaterialized: (target) => spotManager.isInstanceMaterialized(meshName, target.stableType, target.targetSpotId),
1389
1429
  isMaterializing: (target) => spotManager.isInstanceMaterializing(meshName, target.targetSpotId),
1390
- isClosing: (target) => spotManager.isInstanceClosing(meshName, target.targetSpotId),
1391
1430
  isIdleEvicting: (target) => spotManager.isInstanceSpotIdleEvicting(meshName, target.targetSpotId),
1392
1431
  beginIdleEviction: (target) => spotManager.beginInstanceSpotIdleEviction(meshName, target.targetSpotId),
1393
1432
  materialize: (target, objectGeneration) => spotManager.materializeInstance(meshName, target.stableType, target.targetSpotId, objectGeneration, this.executionState?.abortController.signal),
@@ -1402,12 +1441,6 @@ class ZLinkFrameworkRuntimeHost {
1402
1441
  setSpotManager(spotManager) {
1403
1442
  this.spotManager = spotManager;
1404
1443
  for (const [meshName, node] of this.spotNodeRuntime?.meshNodesByName ?? []) {
1405
- const admissionNode = node;
1406
- admissionNode.setSpotAdmissionProvider?.({
1407
- isClosing: (spotId) => spotManager.isSpotClosing(meshName, spotId),
1408
- awaitCloseDecision: (spotId) => spotManager.pendingSpotCloseDecision(meshName, spotId),
1409
- runtimeState: () => this.runtimeState
1410
- });
1411
1444
  this.registerInstanceApplicationLifecycle(meshName, node, spotManager);
1412
1445
  }
1413
1446
  }
@@ -1477,7 +1510,10 @@ class ZLinkFrameworkRuntimeHost {
1477
1510
  detachedTaskRunner: this.detachedTaskRunner(),
1478
1511
  metrics: this.metrics,
1479
1512
  admission: this.admission,
1480
- statefulExecutionAllowed: () => this.ownerAdmissionOpen()
1513
+ statefulExecution: {
1514
+ admissionOpen: () => this.ownerAdmissionOpen(),
1515
+ hostState: () => this.runtimeState
1516
+ }
1481
1517
  }).create(this.actorTransferRuntime),
1482
1518
  activationAdmission: this.activationAdmission
1483
1519
  };
@@ -1521,7 +1557,7 @@ class ZLinkFrameworkRuntimeHost {
1521
1557
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ObjectClientNotConfigured, `RouteMesh '${meshName}' has no object-client role.`);
1522
1558
  }
1523
1559
  const meshNode = this.spotNodeRuntime?.meshNode(meshName);
1524
- const descriptors = (await locationStore.listMeshNodes(meshName, undefined, signal)).items;
1560
+ const descriptors = await (0, location_store_pages_1.listAllMeshNodeDescriptors)(locationStore, meshName, signal);
1525
1561
  const selected = await selectReadyLocationPlacementDescriptor(descriptors, meshNode, signal, (descriptor) => {
1526
1562
  const capability = descriptor.objectCapabilities.find((candidate) => candidate.objectKind === 'actor' && candidate.stableType === stableType);
1527
1563
  const actors = descriptor.populationCapacity.actors;
@@ -1602,7 +1638,7 @@ class ZLinkFrameworkRuntimeHost {
1602
1638
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ObjectClientNotConfigured, `RouteMesh '${meshName}' has no object-client role.`);
1603
1639
  }
1604
1640
  const meshNode = this.spotNodeRuntime?.meshNode(meshName);
1605
- const descriptors = (await locationStore.listMeshNodes(meshName, undefined, signal)).items;
1641
+ const descriptors = await (0, location_store_pages_1.listAllMeshNodeDescriptors)(locationStore, meshName, signal);
1606
1642
  const selected = await selectReadyLocationPlacementDescriptor(descriptors, meshNode, signal, (descriptor) => {
1607
1643
  const capability = descriptor.objectCapabilities.find((candidate) => candidate.objectKind === 'user_spot' && candidate.stableType === request.stableType);
1608
1644
  const spotTypeCapacity = descriptor.populationCapacity.spotTypes.find((candidate) => candidate.objectKind === 'user_spot' && candidate.stableType === request.stableType);
@@ -1680,7 +1716,7 @@ class ZLinkFrameworkRuntimeHost {
1680
1716
  try {
1681
1717
  payload = {
1682
1718
  packetName: 'ZLinkFrameworkUserSpotReply',
1683
- contentType: 'application/octet-stream',
1719
+ contentType: stream_wire_1.ZlinkStreamContentType.Raw,
1684
1720
  payload: Buffer.from(message.data())
1685
1721
  };
1686
1722
  }
@@ -1804,7 +1840,7 @@ class ZLinkFrameworkRuntimeHost {
1804
1840
  }
1805
1841
  return node.requestUserSpotClose(targetNodeRid, request, timeoutMs);
1806
1842
  },
1807
- defaultTimeoutMs: this.options.registration.requestTimeoutMs ?? 30_000,
1843
+ defaultTimeoutMs: this.options.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS,
1808
1844
  messageSerializers: this.options.registration.messageSerializers
1809
1845
  });
1810
1846
  }
@@ -1824,6 +1860,8 @@ class ZLinkFrameworkRuntimeHost {
1824
1860
  meshCompletions: (meshName) => this.spotNodeRuntime?.meshCompletionTable(meshName),
1825
1861
  notifyEntrySpotActorCreated: (nodeRid, actor, createRequest, signal) => this.spotNodeRuntime?.notifyEntrySpotActorCreated(nodeRid, actor, createRequest, signal) ??
1826
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(),
1827
1865
  locationLifecycle: () => this.locationOwner.currentLifecycle,
1828
1866
  primaryMeshName: () => this.meshRouters.primaryMeshName(),
1829
1867
  actorMeshName: (actorType) => this.meshRouters.actorMeshName(actorType),
@@ -1845,7 +1883,7 @@ class ZLinkFrameworkRuntimeHost {
1845
1883
  if (entrySpotId === undefined) {
1846
1884
  throw new ConfigurationException_1.ZLinkConfigurationException(`Actor '${actorRef.actorId}' authority requires its RouteMesh Entry Spot.`);
1847
1885
  }
1848
- await (0, actors_2.publishInitialActorAuthority)(store, {
1886
+ await (0, actors_1.publishInitialActorAuthority)(store, {
1849
1887
  actorType,
1850
1888
  actor: actorRef,
1851
1889
  meshName,
@@ -1913,6 +1951,7 @@ class ZLinkFrameworkRuntimeHost {
1913
1951
  }).create();
1914
1952
  return {
1915
1953
  ...options,
1954
+ errorSink: this.runtimeOrPreStartErrorSink,
1916
1955
  peerAdmissionSealed: (meshName) => !this.admission.accepts(meshName),
1917
1956
  messageFollowReceiver: (record) => {
1918
1957
  if (record.source.kind === 'actor') {
@@ -1951,10 +1990,8 @@ class ZLinkFrameworkRuntimeHost {
1951
1990
  throw new ConfigurationException_1.ZLinkConfigurationException('MeshNode Actor binding record has no binding generation.');
1952
1991
  }
1953
1992
  const binding = record.kindData;
1954
- const replyBindingFailure = (kind, message) => {
1955
- const terminal = kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorGenerationStale
1956
- ? { terminalResult: runtime_values_1.RequestResult.InvalidState, failureCode: 0 }
1957
- : (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);
1958
1995
  if (record.replyFailure?.(terminal.terminalResult, terminal.failureCode) !== runtime_values_1.SubmitResult.Ok) {
1959
1996
  throw new ConfigurationException_1.ZLinkConfigurationException(`MeshNode Actor binding target '${binding.actor.actorId}' failure acknowledgement failed.`);
1960
1997
  }
@@ -1970,11 +2007,11 @@ class ZLinkFrameworkRuntimeHost {
1970
2007
  nativeActorRef === undefined ||
1971
2008
  nativeActorRef.actorId !== binding.actor.actorId ||
1972
2009
  !(0, routing_id_1.routingIdsEqual)(nativeActorRef.nodeRid, binding.actor.nodeRid)) {
1973
- 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);
1974
2011
  return;
1975
2012
  }
1976
2013
  if (nativeActorRef.generation !== binding.actor.generation) {
1977
- replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorGenerationStale, `Actor '${binding.actor.actorId}' binding object generation is stale.`);
2014
+ replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorGenerationStale);
1978
2015
  return;
1979
2016
  }
1980
2017
  const node = state.meshName === meshName ? this.spotNodeRuntime?.meshNode(meshName) : undefined;
@@ -1986,7 +2023,7 @@ class ZLinkFrameworkRuntimeHost {
1986
2023
  localStatus.lifecycleGeneration !== binding.actorNodeGeneration ||
1987
2024
  state.locationGeneration !== binding.authorityOwnerGeneration ||
1988
2025
  state.isMoving) {
1989
- replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${binding.actor.actorId}' binding authority fence is stale.`);
2026
+ replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
1990
2027
  return;
1991
2028
  }
1992
2029
  const sessionOwnerIsLocal = (0, routing_id_1.routingIdsEqual)(localStatus.routingId, binding.sessionNodeRid) &&
@@ -1999,6 +2036,7 @@ class ZLinkFrameworkRuntimeHost {
1999
2036
  nodeRid: binding.actor.nodeRid
2000
2037
  };
2001
2038
  if (sessionOwnerIsLocal) {
2039
+ (0, application_job_queue_scope_1.releaseApplicationJobPermitBeforeHandler)();
2002
2040
  await this.streamBindingRuntime.retireRemoteBinding(actorRef, binding.sessionRid, binding.bindingGeneration, signal);
2003
2041
  }
2004
2042
  state.retireBoundSessionBinding(binding);
@@ -2007,7 +2045,7 @@ class ZLinkFrameworkRuntimeHost {
2007
2045
  }
2008
2046
  const target = this.boundSessionRelay.boundSessions.resolveRemoteBoundSessionTarget(binding.sessionNodeRid, binding.sessionRid);
2009
2047
  if (target === undefined) {
2010
- replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${binding.actor.actorId}' Session route is unavailable.`);
2048
+ replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
2011
2049
  return;
2012
2050
  }
2013
2051
  const installed = state.installBoundSessionBinding({
@@ -2020,7 +2058,7 @@ class ZLinkFrameworkRuntimeHost {
2020
2058
  bindingGeneration: binding.bindingGeneration
2021
2059
  });
2022
2060
  if (!installed) {
2023
- replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${binding.actor.actorId}' Session binding generation is stale.`);
2061
+ replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
2024
2062
  return;
2025
2063
  }
2026
2064
  replyBindingSuccess();
@@ -2047,7 +2085,7 @@ class ZLinkFrameworkRuntimeHost {
2047
2085
  return;
2048
2086
  }
2049
2087
  if (record.kind === service_runtime_contracts_1.ReceiveKind.NodeRequest && record.parts.length === 1) {
2050
- const terminal = (0, actors_2.decodeRemoteActorSourceLeaveTerminal)(record.parts[0].data());
2088
+ const terminal = (0, actors_1.decodeRemoteActorSourceLeaveTerminal)(record.parts[0].data());
2051
2089
  if (terminal !== undefined) {
2052
2090
  if ((await this.spotManager?.completeFormalSourceLeaveTerminal(terminal.actorId, terminal.transferId, terminal.succeeded)) !== true) {
2053
2091
  throw new ConfigurationException_1.ZLinkConfigurationException(`Actor '${terminal.actorId}' has no matching formal transfer terminal gate.`);
@@ -2231,7 +2269,7 @@ class ZLinkFrameworkRuntimeHost {
2231
2269
  const resolver = authority === undefined
2232
2270
  ? legacy
2233
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) => {
2234
- 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) &&
2235
2273
  candidate.lifecycleGeneration === expectedLifecycleGeneration);
2236
2274
  return descriptor?.state;
2237
2275
  });
@@ -2282,12 +2320,13 @@ function hasExactPeerReadiness(descriptors, local, peers) {
2282
2320
  replacementDescriptors.some((descriptor) => peers.some((peer) => peer.routingId !== null &&
2283
2321
  String(peer.routingId) === String(descriptor.rid) &&
2284
2322
  peer.lifecycleGeneration === descriptor.lifecycleGeneration &&
2285
- peer.state === 3)));
2323
+ peer.state === service_runtime_contracts_1.MeshPeerRuntimeState.Serving)));
2286
2324
  }
2287
2325
  var actor_transfer_authority_runtime_2 = require("./actor-transfer-authority-runtime");
2288
2326
  Object.defineProperty(exports, "ZLinkActorTransferAuthorityRuntime", { enumerable: true, get: function () { return actor_transfer_authority_runtime_2.ZLinkActorTransferAuthorityRuntime; } });
2289
2327
  Object.defineProperty(exports, "transferIdString", { enumerable: true, get: function () { return actor_transfer_authority_runtime_2.transferIdString; } });
2290
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; } });
2291
2330
  Object.defineProperty(exports, "ZLinkRetiringRollbackError", { enumerable: true, get: function () { return route_mesh_runtime_2.ZLinkRetiringRollbackError; } });
2292
2331
  Object.defineProperty(exports, "ZLinkRouteMeshRuntimeCoordinator", { enumerable: true, get: function () { return route_mesh_runtime_2.ZLinkRouteMeshRuntimeCoordinator; } });
2293
2332
  var service_relocation_host_runtime_2 = require("./service-relocation-host-runtime");
@@ -2301,7 +2340,7 @@ async function waitForForcedSessionNotification(operation) {
2301
2340
  return;
2302
2341
  let timeoutHandle;
2303
2342
  const timeout = new Promise((resolve) => {
2304
- timeoutHandle = setTimeout(resolve, 100);
2343
+ timeoutHandle = setTimeout(resolve, HOST_SHUTDOWN_POLL_INTERVAL_MS);
2305
2344
  });
2306
2345
  try {
2307
2346
  await Promise.race([operation.catch(() => undefined), timeout]);
@@ -2330,12 +2369,6 @@ async function awaitWithDrainSignal(operation, signal) {
2330
2369
  });
2331
2370
  });
2332
2371
  }
2333
- class ZLinkDrainingStatePublishError extends Error {
2334
- constructor(cause) {
2335
- super('Failed to publish draining peer rows.', { cause });
2336
- this.name = 'ZLinkDrainingStatePublishError';
2337
- }
2338
- }
2339
2372
  function resolveBackendAdapterFactory(internalOptions) {
2340
2373
  if (typeof internalOptions === 'object' &&
2341
2374
  internalOptions !== null &&
@@ -2465,7 +2498,7 @@ function waitForPlacementReadiness(signal) {
2465
2498
  const timer = setTimeout(() => {
2466
2499
  signal?.removeEventListener('abort', abort);
2467
2500
  resolve();
2468
- }, 10);
2501
+ }, HANDOFF_ACCEPTANCE_POLL_INTERVAL_MS);
2469
2502
  const abort = () => {
2470
2503
  clearTimeout(timer);
2471
2504
  signal?.removeEventListener('abort', abort);
@@ -2503,8 +2536,8 @@ function relocationReason(reason) {
2503
2536
  }
2504
2537
  function rewriteAuthorityPayloadForOwner(payload, owner) {
2505
2538
  const applicationPayload = (0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(payload);
2506
- const rewritten = (0, actors_2.isActorAuthorityPayload)(applicationPayload)
2507
- ? (0, actors_2.rewriteActorAuthorityOwner)(applicationPayload, owner)
2539
+ const rewritten = (0, actors_1.isActorAuthorityPayload)(applicationPayload)
2540
+ ? (0, actors_1.rewriteActorAuthorityOwner)(applicationPayload, owner)
2508
2541
  : ((0, service_authority_payload_codec_1.rewriteServiceAuthorityOwner)(applicationPayload, owner) ?? applicationPayload);
2509
2542
  return (0, service_relocation_runtime_1.replaceServiceRelocationAuthorityApplicationPayload)(payload, rewritten);
2510
2543
  }