@zlink-systems/framework 0.26.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
  3. package/dist/contracts/Channels/Calls.d.ts +1 -1
  4. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  5. package/dist/contracts/Common/CoreTypes.js +7 -0
  6. package/dist/contracts/Common/index.d.ts +1 -1
  7. package/dist/contracts/Common/index.js +0 -1
  8. package/dist/contracts/Configuration/Builders.d.ts +0 -1
  9. package/dist/contracts/Configuration/Configs.d.ts +0 -1
  10. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  11. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  12. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  13. package/dist/contracts/Configuration/Registration.js +58 -36
  14. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  15. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  16. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  17. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  18. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
  19. package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
  20. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  21. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  22. package/dist/contracts/Handlers/JsonContract.js +10 -4
  23. package/dist/contracts/Locations/Authority.d.ts +1 -1
  24. package/dist/contracts/Locations/Authority.js +3 -2
  25. package/dist/contracts/Locations/Options.js +1 -1
  26. package/dist/contracts/Locations/Stores.d.ts +12 -0
  27. package/dist/contracts/Locations/Stores.js +9 -0
  28. package/dist/contracts/Spots/Contracts.d.ts +2 -2
  29. package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
  30. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
  31. package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
  32. package/dist/internal.d.ts +4 -0
  33. package/dist/internal.js +15 -1
  34. package/dist/nest-integration.d.ts +4 -2
  35. package/dist/nest-integration.js +14 -4
  36. package/dist/runtime/abort.d.ts +1 -0
  37. package/dist/runtime/abort.js +8 -5
  38. package/dist/runtime/activation-admission.d.ts +1 -2
  39. package/dist/runtime/activation-admission.js +2 -6
  40. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  41. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  42. package/dist/runtime/actors/actor-client.d.ts +2 -2
  43. package/dist/runtime/actors/actor-client.js +49 -153
  44. package/dist/runtime/actors/actor-context.d.ts +3 -5
  45. package/dist/runtime/actors/actor-context.js +13 -11
  46. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  47. package/dist/runtime/actors/actor-handoff.js +8 -8
  48. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  49. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  50. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  51. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  52. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  53. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  54. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  55. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  56. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  57. package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
  58. package/dist/runtime/actors/actor-request-deadline.js +6 -0
  59. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  60. package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
  61. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  62. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  63. package/dist/runtime/actors/bound-session-wire.js +2 -7
  64. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  65. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  66. package/dist/runtime/actors/index.d.ts +9 -7
  67. package/dist/runtime/actors/index.js +87 -69
  68. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  69. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  70. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  71. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  72. package/dist/runtime/admission.d.ts +2 -0
  73. package/dist/runtime/admission.js +7 -1
  74. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  75. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  76. package/dist/runtime/backend/contracts/index.d.ts +7 -27
  77. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  78. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  79. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  80. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
  81. package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
  82. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  83. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
  84. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  85. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  86. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  87. package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
  88. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  89. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  90. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  91. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  92. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  93. package/dist/runtime/backend/runtime-values.js +2 -0
  94. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  95. package/dist/runtime/channels/channel-clients.js +73 -59
  96. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  97. package/dist/runtime/channels/channel-envelope.d.ts +1 -1
  98. package/dist/runtime/channels/channel-envelope.js +51 -39
  99. package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
  100. package/dist/runtime/channels/channel-outbound-operations.js +25 -42
  101. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  102. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  103. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  104. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  105. package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
  106. package/dist/runtime/channels/channel-runtime-manager.js +13 -10
  107. package/dist/runtime/channels/channel-socket-options.js +3 -12
  108. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  109. package/dist/runtime/channels/channel-socket-registry.js +240 -177
  110. package/dist/runtime/channels/channel-transports.d.ts +21 -31
  111. package/dist/runtime/channels/channel-transports.js +80 -62
  112. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  113. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  114. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  115. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  116. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  117. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  118. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  119. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  120. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  121. package/dist/runtime/channels/local-spot-route-transport.js +1 -3
  122. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
  123. package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
  124. package/dist/runtime/channels/source-spot-router.d.ts +1 -1
  125. package/dist/runtime/channels/source-spot-router.js +2 -4
  126. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  127. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  128. package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
  129. package/dist/runtime/channels/spot-node-route-transport.js +5 -5
  130. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
  131. package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
  132. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
  133. package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
  134. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  135. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  136. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  137. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  138. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  139. package/dist/runtime/diagnostics/flow-context.js +16 -2
  140. package/dist/runtime/diagnostics/index.d.ts +4 -2
  141. package/dist/runtime/diagnostics/index.js +14 -4
  142. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  143. package/dist/runtime/diagnostics/message-flow.js +10 -19
  144. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  145. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  146. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  147. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  148. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  149. package/dist/runtime/disposal.d.ts +5 -0
  150. package/dist/runtime/disposal.js +22 -0
  151. package/dist/runtime/execution/index.d.ts +12 -9
  152. package/dist/runtime/execution/index.js +58 -14
  153. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  154. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  155. package/dist/runtime/execution/state-lane.d.ts +8 -1
  156. package/dist/runtime/execution/state-lane.js +118 -3
  157. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  158. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  159. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  160. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  161. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  162. package/dist/runtime/foundation/operation-identity.js +9 -5
  163. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  164. package/dist/runtime/foundation/operation-registry.js +34 -44
  165. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  166. package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
  167. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  168. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  169. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  170. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  171. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  172. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  173. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  174. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  175. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  176. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  177. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  178. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  179. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  180. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  181. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  182. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  183. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  184. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  185. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  186. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  187. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  188. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  189. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  190. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  191. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  192. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  193. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  194. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  195. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  196. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  197. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  198. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  199. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  200. package/dist/runtime/framework-errors-internal.js +343 -122
  201. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  202. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  203. package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
  204. package/dist/runtime/host/actor-packet-relay.js +54 -99
  205. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  206. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  207. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  208. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  209. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  210. package/dist/runtime/host/application-job-queue.js +16 -33
  211. package/dist/runtime/host/bound-session-relay.js +1 -1
  212. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  213. package/dist/runtime/host/index.d.ts +14 -13
  214. package/dist/runtime/host/index.js +190 -171
  215. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  216. package/dist/runtime/host/instance-activation-authority.js +17 -45
  217. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  218. package/dist/runtime/host/location-runtime-owner.js +2 -2
  219. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  220. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  221. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  222. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  223. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  224. package/dist/runtime/host/remote-bound-session-relay.js +15 -28
  225. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  226. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  227. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  228. package/dist/runtime/host/runtime-shutdown.js +18 -21
  229. package/dist/runtime/host/service-relocation-control.js +6 -1
  230. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  231. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  232. package/dist/runtime/host/spot-address-transport.d.ts +3 -12
  233. package/dist/runtime/host/spot-address-transport.js +78 -220
  234. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  235. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  236. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  237. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  238. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  239. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  240. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  241. package/dist/runtime/locations/authority-key-codec.js +4 -3
  242. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  243. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  244. package/dist/runtime/locations/creation-operation-id.js +6 -4
  245. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  246. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  247. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  248. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  249. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  250. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  251. package/dist/runtime/locations/key-codec.js +3 -2
  252. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  253. package/dist/runtime/locations/lease-tracker.js +7 -11
  254. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  255. package/dist/runtime/locations/lifecycle.js +2 -31
  256. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  257. package/dist/runtime/locations/location-store-failure.js +7 -0
  258. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  259. package/dist/runtime/locations/location-store-pages.js +13 -0
  260. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  261. package/dist/runtime/locations/location-store-repository.js +309 -336
  262. package/dist/runtime/locations/relocation-blob.js +18 -5
  263. package/dist/runtime/locations/resolvers.d.ts +5 -5
  264. package/dist/runtime/locations/resolvers.js +37 -28
  265. package/dist/runtime/locations/runtime.d.ts +5 -4
  266. package/dist/runtime/locations/runtime.js +123 -92
  267. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  268. package/dist/runtime/locations/spot-location-claims.js +42 -1
  269. package/dist/runtime/messaging/payload-codec.js +26 -20
  270. package/dist/runtime/messaging/request-deadline.d.ts +3 -0
  271. package/dist/runtime/messaging/request-deadline.js +39 -0
  272. package/dist/runtime/messaging/submission-result.d.ts +4 -0
  273. package/dist/runtime/messaging/submission-result.js +56 -1
  274. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  275. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  276. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  277. package/dist/runtime/spots/index.d.ts +14 -20
  278. package/dist/runtime/spots/index.js +302 -176
  279. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  280. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  281. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  282. package/dist/runtime/spots/spot-activation-state.js +2 -2
  283. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  284. package/dist/runtime/spots/spot-activation.js +49 -32
  285. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  286. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  287. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  288. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  289. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  290. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  291. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  292. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  293. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  294. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  295. package/dist/runtime/spots/spot-context.d.ts +2 -2
  296. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  297. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  298. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  299. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  300. package/dist/runtime/spots/spot-manager-public.js +5 -4
  301. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  302. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  303. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  304. package/dist/runtime/spots/spot-outbound.d.ts +7 -8
  305. package/dist/runtime/spots/spot-outbound.js +21 -23
  306. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  307. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  308. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  309. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  310. package/dist/runtime/spots/spot-route-replies.js +3 -1
  311. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  312. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  313. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  314. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  315. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  316. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  317. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  318. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  319. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  320. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  321. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  322. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  323. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  324. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  325. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
  326. package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
  327. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  328. package/dist/runtime/streams/bound-session-service.js +12 -2
  329. package/dist/runtime/streams/index.d.ts +16 -17
  330. package/dist/runtime/streams/index.js +22 -23
  331. package/dist/runtime/streams/managed-stream.d.ts +5 -2
  332. package/dist/runtime/streams/managed-stream.js +20 -13
  333. package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
  334. package/dist/runtime/streams/protocol.d.ts +6 -33
  335. package/dist/runtime/streams/protocol.js +38 -110
  336. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  337. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  338. package/dist/runtime/streams/session-calls.d.ts +6 -8
  339. package/dist/runtime/streams/session-calls.js +6 -22
  340. package/dist/runtime/streams/session-context.d.ts +10 -10
  341. package/dist/runtime/streams/session-context.js +25 -10
  342. package/dist/runtime/streams/session-requests.js +2 -1
  343. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  344. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  345. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  346. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  347. package/dist/runtime/workers/index.d.ts +2 -2
  348. package/dist/runtime/workers/index.js +5 -4
  349. package/package.json +3 -3
  350. package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
  351. package/src/contracts/Channels/Calls.ts +1 -1
  352. package/src/contracts/Common/CoreTypes.ts +7 -0
  353. package/src/contracts/Common/index.ts +1 -1
  354. package/src/contracts/Configuration/Builders.ts +0 -1
  355. package/src/contracts/Configuration/Configs.ts +0 -1
  356. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  357. package/src/contracts/Configuration/Registration.ts +92 -48
  358. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  359. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
  360. package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
  361. package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
  362. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  363. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  364. package/src/contracts/Handlers/JsonContract.ts +14 -4
  365. package/src/contracts/Locations/Authority.ts +7 -3
  366. package/src/contracts/Locations/Options.ts +1 -1
  367. package/src/contracts/Locations/Stores.ts +14 -0
  368. package/src/contracts/Spots/Contracts.ts +2 -2
  369. package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
  370. package/src/contracts/Streams/IZLinkSession.ts +2 -3
  371. package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
  372. package/src/internal.ts +14 -0
  373. package/src/nest-integration.ts +28 -10
  374. package/src/runtime/abort.ts +6 -5
  375. package/src/runtime/activation-admission.ts +2 -8
  376. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  377. package/src/runtime/actors/actor-client.ts +85 -218
  378. package/src/runtime/actors/actor-context.ts +39 -33
  379. package/src/runtime/actors/actor-handoff.ts +24 -22
  380. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  381. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  382. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  383. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  384. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  385. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  386. package/src/runtime/actors/actor-request-deadline.ts +4 -0
  387. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  388. package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
  389. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  390. package/src/runtime/actors/bound-session-wire.ts +2 -8
  391. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  392. package/src/runtime/actors/index.ts +100 -79
  393. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  394. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  395. package/src/runtime/admission.ts +8 -1
  396. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  397. package/src/runtime/backend/contracts/index.ts +14 -37
  398. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  399. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  400. package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
  401. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
  402. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  403. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  404. package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
  405. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  406. package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
  407. package/src/runtime/backend/raw-binding-port.ts +1 -1
  408. package/src/runtime/backend/runtime-values.ts +4 -1
  409. package/src/runtime/channels/channel-clients.ts +139 -102
  410. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  411. package/src/runtime/channels/channel-envelope.ts +74 -57
  412. package/src/runtime/channels/channel-outbound-operations.ts +40 -55
  413. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  414. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  415. package/src/runtime/channels/channel-runtime-manager.ts +12 -30
  416. package/src/runtime/channels/channel-socket-options.ts +8 -15
  417. package/src/runtime/channels/channel-socket-registry.ts +291 -196
  418. package/src/runtime/channels/channel-transports.ts +168 -145
  419. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  420. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  421. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  422. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  423. package/src/runtime/channels/local-spot-route-transport.ts +1 -5
  424. package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
  425. package/src/runtime/channels/source-spot-router.ts +2 -9
  426. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  427. package/src/runtime/channels/spot-node-route-transport.ts +7 -9
  428. package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
  429. package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
  430. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  431. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  432. package/src/runtime/diagnostics/flow-context.ts +16 -2
  433. package/src/runtime/diagnostics/index.ts +27 -17
  434. package/src/runtime/diagnostics/message-flow.ts +15 -25
  435. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  436. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  437. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  438. package/src/runtime/disposal.ts +19 -0
  439. package/src/runtime/execution/index.ts +60 -20
  440. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  441. package/src/runtime/execution/state-lane.ts +142 -4
  442. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  443. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  444. package/src/runtime/foundation/operation-identity.ts +11 -5
  445. package/src/runtime/foundation/operation-registry.ts +33 -50
  446. package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
  447. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  448. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  449. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  450. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  451. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  452. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  453. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  454. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  455. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  456. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  457. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  458. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  459. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  460. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  461. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  462. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  463. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  464. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  465. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  466. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  467. package/src/runtime/framework-errors-internal.ts +380 -134
  468. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  469. package/src/runtime/host/actor-packet-relay.ts +63 -160
  470. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  471. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  472. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  473. package/src/runtime/host/application-job-queue.ts +28 -34
  474. package/src/runtime/host/bound-session-relay.ts +1 -2
  475. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  476. package/src/runtime/host/index.ts +327 -320
  477. package/src/runtime/host/instance-activation-authority.ts +89 -109
  478. package/src/runtime/host/location-runtime-owner.ts +4 -2
  479. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  480. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  481. package/src/runtime/host/remote-bound-session-relay.ts +16 -57
  482. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  483. package/src/runtime/host/runtime-shutdown.ts +17 -21
  484. package/src/runtime/host/service-relocation-control.ts +14 -1
  485. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  486. package/src/runtime/host/spot-address-transport.ts +175 -356
  487. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  488. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  489. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  490. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  491. package/src/runtime/locations/authority-key-codec.ts +7 -3
  492. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  493. package/src/runtime/locations/creation-operation-id.ts +6 -3
  494. package/src/runtime/locations/domain-store-contract.ts +12 -3
  495. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  496. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  497. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  498. package/src/runtime/locations/key-codec.ts +3 -2
  499. package/src/runtime/locations/lease-tracker.ts +8 -14
  500. package/src/runtime/locations/lifecycle.ts +13 -43
  501. package/src/runtime/locations/location-store-failure.ts +4 -0
  502. package/src/runtime/locations/location-store-pages.ts +18 -0
  503. package/src/runtime/locations/location-store-repository.ts +457 -482
  504. package/src/runtime/locations/relocation-blob.ts +17 -6
  505. package/src/runtime/locations/resolvers.ts +75 -49
  506. package/src/runtime/locations/runtime.ts +220 -110
  507. package/src/runtime/locations/spot-location-claims.ts +58 -1
  508. package/src/runtime/messaging/payload-codec.ts +35 -24
  509. package/src/runtime/messaging/request-deadline.ts +58 -0
  510. package/src/runtime/messaging/submission-result.ts +72 -2
  511. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  512. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  513. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  514. package/src/runtime/spots/index.ts +433 -229
  515. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  516. package/src/runtime/spots/spot-activation-state.ts +2 -2
  517. package/src/runtime/spots/spot-activation.ts +67 -37
  518. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  519. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  520. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  521. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  522. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  523. package/src/runtime/spots/spot-context.ts +3 -3
  524. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  525. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  526. package/src/runtime/spots/spot-manager-public.ts +21 -17
  527. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  528. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  529. package/src/runtime/spots/spot-outbound.ts +59 -47
  530. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  531. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  532. package/src/runtime/spots/spot-route-replies.ts +6 -4
  533. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  534. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  535. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  536. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  537. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  538. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  539. package/src/runtime/spots/spot-timer.ts +3 -2
  540. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  541. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  542. package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
  543. package/src/runtime/streams/bound-session-service.ts +22 -2
  544. package/src/runtime/streams/index.ts +78 -68
  545. package/src/runtime/streams/managed-stream.ts +32 -23
  546. package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
  547. package/src/runtime/streams/protocol.ts +34 -88
  548. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  549. package/src/runtime/streams/session-calls.ts +11 -36
  550. package/src/runtime/streams/session-context.ts +60 -25
  551. package/src/runtime/streams/session-requests.ts +2 -1
  552. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  553. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  554. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  555. package/src/runtime/workers/index.ts +13 -12
  556. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  557. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  558. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  559. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  560. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  561. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,8 +1,8 @@
