@zlink-systems/framework 0.25.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
  3. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  4. package/dist/contracts/Common/CoreTypes.js +7 -0
  5. package/dist/contracts/Common/index.d.ts +1 -1
  6. package/dist/contracts/Common/index.js +0 -1
  7. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  8. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  9. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  10. package/dist/contracts/Configuration/Registration.js +58 -36
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  14. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  15. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  16. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  17. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  18. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  19. package/dist/contracts/Handlers/JsonContract.js +10 -4
  20. package/dist/contracts/Locations/Authority.d.ts +1 -1
  21. package/dist/contracts/Locations/Authority.js +3 -2
  22. package/dist/contracts/Locations/Options.js +1 -1
  23. package/dist/contracts/Locations/Stores.d.ts +12 -0
  24. package/dist/contracts/Locations/Stores.js +9 -0
  25. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
  26. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  27. package/dist/internal.d.ts +5 -0
  28. package/dist/internal.js +16 -1
  29. package/dist/nest-integration.d.ts +4 -2
  30. package/dist/nest-integration.js +14 -4
  31. package/dist/runtime/abort.d.ts +1 -0
  32. package/dist/runtime/abort.js +8 -5
  33. package/dist/runtime/activation-admission.d.ts +28 -0
  34. package/dist/runtime/activation-admission.js +57 -0
  35. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  36. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  37. package/dist/runtime/actors/actor-client.d.ts +2 -2
  38. package/dist/runtime/actors/actor-client.js +42 -143
  39. package/dist/runtime/actors/actor-context.d.ts +3 -5
  40. package/dist/runtime/actors/actor-context.js +19 -17
  41. package/dist/runtime/actors/actor-handoff.d.ts +13 -7
  42. package/dist/runtime/actors/actor-handoff.js +36 -25
  43. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  44. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  45. package/dist/runtime/actors/actor-local-native-join.js +85 -123
  46. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  47. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  48. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  49. package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
  50. package/dist/runtime/actors/actor-remote-joiner.js +11 -17
  51. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  52. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  53. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  54. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  55. package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
  56. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  57. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  58. package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
  59. package/dist/runtime/actors/bound-session-wire.js +2 -7
  60. package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
  61. package/dist/runtime/actors/deferred-join-completion.js +21 -0
  62. package/dist/runtime/actors/index.d.ts +10 -8
  63. package/dist/runtime/actors/index.js +101 -73
  64. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  65. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  66. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  67. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  68. package/dist/runtime/admission.d.ts +7 -1
  69. package/dist/runtime/admission.js +11 -1
  70. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  71. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  72. package/dist/runtime/backend/contracts/index.d.ts +8 -33
  73. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
  74. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  75. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  76. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
  77. package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
  78. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
  79. package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
  80. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  81. package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
  82. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  83. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
  84. package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
  85. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
  86. package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
  87. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  88. package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
  89. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  90. package/dist/runtime/backend/runtime-values.js +2 -0
  91. package/dist/runtime/channels/channel-clients.d.ts +20 -9
  92. package/dist/runtime/channels/channel-clients.js +68 -60
  93. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  94. package/dist/runtime/channels/channel-envelope.js +47 -29
  95. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  96. package/dist/runtime/channels/channel-outbound-operations.js +9 -18
  97. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  98. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  99. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  100. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  101. package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
  102. package/dist/runtime/channels/channel-runtime-manager.js +4 -12
  103. package/dist/runtime/channels/channel-socket-options.js +3 -2
  104. package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
  105. package/dist/runtime/channels/channel-socket-registry.js +296 -235
  106. package/dist/runtime/channels/channel-transports.d.ts +11 -20
  107. package/dist/runtime/channels/channel-transports.js +68 -47
  108. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  109. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  110. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  111. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  112. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  113. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  114. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  115. package/dist/runtime/channels/fanout-location-runtime.js +133 -81
  116. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  117. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  118. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  119. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  120. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  121. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  122. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  123. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  124. package/dist/runtime/diagnostics/flow-context.js +16 -2
  125. package/dist/runtime/diagnostics/index.d.ts +4 -2
  126. package/dist/runtime/diagnostics/index.js +14 -4
  127. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  128. package/dist/runtime/diagnostics/message-flow.js +10 -19
  129. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  130. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  131. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  132. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  133. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  134. package/dist/runtime/disposal.d.ts +5 -0
  135. package/dist/runtime/disposal.js +22 -0
  136. package/dist/runtime/execution/index.d.ts +22 -9
  137. package/dist/runtime/execution/index.js +107 -37
  138. package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
  139. package/dist/runtime/execution/serial-execution-queue.js +99 -26
  140. package/dist/runtime/execution/state-lane.d.ts +8 -1
  141. package/dist/runtime/execution/state-lane.js +118 -3
  142. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  143. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  144. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  145. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  146. package/dist/runtime/foundation/listener-records.d.ts +11 -0
  147. package/dist/runtime/foundation/listener-records.js +20 -0
  148. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  149. package/dist/runtime/foundation/operation-identity.js +9 -5
  150. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  151. package/dist/runtime/foundation/operation-registry.js +34 -44
  152. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
  153. package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
  154. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  155. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  156. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
  157. package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
  158. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  159. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  160. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  161. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  162. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  163. package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
  164. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  165. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  166. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  167. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
  168. package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
  169. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
  170. package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
  171. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  172. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  173. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  174. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
  175. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  176. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  177. package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
  178. package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
  179. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
  180. package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
  181. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
  182. package/dist/runtime/foundation/service-topology-registry.js +22 -61
  183. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  184. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  185. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  186. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  187. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  188. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  189. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  190. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  191. package/dist/runtime/framework-errors-internal.js +343 -122
  192. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  193. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  194. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  195. package/dist/runtime/host/actor-packet-relay.js +48 -91
  196. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  197. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  198. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  199. package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
  200. package/dist/runtime/host/actor-transfer-runtime.js +210 -256
  201. package/dist/runtime/host/application-job-queue.js +16 -33
  202. package/dist/runtime/host/bound-session-relay.js +1 -1
  203. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  204. package/dist/runtime/host/index.d.ts +19 -14
  205. package/dist/runtime/host/index.js +234 -175
  206. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  207. package/dist/runtime/host/instance-activation-authority.js +17 -45
  208. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  209. package/dist/runtime/host/location-runtime-owner.js +2 -2
  210. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  211. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  212. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  213. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  214. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  215. package/dist/runtime/host/remote-bound-session-relay.js +11 -23
  216. package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
  217. package/dist/runtime/host/route-mesh-runtime.js +178 -257
  218. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  219. package/dist/runtime/host/runtime-shutdown.js +18 -21
  220. package/dist/runtime/host/service-relocation-control.js +6 -1
  221. package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
  222. package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
  223. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  224. package/dist/runtime/host/spot-address-transport.js +34 -136
  225. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  226. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  227. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
  228. package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
  229. package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
  230. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
  231. package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
  232. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  233. package/dist/runtime/locations/authority-key-codec.js +4 -3
  234. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  235. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  236. package/dist/runtime/locations/creation-operation-id.js +6 -4
  237. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  238. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  239. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  240. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  241. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  242. package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
  243. package/dist/runtime/locations/key-codec.js +3 -2
  244. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  245. package/dist/runtime/locations/lease-tracker.js +7 -11
  246. package/dist/runtime/locations/lifecycle.d.ts +5 -10
  247. package/dist/runtime/locations/lifecycle.js +4 -33
  248. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  249. package/dist/runtime/locations/location-store-failure.js +7 -0
  250. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  251. package/dist/runtime/locations/location-store-pages.js +13 -0
  252. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  253. package/dist/runtime/locations/location-store-repository.js +303 -332
  254. package/dist/runtime/locations/relocation-blob.js +18 -5
  255. package/dist/runtime/locations/resolvers.d.ts +5 -5
  256. package/dist/runtime/locations/resolvers.js +44 -30
  257. package/dist/runtime/locations/runtime.d.ts +5 -4
  258. package/dist/runtime/locations/runtime.js +123 -92
  259. package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
  260. package/dist/runtime/locations/spot-location-claims.js +40 -23
  261. package/dist/runtime/messaging/payload-codec.js +26 -20
  262. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  263. package/dist/runtime/messaging/submission-result.js +48 -0
  264. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
  265. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
  266. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
  267. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
  268. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
  269. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
  270. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
  271. package/dist/runtime/spots/index.d.ts +29 -29
  272. package/dist/runtime/spots/index.js +441 -313
  273. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
  274. package/dist/runtime/spots/spot-activation-registry.js +27 -60
  275. package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
  276. package/dist/runtime/spots/spot-activation-state.js +4 -17
  277. package/dist/runtime/spots/spot-activation.d.ts +10 -9
  278. package/dist/runtime/spots/spot-activation.js +103 -81
  279. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  280. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  281. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  282. package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
  283. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
  284. package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
  285. package/dist/runtime/spots/spot-actor-membership.js +44 -53
  286. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  287. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  288. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  289. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  290. package/dist/runtime/spots/spot-context.d.ts +2 -2
  291. package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
  292. package/dist/runtime/spots/spot-entry-activation.js +9 -21
  293. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  294. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  295. package/dist/runtime/spots/spot-manager-public.js +6 -5
  296. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  297. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
  298. package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
  299. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  300. package/dist/runtime/spots/spot-outbound.js +10 -37
  301. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  302. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  303. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  304. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  305. package/dist/runtime/spots/spot-route-replies.js +3 -1
  306. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
  307. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
  308. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
  309. package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
  310. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  311. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  312. package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
  313. package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
  314. package/dist/runtime/spots/spot-serial-executor.js +9 -2
  315. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
  316. package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
  317. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  318. package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
  319. package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
  320. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
  321. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  322. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  323. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  324. package/dist/runtime/streams/bound-session-service.js +12 -19
  325. package/dist/runtime/streams/index.d.ts +15 -14
  326. package/dist/runtime/streams/index.js +38 -39
  327. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  328. package/dist/runtime/streams/managed-stream.js +17 -8
  329. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  330. package/dist/runtime/streams/protocol.d.ts +6 -33
  331. package/dist/runtime/streams/protocol.js +38 -110
  332. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  333. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  334. package/dist/runtime/streams/session-calls.d.ts +1 -1
  335. package/dist/runtime/streams/session-calls.js +5 -4
  336. package/dist/runtime/streams/session-context.d.ts +6 -6
  337. package/dist/runtime/streams/session-context.js +22 -4
  338. package/dist/runtime/streams/session-requests.js +2 -1
  339. package/dist/runtime/streams/session-serial-executor.js +2 -2
  340. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  341. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  342. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  343. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  344. package/dist/runtime/workers/index.d.ts +2 -2
  345. package/dist/runtime/workers/index.js +5 -4
  346. package/package.json +3 -3
  347. package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
  348. package/src/contracts/Common/CoreTypes.ts +7 -0
  349. package/src/contracts/Common/index.ts +1 -1
  350. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  351. package/src/contracts/Configuration/Registration.ts +92 -48
  352. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  353. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  354. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  355. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  356. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  357. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  358. package/src/contracts/Handlers/JsonContract.ts +14 -4
  359. package/src/contracts/Locations/Authority.ts +7 -3
  360. package/src/contracts/Locations/Options.ts +1 -1
  361. package/src/contracts/Locations/Stores.ts +14 -0
  362. package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
  363. package/src/contracts/Spots/Contracts.ts +1 -1
  364. package/src/internal.ts +15 -0
  365. package/src/nest-integration.ts +28 -10
  366. package/src/runtime/abort.ts +6 -5
  367. package/src/runtime/activation-admission.ts +72 -0
  368. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  369. package/src/runtime/actors/actor-client.ts +77 -204
  370. package/src/runtime/actors/actor-context.ts +45 -39
  371. package/src/runtime/actors/actor-handoff.ts +55 -45
  372. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  373. package/src/runtime/actors/actor-local-native-join.ts +174 -215
  374. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  375. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  376. package/src/runtime/actors/actor-remote-joiner.ts +15 -36
  377. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  378. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  379. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  380. package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
  381. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  382. package/src/runtime/actors/actor-source-transfer.ts +5 -18
  383. package/src/runtime/actors/bound-session-wire.ts +2 -8
  384. package/src/runtime/actors/deferred-join-completion.ts +44 -0
  385. package/src/runtime/actors/index.ts +122 -88
  386. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  387. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  388. package/src/runtime/admission.ts +13 -2
  389. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  390. package/src/runtime/backend/contracts/index.ts +15 -42
  391. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
  392. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  393. package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
  394. package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
  395. package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
  396. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  397. package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
  398. package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
  399. package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
  400. package/src/runtime/backend/raw-binding-port.ts +14 -1
  401. package/src/runtime/backend/runtime-values.ts +4 -1
  402. package/src/runtime/channels/channel-clients.ts +132 -96
  403. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  404. package/src/runtime/channels/channel-envelope.ts +58 -29
  405. package/src/runtime/channels/channel-outbound-operations.ts +10 -31
  406. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  407. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  408. package/src/runtime/channels/channel-runtime-manager.ts +8 -15
  409. package/src/runtime/channels/channel-socket-options.ts +8 -2
  410. package/src/runtime/channels/channel-socket-registry.ts +369 -262
  411. package/src/runtime/channels/channel-transports.ts +161 -115
  412. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  413. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  414. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  415. package/src/runtime/channels/fanout-location-runtime.ts +175 -106
  416. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  417. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  418. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  419. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  420. package/src/runtime/diagnostics/flow-context.ts +16 -2
  421. package/src/runtime/diagnostics/index.ts +27 -17
  422. package/src/runtime/diagnostics/message-flow.ts +15 -25
  423. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  424. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  425. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  426. package/src/runtime/disposal.ts +19 -0
  427. package/src/runtime/execution/index.ts +116 -38
  428. package/src/runtime/execution/serial-execution-queue.ts +179 -34
  429. package/src/runtime/execution/state-lane.ts +142 -4
  430. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  431. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  432. package/src/runtime/foundation/listener-records.ts +21 -0
  433. package/src/runtime/foundation/operation-identity.ts +11 -5
  434. package/src/runtime/foundation/operation-registry.ts +33 -50
  435. package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
  436. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  437. package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
  438. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  439. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  440. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  441. package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
  442. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  443. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  444. package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
  445. package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
  446. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  447. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  448. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
  449. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  450. package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
  451. package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
  452. package/src/runtime/foundation/service-topology-registry.ts +30 -79
  453. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  454. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  455. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  456. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  457. package/src/runtime/framework-errors-internal.ts +380 -134
  458. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  459. package/src/runtime/host/actor-packet-relay.ts +57 -147
  460. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  461. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  462. package/src/runtime/host/actor-transfer-runtime.ts +266 -418
  463. package/src/runtime/host/application-job-queue.ts +28 -34
  464. package/src/runtime/host/bound-session-relay.ts +1 -2
  465. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  466. package/src/runtime/host/index.ts +408 -312
  467. package/src/runtime/host/instance-activation-authority.ts +89 -109
  468. package/src/runtime/host/location-runtime-owner.ts +4 -2
  469. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  470. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  471. package/src/runtime/host/remote-bound-session-relay.ts +12 -44
  472. package/src/runtime/host/route-mesh-runtime.ts +236 -275
  473. package/src/runtime/host/runtime-shutdown.ts +17 -21
  474. package/src/runtime/host/service-relocation-control.ts +14 -1
  475. package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
  476. package/src/runtime/host/spot-address-transport.ts +73 -195
  477. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  478. package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
  479. package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
  480. package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
  481. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  482. package/src/runtime/locations/authority-key-codec.ts +7 -3
  483. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  484. package/src/runtime/locations/creation-operation-id.ts +6 -3
  485. package/src/runtime/locations/domain-store-contract.ts +12 -3
  486. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  487. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  488. package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
  489. package/src/runtime/locations/key-codec.ts +3 -2
  490. package/src/runtime/locations/lease-tracker.ts +8 -14
  491. package/src/runtime/locations/lifecycle.ts +16 -45
  492. package/src/runtime/locations/location-store-failure.ts +4 -0
  493. package/src/runtime/locations/location-store-pages.ts +18 -0
  494. package/src/runtime/locations/location-store-repository.ts +450 -478
  495. package/src/runtime/locations/relocation-blob.ts +17 -6
  496. package/src/runtime/locations/resolvers.ts +90 -58
  497. package/src/runtime/locations/runtime.ts +220 -110
  498. package/src/runtime/locations/spot-location-claims.ts +54 -26
  499. package/src/runtime/messaging/payload-codec.ts +35 -24
  500. package/src/runtime/messaging/submission-result.ts +57 -1
  501. package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
  502. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
  503. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
  504. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
  505. package/src/runtime/spots/index.ts +687 -437
  506. package/src/runtime/spots/spot-activation-registry.ts +42 -71
  507. package/src/runtime/spots/spot-activation-state.ts +4 -16
  508. package/src/runtime/spots/spot-activation.ts +167 -115
  509. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  510. package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
  511. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
  512. package/src/runtime/spots/spot-actor-membership.ts +107 -75
  513. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  514. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  515. package/src/runtime/spots/spot-context.ts +3 -3
  516. package/src/runtime/spots/spot-entry-activation.ts +13 -33
  517. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  518. package/src/runtime/spots/spot-manager-public.ts +29 -21
  519. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  520. package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
  521. package/src/runtime/spots/spot-outbound.ts +47 -68
  522. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  523. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  524. package/src/runtime/spots/spot-route-replies.ts +6 -4
  525. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
  526. package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
  527. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  528. package/src/runtime/spots/spot-runtime-ports.ts +10 -43
  529. package/src/runtime/spots/spot-serial-executor.ts +10 -2
  530. package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
  531. package/src/runtime/spots/spot-timer.ts +3 -2
  532. package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
  533. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
  534. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  535. package/src/runtime/streams/bound-session-service.ts +23 -37
  536. package/src/runtime/streams/index.ts +102 -88
  537. package/src/runtime/streams/managed-stream.ts +29 -10
  538. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  539. package/src/runtime/streams/protocol.ts +34 -88
  540. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  541. package/src/runtime/streams/session-calls.ts +6 -5
  542. package/src/runtime/streams/session-context.ts +54 -10
  543. package/src/runtime/streams/session-requests.ts +2 -1
  544. package/src/runtime/streams/session-serial-executor.ts +2 -2
  545. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  546. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  547. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  548. package/src/runtime/workers/index.ts +13 -12
  549. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
  550. package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
  551. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  552. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  553. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  554. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  555. package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
  556. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  557. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -2,6 +2,11 @@ export interface ZLinkRawReceivedRecord {
2
2
  readonly sourceRid: string;
3
3
  readonly sourceRoute: Uint8Array;
4
4
  readonly requestSeq?: bigint;
5
+ /**
6
+ * Core selected-route generation of the ROUTER route that delivered this
7
+ * record (Core ROUTER §10.1); 0n for a non-ROUTER receive. Equality only.
8
+ */
9
+ readonly routeGeneration: bigint;
5
10
  readonly reply?: (parts: readonly Uint8Array[]) => void;
6
11
  readonly parts: readonly Buffer[];
7
12
  /** Releases the ordinary Framework-owned receive record exactly once. */
@@ -19,7 +24,7 @@ export interface ZLinkRawMonitorRecord {
19
24
  readonly flags?: number;
20
25
  }
21
26
  export interface ZLinkRawSocketPort {
22
- setReadableHandler(handler: () => void): void;
27
+ setReadableHandler(handler: (receiveReady: boolean, routeReady: boolean) => void): void;
23
28
  bind(endpoint: string): void;
24
29
  unbind(endpoint: string): void;
25
30
  connect(endpoint: string): void;
@@ -33,6 +38,11 @@ export interface ZLinkRawMonitorPort {
33
38
  statusReady(): boolean;
34
39
  close(): void;
35
40
  }
41
+ /** One row of the ROUTER selected-route snapshot (Core ROUTER §10.1). */
42
+ export interface ZLinkRawRouterRoute {
43
+ readonly routingId: string;
44
+ readonly routeGeneration: bigint;
45
+ }
36
46
  export interface ZLinkRawRouterPort extends ZLinkRawSocketPort {
37
47
  disconnectRid?(routingId: string): void;
38
48
  localEndpoint(): string;
@@ -41,6 +51,8 @@ export interface ZLinkRawRouterPort extends ZLinkRawSocketPort {
41
51
  send(targetRid: string, parts: readonly Uint8Array[]): Promise<void>;
42
52
  request(targetRid: string, parts: readonly Uint8Array[], timeoutMs: number): Promise<readonly Buffer[]>;
43
53
  receive(dontWait?: boolean): ZLinkRawReceivedRecord | undefined;
54
+ /** The selected route of every RID. The socket's one route observer calls it. */
55
+ routesSnapshot(): readonly ZLinkRawRouterRoute[];
44
56
  }
45
57
  export interface ZLinkRawDealerPort extends ZLinkRawSocketPort {
46
58
  setRoutingId(routingId: string): void;
@@ -41,7 +41,10 @@ export declare class ZLinkBackendResultError extends Error {
41
41
  readonly operation: 'request' | 'submit';
42
42
  readonly result: number;
43
43
  readonly nativeErrno?: number | undefined;
44
- constructor(operation: 'request' | 'submit', result: number, nativeErrno?: number | undefined, options?: ErrorOptions);
44
+ constructor(operation: 'request' | 'submit', result: number, nativeErrno?: number | undefined, options?: ErrorOptions & {
45
+ readonly phase?: 'submit' | 'completion';
46
+ });
47
+ readonly phase: 'submit' | 'completion';
45
48
  }
46
49
  export declare function isZLinkBackendResultError(error: unknown): error is ZLinkBackendResultError;
47
50
  export declare function isBackendNotConnectedError(error: unknown): boolean;
@@ -48,7 +48,9 @@ class ZLinkBackendResultError extends Error {
48
48
  this.result = result;
49
49
  this.nativeErrno = nativeErrno;
50
50
  this.name = 'ZLinkBackendResultError';
51
+ this.phase = options?.phase ?? 'completion';
51
52
  }
53
+ phase;
52
54
  }
53
55
  exports.ZLinkBackendResultError = ZLinkBackendResultError;
54
56
  function isZLinkBackendResultError(error) {
@@ -2,15 +2,24 @@ import type { ZLinkChannelClient, ZLinkChannelRequestCall, ZLinkFanoutClient, ZL
2
2
  import type { SpotHandle } from '../spots/spot-handle';
3
3
  import { type ZLinkFrameworkRegistration } from '../configuration';
4
4
  import type { ZLinkChannelClientTransportSource, ZLinkRouteClientTransport, ZLinkSpotPublisherClientTransport } from './channel-transports';
5
+ type RouteMeshChannelMatch = {
6
+ readonly meshName: string;
7
+ readonly mesh: NonNullable<ReturnType<ZLinkFrameworkRegistration['spotNodes']['get']>>;
8
+ };
9
+ type ChannelRouteResolution = {
10
+ readonly kind: 'client-server';
11
+ readonly channel: NonNullable<ReturnType<ZLinkFrameworkRegistration['channels']['get']>>;
12
+ } | {
13
+ readonly kind: 'route-mesh';
14
+ readonly matches: readonly RouteMeshChannelMatch[];
15
+ };
16
+ export declare function resolveChannelRoute(registration: ZLinkFrameworkRegistration, channelName: string): ChannelRouteResolution | undefined;
17
+ export declare function requireUniqueRouteMeshChannel(matches: readonly RouteMeshChannelMatch[], duplicateMessage: string): RouteMeshChannelMatch;
5
18
  export declare class DefaultZLinkChannelClient implements ZLinkChannelClient {
6
- private readonly registration;
7
- private readonly transport?;
8
- constructor(registration: ZLinkFrameworkRegistration, transport?: ZLinkChannelClientTransportSource | undefined);
19
+ private readonly routeClient;
20
+ constructor(registration: ZLinkFrameworkRegistration, channelTransport?: ZLinkChannelClientTransportSource, routeTransport?: ZLinkRouteClientTransport, spotRouterChannelIdForMesh?: (meshName: string) => string);
9
21
  sendToChannel(channelName: string, message: unknown): ZLinkSendCall;
10
22
  requestToChannel(channelName: string, request: unknown): ZLinkChannelRequestCall;
11
- private defaultRequestTimeout;
12
- private requireChannel;
13
- private requireTransport;
14
23
  }
15
24
  export declare class DefaultZLinkFanoutClient implements ZLinkFanoutClient {
16
25
  private readonly registration;
@@ -18,7 +27,6 @@ export declare class DefaultZLinkFanoutClient implements ZLinkFanoutClient {
18
27
  constructor(registration: ZLinkFrameworkRegistration, transport?: ZLinkChannelClientTransportSource | undefined);
19
28
  publish(channelName: string, event: unknown): ZLinkFanoutPublishCall;
20
29
  publish(channelName: string, topic: string, event: unknown): ZLinkFanoutPublishCall;
21
- getListenerStatus(channelName: string): import('../../contracts').ZLinkFanoutListenerStatus;
22
30
  private requirePublisherChannel;
23
31
  private requireTransport;
24
32
  }
@@ -26,7 +34,8 @@ export declare class DefaultZLinkRouteClient implements ZLinkRouteClient {
26
34
  private readonly registration;
27
35
  private readonly transport?;
28
36
  private readonly spotRouterChannelIdForMesh;
29
- constructor(registration: ZLinkFrameworkRegistration, transport?: ZLinkRouteClientTransport | undefined, spotRouterChannelIdForMesh?: (meshName: string) => string);
37
+ private readonly channelTransport?;
38
+ constructor(registration: ZLinkFrameworkRegistration, transport?: ZLinkRouteClientTransport | undefined, spotRouterChannelIdForMesh?: (meshName: string) => string, channelTransport?: ZLinkChannelClientTransportSource | undefined);
30
39
  sendToNode(meshName: string, targetNodeRid: string, message: unknown): ZLinkSendCall;
31
40
  requestToNode(meshName: string, targetNodeRid: string, request: unknown): ZLinkRequestCall;
32
41
  sendToChannel(channelName: string, message: unknown): ZLinkSendCall;
@@ -35,9 +44,10 @@ export declare class DefaultZLinkRouteClient implements ZLinkRouteClient {
35
44
  requestToSpot(spot: SpotHandle, request: unknown): ZLinkRequestCall;
36
45
  private defaultRequestTimeout;
37
46
  private requireMesh;
38
- private resolveMeshChannel;
47
+ private requireChannelRoute;
39
48
  private defaultRequestTimeoutForChannel;
40
49
  private requireTransport;
50
+ private requireChannelTransport;
41
51
  private requireSpotTransport;
42
52
  }
43
53
  export declare class DefaultZLinkSpotPublisherClient implements ZLinkSpotPublisherClient {
@@ -48,3 +58,4 @@ export declare class DefaultZLinkSpotPublisherClient implements ZLinkSpotPublish
48
58
  private requireMeshChannel;
49
59
  private requireTransport;
50
60
  }
61
+ export {};
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DefaultZLinkSpotPublisherClient = exports.DefaultZLinkRouteClient = exports.DefaultZLinkFanoutClient = exports.DefaultZLinkChannelClient = void 0;
4
+ exports.resolveChannelRoute = resolveChannelRoute;
5
+ exports.requireUniqueRouteMeshChannel = requireUniqueRouteMeshChannel;
6
+ const Registration_1 = require("../../contracts/Configuration/Registration");
4
7
  const configuration_1 = require("../configuration");
5
8
  const framework_errors_internal_1 = require("../framework-errors-internal");
6
9
  const submission_result_1 = require("../messaging/submission-result");
@@ -9,39 +12,32 @@ const execution_1 = require("../execution");
9
12
  const fanout_service_wire_1 = require("./fanout-service-wire");
10
13
  const spot_outbound_1 = require("../spots/spot-outbound");
11
14
  const packet_name_1 = require("../messaging/packet-name");
15
+ function resolveChannelRoute(registration, channelName) {
16
+ const clientServerChannel = registration.channels.get(channelName);
17
+ if (clientServerChannel !== undefined) {
18
+ return { kind: 'client-server', channel: clientServerChannel };
19
+ }
20
+ const matches = [...registration.spotNodes.entries()]
21
+ .filter(([, mesh]) => Object.prototype.hasOwnProperty.call(mesh.meshChannels ?? {}, channelName))
22
+ .map(([meshName, mesh]) => ({ meshName, mesh }));
23
+ return matches.length === 0 ? undefined : { kind: 'route-mesh', matches };
24
+ }
25
+ function requireUniqueRouteMeshChannel(matches, duplicateMessage) {
26
+ if (matches.length !== 1) {
27
+ throw new configuration_1.ZLinkConfigurationException(duplicateMessage);
28
+ }
29
+ return matches[0];
30
+ }
12
31
  class DefaultZLinkChannelClient {
13
- registration;
14
- transport;
15
- constructor(registration, transport) {
16
- this.registration = registration;
17
- this.transport = transport;
32
+ routeClient;
33
+ constructor(registration, channelTransport, routeTransport, spotRouterChannelIdForMesh = (meshName) => meshName) {
34
+ this.routeClient = new DefaultZLinkRouteClient(registration, routeTransport, spotRouterChannelIdForMesh, channelTransport);
18
35
  }
19
36
  sendToChannel(channelName, message) {
20
- return new DefaultZLinkSendCall(() => this.requireChannel(channelName), async (packetName, metadata, signal) => normalizeSubmitResult(await this.requireTransport().send(channelName, packetName, message, signal, metadata)));
37
+ return this.routeClient.sendToChannel(channelName, message);
21
38
  }
22
39
  requestToChannel(channelName, request) {
23
- return new DefaultZLinkRequestCall(() => this.requireChannel(channelName), (packetName, timeoutMs, metadata, signal) => this.requireTransport().request(channelName, packetName, request, timeoutMs, signal, metadata), this.defaultRequestTimeout(channelName));
24
- }
25
- defaultRequestTimeout(channelName) {
26
- return (this.registration.channels.get(channelName)?.requestTimeoutMs ??
27
- this.registration.requestTimeoutMs ??
28
- 30_000);
29
- }
30
- requireChannel(channelName) {
31
- const channel = this.registration.channels.get(channelName);
32
- if (channel === undefined) {
33
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, `Channel client '${channelName}' is not registered.`);
34
- }
35
- if (channel.client === undefined) {
36
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidConfiguration, `Channel client role '${channelName}' is not configured.`);
37
- }
38
- }
39
- requireTransport() {
40
- const transport = typeof this.transport === 'function' ? this.transport() : this.transport;
41
- if (transport === undefined) {
42
- throw new configuration_1.ZLinkConfigurationException('Channel runtime is not started.');
43
- }
44
- return transport;
40
+ return this.routeClient.requestToChannel(channelName, request);
45
41
  }
46
42
  }
47
43
  exports.DefaultZLinkChannelClient = DefaultZLinkChannelClient;
@@ -64,14 +60,6 @@ class DefaultZLinkFanoutClient {
64
60
  status: (await this.requireTransport().publish(channelName, topic, packetName, event, signal)).status
65
61
  }));
66
62
  }
67
- getListenerStatus(channelName) {
68
- this.requirePublisherChannel(channelName);
69
- const status = this.requireTransport().getFanoutListenerStatus?.(channelName);
70
- if (status === undefined) {
71
- throw new configuration_1.ZLinkConfigurationException(`Fanout publisher '${channelName}' has not reported a bound listener.`);
72
- }
73
- return status;
74
- }
75
63
  requirePublisherChannel(channelName) {
76
64
  if (!this.registration.fanoutPublishers.has(channelName)) {
77
65
  throw new configuration_1.ZLinkConfigurationException(`Channel '${channelName}' does not have a publisher capability.`);
@@ -90,10 +78,12 @@ class DefaultZLinkRouteClient {
90
78
  registration;
91
79
  transport;
92
80
  spotRouterChannelIdForMesh;
93
- constructor(registration, transport, spotRouterChannelIdForMesh = (meshName) => meshName) {
81
+ channelTransport;
82
+ constructor(registration, transport, spotRouterChannelIdForMesh = (meshName) => meshName, channelTransport) {
94
83
  this.registration = registration;
95
84
  this.transport = transport;
96
85
  this.spotRouterChannelIdForMesh = spotRouterChannelIdForMesh;
86
+ this.channelTransport = channelTransport;
97
87
  }
98
88
  sendToNode(meshName, targetNodeRid, message) {
99
89
  return new DefaultZLinkSendCall(() => this.requireMesh(meshName), async (packetName, metadata, signal) => normalizeSubmitResult(await this.requireTransport().submit(meshName, targetNodeRid, packetName, message, signal, metadata)));
@@ -102,19 +92,21 @@ class DefaultZLinkRouteClient {
102
92
  return new DefaultZLinkRequestCall(() => this.requireMesh(meshName), (packetName, timeoutMs, metadata, signal) => this.requireTransport().request(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata), this.defaultRequestTimeout(meshName));
103
93
  }
104
94
  sendToChannel(channelName, message) {
105
- return new DefaultZLinkSendCall(() => {
106
- this.resolveMeshChannel(channelName);
107
- }, async (packetName, metadata, signal) => {
108
- const meshName = this.resolveMeshChannel(channelName);
109
- return normalizeSubmitResult(await this.requireTransport().submitToChannel(meshName, channelName, packetName, message, signal, metadata));
95
+ return new DefaultZLinkSendCall(() => this.requireChannelRoute(channelName), async (packetName, metadata, signal) => {
96
+ const route = this.requireChannelRoute(channelName);
97
+ if (route.kind === 'route-mesh') {
98
+ return normalizeSubmitResult(await this.requireTransport().submitToChannel(route.meshName, channelName, packetName, message, signal, metadata));
99
+ }
100
+ return normalizeSubmitResult(await this.requireChannelTransport().send(channelName, packetName, message, signal, metadata));
110
101
  });
111
102
  }
112
103
  requestToChannel(channelName, request) {
113
- return new DefaultZLinkRequestCall(() => {
114
- this.resolveMeshChannel(channelName);
115
- }, (packetName, timeoutMs, metadata, signal) => {
116
- const meshName = this.resolveMeshChannel(channelName);
117
- return this.requireTransport().requestToChannel(meshName, channelName, packetName, request, timeoutMs, signal, metadata);
104
+ return new DefaultZLinkRequestCall(() => this.requireChannelRoute(channelName), (packetName, timeoutMs, metadata, signal) => {
105
+ const route = this.requireChannelRoute(channelName);
106
+ if (route.kind === 'route-mesh') {
107
+ return this.requireTransport().requestToChannel(route.meshName, channelName, packetName, request, timeoutMs, signal, metadata);
108
+ }
109
+ return this.requireChannelTransport().request(channelName, packetName, request, timeoutMs, signal, metadata);
118
110
  }, this.defaultRequestTimeoutForChannel(channelName));
119
111
  }
120
112
  sendToSpot(spot, message) {
@@ -137,13 +129,13 @@ class DefaultZLinkRouteClient {
137
129
  signal,
138
130
  metadata,
139
131
  spotRouterChannelIdForMesh: this.spotRouterChannelIdForMesh
140
- }), this.registration.requestTimeoutMs ?? 30_000);
132
+ }), this.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS);
141
133
  }
142
134
  defaultRequestTimeout(meshName) {
143
135
  return (this.registration.spotNodes.get(meshName)?.requestTimeoutMs ??
144
136
  this.registration.routeChannelOptions.get(meshName)?.requestTimeoutMs ??
145
137
  this.registration.requestTimeoutMs ??
146
- 30_000);
138
+ Registration_1.DEFAULT_REQUEST_TIMEOUT_MS);
147
139
  }
148
140
  requireMesh(meshName) {
149
141
  if (!this.registration.spotNodes.has(meshName) &&
@@ -151,21 +143,30 @@ class DefaultZLinkRouteClient {
151
143
  throw new configuration_1.ZLinkConfigurationException(`RouteMesh '${meshName}' is not registered.`);
152
144
  }
153
145
  }
154
- resolveMeshChannel(channelName) {
155
- const matches = [...this.registration.spotNodes.entries()]
156
- .filter(([, mesh]) => Object.prototype.hasOwnProperty.call(mesh.meshChannels ?? {}, channelName))
157
- .map(([meshName]) => meshName);
158
- if (matches.length === 0) {
159
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, `RouteMesh channel '${channelName}' is not registered.`);
146
+ requireChannelRoute(channelName) {
147
+ const resolution = resolveChannelRoute(this.registration, channelName);
148
+ if (resolution === undefined) {
149
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, `ChannelName '${channelName}' is not registered.`);
160
150
  }
161
- if (matches.length !== 1) {
162
- throw new configuration_1.ZLinkConfigurationException(`RouteMesh channel '${channelName}' must be unique across the Framework host.`);
151
+ if (resolution.kind === 'client-server') {
152
+ if (resolution.channel.client === undefined) {
153
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidConfiguration, `Channel client role '${channelName}' is not configured.`);
154
+ }
155
+ return resolution;
163
156
  }
164
- return matches[0];
157
+ return {
158
+ kind: 'route-mesh',
159
+ ...requireUniqueRouteMeshChannel(resolution.matches, `RouteMesh channel '${channelName}' must be unique across the Framework host.`)
160
+ };
165
161
  }
166
162
  defaultRequestTimeoutForChannel(channelName) {
167
- const match = [...this.registration.spotNodes.entries()].find(([, mesh]) => Object.prototype.hasOwnProperty.call(mesh.meshChannels ?? {}, channelName));
168
- return match?.[1].requestTimeoutMs ?? this.registration.requestTimeoutMs ?? 30_000;
163
+ const route = resolveChannelRoute(this.registration, channelName);
164
+ const timeoutMs = route?.kind === 'client-server'
165
+ ? route.channel.requestTimeoutMs
166
+ : route?.kind === 'route-mesh'
167
+ ? route.matches[0]?.mesh.requestTimeoutMs
168
+ : undefined;
169
+ return timeoutMs ?? this.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS;
169
170
  }
170
171
  requireTransport() {
171
172
  if (this.transport === undefined) {
@@ -173,6 +174,13 @@ class DefaultZLinkRouteClient {
173
174
  }
174
175
  return this.transport;
175
176
  }
177
+ requireChannelTransport() {
178
+ const transport = typeof this.channelTransport === 'function' ? this.channelTransport() : this.channelTransport;
179
+ if (transport === undefined) {
180
+ throw new configuration_1.ZLinkConfigurationException('Channel runtime is not started.');
181
+ }
182
+ return transport;
183
+ }
176
184
  requireSpotTransport() {
177
185
  const transport = this.requireTransport();
178
186
  if (transport.sendToSpot === undefined || transport.requestToSpot === undefined) {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.tryDecodeChannelHeader = tryDecodeChannelHeader;
4
4
  exports.inspectMalformedChannelHeader = inspectMalformedChannelHeader;
5
5
  exports.malformedProtocolErrorRequestHeader = malformedProtocolErrorRequestHeader;
6
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
6
7
  const channel_envelope_1 = require("./channel-envelope");
7
8
  function tryDecodeChannelHeader(parts, flowEnabled = true) {
8
9
  if (parts.length < 2 || parts[0].data().length === 0) {
@@ -55,7 +56,7 @@ function malformedProtocolErrorRequestHeader(channelName, info) {
55
56
  kind: 1 /* ZLinkChannelMessageKind.Request */,
56
57
  channelName,
57
58
  messageName: info.messageName ?? '',
58
- contentType: 'application/json',
59
+ contentType: stream_wire_1.ZlinkStreamContentType.Json,
59
60
  correlationId: info.correlationId ?? null,
60
61
  deadline: null,
61
62
  topic: null,
@@ -14,6 +14,7 @@ exports.decodeChannelPayload = decodeChannelPayload;
14
14
  exports.closeMessages = closeMessages;
15
15
  exports.decodeChannelHeader = decodeChannelHeader;
16
16
  const node_crypto_1 = require("node:crypto");
17
+ const node_buffer_1 = require("node:buffer");
17
18
  const contracts_1 = require("../../contracts");
18
19
  const encoded_payload_storage_1 = require("../../contracts/Common/encoded-payload-storage");
19
20
  const ZLinkMessage_1 = require("../../contracts/Common/ZLinkMessage");
@@ -24,6 +25,7 @@ const payload_codec_1 = require("../messaging/payload-codec");
24
25
  const CodecContentType_1 = require("../../contracts/Configuration/CodecContentType");
25
26
  const framework_json_v1_1 = require("../messaging/framework-json-v1");
26
27
  const flow_context_1 = require("../diagnostics/flow-context");
28
+ const service_wire_constants_generated_1 = require("../foundation/service-wire-constants.generated");
27
29
  const channel_framework_packets_1 = require("./channel-framework-packets");
28
30
  const Attributes_1 = require("../../contracts/Handlers/Attributes");
29
31
  exports.ZLINK_CHANNEL_FORMAT_MARKER = 0xf2;
@@ -314,7 +316,20 @@ function writeChannelHeader(writer, kind, channelName, messageName, contentType,
314
316
  writer.append(',"source":');
315
317
  writer.nullableString(source);
316
318
  }
317
- writer.append(',"metadata":{');
319
+ writer.append(',"metadata":');
320
+ writeApplicationMetadata(writer, metadata);
321
+ if (flowId !== undefined) {
322
+ writer.append(',"flowId":');
323
+ writer.string(flowId);
324
+ }
325
+ if (flowOrigin !== undefined) {
326
+ writer.append(',"flowOrigin":');
327
+ writer.append(String(encodeFlowOrigin(flowOrigin)));
328
+ }
329
+ writer.append('}');
330
+ }
331
+ function writeApplicationMetadata(writer, metadata) {
332
+ writer.append('{');
318
333
  let first = true;
319
334
  for (const name in metadata) {
320
335
  if (!Object.prototype.hasOwnProperty.call(metadata, name))
@@ -327,15 +342,6 @@ function writeChannelHeader(writer, kind, channelName, messageName, contentType,
327
342
  writer.string(metadata[name]);
328
343
  }
329
344
  writer.append('}');
330
- if (flowId !== undefined) {
331
- writer.append(',"flowId":');
332
- writer.string(flowId);
333
- }
334
- if (flowOrigin !== undefined) {
335
- writer.append(',"flowOrigin":');
336
- writer.append(String(encodeFlowOrigin(flowOrigin)));
337
- }
338
- writer.append('}');
339
345
  }
340
346
  class ChannelHeaderWriter {
341
347
  output;
@@ -438,13 +444,16 @@ function parseWireJson(payload, schema) {
438
444
  }, schema);
439
445
  }
440
446
  function parseChannelHeaderBytes(payload) {
441
- return tryParseCanonicalChannelHeader(payload) ?? parseWireJson(payload.toString());
447
+ if (!(0, node_buffer_1.isUtf8)(payload)) {
448
+ throw new contracts_1.ZLinkFrameworkException(contracts_1.ZLinkFrameworkErrorKind.ProtocolError, 'Channel envelope header must contain valid UTF-8.');
449
+ }
450
+ return tryParseCanonicalChannelHeader(payload) ?? (0, framework_json_v1_1.parseFrameworkJsonV1)(payload.toString());
442
451
  }
443
452
  /**
444
453
  * Accept the byte layout emitted by writeChannelHeader without materializing
445
454
  * the enclosing JSON text. Any variation falls through to the established
446
455
  * framework-json-v1 parser, which remains the sole authority for JSON
447
- * failures, unknown properties, and prototype-key rejection.
456
+ * failures and unknown properties. Header metadata accepts every valid string key.
448
457
  */
449
458
  function tryParseCanonicalChannelHeader(payload) {
450
459
  const reader = new CanonicalChannelHeaderReader(payload);
@@ -700,34 +709,43 @@ function channelKindName(kind) {
700
709
  }
701
710
  const EMPTY_APPLICATION_METADATA = Object.freeze({});
702
711
  function applicationMetadataRecord(metadata) {
703
- // The common case carries no metadata; skip the record + JSON.stringify
704
- // byte-limit walk entirely.
705
712
  if (metadata.size === 0)
706
713
  return EMPTY_APPLICATION_METADATA;
707
- const record = {};
708
- for (const [key, value] of metadata) {
709
- if (key.length === 0 || key.includes('\0') || value.includes('\0')) {
710
- throw new configuration_1.ZLinkConfigurationException('Channel application metadata keys must be non-empty and keys and values must not contain NUL.');
711
- }
714
+ const record = Object.create(null);
715
+ for (const [key, value] of metadata)
712
716
  record[key] = value;
717
+ return validateApplicationMetadata(record);
718
+ }
719
+ const INVALID_METADATA_UNICODE = /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u;
720
+ function validateApplicationMetadata(metadata) {
721
+ const keys = Object.keys(metadata);
722
+ if (keys.length === 0)
723
+ return EMPTY_APPLICATION_METADATA;
724
+ for (const key of keys) {
725
+ const value = requireString(metadata[key], `metadata.${key}`);
726
+ if (key.length === 0 ||
727
+ key.includes('\0') ||
728
+ value.includes('\0') ||
729
+ INVALID_METADATA_UNICODE.test(key) ||
730
+ INVALID_METADATA_UNICODE.test(value)) {
731
+ throw new configuration_1.ZLinkConfigurationException('Channel application metadata keys must be non-empty and keys and values must be valid Unicode without NUL.');
732
+ }
713
733
  }
714
- if (Buffer.byteLength(JSON.stringify(record), 'utf8') > 1024) {
715
- throw new configuration_1.ZLinkConfigurationException('Channel application metadata exceeds the 1024-byte limit.');
734
+ const record = metadata;
735
+ const writer = new ChannelHeaderWriter();
736
+ writeApplicationMetadata(writer, record);
737
+ if (writer.byteLength > service_wire_constants_generated_1.SERVICE_WIRE_METADATA_BYTES) {
738
+ throw new configuration_1.ZLinkConfigurationException(`Channel application metadata exceeds the ${service_wire_constants_generated_1.SERVICE_WIRE_METADATA_BYTES}-byte limit.`);
716
739
  }
717
740
  return Object.freeze(record);
718
741
  }
719
742
  function requireApplicationMetadata(value) {
720
- if (value === undefined) {
721
- return Object.freeze({});
722
- }
743
+ if (value === undefined)
744
+ return EMPTY_APPLICATION_METADATA;
723
745
  if (!isRecord(value)) {
724
746
  throw new configuration_1.ZLinkConfigurationException('Channel application metadata must be a JSON object.');
725
747
  }
726
- const metadata = new Map();
727
- for (const [key, selectedValue] of Object.entries(value)) {
728
- metadata.set(key, requireString(selectedValue, `metadata.${key}`));
729
- }
730
- return applicationMetadataRecord(metadata);
748
+ return validateApplicationMetadata(value);
731
749
  }
732
750
  function optionalFlowId(value) {
733
751
  return value === undefined || value === null ? undefined : requireFlowId(value);
@@ -1,4 +1,5 @@
1
1
  import { type ZLinkSubmitResult } from '../messaging/submission-result';
2
+ import { type ZLinkRuntimeMessageFlowResult } from '../../contracts/Dispatch/ZLinkDispatchOptions';
2
3
  import { type ZLinkChannelEnvelopeCodecRegistry } from './channel-envelope';
3
4
  import { ZLinkChannelDispatchServices } from './channel-dispatch-services';
4
5
  import { ZLinkChannelSocketRegistry } from './channel-socket-registry';
@@ -31,3 +32,5 @@ export declare class ZLinkChannelOutboundOperations {
31
32
  * ref'ed handle until reply, cancellation, timeout, or failure settles it.
32
33
  */
33
34
  export declare function keepChannelRequestAlive<T>(request: Promise<T>): Promise<T>;
35
+ export declare function requestTerminalResult(error: unknown, signal: AbortSignal | undefined): ZLinkRuntimeMessageFlowResult;
36
+ export declare function isRemoteChannelErrorReply(error: unknown): boolean;
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkChannelOutboundOperations = void 0;
4
4
  exports.keepChannelRequestAlive = keepChannelRequestAlive;
5
+ exports.requestTerminalResult = requestTerminalResult;
6
+ exports.isRemoteChannelErrorReply = isRemoteChannelErrorReply;
5
7
  const framework_errors_internal_1 = require("../framework-errors-internal");
6
8
  const runtime_values_1 = require("../backend/runtime-values");
7
9
  const submission_result_1 = require("../messaging/submission-result");
@@ -39,11 +41,7 @@ class ZLinkChannelOutboundOperations {
39
41
  (0, abort_1.throwIfAborted)(signal);
40
42
  const dealer = await this.sockets.awaitClientDealerForOutbound(channelName, signal);
41
43
  if (dealer === undefined) {
42
- return {
43
- status: this.sockets.hasKnownClientServerTargets(channelName)
44
- ? submission_result_1.ZLinkSubmitStatus.RouteNotConnected
45
- : submission_result_1.ZLinkSubmitStatus.TargetNotFound
46
- };
44
+ return { status: submission_result_1.ZLinkSubmitStatus.TimedOut };
47
45
  }
48
46
  const parts = (0, channel_envelope_1.encodeChannelEnvelopeParts)(3 /* ZLinkChannelMessageKind.Command */, channelName, packetName, message, undefined, undefined, this.codecs, undefined, this.dispatchServices.flowCreationEnabled(), metadata);
49
47
  try {
@@ -83,7 +81,6 @@ class ZLinkChannelOutboundOperations {
83
81
  return keepChannelRequestAlive((0, flow_context_1.runWithOutboundFlow)(this.dispatchServices.flowCreationEnabled(), () => this.requestScoped(channelName, packetName, request, timeoutMs, signal, metadata)));
84
82
  }
85
83
  async requestScoped(channelName, packetName, request, timeoutMs, signal, metadata) {
86
- const deadlineAtMs = timeoutMs === undefined ? undefined : performance.now() + timeoutMs;
87
84
  let correlationId;
88
85
  let selectedServerRid;
89
86
  let terminalRecorded = false;
@@ -104,20 +101,14 @@ class ZLinkChannelOutboundOperations {
104
101
  };
105
102
  try {
106
103
  (0, abort_1.throwIfAborted)(signal);
107
- const dealer = await this.sockets.awaitClientDealerForOutbound(channelName, signal, deadlineAtMs);
108
- // Binding timeouts are whole milliseconds; rounding down keeps the call's deadline.
109
- const remainingMs = deadlineAtMs === undefined ? undefined : Math.floor(deadlineAtMs - performance.now());
110
- if (dealer === undefined || (remainingMs !== undefined && remainingMs <= 0)) {
111
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(this.sockets.hasKnownClientServerTargets(channelName)
112
- ? framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected
113
- : framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, this.sockets.hasKnownClientServerTargets(channelName)
114
- ? `Channel '${channelName}' has known ClientServer targets but no ready server.`
115
- : `Channel '${channelName}' has no ready ClientServer server.`);
104
+ const dealer = await this.sockets.awaitClientDealerForOutbound(channelName, signal);
105
+ if (dealer === undefined) {
106
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded, `Channel '${channelName}' has no ready ClientServer server before its admission deadline.`);
116
107
  }
117
108
  const serverRid = this.sockets.selectedClientServerRid(channelName, dealer);
118
109
  selectedServerRid = serverRid;
119
110
  correlationId = (0, channel_envelope_1.newChannelCorrelationId)();
120
- const parts = (0, channel_envelope_1.encodeChannelEnvelopeParts)(1 /* ZLinkChannelMessageKind.Request */, channelName, packetName, request, remainingMs, undefined, this.codecs, correlationId, this.dispatchServices.flowCreationEnabled(), metadata);
111
+ const parts = (0, channel_envelope_1.encodeChannelEnvelopeParts)(1 /* ZLinkChannelMessageKind.Request */, channelName, packetName, request, timeoutMs, undefined, this.codecs, correlationId, this.dispatchServices.flowCreationEnabled(), metadata);
121
112
  this.dispatchServices.beginOutbound(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent)?.trace({
122
113
  surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.Channel,
123
114
  messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request,
@@ -131,7 +122,7 @@ class ZLinkChannelOutboundOperations {
131
122
  let replyParts = [];
132
123
  try {
133
124
  try {
134
- replyParts = await (0, abort_1.awaitWithAbort)(dealer.request(parts, remainingMs), signal);
125
+ replyParts = await (0, abort_1.awaitWithAbort)(dealer.request(parts, timeoutMs), signal);
135
126
  }
136
127
  catch (error) {
137
128
  if (signal?.aborted === true)
@@ -142,7 +133,7 @@ class ZLinkChannelOutboundOperations {
142
133
  if ((0, runtime_values_1.isZLinkBackendResultError)(error) && error.operation === 'request') {
143
134
  throw new contracts_1.ZLinkFrameworkException((0, framework_errors_internal_1.requestResultToPublicErrorKind)(error.result), `Channel '${channelName}' request failed with result ${error.result}.`, error);
144
135
  }
145
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `Channel '${channelName}' request failed before a reply was received.`, true, error);
136
+ throw error;
146
137
  }
147
138
  return (0, channel_envelope_1.decodeChannelReply)(replyParts, this.codecs);
148
139
  }
@@ -5,6 +5,8 @@ import type { ZLinkMultipartAsyncSubmitOperation } from './channel-multipart';
5
5
  import type { ZLinkChannelEnvelopeHeader } from './channel-envelope';
6
6
  import { type ZLinkReceiveTaskErrorReporter } from './channel-receive-task-tracker';
7
7
  import { ApplicationJobQueue } from '../host/application-job-queue';
8
+ import { ZLinkSerialExecutionQueue } from '../execution/serial-execution-queue';
9
+ export declare function createChannelApplicationDispatchQueue(): ZLinkSerialExecutionQueue;
8
10
  interface ZLinkMultipartOperation<TNext> {
9
11
  message(message: MessageLike): TNext;
10
12
  }
@@ -84,6 +86,7 @@ export declare class ZLinkChannelReceiveLoop {
84
86
  private readonly poller;
85
87
  private readonly applicationJobQueue;
86
88
  private readonly roundRobin?;
89
+ private readonly applicationDispatchQueue;
87
90
  private stoppedFlag;
88
91
  private isStopped;
89
92
  private running?;
@@ -93,7 +96,7 @@ export declare class ZLinkChannelReceiveLoop {
93
96
  private readonly capacityStop;
94
97
  constructor(channelName: string, router: ZLinkBackendRouterSocket & {
95
98
  reply(routingId: unknown, replyToken: unknown): ZLinkMultipartReplyOperation;
96
- }, dispatcher: ZLinkChannelRequestDispatchLoop, spotRouteBridge: ZLinkBackendSpotRouteBridge | undefined, infrastructureHandler: ZLinkChannelInfrastructureHandler | undefined, poller: ZLinkBackendReadablePoller, applicationJobQueue: ApplicationJobQueue, reportError?: ZLinkReceiveTaskErrorReporter, roundRobin?: ZLinkReceiveRoundRobinCoordinator | undefined);
99
+ }, dispatcher: ZLinkChannelRequestDispatchLoop, spotRouteBridge: ZLinkBackendSpotRouteBridge | undefined, infrastructureHandler: ZLinkChannelInfrastructureHandler | undefined, poller: ZLinkBackendReadablePoller, applicationJobQueue: ApplicationJobQueue, reportError?: ZLinkReceiveTaskErrorReporter, roundRobin?: ZLinkReceiveRoundRobinCoordinator | undefined, applicationDispatchQueue?: ZLinkSerialExecutionQueue);
97
100
  run(signal?: AbortSignal): Promise<void>;
98
101
  private runLoop;
99
102
  stop(): Promise<void>;
@@ -108,6 +111,7 @@ export declare class ZLinkSubscriberReceiveLoop {
108
111
  private readonly applicationJobQueue;
109
112
  private readonly infrastructureHandler?;
110
113
  private readonly roundRobin?;
114
+ private readonly applicationDispatchQueue;
111
115
  private stoppedFlag;
112
116
  private isStopped;
113
117
  private running?;
@@ -115,7 +119,7 @@ export declare class ZLinkSubscriberReceiveLoop {
115
119
  private readonly receiveOwner;
116
120
  private readonly rawReceiveReservations;
117
121
  private readonly capacityStop;
118
- constructor(adapter: ZLinkChannelBackendAdapter, subscriber: ZLinkBackendSubscriberSocket, dispatcher: ZLinkChannelPublishDispatchLoop, applicationJobQueue: ApplicationJobQueue, infrastructureHandler?: ((topicMessage: ReturnType<ZLinkChannelBackendAdapter["createTopicMessage"]>) => boolean | ZLinkSubscriberInfrastructureResult) | undefined, roundRobin?: ZLinkReceiveRoundRobinCoordinator | undefined, reportError?: ZLinkReceiveTaskErrorReporter);
122
+ constructor(adapter: ZLinkChannelBackendAdapter, subscriber: ZLinkBackendSubscriberSocket, dispatcher: ZLinkChannelPublishDispatchLoop, applicationJobQueue: ApplicationJobQueue, infrastructureHandler?: ((topicMessage: ReturnType<ZLinkChannelBackendAdapter["createTopicMessage"]>) => boolean | ZLinkSubscriberInfrastructureResult) | undefined, roundRobin?: ZLinkReceiveRoundRobinCoordinator | undefined, reportError?: ZLinkReceiveTaskErrorReporter, applicationDispatchQueue?: ZLinkSerialExecutionQueue);
119
123
  private readonly poller;
120
124
  run(signal?: AbortSignal): Promise<void>;
121
125
  private runLoop;
@@ -130,6 +134,7 @@ export declare class ZLinkRouteReceiveLoop {
130
134
  private readonly poller;
131
135
  private readonly applicationJobQueue;
132
136
  private readonly roundRobin?;
137
+ private readonly applicationDispatchQueue;
133
138
  private stoppedFlag;
134
139
  private isStopped;
135
140
  private running?;
@@ -139,7 +144,7 @@ export declare class ZLinkRouteReceiveLoop {
139
144
  private readonly capacityStop;
140
145
  constructor(router: ZLinkBackendRouterSocket & {
141
146
  reply(routingId: unknown, replyToken: unknown): ZLinkMultipartReplyOperation;
142
- }, dispatcher: ZLinkRoutePacketDispatchLoop, poller: ZLinkBackendReadablePoller, applicationJobQueue: ApplicationJobQueue, roundRobin?: ZLinkReceiveRoundRobinCoordinator | undefined, reportError?: ZLinkReceiveTaskErrorReporter);
147
+ }, dispatcher: ZLinkRoutePacketDispatchLoop, poller: ZLinkBackendReadablePoller, applicationJobQueue: ApplicationJobQueue, roundRobin?: ZLinkReceiveRoundRobinCoordinator | undefined, reportError?: ZLinkReceiveTaskErrorReporter, applicationDispatchQueue?: ZLinkSerialExecutionQueue);
143
148
  run(signal?: AbortSignal): Promise<void>;
144
149
  private runLoop;
145
150
  stop(): Promise<void>;