@zlink-systems/framework 0.26.0 → 0.28.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 (561) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
  3. package/dist/contracts/Channels/Calls.d.ts +1 -1
  4. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  5. package/dist/contracts/Common/CoreTypes.js +7 -0
  6. package/dist/contracts/Common/index.d.ts +1 -1
  7. package/dist/contracts/Common/index.js +0 -1
  8. package/dist/contracts/Configuration/Builders.d.ts +0 -1
  9. package/dist/contracts/Configuration/Configs.d.ts +0 -1
  10. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  11. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  12. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  13. package/dist/contracts/Configuration/Registration.js +58 -36
  14. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  15. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  16. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  17. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  18. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
  19. package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
  20. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  21. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  22. package/dist/contracts/Handlers/JsonContract.js +10 -4
  23. package/dist/contracts/Locations/Authority.d.ts +1 -1
  24. package/dist/contracts/Locations/Authority.js +3 -2
  25. package/dist/contracts/Locations/Options.js +1 -1
  26. package/dist/contracts/Locations/Stores.d.ts +12 -0
  27. package/dist/contracts/Locations/Stores.js +9 -0
  28. package/dist/contracts/Spots/Contracts.d.ts +2 -2
  29. package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
  30. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
  31. package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
  32. package/dist/internal.d.ts +4 -0
  33. package/dist/internal.js +15 -1
  34. package/dist/nest-integration.d.ts +4 -2
  35. package/dist/nest-integration.js +14 -4
  36. package/dist/runtime/abort.d.ts +1 -0
  37. package/dist/runtime/abort.js +8 -5
  38. package/dist/runtime/activation-admission.d.ts +1 -2
  39. package/dist/runtime/activation-admission.js +2 -6
  40. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  41. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  42. package/dist/runtime/actors/actor-client.d.ts +2 -2
  43. package/dist/runtime/actors/actor-client.js +49 -153
  44. package/dist/runtime/actors/actor-context.d.ts +3 -5
  45. package/dist/runtime/actors/actor-context.js +13 -11
  46. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  47. package/dist/runtime/actors/actor-handoff.js +8 -8
  48. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  49. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  50. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  51. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  52. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  53. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  54. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  55. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  56. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  57. package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
  58. package/dist/runtime/actors/actor-request-deadline.js +6 -0
  59. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  60. package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
  61. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  62. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  63. package/dist/runtime/actors/bound-session-wire.js +2 -7
  64. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  65. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  66. package/dist/runtime/actors/index.d.ts +9 -7
  67. package/dist/runtime/actors/index.js +87 -69
  68. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  69. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  70. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  71. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  72. package/dist/runtime/admission.d.ts +2 -0
  73. package/dist/runtime/admission.js +7 -1
  74. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  75. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  76. package/dist/runtime/backend/contracts/index.d.ts +7 -27
  77. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  78. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  79. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  80. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
  81. package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
  82. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  83. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
  84. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  85. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  86. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  87. package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
  88. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  89. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  90. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  91. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  92. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  93. package/dist/runtime/backend/runtime-values.js +2 -0
  94. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  95. package/dist/runtime/channels/channel-clients.js +73 -59
  96. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  97. package/dist/runtime/channels/channel-envelope.d.ts +1 -1
  98. package/dist/runtime/channels/channel-envelope.js +51 -39
  99. package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
  100. package/dist/runtime/channels/channel-outbound-operations.js +25 -42
  101. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  102. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  103. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  104. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  105. package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
  106. package/dist/runtime/channels/channel-runtime-manager.js +13 -10
  107. package/dist/runtime/channels/channel-socket-options.js +3 -12
  108. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  109. package/dist/runtime/channels/channel-socket-registry.js +240 -177
  110. package/dist/runtime/channels/channel-transports.d.ts +21 -31
  111. package/dist/runtime/channels/channel-transports.js +80 -62
  112. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  113. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  114. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  115. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  116. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  117. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  118. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  119. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  120. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  121. package/dist/runtime/channels/local-spot-route-transport.js +1 -3
  122. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
  123. package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
  124. package/dist/runtime/channels/source-spot-router.d.ts +1 -1
  125. package/dist/runtime/channels/source-spot-router.js +2 -4
  126. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  127. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  128. package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
  129. package/dist/runtime/channels/spot-node-route-transport.js +5 -5
  130. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
  131. package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
  132. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
  133. package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
  134. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  135. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  136. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  137. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  138. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  139. package/dist/runtime/diagnostics/flow-context.js +16 -2
  140. package/dist/runtime/diagnostics/index.d.ts +4 -2
  141. package/dist/runtime/diagnostics/index.js +14 -4
  142. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  143. package/dist/runtime/diagnostics/message-flow.js +10 -19
  144. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  145. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  146. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  147. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  148. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  149. package/dist/runtime/disposal.d.ts +5 -0
  150. package/dist/runtime/disposal.js +22 -0
  151. package/dist/runtime/execution/index.d.ts +12 -9
  152. package/dist/runtime/execution/index.js +58 -14
  153. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  154. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  155. package/dist/runtime/execution/state-lane.d.ts +8 -1
  156. package/dist/runtime/execution/state-lane.js +118 -3
  157. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  158. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  159. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  160. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  161. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  162. package/dist/runtime/foundation/operation-identity.js +9 -5
  163. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  164. package/dist/runtime/foundation/operation-registry.js +34 -44
  165. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  166. package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
  167. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  168. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  169. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  170. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  171. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  172. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  173. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  174. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  175. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  176. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  177. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  178. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  179. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  180. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  181. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  182. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  183. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  184. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  185. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  186. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  187. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  188. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  189. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  190. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  191. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  192. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  193. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  194. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  195. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  196. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  197. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  198. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  199. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  200. package/dist/runtime/framework-errors-internal.js +343 -122
  201. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  202. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  203. package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
  204. package/dist/runtime/host/actor-packet-relay.js +54 -99
  205. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  206. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  207. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  208. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  209. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  210. package/dist/runtime/host/application-job-queue.js +16 -33
  211. package/dist/runtime/host/bound-session-relay.js +1 -1
  212. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  213. package/dist/runtime/host/index.d.ts +14 -13
  214. package/dist/runtime/host/index.js +190 -171
  215. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  216. package/dist/runtime/host/instance-activation-authority.js +17 -45
  217. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  218. package/dist/runtime/host/location-runtime-owner.js +2 -2
  219. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  220. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  221. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  222. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  223. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  224. package/dist/runtime/host/remote-bound-session-relay.js +15 -28
  225. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  226. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  227. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  228. package/dist/runtime/host/runtime-shutdown.js +18 -21
  229. package/dist/runtime/host/service-relocation-control.js +6 -1
  230. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  231. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  232. package/dist/runtime/host/spot-address-transport.d.ts +3 -12
  233. package/dist/runtime/host/spot-address-transport.js +78 -220
  234. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  235. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  236. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  237. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  238. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  239. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  240. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  241. package/dist/runtime/locations/authority-key-codec.js +4 -3
  242. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  243. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  244. package/dist/runtime/locations/creation-operation-id.js +6 -4
  245. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  246. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  247. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  248. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  249. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  250. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  251. package/dist/runtime/locations/key-codec.js +3 -2
  252. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  253. package/dist/runtime/locations/lease-tracker.js +7 -11
  254. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  255. package/dist/runtime/locations/lifecycle.js +2 -31
  256. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  257. package/dist/runtime/locations/location-store-failure.js +7 -0
  258. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  259. package/dist/runtime/locations/location-store-pages.js +13 -0
  260. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  261. package/dist/runtime/locations/location-store-repository.js +309 -336
  262. package/dist/runtime/locations/relocation-blob.js +18 -5
  263. package/dist/runtime/locations/resolvers.d.ts +5 -5
  264. package/dist/runtime/locations/resolvers.js +37 -28
  265. package/dist/runtime/locations/runtime.d.ts +5 -4
  266. package/dist/runtime/locations/runtime.js +123 -92
  267. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  268. package/dist/runtime/locations/spot-location-claims.js +42 -1
  269. package/dist/runtime/messaging/payload-codec.js +26 -20
  270. package/dist/runtime/messaging/request-deadline.d.ts +3 -0
  271. package/dist/runtime/messaging/request-deadline.js +39 -0
  272. package/dist/runtime/messaging/submission-result.d.ts +4 -0
  273. package/dist/runtime/messaging/submission-result.js +56 -1
  274. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  275. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  276. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  277. package/dist/runtime/spots/index.d.ts +14 -20
  278. package/dist/runtime/spots/index.js +302 -176
  279. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  280. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  281. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  282. package/dist/runtime/spots/spot-activation-state.js +2 -2
  283. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  284. package/dist/runtime/spots/spot-activation.js +49 -32
  285. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  286. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  287. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  288. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  289. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  290. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  291. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  292. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  293. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  294. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  295. package/dist/runtime/spots/spot-context.d.ts +2 -2
  296. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  297. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  298. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  299. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  300. package/dist/runtime/spots/spot-manager-public.js +5 -4
  301. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  302. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  303. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  304. package/dist/runtime/spots/spot-outbound.d.ts +7 -8
  305. package/dist/runtime/spots/spot-outbound.js +21 -23
  306. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  307. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  308. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  309. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  310. package/dist/runtime/spots/spot-route-replies.js +3 -1
  311. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  312. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  313. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  314. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  315. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  316. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  317. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  318. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  319. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  320. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  321. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  322. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  323. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  324. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  325. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
  326. package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
  327. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  328. package/dist/runtime/streams/bound-session-service.js +12 -2
  329. package/dist/runtime/streams/index.d.ts +16 -17
  330. package/dist/runtime/streams/index.js +22 -23
  331. package/dist/runtime/streams/managed-stream.d.ts +5 -2
  332. package/dist/runtime/streams/managed-stream.js +20 -13
  333. package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
  334. package/dist/runtime/streams/protocol.d.ts +6 -33
  335. package/dist/runtime/streams/protocol.js +38 -110
  336. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  337. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  338. package/dist/runtime/streams/session-calls.d.ts +6 -8
  339. package/dist/runtime/streams/session-calls.js +6 -22
  340. package/dist/runtime/streams/session-context.d.ts +10 -10
  341. package/dist/runtime/streams/session-context.js +25 -10
  342. package/dist/runtime/streams/session-requests.js +2 -1
  343. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  344. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  345. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  346. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  347. package/dist/runtime/workers/index.d.ts +2 -2
  348. package/dist/runtime/workers/index.js +5 -4
  349. package/package.json +3 -3
  350. package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
  351. package/src/contracts/Channels/Calls.ts +1 -1
  352. package/src/contracts/Common/CoreTypes.ts +7 -0
  353. package/src/contracts/Common/index.ts +1 -1
  354. package/src/contracts/Configuration/Builders.ts +0 -1
  355. package/src/contracts/Configuration/Configs.ts +0 -1
  356. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  357. package/src/contracts/Configuration/Registration.ts +92 -48
  358. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  359. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
  360. package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
  361. package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
  362. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  363. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  364. package/src/contracts/Handlers/JsonContract.ts +14 -4
  365. package/src/contracts/Locations/Authority.ts +7 -3
  366. package/src/contracts/Locations/Options.ts +1 -1
  367. package/src/contracts/Locations/Stores.ts +14 -0
  368. package/src/contracts/Spots/Contracts.ts +2 -2
  369. package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
  370. package/src/contracts/Streams/IZLinkSession.ts +2 -3
  371. package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
  372. package/src/internal.ts +14 -0
  373. package/src/nest-integration.ts +28 -10
  374. package/src/runtime/abort.ts +6 -5
  375. package/src/runtime/activation-admission.ts +2 -8
  376. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  377. package/src/runtime/actors/actor-client.ts +85 -218
  378. package/src/runtime/actors/actor-context.ts +39 -33
  379. package/src/runtime/actors/actor-handoff.ts +24 -22
  380. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  381. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  382. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  383. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  384. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  385. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  386. package/src/runtime/actors/actor-request-deadline.ts +4 -0
  387. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  388. package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
  389. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  390. package/src/runtime/actors/bound-session-wire.ts +2 -8
  391. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  392. package/src/runtime/actors/index.ts +100 -79
  393. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  394. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  395. package/src/runtime/admission.ts +8 -1
  396. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  397. package/src/runtime/backend/contracts/index.ts +14 -37
  398. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  399. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  400. package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
  401. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
  402. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  403. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  404. package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
  405. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  406. package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
  407. package/src/runtime/backend/raw-binding-port.ts +1 -1
  408. package/src/runtime/backend/runtime-values.ts +4 -1
  409. package/src/runtime/channels/channel-clients.ts +139 -102
  410. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  411. package/src/runtime/channels/channel-envelope.ts +74 -57
  412. package/src/runtime/channels/channel-outbound-operations.ts +40 -55
  413. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  414. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  415. package/src/runtime/channels/channel-runtime-manager.ts +12 -30
  416. package/src/runtime/channels/channel-socket-options.ts +8 -15
  417. package/src/runtime/channels/channel-socket-registry.ts +291 -196
  418. package/src/runtime/channels/channel-transports.ts +168 -145
  419. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  420. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  421. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  422. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  423. package/src/runtime/channels/local-spot-route-transport.ts +1 -5
  424. package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
  425. package/src/runtime/channels/source-spot-router.ts +2 -9
  426. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  427. package/src/runtime/channels/spot-node-route-transport.ts +7 -9
  428. package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
  429. package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
  430. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  431. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  432. package/src/runtime/diagnostics/flow-context.ts +16 -2
  433. package/src/runtime/diagnostics/index.ts +27 -17
  434. package/src/runtime/diagnostics/message-flow.ts +15 -25
  435. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  436. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  437. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  438. package/src/runtime/disposal.ts +19 -0
  439. package/src/runtime/execution/index.ts +60 -20
  440. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  441. package/src/runtime/execution/state-lane.ts +142 -4
  442. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  443. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  444. package/src/runtime/foundation/operation-identity.ts +11 -5
  445. package/src/runtime/foundation/operation-registry.ts +33 -50
  446. package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
  447. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  448. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  449. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  450. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  451. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  452. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  453. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  454. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  455. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  456. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  457. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  458. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  459. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  460. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  461. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  462. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  463. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  464. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  465. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  466. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  467. package/src/runtime/framework-errors-internal.ts +380 -134
  468. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  469. package/src/runtime/host/actor-packet-relay.ts +63 -160
  470. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  471. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  472. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  473. package/src/runtime/host/application-job-queue.ts +28 -34
  474. package/src/runtime/host/bound-session-relay.ts +1 -2
  475. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  476. package/src/runtime/host/index.ts +327 -320
  477. package/src/runtime/host/instance-activation-authority.ts +89 -109
  478. package/src/runtime/host/location-runtime-owner.ts +4 -2
  479. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  480. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  481. package/src/runtime/host/remote-bound-session-relay.ts +16 -57
  482. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  483. package/src/runtime/host/runtime-shutdown.ts +17 -21
  484. package/src/runtime/host/service-relocation-control.ts +14 -1
  485. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  486. package/src/runtime/host/spot-address-transport.ts +175 -356
  487. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  488. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  489. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  490. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  491. package/src/runtime/locations/authority-key-codec.ts +7 -3
  492. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  493. package/src/runtime/locations/creation-operation-id.ts +6 -3
  494. package/src/runtime/locations/domain-store-contract.ts +12 -3
  495. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  496. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  497. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  498. package/src/runtime/locations/key-codec.ts +3 -2
  499. package/src/runtime/locations/lease-tracker.ts +8 -14
  500. package/src/runtime/locations/lifecycle.ts +13 -43
  501. package/src/runtime/locations/location-store-failure.ts +4 -0
  502. package/src/runtime/locations/location-store-pages.ts +18 -0
  503. package/src/runtime/locations/location-store-repository.ts +457 -482
  504. package/src/runtime/locations/relocation-blob.ts +17 -6
  505. package/src/runtime/locations/resolvers.ts +75 -49
  506. package/src/runtime/locations/runtime.ts +220 -110
  507. package/src/runtime/locations/spot-location-claims.ts +58 -1
  508. package/src/runtime/messaging/payload-codec.ts +35 -24
  509. package/src/runtime/messaging/request-deadline.ts +58 -0
  510. package/src/runtime/messaging/submission-result.ts +72 -2
  511. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  512. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  513. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  514. package/src/runtime/spots/index.ts +433 -229
  515. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  516. package/src/runtime/spots/spot-activation-state.ts +2 -2
  517. package/src/runtime/spots/spot-activation.ts +67 -37
  518. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  519. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  520. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  521. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  522. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  523. package/src/runtime/spots/spot-context.ts +3 -3
  524. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  525. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  526. package/src/runtime/spots/spot-manager-public.ts +21 -17
  527. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  528. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  529. package/src/runtime/spots/spot-outbound.ts +59 -47
  530. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  531. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  532. package/src/runtime/spots/spot-route-replies.ts +6 -4
  533. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  534. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  535. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  536. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  537. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  538. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  539. package/src/runtime/spots/spot-timer.ts +3 -2
  540. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  541. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  542. package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
  543. package/src/runtime/streams/bound-session-service.ts +22 -2
  544. package/src/runtime/streams/index.ts +78 -68
  545. package/src/runtime/streams/managed-stream.ts +32 -23
  546. package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
  547. package/src/runtime/streams/protocol.ts +34 -88
  548. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  549. package/src/runtime/streams/session-calls.ts +11 -36
  550. package/src/runtime/streams/session-context.ts +60 -25
  551. package/src/runtime/streams/session-requests.ts +2 -1
  552. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  553. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  554. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  555. package/src/runtime/workers/index.ts +13 -12
  556. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  557. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  558. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  559. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  560. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  561. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,18 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZLinkRetiringRollbackError = exports.ZLinkRouteMeshRuntimeCoordinator = void 0;
