@zlink-systems/framework 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  3. package/dist/contracts/Common/CoreTypes.js +7 -0
  4. package/dist/contracts/Common/index.d.ts +1 -1
  5. package/dist/contracts/Common/index.js +0 -1
  6. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  7. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  8. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  9. package/dist/contracts/Configuration/Registration.js +58 -36
  10. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  12. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  16. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  17. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  18. package/dist/contracts/Handlers/JsonContract.js +10 -4
  19. package/dist/contracts/Locations/Authority.d.ts +1 -1
  20. package/dist/contracts/Locations/Authority.js +3 -2
  21. package/dist/contracts/Locations/Options.js +1 -1
  22. package/dist/contracts/Locations/Stores.d.ts +12 -0
  23. package/dist/contracts/Locations/Stores.js +9 -0
  24. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  25. package/dist/internal.d.ts +4 -0
  26. package/dist/internal.js +15 -1
  27. package/dist/nest-integration.d.ts +4 -2
  28. package/dist/nest-integration.js +14 -4
  29. package/dist/runtime/abort.d.ts +1 -0
  30. package/dist/runtime/abort.js +8 -5
  31. package/dist/runtime/activation-admission.d.ts +1 -2
  32. package/dist/runtime/activation-admission.js +2 -6
  33. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  34. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  35. package/dist/runtime/actors/actor-client.d.ts +2 -2
  36. package/dist/runtime/actors/actor-client.js +42 -143
  37. package/dist/runtime/actors/actor-context.d.ts +3 -5
  38. package/dist/runtime/actors/actor-context.js +13 -11
  39. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  40. package/dist/runtime/actors/actor-handoff.js +8 -8
  41. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  42. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  43. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  44. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  45. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  46. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  47. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  48. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  49. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  50. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  51. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  52. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  53. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  54. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  55. package/dist/runtime/actors/bound-session-wire.js +2 -7
  56. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  57. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  58. package/dist/runtime/actors/index.d.ts +9 -7
  59. package/dist/runtime/actors/index.js +87 -69
  60. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  61. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  62. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  63. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  64. package/dist/runtime/admission.d.ts +2 -0
  65. package/dist/runtime/admission.js +7 -1
  66. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  67. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  68. package/dist/runtime/backend/contracts/index.d.ts +6 -23
  69. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  70. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  71. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  72. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
  73. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
  74. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  75. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  76. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  77. package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
  78. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  79. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  80. package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
  81. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  82. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  83. package/dist/runtime/backend/runtime-values.js +2 -0
  84. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  85. package/dist/runtime/channels/channel-clients.js +68 -52
  86. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  87. package/dist/runtime/channels/channel-envelope.js +47 -29
  88. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  89. package/dist/runtime/channels/channel-outbound-operations.js +9 -10
  90. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  91. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  94. package/dist/runtime/channels/channel-runtime-manager.js +5 -2
  95. package/dist/runtime/channels/channel-socket-options.js +3 -2
  96. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  97. package/dist/runtime/channels/channel-socket-registry.js +248 -174
  98. package/dist/runtime/channels/channel-transports.d.ts +11 -17
  99. package/dist/runtime/channels/channel-transports.js +68 -47
  100. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  101. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  102. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  103. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  104. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  105. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  106. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  107. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  108. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  109. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  110. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  111. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  112. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  113. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  114. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  115. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  116. package/dist/runtime/diagnostics/flow-context.js +16 -2
  117. package/dist/runtime/diagnostics/index.d.ts +4 -2
  118. package/dist/runtime/diagnostics/index.js +14 -4
  119. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  120. package/dist/runtime/diagnostics/message-flow.js +10 -19
  121. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  122. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  123. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  124. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  125. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  126. package/dist/runtime/disposal.d.ts +5 -0
  127. package/dist/runtime/disposal.js +22 -0
  128. package/dist/runtime/execution/index.d.ts +12 -9
  129. package/dist/runtime/execution/index.js +58 -14
  130. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  131. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  132. package/dist/runtime/execution/state-lane.d.ts +8 -1
  133. package/dist/runtime/execution/state-lane.js +118 -3
  134. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  135. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  136. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  137. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  138. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  139. package/dist/runtime/foundation/operation-identity.js +9 -5
  140. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  141. package/dist/runtime/foundation/operation-registry.js +34 -44
  142. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  143. package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
  144. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  145. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  146. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  147. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  148. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  149. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  150. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  151. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  152. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  153. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  154. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  155. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  156. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  157. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  158. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  159. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  160. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  161. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  162. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  163. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  164. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  165. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  166. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  167. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  168. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  169. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  170. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  171. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  172. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  173. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  174. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  175. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  176. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  177. package/dist/runtime/framework-errors-internal.js +343 -122
  178. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  179. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  180. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  181. package/dist/runtime/host/actor-packet-relay.js +48 -91
  182. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  183. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  184. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  185. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  186. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  187. package/dist/runtime/host/application-job-queue.js +16 -33
  188. package/dist/runtime/host/bound-session-relay.js +1 -1
  189. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  190. package/dist/runtime/host/index.d.ts +14 -13
  191. package/dist/runtime/host/index.js +190 -157
  192. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  193. package/dist/runtime/host/instance-activation-authority.js +17 -45
  194. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  195. package/dist/runtime/host/location-runtime-owner.js +2 -2
  196. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  197. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  198. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  199. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  200. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  201. package/dist/runtime/host/remote-bound-session-relay.js +7 -20
  202. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  203. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  204. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  205. package/dist/runtime/host/runtime-shutdown.js +18 -21
  206. package/dist/runtime/host/service-relocation-control.js +6 -1
  207. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  208. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  209. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  210. package/dist/runtime/host/spot-address-transport.js +34 -136
  211. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  212. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  213. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  214. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  215. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  216. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  217. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  218. package/dist/runtime/locations/authority-key-codec.js +4 -3
  219. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  220. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  221. package/dist/runtime/locations/creation-operation-id.js +6 -4
  222. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  223. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  224. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  225. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  226. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  227. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  228. package/dist/runtime/locations/key-codec.js +3 -2
  229. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  230. package/dist/runtime/locations/lease-tracker.js +7 -11
  231. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  232. package/dist/runtime/locations/lifecycle.js +2 -31
  233. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  234. package/dist/runtime/locations/location-store-failure.js +7 -0
  235. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  236. package/dist/runtime/locations/location-store-pages.js +13 -0
  237. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  238. package/dist/runtime/locations/location-store-repository.js +303 -332
  239. package/dist/runtime/locations/relocation-blob.js +18 -5
  240. package/dist/runtime/locations/resolvers.d.ts +5 -5
  241. package/dist/runtime/locations/resolvers.js +37 -28
  242. package/dist/runtime/locations/runtime.d.ts +5 -4
  243. package/dist/runtime/locations/runtime.js +123 -92
  244. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  245. package/dist/runtime/locations/spot-location-claims.js +42 -1
  246. package/dist/runtime/messaging/payload-codec.js +26 -20
  247. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  248. package/dist/runtime/messaging/submission-result.js +48 -0
  249. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  250. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  251. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  252. package/dist/runtime/spots/index.d.ts +14 -20
  253. package/dist/runtime/spots/index.js +302 -176
  254. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  255. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  256. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  257. package/dist/runtime/spots/spot-activation-state.js +2 -2
  258. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  259. package/dist/runtime/spots/spot-activation.js +49 -32
  260. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  261. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  262. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  263. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  264. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  265. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  266. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  267. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  268. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  269. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  270. package/dist/runtime/spots/spot-context.d.ts +2 -2
  271. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  272. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  273. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  274. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  275. package/dist/runtime/spots/spot-manager-public.js +5 -4
  276. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  277. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  278. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  279. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  280. package/dist/runtime/spots/spot-outbound.js +9 -8
  281. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  282. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  283. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  284. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  285. package/dist/runtime/spots/spot-route-replies.js +3 -1
  286. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  287. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  288. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  289. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  290. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  291. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  292. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  293. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  294. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  295. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  296. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  297. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  298. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  299. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  300. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  301. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  302. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  303. package/dist/runtime/streams/bound-session-service.js +11 -1
  304. package/dist/runtime/streams/index.d.ts +14 -15
  305. package/dist/runtime/streams/index.js +20 -21
  306. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  307. package/dist/runtime/streams/managed-stream.js +17 -8
  308. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  309. package/dist/runtime/streams/protocol.d.ts +6 -33
  310. package/dist/runtime/streams/protocol.js +38 -110
  311. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  312. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  313. package/dist/runtime/streams/session-calls.d.ts +1 -1
  314. package/dist/runtime/streams/session-calls.js +5 -4
  315. package/dist/runtime/streams/session-context.d.ts +6 -6
  316. package/dist/runtime/streams/session-context.js +22 -4
  317. package/dist/runtime/streams/session-requests.js +2 -1
  318. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  319. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  320. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  321. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  322. package/dist/runtime/workers/index.d.ts +2 -2
  323. package/dist/runtime/workers/index.js +5 -4
  324. package/package.json +3 -3
  325. package/src/contracts/Common/CoreTypes.ts +7 -0
  326. package/src/contracts/Common/index.ts +1 -1
  327. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  328. package/src/contracts/Configuration/Registration.ts +92 -48
  329. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  330. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  331. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  332. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  333. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  334. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  335. package/src/contracts/Handlers/JsonContract.ts +14 -4
  336. package/src/contracts/Locations/Authority.ts +7 -3
  337. package/src/contracts/Locations/Options.ts +1 -1
  338. package/src/contracts/Locations/Stores.ts +14 -0
  339. package/src/contracts/Spots/Contracts.ts +1 -1
  340. package/src/internal.ts +14 -0
  341. package/src/nest-integration.ts +28 -10
  342. package/src/runtime/abort.ts +6 -5
  343. package/src/runtime/activation-admission.ts +2 -8
  344. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  345. package/src/runtime/actors/actor-client.ts +77 -204
  346. package/src/runtime/actors/actor-context.ts +39 -33
  347. package/src/runtime/actors/actor-handoff.ts +24 -22
  348. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  349. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  350. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  351. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  352. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  353. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  354. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  355. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  356. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  357. package/src/runtime/actors/bound-session-wire.ts +2 -8
  358. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  359. package/src/runtime/actors/index.ts +100 -79
  360. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  361. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  362. package/src/runtime/admission.ts +8 -1
  363. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  364. package/src/runtime/backend/contracts/index.ts +13 -29
  365. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  366. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  367. package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
  368. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  369. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  370. package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
  371. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  372. package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
  373. package/src/runtime/backend/raw-binding-port.ts +1 -1
  374. package/src/runtime/backend/runtime-values.ts +4 -1
  375. package/src/runtime/channels/channel-clients.ts +132 -85
  376. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  377. package/src/runtime/channels/channel-envelope.ts +58 -29
  378. package/src/runtime/channels/channel-outbound-operations.ts +10 -23
  379. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  380. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  381. package/src/runtime/channels/channel-runtime-manager.ts +6 -2
  382. package/src/runtime/channels/channel-socket-options.ts +8 -2
  383. package/src/runtime/channels/channel-socket-registry.ts +301 -192
  384. package/src/runtime/channels/channel-transports.ts +161 -112
  385. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  386. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  387. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  388. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  389. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  390. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  391. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  392. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  393. package/src/runtime/diagnostics/flow-context.ts +16 -2
  394. package/src/runtime/diagnostics/index.ts +27 -17
  395. package/src/runtime/diagnostics/message-flow.ts +15 -25
  396. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  397. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  398. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  399. package/src/runtime/disposal.ts +19 -0
  400. package/src/runtime/execution/index.ts +60 -20
  401. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  402. package/src/runtime/execution/state-lane.ts +142 -4
  403. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  404. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  405. package/src/runtime/foundation/operation-identity.ts +11 -5
  406. package/src/runtime/foundation/operation-registry.ts +33 -50
  407. package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
  408. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  409. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  410. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  411. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  412. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  413. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  414. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  415. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  416. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  417. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  418. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  419. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  420. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  421. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  422. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  423. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  424. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  425. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  426. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  427. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  428. package/src/runtime/framework-errors-internal.ts +380 -134
  429. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  430. package/src/runtime/host/actor-packet-relay.ts +57 -147
  431. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  432. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  433. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  434. package/src/runtime/host/application-job-queue.ts +28 -34
  435. package/src/runtime/host/bound-session-relay.ts +1 -2
  436. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  437. package/src/runtime/host/index.ts +327 -296
  438. package/src/runtime/host/instance-activation-authority.ts +89 -109
  439. package/src/runtime/host/location-runtime-owner.ts +4 -2
  440. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  441. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  442. package/src/runtime/host/remote-bound-session-relay.ts +8 -41
  443. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  444. package/src/runtime/host/runtime-shutdown.ts +17 -21
  445. package/src/runtime/host/service-relocation-control.ts +14 -1
  446. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  447. package/src/runtime/host/spot-address-transport.ts +73 -195
  448. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  449. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  450. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  451. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  452. package/src/runtime/locations/authority-key-codec.ts +7 -3
  453. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  454. package/src/runtime/locations/creation-operation-id.ts +6 -3
  455. package/src/runtime/locations/domain-store-contract.ts +12 -3
  456. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  457. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  458. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  459. package/src/runtime/locations/key-codec.ts +3 -2
  460. package/src/runtime/locations/lease-tracker.ts +8 -14
  461. package/src/runtime/locations/lifecycle.ts +13 -43
  462. package/src/runtime/locations/location-store-failure.ts +4 -0
  463. package/src/runtime/locations/location-store-pages.ts +18 -0
  464. package/src/runtime/locations/location-store-repository.ts +450 -478
  465. package/src/runtime/locations/relocation-blob.ts +17 -6
  466. package/src/runtime/locations/resolvers.ts +75 -49
  467. package/src/runtime/locations/runtime.ts +220 -110
  468. package/src/runtime/locations/spot-location-claims.ts +58 -1
  469. package/src/runtime/messaging/payload-codec.ts +35 -24
  470. package/src/runtime/messaging/submission-result.ts +57 -1
  471. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  472. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  473. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  474. package/src/runtime/spots/index.ts +433 -229
  475. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  476. package/src/runtime/spots/spot-activation-state.ts +2 -2
  477. package/src/runtime/spots/spot-activation.ts +67 -37
  478. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  479. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  480. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  481. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  482. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  483. package/src/runtime/spots/spot-context.ts +3 -3
  484. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  485. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  486. package/src/runtime/spots/spot-manager-public.ts +21 -17
  487. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  488. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  489. package/src/runtime/spots/spot-outbound.ts +45 -23
  490. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  491. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  492. package/src/runtime/spots/spot-route-replies.ts +6 -4
  493. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  494. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  495. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  496. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  497. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  498. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  499. package/src/runtime/spots/spot-timer.ts +3 -2
  500. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  501. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  502. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  503. package/src/runtime/streams/bound-session-service.ts +21 -1
  504. package/src/runtime/streams/index.ts +76 -64
  505. package/src/runtime/streams/managed-stream.ts +29 -10
  506. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  507. package/src/runtime/streams/protocol.ts +34 -88
  508. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  509. package/src/runtime/streams/session-calls.ts +6 -5
  510. package/src/runtime/streams/session-context.ts +54 -10
  511. package/src/runtime/streams/session-requests.ts +2 -1
  512. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  513. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  514. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  515. package/src/runtime/workers/index.ts +13 -12
  516. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  517. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  518. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  519. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  520. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  521. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,10 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkRouteReceiveLoop = exports.ZLinkSubscriberReceiveLoop = exports.ZLinkChannelReceiveLoop = exports.ZLINK_CHANNEL_RAW_RECEIVE_RESERVATION_LIMIT = exports.ZLinkReceiveRoundRobinCoordinator = void 0;
