@zlink-systems/framework 0.21.0 → 0.23.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 (516) 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/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
  13. package/dist/contracts/Handlers/JsonContract.js +23 -11
  14. package/dist/contracts/Spots/SpotKind.js +16 -8
  15. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
  16. package/dist/location-store-integration.js +16 -16
  17. package/dist/nest-integration.js +17 -11
  18. package/dist/runtime/abort.js +9 -5
  19. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  20. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  21. package/dist/runtime/actors/actor-client.js +83 -63
  22. package/dist/runtime/actors/actor-context.js +28 -22
  23. package/dist/runtime/actors/actor-creation.js +4 -3
  24. package/dist/runtime/actors/actor-handoff.js +89 -92
  25. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
  26. package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
  27. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  28. package/dist/runtime/actors/actor-mailbox.js +1 -1
  29. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  30. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  31. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  32. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  33. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  34. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  35. package/dist/runtime/actors/bound-session-wire.js +14 -9
  36. package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
  37. package/dist/runtime/actors/index.js +2 -5
  38. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  39. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  40. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  41. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  42. package/dist/runtime/admission.js +2 -6
  43. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  44. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  45. package/dist/runtime/backend/contracts/index.d.ts +1 -0
  46. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  47. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  48. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  49. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  50. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  51. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  52. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
  53. package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
  54. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  55. package/dist/runtime/backend/runtime-message.js +3 -3
  56. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  57. package/dist/runtime/backend/runtime-values.js +4 -5
  58. package/dist/runtime/channels/channel-clients.js +27 -24
  59. package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
  60. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  61. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  62. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  63. package/dist/runtime/channels/channel-envelope.js +83 -47
  64. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  65. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  66. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  67. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  68. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  69. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  70. package/dist/runtime/channels/channel-transports.js +46 -42
  71. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  72. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  73. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
  74. package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
  75. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  76. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  77. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  78. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  79. package/dist/runtime/channels/source-spot-router.js +6 -2
  80. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  81. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  82. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  83. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
  84. package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
  85. package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
  86. package/dist/runtime/diagnostics/flow-context.js +2 -2
  87. package/dist/runtime/diagnostics/index.js +38 -10
  88. package/dist/runtime/diagnostics/message-flow.js +58 -42
  89. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  90. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  91. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  92. package/dist/runtime/execution/index.js +7 -6
  93. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  94. package/dist/runtime/execution/state-lane.js +2 -2
  95. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
  96. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  97. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  98. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
  99. package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
  100. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  101. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  102. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  103. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  104. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  105. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  106. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  107. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  108. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  109. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  110. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  111. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
  112. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  113. package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
  114. package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
  115. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  116. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
  117. package/dist/runtime/foundation/service-topology-registry.js +105 -96
  118. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  119. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  120. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  121. package/dist/runtime/framework-errors-internal.js +7 -10
  122. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  123. package/dist/runtime/handlers/index.js +3 -1
  124. package/dist/runtime/host/actor-packet-relay.js +74 -70
  125. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  126. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  127. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  128. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  129. package/dist/runtime/host/application-job-queue.js +18 -22
  130. package/dist/runtime/host/bound-session-relay.js +3 -1
  131. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  132. package/dist/runtime/host/host-capacity-status.js +8 -4
  133. package/dist/runtime/host/index.js +245 -228
  134. package/dist/runtime/host/instance-activation-authority.js +93 -96
  135. package/dist/runtime/host/location-runtime-owner.js +16 -14
  136. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  137. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  138. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  139. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  140. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  141. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  142. package/dist/runtime/host/runtime-shutdown.js +1 -2
  143. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  144. package/dist/runtime/host/spot-address-transport.js +69 -71
  145. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  146. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  147. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  148. package/dist/runtime/locations/actor-location-claims.js +26 -20
  149. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  150. package/dist/runtime/locations/authority-key-codec.js +7 -7
  151. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  152. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  153. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  154. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  155. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  156. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  157. package/dist/runtime/locations/key-codec.js +1 -1
  158. package/dist/runtime/locations/lease-tracker.js +23 -21
  159. package/dist/runtime/locations/lifecycle.js +4 -5
  160. package/dist/runtime/locations/location-store-repository.js +368 -324
  161. package/dist/runtime/locations/opaque-record-key.js +2 -2
  162. package/dist/runtime/locations/resolvers.js +73 -82
  163. package/dist/runtime/locations/runtime.js +68 -63
  164. package/dist/runtime/locations/spot-location-claims.js +39 -35
  165. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  166. package/dist/runtime/messaging/packet-name.js +7 -6
  167. package/dist/runtime/messaging/payload-codec.js +21 -18
  168. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  169. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  170. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
  171. package/dist/runtime/routing-id.js +3 -5
  172. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  173. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  174. package/dist/runtime/spots/index.js +209 -220
  175. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  176. package/dist/runtime/spots/spot-activation-state.js +17 -15
  177. package/dist/runtime/spots/spot-activation.js +33 -16
  178. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  179. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  180. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
  181. package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
  182. package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
  183. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  184. package/dist/runtime/spots/spot-closing.js +3 -7
  185. package/dist/runtime/spots/spot-context.js +2 -2
  186. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  187. package/dist/runtime/spots/spot-handle.js +6 -3
  188. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  189. package/dist/runtime/spots/spot-manager-public.js +5 -6
  190. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  191. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  192. package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
  193. package/dist/runtime/spots/spot-outbound.js +10 -14
  194. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  195. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  196. package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
  197. package/dist/runtime/spots/spot-route-replies.js +4 -6
  198. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  199. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
  200. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  201. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  202. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  203. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  204. package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
  205. package/dist/runtime/spots/spot-timer.js +26 -30
  206. package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
  207. package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
  208. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
  209. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  210. package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
  211. package/dist/runtime/streams/bound-session-response-target.js +8 -1
  212. package/dist/runtime/streams/bound-session-service.d.ts +1 -0
  213. package/dist/runtime/streams/bound-session-service.js +14 -12
  214. package/dist/runtime/streams/index.js +28 -20
  215. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  216. package/dist/runtime/streams/managed-stream.js +52 -31
  217. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  218. package/dist/runtime/streams/protocol.d.ts +5 -1
  219. package/dist/runtime/streams/protocol.js +68 -20
  220. package/dist/runtime/streams/session-actor-coordinator.js +37 -41
  221. package/dist/runtime/streams/session-context.d.ts +9 -2
  222. package/dist/runtime/streams/session-context.js +50 -32
  223. package/dist/runtime/streams/session-local-actors.d.ts +3 -1
  224. package/dist/runtime/streams/session-local-actors.js +17 -2
  225. package/dist/runtime/streams/session-provider.js +2 -2
  226. package/dist/runtime/streams/session-serial-executor.js +1 -2
  227. package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
  228. package/dist/runtime/streams/stream-frame-factory.js +14 -7
  229. package/dist/runtime/streams/stream-session-runtime.js +112 -78
  230. package/dist/runtime/workers/index.js +15 -4
  231. package/package.json +3 -3
  232. package/src/contracts/Channels/RouteCalls.ts +6 -1
  233. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  234. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  235. package/src/contracts/Configuration/Builders.ts +14 -14
  236. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  237. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  238. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  239. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  240. package/src/contracts/Configuration/Registration.ts +46 -17
  241. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  242. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  243. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  244. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  245. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  246. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  247. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  248. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  249. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  250. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  251. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
  252. package/src/contracts/Errors/index.ts +1 -4
  253. package/src/contracts/Handlers/Attributes.ts +15 -9
  254. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  255. package/src/contracts/Handlers/JsonContract.ts +53 -19
  256. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  257. package/src/contracts/Locations/Authority.ts +4 -11
  258. package/src/contracts/Locations/Keys.ts +6 -1
  259. package/src/contracts/Locations/Options.ts +3 -2
  260. package/src/contracts/Locations/RelocationStore.ts +1 -4
  261. package/src/contracts/Locations/Resolvers.ts +5 -5
  262. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  263. package/src/contracts/Locations/Stores.ts +1 -2
  264. package/src/contracts/Locations/index.ts +2 -8
  265. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  266. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  267. package/src/contracts/Spots/Contracts.ts +2 -8
  268. package/src/contracts/Spots/SpotKind.ts +16 -8
  269. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  270. package/src/contracts/Streams/IZLinkSession.ts +2 -2
  271. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  272. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  273. package/src/internal.ts +5 -4
  274. package/src/location-store-integration.ts +24 -16
  275. package/src/nest-integration.ts +40 -25
  276. package/src/runtime/abort.ts +10 -4
  277. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  278. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  279. package/src/runtime/actors/actor-client.ts +162 -133
  280. package/src/runtime/actors/actor-context.ts +142 -134
  281. package/src/runtime/actors/actor-creation.ts +47 -44
  282. package/src/runtime/actors/actor-execution-context.ts +6 -4
  283. package/src/runtime/actors/actor-handoff.ts +269 -293
  284. package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
  285. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  286. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  287. package/src/runtime/actors/actor-mailbox.ts +16 -19
  288. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  289. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  290. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  291. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  292. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  293. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  294. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  295. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  296. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  297. package/src/runtime/actors/bound-session-wire.ts +37 -17
  298. package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
  299. package/src/runtime/actors/index.ts +43 -86
  300. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  301. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  302. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  303. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  304. package/src/runtime/admission.ts +9 -9
  305. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  306. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  307. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  308. package/src/runtime/backend/contracts/index.ts +77 -52
  309. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  310. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  311. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  312. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  313. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  314. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  315. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  316. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  317. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  318. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  319. package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
  320. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  321. package/src/runtime/backend/runtime-message.ts +5 -3
  322. package/src/runtime/backend/runtime-values.ts +10 -7
  323. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  324. package/src/runtime/channels/channel-clients.ts +93 -73
  325. package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
  326. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  327. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  328. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  329. package/src/runtime/channels/channel-envelope.ts +256 -150
  330. package/src/runtime/channels/channel-multipart.ts +13 -5
  331. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  332. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  333. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  334. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  335. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  336. package/src/runtime/channels/channel-socket-options.ts +3 -10
  337. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  338. package/src/runtime/channels/channel-transports.ts +218 -206
  339. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  340. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  341. package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
  342. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  343. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  344. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  345. package/src/runtime/channels/index.ts +1 -4
  346. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  347. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  348. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  349. package/src/runtime/channels/source-spot-router.ts +26 -22
  350. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  351. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  352. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  353. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  354. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  355. package/src/runtime/codecs/index.ts +3 -2
  356. package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
  357. package/src/runtime/diagnostics/flow-context.ts +18 -7
  358. package/src/runtime/diagnostics/index.ts +96 -61
  359. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  360. package/src/runtime/diagnostics/message-flow.ts +107 -79
  361. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  362. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  363. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  364. package/src/runtime/execution/index.ts +18 -26
  365. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  366. package/src/runtime/execution/state-lane.ts +2 -2
  367. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
  368. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  369. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  370. package/src/runtime/foundation/operation-identity.ts +1 -2
  371. package/src/runtime/foundation/operation-registry.ts +8 -2
  372. package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
  373. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  374. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  375. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  376. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  377. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  378. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  379. package/src/runtime/foundation/service-mailbox.ts +14 -14
  380. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  381. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  382. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  383. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  384. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  385. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  386. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  387. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
  388. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  389. package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
  390. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  391. package/src/runtime/foundation/service-topology-registry.ts +170 -159
  392. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  393. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  394. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  395. package/src/runtime/framework-errors-internal.ts +31 -30
  396. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  397. package/src/runtime/handlers/index.ts +18 -8
  398. package/src/runtime/host/actor-packet-relay.ts +290 -261
  399. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  400. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  401. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  402. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  403. package/src/runtime/host/application-job-queue.ts +32 -48
  404. package/src/runtime/host/bound-session-relay.ts +7 -9
  405. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  406. package/src/runtime/host/host-capacity-status.ts +10 -9
  407. package/src/runtime/host/index.ts +861 -789
  408. package/src/runtime/host/instance-activation-authority.ts +125 -143
  409. package/src/runtime/host/location-runtime-owner.ts +38 -26
  410. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  411. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  412. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  413. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  414. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  415. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  416. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  417. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  418. package/src/runtime/host/runtime-shutdown.ts +4 -3
  419. package/src/runtime/host/service-relocation-control.ts +14 -5
  420. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  421. package/src/runtime/host/spot-address-transport.ts +284 -237
  422. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  423. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  424. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  425. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  426. package/src/runtime/locations/actor-location-claims.ts +61 -49
  427. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  428. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  429. package/src/runtime/locations/authority-key-codec.ts +13 -10
  430. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  431. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  432. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  433. package/src/runtime/locations/canonical-codec.ts +3 -1
  434. package/src/runtime/locations/creation-operation-id.ts +4 -3
  435. package/src/runtime/locations/domain-store-contract.ts +13 -7
  436. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  437. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  438. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  439. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  440. package/src/runtime/locations/key-codec.ts +3 -4
  441. package/src/runtime/locations/lease-tracker.ts +36 -27
  442. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  443. package/src/runtime/locations/lifecycle.ts +33 -28
  444. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  445. package/src/runtime/locations/opaque-record-key.ts +4 -9
  446. package/src/runtime/locations/resolvers.ts +201 -178
  447. package/src/runtime/locations/runtime.ts +251 -159
  448. package/src/runtime/locations/spot-location-claims.ts +110 -112
  449. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  450. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  451. package/src/runtime/messaging/packet-name.ts +8 -6
  452. package/src/runtime/messaging/payload-codec.ts +70 -50
  453. package/src/runtime/messaging/submission-result.ts +6 -9
  454. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  455. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
  456. package/src/runtime/routing-id.ts +10 -7
  457. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  458. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  459. package/src/runtime/spots/index.ts +595 -564
  460. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  461. package/src/runtime/spots/spot-activation-state.ts +43 -51
  462. package/src/runtime/spots/spot-activation.ts +179 -116
  463. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  464. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  465. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  466. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  467. package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
  468. package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
  469. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  470. package/src/runtime/spots/spot-closing.ts +11 -12
  471. package/src/runtime/spots/spot-context.ts +46 -26
  472. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  473. package/src/runtime/spots/spot-handle.ts +17 -15
  474. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  475. package/src/runtime/spots/spot-location-claim.ts +5 -4
  476. package/src/runtime/spots/spot-manager-public.ts +62 -82
  477. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  478. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  479. package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
  480. package/src/runtime/spots/spot-outbound.ts +47 -59
  481. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  482. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  483. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  484. package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
  485. package/src/runtime/spots/spot-route-replies.ts +23 -24
  486. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  487. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  488. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
  489. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  490. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  491. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  492. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  493. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  494. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  495. package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
  496. package/src/runtime/spots/spot-timer.ts +103 -91
  497. package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
  498. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
  499. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  500. package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
  501. package/src/runtime/streams/bound-session-response-target.ts +39 -9
  502. package/src/runtime/streams/bound-session-service.ts +52 -42
  503. package/src/runtime/streams/index.ts +183 -100
  504. package/src/runtime/streams/managed-stream.ts +123 -90
  505. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  506. package/src/runtime/streams/protocol.ts +115 -46
  507. package/src/runtime/streams/session-actor-coordinator.ts +109 -93
  508. package/src/runtime/streams/session-calls.ts +2 -8
  509. package/src/runtime/streams/session-context.ts +96 -51
  510. package/src/runtime/streams/session-local-actors.ts +19 -3
  511. package/src/runtime/streams/session-provider.ts +5 -7
  512. package/src/runtime/streams/session-serial-executor.ts +7 -6
  513. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  514. package/src/runtime/streams/stream-frame-factory.ts +59 -40
  515. package/src/runtime/streams/stream-session-runtime.ts +317 -214
  516. package/src/runtime/workers/index.ts +68 -29
