@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,16 +1,40 @@
1
- import type { ZLinkClientServerServerDescriptor } from '../../contracts/Locations';
2
- import { ZLinkFrameworkRuntimeState } from '../../contracts/Locations';
1
+ import { UINT32_MAX } from '@zlink-systems/stream-wire';
2
+ import { normalizeEndpoint } from '../../contracts/Configuration/EndpointNotation';
3
+ import { isValidPublicWeight } from '../../contracts/Configuration/RegistrationBuilderPolicy';
4
+ import {
5
+ type ZLinkClientServerServerDescriptor,
6
+ ZLinkFrameworkRuntimeState
7
+ } from '../../contracts/Locations';
8
+
3
9
  import {
4
10
  decodeCanonicalServiceWireText,
5
11
  decodeServiceWireRoutingId,
6
12
  encodeCanonicalServiceWireText,
7
13
  encodeServiceWireRoutingId
8
14
  } from '../foundation/service-wire-binary-primitives';
9
- import { normalizeEndpoint } from '../../contracts/Configuration/EndpointNotation';
15
+ import {
16
+ SERVICE_WIRE_MAGIC,
17
+ SERVICE_WIRE_MAJOR
18
+ } from '../foundation/service-wire-constants.generated';
19
+ export const DEFAULT_CLIENT_SERVER_MESSAGE_LIMIT = 0x7fff_ffff;
20
+ export function normalizeClientServerMessageLimit(value: number): number {
21
+ return Number.isSafeInteger(value) && value > 0
22
+ ? Math.min(value, UINT32_MAX)
23
+ : DEFAULT_CLIENT_SERVER_MESSAGE_LIMIT;
24
+ }
25
+
26
+ const CLIENT_SERVER_PREFIX_BYTES = 5;
27
+ const CLIENT_SERVER_ROLE_BODY_MAX_BYTES = 0xffff;
28
+ const CLIENT_SERVER_TEXT_MAX_BYTES = 4096;
29
+
30
+ export enum ClientServerRejectReason {
31
+ ProtocolVersionUnsupported = 1,
32
+ AdmissionMismatch = 3
33
+ }
10
34
 
11
- const MAGIC_0 = 0x5a;
12
- const MAGIC_1 = 0x4d;
13
- const WIRE_MAJOR = 1;
35
+ const MAGIC_0 = SERVICE_WIRE_MAGIC[0];
36
+ const MAGIC_1 = SERVICE_WIRE_MAGIC[1];
37
+ const WIRE_MAJOR = SERVICE_WIRE_MAJOR;
14
38
  const TOPOLOGY_CLIENT_SERVER = 2;
15
39
  const ROLE_CLIENT = 1;
16
40
  const ROLE_SERVER = 2;
@@ -22,7 +46,7 @@ const COMMAND_UPDATE = 4;
22
46
  const COMMAND_LIVENESS_PROBE = 5;
23
47
  const COMMAND_LIVENESS_ACK = 6;
24
48
  const MAX_DESCRIPTOR_BYTES = 1024 * 1024;
25
- const MAX_U32 = 0xffff_ffff;
49
+ const MAX_U32 = UINT32_MAX;
26
50
  const MAX_GENERATION = 0x7fff_ffff_ffff_ffffn;
27
51
 