4
+ exports.createChannelApplicationDispatchQueue = createChannelApplicationDispatchQueue;
4
5
  const channel_envelope_1 = require("./channel-envelope");
5
6
  const channel_envelope_inspection_1 = require("./channel-envelope-inspection");
6
7
  const channel_receive_task_tracker_1 = require("./channel-receive-task-tracker");
7
8
  const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
9
+ const serial_execution_queue_1 = require("../execution/serial-execution-queue");
10
+ function createChannelApplicationDispatchQueue() {
11
+ return new serial_execution_queue_1.ZLinkSerialExecutionQueue(async (record) => {
12
+ try {
13
+ record.resolve(await record.operation());
14
+ }
15
+ catch (error) {
16
+ record.reject(error);
17
+ }
18
+ finally {
19
+ record.release();
20
+ }
21
+ });
22
+ }
8
23
  // The loop awaits between reads and the signal can abort in that gap. Reading
9
24
  // through a function keeps the later check honest; an inline read stays
10
25
  // narrowed by the loop condition and the comparison is rejected as dead.
@@ -102,6 +117,7 @@ class ZLinkChannelReceiveLoop {
102
117
  poller;
103
118
  applicationJobQueue;
104
119
  roundRobin;
120
+ applicationDispatchQueue;
105
121
  // The loop awaits between the two reads and stop() can land in that gap.
106
122
  // Reading through a method keeps the second check honest; a field read stays
107
123
  // narrowed to false across the await and is treated as dead code.
@@ -114,7 +130,7 @@ class ZLinkChannelReceiveLoop {
114
130
  receiveOwner;
115
131
  rawReceiveReservations;
116
132
  capacityStop = new AbortController();
117
- constructor(channelName, router, dispatcher, spotRouteBridge, infrastructureHandler, poller, applicationJobQueue, reportError, roundRobin) {
133
+ constructor(channelName, router, dispatcher, spotRouteBridge, infrastructureHandler, poller, applicationJobQueue, reportError, roundRobin, applicationDispatchQueue = createChannelApplicationDispatchQueue()) {
118
134
  this.channelName = channelName;
119
135
  this.router = router;
120
136
  this.dispatcher = dispatcher;
@@ -123,6 +139,7 @@ class ZLinkChannelReceiveLoop {
123
139
  this.poller = poller;
124
140
  this.applicationJobQueue = applicationJobQueue;
125
141
  this.roundRobin = roundRobin;
142
+ this.applicationDispatchQueue = applicationDispatchQueue;
126
143
  this.inFlight = new channel_receive_task_tracker_1.ZLinkReceiveTaskTracker(reportError);
127
144
  this.receiveOwner = roundRobin?.register() ?? Symbol('channel-receive-owner');
128
145
  this.rawReceiveReservations = new ZLinkRawReceiveReservationPool(exports.ZLINK_CHANNEL_RAW_RECEIVE_RESERVATION_LIMIT);
@@ -218,7 +235,7 @@ class ZLinkChannelReceiveLoop {
218
235
  break;
219
236
  }
220
237
  applicationJobPermit.markApplicationQueued();
221
- const task = (0, application_job_queue_scope_1.runWithApplicationJobPermit)(applicationJobPermit, () => this.dispatchAndClose(received, signal, classification.decodedHeader, true));
238
+ const task = (0, application_job_queue_scope_1.runWithApplicationJobPermit)(applicationJobPermit, () => this.applicationDispatchQueue.submitPreAdmitted((0, application_job_queue_scope_1.bindApplicationJobPermit)(() => this.dispatchAndClose(received, signal, classification.decodedHeader, true))));
222
239
  releaseRawReceive();
223
240
  this.inFlight.track(task);
224
241
  if (batch.record(receivedBytes)) {
@@ -292,6 +309,7 @@ class ZLinkSubscriberReceiveLoop {
292
309
  applicationJobQueue;
293
310
  infrastructureHandler;
294
311
  roundRobin;
312
+ applicationDispatchQueue;
295
313
  // The loop awaits between the two reads and stop() can land in that gap.
296
314
  // Reading through a method keeps the second check honest; a field read stays
297
315
  // narrowed to false across the await and is treated as dead code.
@@ -304,13 +322,14 @@ class ZLinkSubscriberReceiveLoop {
304
322
  receiveOwner;
305
323
  rawReceiveReservations;
306
324
  capacityStop = new AbortController();
307
- constructor(adapter, subscriber, dispatcher, applicationJobQueue, infrastructureHandler, roundRobin, reportError) {
325
+ constructor(adapter, subscriber, dispatcher, applicationJobQueue, infrastructureHandler, roundRobin, reportError, applicationDispatchQueue = createChannelApplicationDispatchQueue()) {
308
326
  this.adapter = adapter;
309
327
  this.subscriber = subscriber;
310
328
  this.dispatcher = dispatcher;
311
329
  this.applicationJobQueue = applicationJobQueue;
312
330
  this.infrastructureHandler = infrastructureHandler;
313
331
  this.roundRobin = roundRobin;
332
+ this.applicationDispatchQueue = applicationDispatchQueue;
314
333
  this.inFlight = new channel_receive_task_tracker_1.ZLinkReceiveTaskTracker(reportError);
315
334
  this.poller = adapter.createReadablePoller(subscriber);
316
335
  this.receiveOwner = roundRobin?.register() ?? Symbol('subscriber-receive-owner');
@@ -406,7 +425,7 @@ class ZLinkSubscriberReceiveLoop {
406
425
  break;
407
426
  }
408
427
  applicationJobPermit.markApplicationQueued();
409
- const task = (0, application_job_queue_scope_1.runWithApplicationJobPermit)(applicationJobPermit, () => this.dispatchAndClose(topicMessage, signal, classification.decodedHeader, true));
428
+ const task = (0, application_job_queue_scope_1.runWithApplicationJobPermit)(applicationJobPermit, () => this.applicationDispatchQueue.submitPreAdmitted((0, application_job_queue_scope_1.bindApplicationJobPermit)(() => this.dispatchAndClose(topicMessage, signal, classification.decodedHeader, true))));
410
429
  releaseRawReceive();
411
430
  this.inFlight.track(task);
412
431
  if (batch.record(receivedBytes)) {
@@ -469,6 +488,7 @@ class ZLinkRouteReceiveLoop {
469
488
  poller;
470
489
  applicationJobQueue;
471
490
  roundRobin;
491
+ applicationDispatchQueue;
472
492
  // The loop awaits between the two reads and stop() can land in that gap.
473
493
  // Reading through a method keeps the second check honest; a field read stays
474
494
  // narrowed to false across the await and is treated as dead code.
@@ -481,12 +501,13 @@ class ZLinkRouteReceiveLoop {
481
501
  receiveOwner;
482
502
  rawReceiveReservations;
483
503
  capacityStop = new AbortController();
484
- constructor(router, dispatcher, poller, applicationJobQueue, roundRobin, reportError) {
504
+ constructor(router, dispatcher, poller, applicationJobQueue, roundRobin, reportError, applicationDispatchQueue = createChannelApplicationDispatchQueue()) {
485
505
  this.router = router;
486
506
  this.dispatcher = dispatcher;
487
507
  this.poller = poller;
488
508
  this.applicationJobQueue = applicationJobQueue;
489
509
  this.roundRobin = roundRobin;
510
+ this.applicationDispatchQueue = applicationDispatchQueue;
490
511
  this.inFlight = new channel_receive_task_tracker_1.ZLinkReceiveTaskTracker(reportError);
491
512
  this.receiveOwner = roundRobin?.register() ?? Symbol('route-receive-owner');
492
513
  this.rawReceiveReservations = new ZLinkRawReceiveReservationPool(exports.ZLINK_CHANNEL_RAW_RECEIVE_RESERVATION_LIMIT);
@@ -596,7 +617,7 @@ class ZLinkRouteReceiveLoop {
596
617
  break;
597
618
  }
598
619
  applicationJobPermit.markApplicationQueued();
599
- const task = (0, application_job_queue_scope_1.runWithApplicationJobPermit)(applicationJobPermit, () => this.dispatchAndClose(received, signal, true));
620
+ const task = (0, application_job_queue_scope_1.runWithApplicationJobPermit)(applicationJobPermit, () => this.applicationDispatchQueue.submitPreAdmitted((0, application_job_queue_scope_1.bindApplicationJobPermit)(() => this.dispatchAndClose(received, signal, true))));
600
621
  releaseRawReceive();
601
622
  this.inFlight.track(task);
602
623
  if (batch.record(receivedBytes)) {
@@ -33,15 +33,24 @@ export declare class ZLinkChannelRuntimeLifecycle {
33
33
  private readonly manualFanoutSubscribers;
34
34
  private readonly manualFanoutSubscriberOwners;
35
35
  private readonly routeReceiveLoops;
36
+ private readonly applicationDispatchQueues;
36
37
  private readonly meshChannelDispatchers;
37
38
  private readonly meshRouteDispatchers;
38
39
  private nextManualFanoutIndex;
39
- private disposed;
40
+ private readonly disposal;
40
41
  private locationAutoConnect?;
41
42
  private clientServerLocation?;
42
43
  private fanoutLocation?;
43
44
  private taskRunner?;
44
45
  constructor(options: ZLinkChannelRuntimeLifecycleOptions);
46
+ fanoutTopologyTargets(channelName: string): {
47
+ channelName: string;
48
+ publisherRoutingId: string;
49
+ lifecycleGeneration: bigint;
50
+ descriptorRevision: bigint;
51
+ advertisedEndpoint: string;
52
+ state: "error" | "preparing" | "serving" | "retiring" | "stopped";
53
+ }[] | undefined;
45
54
  configureLocationAutoConnect(runtime: ZLinkLocationRuntime, stores: ZLinkLocationRuntimeStores, options: ZLinkLocationOptionOverrides, events?: ZLinkLocationEventSink): void;
46
55
  private beginLocationAutoConnectCore;
47
56
  private beginFanoutLocationAutoConnectCore;
@@ -56,7 +65,9 @@ export declare class ZLinkChannelRuntimeLifecycle {
56
65
  dispatchLocalMeshRoute(meshName: string, sourceNodeRid: RoutingId, parts: readonly Message[], signal?: AbortSignal): Promise<void>;
57
66
  canDispatchLocalMeshRoute(meshName: string): boolean;
58
67
  dispose(signal?: AbortSignal): Promise<void>;
68
+ private disposeCore;
59
69
  private beginDisposeCore;
70
+ private applicationDispatchQueue;
60
71
  private openOutboundSockets;
61
72
  private startChannelReceivers;
62
73
  private startSubscriberReceivers;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkChannelRuntimeLifecycle = void 0;
4
+ const disposal_1 = require("../disposal");
4
5
  const configuration_1 = require("../configuration");
5
6
  const contracts_1 = require("../backend/contracts");
6
7
  const channel_autoconnect_1 = require("./channel-autoconnect");
@@ -21,10 +22,11 @@ class ZLinkChannelRuntimeLifecycle {
21
22
  manualFanoutSubscribers = new Map();
22
23
  manualFanoutSubscriberOwners = new Set();
23
24
  routeReceiveLoops = [];
25
+ applicationDispatchQueues = new Map();
24
26
  meshChannelDispatchers = new Map();
25
27
  meshRouteDispatchers = new Map();
26
28
  nextManualFanoutIndex = 0;
27
- disposed = false;
29
+ disposal = new disposal_1.RuntimeDisposal();
28
30
  locationAutoConnect;
29
31
  clientServerLocation;
30
32
  fanoutLocation;
@@ -32,6 +34,9 @@ class ZLinkChannelRuntimeLifecycle {
32
34
  constructor(options) {
33
35
  this.options = options;
34
36
  }
37
+ fanoutTopologyTargets(channelName) {
38
+ return this.fanoutLocation?.topologyTargets(channelName);
39
+ }
35
40
  configureLocationAutoConnect(runtime, stores, options, events) {
36
41
  this.locationAutoConnect = (0, channel_autoconnect_1.createChannelLocationAutoConnectContext)(runtime, stores, options, events);
37
42
  }
@@ -201,7 +206,10 @@ class ZLinkChannelRuntimeLifecycle {
201
206
  canDispatchLocalMeshRoute(meshName) {
202
207
  return this.meshRouteDispatchers.has(meshName);
203
208
  }
204
- async dispose(signal) {
209
+ dispose(signal) {
210
+ return this.disposal.run(() => this.disposeCore(signal));
211
+ }
212
+ async disposeCore(signal) {
205
213
  const work = await this.lane.run(() => this.beginDisposeCore());
206
214
  const transportStopped = await startOutsideStateLane(() => Promise.allSettled([
207
215
  ...work.channelLoops.map((loop) => loop.stop()),
@@ -209,6 +217,7 @@ class ZLinkChannelRuntimeLifecycle {
209
217
  ...work.routeLoops.map((loop) => loop.stop()),
210
218
  ...work.manualTransitions
211
219
  ]));
220
+ const applicationStopped = await startOutsideStateLane(() => Promise.allSettled(work.applicationDispatchQueues.map((queue) => queue.close())));
212
221
  const descriptorStopped = work.clientServerLocation === undefined
213
222
  ? []
214
223
  : await startOutsideStateLane(() => Promise.allSettled([work.clientServerLocation?.stop(signal)]));
@@ -221,6 +230,7 @@ class ZLinkChannelRuntimeLifecycle {
221
230
  ]));
222
231
  const errors = [
223
232
  ...transportStopped,
233
+ ...applicationStopped,
224
234
  ...descriptorStopped,
225
235
  ...fanoutDescriptorStopped,
226
236
  ...cleanup
@@ -231,46 +241,58 @@ class ZLinkChannelRuntimeLifecycle {
231
241
  throw errors[0];
232
242
  if (errors.length > 1)
233
243
  throw new AggregateError(errors, 'Channel runtime cleanup failed.');
244
+ await this.lane.run(() => {
245
+ this.manualFanoutSubscriberOwners.clear();
246
+ this.manualFanoutSubscribers.clear();
247
+ this.channelReceiveLoops.length = 0;
248
+ this.subscriberReceiveLoops.length = 0;
249
+ this.routeReceiveLoops.length = 0;
250
+ this.applicationDispatchQueues.clear();
251
+ this.clientServerLocation = undefined;
252
+ this.fanoutLocation = undefined;
253
+ this.taskRunner = undefined;
254
+ this.meshChannelDispatchers.clear();
255
+ this.meshRouteDispatchers.clear();
256
+ this.options.spotRouteBridges.clear();
257
+ });
234
258
  }
235
259
  beginDisposeCore() {
236
260
  const channelLoops = [...this.channelReceiveLoops];
237
261
  const manualStates = [...this.manualFanoutSubscribers.values()];
238
- this.disposed = true;
239
262
  for (const state of manualStates)
240
263
  state.desired = false;
241
264
  for (const owner of this.manualFanoutSubscriberOwners) {
242
265
  (0, RuntimeEndpointConnections_1.detachEndpointConnections)(owner);
243
266
  }
244
- this.manualFanoutSubscriberOwners.clear();
245
- this.manualFanoutSubscribers.clear();
246
267
  const manualLoops = new Set(manualStates
247
268
  .map((state) => state.active?.loop ?? state.stopping?.loop)
248
269
  .filter((loop) => loop !== undefined));
249
270
  const subscriberLoops = [...this.subscriberReceiveLoops].filter((loop) => !manualLoops.has(loop));
250
271
  const manualTransitions = manualStates.map((state) => this.drainManualFanoutSubscriberCore(state));
251
272
  const routeLoops = [...this.routeReceiveLoops];
273
+ const applicationDispatchQueues = [...this.applicationDispatchQueues.values()];
252
274
  const clientServerLocation = this.clientServerLocation;
253
275
  const fanoutLocation = this.fanoutLocation;
254
276
  const spotRouteBridges = [...this.options.spotRouteBridges.values()];
255
- this.channelReceiveLoops.length = 0;
256
- this.subscriberReceiveLoops.length = 0;
257
- this.routeReceiveLoops.length = 0;
258
- this.clientServerLocation = undefined;
259
- this.fanoutLocation = undefined;
260
- this.taskRunner = undefined;
261
- this.meshChannelDispatchers.clear();
262
- this.meshRouteDispatchers.clear();
263
- this.options.spotRouteBridges.clear();
264
277
  return {
265
278
  channelLoops,
266
279
  subscriberLoops,
267
280
  manualTransitions,
268
281
  routeLoops,
282
+ applicationDispatchQueues,
269
283
  clientServerLocation,
270
284
  fanoutLocation,
271
285
  spotRouteBridges
272
286
  };
273
287
  }
288
+ applicationDispatchQueue(channelName) {
289
+ let queue = this.applicationDispatchQueues.get(channelName);
290
+ if (queue === undefined) {
291
+ queue = (0, channel_receive_loops_1.createChannelApplicationDispatchQueue)();
292
+ this.applicationDispatchQueues.set(channelName, queue);
293
+ }
294
+ return queue;
295
+ }
274
296
  openOutboundSockets() {
275
297
  // The process-local Server is an independent peer source. Location Store
276
298
  // discovery may later alias the same admitted identity, but startup and
@@ -310,7 +332,7 @@ class ZLinkChannelRuntimeLifecycle {
310
332
  unhandled: this.options.registration.dispatch?.unhandled
311
333
  });
312
334
  const spotRouteBridge = this.createSpotRouteBridgeForRouter(channelName, router);
313
- const loop = new channel_receive_loops_1.ZLinkChannelReceiveLoop(channelName, router, dispatcher, spotRouteBridge, (received, socket) => this.options.sockets.tryHandleClientServerControl(channelName, received, socket), this.options.adapter.createReadablePoller(router), this.options.applicationJobQueue, (error) => taskRunner.errorSink.reportRuntimeTaskException(`channel:${channelName}:dispatch`, error), this.receiveRoundRobin);
335
+ const loop = new channel_receive_loops_1.ZLinkChannelReceiveLoop(channelName, router, dispatcher, spotRouteBridge, (received, socket) => this.options.sockets.tryHandleClientServerControl(channelName, received, socket), this.options.adapter.createReadablePoller(router), this.options.applicationJobQueue, (error) => taskRunner.errorSink.reportRuntimeTaskException(`channel:${channelName}:dispatch`, error), this.receiveRoundRobin, this.applicationDispatchQueue(channelName));
314
336
  this.channelReceiveLoops.push(loop);
315
337
  tasks.push(taskRunner.run(`channel:${channelName}`, (signal) => loop.run(signal)));
316
338
  }
@@ -369,7 +391,7 @@ class ZLinkChannelRuntimeLifecycle {
369
391
  return state;
370
392
  }
371
393
  requestManualFanoutConnect(channelName, endpoint, taskRunner, dispatcher) {
372
- if (this.disposed)
394
+ if (this.disposal.started)
373
395
  return;
374
396
  const state = this.getOrCreateManualFanoutSubscriber(channelName, endpoint, this.nextManualFanoutIndex++, taskRunner, dispatcher);
375
397
  state.desired = true;
@@ -403,7 +425,7 @@ class ZLinkChannelRuntimeLifecycle {
403
425
  }
404
426
  openManualFanoutSubscriber(state) {
405
427
  const { channelName, endpoint, connectionId, taskRunner, dispatcher } = state;
406
- if (this.disposed || !state.desired || this.taskRunner !== taskRunner) {
428
+ if (this.disposal.started || !state.desired || this.taskRunner !== taskRunner) {
407
429
  return Promise.resolve();
408
430
  }
409
431
  const token = Symbol(`manual-fanout:${channelName}:${endpoint}`);
@@ -414,20 +436,20 @@ class ZLinkChannelRuntimeLifecycle {
414
436
  const subscriber = this.options.sockets.openFanoutSubscriberConnection(channelName, connectionId, endpoint, {
415
437
  onReady() { },
416
438
  onTerminated: () => {
417
- if (this.disposed ||
439
+ if (this.disposal.started ||
418
440
  (state.active?.token !== token && state.openingToken !== token) ||
419
441
  reconnecting)
420
442
  return;
421
443
  reconnecting = true;
422
444
  setImmediate(() => {
423
- if (this.disposed ||
445
+ if (this.disposal.started ||
424
446
  (state.active?.token !== token && state.openingToken !== token)) {
425
447
  reconnecting = false;
426
448
  return;
427
449
  }
428
450
  this.enqueueManualFanoutTransition(state, async () => {
429
451
  reconnecting = false;
430
- if (this.disposed || state.active?.token !== token)
452
+ if (this.disposal.started || state.active?.token !== token)
431
453
  return;
432
454
  try {
433
455
  await this.closeManualFanoutSubscriber(state, token);
@@ -442,7 +464,7 @@ class ZLinkChannelRuntimeLifecycle {
442
464
  });
443
465
  }
444
466
  });
445
- loop = new channel_receive_loops_1.ZLinkSubscriberReceiveLoop(this.options.adapter, subscriber, dispatcher, this.options.applicationJobQueue, (message) => this.options.sockets.handleFanoutInboundResult(connectionId, message, subscriber), this.receiveRoundRobin, (error) => taskRunner.errorSink.reportRuntimeTaskException(`subscriber:${state.channelName}:manual:${state.index}:dispatch`, error));
467
+ loop = new channel_receive_loops_1.ZLinkSubscriberReceiveLoop(this.options.adapter, subscriber, dispatcher, this.options.applicationJobQueue, (message) => this.options.sockets.handleFanoutInboundResult(connectionId, message, subscriber), this.receiveRoundRobin, (error) => taskRunner.errorSink.reportRuntimeTaskException(`subscriber:${state.channelName}:manual:${state.index}:dispatch`, error), this.applicationDispatchQueue(channelName));
446
468
  state.openingToken = undefined;
447
469
  state.active = { token, loop };
448
470
  this.subscriberReceiveLoops.push(loop);
@@ -471,9 +493,6 @@ class ZLinkChannelRuntimeLifecycle {
471
493
  catch (error) {
472
494
  errors.push(error);
473
495
  }
474
- finally {
475
- await this.lane.run(() => this.finishCloseManualFanoutSubscriberCore(state, active));
476
- }
477
496
  try {
478
497
  await startOutsideStateLane(() => this.options.sockets.closeFanoutSubscriberConnection(state.connectionId));
479
498
  }
@@ -485,12 +504,13 @@ class ZLinkChannelRuntimeLifecycle {
485
504
  if (errors.length > 1) {
486
505
  throw new AggregateError(errors, `Fanout subscriber '${state.connectionId}' cleanup failed.`);
487
506
  }
507
+ await this.lane.run(() => this.finishCloseManualFanoutSubscriberCore(state, active));
488
508
  }
489
509
  shouldReconnectManualFanoutSubscriber(state) {
490
- return !this.disposed && state.desired;
510
+ return !this.disposal.started && state.desired;
491
511
  }
492
512
  beginCloseManualFanoutSubscriberCore(state, expectedToken) {
493
- const active = state.active;
513
+ const active = state.active ?? state.stopping;
494
514
  if (active === undefined || (expectedToken !== undefined && active.token !== expectedToken)) {
495
515
  return undefined;
496
516
  }
@@ -521,7 +541,7 @@ class ZLinkChannelRuntimeLifecycle {
521
541
  unhandled: this.options.registration.dispatch?.unhandled,
522
542
  metrics: this.options.dispatchServices.metrics()
523
543
  });
524
- const loop = new channel_receive_loops_1.ZLinkSubscriberReceiveLoop(this.options.adapter, subscriber, dispatcher, this.options.applicationJobQueue, (message) => this.options.sockets.handleFanoutInboundResult(connectionId, message, subscriber), undefined, (error) => taskRunner.errorSink.reportRuntimeTaskException(`subscriber:${channelName}:automatic:${connectionId}:dispatch`, error));
544
+ const loop = new channel_receive_loops_1.ZLinkSubscriberReceiveLoop(this.options.adapter, subscriber, dispatcher, this.options.applicationJobQueue, (message) => this.options.sockets.handleFanoutInboundResult(connectionId, message, subscriber), undefined, (error) => taskRunner.errorSink.reportRuntimeTaskException(`subscriber:${channelName}:automatic:${connectionId}:dispatch`, error), this.applicationDispatchQueue(channelName));
525
545
  this.subscriberReceiveLoops.push(loop);
526
546
  void taskRunner.run(`subscriber:${channelName}:automatic:${connectionId}`, (signal) => loop.run(signal));
527
547
  return async () => {
@@ -567,7 +587,7 @@ class ZLinkChannelRuntimeLifecycle {
567
587
  unhandled: this.options.registration.dispatch?.unhandled,
568
588
  spotRouteBridge
569
589
  });
570
- const loop = new channel_receive_loops_1.ZLinkRouteReceiveLoop(router, dispatcher, this.options.adapter.createReadablePoller(router), this.options.applicationJobQueue, this.receiveRoundRobin, (error) => taskRunner.errorSink.reportRuntimeTaskException(`route:${routeChannel.routerChannelId}:dispatch`, error));
590
+ const loop = new channel_receive_loops_1.ZLinkRouteReceiveLoop(router, dispatcher, this.options.adapter.createReadablePoller(router), this.options.applicationJobQueue, this.receiveRoundRobin, (error) => taskRunner.errorSink.reportRuntimeTaskException(`route:${routeChannel.routerChannelId}:dispatch`, error), this.applicationDispatchQueue(routeChannel.routerChannelId));
571
591
  this.routeReceiveLoops.push(loop);
572
592
  tasks.push(taskRunner.run(`route:${routeChannel.routerChannelId}`, (signal) => loop.run(signal)));
573
593
  }
@@ -63,11 +63,14 @@ class ZLinkChannelRuntimeManager {
63
63
  };
64
64
  }
65
65
  fanoutTopology(channelName) {
66
- return { descriptors: this.sockets.fanoutActiveTargets(channelName) };
66
+ return {
67
+ descriptors: this.lifecycle.fanoutTopologyTargets(channelName) ??
68
+ this.sockets.fanoutActiveTargets(channelName)
69
+ };
67
70
  }
68
71
  observeClientServerTopology(channelName, changed) {
69
72
  const monitor = this.sockets.clientServerMonitoringSource(channelName);
70
- monitor.onEvent(changed);
73
+ monitor.onChange(changed);
71
74
  return () => {
72
75
  void monitor.dispose();
73
76
  };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DefaultZLinkChannelRuntimeOptions = void 0;
4
+ const RegistrationBuilderPolicy_1 = require("../../contracts/Configuration/RegistrationBuilderPolicy");
4
5
  const configuration_1 = require("../configuration");
5
6
  const SendTimeoutValidation_1 = require("../../contracts/Configuration/SendTimeoutValidation");
6
7
  class ZLinkLiveSocketConfig {
@@ -112,8 +113,8 @@ function requireChannelName(channelName) {
112
113
  }
113
114
  }
114
115
  function validatePublicWeight(value) {
115
- if (!Number.isInteger(value) || value < 0 || value > 10_000) {
116
- throw new configuration_1.ZLinkConfigurationException('Weight must be an integer in 0..10000.');
116
+ if (!(0, RegistrationBuilderPolicy_1.isValidPublicWeight)(value)) {
117
+ throw new configuration_1.ZLinkConfigurationException(`Weight must be an integer in 0..${RegistrationBuilderPolicy_1.ZLINK_MAX_PUBLIC_WEIGHT}.`);
117
118
  }
118
119
  }
119
120
  function validateHighWaterMark(value, label) {
@@ -1,11 +1,11 @@
1
- import { ZLinkListenerRecords } from '../foundation/listener-records';
2
1
  import { type ZLinkClientServerServerDescriptor, type ZLinkFanoutPublisherDescriptor } from '../../contracts';
3
- import { type ZLinkFrameworkRegistration } from '../configuration';
4
- import type { ZLinkBackendContext, ZLinkBackendDealerSocket, ZLinkBackendPublisherSocket, ZLinkBackendRouterSocket, ZLinkBackendSocketMonitor, ZLinkBackendSubscriberSocket, ZLinkChannelBackendAdapter, ZLinkMonitoringBackendAdapter } from '../backend/contracts';
5
2
  import type { Message } from '../../contracts/Common/Message';
3
+ import type { ZLinkBackendContext, ZLinkBackendDealerSocket, ZLinkBackendPublisherSocket, ZLinkBackendRouterSocket, ZLinkBackendSocketMonitor, ZLinkBackendSubscriberSocket, ZLinkChannelBackendAdapter, ZLinkMonitoringBackendAdapter } from '../backend/contracts';
4
+ import { type ZLinkFrameworkRegistration } from '../configuration';
5
+ import { ZLinkListenerRecords } from '../foundation/listener-records';
6
6
  import { ServiceDiscoveryRegistry } from '../foundation/service-discovery-registry';
7
- import type { ZLinkChannelEnvelopeHeader } from './channel-envelope';
8
7
  import type { ApplicationJobQueue } from '../host/application-job-queue';
8
+ import type { ZLinkChannelEnvelopeHeader } from './channel-envelope';
9
9
  export interface ZLinkClientServerServerSocketIdentity {
10
10
  readonly serverRid: string;
11
11
  readonly lifecycleGeneration: bigint;
@@ -41,7 +41,8 @@ export declare class ZLinkChannelSocketRegistry {
41
41
  private readonly routeMeshPublicWeights;
42
42
  private readonly clientServerAdmittedClients;
43
43
  private readonly clientServerServerPeers;
44
- private readonly ownedMonitors;
44
+ private readonly disposal;
45
+ private readonly ownedResources;
45
46
  private readonly fanoutConnections;
46
47
  private readonly fanoutPublisherNextBeacon;
47
48
  private clientServerLivenessTimer?;
@@ -52,6 +53,7 @@ export declare class ZLinkChannelSocketRegistry {
52
53
  private readonly listenerRecords;
53
54
  constructor(registration: ZLinkFrameworkRegistration, adapter: ZLinkChannelBackendAdapter, context: ZLinkBackendContext, monitoringAdapter?: ZLinkMonitoringBackendAdapter | undefined, oneWayFailureSink?: ((error: unknown) => void) | undefined, applicationJobQueue?: ApplicationJobQueue | undefined, listenerRecords?: ZLinkListenerRecords);
54
55
  dispose(): Promise<void>;
56
+ private disposeCore;
55
57
  clientDealer(channelName: string): ZLinkBackendDealerSocket;
56
58
  channelRouter(channelName: string): ZLinkBackendRouterSocket;
57
59
  clientServerServerIdentity(channelName: string): ZLinkClientServerServerSocketIdentity;
@@ -68,36 +70,19 @@ export declare class ZLinkChannelSocketRegistry {
68
70
  selectClientServerDealer(channelName: string): ZLinkBackendDealerSocket | undefined;
69
71
  clientDealerForOutbound(channelName: string): ZLinkBackendDealerSocket | undefined;
70
72
  selectedClientServerRid(channelName: string, dealer: ZLinkBackendDealerSocket): string | undefined;
71
- /**
72
- * Resolves a ClientServer send target, waiting when the ready candidate set is still empty, as
73
- * `framework/doc/framework/common/spec/server/02-channel-transport/02-channel-messaging.ko.md` §3.2 requires: the call waits
74
- * at call time for a bounded period and then fails with no-target. The bound is the shorter of
75
- * the call's remaining deadline and five seconds, mirroring the .NET reference
76
- * `ZLinkClientServerClientRuntime.WaitForReadyAsync`. The wait lives here because this registry
77
- * owns ClientServer connections, admission and weighted selection. Sends have no per-call
78
- * timeout, so they use the Channel's request timeout.
79
- *
80
- * The wait only observes admission that is already in flight: it never opens or reconnects a
81
- * connection, so it cannot trigger the admission it waits for, and Framework startup keeps not
82
- * waiting for local ClientServer admission. It applies whenever nothing is selectable, including
83
- * candidate sets excluded by weight 0 or drain, because `selectClientServerDealer` filters the
84
- * same way the reference `SelectReady()` does.
85
- *
86
- * Every attempt yields to the event loop between polls. ClientServer admission completes on the
87
- * monitor drains that the backend poll timer pumps, so a synchronous wait would starve the
88
- * admission it is waiting for and burn the whole bound before failing anyway. That is this
89
- * execution model's form of the hazard the JVM mirror avoids by not holding the admission
90
- * monitor across its sleep.
91
- */
92
- awaitClientDealerForOutbound(channelName: string, signal?: AbortSignal, deadlineAtMs?: number): Promise<ZLinkBackendDealerSocket | undefined>;
73
+ /** Observes discovery changes until the client DEALER admission deadline. */
74
+ awaitClientDealerForOutbound(channelName: string, signal?: AbortSignal): Promise<ZLinkBackendDealerSocket | undefined>;
93
75
  startManualClientServerConnections(): void;
94
76
  startLocalClientServerConnections(): void;
95
- clientServerMonitoringSource(channelName: string): ZLinkBackendSocketMonitor;
77
+ clientServerMonitoringSource(channelName: string): ZLinkBackendSocketMonitor & {
78
+ onChange(handler: () => void): void;
79
+ };
96
80
  clientServerActiveTargets(channelName: string): readonly Pick<ClientServerDiscoveryDescriptor, 'serverRoutingId' | 'weight' | 'state'>[];
97
81
  fanoutActiveTargets(channelName: string): readonly import("../foundation/service-discovery-registry").FanoutPublisherDescriptor[];
98
82
  admitFanoutPublisher(descriptor: ZLinkFanoutPublisherDescriptor, connectionId: string): boolean;
99
83
  removeFanoutPublisher(descriptor: ZLinkFanoutPublisherDescriptor, connectionId: string): boolean;
100
84
  setClientServerServerDescriptor(descriptor: ZLinkClientServerServerDescriptor | undefined, channelName: string): void;
85
+ private notifyClientServerTopology;
101
86
  tryHandleClientServerControl(channelName: string, received: {
102
87
  readonly parts: readonly Message[];
103
88
  readonly replyToken: unknown | null;
@@ -127,7 +112,7 @@ export declare class ZLinkChannelSocketRegistry {
127
112
  onChange(handler: () => void): void;
128
113
  dispose(): Promise<void>;
129
114
  };
130
- private notifyFanoutTopology;
115
+ notifyFanoutTopology(channelName: string): void;
131
116
  private tickFanoutLiveness;
132
117
  private openManualClientServerConnection;
133
118
  private openConfiguredClientServerConnection;