@@ -64,15 +64,15 @@ class ZLinkChannelSocketRegistry {
64
64
  const clientServerPollers = clientServerConnections.map((connection) => connection.readablePoller);
65
65
  const sockets = [
66
66
  ...this.clientDealers.values(),
67
- ...clientServerConnections.map(value => value.dealer),
68
- ...[...this.fanoutConnections.values()].map(value => value.subscriber),
67
+ ...clientServerConnections.map((value) => value.dealer),
68
+ ...[...this.fanoutConnections.values()].map((value) => value.subscriber),
69
69
  ...this.channelRouters.values(),
70
70
  ...this.publishers.values(),
71
71
  ...this.routeRouters.values()
72
72
  ];
73
73
  for (const socket of new Set([
74
74
  ...this.clientDealers.values(),
75
- ...clientServerConnections.map(value => value.dealer),
75
+ ...clientServerConnections.map((value) => value.dealer),
76
76
  ...this.channelRouters.values(),
77
77
  ...this.routeRouters.values()
78
78
  ]))
@@ -149,8 +149,7 @@ class ZLinkChannelSocketRegistry {
149
149
  this.registerReceiveFlowSocket(router);
150
150
  router.setChannelName(channelName);
151
151
  const identity = this.clientServerIdentities.get(channelName) ?? {
152
- serverRid: channel.server.routingId
153
- ?? `${channel.routingIdPrefix ?? 'cs'}-${(0, node_crypto_1.randomUUID)()}`,
152
+ serverRid: channel.server.routingId ?? `${channel.routingIdPrefix ?? 'cs'}-${(0, node_crypto_1.randomUUID)()}`,
154
153
  lifecycleGeneration: newLifecycleGeneration()
155
154
  };
156
155
  this.clientServerIdentities.set(channelName, identity);
@@ -166,11 +165,11 @@ class ZLinkChannelSocketRegistry {
166
165
  monitor.onEvent((event) => {
167
166
  if (event.routingId === undefined)
168
167
  return;
169
- if (event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected
170
- && event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.Closed
171
- && event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedNoDetail
172
- && event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedProtocol
173
- && event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedAuth)
168
+ if (event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected &&
169
+ event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.Closed &&
170
+ event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedNoDetail &&
171
+ event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedProtocol &&
172
+ event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedAuth)
174
173
  return;
175
174
  const routingId = String(event.routingId);
176
175
  this.clientServerServerPeers.delete(clientServerServerPeerKey(channelName, routingId));
@@ -283,7 +282,7 @@ class ZLinkChannelSocketRegistry {
283
282
  this.ensureClientServerLivenessTimer();
284
283
  try {
285
284
  monitor.onEvent((event) => {
286
- if (![...connection.aliases].some(alias => this.clientServerConnections.get(alias) === connection))
285
+ if (![...connection.aliases].some((alias) => this.clientServerConnections.get(alias) === connection))
287
286
  return;
288
287
  for (const handler of this.clientServerMonitorHandlers.get(channelName) ?? []) {
289
288
  handler(event);
@@ -300,15 +299,15 @@ class ZLinkChannelSocketRegistry {
300
299
  }
301
300
  return;
302
301
  }
303
- if (event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected
304
- || event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.Closed
305
- || event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedNoDetail
306
- || event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedProtocol
307
- || event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedAuth) {
308
- if (connection.terminationRequested
309
- && (event.remoteAddr !== connection.endpoint
310
- || (event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected
311
- && event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.Closed)))
302
+ if (event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected ||
303
+ event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.Closed ||
304
+ event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedNoDetail ||
305
+ event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedProtocol ||
306
+ event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedAuth) {
307
+ if (connection.terminationRequested &&
308
+ (event.remoteAddr !== connection.endpoint ||
309
+ (event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected &&
310
+ event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.Closed)))
312
311
  return;
313
312
  connection.physicalConnectionId = Symbol(connectionId);
314
313
  connection.admissionAttempt = undefined;
@@ -354,8 +353,9 @@ class ZLinkChannelSocketRegistry {
354
353
  this.clientServerDiscovery.removeClientServer(ready.channelName, ready.serverRoutingId, connectionId);
355
354
  current.readyConnectionId = undefined;
356
355
  const replacement = current.aliases.values().next().value;
357
- if (replacement !== undefined && current.admittedDescriptor !== undefined
358
- && this.clientServerDiscovery.admitClientServer(current.admittedDescriptor, replacement)) {
356
+ if (replacement !== undefined &&
357
+ current.admittedDescriptor !== undefined &&
358
+ this.clientServerDiscovery.admitClientServer(current.admittedDescriptor, replacement)) {
359
359
  current.readyConnectionId = replacement;
360
360
  this.clientServerReadyIdentities.set(replacement, {
361
361
  channelName: current.admittedDescriptor.channelName,
@@ -378,13 +378,10 @@ class ZLinkChannelSocketRegistry {
378
378
  this.ownedMonitors.delete(current.monitor);
379
379
  this.unregisterReceiveFlowSocket(current.dealer);
380
380
  current.readablePoller.dispose();
381
- const results = await Promise.allSettled([
382
- current.monitor.dispose(),
383
- current.dealer.dispose()
384
- ]);
381
+ const results = await Promise.allSettled([current.monitor.dispose(), current.dealer.dispose()]);
385
382
  const errors = results
386
383
  .filter((result) => result.status === 'rejected')
387
- .map(result => result.reason);
384
+ .map((result) => result.reason);
388
385
  if (errors.length === 1)
389
386
  throw errors[0];
390
387
  if (errors.length > 1) {
@@ -401,10 +398,9 @@ class ZLinkChannelSocketRegistry {
401
398
  connection.admittedDescriptor = descriptor;
402
399
  return admitted;
403
400
  }
404
- const duplicateId = [...this.clientServerReadyIdentities]
405
- .find(([, identity]) => identity.channelName === descriptor.channelName
406
- && identity.serverRoutingId === descriptor.serverRoutingId
407
- && identity.lifecycleGeneration === descriptor.lifecycleGeneration)?.[0];
401
+ const duplicateId = [...this.clientServerReadyIdentities].find(([, identity]) => identity.channelName === descriptor.channelName &&
402
+ identity.serverRoutingId === descriptor.serverRoutingId &&
403
+ identity.lifecycleGeneration === descriptor.lifecycleGeneration)?.[0];
408
404
  if (duplicateId !== undefined) {
409
405
  const shared = this.clientServerConnections.get(duplicateId);
410
406
  if (shared !== undefined && shared !== connection) {
@@ -415,8 +411,7 @@ class ZLinkChannelSocketRegistry {
415
411
  shared.callbacksByAlias.set(connectionId, callbacks);
416
412
  connection.aliases.clear();
417
413
  connection.callbacksByAlias.clear();
418
- void this.disposeClientServerPhysical(connectionId, connection)
419
- .catch(error => this.oneWayFailureSink?.(error));
414
+ void this.disposeClientServerPhysical(connectionId, connection).catch((error) => this.oneWayFailureSink?.(error));
420
415
  return true;
421
416
  }
422
417
  }
@@ -494,9 +489,11 @@ class ZLinkChannelSocketRegistry {
494
489
  */
495
490
  async awaitClientDealerForOutbound(channelName, signal, deadlineAtMs) {
496
491
  const startedAtMs = performance.now();
497
- const deadline = Math.min(deadlineAtMs ?? startedAtMs + (this.registration.channels.get(channelName)?.requestTimeoutMs
498
- ?? this.registration.requestTimeoutMs
499
- ?? DEFAULT_REQUEST_TIMEOUT_MS), startedAtMs + CLIENT_SERVER_READY_WAIT_CAP_MS);
492
+ const deadline = Math.min(deadlineAtMs ??
493
+ startedAtMs +
494
+ (this.registration.channels.get(channelName)?.requestTimeoutMs ??
495
+ this.registration.requestTimeoutMs ??
496
+ DEFAULT_REQUEST_TIMEOUT_MS), startedAtMs + CLIENT_SERVER_READY_WAIT_CAP_MS);
500
497
  for (;;) {
501
498
  this.drainSocketMonitors();
502
499
  const dealer = this.clientDealerForOutbound(channelName);
@@ -506,7 +503,7 @@ class ZLinkChannelSocketRegistry {
506
503
  if (remainingMs <= 0)
507
504
  return undefined;
508
505
  (0, abort_1.throwIfAborted)(signal);
509
- await new Promise(resolve => {
506
+ await new Promise((resolve) => {
510
507
  setTimeout(resolve, Math.min(CLIENT_SERVER_READY_POLL_INTERVAL_MS, remainingMs));
511
508
  });
512
509
  }
@@ -521,8 +518,7 @@ class ZLinkChannelSocketRegistry {
521
518
  continue;
522
519
  const open = (endpoint) => this.openManualClientServerConnection(channelName, endpoint);
523
520
  const close = (endpoint) => {
524
- void this.closeClientServerConnection(manualClientServerConnectionId(channelName, endpoint))
525
- .catch(error => this.oneWayFailureSink?.(error));
521
+ void this.closeClientServerConnection(manualClientServerConnectionId(channelName, endpoint)).catch((error) => this.oneWayFailureSink?.(error));
526
522
  };
527
523
  (0, RuntimeEndpointConnections_1.attachEndpointConnections)(client, { connect: open, disconnect: close });
528
524
  for (const endpoint of endpoints) {
@@ -575,15 +571,22 @@ class ZLinkChannelSocketRegistry {
575
571
  clientServerActiveTargets(channelName) {
576
572
  const descriptors = this.clientServerDiscovery.clientServerDescriptors(channelName);
577
573
  const local = this.clientServerServerDescriptors.get(channelName);
578
- if (local === undefined || descriptors.some(descriptor => descriptor.serverRoutingId === local.serverRid
579
- && descriptor.lifecycleGeneration === local.lifecycleGeneration))
574
+ if (local === undefined ||
575
+ descriptors.some((descriptor) => descriptor.serverRoutingId === local.serverRid &&
576
+ descriptor.lifecycleGeneration === local.lifecycleGeneration))
580
577
  return descriptors;
581
- return [...descriptors, {
578
+ return [
579
+ ...descriptors,
580
+ {
582
581
  serverRoutingId: local.serverRid,
583
582
  weight: local.weight,
584
583
  state: (0, runtime_state_projections_1.discoveryAvailabilityForRuntimeState)(local.state)
585
- }].sort((left, right) => left.serverRoutingId < right.serverRoutingId ? -1
586
- : left.serverRoutingId > right.serverRoutingId ? 1 : 0);
584
+ }
585
+ ].sort((left, right) => left.serverRoutingId < right.serverRoutingId
586
+ ? -1
587
+ : left.serverRoutingId > right.serverRoutingId
588
+ ? 1
589
+ : 0);
587
590
  }
588
591
  hasKnownClientServerTargets(channelName) {
589
592
  return this.clientServerDiscovery.clientServerDescriptors(channelName).length > 0;
@@ -629,29 +632,29 @@ class ZLinkChannelSocketRegistry {
629
632
  let reply;
630
633
  try {
631
634
  const record = (0, client_server_service_wire_1.decodeClientServerControl)(first.data());
632
- if (record.kind === 'livenessProbe'
633
- && received.parts.length === 1
634
- && received.replyToken !== null) {
635
+ if (record.kind === 'livenessProbe' &&
636
+ received.parts.length === 1 &&
637
+ received.replyToken !== null) {
635
638
  reply = (0, client_server_service_wire_1.encodeClientServerLivenessAck)(record.probeId);
636
639
  }
637
- else if (record.kind === 'livenessAck'
638
- && received.parts.length === 1
639
- && received.replyToken === null) {
640
+ else if (record.kind === 'livenessAck' &&
641
+ received.parts.length === 1 &&
642
+ received.replyToken === null) {
640
643
  if (!this.acceptClientServerServerLivenessAck(channelName, String(received.routingId), record.probeId)) {
641
644
  this.reportStaleClientServerLivenessAck(channelName, String(received.routingId), record.probeId);
642
645
  }
643
646
  return true;
644
647
  }
645
- else if (record.kind !== 'hello'
646
- || received.parts.length !== 1
647
- || received.replyToken === null) {
648
+ else if (record.kind !== 'hello' ||
649
+ received.parts.length !== 1 ||
650
+ received.replyToken === null) {
648
651
  reply = (0, client_server_service_wire_1.encodeClientServerReject)(1);
649
652
  }
650
653
  else {
651
654
  const descriptor = this.clientServerServerDescriptors.get(channelName);
652
- if (descriptor === undefined
653
- || record.hello.channelName !== channelName
654
- || record.hello.securityIdentity !== descriptor.securityIdentity) {
655
+ if (descriptor === undefined ||
656
+ record.hello.channelName !== channelName ||
657
+ record.hello.securityIdentity !== descriptor.securityIdentity) {
655
658
  reply = (0, client_server_service_wire_1.encodeClientServerReject)(3);
656
659
  }
657
660
  else {
@@ -678,8 +681,8 @@ class ZLinkChannelSocketRegistry {
678
681
  tickClientServerLiveness(nowMs = performance.now()) {
679
682
  this.drainSocketMonitors();
680
683
  for (const connection of new Set(this.clientServerConnections.values())) {
681
- const connectionId = connection.readyConnectionId
682
- ?? connection.aliases.values().next().value;
684
+ const connectionId = connection.readyConnectionId ??
685
+ connection.aliases.values().next().value;
683
686
  if (connectionId === undefined)
684
687
  continue;
685
688
  this.drainClientServerControl(connectionId, connection);
@@ -756,11 +759,11 @@ class ZLinkChannelSocketRegistry {
756
759
  connection.transportReady = true;
757
760
  return;
758
761
  }
759
- if (event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected
760
- || event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.Closed
761
- || event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedNoDetail
762
- || event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedProtocol
763
- || event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedAuth) {
762
+ if (event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected ||
763
+ event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.Closed ||
764
+ event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedNoDetail ||
765
+ event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedProtocol ||
766
+ event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.HandshakeFailedAuth) {
764
767
  connection.transportReady = false;
765
768
  connection.ready = false;
766
769
  connection.deadlineAt = undefined;
@@ -795,7 +798,7 @@ class ZLinkChannelSocketRegistry {
795
798
  ]);
796
799
  const errors = results
797
800
  .filter((result) => result.status === 'rejected')
798
- .map(result => result.reason);
801
+ .map((result) => result.reason);
799
802
  if (errors.length === 1)
800
803
  throw errors[0];
801
804
  if (errors.length > 1) {
@@ -837,7 +840,7 @@ class ZLinkChannelSocketRegistry {
837
840
  let disposed = false;
838
841
  return {
839
842
  nativeInstance: {},
840
- onEvent: next => {
843
+ onEvent: (next) => {
841
844
  if (disposed)
842
845
  return;
843
846
  if (handler !== undefined) {
@@ -867,7 +870,7 @@ class ZLinkChannelSocketRegistry {
867
870
  let handler;
868
871
  let disposed = false;
869
872
  return {
870
- onChange: next => {
873
+ onChange: (next) => {
871
874
  if (disposed)
872
875
  return;
873
876
  if (handler !== undefined) {
@@ -920,15 +923,13 @@ class ZLinkChannelSocketRegistry {
920
923
  }
921
924
  }
922
925
  for (const [connectionId, connection] of [...this.fanoutConnections]) {
923
- if (connection.deadlineAt === undefined
924
- || nowMs < connection.deadlineAt)
926
+ if (connection.deadlineAt === undefined || nowMs < connection.deadlineAt)
925
927
  continue;
926
928
  connection.ready = false;
927
929
  connection.deadlineAt = undefined;
928
930
  connection.callbacks.onTerminated('deadline');
929
931
  if (this.fanoutConnections.get(connectionId) === connection) {
930
- void this.closeFanoutSubscriberConnection(connectionId)
931
- .catch(error => this.oneWayFailureSink?.(error));
932
+ void this.closeFanoutSubscriberConnection(connectionId).catch((error) => this.oneWayFailureSink?.(error));
932
933
  }
933
934
  }
934
935
  }
@@ -940,8 +941,7 @@ class ZLinkChannelSocketRegistry {
940
941
  return;
941
942
  this.openClientServerConnection(channelName, connectionId, endpoint, {
942
943
  onTransportReady: () => {
943
- void this.admitConfiguredClientServerConnection(channelName, connectionId)
944
- .catch(error => this.oneWayFailureSink?.(error));
944
+ void this.admitConfiguredClientServerConnection(channelName, connectionId).catch((error) => this.oneWayFailureSink?.(error));
945
945
  },
946
946
  onTerminated: () => this.removeReadyConnection(connectionId)
947
947
  });
@@ -958,12 +958,11 @@ class ZLinkChannelSocketRegistry {
958
958
  let retryAdmission = false;
959
959
  try {
960
960
  const admission = await requestClientServerAdmission(connection.dealer, channelName, 'default', 15_000);
961
- if (this.clientServerConnections.get(connectionId) !== connection
962
- || connection.physicalConnectionId !== physicalConnectionId
963
- || connection.admissionAttempt !== admissionAttempt)
961
+ if (this.clientServerConnections.get(connectionId) !== connection ||
962
+ connection.physicalConnectionId !== physicalConnectionId ||
963
+ connection.admissionAttempt !== admissionAttempt)
964
964
  return;
965
- if (admission.channelName !== channelName
966
- || admission.securityIdentity !== 'default') {
965
+ if (admission.channelName !== channelName || admission.securityIdentity !== 'default') {
967
966
  throw new configuration_1.ZLinkConfigurationException(`ClientServer '${channelName}' admission does not match its configured identity.`);
968
967
  }
969
968
  if (!this.admitClientServerConnection(admissionToDiscoveryDescriptor(admission), connectionId)) {
@@ -971,9 +970,9 @@ class ZLinkChannelSocketRegistry {
971
970
  }
972
971
  }
973
972
  catch (error) {
974
- if (this.clientServerConnections.get(connectionId) !== connection
975
- || connection.physicalConnectionId !== physicalConnectionId
976
- || connection.admissionAttempt !== admissionAttempt)
973
+ if (this.clientServerConnections.get(connectionId) !== connection ||
974
+ connection.physicalConnectionId !== physicalConnectionId ||
975
+ connection.admissionAttempt !== admissionAttempt)
977
976
  return;
978
977
  this.removeReadyConnection(connectionId);
979
978
  if ((0, runtime_values_1.isBackendRequestTimeoutError)(error)) {
@@ -983,13 +982,12 @@ class ZLinkChannelSocketRegistry {
983
982
  throw error;
984
983
  }
985
984
  finally {
986
- if (this.clientServerConnections.get(connectionId) === connection
987
- && connection.physicalConnectionId === physicalConnectionId
988
- && connection.admissionAttempt === admissionAttempt) {
985
+ if (this.clientServerConnections.get(connectionId) === connection &&
986
+ connection.physicalConnectionId === physicalConnectionId &&
987
+ connection.admissionAttempt === admissionAttempt) {
989
988
  connection.admissionAttempt = undefined;
990
989
  if (retryAdmission) {
991
- void this.admitConfiguredClientServerConnection(channelName, connectionId)
992
- .catch(error => this.oneWayFailureSink?.(error));
990
+ void this.admitConfiguredClientServerConnection(channelName, connectionId).catch((error) => this.oneWayFailureSink?.(error));
993
991
  }
994
992
  }
995
993
  }
@@ -1006,14 +1004,14 @@ class ZLinkChannelSocketRegistry {
1006
1004
  return;
1007
1005
  }
1008
1006
  try {
1009
- if (received.parts.length !== 1
1010
- || !(0, client_server_service_wire_1.isClientServerControlFrame)(received.parts[0].data())) {
1007
+ if (received.parts.length !== 1 || !(0, client_server_service_wire_1.isClientServerControlFrame)(received.parts[0].data())) {
1011
1008
  throw new configuration_1.ZLinkConfigurationException(`ClientServer '${connection.channelName}' received an unsolicited application frame.`);
1012
1009
  }
1013
1010
  const record = (0, client_server_service_wire_1.decodeClientServerControl)(received.parts[0].data());
1014
1011
  if (record.kind === 'livenessProbe') {
1015
1012
  const ack = runtime_message_1.ZLinkBufferMessage.from((0, client_server_service_wire_1.encodeClientServerLivenessAck)(record.probeId));
1016
- void connection.dealer.send(ack)
1013
+ void connection.dealer
1014
+ .send(ack)
1017
1015
  .catch((error) => {
1018
1016
  this.removeReadyConnection(connectionId);
1019
1017
  this.oneWayFailureSink?.(error);
@@ -1052,21 +1050,22 @@ class ZLinkChannelSocketRegistry {
1052
1050
  }
1053
1051
  applyClientServerDescriptorUpdate(connectionId, connection, admission) {
1054
1052
  const currentConnection = this.clientServerConnections.get(connectionId);
1055
- if (currentConnection === undefined
1056
- || currentConnection.physicalConnectionId !== connection.physicalConnectionId)
1053
+ if (currentConnection === undefined ||
1054
+ currentConnection.physicalConnectionId !== connection.physicalConnectionId)
1057
1055
  return;
1058
1056
  const identity = this.clientServerReadyIdentities.get(connectionId);
1059
1057
  if (identity === undefined)
1060
1058
  return;
1061
- const current = this.clientServerDiscovery.clientServerDescriptors(connection.channelName)
1062
- .find(value => value.serverRoutingId === identity.serverRoutingId);
1059
+ const current = this.clientServerDiscovery
1060
+ .clientServerDescriptors(connection.channelName)
1061
+ .find((value) => value.serverRoutingId === identity.serverRoutingId);
1063
1062
  if (current === undefined)
1064
1063
  return;
1065
- if (admission.channelName !== current.channelName
1066
- || admission.serverRid !== current.serverRoutingId
1067
- || admission.lifecycleGeneration !== current.lifecycleGeneration
1068
- || admission.securityIdentity !== current.securityIdentity
1069
- || admission.advertisedEndpoint !== current.advertisedEndpoint) {
1064
+ if (admission.channelName !== current.channelName ||
1065
+ admission.serverRid !== current.serverRoutingId ||
1066
+ admission.lifecycleGeneration !== current.lifecycleGeneration ||
1067
+ admission.securityIdentity !== current.securityIdentity ||
1068
+ admission.advertisedEndpoint !== current.advertisedEndpoint) {
1070
1069
  throw new configuration_1.ZLinkConfigurationException(`ClientServer '${connection.channelName}' descriptor update changed immutable identity.`);
1071
1070
  }
1072
1071
  const candidate = admissionToDiscoveryDescriptor(admission);
@@ -1114,13 +1113,14 @@ class ZLinkChannelSocketRegistry {
1114
1113
  }
1115
1114
  requestClientServerLiveness(connectionId, connection, probeId) {
1116
1115
  const message = runtime_message_1.ZLinkBufferMessage.from((0, client_server_service_wire_1.encodeClientServerLivenessProbe)(probeId));
1117
- void connection.dealer.request(message, CLIENT_SERVER_PEER_DEADLINE_MS)
1116
+ void connection.dealer
1117
+ .request(message, CLIENT_SERVER_PEER_DEADLINE_MS)
1118
1118
  .then((parts) => {
1119
1119
  try {
1120
1120
  const current = this.clientServerConnections.get(connectionId);
1121
- if (current === undefined
1122
- || current.physicalConnectionId !== connection.physicalConnectionId
1123
- || parts.length !== 1)
1121
+ if (current === undefined ||
1122
+ current.physicalConnectionId !== connection.physicalConnectionId ||
1123
+ parts.length !== 1)
1124
1124
  return;
1125
1125
  const record = (0, client_server_service_wire_1.decodeClientServerControl)(parts[0].data());
1126
1126
  if (record.kind !== 'livenessAck')
@@ -1164,7 +1164,8 @@ class ZLinkChannelSocketRegistry {
1164
1164
  if (router === undefined)
1165
1165
  return;
1166
1166
  const message = runtime_message_1.ZLinkBufferMessage.from((0, client_server_service_wire_1.encodeClientServerLivenessProbe)(probeId));
1167
- void router.send(peer.routingId, message)
1167
+ void router
1168
+ .send(peer.routingId, message)
1168
1169
  .catch((error) => this.oneWayFailureSink?.(error))
1169
1170
  .finally(() => message.close());
1170
1171
  }
@@ -1191,7 +1192,8 @@ class ZLinkChannelSocketRegistry {
1191
1192
  continue;
1192
1193
  }
1193
1194
  const message = runtime_message_1.ZLinkBufferMessage.from((0, client_server_service_wire_1.encodeClientServerUpdate)(descriptor, peer.normalizedEffectiveMaxMessageBytes));
1194
- void router.send(routingId, message)
1195
+ void router
1196
+ .send(routingId, message)
1195
1197
  .catch((error) => {
1196
1198
  clients.delete(routingId);
1197
1199
  this.oneWayFailureSink?.(error);
@@ -1229,7 +1231,9 @@ class ZLinkChannelSocketRegistry {
1229
1231
  const channel = this.registration.channels.get(channelName);
1230
1232
  const publisher = this.publishers.get(channelName);
1231
1233
  const boundEndpoint = publisher?.lastEndpoint;
1232
- if (channel?.publisher === undefined || boundEndpoint === undefined || boundEndpoint.length === 0) {
1234
+ if (channel?.publisher === undefined ||
1235
+ boundEndpoint === undefined ||
1236
+ boundEndpoint.length === 0) {
1233
1237
  return undefined;
1234
1238
  }
1235
1239
  return advertisedEndpoint(boundEndpoint, channel.publisher.advertiseHost);
@@ -1250,8 +1254,7 @@ class ZLinkChannelSocketRegistry {
1250
1254
  typeof router.setProbe === 'function') {
1251
1255
  router.setProbe(true);
1252
1256
  }
1253
- router.setRoutingId(routeChannel.routingId
1254
- ?? `${routeChannel.routingIdPrefix ?? routerChannelId}-${(0, node_crypto_1.randomUUID)()}`);
1257
+ router.setRoutingId(routeChannel.routingId ?? `${routeChannel.routingIdPrefix ?? routerChannelId}-${(0, node_crypto_1.randomUUID)()}`);
1255
1258
  const publicWeight = routeChannel.weight ?? 100;
1256
1259
  this.routeMeshPublicWeights.set(routerChannelId, publicWeight);
1257
1260
  router.peerWeight = rawAvailabilityWeight(publicWeight);
@@ -1283,7 +1286,7 @@ class ZLinkChannelSocketRegistry {
1283
1286
  router.peerWeight = rawAvailabilityWeight(weight);
1284
1287
  }
1285
1288
  registerReceiveFlowSocket(socket) {
1286
- this.applicationJobQueue?.registerReceiveFlowTarget(socket, state => socket.setReceiveFlowState(state === 'paused' ? 1 : 0), this.oneWayFailureSink);
1289
+ this.applicationJobQueue?.registerReceiveFlowTarget(socket, (state) => socket.setReceiveFlowState(state === 'paused' ? 1 : 0), this.oneWayFailureSink);
1287
1290
  }
1288
1291
  unregisterReceiveFlowSocket(socket) {
1289
1292
  this.applicationJobQueue?.unregisterReceiveFlowTarget(socket);
@@ -1298,7 +1301,8 @@ class ZLinkChannelSocketRegistry {
1298
1301
  const monitor = this.monitoringAdapter.openSocketMonitor(socket);
1299
1302
  this.ownedMonitors.add(monitor);
1300
1303
  monitor.onEvent((event) => {
1301
- if (event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected && event.remoteAddr.length > 0) {
1304
+ if (event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected &&
1305
+ event.remoteAddr.length > 0) {
1302
1306
  handler(event.remoteAddr);
1303
1307
  }
1304
1308
  });
@@ -1311,12 +1315,13 @@ class ZLinkChannelSocketRegistry {
1311
1315
  this.ownedMonitors.add(monitor);
1312
1316
  monitor.onEvent((event) => {
1313
1317
  const routingId = event.routingId === undefined ? undefined : String(event.routingId);
1314
- if (event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.ConnectionReady && routingId !== undefined) {
1318
+ if (event.nativeEvent === internal_event_contracts_1.ZLinkSocketNativeEventType.ConnectionReady &&
1319
+ routingId !== undefined) {
1315
1320
  this.routeMembers.observeReady(routerChannelId, routingId, event.remoteAddr);
1316
1321
  return;
1317
1322
  }
1318
- if (event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected
1319
- && event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.Closed)
1323
+ if (event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected &&
1324
+ event.nativeEvent !== internal_event_contracts_1.ZLinkSocketNativeEventType.Closed)
1320
1325
  return;
1321
1326
  this.routeMembers.observeTermination(routerChannelId, routingId, event.remoteAddr);
1322
1327
  });
@@ -1375,15 +1380,15 @@ function admissionToDiscoveryDescriptor(admission) {
1375
1380
  };
1376
1381
  }
1377
1382
  function sameClientServerDiscoveryDescriptor(left, right) {
1378
- return left.channelName === right.channelName
1379
- && left.serverRoutingId === right.serverRoutingId
1380
- && left.lifecycleGeneration === right.lifecycleGeneration
1381
- && left.descriptorRevision === right.descriptorRevision
1382
- && left.weight === right.weight
1383
- && left.state === right.state
1384
- && left.securityIdentity === right.securityIdentity
1385
- && left.effectiveMaxMessageBytes === right.effectiveMaxMessageBytes
1386
- && left.advertisedEndpoint === right.advertisedEndpoint;
1383
+ return (left.channelName === right.channelName &&
1384
+ left.serverRoutingId === right.serverRoutingId &&
1385
+ left.lifecycleGeneration === right.lifecycleGeneration &&
1386
+ left.descriptorRevision === right.descriptorRevision &&
1387
+ left.weight === right.weight &&
1388
+ left.state === right.state &&
1389
+ left.securityIdentity === right.securityIdentity &&
1390
+ left.effectiveMaxMessageBytes === right.effectiveMaxMessageBytes &&
1391
+ left.advertisedEndpoint === right.advertisedEndpoint);
1387
1392
  }
1388
1393
  function closeMessages(parts) {
1389
1394
  for (const part of parts)
@@ -1425,9 +1430,7 @@ function advertisedEndpoint(boundEndpoint, advertiseHost) {
1425
1430
  return result;
1426
1431
  }
1427
1432
  function normalizedMessageLimit(value) {
1428
- return Number.isSafeInteger(value) && value > 0
1429
- ? Math.min(value, 0xffff_ffff)
1430
- : 0x7fff_ffff;
1433
+ return Number.isSafeInteger(value) && value > 0 ? Math.min(value, 0xffff_ffff) : 0x7fff_ffff;
1431
1434
  }
1432
1435
  function requirePublicWeight(weight) {
1433
1436
  if (!Number.isInteger(weight) || weight < 0 || weight > 10_000) {