@zlink-systems/framework 0.20.0 → 0.22.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 (487) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Handlers/JsonContract.js +23 -11
  13. package/dist/contracts/Spots/SpotKind.js +16 -8
  14. package/dist/location-store-integration.js +16 -16
  15. package/dist/nest-integration.js +17 -11
  16. package/dist/runtime/abort.js +9 -5
  17. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  18. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  19. package/dist/runtime/actors/actor-client.js +83 -63
  20. package/dist/runtime/actors/actor-context.js +24 -18
  21. package/dist/runtime/actors/actor-creation.js +4 -3
  22. package/dist/runtime/actors/actor-handoff.js +89 -92
  23. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  24. package/dist/runtime/actors/actor-mailbox.js +1 -1
  25. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  26. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  27. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  28. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  29. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  30. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  31. package/dist/runtime/actors/bound-session-wire.js +14 -9
  32. package/dist/runtime/actors/deferred-join-accepted-journal.js +158 -124
  33. package/dist/runtime/actors/index.js +2 -5
  34. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  35. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  36. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  37. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  38. package/dist/runtime/admission.js +2 -6
  39. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  40. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  41. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  42. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  43. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  44. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  45. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  46. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  47. package/dist/runtime/backend/node/node-raw-mesh-backend.js +116 -113
  48. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  49. package/dist/runtime/backend/runtime-message.js +3 -3
  50. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  51. package/dist/runtime/backend/runtime-values.js +4 -5
  52. package/dist/runtime/channels/channel-clients.js +27 -24
  53. package/dist/runtime/channels/channel-dispatch-pipeline.js +10 -18
  54. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  55. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  56. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  57. package/dist/runtime/channels/channel-envelope.js +83 -47
  58. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  59. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  60. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  61. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  62. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  63. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  64. package/dist/runtime/channels/channel-transports.js +43 -33
  65. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  66. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  67. package/dist/runtime/channels/dispatch-error-reporter.js +9 -7
  68. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  69. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  70. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  71. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  72. package/dist/runtime/channels/source-spot-router.js +6 -2
  73. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  74. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  75. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  76. package/dist/runtime/diagnostics/index.js +38 -10
  77. package/dist/runtime/diagnostics/message-flow.js +47 -39
  78. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  79. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  80. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  81. package/dist/runtime/execution/index.js +7 -6
  82. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  83. package/dist/runtime/execution/state-lane.js +2 -2
  84. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -23
  85. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  86. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  87. package/dist/runtime/foundation/raw-service-mesh-runtime.js +136 -136
  88. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  89. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  90. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  91. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  92. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  93. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  94. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  95. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  96. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  97. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  98. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  99. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  100. package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
  101. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  102. package/dist/runtime/foundation/service-topology-registry.js +96 -95
  103. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  104. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  105. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  106. package/dist/runtime/framework-errors-internal.js +7 -10
  107. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  108. package/dist/runtime/handlers/index.js +3 -1
  109. package/dist/runtime/host/actor-packet-relay.js +74 -70
  110. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  111. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  112. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  113. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  114. package/dist/runtime/host/application-job-queue.js +18 -22
  115. package/dist/runtime/host/bound-session-relay.js +3 -1
  116. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  117. package/dist/runtime/host/host-capacity-status.js +8 -4
  118. package/dist/runtime/host/index.js +244 -227
  119. package/dist/runtime/host/instance-activation-authority.js +93 -96
  120. package/dist/runtime/host/location-runtime-owner.js +16 -14
  121. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  122. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  123. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  124. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  125. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  126. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  127. package/dist/runtime/host/runtime-shutdown.js +1 -2
  128. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  129. package/dist/runtime/host/spot-address-transport.js +69 -71
  130. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  131. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  132. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  133. package/dist/runtime/locations/actor-location-claims.js +26 -20
  134. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  135. package/dist/runtime/locations/authority-key-codec.js +7 -7
  136. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  137. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  138. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  139. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  140. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  141. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  142. package/dist/runtime/locations/key-codec.js +1 -1
  143. package/dist/runtime/locations/lease-tracker.js +23 -21
  144. package/dist/runtime/locations/lifecycle.js +4 -5
  145. package/dist/runtime/locations/location-store-repository.js +368 -324
  146. package/dist/runtime/locations/opaque-record-key.js +2 -2
  147. package/dist/runtime/locations/resolvers.js +73 -82
  148. package/dist/runtime/locations/runtime.js +68 -63
  149. package/dist/runtime/locations/spot-location-claims.js +39 -35
  150. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  151. package/dist/runtime/messaging/packet-name.js +7 -6
  152. package/dist/runtime/messaging/payload-codec.js +21 -18
  153. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  154. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  155. package/dist/runtime/routing-id.js +3 -5
  156. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  157. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  158. package/dist/runtime/spots/index.js +208 -219
  159. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  160. package/dist/runtime/spots/spot-activation-state.js +17 -15
  161. package/dist/runtime/spots/spot-activation.js +33 -16
  162. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  163. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  164. package/dist/runtime/spots/spot-actor-packet-dispatch.js +23 -20
  165. package/dist/runtime/spots/spot-actor-packet-drain.js +12 -10
  166. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  167. package/dist/runtime/spots/spot-closing.js +3 -7
  168. package/dist/runtime/spots/spot-context.js +2 -2
  169. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  170. package/dist/runtime/spots/spot-handle.js +6 -3
  171. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  172. package/dist/runtime/spots/spot-manager-public.js +5 -6
  173. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  174. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  175. package/dist/runtime/spots/spot-node-runtime-manager.js +74 -85
  176. package/dist/runtime/spots/spot-outbound.js +10 -14
  177. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  178. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  179. package/dist/runtime/spots/spot-route-packet-dispatch.js +16 -14
  180. package/dist/runtime/spots/spot-route-replies.js +4 -6
  181. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  182. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +1 -2
  183. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  184. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  185. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  186. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  187. package/dist/runtime/spots/spot-subscription-dispatch.js +5 -5
  188. package/dist/runtime/spots/spot-timer.js +25 -29
  189. package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
  190. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  191. package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
  192. package/dist/runtime/streams/bound-session-service.js +8 -9
  193. package/dist/runtime/streams/index.js +20 -19
  194. package/dist/runtime/streams/managed-stream.js +32 -30
  195. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  196. package/dist/runtime/streams/protocol.js +29 -18
  197. package/dist/runtime/streams/session-actor-coordinator.js +34 -37
  198. package/dist/runtime/streams/session-context.js +30 -28
  199. package/dist/runtime/streams/session-provider.js +2 -2
  200. package/dist/runtime/streams/session-serial-executor.js +1 -2
  201. package/dist/runtime/streams/stream-frame-factory.js +11 -5
  202. package/dist/runtime/streams/stream-session-runtime.js +70 -66
  203. package/dist/runtime/workers/index.js +15 -4
  204. package/package.json +2 -2
  205. package/src/contracts/Channels/RouteCalls.ts +6 -1
  206. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  207. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  208. package/src/contracts/Configuration/Builders.ts +14 -14
  209. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  210. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  211. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  212. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  213. package/src/contracts/Configuration/Registration.ts +46 -17
  214. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  215. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  216. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  217. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  218. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  219. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  220. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  221. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  222. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  223. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  224. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -6
  225. package/src/contracts/Errors/index.ts +1 -4
  226. package/src/contracts/Handlers/Attributes.ts +15 -9
  227. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  228. package/src/contracts/Handlers/JsonContract.ts +53 -19
  229. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  230. package/src/contracts/Locations/Authority.ts +4 -11
  231. package/src/contracts/Locations/Keys.ts +6 -1
  232. package/src/contracts/Locations/Options.ts +3 -2
  233. package/src/contracts/Locations/RelocationStore.ts +1 -4
  234. package/src/contracts/Locations/Resolvers.ts +5 -5
  235. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  236. package/src/contracts/Locations/Stores.ts +1 -2
  237. package/src/contracts/Locations/index.ts +2 -8
  238. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  239. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  240. package/src/contracts/Spots/Contracts.ts +2 -8
  241. package/src/contracts/Spots/SpotKind.ts +16 -8
  242. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  243. package/src/contracts/Streams/IZLinkSession.ts +0 -1
  244. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  245. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  246. package/src/internal.ts +5 -4
  247. package/src/location-store-integration.ts +24 -16
  248. package/src/nest-integration.ts +40 -25
  249. package/src/runtime/abort.ts +10 -4
  250. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  251. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  252. package/src/runtime/actors/actor-client.ts +162 -133
  253. package/src/runtime/actors/actor-context.ts +138 -130
  254. package/src/runtime/actors/actor-creation.ts +47 -44
  255. package/src/runtime/actors/actor-execution-context.ts +6 -4
  256. package/src/runtime/actors/actor-handoff.ts +269 -293
  257. package/src/runtime/actors/actor-join-deferred-scope.ts +5 -4
  258. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  259. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  260. package/src/runtime/actors/actor-mailbox.ts +16 -19
  261. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  262. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  263. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  264. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  265. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  266. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  267. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  268. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  269. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  270. package/src/runtime/actors/bound-session-wire.ts +37 -17
  271. package/src/runtime/actors/deferred-join-accepted-journal.ts +351 -320
  272. package/src/runtime/actors/index.ts +43 -86
  273. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  274. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  275. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  276. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  277. package/src/runtime/admission.ts +9 -9
  278. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  279. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  280. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  281. package/src/runtime/backend/contracts/index.ts +73 -52
  282. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  283. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  284. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  285. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  286. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  287. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  288. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  289. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  290. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  291. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  292. package/src/runtime/backend/node/node-raw-mesh-backend.ts +335 -383
  293. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  294. package/src/runtime/backend/runtime-message.ts +5 -3
  295. package/src/runtime/backend/runtime-values.ts +10 -7
  296. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  297. package/src/runtime/channels/channel-clients.ts +93 -73
  298. package/src/runtime/channels/channel-dispatch-pipeline.ts +40 -42
  299. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  300. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  301. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  302. package/src/runtime/channels/channel-envelope.ts +256 -150
  303. package/src/runtime/channels/channel-multipart.ts +13 -5
  304. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  305. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  306. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  307. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  308. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  309. package/src/runtime/channels/channel-socket-options.ts +3 -10
  310. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  311. package/src/runtime/channels/channel-transports.ts +215 -197
  312. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  313. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  314. package/src/runtime/channels/dispatch-error-reporter.ts +11 -8
  315. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  316. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  317. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  318. package/src/runtime/channels/index.ts +1 -4
  319. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  320. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  321. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  322. package/src/runtime/channels/source-spot-router.ts +26 -22
  323. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  324. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  325. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  326. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  327. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  328. package/src/runtime/codecs/index.ts +3 -2
  329. package/src/runtime/diagnostics/flow-context.ts +12 -3
  330. package/src/runtime/diagnostics/index.ts +96 -61
  331. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  332. package/src/runtime/diagnostics/message-flow.ts +95 -76
  333. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  334. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  335. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  336. package/src/runtime/execution/index.ts +18 -26
  337. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  338. package/src/runtime/execution/state-lane.ts +2 -2
  339. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -51
  340. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  341. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  342. package/src/runtime/foundation/operation-identity.ts +1 -2
  343. package/src/runtime/foundation/operation-registry.ts +8 -2
  344. package/src/runtime/foundation/raw-service-mesh-runtime.ts +312 -385
  345. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  346. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  347. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  348. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  349. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  350. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  351. package/src/runtime/foundation/service-mailbox.ts +14 -14
  352. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  353. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  354. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  355. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  356. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  357. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  358. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  359. package/src/runtime/foundation/service-session-binding-ingress-port.ts +1 -4
  360. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  361. package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
  362. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  363. package/src/runtime/foundation/service-topology-registry.ts +157 -159
  364. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  365. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  366. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  367. package/src/runtime/framework-errors-internal.ts +31 -30
  368. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  369. package/src/runtime/handlers/index.ts +18 -8
  370. package/src/runtime/host/actor-packet-relay.ts +290 -261
  371. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  372. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  373. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  374. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  375. package/src/runtime/host/application-job-queue.ts +32 -48
  376. package/src/runtime/host/bound-session-relay.ts +7 -9
  377. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  378. package/src/runtime/host/host-capacity-status.ts +10 -9
  379. package/src/runtime/host/index.ts +861 -789
  380. package/src/runtime/host/instance-activation-authority.ts +125 -143
  381. package/src/runtime/host/location-runtime-owner.ts +38 -26
  382. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  383. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  384. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  385. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  386. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  387. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  388. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  389. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  390. package/src/runtime/host/runtime-shutdown.ts +4 -3
  391. package/src/runtime/host/service-relocation-control.ts +14 -5
  392. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  393. package/src/runtime/host/spot-address-transport.ts +284 -237
  394. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  395. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  396. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  397. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  398. package/src/runtime/locations/actor-location-claims.ts +61 -49
  399. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  400. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  401. package/src/runtime/locations/authority-key-codec.ts +13 -10
  402. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  403. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  404. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  405. package/src/runtime/locations/canonical-codec.ts +3 -1
  406. package/src/runtime/locations/creation-operation-id.ts +4 -3
  407. package/src/runtime/locations/domain-store-contract.ts +13 -7
  408. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  409. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  410. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  411. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  412. package/src/runtime/locations/key-codec.ts +3 -4
  413. package/src/runtime/locations/lease-tracker.ts +36 -27
  414. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  415. package/src/runtime/locations/lifecycle.ts +33 -28
  416. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  417. package/src/runtime/locations/opaque-record-key.ts +4 -9
  418. package/src/runtime/locations/resolvers.ts +201 -178
  419. package/src/runtime/locations/runtime.ts +251 -159
  420. package/src/runtime/locations/spot-location-claims.ts +110 -112
  421. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  422. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  423. package/src/runtime/messaging/packet-name.ts +8 -6
  424. package/src/runtime/messaging/payload-codec.ts +70 -50
  425. package/src/runtime/messaging/submission-result.ts +6 -9
  426. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  427. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  428. package/src/runtime/routing-id.ts +10 -7
  429. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  430. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  431. package/src/runtime/spots/index.ts +593 -563
  432. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  433. package/src/runtime/spots/spot-activation-state.ts +43 -51
  434. package/src/runtime/spots/spot-activation.ts +179 -116
  435. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  436. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  437. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  438. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  439. package/src/runtime/spots/spot-actor-packet-dispatch.ts +184 -153
  440. package/src/runtime/spots/spot-actor-packet-drain.ts +54 -42
  441. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  442. package/src/runtime/spots/spot-closing.ts +11 -12
  443. package/src/runtime/spots/spot-context.ts +46 -26
  444. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  445. package/src/runtime/spots/spot-handle.ts +17 -15
  446. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  447. package/src/runtime/spots/spot-location-claim.ts +5 -4
  448. package/src/runtime/spots/spot-manager-public.ts +62 -82
  449. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  450. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  451. package/src/runtime/spots/spot-node-runtime-manager.ts +230 -221
  452. package/src/runtime/spots/spot-outbound.ts +47 -59
  453. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  454. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  455. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  456. package/src/runtime/spots/spot-route-packet-dispatch.ts +128 -95
  457. package/src/runtime/spots/spot-route-replies.ts +23 -24
  458. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  459. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  460. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +11 -17
  461. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  462. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  463. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  464. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  465. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  466. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  467. package/src/runtime/spots/spot-subscription-dispatch.ts +56 -46
  468. package/src/runtime/spots/spot-timer.ts +98 -91
  469. package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
  470. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
  471. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  472. package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
  473. package/src/runtime/streams/bound-session-response-target.ts +29 -8
  474. package/src/runtime/streams/bound-session-service.ts +39 -39
  475. package/src/runtime/streams/index.ts +176 -100
  476. package/src/runtime/streams/managed-stream.ts +98 -87
  477. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  478. package/src/runtime/streams/protocol.ts +73 -43
  479. package/src/runtime/streams/session-actor-coordinator.ts +97 -89
  480. package/src/runtime/streams/session-calls.ts +2 -8
  481. package/src/runtime/streams/session-context.ts +66 -48
  482. package/src/runtime/streams/session-provider.ts +5 -7
  483. package/src/runtime/streams/session-serial-executor.ts +7 -6
  484. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  485. package/src/runtime/streams/stream-frame-factory.ts +55 -38
  486. package/src/runtime/streams/stream-session-runtime.ts +268 -210
  487. package/src/runtime/workers/index.ts +68 -29