1
1
  import { type ZLinkFanoutPublisherDescriptor } from '../../contracts/Locations';
2
2
  import { type ZLinkLocationOptionOverrides } from '../../contracts/Locations/Options';
3
- import type { ZLinkFrameworkRegistration } from '../configuration';
4
- import type { ZLinkLocationRuntime, ZLinkLocationRuntimeStores } from '../locations';
5
3
  import type { ZLinkBackendSubscriberSocket } from '../backend/contracts';
4
+ import { type ZLinkFrameworkRegistration } from '../configuration';
5
+ import type { ZLinkLocationRuntime, ZLinkLocationRuntimeStores } from '../locations';
6
6
  import { ZLinkChannelSocketRegistry } from './channel-socket-registry';
7
7
  export declare class ZLinkFanoutLocationRuntime {
8
8
  private readonly registration;
@@ -15,7 +15,7 @@ export declare class ZLinkFanoutLocationRuntime {
15
15
  private readonly store;
16
16
  private readonly localDescriptors;
17
17
  private readonly publisherIdentities;
18
- private readonly connections;
18
+ private readonly targets;
19
19
  private controller?;
20
20
  private timer?;
21
21
  constructor(registration: ZLinkFrameworkRegistration, sockets: ZLinkChannelSocketRegistry, locationRuntime: ZLinkLocationRuntime, stores: ZLinkLocationRuntimeStores, options: ZLinkLocationOptionOverrides, onSubscriberOpened: (channelName: string, connectionId: string, subscriber: ZLinkBackendSubscriberSocket) => () => Promise<void>);
@@ -24,11 +24,24 @@ export declare class ZLinkFanoutLocationRuntime {
24
24
  private tickCore;
25
25
  stop(signal?: AbortSignal): Promise<void>;
26
26
  activeTargets(channelName: string): readonly ZLinkFanoutPublisherDescriptor[];
27
+ topologyTargets(channelName: string): {
28
+ channelName: string;
29
+ publisherRoutingId: string;
30
+ lifecycleGeneration: bigint;
31
+ descriptorRevision: bigint;
32
+ advertisedEndpoint: string;
33
+ state: "error" | "preparing" | "serving" | "retiring" | "stopped";
34
+ }[] | undefined;
35
+ private isAutomaticSubscriber;
27
36
  reclaimOwnerRows(signal?: AbortSignal): Promise<void>;
28
37
  private publishLocalPublishers;
29
38
  private reconcileSubscribers;
39
+ private reconcileConnection;
30
40
  private openConnection;
41
+ private removeTarget;
31
42
  private closeConnection;
43
+ private detachConnection;
44
+ private closeDetachedConnection;
32
45
  private replaceConnection;
33
46
  private listLivePublishers;
34
47
  private storeOwnerLease;
@@ -4,8 +4,11 @@ exports.ZLinkFanoutLocationRuntime = void 0;
4
4
  const node_crypto_1 = require("node:crypto");
5
5
  const Locations_1 = require("../../contracts/Locations");
6
6
  const Options_1 = require("../../contracts/Locations/Options");
7
+ const Stores_1 = require("../../contracts/Locations/Stores");
7
8
  const configuration_1 = require("../configuration");
8
9
  const state_lane_1 = require("../execution/state-lane");
10
+ const runtime_state_projections_1 = require("../foundation/runtime-state-projections");
11
+ const event_loop_resources_1 = require("../foundation/event-loop-resources");
9
12
  class ZLinkFanoutLocationRuntime {
10
13
  registration;
11
14
  sockets;
@@ -17,7 +20,7 @@ class ZLinkFanoutLocationRuntime {
17
20
  store;
18
21
  localDescriptors = new Map();
19
22
  publisherIdentities = new Map();
20
- connections = new Map();
23
+ targets = new Map();
21
24
  controller;
22
25
  timer;
23
26
  constructor(registration, sockets, locationRuntime, stores, options, onSubscriberOpened) {
@@ -64,16 +67,39 @@ class ZLinkFanoutLocationRuntime {
64
67
  });
65
68
  if (timer !== undefined)
66
69
  clearTimeout(timer);
67
- const connectionIds = await this.lane.run(() => [...this.connections.keys()]);
68
- await Promise.allSettled(connectionIds.map((id) => this.closeConnection(id)));
69
- await this.removeLocalPublishers(signal);
70
+ const targets = await this.lane.run(() => [...this.targets]);
71
+ const targetResults = await Promise.allSettled(targets.map(([id, target]) => this.removeTarget(id, target)));
72
+ const publisherResults = await Promise.allSettled([this.removeLocalPublishers(signal)]);
73
+ (0, event_loop_resources_1.finishResourceCleanup)([...targetResults, ...publisherResults].flatMap((result) => result.status === 'rejected' ? [result.reason] : []));
70
74
  }
71
75
  activeTargets(channelName) {
72
- return [...this.connections.values()]
73
- .filter((target) => target.state === 'ready')
76
+ return [...this.targets.values()]
77
+ .filter((target) => target.connection?.state === 'ready')
74
78
  .map((target) => target.descriptor)
75
79
  .filter((descriptor) => descriptor.channelName === channelName);
76
80
  }
81
+ topologyTargets(channelName) {
82
+ if (!this.isAutomaticSubscriber(channelName))
83
+ return undefined;
84
+ return [...this.targets.values()]
85
+ .filter((target) => target.descriptor.channelName === channelName)
86
+ .map((target) => ({
87
+ channelName,
88
+ publisherRoutingId: String(target.descriptor.publisherRid),
89
+ lifecycleGeneration: target.descriptor.lifecycleGeneration,
90
+ descriptorRevision: target.descriptor.descriptorRevision,
91
+ advertisedEndpoint: target.descriptor.endpoint,
92
+ state: target.descriptor.state === Locations_1.ZLinkFrameworkRuntimeState.Serving
93
+ ? target.connection?.state === 'ready'
94
+ ? 'serving'
95
+ : 'preparing'
96
+ : (0, runtime_state_projections_1.discoveryAvailabilityForRuntimeState)(target.descriptor.state)
97
+ }));
98
+ }
99
+ isAutomaticSubscriber(channelName) {
100
+ const subscriber = this.registration.channels.get(channelName)?.subscriber;
101
+ return subscriber !== undefined && (subscriber.manualConnections?.length ?? 0) === 0;
102
+ }
77
103
  async reclaimOwnerRows(signal) {
78
104
  const owner = this.requireOwnerToken();
79
105
  const descriptors = await this.lane.run(() => [...this.localDescriptors]);
@@ -154,124 +180,150 @@ class ZLinkFanoutLocationRuntime {
154
180
  }
155
181
  }
156
182
  async reconcileSubscribers(signal) {
157
- for (const [channelName, channel] of this.registration.channels) {
158
- if (channel.subscriber === undefined ||
159
- (channel.subscriber.manualConnections?.length ?? 0) > 0) {
183
+ for (const channelName of this.registration.channels.keys()) {
184
+ if (!this.isAutomaticSubscriber(channelName))
160
185
  continue;
161
- }
186
+ const previous = this.topologyTargets(channelName);
162
187
  const rows = await this.listLivePublishers(channelName, signal);
163
188
  const desired = new Map(rows.map((row) => [fanoutConnectionId(row), row]));
164
189
  for (const [connectionId, descriptor] of desired) {
165
- const current = await this.lane.run(() => this.connections.get(connectionId));
190
+ let current = await this.lane.run(() => this.targets.get(connectionId));
166
191
  if (current === undefined) {
167
- await this.openConnection(connectionId, descriptor);
168
- continue;
192
+ const created = { descriptor };
193
+ current = created;
194
+ await this.lane.run(() => this.targets.set(connectionId, created));
169
195
  }
170
- if (descriptor.descriptorRevision < current.descriptor.descriptorRevision) {
196
+ else if (descriptor.descriptorRevision < current.descriptor.descriptorRevision) {
171
197
  continue;
172
198
  }
173
- if (descriptor.descriptorRevision === current.descriptor.descriptorRevision) {
199
+ else if (descriptor.descriptorRevision === current.descriptor.descriptorRevision) {
174
200
  if (!sameFanoutDescriptor(descriptor, current.descriptor)) {
175
- await this.closeConnection(connectionId);
201
+ await this.removeTarget(connectionId, current);
202
+ continue;
176
203
  }
177
- continue;
178
204
  }
179
- if (!sameFanoutImmutableIdentity(descriptor, current.descriptor)) {
180
- await this.closeConnection(connectionId);
205
+ else if (!sameFanoutImmutableIdentity(descriptor, current.descriptor)) {
206
+ await this.removeTarget(connectionId, current);
181
207
  continue;
182
208
  }
183
- await this.lane.run(() => {
184
- if (this.connections.get(connectionId) === current)
185
- current.descriptor = descriptor;
186
- });
187
- if (current.state === 'ready') {
188
- this.sockets.admitFanoutPublisher(descriptor, connectionId);
209
+ else {
210
+ const target = current;
211
+ await this.lane.run(() => {
212
+ if (this.targets.get(connectionId) === target)
213
+ target.descriptor = descriptor;
214
+ });
215
+ if (current.connection?.state === 'ready') {
216
+ this.sockets.admitFanoutPublisher(current.descriptor, connectionId);
217
+ }
189
218
  }
219
+ await this.reconcileConnection(connectionId, current);
190
220
  }
191
- const connections = await this.lane.run(() => [...this.connections]);
192
- for (const [connectionId, current] of connections) {
221
+ const targets = await this.lane.run(() => [...this.targets]);
222
+ for (const [connectionId, current] of targets) {
193
223
  if (current.descriptor.channelName === channelName && !desired.has(connectionId)) {
194
- await this.closeConnection(connectionId);
224
+ await this.removeTarget(connectionId, current);
195
225
  }
196
226
  }
227
+ const next = this.topologyTargets(channelName);
228
+ if (previous.length !== next.length ||
229
+ previous.some((publisher, index) => publisher.publisherRoutingId !== next[index].publisherRoutingId ||
230
+ publisher.state !== next[index].state)) {
231
+ this.sockets.notifyFanoutTopology(channelName);
232
+ }
233
+ }
234
+ }
235
+ async reconcileConnection(connectionId, target) {
236
+ if (target.descriptor.state !== Locations_1.ZLinkFrameworkRuntimeState.Serving) {
237
+ await this.closeConnection(target);
238
+ }
239
+ else if (target.connection === undefined) {
240
+ await this.openConnection(connectionId, target);
197
241
  }
198
242
  }
199
- async openConnection(connectionId, descriptor) {
200
- let target;
243
+ async openConnection(connectionId, target) {
244
+ const descriptor = target.descriptor;
245
+ let connection;
201
246
  const subscriber = this.sockets.openFanoutSubscriberConnection(descriptor.channelName, connectionId, descriptor.endpoint, {
202
247
  onReady: () => {
203
- const current = this.connections.get(connectionId);
204
- if (target !== undefined && current === target) {
205
- current.state = 'ready';
206
- this.sockets.admitFanoutPublisher(descriptor, connectionId);
248
+ if (connection !== undefined && target.connection === connection) {
249
+ connection.state = 'ready';
250
+ this.sockets.admitFanoutPublisher(target.descriptor, connectionId);
207
251
  }
208
252
  },
209
253
  onTerminated: () => {
210
- const current = this.connections.get(connectionId);
211
- if (target !== undefined && current === target && current.reconnectEligible) {
212
- this.sockets.removeFanoutPublisher(descriptor, connectionId);
213
- current.state = 'connecting';
254
+ if (connection !== undefined && target.connection === connection) {
255
+ this.sockets.removeFanoutPublisher(target.descriptor, connectionId);
256
+ connection.state = 'connecting';
257
+ const terminated = connection;
214
258
  setImmediate(() => {
215
- void this.replaceConnection(current).catch((error) => this.locationRuntime.reportDiscoveryFailure(error));
259
+ void this.replaceConnection(target, terminated).catch((error) => this.locationRuntime.reportDiscoveryFailure(error));
216
260
  });
217
261
  }
218
262
  }
219
263
  });
220
- target = {
221
- descriptor,
264
+ connection = {
222
265
  connectionId,
223
- subscriber,
224
- reconnectEligible: true,
225
266
  stopReceiver: async () => { },
226
267
  state: 'connecting'
227
268
  };
228
- await this.lane.run(() => this.connections.set(connectionId, target));
229
- target.stopReceiver = this.onSubscriberOpened(descriptor.channelName, connectionId, subscriber);
269
+ const opened = connection;
270
+ await this.lane.run(() => (target.connection = opened));
271
+ connection.stopReceiver = this.onSubscriberOpened(descriptor.channelName, connectionId, subscriber);
230
272
  }
231
- async closeConnection(connectionId) {
232
- const current = await this.lane.run(() => {
233
- const target = this.connections.get(connectionId);
234
- if (target !== undefined) {
235
- target.reconnectEligible = false;
236
- this.connections.delete(connectionId);
237
- }
238
- return target;
273
+ async removeTarget(connectionId, target) {
274
+ const detached = await this.lane.run(() => {
275
+ if (this.targets.get(connectionId) !== target)
276
+ return undefined;
277
+ this.targets.delete(connectionId);
278
+ return this.detachConnection(target);
239
279
  });
280
+ await this.closeDetachedConnection(target.descriptor, detached);
281
+ }
282
+ async closeConnection(target) {
283
+ const detached = await this.lane.run(() => this.detachConnection(target));
284
+ await this.closeDetachedConnection(target.descriptor, detached);
285
+ }
286
+ detachConnection(target) {
287
+ const connection = target.connection;
288
+ target.connection = undefined;
289
+ return connection;
290
+ }
291
+ async closeDetachedConnection(descriptor, current) {
240
292
  if (current === undefined)
241
293
  return;
242
- this.sockets.removeFanoutPublisher(current.descriptor, connectionId);
243
- await current.stopReceiver();
244
- await this.sockets.closeFanoutSubscriberConnection(connectionId);
294
+ this.sockets.removeFanoutPublisher(descriptor, current.connectionId);
295
+ await (0, event_loop_resources_1.closeResources)([
296
+ { close: () => current.stopReceiver() },
297
+ { close: () => this.sockets.closeFanoutSubscriberConnection(current.connectionId) }
298
+ ]);
245
299
  }
246
- async replaceConnection(expected) {
300
+ async replaceConnection(target, expected) {
247
301
  const prepared = await this.lane.run(() => {
248
302
  const controller = this.controller;
249
- if (this.connections.get(expected.connectionId) !== expected ||
250
- !expected.reconnectEligible ||
303
+ if (this.targets.get(expected.connectionId) !== target ||
304
+ target.connection !== expected ||
251
305
  controller === undefined)
252
306
  return undefined;
253
- return { controller, descriptor: expected.descriptor };
307
+ return controller;
254
308
  });
255
309
  if (prepared === undefined) {
256
310
  return;
257
311
  }
258
- await this.closeConnection(expected.connectionId);
259
- if (await this.lane.run(() => this.controller === prepared.controller)) {
260
- await this.openConnection(expected.connectionId, prepared.descriptor);
312
+ await this.closeConnection(target);
313
+ if (await this.lane.run(() => this.controller === prepared && this.targets.get(expected.connectionId) === target)) {
314
+ await this.reconcileConnection(expected.connectionId, target);
261
315
  }
262
316
  }
263
317
  async listLivePublishers(channelName, signal) {
264
318
  const rows = [];
265
319
  let continuationToken;
266
320
  do {
267
- const page = await this.store.listFanoutPublishers(channelName, { pageSize: 1000, continuationToken }, signal);
321
+ const page = await this.store.listFanoutPublishers(channelName, { pageSize: Stores_1.ZLINK_PROVIDER_MAX_PAGE_SIZE, continuationToken }, signal);
268
322
  rows.push(...page.items);
269
323
  continuationToken = page.continuationToken;
270
324
  } while (continuationToken !== undefined);
271
325
  const live = [];
272
326
  for (const descriptor of rows) {
273
- if (descriptor.state !== Locations_1.ZLinkFrameworkRuntimeState.Serving)
274
- continue;
275
327
  const lease = await this.storeOwnerLease(descriptor.ownerId, signal);
276
328
  if (lease.kind === 'found' &&
277
329
  lease.token.leaseGeneration === descriptor.leaseGeneration &&
@@ -289,13 +341,19 @@ class ZLinkFanoutLocationRuntime {
289
341
  if (owner === undefined)
290
342
  return;
291
343
  const descriptors = await this.lane.run(() => [...this.localDescriptors.values()]);
292
- for (const descriptor of descriptors) {
293
- await this.store.removeFanoutPublisher({
294
- channelName: descriptor.channelName,
295
- publisherRid: descriptor.publisherRid
296
- }, owner, signal);
344
+ try {
345
+ await (0, event_loop_resources_1.closeResources)(descriptors.map((descriptor) => ({
346
+ close: async () => {
347
+ await this.store.removeFanoutPublisher({
348
+ channelName: descriptor.channelName,
349
+ publisherRid: descriptor.publisherRid
350
+ }, owner, signal);
351
+ }
352
+ })));
353
+ }
354
+ finally {
355
+ await this.lane.run(() => this.localDescriptors.clear());
297
356
  }
298
- await this.lane.run(() => this.localDescriptors.clear());
299
357
  }
300
358
  requireOwnerToken() {
301
359
  const token = this.locationRuntime.currentOwnerToken;
@@ -4,6 +4,6 @@ export declare class ZLinkLocalSpotRouteTransport {
4
4
  private readonly dispatcher;
5
5
  private readonly defaultRequestTimeoutMs;
6
6
  constructor(dispatcher: ZLinkLocalSpotRouteDispatcher | undefined, defaultRequestTimeoutMs: number | undefined);
7
- send(routerChannelId: string, spotId: RoutingId, packetName: string | undefined, message: unknown, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>, timeoutMs?: number): Promise<void>;
7
+ send(routerChannelId: string, spotId: RoutingId, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<void>;
8
8
  request<TReply>(routerChannelId: string, spotId: RoutingId, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply>;
9
9
  }
@@ -9,14 +9,12 @@ class ZLinkLocalSpotRouteTransport {
9
9
  this.dispatcher = dispatcher;
10
10
  this.defaultRequestTimeoutMs = defaultRequestTimeoutMs;
11
11
  }
12
- async send(routerChannelId, spotId, packetName, message, signal, metadata, timeoutMs) {
12
+ async send(routerChannelId, spotId, packetName, message, metadata) {
13
13
  if (this.dispatcher === undefined) {
14
14
  throw new configuration_1.ZLinkConfigurationException(`Route channel '${routerChannelId}' could not dispatch local SPOT send.`);
15
15
  }
16
16
  await this.dispatcher.send(spotId, packetName, message, {
17
17
  channelName: routerChannelId,
18
- admissionTimeoutMs: timeoutMs ?? this.defaultRequestTimeoutMs,
19
- signal,
20
18
  metadata
21
19
  });
22
20
  }
@@ -6,7 +6,7 @@ import type { ZLinkChannelSocketRegistry } from './channel-socket-registry';
6
6
  export declare class ZLinkRouterSocketSpotRouteTransport {
7
7
  private readonly sockets;
8
8
  constructor(sockets: ZLinkChannelSocketRegistry);
9
- send(target: ZLinkSpotRouteTarget, parts: readonly Message[], flags: ZLinkBackendSendFlags, signal?: AbortSignal): Promise<void>;
9
+ send(target: ZLinkSpotRouteTarget, parts: readonly Message[], flags: ZLinkBackendSendFlags): Promise<void>;
10
10
  request<TReply>(target: ZLinkSpotRouteTarget, parts: readonly Message[], codecs: ZLinkChannelEnvelopeCodecRegistry | undefined, flags: ZLinkBackendSendFlags, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply>;
11
11
  requestRaw(target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal): Promise<readonly Message[]>;
12
12
  }
@@ -8,10 +8,10 @@ class ZLinkRouterSocketSpotRouteTransport {
8
8
  constructor(sockets) {
9
9
  this.sockets = sockets;
10
10
  }
11
- async send(target, parts, flags, signal) {
11
+ async send(target, parts, flags) {
12
12
  const router = this.sockets.routeRouter(target.routerChannelId);
13
13
  try {
14
- await (0, abort_1.awaitWithAbort)(router.sendToSpot(target.targetNodeRid, target.spotId, parts, flags), signal);
14
+ await router.sendToSpot(target.targetNodeRid, target.spotId, parts, flags);
15
15
  }
16
16
  finally {
17
17
  (0, channel_envelope_1.closeMessages)(parts);
@@ -5,6 +5,6 @@ export declare class ZLinkSourceSpotRouter {
5
5
  private readonly defaultRequestTimeoutMs;
6
6
  constructor(defaultRequestTimeoutMs: number | undefined);
7
7
  request<TReply>(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply>;
8
- send(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>, timeoutMs?: number): Promise<void>;
8
+ send(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<void>;
9
9
  requestRaw(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal): Promise<readonly Message[]>;
10
10
  }
@@ -26,14 +26,12 @@ class ZLinkSourceSpotRouter {
26
26
  (0, channel_envelope_1.closeMessages)(parts);
27
27
  }
28
28
  }
29
- async send(sourceSpot, target, packetName, message, signal, metadata, timeoutMs) {
30
- (0, abort_1.throwIfAborted)(signal);
29
+ async send(sourceSpot, target, packetName, message, metadata) {
31
30
  const parts = [
32
31
  (0, spot_direct_envelope_1.encodeSpotDirectEnvelope)(3 /* ZLinkChannelMessageKind.Command */, target.routerChannelId, packetName, message, metadata)
33
32
  ];
34
33
  try {
35
- void timeoutMs;
36
- await (0, abort_1.awaitWithAbort)(sourceSpot.sendToSpot(target.targetNodeRid, target.spotId, parts), signal);
34
+ await sourceSpot.sendToSpot(target.targetNodeRid, target.spotId, parts);
37
35
  }
38
36
  finally {
39
37
  (0, channel_envelope_1.closeMessages)(parts);
@@ -1,5 +1,6 @@
1
1
  import type { Message } from '../../contracts/Common/Message';
2
2
  import type { ZLinkBackendMessageLike as MessageLike } from '../backend/runtime-values';
3
3
  import { ZLinkChannelMessageKind } from './channel-envelope';
4
+ export declare const SPOT_DIRECT_ENVELOPE = "zlink.framework.spot-direct.v1";
4
5
  export declare function encodeSpotDirectEnvelope(kind: ZLinkChannelMessageKind.Request | ZLinkChannelMessageKind.Command, channelName: string, packetName: string | undefined, payload: unknown, metadata?: ReadonlyMap<string, string>): MessageLike;
5
6
  export declare function decodeSpotDirectReply<TReply>(parts: readonly Message[]): TReply;
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SPOT_DIRECT_ENVELOPE = void 0;
3
4
  exports.encodeSpotDirectEnvelope = encodeSpotDirectEnvelope;
4
5
  exports.decodeSpotDirectReply = decodeSpotDirectReply;
5
6
  const configuration_1 = require("../configuration");
6
- const SPOT_DIRECT_ENVELOPE = 'zlink.framework.spot-direct.v1';
7
+ exports.SPOT_DIRECT_ENVELOPE = 'zlink.framework.spot-direct.v1';
7
8
  function encodeSpotDirectEnvelope(kind, channelName, packetName, payload, metadata) {
8
9
  return Buffer.from(JSON.stringify({
9
- marker: SPOT_DIRECT_ENVELOPE,
10
+ marker: exports.SPOT_DIRECT_ENVELOPE,
10
11
  kind,
11
12
  channelName,
12
13
  packetName,
@@ -19,7 +20,7 @@ function decodeSpotDirectReply(parts) {
19
20
  throw new configuration_1.ZLinkConfigurationException('Spot direct reply is missing.');
20
21
  }
21
22
  const reply = JSON.parse(parts[0].data().toString());
22
- if (reply.marker !== SPOT_DIRECT_ENVELOPE) {
23
+ if (reply.marker !== exports.SPOT_DIRECT_ENVELOPE) {
23
24
  throw new configuration_1.ZLinkConfigurationException('Spot direct reply marker is invalid.');
24
25
  }
25
26
  if (reply.ok !== true) {
@@ -7,7 +7,7 @@ export declare class ZLinkSpotNodeRouteTransport {
7
7
  private readonly registration;
8
8
  private readonly targets;
9
9
  constructor(registration: ZLinkFrameworkRegistration, targets: ZLinkSpotRouteTargetResolver);
10
- send(target: ZLinkSpotRouteTarget, parts: readonly Message[], signal?: AbortSignal): Promise<boolean>;
10
+ send(target: ZLinkSpotRouteTarget, parts: readonly Message[]): Promise<boolean>;
11
11
  request<TReply>(target: ZLinkSpotRouteTarget, parts: readonly Message[], codecs: ZLinkChannelEnvelopeCodecRegistry | undefined, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply> | undefined;
12
12
  requestRaw(target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal): Promise<readonly Message[]> | undefined;
13
13
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkSpotNodeRouteTransport = void 0;
4
+ const Registration_1 = require("../../contracts/Configuration/Registration");
4
5
  const abort_1 = require("../abort");
5
6
  const channel_envelope_1 = require("./channel-envelope");
6
7
  class ZLinkSpotNodeRouteTransport {
@@ -10,14 +11,13 @@ class ZLinkSpotNodeRouteTransport {
10
11
  this.registration = registration;
11
12
  this.targets = targets;
12
13
  }
13
- async send(target, parts, signal) {
14
+ async send(target, parts) {
14
15
  const router = this.targets.spotNodeRouter(target.routerChannelId);
15
16
  if (router === undefined) {
16
17
  return false;
17
18
  }
18
19
  try {
19
- (0, abort_1.throwIfAborted)(signal);
20
- await (0, abort_1.awaitWithAbort)(router.sendToSpot(target.targetNodeRid, target.spotId, parts), signal);
20
+ await router.sendToSpot(target.targetNodeRid, target.spotId, parts);
21
21
  return true;
22
22
  }
23
23
  finally {
@@ -29,7 +29,7 @@ class ZLinkSpotNodeRouteTransport {
29
29
  if (router === undefined) {
30
30
  return undefined;
31
31
  }
32
- const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? 30_000;
32
+ const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS;
33
33
  (0, abort_1.throwIfAborted)(signal);
34
34
  const operation = router.requestToSpot(target.targetNodeRid, target.spotId, parts, effectiveTimeoutMs);
35
35
  return (0, abort_1.awaitWithAbort)(operation, signal, () => {
@@ -49,7 +49,7 @@ class ZLinkSpotNodeRouteTransport {
49
49
  if (router === undefined) {
50
50
  return undefined;
51
51
  }
52
- const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? 30_000;
52
+ const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS;
53
53
  (0, abort_1.throwIfAborted)(signal);
54
54
  const operation = router.requestToSpot(target.targetNodeRid, target.spotId, request, effectiveTimeoutMs);
55
55
  return (0, abort_1.awaitWithAbort)(operation, signal, () => {
@@ -7,7 +7,7 @@ export declare class ZLinkSpotRouteBridgeTransport {
7
7
  private readonly defaultRequestTimeoutMs;
8
8
  constructor(bridges: ReadonlyMap<string, ZLinkBackendSpotRouteBridge>, defaultRequestTimeoutMs: number | undefined);
9
9
  has(routerChannelId: string): boolean;
10
- send(target: ZLinkSpotRouteTarget, parts: readonly Message[], signal?: AbortSignal): Promise<void>;
10
+ send(target: ZLinkSpotRouteTarget, parts: readonly Message[]): Promise<void>;
11
11
  request<TReply>(target: ZLinkSpotRouteTarget, parts: readonly Message[], codecs: ZLinkChannelEnvelopeCodecRegistry | undefined, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply>;
12
12
  requestRaw(target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal): Promise<readonly Message[]>;
13
13
  private requireBridge;
@@ -15,10 +15,10 @@ class ZLinkSpotRouteBridgeTransport {
15
15
  has(routerChannelId) {
16
16
  return this.bridges.has(routerChannelId);
17
17
  }
18
- async send(target, parts, signal) {
18
+ async send(target, parts) {
19
19
  const bridge = this.requireBridge(target.routerChannelId);
20
20
  try {
21
- await (0, abort_1.awaitWithAbort)((0, channel_multipart_1.appendParts)(bridge.send(target.routerChannelId, target.targetNodeRid, target.spotId), parts).submit(), signal);
21
+ await (0, channel_multipart_1.appendParts)(bridge.send(target.routerChannelId, target.targetNodeRid, target.spotId), parts).submit();
22
22
  }
23
23
  finally {
24
24
  (0, channel_envelope_1.closeMessages)(parts);
@@ -8,8 +8,6 @@ import type { ZLinkChannelSocketRegistry } from './channel-socket-registry';
8
8
  export interface ZLinkLocalSpotRouteDispatcher {
9
9
  send(spotId: RoutingId, packetName: string | undefined, message: unknown, context: {
10
10
  readonly channelName: string;
11
- readonly admissionTimeoutMs?: number;
12
- readonly signal?: AbortSignal;
13
11
  readonly metadata?: ReadonlyMap<string, string>;
14
12
  }): Promise<void>;
15
13
  request<TReply>(spotId: RoutingId, packetName: string | undefined, request: unknown, context: {
@@ -39,12 +37,12 @@ export declare class ZLinkSpotRouteDispatchStrategy {
39
37
  spotRouteNode(routerChannelId: string): ZLinkBackendSpotNode | undefined;
40
38
  canRouteChannel(routerChannelId: string): boolean;
41
39
  canRoutePacketChannel(routerChannelId: string): boolean;
42
- routeSendToSpot(spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>, timeoutMs?: number): Promise<void>;
40
+ routeSendToSpot(spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<void>;
43
41
  private routeSendToSpotScoped;
44
42
  routeRequestToSpot<TReply>(spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<TReply>;
45
43
  private routeRequestToSpotScoped;
46
44
  routeRequestFromSpotToSpot<TReply>(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply>;
47
- routeSendFromSpotToSpot(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>, timeoutMs?: number): Promise<void>;
45
+ routeSendFromSpotToSpot(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<void>;
48
46
  routeRequestRawFromSpotToSpot(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal): Promise<readonly Message[]>;
49
47
  routeRequestRawToSpot(spotRouteTarget: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal): Promise<readonly Message[]>;
50
48
  }
@@ -41,35 +41,34 @@ class ZLinkSpotRouteDispatchStrategy {
41
41
  canRoutePacketChannel(routerChannelId) {
42
42
  return this.targets.canRoutePacketChannel(routerChannelId);
43
43
  }
44
- routeSendToSpot(spotRouteTarget, packetName, message, signal, metadata, timeoutMs) {
44
+ routeSendToSpot(spotRouteTarget, packetName, message, metadata) {
45
45
  // Call-scoped flow (spec 27 §4): the envelope flow pair lives only for
46
46
  // the duration of this outbound call, never in the caller's context.
47
- return (0, flow_context_1.runWithOutboundFlow)(this.options.flowCreationEnabled?.() ?? true, () => this.routeSendToSpotScoped(spotRouteTarget, packetName, message, signal, metadata, timeoutMs));
47
+ return (0, flow_context_1.runWithOutboundFlow)(this.options.flowCreationEnabled?.() ?? true, () => this.routeSendToSpotScoped(spotRouteTarget, packetName, message, metadata));
48
48
  }
49
- async routeSendToSpotScoped(spotRouteTarget, packetName, message, signal, metadata, timeoutMs) {
50
- (0, abort_1.throwIfAborted)(signal);
49
+ async routeSendToSpotScoped(spotRouteTarget, packetName, message, metadata) {
51
50
  const localSpotRouteNode = this.targets.localRouteNode(spotRouteTarget);
52
51
  if (localSpotRouteNode !== undefined) {
53
- await this.localTransport.send(spotRouteTarget.routerChannelId, spotRouteTarget.spotId, packetName, message, signal, metadata, timeoutMs);
52
+ await this.localTransport.send(spotRouteTarget.routerChannelId, spotRouteTarget.spotId, packetName, message, metadata);
54
53
  return;
55
54
  }
56
55
  const parts = (0, channel_envelope_1.encodeChannelEnvelopeParts)(3 /* ZLinkChannelMessageKind.Command */, spotRouteTarget.routerChannelId, packetName, message, undefined, undefined, (0, channel_framework_packets_1.codecsForFrameworkPacket)(packetName, this.options.codecs), undefined, this.options.flowCreationEnabled?.() ?? true, metadata);
57
56
  if (this.targets.hasNamedSpotNode(spotRouteTarget.routerChannelId) &&
58
- (await this.spotNodeTransport.send(spotRouteTarget, parts, signal))) {
57
+ (await this.spotNodeTransport.send(spotRouteTarget, parts))) {
59
58
  return;
60
59
  }
61
60
  if (this.bridgeTransport.has(spotRouteTarget.routerChannelId)) {
62
- await this.bridgeTransport.send(spotRouteTarget, parts, signal);
61
+ await this.bridgeTransport.send(spotRouteTarget, parts);
63
62
  return;
64
63
  }
65
64
  if (this.targets.hasBoundRouteRouter(spotRouteTarget.routerChannelId)) {
66
- await this.routerSocketTransport.send(spotRouteTarget, parts, ZLINK_SEND_DONT_WAIT, signal);
65
+ await this.routerSocketTransport.send(spotRouteTarget, parts, ZLINK_SEND_DONT_WAIT);
67
66
  return;
68
67
  }
69
- if (await this.spotNodeTransport.send(spotRouteTarget, parts, signal)) {
68
+ if (await this.spotNodeTransport.send(spotRouteTarget, parts)) {
70
69
  return;
71
70
  }
72
- await this.routerSocketTransport.send(spotRouteTarget, parts, ZLINK_SEND_DONT_WAIT, signal);
71
+ await this.routerSocketTransport.send(spotRouteTarget, parts, ZLINK_SEND_DONT_WAIT);
73
72
  }
74
73
  routeRequestToSpot(spotRouteTarget, packetName, request, timeoutMs, signal, metadata) {
75
74
  return (0, flow_context_1.runWithOutboundFlow)(this.options.flowCreationEnabled?.() ?? true, () => this.routeRequestToSpotScoped(spotRouteTarget, packetName, request, timeoutMs, signal, metadata));
@@ -102,8 +101,8 @@ class ZLinkSpotRouteDispatchStrategy {
102
101
  routeRequestFromSpotToSpot(sourceSpot, spotRouteTarget, packetName, request, timeoutMs, signal) {
103
102
  return this.sourceSpotRouter.request(sourceSpot, spotRouteTarget, packetName, request, timeoutMs, signal);
104
103
  }
105
- async routeSendFromSpotToSpot(sourceSpot, spotRouteTarget, packetName, message, signal, metadata, timeoutMs) {
106
- await this.sourceSpotRouter.send(sourceSpot, spotRouteTarget, packetName, message, signal, metadata, timeoutMs);
104
+ async routeSendFromSpotToSpot(sourceSpot, spotRouteTarget, packetName, message, metadata) {
105
+ await this.sourceSpotRouter.send(sourceSpot, spotRouteTarget, packetName, message, metadata);
107
106
  }
108
107
  routeRequestRawFromSpotToSpot(sourceSpot, spotRouteTarget, request, timeoutMs, signal) {
109
108
  return this.sourceSpotRouter.requestRaw(sourceSpot, spotRouteTarget, request, timeoutMs, signal);
@@ -0,0 +1,2 @@
1
+ /** Formats absent diagnostic text consistently across the Node runtime. */
2
+ export declare function diagnosticTextOrAbsent(value: string | null | undefined): string;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.diagnosticTextOrAbsent = diagnosticTextOrAbsent;
4
+ /** Formats absent diagnostic text consistently across the Node runtime. */
5
+ function diagnosticTextOrAbsent(value) {
6
+ return value ?? '<none>';
7
+ }