4
- const framework_errors_internal_1 = require("../framework-errors-internal");
3
+ exports.ZLinkRetiringRollbackError = exports.ZLinkDrainingStatePublishError = exports.ZLinkRouteMeshRuntimeCoordinator = void 0;
5
4
  const contracts_1 = require("../../contracts");
6
- const runtime_observation_queue_1 = require("../diagnostics/runtime-observation-queue");
5
+ const RegistrationBuilderPolicy_1 = require("../../contracts/Configuration/RegistrationBuilderPolicy");
7
6
  const abort_1 = require("../abort");
7
+ const diagnostics_1 = require("../diagnostics");
8
+ const runtime_observation_queue_1 = require("../diagnostics/runtime-observation-queue");
9
+ const state_lane_1 = require("../execution/state-lane");
8
10
  const runtime_state_projections_1 = require("../foundation/runtime-state-projections");
9
- const contracts_2 = require("../../contracts");
11
+ const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
12
+ const framework_errors_internal_1 = require("../framework-errors-internal");
13
+ const runtime_1 = require("../locations/runtime");
14
+ const DEFAULT_ROUTE_MESH_DRAIN_TIMEOUT_MS = 30_000;
15
+ const MAX_ROUTE_MESH_OBSERVATION_WAIT_MS = 1000;
16
+ const PLACEMENT_OBSERVATION_INTERVAL_MS = 100;
10
17
  class ZLinkRouteMeshRuntimeCoordinator {
11
18
  options;
12
19
  states = new Map();
13
- placementFingerprints = new Map();
14
- peerFingerprints = new Map();
15
- locationStoreHealthFingerprints = new Map();
16
20
  placementObserver;
17
21
  hostOperation;
18
22
  shutdownOperation;
@@ -23,7 +27,6 @@ class ZLinkRouteMeshRuntimeCoordinator {
23
27
  options.admission.register(meshName);
24
28
  this.states.set(meshName, {
25
29
  state: contracts_1.ZLinkTopologyState.Starting,
26
- sequence: 0n,
27
30
  waiters: [],
28
31
  observers: new Set()
29
32
  });
@@ -37,6 +40,12 @@ class ZLinkRouteMeshRuntimeCoordinator {
37
40
  }
38
41
  }
39
42
  snapshot(meshName) {
43
+ const published = this.publishCurrentStatus(meshName, this.requireState(meshName));
44
+ if (published === undefined)
45
+ throw routeNotFound(meshName);
46
+ return published;
47
+ }
48
+ buildSnapshot(meshName, sequence) {
40
49
  const drain = this.requireState(meshName);
41
50
  const node = this.options.meshNode(meshName);
42
51
  if (node === undefined)
@@ -74,7 +83,7 @@ class ZLinkRouteMeshRuntimeCoordinator {
74
83
  const channels = Object.entries(this.options.meshOptions.get(meshName)?.meshChannels ?? {}).map(([channelName, channel]) => {
75
84
  const readyMemberCount = BigInt(peerChannels.filter((entry, index) => peers[index]?.state === contracts_1.ZLinkPeerState.Ready &&
76
85
  entry.names.some((name, channelIndex) => name === channelName && (entry.weights[channelIndex] ?? 0) > 0)).length);
77
- const localWeight = descriptor?.channelWeights[channelName] ?? channel.weight ?? 100;
86
+ const localWeight = descriptor?.channelWeights[channelName] ?? channel.weight ?? RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT;
78
87
  const readyTargetCount = Number(readyMemberCount) + (channel.server === true && localWeight > 0 ? 1 : 0);
79
88
  return { channelName, isReady: readyTargetCount > 0, readyTargetCount };
80
89
  });
@@ -89,14 +98,14 @@ class ZLinkRouteMeshRuntimeCoordinator {
89
98
  ? contracts_1.ZLinkTopologyState.Degraded
90
99
  : hostTopologyState;
91
100
  const hostReady = (0, runtime_state_projections_1.runtimeStateIsReady)(hostState);
92
- const objectRole = descriptor?.objectRole ?? contracts_2.ZLinkObjectRole.None;
101
+ const objectRole = descriptor?.objectRole ?? contracts_1.ZLinkObjectRole.None;
93
102
  const placementWeight = descriptor?.placementWeight ?? 0;
94
103
  const capacityAvailable = descriptor !== undefined &&
95
104
  populationCapacity !== undefined &&
96
105
  (this.options.activationAdmission?.hasHeadroom(meshName) ?? true) &&
97
106
  (hasRemainingCapacity(populationCapacity.actors) ||
98
107
  hasRemainingCapacity(populationCapacity.spots));
99
- const placementAvailable = objectRole === contracts_2.ZLinkObjectRole.Server &&
108
+ const placementAvailable = objectRole === contracts_1.ZLinkObjectRole.Server &&
100
109
  placementWeight > 0 &&
101
110
  capacityAvailable &&
102
111
  locationStoreHealthy &&
@@ -113,113 +122,51 @@ class ZLinkRouteMeshRuntimeCoordinator {
113
122
  isAvailable: placementAvailable,
114
123
  activeActorCount: populationCapacity?.actors.active ?? 0,
115
124
  activeSpotCount: populationCapacity?.spots.active ?? 0,
116
- unavailableReason: placementAvailable
117
- ? undefined
118
- : localTopologyState !== contracts_1.ZLinkTopologyState.Ready
119
- ? contracts_1.ZLinkTopologyReason.RuntimeNotReady
120
- : !locationStoreHealthy
121
- ? contracts_1.ZLinkTopologyReason.LocationUnavailable
122
- : placementWeight <= 0
123
- ? contracts_1.ZLinkTopologyReason.NoReadyTarget
124
- : contracts_1.ZLinkTopologyReason.CapacityExceeded
125
+ unavailableReason: placementUnavailableReason(placementAvailable, hostState, locationStoreHealthy)
125
126
  },
126
- sequence: drain.sequence > status.lastChangedMs ? drain.sequence : status.lastChangedMs,
127
+ sequence,
127
128
  observedAt: new Date()
128
129
  };
129
- drain.lastSnapshot = snapshot;
130
130
  return snapshot;
131
131
  }
132
132
  observe(meshName, capacity = runtime_observation_queue_1.ZLINK_DEFAULT_TERMINAL_OBSERVATION_CAPACITY, signal) {
133
133
  const state = this.requireState(meshName);
134
134
  if (!Number.isInteger(capacity) || capacity <= 0)
135
135
  throw new RangeError('Observer capacity must be positive.');
136
- if (state.observers.size === 0)
137
- this.seedPlacementFingerprint(meshName);
136
+ const snapshot = this.snapshot(meshName);
138
137
  const queue = new runtime_observation_queue_1.RuntimeEventQueue(capacity, signal);
138
+ state.observers.add(queue);
139
+ this.startPlacementObserver();
139
140
  queue.onClose(() => {
140
141
  state.observers.delete(queue);
141
142
  this.stopPlacementObserverIfIdle();
142
143
  });
143
- this.snapshot(meshName);
144
- state.observers.add(queue);
145
- this.startPlacementObserver();
144
+ this.publishStatus(meshName, queue, snapshot);
146
145
  return queue;
147
146
  }
148
147
  isReady(meshName) {
149
148
  return this.snapshot(meshName).isReady;
150
149
  }
151
150
  hostStateChanged() {
152
- for (const [meshName, state] of this.states) {
153
- state.sequence += 1n;
154
- let snapshot;
155
- try {
156
- snapshot = this.snapshot(meshName);
157
- }
158
- catch {
159
- continue;
160
- }
161
- for (const observer of state.observers)
162
- observer.push(snapshot, meshName);
163
- }
151
+ for (const [meshName, state] of this.states)
152
+ this.publishCurrentStatus(meshName, state);
164
153
  }
165
154
  stopObservers() {
166
155
  for (const [meshName, state] of this.states) {
167
- state.sequence += 1n;
168
- let terminal;
169
- try {
170
- const current = this.snapshot(meshName);
171
- const terminalSequence = current.sequence >= state.sequence ? current.sequence + 1n : state.sequence;
172
- state.sequence = terminalSequence;
173
- terminal = {
174
- ...current,
175
- state: contracts_1.ZLinkTopologyState.Stopped,
176
- isReady: false,
177
- channels: current.channels.map((channel) => ({
178
- ...channel,
179
- isReady: false
180
- })),
181
- placement: {
182
- ...current.placement,
183
- isAvailable: false,
184
- unavailableReason: contracts_1.ZLinkTopologyReason.RuntimeNotReady
185
- },
186
- sequence: terminalSequence,
187
- observedAt: new Date()
188
- };
189
- }
190
- catch {
191
- const current = state.lastSnapshot;
192
- if (current !== undefined) {
193
- const terminalSequence = current.sequence >= state.sequence ? current.sequence + 1n : state.sequence;
194
- state.sequence = terminalSequence;
195
- terminal = {
196
- ...current,
197
- state: contracts_1.ZLinkTopologyState.Stopped,
198
- isReady: false,
199
- channels: current.channels.map((channel) => ({
200
- ...channel,
201
- isReady: false
202
- })),
203
- placement: {
204
- ...current.placement,
205
- isAvailable: false,
206
- unavailableReason: contracts_1.ZLinkTopologyReason.RuntimeNotReady
207
- },
208
- sequence: terminalSequence,
209
- observedAt: new Date()
210
- };
211
- }
212
- }
213
- for (const observer of [...state.observers]) {
214
- if (terminal === undefined)
156
+ const published = state.lastSnapshot;
157
+ if (published !== undefined && (0, runtime_state_projections_1.topologyObservationIsTerminal)(published.state))
158
+ continue;
159
+ const current = published ?? this.publishCurrentStatus(meshName, state);
160
+ if (current === undefined) {
161
+ for (const observer of [...state.observers])
215
162
  observer.close();
216
- else
217
- observer.seal(terminal, meshName);
218
163
  }
219
- state.observers.clear();
164
+ else {
165
+ this.publishSnapshot(meshName, state, terminalSnapshot(current, contracts_1.ZLinkTopologyState.Stopped));
166
+ }
220
167
  }
221
168
  }
222
- drain(meshName, deadlineMs = 30_000, signal) {
169
+ drain(meshName, deadlineMs = DEFAULT_ROUTE_MESH_DRAIN_TIMEOUT_MS, signal) {
223
170
  const state = this.requireState(meshName);
224
171
  if (this.states.size > 1)
225
172
  return Promise.reject(multiMeshDrainError());
@@ -237,7 +184,7 @@ class ZLinkRouteMeshRuntimeCoordinator {
237
184
  new Promise((resolve) => state.waiters.push(resolve));
238
185
  return waitForOperation(operation, signal);
239
186
  }
240
- drainHost(deadlineMs = 30_000, signal) {
187
+ drainHost(deadlineMs = DEFAULT_ROUTE_MESH_DRAIN_TIMEOUT_MS, signal) {
241
188
  if (!Number.isFinite(deadlineMs) || deadlineMs <= 0) {
242
189
  return Promise.reject(new TypeError('Drain deadlineMs must be greater than zero.'));
243
190
  }
@@ -250,12 +197,12 @@ class ZLinkRouteMeshRuntimeCoordinator {
250
197
  }
251
198
  return waitForOperation(this.hostOperation, signal);
252
199
  }
253
- shutdownHost(deadline = 30_000, signal, remainingTimeoutMs) {
200
+ shutdownHost(deadline, signal) {
254
201
  if (typeof deadline === 'number' && (!Number.isFinite(deadline) || deadline <= 0)) {
255
202
  return Promise.reject(new TypeError('Shutdown deadlineMs must be greater than zero.'));
256
203
  }
257
204
  if (this.shutdownOperation === undefined) {
258
- const operation = this.performHostShutdown(deadline, remainingTimeoutMs);
205
+ const operation = this.performHostShutdown(deadline, signal);
259
206
  this.shutdownOperation = operation;
260
207
  for (const state of this.states.values())
261
208
  state.operation ??= operation;
@@ -280,7 +227,7 @@ class ZLinkRouteMeshRuntimeCoordinator {
280
227
  // A failed response can still follow a committed Store write. Restore
281
228
  // every attempted descriptor before the host reports a reversible block.
282
229
  const rollback = new AbortController();
283
- const rollbackTimer = setTimeout(() => rollback.abort((0, abort_1.createDeadlineExceededError)('Retire descriptor rollback deadline exceeded.')), Math.min(deadlineMs, 1000));
230
+ const rollbackTimer = setTimeout(() => rollback.abort((0, abort_1.createDeadlineExceededError)('Retire descriptor rollback deadline exceeded.')), Math.min(deadlineMs, MAX_ROUTE_MESH_OBSERVATION_WAIT_MS));
284
231
  let rollbackFailed = false;
285
232
  for (const meshName of attempted.reverse()) {
286
233
  try {
@@ -318,14 +265,14 @@ class ZLinkRouteMeshRuntimeCoordinator {
318
265
  }
319
266
  catch (error) {
320
267
  const classified = drainFailureReason(error);
321
- if (process.env.ZLINK_DEBUG_FRAMEWORK_RELOCATION === '1') {
268
+ if ((0, diagnostics_1.isRelocationDebugEnabled)()) {
322
269
  console.error('[zlink.runtime.relocation.drain_failed]', classified, error);
323
270
  }
324
271
  const reason = deadline.signal.aborted
325
272
  ? 'deadline_exceeded'
326
273
  : classified;
327
274
  const rollback = new AbortController();
328
- const rollbackTimer = setTimeout(() => rollback.abort((0, abort_1.createDeadlineExceededError)('Relocation descriptor rollback deadline exceeded.')), Math.min(Math.max(1, deadlineMs), 1000));
275
+ const rollbackTimer = setTimeout(() => rollback.abort((0, abort_1.createDeadlineExceededError)('Relocation descriptor rollback deadline exceeded.')), Math.min(Math.max(1, deadlineMs), MAX_ROUTE_MESH_OBSERVATION_WAIT_MS));
329
276
  try {
330
277
  await Promise.all(entries.map(([meshName]) => this.options.rollbackRetiring(meshName, rollback.signal)));
331
278
  }
@@ -432,29 +379,23 @@ class ZLinkRouteMeshRuntimeCoordinator {
432
379
  }
433
380
  return result;
434
381
  }
435
- async performHostShutdown(cleanupDeadline, remainingTimeoutMs) {
436
- const timeoutMs = Math.max(0, remainingTimeoutMs ??
437
- (cleanupDeadline instanceof Date ? cleanupDeadline.getTime() - Date.now() : cleanupDeadline));
382
+ async performHostShutdown(cleanupDeadline, signal) {
438
383
  const deadlineAt = cleanupDeadline instanceof Date ? cleanupDeadline : new Date(Date.now() + cleanupDeadline);
439
384
  const entries = [...this.states.entries()];
440
- if (entries.length === 0)
441
- return { kind: 'drained' };
442
385
  for (const [, state] of entries) {
443
386
  state.deadline = deadlineAt;
444
387
  }
445
- const deadline = new AbortController();
446
- const timer = setTimeout(() => deadline.abort((0, abort_1.createDeadlineExceededError)('Shutdown deadline exceeded.')), timeoutMs);
447
388
  let result;
448
389
  try {
449
390
  for (const [meshName, state] of entries) {
450
391
  this.options.admission.seal(meshName, framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RuntimeShutdown);
451
392
  this.transition(meshName, state, contracts_1.ZLinkTopologyState.Stopping);
452
393
  }
453
- await Promise.all(entries.map(([meshName]) => this.options.publishDraining(meshName, deadline.signal)));
454
- await this.options.publishHostDraining(deadline.signal);
455
- await Promise.all(entries.map(([meshName]) => this.options.admission.awaitZero(meshName, deadline.signal)));
456
- await Promise.all(entries.map(([meshName]) => this.options.shutdownResources?.(meshName, deadline.signal)));
457
- await this.options.cleanupHostResources(deadline.signal);
394
+ await Promise.all(entries.map(([meshName]) => this.options.publishDraining(meshName, signal)));
395
+ await this.options.publishHostDraining(signal);
396
+ await Promise.all(entries.map(([meshName]) => this.options.admission.awaitZero(meshName, signal)));
397
+ await Promise.all(entries.map(([meshName]) => this.options.shutdownResources?.(meshName, signal)));
398
+ await this.options.cleanupHostResources(signal);
458
399
  result = { kind: 'drained' };
459
400
  for (const [meshName, state] of entries) {
460
401
  this.transition(meshName, state, contracts_1.ZLinkTopologyState.Stopped);
@@ -464,7 +405,7 @@ class ZLinkRouteMeshRuntimeCoordinator {
464
405
  const classified = drainFailureReason(error);
465
406
  const reason = classified !== 'teardown_failed'
466
407
  ? classified
467
- : deadline.signal.aborted
408
+ : signal.aborted
468
409
  ? 'deadline_exceeded'
469
410
  : classified;
470
411
  await Promise.all(entries.map(([meshName]) => this.options.forceStopResources(meshName).catch(() => undefined)));
@@ -473,9 +414,6 @@ class ZLinkRouteMeshRuntimeCoordinator {
473
414
  this.transition(meshName, state, contracts_1.ZLinkTopologyState.Failed);
474
415
  }
475
416
  }
476
- finally {
477
- clearTimeout(timer);
478
- }
479
417
  for (const [, state] of entries) {
480
418
  state.result = result;
481
419
  for (const resolve of state.waiters)
@@ -488,112 +426,65 @@ class ZLinkRouteMeshRuntimeCoordinator {
488
426
  if (state.state === next)
489
427
  return;
490
428
  state.state = next;
491
- state.sequence += 1n;
492
- let current;
493
- let snapshotAvailable = false;
494
- try {
495
- current = this.snapshot(meshName);
496
- snapshotAvailable = true;
497
- }
498
- catch {
499
- current = state.lastSnapshot;
500
- }
501
- const terminal = next === contracts_1.ZLinkTopologyState.Stopped || next === contracts_1.ZLinkTopologyState.Failed;
502
- if (current !== undefined) {
503
- if (terminal) {
504
- const terminalSequence = current.sequence >= state.sequence ? current.sequence + 1n : state.sequence;
505
- state.sequence = terminalSequence;
506
- const terminalStatus = {
507
- ...current,
508
- state: next,
509
- isReady: false,
510
- channels: current.channels.map((channel) => ({
511
- ...channel,
512
- isReady: false
513
- })),
514
- placement: {
515
- ...current.placement,
516
- isAvailable: false,
517
- unavailableReason: contracts_1.ZLinkTopologyReason.RuntimeNotReady
518
- },
519
- sequence: terminalSequence,
520
- observedAt: new Date()
521
- };
522
- for (const observer of state.observers)
523
- observer.seal(terminalStatus, meshName);
524
- }
525
- else if (snapshotAvailable) {
526
- for (const observer of state.observers)
527
- observer.push(current, meshName);
528
- }
529
- }
530
- if (terminal) {
531
- if (current === undefined) {
532
- for (const observer of state.observers)
533
- observer.close();
534
- }
535
- state.observers.clear();
536
- this.stopPlacementObserverIfIdle();
429
+ const published = this.publishCurrentStatus(meshName, state);
430
+ if ((0, runtime_state_projections_1.topologyObservationIsTerminal)(next) && published === undefined) {
431
+ for (const observer of [...state.observers])
432
+ observer.close();
537
433
  }
538
434
  }
539
- seedPlacementFingerprint(meshName) {
540
- this.locationStoreHealthFingerprints.set(meshName, this.options.isLocationStoreHealthy?.() ?? true);
541
- const descriptor = this.options.meshNodeDescriptor?.(meshName);
542
- if (descriptor !== undefined) {
543
- this.placementFingerprints.set(meshName, placementFingerprint(descriptor));
435
+ publishCurrentStatus(meshName, state) {
436
+ const published = state.lastSnapshot;
437
+ if (published !== undefined && (0, runtime_state_projections_1.topologyObservationIsTerminal)(published.state))
438
+ return published;
439
+ const desired = (0, runtime_state_projections_1.topologyObservationIsTerminal)(state.state)
440
+ ? state.state
441
+ : topologyStateForHost(this.options.hostState?.() ?? contracts_1.ZLinkFrameworkRuntimeState.Serving, state.state);
442
+ if (published !== undefined && (0, runtime_state_projections_1.topologyObservationIsTerminal)(desired)) {
443
+ return this.publishSnapshot(meshName, state, terminalSnapshot(published, desired));
444
+ }
445
+ if (this.options.meshNode(meshName) === undefined)
446
+ return undefined;
447
+ const current = this.buildSnapshot(meshName, published?.sequence ?? 0n);
448
+ return this.publishSnapshot(meshName, state, (0, runtime_state_projections_1.topologyObservationIsTerminal)(current.state)
449
+ ? terminalSnapshot(current, current.state)
450
+ : current);
451
+ }
452
+ publishSnapshot(meshName, state, current) {
453
+ const published = state.lastSnapshot;
454
+ if (published !== undefined && samePublicRouteMeshStatus(published, current))
455
+ return published;
456
+ const next = { ...current, sequence: (published?.sequence ?? 0n) + 1n, observedAt: new Date() };
457
+ state.lastSnapshot = next;
458
+ for (const observer of [...state.observers])
459
+ this.publishStatus(meshName, observer, next);
460
+ return next;
461
+ }
462
+ publishStatus(meshName, observer, status) {
463
+ if ((0, runtime_state_projections_1.topologyObservationIsTerminal)(status.state)) {
464
+ observer.seal(status, meshName);
465
+ }
466
+ else {
467
+ observer.push(status, meshName);
544
468
  }
545
- this.peerFingerprints.set(meshName, peerFingerprintMap(this.options.meshNode(meshName)?.peers() ?? []));
546
469
  }
547
470
  startPlacementObserver() {
548
471
  if (this.placementObserver !== undefined)
549
472
  return;
550
- this.placementObserver = setInterval(() => this.observePlacementChanges(), 100);
473
+ this.placementObserver = setInterval(() => this.observePlacementChanges(), PLACEMENT_OBSERVATION_INTERVAL_MS);
551
474
  this.placementObserver.unref();
552
475
  }
553
476
  stopPlacementObserverIfIdle() {
554
- if ([...this.states.values()].some((state) => state.observers.size > 0))
555
- return;
477
+ for (const state of this.states.values()) {
478
+ if (state.observers.size > 0)
479
+ return;
480
+ }
556
481
  if (this.placementObserver !== undefined)
557
482
  clearInterval(this.placementObserver);
558
483
  this.placementObserver = undefined;
559
484
  }
560
485
  observePlacementChanges() {
561
486
  for (const [meshName, state] of this.states) {
562
- if (state.observers.size === 0)
563
- continue;
564
- const locationStoreHealthy = this.options.isLocationStoreHealthy?.() ?? true;
565
- if (locationStoreHealthy !== this.locationStoreHealthFingerprints.get(meshName)) {
566
- this.locationStoreHealthFingerprints.set(meshName, locationStoreHealthy);
567
- state.sequence += 1n;
568
- for (const observer of state.observers) {
569
- observer.push(this.snapshot(meshName), meshName);
570
- }
571
- }
572
- const descriptor = this.options.meshNodeDescriptor?.(meshName);
573
- if (descriptor === undefined)
574
- continue;
575
- const fingerprint = placementFingerprint(descriptor);
576
- const previous = this.placementFingerprints.get(meshName);
577
- this.placementFingerprints.set(meshName, fingerprint);
578
- const node = this.options.meshNode(meshName);
579
- if (previous !== undefined && previous !== fingerprint) {
580
- state.sequence += 1n;
581
- for (const observer of state.observers) {
582
- observer.push(this.snapshot(meshName), meshName);
583
- }
584
- }
585
- const previousPeers = this.peerFingerprints.get(meshName) ?? new Map();
586
- const peers = node?.peers() ?? [];
587
- const nextPeers = peerFingerprintMap(peers);
588
- this.peerFingerprints.set(meshName, nextPeers);
589
- for (const peerRid of new Set([...previousPeers.keys(), ...nextPeers.keys()])) {
590
- if (previousPeers.get(peerRid) === nextPeers.get(peerRid))
591
- continue;
592
- state.sequence += 1n;
593
- for (const observer of state.observers) {
594
- observer.push(this.snapshot(meshName), meshName);
595
- }
596
- }
487
+ this.publishCurrentStatus(meshName, state);
597
488
  }
598
489
  }
599
490
  requireState(meshName) {
@@ -604,6 +495,59 @@ class ZLinkRouteMeshRuntimeCoordinator {
604
495
  }
605
496
  }
606
497
  exports.ZLinkRouteMeshRuntimeCoordinator = ZLinkRouteMeshRuntimeCoordinator;
498
+ function terminalSnapshot(current, state) {
499
+ return {
500
+ ...current,
501
+ state,
502
+ isReady: false,
503
+ channels: current.channels.map((channel) => ({ ...channel, isReady: false })),
504
+ placement: {
505
+ ...current.placement,
506
+ isAvailable: false,
507
+ unavailableReason: contracts_1.ZLinkTopologyReason.RuntimeNotReady
508
+ }
509
+ };
510
+ }
511
+ function samePublicRouteMeshStatus(left, right) {
512
+ return (left.meshName === right.meshName &&
513
+ left.state === right.state &&
514
+ left.isReady === right.isReady &&
515
+ left.readyPeerCount === right.readyPeerCount &&
516
+ left.placement.isAvailable === right.placement.isAvailable &&
517
+ left.placement.activeActorCount === right.placement.activeActorCount &&
518
+ left.placement.activeSpotCount === right.placement.activeSpotCount &&
519
+ left.placement.unavailableReason === right.placement.unavailableReason &&
520
+ left.channels.length === right.channels.length &&
521
+ left.channels.every((channel, index) => {
522
+ const other = right.channels[index];
523
+ return (channel.channelName === other.channelName &&
524
+ channel.isReady === other.isReady &&
525
+ channel.readyTargetCount === other.readyTargetCount);
526
+ }) &&
527
+ left.peers.length === right.peers.length &&
528
+ left.peers.every((peer, index) => {
529
+ const other = right.peers[index];
530
+ return (peer.nodeRid === other.nodeRid &&
531
+ peer.state === other.state &&
532
+ peer.unavailableReason === other.unavailableReason);
533
+ }));
534
+ }
535
+ function placementUnavailableReason(available, hostState, locationStoreHealthy) {
536
+ if (available)
537
+ return undefined;
538
+ switch (hostState) {
539
+ case contracts_1.ZLinkFrameworkRuntimeState.Relocating:
540
+ case contracts_1.ZLinkFrameworkRuntimeState.Relocated:
541
+ case contracts_1.ZLinkFrameworkRuntimeState.Draining:
542
+ return contracts_1.ZLinkTopologyReason.Draining;
543
+ case contracts_1.ZLinkFrameworkRuntimeState.Serving:
544
+ return !locationStoreHealthy
545
+ ? contracts_1.ZLinkTopologyReason.LocationUnavailable
546
+ : contracts_1.ZLinkTopologyReason.CapacityExceeded;
547
+ default:
548
+ return contracts_1.ZLinkTopologyReason.RuntimeNotReady;
549
+ }
550
+ }
607
551
  function topologyStateForHost(state, fallback) {
608
552
  switch (state) {
609
553
  case contracts_1.ZLinkFrameworkRuntimeState.Serving:
@@ -620,44 +564,16 @@ function topologyStateForHost(state, fallback) {
620
564
  return contracts_1.ZLinkTopologyState.Failed;
621
565
  }
622
566
  }
623
- function placementFingerprint(descriptor) {
624
- const spotTypes = [...descriptor.populationCapacity.spotTypes]
625
- .sort((left, right) => {
626
- const kind = left.objectKind.localeCompare(right.objectKind);
627
- return kind !== 0 ? kind : left.stableType.localeCompare(right.stableType);
628
- })
629
- .map((entry) => [
630
- entry.objectKind,
631
- entry.stableType,
632
- entry.active,
633
- entry.reserved,
634
- entry.limit
635
- ]);
636
- return JSON.stringify([
637
- descriptor.objectRole,
638
- descriptor.placementWeight,
639
- descriptor.populationCapacity.actors,
640
- descriptor.populationCapacity.spots,
641
- spotTypes,
642
- descriptor.activationConcurrency,
643
- Object.entries(descriptor.channelWeights).sort(([left], [right]) => left.localeCompare(right))
644
- ]);
645
- }
646
567
  function hasRemainingCapacity(capacity) {
647
568
  return capacity.limit === 0 || capacity.active + (capacity.reserved ?? 0) < capacity.limit;
648
569
  }
649
- function peerFingerprintMap(peers) {
650
- return new Map(peers.map((peer) => [
651
- String(peer.routingId),
652
- JSON.stringify([
653
- peer.lifecycleGeneration.toString(),
654
- peer.descriptorRevision.toString(),
655
- peer.endpoint,
656
- peer.state,
657
- peer.lastError
658
- ])
659
- ]));
570
+ class ZLinkDrainingStatePublishError extends Error {
571
+ constructor(cause) {
572
+ super('Failed to publish draining peer rows.', { cause });
573
+ this.name = 'ZLinkDrainingStatePublishError';
574
+ }
660
575
  }
576
+ exports.ZLinkDrainingStatePublishError = ZLinkDrainingStatePublishError;
661
577
  class ZLinkRetiringRollbackError extends Error {
662
578
  constructor() {
663
579
  super('Retiring descriptor publication could not be rolled back to Serving.');
@@ -673,15 +589,14 @@ function multiMeshDrainError() {
673
589
  }
674
590
  function backendState(state) {
675
591
  switch (state) {
676
- case 1:
592
+ case service_runtime_contracts_1.MeshNodeRuntimeState.Preparing:
677
593
  return contracts_1.ZLinkTopologyState.Starting;
678
- case 2:
679
- case 3:
680
- case 4:
594
+ case service_runtime_contracts_1.MeshNodeRuntimeState.Serving:
681
595
  return contracts_1.ZLinkTopologyState.Ready;
682
- case 5:
596
+ case service_runtime_contracts_1.MeshNodeRuntimeState.Retiring:
597
+ case service_runtime_contracts_1.MeshNodeRuntimeState.Draining:
683
598
  return contracts_1.ZLinkTopologyState.Stopping;
684
- case 6:
599
+ case service_runtime_contracts_1.MeshNodeRuntimeState.Stopped:
685
600
  return contracts_1.ZLinkTopologyState.Stopped;
686
601
  default:
687
602
  return contracts_1.ZLinkTopologyState.Failed;
@@ -689,14 +604,14 @@ function backendState(state) {
689
604
  }
690
605
  function peerState(state) {
691
606
  switch (state) {
692
- case 3:
607
+ case service_runtime_contracts_1.MeshPeerRuntimeState.Serving:
693
608
  return contracts_1.ZLinkPeerState.Ready;
694
- case 4:
609
+ case service_runtime_contracts_1.MeshPeerRuntimeState.Draining:
695
610
  return contracts_1.ZLinkPeerState.Draining;
696
- case 6:
611
+ case service_runtime_contracts_1.MeshPeerRuntimeState.NotRequired:
697
612
  return contracts_1.ZLinkPeerState.NotRequired;
698
- case 1:
699
- case 2:
613
+ case service_runtime_contracts_1.MeshPeerRuntimeState.Connecting:
614
+ case service_runtime_contracts_1.MeshPeerRuntimeState.Preparing:
700
615
  return contracts_1.ZLinkPeerState.Connecting;
701
616
  default:
702
617
  return contracts_1.ZLinkPeerState.NotConnected;
@@ -714,12 +629,16 @@ function peerUnavailableReason(state) {
714
629
  }
715
630
  }
716
631
  function drainFailureReason(error) {
717
- const name = error instanceof Error ? error.name : '';
718
- if (name === 'ZLinkDrainingStatePublishError')
632
+ if ((0, state_lane_1.isStructuralGuardEnabled)()) {
633
+ const pending = (0, state_lane_1.debugPendingWorkNames)();
634
+ if (pending.length > 0)
635
+ console.error('[zlink.runtime.drain.pending]', pending);
636
+ }
637
+ if (error instanceof ZLinkDrainingStatePublishError)
719
638
  return 'drain_state_publish_failed';
720
- if (name === 'ZLinkOwnerCleanupError' ||
639
+ if (error instanceof runtime_1.ZLinkOwnerCleanupError ||
721
640
  (error instanceof AggregateError &&
722
- error.errors.some((nested) => nested instanceof Error && nested.name === 'ZLinkOwnerCleanupError'))) {
641
+ error.errors.some((nested) => nested instanceof runtime_1.ZLinkOwnerCleanupError))) {
723
642
  return 'owner_cleanup_failed';
724
643
  }
725
644
  return 'teardown_failed';
@@ -15,10 +15,12 @@ export interface ZLinkRuntimeStartRollbackParts {
15
15
  readonly spotNodeRuntime?: ZLinkSpotNodeRuntimeManager;
16
16
  readonly channelRuntime?: ZLinkChannelRuntimeManager;
17
17
  readonly ownedStores?: readonly ZLinkRuntimeOwnedStore[];
18
+ readonly shutdownSignal?: AbortSignal;
18
19
  }
19
20
  export interface ZLinkRuntimeStopParts {
20
21
  readonly state: ZLinkFrameworkExecutionState;
21
22
  readonly cleanupDeadline?: Date;
23
+ readonly shutdownSignal?: AbortSignal;
22
24
  readonly locationSnapshot: ZLinkLocationRuntimeStopSnapshot;
23
25
  readonly streamRuntime?: ZLinkStreamRuntimeManager;
24
26
  readonly spotNodeRuntime?: ZLinkSpotNodeRuntimeManager;