28
52
  export interface ZLinkClientServerHello {
@@ -99,7 +123,10 @@ export function encodeClientServerLivenessAck(probeId: bigint): Buffer {
99
123
 
100
124
  export function isClientServerControlFrame(frame: Uint8Array): boolean {
101
125
  return (
102
- frame.byteLength >= 5 && frame[0] === MAGIC_0 && frame[1] === MAGIC_1 && frame[2] === WIRE_MAJOR
126
+ frame.byteLength >= CLIENT_SERVER_PREFIX_BYTES &&
127
+ frame[0] === MAGIC_0 &&
128
+ frame[1] === MAGIC_1 &&
129
+ frame[2] === WIRE_MAJOR
103
130
  );
104
131
  }
105
132
 
@@ -177,7 +204,8 @@ function encodeServerAdmission(
177
204
  }
178
205
 
179
206
  function encodeAdmission(command: number, role: number, roleBody: Buffer): Buffer {
180
- if (roleBody.byteLength > 0xffff) fail('ClientServer role body is oversized.');
207
+ if (roleBody.byteLength > CLIENT_SERVER_ROLE_BODY_MAX_BYTES)
208
+ fail('ClientServer role body is oversized.');
181
209
  const admission = concat(Buffer.of(role), encodeU16(roleBody.byteLength), roleBody);
182
210
  const result = concat(
183
211
  prefix(command),
@@ -210,7 +238,7 @@ function decodeServerAdmission(reader: Reader): ZLinkClientServerAdmission {
210
238
  const lifecycleGeneration = reader.nonZeroU64('lifecycleGeneration');
211
239
  const descriptorRevision = reader.nonZeroU64('descriptorRevision');
212
240
  const weight = reader.u32('weight');
213
- if (weight > 10_000) fail('ClientServer weight is invalid.');
241
+ if (!isValidPublicWeight(weight)) fail('ClientServer weight is invalid.');
214
242
  return {
215
243
  channelName,
216
244
  serverRid,
@@ -261,7 +289,7 @@ function encodeText8(value: string, field: string): Buffer {
261
289
  }
262
290
 
263
291
  function encodeText16(value: string, field: string): Buffer {
264
- const bytes = encodeCanonicalServiceWireText(value, field, 4096, fail);
292
+ const bytes = encodeCanonicalServiceWireText(value, field, CLIENT_SERVER_TEXT_MAX_BYTES, fail);
265
293
  return concat(encodeU16(bytes.byteLength), bytes);
266
294
  }
267
295
 
@@ -373,7 +401,7 @@ class Reader {
373
401
 
374
402
  text16(field: string): string {
375
403
  const length = this.u16(`${field}.length`);
376
- if (length < 1 || length > 4096) fail(`${field} length is invalid.`);
404
+ if (length < 1 || length > CLIENT_SERVER_TEXT_MAX_BYTES) fail(`${field} length is invalid.`);
377
405
  return decodeText(this.bytes(length, field), field);
378
406
  }
379
407
 
@@ -1,19 +1,21 @@
1
1
  import {
2
- ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome,
3
2
  ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
4
3
  ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
5
4
  ZLinkDispatchErrorSurface,
6
5
  ZLinkDispatchMessageKind,
6
+ ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome,
7
7
  type ZLinkDispatchFailure
8
8
  } from '../../contracts/Dispatch/ZLinkDispatchOptions';
9
- import type { ZLinkRuntimeMetrics } from '../diagnostics';
10
9
  import {
11
- ZLinkMessageFlowTracer,
10
+ type ZLinkRuntimeMetrics,
12
11
  DEFAULT_ZLINK_DIAGNOSTICS,
12
+ ZLinkMessageFlowTracer,
13
13
  type ZLinkDiagnosticsContext
14
14
  } from '../diagnostics';
15
- import type { ZLinkDispatchErrorSink } from '../diagnostics/dispatch-error-port';
15
+
16
16
  import { dispatchErrorDetails } from '../diagnostics/dispatch-error-details';
17
+ import type { ZLinkDispatchErrorSink } from '../diagnostics/dispatch-error-port';
18
+ import { METRIC_NAMES } from '../diagnostics/runtime-metrics';
17
19
 
18
20
  export type { ZLinkDispatchErrorSink } from '../diagnostics/dispatch-error-port';
19
21
 
@@ -49,7 +51,7 @@ export class ZLinkDispatchErrorReporter {
49
51
  const normalized = normalizeDispatchFailure(event);
50
52
  const dropReason = channelDropReason(normalized);
51
53
  if (dropReason !== undefined) {
52
- this.metrics?.count('zlink.mesh_node.messages.dropped', 1, {
54
+ this.metrics?.count(METRIC_NAMES.MeshNodeMessagesDropped, 1, {
53
55
  surface: normalized.surface,
54
56
  message_kind: normalized.messageKind,
55
57
  reason: dropReason
@@ -6,23 +6,28 @@ import {
6
6
  type ZLinkFanoutPublisherDescriptor,
7
7
  type ZLinkLocationOwnerToken
8
8
  } from '../../contracts/Locations';
9
- import type { ZLinkFanoutLocationStore } from '../locations/internal-store-contracts';
10
9
  import {
11
10
  zlinkRuntimeDefaultLocationOptions,
12
11
  type ZLinkLocationOptionOverrides
13
12
  } from '../../contracts/Locations/Options';
14
- import type { ZLinkFrameworkRegistration } from '../configuration';
15
- import { ZLinkConfigurationException } from '../configuration';
16
- import type { ZLinkLocationRuntime, ZLinkLocationRuntimeStores } from '../locations';
13
+ import { ZLINK_PROVIDER_MAX_PAGE_SIZE } from '../../contracts/Locations/Stores';
17
14
  import type { ZLinkBackendSubscriberSocket } from '../backend/contracts';
18
- import { ZLinkChannelSocketRegistry } from './channel-socket-registry';
15
+ import { type ZLinkFrameworkRegistration, ZLinkConfigurationException } from '../configuration';
16
+
19
17
  import { ZLinkStateLane } from '../execution/state-lane';
18
+ import { discoveryAvailabilityForRuntimeState } from '../foundation/runtime-state-projections';
19
+ import { closeResources, finishResourceCleanup } from '../foundation/event-loop-resources';
20
+ import type { ZLinkLocationRuntime, ZLinkLocationRuntimeStores } from '../locations';
21
+ import type { ZLinkFanoutLocationStore } from '../locations/internal-store-contracts';
22
+ import { ZLinkChannelSocketRegistry } from './channel-socket-registry';
20
23
 
21
- interface ActiveFanoutTarget {
24
+ interface FanoutTarget {
22
25
  descriptor: ZLinkFanoutPublisherDescriptor;
26
+ connection?: ActiveFanoutConnection;
27
+ }
28
+
29
+ interface ActiveFanoutConnection {
23
30
  readonly connectionId: string;
24
- readonly subscriber: ZLinkBackendSubscriberSocket;
25
- reconnectEligible: boolean;
26
31
  stopReceiver: () => Promise<void>;
27
32
  state: 'connecting' | 'ready';
28
33
  }
@@ -39,7 +44,7 @@ export class ZLinkFanoutLocationRuntime {
39
44
  readonly lifecycleGeneration: bigint;
40
45
  }
41
46
  >();
42
- private readonly connections = new Map<string, ActiveFanoutTarget>();
47
+ private readonly targets = new Map<string, FanoutTarget>();
43
48
  private controller?: AbortController;
44
49
  private timer?: NodeJS.Timeout;
45
50
 
@@ -95,18 +100,49 @@ export class ZLinkFanoutLocationRuntime {
95
100
  return current;
96
101
  });
97
102
  if (timer !== undefined) clearTimeout(timer);
98
- const connectionIds = await this.lane.run(() => [...this.connections.keys()]);
99
- await Promise.allSettled(connectionIds.map((id) => this.closeConnection(id)));
100
- await this.removeLocalPublishers(signal);
103
+ const targets = await this.lane.run(() => [...this.targets]);
104
+ const targetResults = await Promise.allSettled(
105
+ targets.map(([id, target]) => this.removeTarget(id, target))
106
+ );
107
+ const publisherResults = await Promise.allSettled([this.removeLocalPublishers(signal)]);
108
+ finishResourceCleanup(
109
+ [...targetResults, ...publisherResults].flatMap((result) =>
110
+ result.status === 'rejected' ? [result.reason] : []
111
+ )
112
+ );
101
113
  }
102
114
 
103
115
  activeTargets(channelName: string): readonly ZLinkFanoutPublisherDescriptor[] {
104
- return [...this.connections.values()]
105
- .filter((target) => target.state === 'ready')
116
+ return [...this.targets.values()]
117
+ .filter((target) => target.connection?.state === 'ready')
106
118
  .map((target) => target.descriptor)
107
119
  .filter((descriptor) => descriptor.channelName === channelName);
108
120
  }
109
121
 
122
+ topologyTargets(channelName: string) {
123
+ if (!this.isAutomaticSubscriber(channelName)) return undefined;
124
+ return [...this.targets.values()]
125
+ .filter((target) => target.descriptor.channelName === channelName)
126
+ .map((target) => ({
127
+ channelName,
128
+ publisherRoutingId: String(target.descriptor.publisherRid),
129
+ lifecycleGeneration: target.descriptor.lifecycleGeneration,
130
+ descriptorRevision: target.descriptor.descriptorRevision,
131
+ advertisedEndpoint: target.descriptor.endpoint,
132
+ state:
133
+ target.descriptor.state === ZLinkFrameworkRuntimeState.Serving
134
+ ? target.connection?.state === 'ready'
135
+ ? ('serving' as const)
136
+ : ('preparing' as const)
137
+ : discoveryAvailabilityForRuntimeState(target.descriptor.state)
138
+ }));
139
+ }
140
+
141
+ private isAutomaticSubscriber(channelName: string): boolean {
142
+ const subscriber = this.registration.channels.get(channelName)?.subscriber;
143
+ return subscriber !== undefined && (subscriber.manualConnections?.length ?? 0) === 0;
144
+ }
145
+
110
146
  async reclaimOwnerRows(signal?: AbortSignal): Promise<void> {
111
147
  const owner = this.requireOwnerToken();
112
148
  const descriptors = await this.lane.run(() => [...this.localDescriptors]);
@@ -215,74 +251,87 @@ export class ZLinkFanoutLocationRuntime {
215
251
  }
216
252
 
217
253
  private async reconcileSubscribers(signal?: AbortSignal): Promise<void> {
218
- for (const [channelName, channel] of this.registration.channels) {
219
- if (
220
- channel.subscriber === undefined ||
221
- (channel.subscriber.manualConnections?.length ?? 0) > 0
222
- ) {
223
- continue;
224
- }
254
+ for (const channelName of this.registration.channels.keys()) {
255
+ if (!this.isAutomaticSubscriber(channelName)) continue;
256
+ const previous = this.topologyTargets(channelName)!;
225
257
  const rows = await this.listLivePublishers(channelName, signal);
226
258
  const desired = new Map(rows.map((row) => [fanoutConnectionId(row), row]));
227
259
  for (const [connectionId, descriptor] of desired) {
228
- const current = await this.lane.run(() => this.connections.get(connectionId));
260
+ let current = await this.lane.run(() => this.targets.get(connectionId));
229
261
  if (current === undefined) {
230
- await this.openConnection(connectionId, descriptor);
231
- continue;
232
- }
233
- if (descriptor.descriptorRevision < current.descriptor.descriptorRevision) {
262
+ const created = { descriptor };
263
+ current = created;
264
+ await this.lane.run(() => this.targets.set(connectionId, created));
265
+ } else if (descriptor.descriptorRevision < current.descriptor.descriptorRevision) {
234
266
  continue;
235
- }
236
- if (descriptor.descriptorRevision === current.descriptor.descriptorRevision) {
267
+ } else if (descriptor.descriptorRevision === current.descriptor.descriptorRevision) {
237
268
  if (!sameFanoutDescriptor(descriptor, current.descriptor)) {
238
- await this.closeConnection(connectionId);
269
+ await this.removeTarget(connectionId, current);
270
+ continue;
239
271
  }
272
+ } else if (!sameFanoutImmutableIdentity(descriptor, current.descriptor)) {
273
+ await this.removeTarget(connectionId, current);
240
274
  continue;
275
+ } else {
276
+ const target = current;
277
+ await this.lane.run(() => {
278
+ if (this.targets.get(connectionId) === target) target.descriptor = descriptor;
279
+ });
280
+ if (current.connection?.state === 'ready') {
281
+ this.sockets.admitFanoutPublisher(current.descriptor, connectionId);
282
+ }
241
283
  }
242
- if (!sameFanoutImmutableIdentity(descriptor, current.descriptor)) {
243
- await this.closeConnection(connectionId);
244
- continue;
245
- }
246
- await this.lane.run(() => {
247
- if (this.connections.get(connectionId) === current) current.descriptor = descriptor;
248
- });
249
- if (current.state === 'ready') {
250
- this.sockets.admitFanoutPublisher(descriptor, connectionId);
251
- }
284
+ await this.reconcileConnection(connectionId, current);
252
285
  }
253
- const connections = await this.lane.run(() => [...this.connections]);
254
- for (const [connectionId, current] of connections) {
286
+ const targets = await this.lane.run(() => [...this.targets]);
287
+ for (const [connectionId, current] of targets) {
255
288
  if (current.descriptor.channelName === channelName && !desired.has(connectionId)) {
256
- await this.closeConnection(connectionId);
289
+ await this.removeTarget(connectionId, current);
257
290
  }
258
291
  }
292
+ const next = this.topologyTargets(channelName)!;
293
+ if (
294
+ previous.length !== next.length ||
295
+ previous.some(
296
+ (publisher, index) =>
297
+ publisher.publisherRoutingId !== next[index]!.publisherRoutingId ||
298
+ publisher.state !== next[index]!.state
299
+ )
300
+ ) {
301
+ this.sockets.notifyFanoutTopology(channelName);
302
+ }
259
303
  }
260
304
  }
261
305
 
262
- private async openConnection(
263
- connectionId: string,
264
- descriptor: ZLinkFanoutPublisherDescriptor
265
- ): Promise<void> {
266
- let target: ActiveFanoutTarget | undefined;
306
+ private async reconcileConnection(connectionId: string, target: FanoutTarget): Promise<void> {
307
+ if (target.descriptor.state !== ZLinkFrameworkRuntimeState.Serving) {
308
+ await this.closeConnection(target);
309
+ } else if (target.connection === undefined) {
310
+ await this.openConnection(connectionId, target);
311
+ }
312
+ }
313
+
314
+ private async openConnection(connectionId: string, target: FanoutTarget): Promise<void> {
315
+ const descriptor = target.descriptor;
316
+ let connection: ActiveFanoutConnection | undefined;
267
317
  const subscriber = this.sockets.openFanoutSubscriberConnection(
268
318
  descriptor.channelName,
269
319
  connectionId,
270
320
  descriptor.endpoint,
271
321
  {
272
322
  onReady: () => {
273
- const current = this.connections.get(connectionId);
274
- if (target !== undefined && current === target) {
275
- current.state = 'ready';
276
- this.sockets.admitFanoutPublisher(descriptor, connectionId);
323
+ if (connection !== undefined && target.connection === connection) {
324
+ connection.state = 'ready';
325
+ this.sockets.admitFanoutPublisher(target.descriptor, connectionId);
277
326
  }
278
327
  },
279
328
  onTerminated: () => {
280
- const current = this.connections.get(connectionId);
281
- if (target !== undefined && current === target && current.reconnectEligible) {
282
- this.sockets.removeFanoutPublisher(descriptor, connectionId);
283
- current.state = 'connecting';
329
+ if (connection !== undefined && target.connection === connection) {
330
+ this.sockets.removeFanoutPublisher(target.descriptor, connectionId);
331
+ connection.state = 'connecting';
332
+ const terminated = connection;
284
333
  setImmediate(() => {
285
- void this.replaceConnection(current).catch((error) =>
334
+ void this.replaceConnection(target, terminated).catch((error) =>
286
335
  this.locationRuntime.reportDiscoveryFailure(error)
287
336
  );
288
337
  });
@@ -290,50 +339,76 @@ export class ZLinkFanoutLocationRuntime {
290
339
  }
291
340
  }
292
341
  );
293
- target = {
294
- descriptor,
342
+ connection = {
295
343
  connectionId,
296
- subscriber,
297
- reconnectEligible: true,
298
344
  stopReceiver: async () => {},
299
345
  state: 'connecting'
300
346
  };
301
- await this.lane.run(() => this.connections.set(connectionId, target));
302
- target.stopReceiver = this.onSubscriberOpened(descriptor.channelName, connectionId, subscriber);
347
+ const opened = connection;
348
+ await this.lane.run(() => (target.connection = opened));
349
+ connection.stopReceiver = this.onSubscriberOpened(
350
+ descriptor.channelName,
351
+ connectionId,
352
+ subscriber
353
+ );
303
354
  }
304
355
 
305
- private async closeConnection(connectionId: string): Promise<void> {
306
- const current = await this.lane.run(() => {
307
- const target = this.connections.get(connectionId);
308
- if (target !== undefined) {
309
- target.reconnectEligible = false;
310
- this.connections.delete(connectionId);
311
- }
312
- return target;
356
+ private async removeTarget(connectionId: string, target: FanoutTarget): Promise<void> {
357
+ const detached = await this.lane.run(() => {
358
+ if (this.targets.get(connectionId) !== target) return undefined;
359
+ this.targets.delete(connectionId);
360
+ return this.detachConnection(target);
313
361
  });
362
+ await this.closeDetachedConnection(target.descriptor, detached);
363
+ }
364
+
365
+ private async closeConnection(target: FanoutTarget): Promise<void> {
366
+ const detached = await this.lane.run(() => this.detachConnection(target));
367
+ await this.closeDetachedConnection(target.descriptor, detached);
368
+ }
369
+
370
+ private detachConnection(target: FanoutTarget): ActiveFanoutConnection | undefined {
371
+ const connection = target.connection;
372
+ target.connection = undefined;
373
+ return connection;
374
+ }
375
+
376
+ private async closeDetachedConnection(
377
+ descriptor: ZLinkFanoutPublisherDescriptor,
378
+ current: ActiveFanoutConnection | undefined
379
+ ): Promise<void> {
314
380
  if (current === undefined) return;
315
- this.sockets.removeFanoutPublisher(current.descriptor, connectionId);
316
- await current.stopReceiver();
317
- await this.sockets.closeFanoutSubscriberConnection(connectionId);
381
+ this.sockets.removeFanoutPublisher(descriptor, current.connectionId);
382
+ await closeResources([
383
+ { close: () => current.stopReceiver() },
384
+ { close: () => this.sockets.closeFanoutSubscriberConnection(current.connectionId) }
385
+ ]);
318
386
  }
319
387
 
320
- private async replaceConnection(expected: ActiveFanoutTarget): Promise<void> {
388
+ private async replaceConnection(
389
+ target: FanoutTarget,
390
+ expected: ActiveFanoutConnection
391
+ ): Promise<void> {
321
392
  const prepared = await this.lane.run(() => {
322
393
  const controller = this.controller;
323
394
  if (
324
- this.connections.get(expected.connectionId) !== expected ||
325
- !expected.reconnectEligible ||
395
+ this.targets.get(expected.connectionId) !== target ||
396
+ target.connection !== expected ||
326
397
  controller === undefined
327
398
  )
328
399
  return undefined;
329
- return { controller, descriptor: expected.descriptor };
400
+ return controller;
330
401
  });
331
402
  if (prepared === undefined) {
332
403
  return;
333
404
  }
334
- await this.closeConnection(expected.connectionId);
335
- if (await this.lane.run(() => this.controller === prepared.controller)) {
336
- await this.openConnection(expected.connectionId, prepared.descriptor);
405
+ await this.closeConnection(target);
406
+ if (
407
+ await this.lane.run(
408
+ () => this.controller === prepared && this.targets.get(expected.connectionId) === target
409
+ )
410
+ ) {
411
+ await this.reconcileConnection(expected.connectionId, target);
337
412
  }
338
413
  }
339
414
 
@@ -346,7 +421,7 @@ export class ZLinkFanoutLocationRuntime {
346
421
  do {
347
422
  const page = await this.store.listFanoutPublishers(
348
423
  channelName,
349
- { pageSize: 1000, continuationToken },
424
+ { pageSize: ZLINK_PROVIDER_MAX_PAGE_SIZE, continuationToken },
350
425
  signal
351
426
  );
352
427
  rows.push(...page.items);
@@ -354,7 +429,6 @@ export class ZLinkFanoutLocationRuntime {
354
429
  } while (continuationToken !== undefined);
355
430
  const live: ZLinkFanoutPublisherDescriptor[] = [];
356
431
  for (const descriptor of rows) {
357
- if (descriptor.state !== ZLinkFrameworkRuntimeState.Serving) continue;
358
432
  const lease = await this.storeOwnerLease(descriptor.ownerId, signal);
359
433
  if (
360
434
  lease.kind === 'found' &&
@@ -375,17 +449,24 @@ export class ZLinkFanoutLocationRuntime {
375
449
  const owner = this.locationRuntime.currentOwnerToken;
376
450
  if (owner === undefined) return;
377
451
  const descriptors = await this.lane.run(() => [...this.localDescriptors.values()]);
378
- for (const descriptor of descriptors) {
379
- await this.store.removeFanoutPublisher(
380
- {
381
- channelName: descriptor.channelName,
382
- publisherRid: descriptor.publisherRid
383
- },
384
- owner,
385
- signal
452
+ try {
453
+ await closeResources(
454
+ descriptors.map((descriptor) => ({
455
+ close: async () => {
456
+ await this.store.removeFanoutPublisher(
457
+ {
458
+ channelName: descriptor.channelName,
459
+ publisherRid: descriptor.publisherRid
460
+ },
461
+ owner,
462
+ signal
463
+ );
464
+ }
465
+ }))
386
466
  );
467
+ } finally {
468
+ await this.lane.run(() => this.localDescriptors.clear());
387
469
  }
388
- await this.lane.run(() => this.localDescriptors.clear());
389
470
  }
390
471
 
391
472
  private requireOwnerToken(): ZLinkLocationOwnerToken {
@@ -13,9 +13,7 @@ export class ZLinkLocalSpotRouteTransport {
13
13
  spotId: RoutingId,
14
14
  packetName: string | undefined,
15
15
  message: unknown,
16
- signal?: AbortSignal,
17
- metadata?: ReadonlyMap<string, string>,
18
- timeoutMs?: number
16
+ metadata?: ReadonlyMap<string, string>
19
17
  ): Promise<void> {
20
18
  if (this.dispatcher === undefined) {
21
19
  throw new ZLinkConfigurationException(
@@ -24,8 +22,6 @@ export class ZLinkLocalSpotRouteTransport {
24
22
  }
25
23
  await this.dispatcher.send(spotId, packetName, message, {
26
24
  channelName: routerChannelId,
27
- admissionTimeoutMs: timeoutMs ?? this.defaultRequestTimeoutMs,
28
- signal,
29
25
  metadata
30
26
  });
31
27
  }
@@ -15,15 +15,11 @@ export class ZLinkRouterSocketSpotRouteTransport {
15
15
  async send(
16
16
  target: ZLinkSpotRouteTarget,
17
17
  parts: readonly Message[],
18
- flags: ZLinkBackendSendFlags,
19
- signal?: AbortSignal
18
+ flags: ZLinkBackendSendFlags
20
19
  ): Promise<void> {
21
20
  const router = this.sockets.routeRouter(target.routerChannelId);
22
21
  try {
23
- await awaitWithAbort(
24
- router.sendToSpot(target.targetNodeRid, target.spotId, parts, flags),
25
- signal
26
- );
22
+ await router.sendToSpot(target.targetNodeRid, target.spotId, parts, flags);
27
23
  } finally {
28
24
  closeMessages(parts);
29
25
  }
@@ -47,11 +47,8 @@ export class ZLinkSourceSpotRouter {
47
47
  target: ZLinkSpotRouteTarget,
48
48
  packetName: string | undefined,
49
49
  message: unknown,
50
- signal?: AbortSignal,
51
- metadata?: ReadonlyMap<string, string>,
52
- timeoutMs?: number
50
+ metadata?: ReadonlyMap<string, string>
53
51
  ): Promise<void> {
54
- throwIfAborted(signal);
55
52
  const parts = [
56
53
  encodeSpotDirectEnvelope(
57
54
  ZLinkChannelMessageKind.Command,
@@ -62,11 +59,7 @@ export class ZLinkSourceSpotRouter {
62
59
  )
63
60
  ] as readonly Message[];
64
61
  try {
65
- void timeoutMs;
66
- await awaitWithAbort(
67
- sourceSpot.sendToSpot(target.targetNodeRid, target.spotId, parts),
68
- signal
69
- );
62
+ await sourceSpot.sendToSpot(target.targetNodeRid, target.spotId, parts);
70
63
  } finally {
71
64
  closeMessages(parts);
72
65
  }
@@ -3,7 +3,7 @@ import type { ZLinkBackendMessageLike as MessageLike } from '../backend/runtime-
3
3
  import { ZLinkConfigurationException } from '../configuration';
4
4
  import { ZLinkChannelMessageKind } from './channel-envelope';
5
5
 
6
- const SPOT_DIRECT_ENVELOPE = 'zlink.framework.spot-direct.v1';
6
+ export const SPOT_DIRECT_ENVELOPE = 'zlink.framework.spot-direct.v1';
7
7
 
8
8
  export function encodeSpotDirectEnvelope(
9
9
  kind: ZLinkChannelMessageKind.Request | ZLinkChannelMessageKind.Command,
@@ -1,3 +1,4 @@
1
+ import { DEFAULT_REQUEST_TIMEOUT_MS } from '../../contracts/Configuration/Registration';
1
2
  import type { Message } from '../../contracts/Common/Message';
2
3
  import type { ZLinkFrameworkRegistration } from '../configuration';
3
4
  import { awaitWithAbort, throwIfAborted } from '../abort';
@@ -15,18 +16,13 @@ export class ZLinkSpotNodeRouteTransport {
15
16
  private readonly targets: ZLinkSpotRouteTargetResolver
16
17
  ) {}
17
18
 
18
- async send(
19
- target: ZLinkSpotRouteTarget,
20
- parts: readonly Message[],
21
- signal?: AbortSignal
22
- ): Promise<boolean> {
19
+ async send(target: ZLinkSpotRouteTarget, parts: readonly Message[]): Promise<boolean> {
23
20
  const router = this.targets.spotNodeRouter(target.routerChannelId);
24
21
  if (router === undefined) {
25
22
  return false;
26
23
  }
27
24
  try {
28
- throwIfAborted(signal);
29
- await awaitWithAbort(router.sendToSpot(target.targetNodeRid, target.spotId, parts), signal);
25
+ await router.sendToSpot(target.targetNodeRid, target.spotId, parts);
30
26
  return true;
31
27
  } finally {
32
28
  closeMessages(parts);
@@ -44,7 +40,8 @@ export class ZLinkSpotNodeRouteTransport {
44
40
  if (router === undefined) {
45
41
  return undefined;
46
42
  }
47
- const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? 30_000;
43
+ const effectiveTimeoutMs =
44
+ timeoutMs ?? this.registration.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
48
45
  throwIfAborted(signal);
49
46
  const operation = router.requestToSpot(
50
47
  target.targetNodeRid,
@@ -74,7 +71,8 @@ export class ZLinkSpotNodeRouteTransport {
74
71
  if (router === undefined) {
75
72
  return undefined;
76
73
  }
77
- const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? 30_000;
74
+ const effectiveTimeoutMs =
75
+ timeoutMs ?? this.registration.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
78
76
  throwIfAborted(signal);
79
77
  const operation = router.requestToSpot(
80
78
  target.targetNodeRid,
@@ -20,20 +20,13 @@ export class ZLinkSpotRouteBridgeTransport {
20
20
  return this.bridges.has(routerChannelId);
21
21
  }
22
22
 
23
- async send(
24
- target: ZLinkSpotRouteTarget,
25
- parts: readonly Message[],
26
- signal?: AbortSignal
27
- ): Promise<void> {
23
+ async send(target: ZLinkSpotRouteTarget, parts: readonly Message[]): Promise<void> {
28
24
  const bridge = this.requireBridge(target.routerChannelId);
29
25
  try {
30
- await awaitWithAbort(
31
- appendParts(
32
- bridge.send(target.routerChannelId, target.targetNodeRid, target.spotId),
33
- parts
34
- ).submit(),
35
- signal
36
- );
26
+ await appendParts(
27
+ bridge.send(target.routerChannelId, target.targetNodeRid, target.spotId),
28
+ parts
29
+ ).submit();
37
30
  } finally {
38
31
  closeMessages(parts);
39
32
  }