@@ -20,8 +20,7 @@ class ZLinkRemoteBoundSessionRelay {
20
20
  this.options = options;
21
21
  }
22
22
  async receiveRoutedBoundSession(actorId, message, packetName, metadata, actorRef, actorPacketTarget) {
23
- const ownershipGeneration = actorRef
24
- ?.ownershipGeneration;
23
+ const ownershipGeneration = actorRef?.ownershipGeneration;
25
24
  const currentGeneration = this.actorOwnershipGenerations.get(actorId);
26
25
  if (currentGeneration !== undefined &&
27
26
  (ownershipGeneration === undefined || ownershipGeneration < currentGeneration))
@@ -30,21 +29,23 @@ class ZLinkRemoteBoundSessionRelay {
30
29
  this.actorOwnershipGenerations.set(actorId, ownershipGeneration);
31
30
  }
32
31
  await this.options.updateRemoteActorPacketTarget(actorId, actorPacketTarget);
33
- if (ownershipGeneration !== undefined
34
- && this.actorOwnershipGenerations.get(actorId) !== ownershipGeneration)
32
+ if (ownershipGeneration !== undefined &&
33
+ this.actorOwnershipGenerations.get(actorId) !== ownershipGeneration)
35
34
  return;
36
35
  if (actorRef !== undefined) {
37
36
  await this.options.streamBindingRuntime().rebindActor(actorRef);
38
37
  }
39
- if (ownershipGeneration !== undefined
40
- && this.actorOwnershipGenerations.get(actorId) !== ownershipGeneration)
38
+ if (ownershipGeneration !== undefined &&
39
+ this.actorOwnershipGenerations.get(actorId) !== ownershipGeneration)
41
40
  return;
42
- const sent = await this.options.streamBindingRuntime().sendLocalBoundSession(actorId, message, packetName, metadata);
41
+ const sent = await this.options
42
+ .streamBindingRuntime()
43
+ .sendLocalBoundSession(actorId, message, packetName, metadata);
43
44
  if (sent) {
44
45
  return;
45
46
  }
46
- if (ownershipGeneration !== undefined
47
- && this.actorOwnershipGenerations.get(actorId) !== ownershipGeneration)
47
+ if (ownershipGeneration !== undefined &&
48
+ this.actorOwnershipGenerations.get(actorId) !== ownershipGeneration)
48
49
  return;
49
50
  if (this.options.actorManager()?.getState(actorId)?.remoteBoundSessionTarget === undefined) {
50
51
  return;
@@ -60,11 +61,15 @@ class ZLinkRemoteBoundSessionRelay {
60
61
  }
61
62
  async receiveRoutedBoundSessionResponse(actorId, packetName, requestSeq, message, replyOptions, actorPacketTarget) {
62
63
  await this.options.updateRemoteActorPacketTarget(actorId, actorPacketTarget);
63
- await this.options.streamBindingRuntime().sendLocalBoundSessionResponse(actorId, packetName, requestSeq, message, replyOptions.metadata, replyOptions.compressPayload);
64
+ await this.options
65
+ .streamBindingRuntime()
66
+ .sendLocalBoundSessionResponse(actorId, packetName, requestSeq, message, replyOptions.metadata, replyOptions.compressPayload);
64
67
  }
65
68
  async receiveRoutedBoundSessionError(actorId, packetName, requestSeq, error, metadata, actorPacketTarget) {
66
69
  await this.options.updateRemoteActorPacketTarget(actorId, actorPacketTarget);
67
- await this.options.streamBindingRuntime().sendLocalBoundSessionError(actorId, packetName, requestSeq, error, metadata);
70
+ await this.options
71
+ .streamBindingRuntime()
72
+ .sendLocalBoundSessionError(actorId, packetName, requestSeq, error, metadata);
68
73
  }
69
74
  async receiveRemoteBoundSessionSend(payload) {
70
75
  const send = (0, bound_session_wire_1.decodeRemoteBoundSessionSendPayload)(payload);
@@ -72,7 +77,7 @@ class ZLinkRemoteBoundSessionRelay {
72
77
  const owner = (0, actor_session_binding_runtime_owner_1.actorSessionBindingRuntimeOwnerIfRegistered)(this.options.streamBindingRuntime());
73
78
  const retained = await owner?.retainRelocationOutbound(send.actorId, {
74
79
  deliver: () => this.deliverRemoteBoundSessionSend(send),
75
- fail: error => this.options.reportOwnershipRefreshError?.(send.actorId, error)
80
+ fail: (error) => this.options.reportOwnershipRefreshError?.(send.actorId, error)
76
81
  }, send.relocationSealId);
77
82
  if (retained === 'retained')
78
83
  return { ok: true };
@@ -82,7 +87,9 @@ class ZLinkRemoteBoundSessionRelay {
82
87
  }
83
88
  async deliverRemoteBoundSessionSend(send) {
84
89
  const metadata = new Map(Object.entries(send.metadata ?? {}));
85
- if (await this.options.streamBindingRuntime().sendLocalBoundSession(send.actorId, send.message, send.boundPacketName, metadata)) {
90
+ if (await this.options
91
+ .streamBindingRuntime()
92
+ .sendLocalBoundSession(send.actorId, send.message, send.boundPacketName, metadata)) {
86
93
  return true;
87
94
  }
88
95
  if (this.options.actorManager()?.getState(send.actorId)?.remoteBoundSessionTarget === undefined) {
@@ -101,13 +108,17 @@ class ZLinkRemoteBoundSessionRelay {
101
108
  async receiveRemoteBoundSessionResponse(payload) {
102
109
  const response = (0, bound_session_wire_1.decodeRemoteBoundSessionResponsePayload)(payload);
103
110
  await this.options.updateRemoteActorPacketTarget(response.actorId, response.actorPacketTarget);
104
- const sent = await this.options.streamBindingRuntime().sendLocalBoundSessionResponse(response.actorId, response.boundPacketName, response.requestSeq, response.message, new Map(Object.entries(response.metadata ?? {})), response.compressPayload);
111
+ const sent = await this.options
112
+ .streamBindingRuntime()
113
+ .sendLocalBoundSessionResponse(response.actorId, response.boundPacketName, response.requestSeq, response.message, new Map(Object.entries(response.metadata ?? {})), response.compressPayload);
105
114
  return { ok: sent };
106
115
  }
107
116
  async receiveRemoteBoundSessionError(payload) {
108
117
  const response = (0, bound_session_wire_1.decodeRemoteBoundSessionErrorPayload)(payload);
109
118
  await this.options.updateRemoteActorPacketTarget(response.actorId, response.actorPacketTarget);
110
- const sent = await this.options.streamBindingRuntime().sendLocalBoundSessionError(response.actorId, response.boundPacketName, response.requestSeq, response.error, new Map(Object.entries(response.metadata ?? {})));
119
+ const sent = await this.options
120
+ .streamBindingRuntime()
121
+ .sendLocalBoundSessionError(response.actorId, response.boundPacketName, response.requestSeq, response.error, new Map(Object.entries(response.metadata ?? {})));
111
122
  return { ok: sent };
112
123
  }
113
124
  async receiveServiceWireSessionRelocationSeal(value, signal) {
@@ -179,15 +190,21 @@ class ZLinkRemoteBoundSessionRelay {
179
190
  }
180
191
  const owner = (0, actor_session_binding_runtime_owner_1.actorSessionBindingRuntimeOwner)(this.options.streamBindingRuntime());
181
192
  await owner.clearRelocation(actorId, error);
182
- void this.options.streamBindingRuntime().disconnectBoundSession(actorId)
183
- .catch(disconnectError => this.options.reportOwnershipRefreshError?.(actorId, disconnectError));
193
+ void this.options
194
+ .streamBindingRuntime()
195
+ .disconnectBoundSession(actorId)
196
+ .catch((disconnectError) => this.options.reportOwnershipRefreshError?.(actorId, disconnectError));
184
197
  state.sealAbortCleanup?.();
185
198
  };
186
199
  const timeoutError = () => (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded, `Actor '${actorId}' Session relocation seal exceeded its absolute deadline.`, true);
187
- state.sealTimer = setTimeout(() => { void expire(timeoutError()); }, this.options.sessionRelocationSealTimeoutMs);
200
+ state.sealTimer = setTimeout(() => {
201
+ void expire(timeoutError());
202
+ }, this.options.sessionRelocationSealTimeoutMs);
188
203
  state.sealTimer.unref();
189
204
  if (signal !== undefined) {
190
- const onAbort = () => { void expire(signal.reason ?? timeoutError()); };
205
+ const onAbort = () => {
206
+ void expire(signal.reason ?? timeoutError());
207
+ };
191
208
  state.sealAbortCleanup = () => signal.removeEventListener('abort', onAbort);
192
209
  if (signal.aborted)
193
210
  onAbort();
@@ -207,10 +224,12 @@ class ZLinkRemoteBoundSessionRelay {
207
224
  }
208
225
  if (state.terminal !== true) {
209
226
  const owner = (0, actor_session_binding_runtime_owner_1.actorSessionBindingRuntimeOwner)(this.options.streamBindingRuntime());
210
- if (await owner.relocationSnapshot(actorId, key) !== undefined) {
227
+ if ((await owner.relocationSnapshot(actorId, key)) !== undefined) {
211
228
  await owner.clearRelocation(actorId, error);
212
- void this.options.streamBindingRuntime().disconnectBoundSession(actorId)
213
- .catch(disconnectError => this.options.reportOwnershipRefreshError?.(actorId, disconnectError));
229
+ void this.options
230
+ .streamBindingRuntime()
231
+ .disconnectBoundSession(actorId)
232
+ .catch((disconnectError) => this.options.reportOwnershipRefreshError?.(actorId, disconnectError));
214
233
  }
215
234
  }
216
235
  throw sealController.signal.aborted ? sealController.signal.reason : error;
@@ -242,8 +261,8 @@ class ZLinkRemoteBoundSessionRelay {
242
261
  this.warnLateSessionRouteUpdate(value);
243
262
  return;
244
263
  }
245
- if (state.routeRequestFingerprint !== undefined
246
- && state.routeRequestFingerprint !== routeRequestFingerprint) {
264
+ if (state.routeRequestFingerprint !== undefined &&
265
+ state.routeRequestFingerprint !== routeRequestFingerprint) {
247
266
  throw new service_wire_m6a_codec_1.ServiceWireProtocolError(`Session relocation '${key}' repeated command 44 with different bytes.`);
248
267
  }
249
268
  if (state.routeFingerprint !== undefined) {
@@ -269,7 +288,7 @@ class ZLinkRemoteBoundSessionRelay {
269
288
  this.terminalServiceWireRelocations.remember(key, {
270
289
  actorId: state.actorId,
271
290
  sealFingerprint: state.sealFingerprint,
272
- sealed: state.sealed ?? await state.sealPromise,
291
+ sealed: state.sealed ?? (await state.sealPromise),
273
292
  routeRequestFingerprint,
274
293
  routeFingerprint: fingerprint
275
294
  });
@@ -287,7 +306,7 @@ class ZLinkRemoteBoundSessionRelay {
287
306
  if (this.activeServiceWireRelocations.get(key) === state) {
288
307
  this.activeServiceWireRelocations.delete(key);
289
308
  }
290
- const sealed = state.sealed ?? await state.sealPromise;
309
+ const sealed = state.sealed ?? (await state.sealPromise);
291
310
  this.terminalServiceWireRelocations.remember(key, {
292
311
  actorId: state.actorId,
293
312
  sealFingerprint: state.sealFingerprint,
@@ -295,10 +314,11 @@ class ZLinkRemoteBoundSessionRelay {
295
314
  routeRequestFingerprint,
296
315
  routeFingerprint: fingerprint
297
316
  });
298
- (0, actor_session_binding_runtime_owner_1.actorSessionBindingRuntimeOwner)(this.options.streamBindingRuntime())
299
- .clearRelocation(state.actorId, error);
300
- await this.options.streamBindingRuntime().disconnectBoundSession(state.actorId)
301
- .catch(disconnectError => this.options.reportOwnershipRefreshError?.(state.actorId, disconnectError));
317
+ (0, actor_session_binding_runtime_owner_1.actorSessionBindingRuntimeOwner)(this.options.streamBindingRuntime()).clearRelocation(state.actorId, error);
318
+ await this.options
319
+ .streamBindingRuntime()
320
+ .disconnectBoundSession(state.actorId)
321
+ .catch((disconnectError) => this.options.reportOwnershipRefreshError?.(state.actorId, disconnectError));
302
322
  throw error;
303
323
  }
304
324
  }
@@ -345,8 +365,8 @@ class ZLinkRemoteBoundSessionRelay {
345
365
  releaseSeal: { sealId: key }
346
366
  });
347
367
  const currentGeneration = this.actorOwnershipGenerations.get(value.actor.actorId);
348
- if (currentGeneration === undefined
349
- || currentGeneration < committedRoute.targetAuthorityOwnerGeneration) {
368
+ if (currentGeneration === undefined ||
369
+ currentGeneration < committedRoute.targetAuthorityOwnerGeneration) {
350
370
  this.actorOwnershipGenerations.set(value.actor.actorId, committedRoute.targetAuthorityOwnerGeneration);
351
371
  }
352
372
  });
@@ -354,12 +374,14 @@ class ZLinkRemoteBoundSessionRelay {
354
374
  await owner.observeRelocationTerminal(value.actor.actorId, key, fingerprint);
355
375
  }
356
376
  async validateServiceWireSessionRoute(value) {
357
- const current = await this.options.streamBindingRuntime().sessionRouteFence(value.actor.actor.actorId);
358
- if (current === undefined
359
- || current.actor.objectGeneration !== value.actor.actor.generation
360
- || !(0, routing_id_1.routingIdsEqual)(current.actor.nodeRid, value.actor.actor.nodeRid)
361
- || current.sessionRid.toString() !== value.session.sessionRid
362
- || current.bindingGeneration !== value.session.bindingGeneration) {
377
+ const current = await this.options
378
+ .streamBindingRuntime()
379
+ .sessionRouteFence(value.actor.actor.actorId);
380
+ if (current === undefined ||
381
+ current.actor.objectGeneration !== value.actor.actor.generation ||
382
+ !(0, routing_id_1.routingIdsEqual)(current.actor.nodeRid, value.actor.actor.nodeRid) ||
383
+ current.sessionRid.toString() !== value.session.sessionRid ||
384
+ current.bindingGeneration !== value.session.bindingGeneration) {
363
385
  throw new bound_session_wire_1.ZLinkRemoteBoundSessionFenceError(`Actor '${value.actor.actor.actorId}' command 42 was fenced by its exact Session route.`);
364
386
  }
365
387
  }
@@ -402,7 +424,9 @@ class ZLinkRemoteBoundSessionRelay {
402
424
  }
403
425
  async sendActorResponse(actor, packetName, requestSeq, response, replyOptions, fallbackBoundSessionTarget, fallbackActorRef, signal) {
404
426
  const state = this.options.actorManager()?.getState(actor.context.actorId);
405
- if (await this.options.streamBindingRuntime().sendLocalBoundSessionResponse(actor.context.actorId, packetName, requestSeq, response, replyOptions.metadata, replyOptions.compressPayload)) {
427
+ if (await this.options
428
+ .streamBindingRuntime()
429
+ .sendLocalBoundSessionResponse(actor.context.actorId, packetName, requestSeq, response, replyOptions.metadata, replyOptions.compressPayload)) {
406
430
  return;
407
431
  }
408
432
  const actorRef = currentActorRef(state, fallbackActorRef);
@@ -418,15 +442,18 @@ class ZLinkRemoteBoundSessionRelay {
418
442
  if (actorSessionNode === undefined) {
419
443
  throw new Error('Native bound-session response requires the RouteMesh stream-session service.');
420
444
  }
421
- await this.options.streamBindingRuntime().sendNativeBoundSessionResponse(actorSessionNode, actorRef, packetName, requestSeq, response, replyOptions.metadata, replyOptions.compressPayload, signal);
445
+ await this.options
446
+ .streamBindingRuntime()
447
+ .sendNativeBoundSessionResponse(actorSessionNode, actorRef, packetName, requestSeq, response, replyOptions.metadata, replyOptions.compressPayload, signal);
422
448
  }
423
449
  async sendActorError(actorId, packetName, requestSeq, error, metadata, fallbackBoundSessionTarget, fallbackActorRef, signal) {
424
- if (await this.options.streamBindingRuntime().sendLocalBoundSessionError(actorId, packetName, requestSeq, error, metadata)) {
450
+ if (await this.options
451
+ .streamBindingRuntime()
452
+ .sendLocalBoundSessionError(actorId, packetName, requestSeq, error, metadata)) {
425
453
  return;
426
454
  }
427
455
  const state = this.options.actorManager()?.getState(actorId);
428
- const actorRef = currentActorRef(state, fallbackActorRef)
429
- ?? this.options.destroyedActorRefs.get(actorId);
456
+ const actorRef = currentActorRef(state, fallbackActorRef) ?? this.options.destroyedActorRefs.get(actorId);
430
457
  const remoteTarget = fallbackBoundSessionTarget ?? state?.remoteBoundSessionTarget;
431
458
  if (remoteTarget !== undefined) {
432
459
  await this.sendRemoteBoundSessionError(remoteTarget, actorId, packetName, requestSeq, error, metadata, signal);
@@ -439,7 +466,9 @@ class ZLinkRemoteBoundSessionRelay {
439
466
  if (actorSessionNode === undefined) {
440
467
  throw new Error('Native bound-session error response requires the RouteMesh stream-session service.');
441
468
  }
442
- await this.options.streamBindingRuntime().sendNativeBoundSessionError(actorSessionNode, actorRef, packetName, requestSeq, error, metadata, signal);
469
+ await this.options
470
+ .streamBindingRuntime()
471
+ .sendNativeBoundSessionError(actorSessionNode, actorRef, packetName, requestSeq, error, metadata, signal);
443
472
  }
444
473
  async sendRemoteBoundSessionResponse(target, actorId, packetName, requestSeq, message, replyOptions, signal) {
445
474
  const actorPacketTarget = (0, actor_packet_relay_wire_1.encodeRemoteActorPacketTarget)(this.options.actorPacketTargetForState(actorId, target.routerChannelId));
@@ -468,16 +497,15 @@ class ZLinkRemoteBoundSessionRelay {
468
497
  if (typeof packetName !== 'string') {
469
498
  throw new Error('Remote bound session control payload does not declare a packet name.');
470
499
  }
471
- const submit = this.options.routeTransport.submitInfrastructure
472
- ?? this.options.routeTransport.submit;
500
+ const submit = this.options.routeTransport.submitInfrastructure ?? this.options.routeTransport.submit;
473
501
  if (submit === undefined) {
474
502
  throw new Error('Remote bound session node-direct transport is not available.');
475
503
  }
476
504
  const result = await submit.call(this.options.routeTransport, target.routerChannelId, String(target.targetNodeRid), packetName, payload, signal);
477
505
  if (result.status !== submission_result_1.ZLinkSubmitStatus.Submitted) {
478
- throw new Error(`Remote bound session control '${packetName}' was not admitted`
479
- + ` on '${target.routerChannelId}' for '${String(target.targetNodeRid)}'`
480
- + ` (status ${result.status}).`);
506
+ throw new Error(`Remote bound session control '${packetName}' was not admitted` +
507
+ ` on '${target.routerChannelId}' for '${String(target.targetNodeRid)}'` +
508
+ ` (status ${result.status}).`);
481
509
  }
482
510
  }
483
511
  }
@@ -486,9 +514,7 @@ function currentActorRef(state, fallback) {
486
514
  const native = state?.nativeActorRef;
487
515
  if (native === undefined)
488
516
  return fallback;
489
- const objectGeneration = native.generation
490
- ?? native.objectGeneration
491
- ?? fallback?.objectGeneration;
517
+ const objectGeneration = native.generation ?? native.objectGeneration ?? fallback?.objectGeneration;
492
518
  const meshName = state?.meshName ?? fallback?.meshName;
493
519
  if (objectGeneration === undefined || meshName === undefined)
494
520
  return fallback;
@@ -506,30 +532,28 @@ function serviceWireBarrierKey(value) {
506
532
  return (0, service_stateful_wire_codec_1.serviceSessionRelocationIdentityKey)(value);
507
533
  }
508
534
  function validateSessionRelocationRouteAgainstSeal(route, sealed) {
509
- const sameCoordinator = route.coordinator.ownerId === sealed.coordinator.ownerId
510
- && route.coordinator.leaseGeneration === sealed.coordinator.leaseGeneration
511
- && route.coordinator.nodeRid === sealed.coordinator.nodeRid
512
- && route.coordinator.nodeGeneration === sealed.coordinator.nodeGeneration
513
- && route.coordinator.expectedAuthorityStoreVersion
514
- === sealed.coordinator.expectedAuthorityStoreVersion;
515
- const sameSession = route.session.sessionOwnerNodeRid === sealed.session.sessionOwnerNodeRid
516
- && route.session.sessionOwnerNodeGeneration === sealed.session.sessionOwnerNodeGeneration
517
- && route.session.sessionOwnerId === sealed.session.sessionOwnerId
518
- && route.session.sessionOwnerLeaseGeneration
519
- === sealed.session.sessionOwnerLeaseGeneration
520
- && route.session.sessionRid === sealed.session.sessionRid
521
- && route.session.bindingGeneration === sealed.session.bindingGeneration;
522
- if (route.relocation.high !== sealed.relocation.high
523
- || route.relocation.low !== sealed.relocation.low
524
- || !sameCoordinator
525
- || !sameSession
526
- || route.actor.actorId !== sealed.actor.actor.actorId
527
- || route.actor.generation !== sealed.actor.actor.generation) {
535
+ const sameCoordinator = route.coordinator.ownerId === sealed.coordinator.ownerId &&
536
+ route.coordinator.leaseGeneration === sealed.coordinator.leaseGeneration &&
537
+ route.coordinator.nodeRid === sealed.coordinator.nodeRid &&
538
+ route.coordinator.nodeGeneration === sealed.coordinator.nodeGeneration &&
539
+ route.coordinator.expectedAuthorityStoreVersion ===
540
+ sealed.coordinator.expectedAuthorityStoreVersion;
541
+ const sameSession = route.session.sessionOwnerNodeRid === sealed.session.sessionOwnerNodeRid &&
542
+ route.session.sessionOwnerNodeGeneration === sealed.session.sessionOwnerNodeGeneration &&
543
+ route.session.sessionOwnerId === sealed.session.sessionOwnerId &&
544
+ route.session.sessionOwnerLeaseGeneration === sealed.session.sessionOwnerLeaseGeneration &&
545
+ route.session.sessionRid === sealed.session.sessionRid &&
546
+ route.session.bindingGeneration === sealed.session.bindingGeneration;
547
+ if (route.relocation.high !== sealed.relocation.high ||
548
+ route.relocation.low !== sealed.relocation.low ||
549
+ !sameCoordinator ||
550
+ !sameSession ||
551
+ route.actor.actorId !== sealed.actor.actor.actorId ||
552
+ route.actor.generation !== sealed.actor.actor.generation) {
528
553
  throw new service_wire_m6a_codec_1.ServiceWireProtocolError(`Session relocation '${serviceWireBarrierKey(route)}' changed its command 42 fence.`);
529
554
  }
530
555
  if (route.route.action === 'commit') {
531
- if (route.route.previousAuthorityOwnerGeneration
532
- !== sealed.actor.authorityOwnerGeneration) {
556
+ if (route.route.previousAuthorityOwnerGeneration !== sealed.actor.authorityOwnerGeneration) {
533
557
  throw new service_wire_m6a_codec_1.ServiceWireProtocolError(`Session relocation '${serviceWireBarrierKey(route)}' changed its source authority fence.`);
534
558
  }
535
559
  return;
@@ -69,51 +69,43 @@ class ZLinkRouteMeshRuntimeCoordinator {
69
69
  unavailableReason: peerUnavailableReason(state)
70
70
  };
71
71
  });
72
- const channels = Object.entries(this.options.meshOptions.get(meshName)?.meshChannels ?? {})
73
- .map(([channelName, channel]) => {
74
- const readyMemberCount = BigInt(peerChannels.filter((entry, index) => peers[index]?.state === contracts_1.ZLinkPeerState.Ready
75
- && entry.names.some((name, channelIndex) => name === channelName && (entry.weights[channelIndex] ?? 0) > 0)).length);
72
+ const channels = Object.entries(this.options.meshOptions.get(meshName)?.meshChannels ?? {}).map(([channelName, channel]) => {
73
+ const readyMemberCount = BigInt(peerChannels.filter((entry, index) => peers[index]?.state === contracts_1.ZLinkPeerState.Ready &&
74
+ entry.names.some((name, channelIndex) => name === channelName && (entry.weights[channelIndex] ?? 0) > 0)).length);
76
75
  const localWeight = descriptor?.channelWeights[channelName] ?? channel.weight ?? 100;
77
- const readyTargetCount = Number(readyMemberCount)
78
- + (channel.server === true && localWeight > 0 ? 1 : 0);
76
+ const readyTargetCount = Number(readyMemberCount) + (channel.server === true && localWeight > 0 ? 1 : 0);
79
77
  return { channelName, isReady: readyTargetCount > 0, readyTargetCount };
80
78
  });
81
79
  const backendTopologyState = backendState(status.state);
82
- const hasUnavailableRequiredPeer = peers.some(peer => peer.state === contracts_1.ZLinkPeerState.Connecting
83
- || peer.state === contracts_1.ZLinkPeerState.NotConnected);
84
- const localTopologyState = drain.state === contracts_1.ZLinkTopologyState.Ready
85
- ? backendTopologyState
86
- : drain.state;
87
- const hostState = this.options.hostState?.()
88
- ?? contracts_1.ZLinkFrameworkRuntimeState.Serving;
80
+ const hasUnavailableRequiredPeer = peers.some((peer) => peer.state === contracts_1.ZLinkPeerState.Connecting || peer.state === contracts_1.ZLinkPeerState.NotConnected);
81
+ const localTopologyState = drain.state === contracts_1.ZLinkTopologyState.Ready ? backendTopologyState : drain.state;
82
+ const hostState = this.options.hostState?.() ?? contracts_1.ZLinkFrameworkRuntimeState.Serving;
89
83
  const hostTopologyState = topologyStateForHost(hostState, localTopologyState);
90
84
  const locationStoreHealthy = this.options.isLocationStoreHealthy?.() ?? true;
91
- const state = hostTopologyState === contracts_1.ZLinkTopologyState.Ready
92
- && (hasUnavailableRequiredPeer || !locationStoreHealthy)
85
+ const state = hostTopologyState === contracts_1.ZLinkTopologyState.Ready &&
86
+ (hasUnavailableRequiredPeer || !locationStoreHealthy)
93
87
  ? contracts_1.ZLinkTopologyState.Degraded
94
88
  : hostTopologyState;
95
89
  const hostReady = (0, runtime_state_projections_1.runtimeStateIsReady)(hostState);
96
90
  const objectRole = descriptor?.objectRole ?? contracts_2.ZLinkObjectRole.None;
97
91
  const placementWeight = descriptor?.placementWeight ?? 0;
98
- const capacityAvailable = descriptor !== undefined
99
- && populationCapacity !== undefined
100
- && hasRemainingCapacity(descriptor.activationConcurrency)
101
- && (hasRemainingCapacity(populationCapacity.actors)
102
- || hasRemainingCapacity(populationCapacity.spots));
103
- const placementAvailable = objectRole === contracts_2.ZLinkObjectRole.Server
104
- && placementWeight > 0
105
- && capacityAvailable
106
- && locationStoreHealthy
107
- && hostReady
108
- && localTopologyState === contracts_1.ZLinkTopologyState.Ready;
92
+ const capacityAvailable = descriptor !== undefined &&
93
+ populationCapacity !== undefined &&
94
+ hasRemainingCapacity(descriptor.activationConcurrency) &&
95
+ (hasRemainingCapacity(populationCapacity.actors) ||
96
+ hasRemainingCapacity(populationCapacity.spots));
97
+ const placementAvailable = objectRole === contracts_2.ZLinkObjectRole.Server &&
98
+ placementWeight > 0 &&
99
+ capacityAvailable &&
100
+ locationStoreHealthy &&
101
+ hostReady &&
102
+ localTopologyState === contracts_1.ZLinkTopologyState.Ready;
109
103
  const snapshot = {
110
104
  meshName,
111
105
  state,
112
106
  isReady: (0, runtime_state_projections_1.topologyRuntimeIsReady)(hostState, state === contracts_1.ZLinkTopologyState.Ready ? 1 : 0),
113
- readyPeerCount: peers.filter(peer => peer.state === contracts_1.ZLinkPeerState.Ready).length,
114
- channels: hostReady
115
- ? channels
116
- : channels.map(channel => ({ ...channel, isReady: false })),
107
+ readyPeerCount: peers.filter((peer) => peer.state === contracts_1.ZLinkPeerState.Ready).length,
108
+ channels: hostReady ? channels : channels.map((channel) => ({ ...channel, isReady: false })),
117
109
  peers,
118
110
  placement: {
119
111
  isAvailable: placementAvailable,
@@ -174,15 +166,13 @@ class ZLinkRouteMeshRuntimeCoordinator {
174
166
  let terminal;
175
167
  try {
176
168
  const current = this.snapshot(meshName);
177
- const terminalSequence = current.sequence >= state.sequence
178
- ? current.sequence + 1n
179
- : state.sequence;
169
+ const terminalSequence = current.sequence >= state.sequence ? current.sequence + 1n : state.sequence;
180
170
  state.sequence = terminalSequence;
181
171
  terminal = {
182
172
  ...current,
183
173
  state: contracts_1.ZLinkTopologyState.Stopped,
184
174
  isReady: false,
185
- channels: current.channels.map(channel => ({
175
+ channels: current.channels.map((channel) => ({
186
176
  ...channel,
187
177
  isReady: false
188
178
  })),
@@ -198,15 +188,13 @@ class ZLinkRouteMeshRuntimeCoordinator {
198
188
  catch {
199
189
  const current = state.lastSnapshot;
200
190
  if (current !== undefined) {
201
- const terminalSequence = current.sequence >= state.sequence
202
- ? current.sequence + 1n
203
- : state.sequence;
191
+ const terminalSequence = current.sequence >= state.sequence ? current.sequence + 1n : state.sequence;
204
192
  state.sequence = terminalSequence;
205
193
  terminal = {
206
194
  ...current,
207
195
  state: contracts_1.ZLinkTopologyState.Stopped,
208
196
  isReady: false,
209
- channels: current.channels.map(channel => ({
197
+ channels: current.channels.map((channel) => ({
210
198
  ...channel,
211
199
  isReady: false
212
200
  })),
@@ -243,7 +231,8 @@ class ZLinkRouteMeshRuntimeCoordinator {
243
231
  const state = this.requireState(meshName);
244
232
  if (this.states.size > 1)
245
233
  return Promise.reject(multiMeshDrainError());
246
- const operation = state.operation ?? new Promise((resolve) => state.waiters.push(resolve));
234
+ const operation = state.operation ??
235
+ new Promise((resolve) => state.waiters.push(resolve));
247
236
  return waitForOperation(operation, signal);
248
237
  }
249
238
  drainHost(deadlineMs = 30_000, signal) {
@@ -371,7 +360,9 @@ class ZLinkRouteMeshRuntimeCoordinator {
371
360
  const classified = drainFailureReason(error);
372
361
  const reason = classified !== 'teardown_failed'
373
362
  ? classified
374
- : deadline.signal.aborted ? 'deadline_exceeded' : classified;
363
+ : deadline.signal.aborted
364
+ ? 'deadline_exceeded'
365
+ : classified;
375
366
  await this.options.forceStopResources(meshName).catch(() => undefined);
376
367
  result = { kind: 'forceStopped', reason };
377
368
  this.transition(meshName, state, contracts_1.ZLinkTopologyState.Failed);
@@ -419,7 +410,9 @@ class ZLinkRouteMeshRuntimeCoordinator {
419
410
  const classified = drainFailureReason(error);
420
411
  const reason = classified !== 'teardown_failed'
421
412
  ? classified
422
- : deadline.signal.aborted ? 'deadline_exceeded' : classified;
413
+ : deadline.signal.aborted
414
+ ? 'deadline_exceeded'
415
+ : classified;
423
416
  await Promise.all(entries.map(([meshName]) => this.options.forceStopResources(meshName).catch(() => undefined)));
424
417
  result = { kind: 'forceStopped', reason };
425
418
  for (const [meshName, state] of entries) {
@@ -438,12 +431,9 @@ class ZLinkRouteMeshRuntimeCoordinator {
438
431
  return result;
439
432
  }
440
433
  async performHostShutdown(cleanupDeadline, remainingTimeoutMs) {
441
- const timeoutMs = Math.max(0, remainingTimeoutMs ?? (cleanupDeadline instanceof Date
442
- ? cleanupDeadline.getTime() - Date.now()
443
- : cleanupDeadline));
444
- const deadlineAt = cleanupDeadline instanceof Date
445
- ? cleanupDeadline
446
- : new Date(Date.now() + cleanupDeadline);
434
+ const timeoutMs = Math.max(0, remainingTimeoutMs ??
435
+ (cleanupDeadline instanceof Date ? cleanupDeadline.getTime() - Date.now() : cleanupDeadline));
436
+ const deadlineAt = cleanupDeadline instanceof Date ? cleanupDeadline : new Date(Date.now() + cleanupDeadline);
447
437
  const entries = [...this.states.entries()];
448
438
  if (entries.length === 0)
449
439
  return { kind: 'drained' };
@@ -472,7 +462,9 @@ class ZLinkRouteMeshRuntimeCoordinator {
472
462
  const classified = drainFailureReason(error);
473
463
  const reason = classified !== 'teardown_failed'
474
464
  ? classified
475
- : deadline.signal.aborted ? 'deadline_exceeded' : classified;
465
+ : deadline.signal.aborted
466
+ ? 'deadline_exceeded'
467
+ : classified;
476
468
  await Promise.all(entries.map(([meshName]) => this.options.forceStopResources(meshName).catch(() => undefined)));
477
469
  result = { kind: 'forceStopped', reason };
478
470
  for (const [meshName, state] of entries) {
@@ -507,15 +499,13 @@ class ZLinkRouteMeshRuntimeCoordinator {
507
499
  const terminal = next === contracts_1.ZLinkTopologyState.Stopped || next === contracts_1.ZLinkTopologyState.Failed;
508
500
  if (current !== undefined) {
509
501
  if (terminal) {
510
- const terminalSequence = current.sequence >= state.sequence
511
- ? current.sequence + 1n
512
- : state.sequence;
502
+ const terminalSequence = current.sequence >= state.sequence ? current.sequence + 1n : state.sequence;
513
503
  state.sequence = terminalSequence;
514
504
  const terminalStatus = {
515
505
  ...current,
516
506
  state: next,
517
507
  isReady: false,
518
- channels: current.channels.map(channel => ({
508
+ channels: current.channels.map((channel) => ({
519
509
  ...channel,
520
510
  isReady: false
521
511
  })),
@@ -594,10 +584,7 @@ class ZLinkRouteMeshRuntimeCoordinator {
594
584
  const peers = node?.peers() ?? [];
595
585
  const nextPeers = peerFingerprintMap(peers);
596
586
  this.peerFingerprints.set(meshName, nextPeers);
597
- for (const peerRid of new Set([
598
- ...previousPeers.keys(),
599
- ...nextPeers.keys()
600
- ])) {
587
+ for (const peerRid of new Set([...previousPeers.keys(), ...nextPeers.keys()])) {
601
588
  if (previousPeers.get(peerRid) === nextPeers.get(peerRid))
602
589
  continue;
603
590
  state.sequence += 1n;
@@ -655,11 +642,10 @@ function placementFingerprint(descriptor) {
655
642
  ]);
656
643
  }
657
644
  function hasRemainingCapacity(capacity) {
658
- return capacity.limit === 0
659
- || capacity.active + (capacity.reserved ?? 0) < capacity.limit;
645
+ return capacity.limit === 0 || capacity.active + (capacity.reserved ?? 0) < capacity.limit;
660
646
  }
661
647
  function peerFingerprintMap(peers) {
662
- return new Map(peers.map(peer => [
648
+ return new Map(peers.map((peer) => [
663
649
  String(peer.routingId),
664
650
  JSON.stringify([
665
651
  peer.lifecycleGeneration.toString(),
@@ -685,20 +671,28 @@ function multiMeshDrainError() {
685
671
  }
686
672
  function backendState(state) {
687
673
  switch (state) {
688
- case 1: return contracts_1.ZLinkTopologyState.Starting;
674
+ case 1:
675
+ return contracts_1.ZLinkTopologyState.Starting;
689
676
  case 2:
690
677
  case 3:
691
- case 4: return contracts_1.ZLinkTopologyState.Ready;
692
- case 5: return contracts_1.ZLinkTopologyState.Stopping;
693
- case 6: return contracts_1.ZLinkTopologyState.Stopped;
694
- default: return contracts_1.ZLinkTopologyState.Failed;
678
+ case 4:
679
+ return contracts_1.ZLinkTopologyState.Ready;
680
+ case 5:
681
+ return contracts_1.ZLinkTopologyState.Stopping;
682
+ case 6:
683
+ return contracts_1.ZLinkTopologyState.Stopped;
684
+ default:
685
+ return contracts_1.ZLinkTopologyState.Failed;
695
686
  }
696
687
  }
697
688
  function peerState(state) {
698
689
  switch (state) {
699
- case 3: return contracts_1.ZLinkPeerState.Ready;
700
- case 4: return contracts_1.ZLinkPeerState.Draining;
701
- case 6: return contracts_1.ZLinkPeerState.NotRequired;
690
+ case 3:
691
+ return contracts_1.ZLinkPeerState.Ready;
692
+ case 4:
693
+ return contracts_1.ZLinkPeerState.Draining;
694
+ case 6:
695
+ return contracts_1.ZLinkPeerState.NotRequired;
702
696
  case 1:
703
697
  case 2:
704
698
  return contracts_1.ZLinkPeerState.Connecting;
@@ -721,8 +715,9 @@ function drainFailureReason(error) {
721
715
  const name = error instanceof Error ? error.name : '';
722
716
  if (name === 'ZLinkDrainingStatePublishError')
723
717
  return 'drain_state_publish_failed';
724
- if (name === 'ZLinkOwnerCleanupError' || error instanceof AggregateError
725
- && error.errors.some((nested) => nested instanceof Error && nested.name === 'ZLinkOwnerCleanupError')) {
718
+ if (name === 'ZLinkOwnerCleanupError' ||
719
+ (error instanceof AggregateError &&
720
+ error.errors.some((nested) => nested instanceof Error && nested.name === 'ZLinkOwnerCleanupError'))) {
726
721
  return 'owner_cleanup_failed';
727
722
  }
728
723
  return 'teardown_failed';
@@ -63,6 +63,5 @@ async function runShutdownStep(errors, step) {
63
63
  function isShutdownAbort(error) {
64
64
  if ((0, abort_1.isAbortError)(error))
65
65
  return true;
66
- return error instanceof AggregateError
67
- && error.errors.every((nested) => isShutdownAbort(nested));
66
+ return error instanceof AggregateError && error.errors.every((nested) => isShutdownAbort(nested));
68
67
  }