@zlink-systems/framework 0.30.3 → 0.32.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 (398) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActor.d.ts +2 -0
  3. package/dist/contracts/Actors/ZLinkSessionBindingIdentity.d.ts +6 -0
  4. package/dist/contracts/Actors/ZLinkSessionBindingIdentity.js +2 -0
  5. package/dist/contracts/Actors/index.d.ts +1 -0
  6. package/dist/contracts/Actors/index.js +1 -0
  7. package/dist/contracts/Common/CoreTypes.d.ts +1 -0
  8. package/dist/contracts/Common/HandlerMessageType.d.ts +8 -0
  9. package/dist/contracts/Common/HandlerMessageType.js +41 -0
  10. package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +1 -1
  11. package/dist/contracts/Common/ZLinkEncodedPayload.js +12 -20
  12. package/dist/contracts/Common/ZLinkMessage.js +11 -7
  13. package/dist/contracts/Common/encoded-payload-storage.d.ts +0 -2
  14. package/dist/contracts/Common/encoded-payload-storage.js +4 -16
  15. package/dist/contracts/Common/index.d.ts +1 -1
  16. package/dist/contracts/Common/payload-slab.d.ts +4 -0
  17. package/dist/contracts/Common/payload-slab.js +30 -0
  18. package/dist/contracts/Configuration/RegistrationBuilders.js +15 -9
  19. package/dist/contracts/Configuration/RegistrationTypes.d.ts +19 -0
  20. package/dist/contracts/Handlers/Contexts.d.ts +1 -0
  21. package/dist/contracts/Locations/Authority.d.ts +2 -0
  22. package/dist/internal.d.ts +9 -0
  23. package/dist/internal.js +23 -1
  24. package/dist/nest-integration.d.ts +1 -0
  25. package/dist/nest-integration.js +3 -1
  26. package/dist/runtime/actors/actor-client.d.ts +6 -2
  27. package/dist/runtime/actors/actor-client.js +120 -82
  28. package/dist/runtime/actors/actor-context.js +16 -5
  29. package/dist/runtime/actors/actor-execution-context.js +2 -2
  30. package/dist/runtime/actors/actor-handoff.d.ts +12 -1
  31. package/dist/runtime/actors/actor-handoff.js +79 -34
  32. package/dist/runtime/actors/actor-join-deferred-scope.js +6 -6
  33. package/dist/runtime/actors/actor-local-native-join.d.ts +2 -2
  34. package/dist/runtime/actors/actor-local-native-join.js +19 -17
  35. package/dist/runtime/actors/actor-mailbox.d.ts +1 -1
  36. package/dist/runtime/actors/actor-remote-joiner.d.ts +2 -2
  37. package/dist/runtime/actors/actor-remote-joiner.js +4 -4
  38. package/dist/runtime/actors/actor-routed-join-transport.d.ts +9 -3
  39. package/dist/runtime/actors/actor-routed-json-request.d.ts +3 -0
  40. package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -2
  41. package/dist/runtime/actors/actor-runtime-state.d.ts +1 -1
  42. package/dist/runtime/actors/spot-actor-dispatch.d.ts +9 -5
  43. package/dist/runtime/actors/spot-actor-dispatch.js +60 -38
  44. package/dist/runtime/admission.d.ts +6 -4
  45. package/dist/runtime/admission.js +21 -10
  46. package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +1 -0
  47. package/dist/runtime/application-jobs/application-ingress-record-owner.js +3 -0
  48. package/dist/runtime/backend/contracts/index.d.ts +26 -10
  49. package/dist/runtime/backend/mesh-completion-table.d.ts +7 -1
  50. package/dist/runtime/backend/mesh-completion-table.js +84 -20
  51. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +19 -6
  52. package/dist/runtime/backend/mesh-dispatch-pump.js +246 -147
  53. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -2
  54. package/dist/runtime/backend/node/node-backend-adapter-support.js +27 -19
  55. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +5 -2
  56. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +70 -13
  57. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  58. package/dist/runtime/backend/node/node-event-loop-poller.js +4 -3
  59. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +5 -1
  60. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +7 -2
  61. package/dist/runtime/backend/node/node-raw-binding-port.js +99 -63
  62. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +34 -16
  63. package/dist/runtime/backend/node/node-raw-mesh-backend.js +210 -106
  64. package/dist/runtime/backend/node/node-socket-backend-adapter.js +20 -6
  65. package/dist/runtime/backend/raw-binding-port.d.ts +6 -3
  66. package/dist/runtime/channels/channel-clients.js +3 -3
  67. package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +11 -7
  68. package/dist/runtime/channels/channel-dispatch-pipeline.js +40 -22
  69. package/dist/runtime/channels/channel-dispatch-services.d.ts +3 -1
  70. package/dist/runtime/channels/channel-dispatch-services.js +7 -6
  71. package/dist/runtime/channels/channel-dispatchers.d.ts +13 -6
  72. package/dist/runtime/channels/channel-dispatchers.js +57 -36
  73. package/dist/runtime/channels/channel-envelope.d.ts +2 -2
  74. package/dist/runtime/channels/channel-envelope.js +609 -83
  75. package/dist/runtime/channels/channel-multipart.d.ts +1 -0
  76. package/dist/runtime/channels/channel-multipart.js +10 -6
  77. package/dist/runtime/channels/channel-outbound-operations.d.ts +6 -9
  78. package/dist/runtime/channels/channel-outbound-operations.js +107 -105
  79. package/dist/runtime/channels/channel-receive-loops.d.ts +9 -7
  80. package/dist/runtime/channels/channel-receive-loops.js +126 -90
  81. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +23 -6
  82. package/dist/runtime/channels/channel-runtime-lifecycle.js +47 -38
  83. package/dist/runtime/channels/channel-runtime-manager.d.ts +13 -6
  84. package/dist/runtime/channels/channel-runtime-manager.js +32 -14
  85. package/dist/runtime/channels/channel-socket-registry.d.ts +28 -4
  86. package/dist/runtime/channels/channel-socket-registry.js +9 -1
  87. package/dist/runtime/channels/channel-transports.d.ts +23 -16
  88. package/dist/runtime/channels/channel-transports.js +139 -119
  89. package/dist/runtime/channels/dispatch-error-reporter.d.ts +4 -4
  90. package/dist/runtime/channels/dispatch-error-reporter.js +5 -5
  91. package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
  92. package/dist/runtime/channels/local-spot-route-transport.d.ts +5 -2
  93. package/dist/runtime/channels/local-spot-route-transport.js +15 -18
  94. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +6 -3
  95. package/dist/runtime/channels/router-socket-spot-route-transport.js +33 -19
  96. package/dist/runtime/channels/source-spot-router.d.ts +6 -3
  97. package/dist/runtime/channels/source-spot-router.js +34 -23
  98. package/dist/runtime/channels/spot-node-route-transport.d.ts +6 -3
  99. package/dist/runtime/channels/spot-node-route-transport.js +23 -17
  100. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +6 -3
  101. package/dist/runtime/channels/spot-route-bridge-transport.js +38 -24
  102. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +8 -4
  103. package/dist/runtime/channels/spot-route-dispatch-strategy.js +36 -23
  104. package/dist/runtime/diagnostics/dispatch-error-details.js +9 -3
  105. package/dist/runtime/diagnostics/message-flow-bootstrap.d.ts +1 -0
  106. package/dist/runtime/diagnostics/message-flow-bootstrap.js +8 -0
  107. package/dist/runtime/diagnostics/message-flow-delivery.d.ts +47 -0
  108. package/dist/runtime/diagnostics/message-flow-delivery.js +149 -0
  109. package/dist/runtime/diagnostics/message-flow-record.d.ts +50 -0
  110. package/dist/runtime/diagnostics/message-flow-record.js +228 -0
  111. package/dist/runtime/diagnostics/message-flow-worker.d.ts +1 -0
  112. package/dist/runtime/diagnostics/message-flow-worker.js +118 -0
  113. package/dist/runtime/diagnostics/message-flow.d.ts +7 -19
  114. package/dist/runtime/diagnostics/message-flow.js +42 -290
  115. package/dist/runtime/diagnostics/runtime-metrics.d.ts +4 -3
  116. package/dist/runtime/diagnostics/runtime-metrics.js +8 -4
  117. package/dist/runtime/execution/index.d.ts +1 -0
  118. package/dist/runtime/execution/index.js +6 -3
  119. package/dist/runtime/execution/serial-execution-queue.d.ts +26 -13
  120. package/dist/runtime/execution/serial-execution-queue.js +75 -71
  121. package/dist/runtime/foundation/durable-service-request.d.ts +12 -3
  122. package/dist/runtime/foundation/durable-service-request.js +158 -73
  123. package/dist/runtime/foundation/operation-registry.d.ts +33 -3
  124. package/dist/runtime/foundation/operation-registry.js +272 -33
  125. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +62 -23
  126. package/dist/runtime/foundation/raw-service-mesh-runtime.js +373 -194
  127. package/dist/runtime/foundation/request-runtime.d.ts +17 -0
  128. package/dist/runtime/foundation/request-runtime.js +163 -0
  129. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  130. package/dist/runtime/foundation/service-discovery-registry.js +6 -0
  131. package/dist/runtime/foundation/service-liveness-registry.d.ts +1 -1
  132. package/dist/runtime/foundation/service-mailbox.d.ts +4 -2
  133. package/dist/runtime/foundation/service-mailbox.js +4 -1
  134. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +2 -2
  135. package/dist/runtime/foundation/service-relocation-object-owner.js +12 -5
  136. package/dist/runtime/foundation/service-runtime-contracts.d.ts +7 -2
  137. package/dist/runtime/foundation/service-stateful-registry.d.ts +6 -2
  138. package/dist/runtime/foundation/service-stateful-registry.js +38 -17
  139. package/dist/runtime/foundation/service-stateful-runtime.d.ts +91 -26
  140. package/dist/runtime/foundation/service-stateful-runtime.js +245 -120
  141. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -0
  142. package/dist/runtime/foundation/service-stateful-wire-codec.js +15 -0
  143. package/dist/runtime/foundation/service-topology-registry.d.ts +2 -0
  144. package/dist/runtime/foundation/service-topology-registry.js +13 -3
  145. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  146. package/dist/runtime/foundation/service-wire-constants.generated.js +12 -0
  147. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +5 -1
  148. package/dist/runtime/foundation/service-wire-m6a-codec.js +50 -15
  149. package/dist/runtime/host/actor-packet-relay.d.ts +5 -6
  150. package/dist/runtime/host/actor-packet-relay.js +58 -57
  151. package/dist/runtime/host/actor-placement-coordinator.d.ts +1 -1
  152. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  153. package/dist/runtime/host/actor-runtime-options-factory.js +3 -2
  154. package/dist/runtime/host/actor-transfer-runtime.d.ts +3 -3
  155. package/dist/runtime/host/application-job-queue.d.ts +7 -5
  156. package/dist/runtime/host/application-job-queue.js +33 -21
  157. package/dist/runtime/host/bound-session-relay.js +0 -1
  158. package/dist/runtime/host/channel-runtime-options-factory.d.ts +2 -0
  159. package/dist/runtime/host/channel-runtime-options-factory.js +1 -0
  160. package/dist/runtime/host/entry-actor-runtime.d.ts +5 -2
  161. package/dist/runtime/host/entry-actor-runtime.js +2 -2
  162. package/dist/runtime/host/index.d.ts +106 -37
  163. package/dist/runtime/host/index.js +303 -151
  164. package/dist/runtime/host/location-runtime-owner.d.ts +2 -2
  165. package/dist/runtime/host/location-runtime-owner.js +1 -1
  166. package/dist/runtime/host/service-relocation-host-runtime.d.ts +195 -45
  167. package/dist/runtime/host/service-relocation-host-runtime.js +257 -144
  168. package/dist/runtime/host/spot-address-transport.d.ts +3 -0
  169. package/dist/runtime/host/spot-address-transport.js +73 -76
  170. package/dist/runtime/host/spot-runtime-options-factory.js +2 -0
  171. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -1
  172. package/dist/runtime/host/user-spot-creation-coordinator.js +49 -21
  173. package/dist/runtime/internal-observation.d.ts +1 -0
  174. package/dist/runtime/internal-observation.js +5 -0
  175. package/dist/runtime/locations/actor-location-claims.d.ts +1 -1
  176. package/dist/runtime/locations/actor-location-claims.js +15 -6
  177. package/dist/runtime/locations/auto-connect-loop.d.ts +0 -1
  178. package/dist/runtime/locations/auto-connect-loop.js +25 -19
  179. package/dist/runtime/locations/auto-connect-planner.js +2 -5
  180. package/dist/runtime/locations/auto-connect-reconciler.d.ts +1 -0
  181. package/dist/runtime/locations/auto-connect-reconciler.js +35 -23
  182. package/dist/runtime/locations/in-memory-authority-store.d.ts +1 -0
  183. package/dist/runtime/locations/in-memory-authority-store.js +15 -5
  184. package/dist/runtime/locations/in-memory-location-store.d.ts +0 -2
  185. package/dist/runtime/locations/in-memory-location-store.js +1 -38
  186. package/dist/runtime/locations/lifecycle.d.ts +1 -1
  187. package/dist/runtime/locations/lifecycle.js +2 -2
  188. package/dist/runtime/locations/location-store-repository.d.ts +0 -1
  189. package/dist/runtime/locations/location-store-repository.js +163 -246
  190. package/dist/runtime/locations/resolvers.d.ts +8 -1
  191. package/dist/runtime/locations/resolvers.js +16 -2
  192. package/dist/runtime/locations/runtime.d.ts +3 -3
  193. package/dist/runtime/locations/runtime.js +12 -16
  194. package/dist/runtime/messaging/creation-payload-codec.js +8 -7
  195. package/dist/runtime/messaging/framework-json-v1.d.ts +1 -1
  196. package/dist/runtime/messaging/framework-json-v1.js +6 -2
  197. package/dist/runtime/messaging/payload-codec.js +21 -35
  198. package/dist/runtime/messaging/request-deadline.d.ts +4 -2
  199. package/dist/runtime/messaging/request-deadline.js +40 -25
  200. package/dist/runtime/messaging/request-result.d.ts +14 -1
  201. package/dist/runtime/messaging/request-result.js +74 -13
  202. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +4 -0
  203. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -7
  204. package/dist/runtime/spots/index.d.ts +28 -7
  205. package/dist/runtime/spots/index.js +31 -6
  206. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -2
  207. package/dist/runtime/spots/spot-activation-registry.js +13 -8
  208. package/dist/runtime/spots/spot-activation-state.d.ts +2 -0
  209. package/dist/runtime/spots/spot-activation-state.js +1 -0
  210. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +9 -4
  211. package/dist/runtime/spots/spot-actor-admission-coordinator.js +33 -12
  212. package/dist/runtime/spots/spot-actor-ingress-admission.d.ts +40 -0
  213. package/dist/runtime/spots/spot-actor-ingress-admission.js +78 -0
  214. package/dist/runtime/spots/spot-actor-membership.js +3 -3
  215. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +16 -43
  216. package/dist/runtime/spots/spot-actor-packet-dispatch.js +56 -113
  217. package/dist/runtime/spots/spot-actor-packet-drain.d.ts +1 -0
  218. package/dist/runtime/spots/spot-actor-packet-drain.js +12 -5
  219. package/dist/runtime/spots/spot-entry-activation.d.ts +4 -3
  220. package/dist/runtime/spots/spot-entry-activation.js +7 -12
  221. package/dist/runtime/spots/spot-handler-registry.d.ts +5 -1
  222. package/dist/runtime/spots/spot-handler-registry.js +31 -15
  223. package/dist/runtime/spots/spot-manager-public.js +3 -2
  224. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +11 -6
  225. package/dist/runtime/spots/spot-node-runtime-manager.js +6 -1
  226. package/dist/runtime/spots/spot-outbound.d.ts +8 -2
  227. package/dist/runtime/spots/spot-outbound.js +5 -5
  228. package/dist/runtime/spots/spot-route-packet-dispatch.js +13 -8
  229. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +3 -3
  230. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +9 -5
  231. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -2
  232. package/dist/runtime/spots/spot-serial-executor.d.ts +2 -1
  233. package/dist/runtime/spots/spot-serial-turn-executor.js +20 -26
  234. package/dist/runtime/spots/spot-subscription-dispatch.js +5 -2
  235. package/dist/runtime/spots/spot-timer.d.ts +1 -1
  236. package/dist/runtime/streams/actor-session-binding-registry.d.ts +11 -3
  237. package/dist/runtime/streams/actor-session-binding-registry.js +28 -0
  238. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -2
  239. package/dist/runtime/streams/bound-actor-relay-sender.js +3 -4
  240. package/dist/runtime/streams/bound-session-service.js +6 -7
  241. package/dist/runtime/streams/index.d.ts +3 -3
  242. package/dist/runtime/streams/index.js +22 -2
  243. package/dist/runtime/streams/managed-stream.js +2 -1
  244. package/dist/runtime/streams/session-calls.d.ts +1 -1
  245. package/dist/runtime/streams/session-calls.js +3 -9
  246. package/dist/runtime/streams/session-context.d.ts +2 -2
  247. package/dist/runtime/streams/session-context.js +2 -2
  248. package/dist/runtime/streams/stream-session-runtime.d.ts +1 -0
  249. package/dist/runtime/streams/stream-session-runtime.js +64 -33
  250. package/package.json +3 -3
  251. package/src/contracts/Actors/ZLinkActor.ts +6 -0
  252. package/src/contracts/Actors/ZLinkSessionBindingIdentity.ts +7 -0
  253. package/src/contracts/Actors/index.ts +1 -0
  254. package/src/contracts/Common/CoreTypes.ts +1 -0
  255. package/src/contracts/Common/HandlerMessageType.ts +50 -0
  256. package/src/contracts/Common/ZLinkEncodedPayload.ts +13 -25
  257. package/src/contracts/Common/ZLinkMessage.ts +11 -7
  258. package/src/contracts/Common/encoded-payload-storage.ts +4 -16
  259. package/src/contracts/Common/index.ts +1 -1
  260. package/src/contracts/Common/payload-slab.ts +29 -0
  261. package/src/contracts/Configuration/RegistrationBuilders.ts +29 -15
  262. package/src/contracts/Configuration/RegistrationTypes.ts +19 -0
  263. package/src/contracts/Handlers/Contexts.ts +1 -0
  264. package/src/contracts/Locations/Authority.ts +7 -1
  265. package/src/internal.ts +17 -0
  266. package/src/nest-integration.ts +1 -0
  267. package/src/runtime/actors/actor-client.ts +257 -163
  268. package/src/runtime/actors/actor-context.ts +26 -14
  269. package/src/runtime/actors/actor-execution-context.ts +2 -2
  270. package/src/runtime/actors/actor-handoff.ts +86 -51
  271. package/src/runtime/actors/actor-join-deferred-scope.ts +6 -6
  272. package/src/runtime/actors/actor-local-native-join.ts +38 -17
  273. package/src/runtime/actors/actor-mailbox.ts +1 -1
  274. package/src/runtime/actors/actor-remote-joiner.ts +8 -4
  275. package/src/runtime/actors/actor-routed-join-transport.ts +13 -5
  276. package/src/runtime/actors/actor-routed-json-request.ts +3 -0
  277. package/src/runtime/actors/actor-runtime-contracts.ts +4 -2
  278. package/src/runtime/actors/actor-runtime-state.ts +1 -1
  279. package/src/runtime/actors/spot-actor-dispatch.ts +70 -68
  280. package/src/runtime/admission.ts +42 -15
  281. package/src/runtime/application-jobs/application-ingress-record-owner.ts +4 -0
  282. package/src/runtime/backend/contracts/index.ts +77 -10
  283. package/src/runtime/backend/mesh-completion-table.ts +106 -15
  284. package/src/runtime/backend/mesh-dispatch-pump.ts +294 -146
  285. package/src/runtime/backend/node/node-backend-adapter-support.ts +42 -32
  286. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +91 -34
  287. package/src/runtime/backend/node/node-event-loop-poller.ts +14 -5
  288. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +5 -1
  289. package/src/runtime/backend/node/node-raw-binding-port.ts +180 -69
  290. package/src/runtime/backend/node/node-raw-mesh-backend.ts +386 -157
  291. package/src/runtime/backend/node/node-socket-backend-adapter.ts +56 -11
  292. package/src/runtime/backend/raw-binding-port.ts +13 -5
  293. package/src/runtime/channels/channel-clients.ts +26 -11
  294. package/src/runtime/channels/channel-dispatch-pipeline.ts +77 -65
  295. package/src/runtime/channels/channel-dispatch-services.ts +7 -12
  296. package/src/runtime/channels/channel-dispatchers.ts +93 -39
  297. package/src/runtime/channels/channel-envelope.ts +680 -144
  298. package/src/runtime/channels/channel-multipart.ts +17 -13
  299. package/src/runtime/channels/channel-outbound-operations.ts +204 -178
  300. package/src/runtime/channels/channel-receive-loops.ts +160 -107
  301. package/src/runtime/channels/channel-runtime-lifecycle.ts +64 -59
  302. package/src/runtime/channels/channel-runtime-manager.ts +74 -27
  303. package/src/runtime/channels/channel-socket-registry.ts +20 -5
  304. package/src/runtime/channels/channel-transports.ts +414 -287
  305. package/src/runtime/channels/dispatch-error-reporter.ts +4 -9
  306. package/src/runtime/channels/local-spot-route-transport.ts +27 -29
  307. package/src/runtime/channels/router-socket-spot-route-transport.ts +63 -32
  308. package/src/runtime/channels/source-spot-router.ts +75 -38
  309. package/src/runtime/channels/spot-node-route-transport.ts +67 -37
  310. package/src/runtime/channels/spot-route-bridge-transport.ts +62 -30
  311. package/src/runtime/channels/spot-route-dispatch-strategy.ts +105 -34
  312. package/src/runtime/diagnostics/dispatch-error-details.ts +10 -2
  313. package/src/runtime/diagnostics/message-flow-bootstrap.ts +6 -0
  314. package/src/runtime/diagnostics/message-flow-delivery.ts +171 -0
  315. package/src/runtime/diagnostics/message-flow-record.ts +295 -0
  316. package/src/runtime/diagnostics/message-flow-worker.ts +146 -0
  317. package/src/runtime/diagnostics/message-flow.ts +49 -362
  318. package/src/runtime/diagnostics/runtime-metrics.ts +10 -4
  319. package/src/runtime/execution/index.ts +6 -0
  320. package/src/runtime/execution/serial-execution-queue.ts +94 -96
  321. package/src/runtime/foundation/durable-service-request.ts +212 -89
  322. package/src/runtime/foundation/operation-registry.ts +287 -38
  323. package/src/runtime/foundation/raw-service-mesh-runtime.ts +617 -292
  324. package/src/runtime/foundation/request-runtime.ts +227 -0
  325. package/src/runtime/foundation/service-discovery-registry.ts +7 -0
  326. package/src/runtime/foundation/service-liveness-registry.ts +1 -1
  327. package/src/runtime/foundation/service-mailbox.ts +7 -2
  328. package/src/runtime/foundation/service-relocation-object-owner.ts +21 -6
  329. package/src/runtime/foundation/service-runtime-contracts.ts +12 -2
  330. package/src/runtime/foundation/service-stateful-registry.ts +52 -19
  331. package/src/runtime/foundation/service-stateful-runtime.ts +365 -198
  332. package/src/runtime/foundation/service-stateful-wire-codec.ts +18 -0
  333. package/src/runtime/foundation/service-topology-registry.ts +21 -3
  334. package/src/runtime/foundation/service-wire-constants.generated.ts +10 -0
  335. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -17
  336. package/src/runtime/host/actor-packet-relay.ts +160 -156
  337. package/src/runtime/host/actor-placement-coordinator.ts +1 -1
  338. package/src/runtime/host/actor-runtime-options-factory.ts +7 -2
  339. package/src/runtime/host/actor-transfer-runtime.ts +3 -3
  340. package/src/runtime/host/application-job-queue.ts +56 -27
  341. package/src/runtime/host/bound-session-relay.ts +0 -1
  342. package/src/runtime/host/channel-runtime-options-factory.ts +3 -0
  343. package/src/runtime/host/entry-actor-runtime.ts +14 -6
  344. package/src/runtime/host/index.ts +388 -113
  345. package/src/runtime/host/location-runtime-owner.ts +3 -3
  346. package/src/runtime/host/service-relocation-host-runtime.ts +380 -252
  347. package/src/runtime/host/spot-address-transport.ts +110 -95
  348. package/src/runtime/host/spot-runtime-options-factory.ts +3 -0
  349. package/src/runtime/host/user-spot-creation-coordinator.ts +69 -22
  350. package/src/runtime/internal-observation.ts +2 -0
  351. package/src/runtime/locations/actor-location-claims.ts +42 -16
  352. package/src/runtime/locations/auto-connect-loop.ts +24 -16
  353. package/src/runtime/locations/auto-connect-planner.ts +2 -5
  354. package/src/runtime/locations/auto-connect-reconciler.ts +37 -24
  355. package/src/runtime/locations/in-memory-authority-store.ts +27 -7
  356. package/src/runtime/locations/in-memory-location-store.ts +1 -74
  357. package/src/runtime/locations/lifecycle.ts +4 -2
  358. package/src/runtime/locations/location-store-repository.ts +228 -308
  359. package/src/runtime/locations/resolvers.ts +20 -8
  360. package/src/runtime/locations/runtime.ts +16 -28
  361. package/src/runtime/messaging/creation-payload-codec.ts +12 -10
  362. package/src/runtime/messaging/framework-json-v1.ts +10 -1
  363. package/src/runtime/messaging/payload-codec.ts +50 -75
  364. package/src/runtime/messaging/request-deadline.ts +47 -39
  365. package/src/runtime/messaging/request-result.ts +88 -17
  366. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  367. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  368. package/src/runtime/spots/index.ts +57 -10
  369. package/src/runtime/spots/spot-activation-registry.ts +12 -8
  370. package/src/runtime/spots/spot-activation-state.ts +2 -0
  371. package/src/runtime/spots/spot-actor-admission-coordinator.ts +62 -37
  372. package/src/runtime/spots/spot-actor-ingress-admission.ts +157 -0
  373. package/src/runtime/spots/spot-actor-membership.ts +8 -5
  374. package/src/runtime/spots/spot-actor-packet-dispatch.ts +122 -206
  375. package/src/runtime/spots/spot-actor-packet-drain.ts +21 -6
  376. package/src/runtime/spots/spot-entry-activation.ts +25 -35
  377. package/src/runtime/spots/spot-handler-registry.ts +72 -15
  378. package/src/runtime/spots/spot-manager-public.ts +4 -2
  379. package/src/runtime/spots/spot-node-runtime-manager.ts +16 -7
  380. package/src/runtime/spots/spot-outbound.ts +26 -10
  381. package/src/runtime/spots/spot-route-packet-dispatch.ts +18 -8
  382. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +14 -8
  383. package/src/runtime/spots/spot-runtime-ports.ts +5 -2
  384. package/src/runtime/spots/spot-serial-executor.ts +1 -1
  385. package/src/runtime/spots/spot-serial-turn-executor.ts +25 -40
  386. package/src/runtime/spots/spot-subscription-dispatch.ts +9 -2
  387. package/src/runtime/spots/spot-timer.ts +1 -1
  388. package/src/runtime/streams/actor-session-binding-registry.ts +46 -3
  389. package/src/runtime/streams/bound-actor-relay-sender.ts +16 -5
  390. package/src/runtime/streams/bound-session-service.ts +10 -7
  391. package/src/runtime/streams/index.ts +30 -4
  392. package/src/runtime/streams/managed-stream.ts +2 -1
  393. package/src/runtime/streams/session-calls.ts +9 -14
  394. package/src/runtime/streams/session-context.ts +6 -11
  395. package/src/runtime/streams/stream-session-runtime.ts +79 -40
  396. package/dist/runtime/spots/spot-lifecycle-metrics.d.ts +0 -8
  397. package/dist/runtime/spots/spot-lifecycle-metrics.js +0 -17
  398. package/src/runtime/spots/spot-lifecycle-metrics.ts +0 -16
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkRuntimeRouteTransport = void 0;
4
4
  exports.meshRequestFailure = meshRequestFailure;
5
+ const request_runtime_1 = require("../foundation/request-runtime");
6
+ const request_result_1 = require("../messaging/request-result");
5
7
  const contracts_1 = require("../../contracts");
6
8
  const Registration_1 = require("../../contracts/Configuration/Registration");
7
9
  const Spots_1 = require("../../contracts/Spots");
@@ -30,7 +32,8 @@ class ZLinkRuntimeRouteTransport {
30
32
  metrics;
31
33
  flowCreationEnabled;
32
34
  outboundFlow;
33
- constructor(manager, routeChannelPredicate = undefined, meshRuntime = undefined, codecs, manualNodeTarget, localNodeSubmit, metrics, flowCreationEnabled = () => true, outboundFlow = () => undefined) {
35
+ requests;
36
+ constructor(manager, routeChannelPredicate = undefined, meshRuntime = undefined, codecs, manualNodeTarget, localNodeSubmit, metrics, flowCreationEnabled = () => true, outboundFlow = () => undefined, requests = new request_runtime_1.RequestRuntime()) {
34
37
  this.manager = manager;
35
38
  this.routeChannelPredicate = routeChannelPredicate;
36
39
  this.meshRuntime = meshRuntime;
@@ -40,6 +43,7 @@ class ZLinkRuntimeRouteTransport {
40
43
  this.metrics = metrics;
41
44
  this.flowCreationEnabled = flowCreationEnabled;
42
45
  this.outboundFlow = outboundFlow;
46
+ this.requests = requests;
43
47
  }
44
48
  canRouteChannel(routerChannelId) {
45
49
  const manager = this.manager();
@@ -95,45 +99,57 @@ class ZLinkRuntimeRouteTransport {
95
99
  throw mapMeshSubmissionError(error, `MeshNode '${meshName}' send to node '${targetNodeRid}'`);
96
100
  }
97
101
  }
98
- request(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata, onAdmitted) {
102
+ request(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata, onAdmitted, requestOperation) {
99
103
  if (!this.flowCreationEnabled())
100
- return this.requestScoped(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata, onAdmitted);
101
- return (0, flow_context_1.runWithOutboundFlow)(true, () => this.requestScoped(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata, onAdmitted));
104
+ return this.requestScoped(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata, onAdmitted, requestOperation);
105
+ return (0, flow_context_1.runWithOutboundFlow)(true, () => this.requestScoped(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata, onAdmitted, requestOperation));
102
106
  }
103
- async requestScoped(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata, onAdmitted) {
107
+ requestScoped(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata, onAdmitted, existing) {
104
108
  const node = this.meshNode(meshName);
105
109
  if (node === undefined) {
106
- return this.requireManager().routeRequest(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata, onAdmitted);
110
+ return this.requests.prepare(timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, signal, (operation) => {
111
+ this.requireManager().routeRequest(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata, onAdmitted, operation);
112
+ }, (value) => value, request_result_1.identityRequestReply, existing);
107
113
  }
108
114
  const correlationId = (0, channel_envelope_1.newChannelCorrelationId)();
109
- try {
115
+ const result = this.requests.prepare(timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, signal, (requestOperation, receiver) => {
116
+ requestOperation.mapCaller((value) => {
117
+ this.traceNodeRequest(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.ReplyReceived, 'succeeded', meshName, targetNodeRid, packetName, correlationId);
118
+ return value;
119
+ }, (error) => {
120
+ if (!(0, channel_outbound_operations_1.isRemoteChannelErrorReply)(error))
121
+ this.traceNodeRequest(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.ReplyReceived, (0, channel_outbound_operations_1.requestTerminalResult)(error, signal), meshName, targetNodeRid, packetName, correlationId, error);
122
+ throw error;
123
+ });
110
124
  (0, abort_1.throwIfAborted)(signal);
111
125
  if (node.isObjectClientNodeDirectTarget?.((0, routing_id_1.toBackendRoutingId)(targetNodeRid)) === true) {
112
126
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, `MeshNode '${meshName}' target '${targetNodeRid}' is an Object Client.`);
113
127
  }
114
- const parts = this.encodeMessage(1 /* ZLinkChannelMessageKind.Request */, meshName, packetName, request, timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, metadata, correlationId);
115
- const requestOptions = { flags: 1, onAdmitted, timeoutMs: requestTimeoutBudget(timeoutMs) };
116
- let completion;
128
+ let parts;
117
129
  try {
118
- completion = await this.completionTable(meshName).submit(() => {
119
- const operationId = node.requestToNode((0, routing_id_1.toBackendRoutingId)(targetNodeRid), parts, requestOptions);
120
- this.traceNodeRequest(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, undefined, meshName, targetNodeRid, packetName, correlationId);
121
- return operationId;
122
- }, signal);
130
+ parts = this.encodeMessage(1 /* ZLinkChannelMessageKind.Request */, meshName, packetName, request, timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, metadata, correlationId);
123
131
  }
124
132
  catch (error) {
125
- throw mapMeshSubmissionError(error, `MeshNode '${meshName}' request to node '${targetNodeRid}'`);
133
+ requestOperation.fail(error);
134
+ return;
126
135
  }
127
- const reply = this.decodeMeshReply(meshName, completion);
128
- this.traceNodeRequest(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.ReplyReceived, 'succeeded', meshName, targetNodeRid, packetName, correlationId);
129
- return reply;
130
- }
131
- catch (error) {
132
- if (!(0, channel_outbound_operations_1.isRemoteChannelErrorReply)(error)) {
133
- this.traceNodeRequest(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.ReplyReceived, (0, channel_outbound_operations_1.requestTerminalResult)(error, signal), meshName, targetNodeRid, packetName, correlationId, error);
136
+ try {
137
+ this.completionTable(meshName).submit((completion) => {
138
+ const operationId = node.requestToNode((0, routing_id_1.toBackendRoutingId)(targetNodeRid), parts, {
139
+ requestOperation,
140
+ flags: 1,
141
+ onAdmitted,
142
+ timeoutMs: requestTimeoutBudget(timeoutMs)
143
+ }, completion);
144
+ this.traceNodeRequest(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, undefined, meshName, targetNodeRid, packetName, correlationId);
145
+ return operationId;
146
+ }, signal, requestOperation, receiver);
134
147
  }
135
- throw error;
136
- }
148
+ finally {
149
+ parts = undefined;
150
+ }
151
+ }, (raw) => this.decodeMeshReply(meshName, raw), (error) => mapMeshSubmissionError(error, `MeshNode '${meshName}' request to '${targetNodeRid}'`), existing);
152
+ return result;
137
153
  }
138
154
  traceNodeRequest(outcome, result, meshName, targetRid, packetName, correlationId, error) {
139
155
  if (!this.flowCreationEnabled())
@@ -168,37 +184,49 @@ class ZLinkRuntimeRouteTransport {
168
184
  throw mapMeshSubmissionError(error, operation);
169
185
  }
170
186
  }
171
- requestToChannel(meshName, channelName, packetName, request, timeoutMs, signal, metadata, onAdmitted) {
187
+ requestToChannel(meshName, channelName, packetName, request, timeoutMs, signal, metadata, onAdmitted, requestOperation) {
172
188
  if (!this.flowCreationEnabled())
173
- return this.requestToChannelScoped(meshName, channelName, packetName, request, timeoutMs, signal, metadata, onAdmitted);
174
- return (0, flow_context_1.runWithOutboundFlow)(true, () => this.requestToChannelScoped(meshName, channelName, packetName, request, timeoutMs, signal, metadata, onAdmitted));
175
- }
176
- async requestToChannelScoped(meshName, channelName, packetName, request, timeoutMs, signal, metadata, onAdmitted) {
177
- (0, abort_1.throwIfAborted)(signal);
178
- const node = this.requireMeshNode(meshName);
179
- const parts = this.encodeMessage(1 /* ZLinkChannelMessageKind.Request */, channelName, packetName, request, timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, metadata);
180
- const metric = this.metrics?.startRequest(meshName, 'channel');
181
- try {
182
- const requestOptions = { flags: 1, timeoutMs: requestTimeoutBudget(timeoutMs), onAdmitted };
183
- let completion;
189
+ return this.requestToChannelScoped(meshName, channelName, packetName, request, timeoutMs, signal, metadata, onAdmitted, requestOperation);
190
+ return (0, flow_context_1.runWithOutboundFlow)(true, () => this.requestToChannelScoped(meshName, channelName, packetName, request, timeoutMs, signal, metadata, onAdmitted, requestOperation));
191
+ }
192
+ requestToChannelScoped(meshName, channelName, packetName, request, timeoutMs, signal, metadata, onAdmitted, existing) {
193
+ let metric;
194
+ const result = this.requests.prepare(timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, signal, (requestOperation, receiver) => {
195
+ requestOperation.mapCaller((value) => {
196
+ metric?.complete('completed');
197
+ return value;
198
+ }, (error) => {
199
+ metric?.complete(requestMetricOutcome(error, signal));
200
+ if (error instanceof contracts_1.ZLinkFrameworkException &&
201
+ (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) ===
202
+ framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound)
203
+ this.metrics?.recordChannelSelectionFailure(meshName, channelName, 'no_ready_target');
204
+ throw error;
205
+ });
206
+ (0, abort_1.throwIfAborted)(signal);
207
+ const node = this.requireMeshNode(meshName);
208
+ let parts;
184
209
  try {
185
- completion = await this.completionTable(meshName).submit(() => node.requestToChannel(channelName, parts, requestOptions), signal);
210
+ parts = this.encodeMessage(1 /* ZLinkChannelMessageKind.Request */, channelName, packetName, request, timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, metadata);
186
211
  }
187
212
  catch (error) {
188
- throw mapMeshSubmissionError(error, `MeshNode '${meshName}' request to channel '${channelName}'`);
213
+ requestOperation.fail(error);
214
+ return;
189
215
  }
190
- const reply = this.decodeMeshReply(meshName, completion);
191
- metric?.complete('completed');
192
- return reply;
193
- }
194
- catch (error) {
195
- metric?.complete(requestMetricOutcome(error, signal));
196
- if (error instanceof contracts_1.ZLinkFrameworkException &&
197
- (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound) {
198
- this.metrics?.recordChannelSelectionFailure(meshName, channelName, 'no_ready_target');
216
+ metric = this.metrics?.startRequest(meshName, 'channel');
217
+ try {
218
+ this.completionTable(meshName).submit((completion) => node.requestToChannel(channelName, parts, {
219
+ requestOperation,
220
+ flags: 1,
221
+ timeoutMs: requestTimeoutBudget(timeoutMs),
222
+ onAdmitted
223
+ }, completion), signal, requestOperation, receiver);
199
224
  }
200
- throw error;
201
- }
225
+ finally {
226
+ parts = undefined;
227
+ }
228
+ }, (raw) => this.decodeMeshReply(meshName, raw), (error) => mapMeshSubmissionError(error, `MeshNode '${meshName}' channel '${channelName}' request`), existing);
229
+ return result;
202
230
  }
203
231
  sendToSpot(spotRouteTarget, message, options) {
204
232
  return (0, flow_context_1.runWithOutboundFlow)(this.flowCreationEnabled(), () => this.sendToSpotScoped(spotRouteTarget, message, options));
@@ -234,44 +262,46 @@ class ZLinkRuntimeRouteTransport {
234
262
  await this.requireManager().routeSendFromSpotToSpot(sourceSpot, spotRouteTarget, options.packetName, message, options.metadata);
235
263
  return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
236
264
  }
237
- requestToSpot(spotRouteTarget, request, options) {
238
- return (0, flow_context_1.runWithOutboundFlow)(this.flowCreationEnabled(), () => this.requestToSpotScoped(spotRouteTarget, request, options));
265
+ requestToSpot(spotRouteTarget, request, options, destination) {
266
+ return (0, flow_context_1.runWithOutboundFlow)(this.flowCreationEnabled(), () => this.requestToSpotScoped(spotRouteTarget, request, options, destination));
239
267
  }
240
- async requestToSpotScoped(spotRouteTarget, request, options) {
268
+ requestToSpotScoped(spotRouteTarget, request, options, destination) {
241
269
  const meshName = spotRouteTarget.routerChannelId;
242
270
  const node = this.meshNode(meshName);
243
271
  if (node === undefined) {
244
- if (spotRouteTarget.spotKind === Spots_1.ZLinkSpotKind.Instance) {
272
+ if (spotRouteTarget.spotKind === Spots_1.ZLinkSpotKind.Instance)
245
273
  throw new configuration_1.ZLinkConfigurationException('Instance Spot routes require the MeshNode command 39 transport.');
246
- }
247
- return this.requireManager().routeRequestToSpot(spotRouteTarget, options.packetName, request, options.timeoutMs, options.signal, options.metadata, options.onAdmitted);
248
- }
249
- (0, abort_1.throwIfAborted)(options.signal);
250
- let completionPromise;
251
- try {
252
- const encoded = this.encodeMessage(1 /* ZLinkChannelMessageKind.Request */, meshName, options.packetName, request, options.timeoutMs, options.metadata);
253
- completionPromise = this.completionTable(meshName).submit(() => spotRouteTarget.spotKind === Spots_1.ZLinkSpotKind.Instance
254
- ? node.requestInstanceSpot(instanceSpotRouteFence(spotRouteTarget), encoded, options.timeoutMs, undefined, options.metadata, options.instanceSpot, options.onAdmitted)
255
- : node
256
- .entrySpot()
257
- .requestToSpot((0, routing_id_1.toBackendRoutingId)(spotRouteTarget.targetNodeRid), (0, routing_id_1.toBackendRoutingId)(spotRouteTarget.spotId), spotRouteTarget.targetSpotGeneration ?? 0n, encoded, {
258
- flags: 1,
259
- onAdmitted: options.onAdmitted,
260
- timeoutMs: options.timeoutMs,
261
- routeFence: directSpotRouteFence(spotRouteTarget),
262
- entrySpot: spotRouteTarget.spotKind === Spots_1.ZLinkSpotKind.Entry
263
- }), options.signal);
264
- }
265
- catch (error) {
266
- throw mapMeshSubmissionError(error, `MeshNode '${meshName}' request to Spot '${spotRouteTarget.spotId}'`);
274
+ return this.requests.prepare(options.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, options.signal, (operation, receiver) => {
275
+ this.requireManager().routeRequestToSpot(spotRouteTarget, options.packetName, request, options.timeoutMs, options.signal, options.metadata, options.onAdmitted, operation, receiver);
276
+ }, (value) => value, request_result_1.identityRequestReply, options.requestOperation, destination);
267
277
  }
268
- return this.waitForMeshReply(meshName, completionPromise);
278
+ return this.requests.prepare(options.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, options.signal, (requestOperation, receiver) => {
279
+ try {
280
+ (0, abort_1.throwIfAborted)(options.signal);
281
+ const encoded = this.encodeMessage(1 /* ZLinkChannelMessageKind.Request */, meshName, options.packetName, request, options.timeoutMs, options.metadata);
282
+ this.completionTable(meshName).submit((completion) => spotRouteTarget.spotKind === Spots_1.ZLinkSpotKind.Instance
283
+ ? node.requestInstanceSpot(instanceSpotRouteFence(spotRouteTarget), encoded, options.timeoutMs, undefined, options.metadata, options.instanceSpot, options.onAdmitted, requestOperation, completion)
284
+ : node.entrySpot().requestToSpot((0, routing_id_1.toBackendRoutingId)(spotRouteTarget.targetNodeRid), (0, routing_id_1.toBackendRoutingId)(spotRouteTarget.spotId), spotRouteTarget.targetSpotGeneration ?? 0n, encoded, {
285
+ flags: 1,
286
+ onAdmitted: options.onAdmitted,
287
+ timeoutMs: options.timeoutMs,
288
+ requestOperation,
289
+ routeFence: directSpotRouteFence(spotRouteTarget),
290
+ entrySpot: spotRouteTarget.spotKind === Spots_1.ZLinkSpotKind.Entry
291
+ }, completion), options.signal, requestOperation, receiver);
292
+ }
293
+ catch (error) {
294
+ receiver.operationFailed(requestOperation.id, error, undefined);
295
+ }
296
+ }, (raw) => this.decodeMeshReply(meshName, raw), (error) => mapMeshSubmissionError(error, `MeshNode '${meshName}' request to Spot '${spotRouteTarget.spotId}'`), options.requestOperation, destination);
269
297
  }
270
- async requestFromSpotToSpot(sourceSpot, spotRouteTarget, request, options) {
271
- return this.requireManager().routeRequestFromSpotToSpot(sourceSpot, spotRouteTarget, options.packetName, request, options.timeoutMs, options.signal, options.onAdmitted);
298
+ requestFromSpotToSpot(sourceSpot, spotRouteTarget, request, options, destination) {
299
+ return this.requests.prepare(options.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, options.signal, (operation, receiver) => {
300
+ this.requireManager().routeRequestFromSpotToSpot(sourceSpot, spotRouteTarget, options.packetName, request, options.timeoutMs, options.signal, options.onAdmitted, operation, receiver);
301
+ }, (value) => value, request_result_1.identityRequestReply, options.requestOperation, destination);
272
302
  }
273
303
  async requestRawFromSpotToSpot(sourceSpot, spotRouteTarget, request, options) {
274
- return this.requireManager().routeRequestRawFromSpotToSpot(sourceSpot, spotRouteTarget, request, options.timeoutMs, options.signal, options.onAdmitted);
304
+ return this.requireManager().routeRequestRawFromSpotToSpot(sourceSpot, spotRouteTarget, request, options.timeoutMs, options.signal, options.onAdmitted, options.requestOperation);
275
305
  }
276
306
  requestRawToSpot(spotRouteTarget, request, options) {
277
307
  return (0, flow_context_1.runWithOutboundFlow)(this.flowCreationEnabled(), () => this.requestRawToSpotScoped(spotRouteTarget, request, options));
@@ -279,44 +309,29 @@ class ZLinkRuntimeRouteTransport {
279
309
  async requestRawToSpotScoped(spotRouteTarget, request, options) {
280
310
  const meshName = spotRouteTarget.routerChannelId;
281
311
  const node = this.meshNode(meshName);
282
- if (node !== undefined) {
312
+ if (node === undefined)
313
+ return this.requireManager().routeRequestRawToSpot(spotRouteTarget, request, options.timeoutMs, options.signal, options.onAdmitted, options.requestOperation);
314
+ const operation = this.requests.begin(options.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, options.signal, options.requestOperation);
315
+ return this.requests.run(operation, (receiver) => {
283
316
  (0, abort_1.throwIfAborted)(options.signal);
284
317
  const payload = JSON.parse(request.getString('utf8'));
285
318
  const packetName = typeof payload.packetName === 'string' ? payload.packetName : undefined;
286
319
  const parts = this.encodeMessage(1 /* ZLinkChannelMessageKind.Request */, meshName, packetName, payload, options.timeoutMs);
287
- let completionPromise;
288
- try {
289
- completionPromise = this.completionTable(meshName).submit(() => node
290
- .entrySpot()
291
- .requestToSpot((0, routing_id_1.toBackendRoutingId)(spotRouteTarget.targetNodeRid), (0, routing_id_1.toBackendRoutingId)(spotRouteTarget.spotId), spotRouteTarget.targetSpotGeneration ?? 0n, parts, {
292
- flags: 1,
293
- onAdmitted: options.onAdmitted,
294
- timeoutMs: options.timeoutMs,
295
- routeFence: directSpotRouteFence(spotRouteTarget),
296
- entrySpot: spotRouteTarget.spotKind === Spots_1.ZLinkSpotKind.Entry
297
- }), options.signal);
298
- }
299
- catch (error) {
300
- throw mapMeshSubmissionError(error, `MeshNode '${meshName}' raw request to Spot '${spotRouteTarget.spotId}'`);
301
- }
302
- const completion = await completionPromise;
303
- if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
304
- try {
305
- throw meshRequestFailure(meshName, completion.terminalResult, completion.failureErrno);
306
- }
307
- finally {
308
- (0, mesh_completion_table_1.closeMeshCompletion)(completion);
309
- }
310
- }
311
- try {
312
- const reply = (0, channel_envelope_1.decodeChannelReply)(completion.parts, this.codecs);
313
- return [runtime_message_1.ZLinkBufferMessage.fromOwned(Buffer.from(JSON.stringify(reply)))];
314
- }
315
- finally {
316
- (0, mesh_completion_table_1.closeMeshCompletion)(completion);
317
- }
318
- }
319
- return this.requireManager().routeRequestRawToSpot(spotRouteTarget, request, options.timeoutMs, options.signal, options.onAdmitted);
320
+ this.completionTable(meshName).submit((completion) => node.entrySpot().requestToSpot((0, routing_id_1.toBackendRoutingId)(spotRouteTarget.targetNodeRid), (0, routing_id_1.toBackendRoutingId)(spotRouteTarget.spotId), spotRouteTarget.targetSpotGeneration ?? 0n, parts, {
321
+ flags: 1,
322
+ onAdmitted: options.onAdmitted,
323
+ timeoutMs: options.timeoutMs,
324
+ requestOperation: operation,
325
+ routeFence: directSpotRouteFence(spotRouteTarget),
326
+ entrySpot: spotRouteTarget.spotKind === Spots_1.ZLinkSpotKind.Entry
327
+ }, completion), options.signal, operation, receiver);
328
+ }, (raw) => {
329
+ const reply = this.decodeMeshReply(meshName, raw);
330
+ const parts = [runtime_message_1.ZLinkBufferMessage.fromOwned(Buffer.from(JSON.stringify(reply)))];
331
+ if (!operation.isPending())
332
+ (0, channel_envelope_1.closeMessages)(parts);
333
+ return parts;
334
+ }, (error) => mapMeshSubmissionError(error, `MeshNode '${meshName}' raw request to Spot '${spotRouteTarget.spotId}'`));
320
335
  }
321
336
  requireManager() {
322
337
  const manager = this.manager();
@@ -326,7 +341,10 @@ class ZLinkRuntimeRouteTransport {
326
341
  return manager;
327
342
  }
328
343
  meshNode(meshName) {
329
- return this.meshRuntime?.()?.meshNode?.(meshName);
344
+ const runtime = this.meshRuntime?.();
345
+ if (runtime === undefined)
346
+ this.requireManager();
347
+ return runtime?.meshNode?.(meshName);
330
348
  }
331
349
  isKnownBackendPeer(node, targetNodeRid) {
332
350
  return node
@@ -357,10 +375,6 @@ class ZLinkRuntimeRouteTransport {
357
375
  encodeMessage(kind, channelName, packetName, message, timeoutMs, metadata, correlationId) {
358
376
  return (0, channel_envelope_1.encodeChannelEnvelopeParts)(kind, channelName, packetName, message, timeoutMs, undefined, this.codecs, correlationId, this.flowCreationEnabled(), metadata);
359
377
  }
360
- async waitForMeshReply(meshName, completionPromise) {
361
- const completion = await completionPromise;
362
- return this.decodeMeshReply(meshName, completion);
363
- }
364
378
  decodeMeshReply(meshName, completion) {
365
379
  try {
366
380
  if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
@@ -452,7 +466,13 @@ function mapMeshSubmissionError(error, operation) {
452
466
  }
453
467
  return new contracts_1.ZLinkFrameworkException((0, framework_errors_internal_1.requestResultToPublicErrorKind)(terminal), `${operation} failed with result ${error.result}.`, error);
454
468
  }
455
- return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `${operation} failed before native submission completed: ${error instanceof Error ? error.message : String(error)}`, true, error);
469
+ if ((0, abort_1.isAbortError)(error) ||
470
+ error instanceof configuration_1.ZLinkConfigurationException ||
471
+ error instanceof TypeError ||
472
+ error instanceof RangeError) {
473
+ return error;
474
+ }
475
+ return new contracts_1.ZLinkFrameworkException(contracts_1.ZLinkFrameworkErrorKind.InternalFailure, `${operation} failed.`, error);
456
476
  }
457
477
  function meshRequestFailure(meshName, result, nativeErrno) {
458
478
  const canonical = (0, framework_errors_internal_1.isCanonicalWireReplyTerminal)(result, nativeErrno);
@@ -1,6 +1,6 @@
1
1
  import { type ZLinkDispatchFailure } from '../../contracts/Dispatch/ZLinkDispatchOptions';
2
- import { type ZLinkRuntimeMetrics, ZLinkMessageFlowTracer, type ZLinkDiagnosticsContext } from '../diagnostics';
3
- import type { ZLinkDispatchErrorSink } from '../diagnostics/dispatch-error-port';
2
+ import { ZLinkMessageFlowTracer, type ZLinkDiagnosticsContext } from '../diagnostics/message-flow';
3
+ import { type ZLinkRuntimeMetrics } from '../diagnostics/runtime-metrics';
4
4
  export type { ZLinkDispatchErrorSink } from '../diagnostics/dispatch-error-port';
5
5
  type ZLinkRuntimeDispatchFailure = ZLinkDispatchFailure & {
6
6
  readonly error?: unknown;
@@ -12,10 +12,10 @@ export declare class ZLinkDispatchErrorReporter {
12
12
  /**
13
13
  * Success-path tracer companion: every surface already receives a reporter, so
14
14
  * exposing the flow tracer here wires all dispatch sites without threading a new
15
- * parameter. Shares the same diagnostics context (live mode) and error sink.
15
+ * parameter. Shares the diagnostics context and host submission lease.
16
16
  */
17
17
  readonly flow: ZLinkMessageFlowTracer;
18
- constructor(_observerType: undefined, _providerResolver: unknown, errorSink: ZLinkDispatchErrorSink, ctx?: ZLinkDiagnosticsContext, metrics?: ZLinkRuntimeMetrics | undefined);
18
+ constructor(ctx?: ZLinkDiagnosticsContext, metrics?: ZLinkRuntimeMetrics | undefined);
19
19
  report(event: ZLinkRuntimeDispatchFailure): void;
20
20
  captureEnabled(): boolean;
21
21
  get reportedCount(): number;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkDispatchErrorReporter = void 0;
4
4
  const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
5
- const diagnostics_1 = require("../diagnostics");
5
+ const message_flow_1 = require("../diagnostics/message-flow");
6
6
  const dispatch_error_details_1 = require("../diagnostics/dispatch-error-details");
7
7
  const runtime_metrics_1 = require("../diagnostics/runtime-metrics");
8
8
  class ZLinkDispatchErrorReporter {
@@ -11,17 +11,17 @@ class ZLinkDispatchErrorReporter {
11
11
  /**
12
12
  * Success-path tracer companion: every surface already receives a reporter, so
13
13
  * exposing the flow tracer here wires all dispatch sites without threading a new
14
- * parameter. Shares the same diagnostics context (live mode) and error sink.
14
+ * parameter. Shares the diagnostics context and host submission lease.
15
15
  */
16
16
  flow;
17
- constructor(_observerType, _providerResolver, errorSink, ctx, metrics) {
17
+ constructor(ctx, metrics) {
18
18
  this.metrics = metrics;
19
19
  const flowCtx = ctx ?? {
20
- diagnostics: diagnostics_1.DEFAULT_ZLINK_DIAGNOSTICS,
20
+ diagnostics: message_flow_1.DEFAULT_ZLINK_DIAGNOSTICS,
21
21
  liveMode: { mode: 'errors' },
22
22
  sourceMeshGeneration: 0n
23
23
  };
24
- this.flow = new diagnostics_1.ZLinkMessageFlowTracer(flowCtx, errorSink);
24
+ this.flow = new message_flow_1.ZLinkMessageFlowTracer(flowCtx);
25
25
  }
26
26
  report(event) {
27
27
  const normalized = normalizeDispatchFailure(event);
@@ -30,7 +30,7 @@ export declare class ZLinkFanoutLocationRuntime {
30
30
  lifecycleGeneration: bigint;
31
31
  descriptorRevision: bigint;
32
32
  advertisedEndpoint: string;
33
- state: "error" | "preparing" | "serving" | "stopped" | "retiring";
33
+ state: "error" | "preparing" | "serving" | "retiring" | "stopped";
34
34
  }[] | undefined;
35
35
  private isAutomaticSubscriber;
36
36
  reclaimOwnerRows(signal?: AbortSignal): Promise<void>;
@@ -1,9 +1,12 @@
1
+ import { RequestRuntime } from '../foundation/request-runtime';
2
+ import type { PendingOperation, OperationObserver } from '../foundation/operation-registry';
1
3
  import type { RoutingId } from '../../contracts';
2
4
  import type { ZLinkLocalSpotRouteDispatcher } from './spot-route-dispatch-strategy';
3
5
  export declare class ZLinkLocalSpotRouteTransport {
4
6
  private readonly dispatcher;
5
7
  private readonly defaultRequestTimeoutMs;
6
- constructor(dispatcher: ZLinkLocalSpotRouteDispatcher | undefined, defaultRequestTimeoutMs: number | undefined);
8
+ private readonly requests;
9
+ constructor(dispatcher: ZLinkLocalSpotRouteDispatcher | undefined, defaultRequestTimeoutMs: number | undefined, requests?: RequestRuntime);
7
10
  send(routerChannelId: string, spotId: RoutingId, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<void>;
8
- request<TReply>(routerChannelId: string, spotId: RoutingId, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<TReply>;
11
+ request<TReply>(routerChannelId: string, spotId: RoutingId, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void, existing?: PendingOperation<unknown>, destination?: OperationObserver<unknown, unknown>): Promise<TReply>;
9
12
  }
@@ -1,13 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkLocalSpotRouteTransport = void 0;
4
+ const request_runtime_1 = require("../foundation/request-runtime");
4
5
  const configuration_1 = require("../configuration");
5
6
  class ZLinkLocalSpotRouteTransport {
6
7
  dispatcher;
7
8
  defaultRequestTimeoutMs;
8
- constructor(dispatcher, defaultRequestTimeoutMs) {
9
+ requests;
10
+ constructor(dispatcher, defaultRequestTimeoutMs, requests = new request_runtime_1.RequestRuntime()) {
9
11
  this.dispatcher = dispatcher;
10
12
  this.defaultRequestTimeoutMs = defaultRequestTimeoutMs;
13
+ this.requests = requests;
11
14
  }
12
15
  async send(routerChannelId, spotId, packetName, message, metadata) {
13
16
  if (this.dispatcher === undefined) {
@@ -18,28 +21,22 @@ class ZLinkLocalSpotRouteTransport {
18
21
  metadata
19
22
  });
20
23
  }
21
- request(routerChannelId, spotId, packetName, request, timeoutMs, signal, onAdmitted) {
24
+ request(routerChannelId, spotId, packetName, request, timeoutMs, signal, onAdmitted, existing, destination) {
22
25
  if (this.dispatcher === undefined) {
23
26
  throw new configuration_1.ZLinkConfigurationException(`Route channel '${routerChannelId}' could not dispatch local SPOT request.`);
24
27
  }
25
- const pending = this.dispatcher.request(spotId, packetName, request, {
26
- channelName: routerChannelId,
27
- onAdmitted,
28
- signal
29
- });
30
28
  const effectiveTimeoutMs = timeoutMs ?? this.defaultRequestTimeoutMs;
31
- if (effectiveTimeoutMs === undefined)
32
- return pending;
33
- return new Promise((resolve, reject) => {
34
- const timeout = setTimeout(() => reject(new configuration_1.ZLinkConfigurationException(`Route channel '${routerChannelId}' local SPOT request timed out.`)), effectiveTimeoutMs);
35
- pending.then((value) => {
36
- clearTimeout(timeout);
37
- resolve(value);
38
- }, (error) => {
39
- clearTimeout(timeout);
40
- reject(error);
29
+ const dispatcher = this.dispatcher;
30
+ const operation = this.requests.begin(effectiveTimeoutMs, signal, existing);
31
+ return this.requests.run(operation, (receiver) => {
32
+ const work = dispatcher.request(spotId, packetName, request, {
33
+ channelName: routerChannelId,
34
+ onAdmitted,
35
+ signal,
36
+ requestOperation: operation
41
37
  });
42
- });
38
+ void work.then((value) => receiver.operationCompleted(operation.id, value, undefined), (error) => receiver.operationFailed(operation.id, error, undefined));
39
+ }, (value) => value, (error) => error, destination);
43
40
  }
44
41
  }
45
42
  exports.ZLinkLocalSpotRouteTransport = ZLinkLocalSpotRouteTransport;
@@ -1,3 +1,5 @@
1
+ import { RequestRuntime } from '../foundation/request-runtime';
2
+ import type { PendingOperation, OperationObserver } from '../foundation/operation-registry';
1
3
  import type { Message } from '../../contracts/Common/Message';
2
4
  import type { ZLinkBackendSendFlags } from '../backend/contracts';
3
5
  import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
@@ -5,8 +7,9 @@ import { type ZLinkChannelEnvelopeCodecRegistry } from './channel-envelope';
5
7
  import type { ZLinkChannelSocketRegistry } from './channel-socket-registry';
6
8
  export declare class ZLinkRouterSocketSpotRouteTransport {
7
9
  private readonly sockets;
8
- constructor(sockets: ZLinkChannelSocketRegistry);
10
+ private readonly requests;
11
+ constructor(sockets: ZLinkChannelSocketRegistry, requests?: RequestRuntime);
9
12
  send(target: ZLinkSpotRouteTarget, parts: readonly Message[], flags: ZLinkBackendSendFlags): Promise<void>;
10
- request<TReply>(target: ZLinkSpotRouteTarget, parts: readonly Message[], codecs: ZLinkChannelEnvelopeCodecRegistry | undefined, flags: ZLinkBackendSendFlags, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<TReply>;
11
- requestRaw(target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<readonly Message[]>;
13
+ request<TReply>(target: ZLinkSpotRouteTarget, parts: readonly Message[], codecs: ZLinkChannelEnvelopeCodecRegistry | undefined, flags: ZLinkBackendSendFlags, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void, existing?: PendingOperation<unknown>, destination?: OperationObserver<unknown, unknown>): Promise<TReply>;
14
+ requestRaw(target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void, existing?: PendingOperation<unknown>): Promise<readonly Message[]>;
12
15
  }
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkRouterSocketSpotRouteTransport = void 0;
4
- const abort_1 = require("../abort");
4
+ const request_runtime_1 = require("../foundation/request-runtime");
5
5
  const channel_envelope_1 = require("./channel-envelope");
6
6
  class ZLinkRouterSocketSpotRouteTransport {
7
7
  sockets;
8
- constructor(sockets) {
8
+ requests;
9
+ constructor(sockets, requests = new request_runtime_1.RequestRuntime()) {
9
10
  this.sockets = sockets;
11
+ this.requests = requests;
10
12
  }
11
13
  async send(target, parts, flags) {
12
14
  const router = this.sockets.routeRouter(target.routerChannelId);
@@ -17,27 +19,39 @@ class ZLinkRouterSocketSpotRouteTransport {
17
19
  (0, channel_envelope_1.closeMessages)(parts);
18
20
  }
19
21
  }
20
- async request(target, parts, codecs, flags, timeoutMs, signal, onAdmitted) {
21
- const router = this.sockets.routeRouter(target.routerChannelId);
22
- void flags;
23
- const operation = router.requestToSpot(target.targetNodeRid, target.spotId, parts, timeoutMs, onAdmitted);
24
- const replyParts = await (0, abort_1.awaitWithAbort)(operation, signal, () => {
25
- void operation.then(channel_envelope_1.closeMessages, () => undefined);
26
- });
22
+ request(target, parts, codecs, flags, timeoutMs, signal, onAdmitted, existing, destination) {
27
23
  try {
28
- return (0, channel_envelope_1.decodeChannelReply)(replyParts, codecs);
24
+ const operation = this.requests.begin(timeoutMs, signal, existing);
25
+ return this.requests.run(operation, (receiver) => {
26
+ const router = this.sockets.routeRouter(target.routerChannelId);
27
+ void flags;
28
+ router.requestToSpot(target.targetNodeRid, target.spotId, parts, timeoutMs, onAdmitted, operation, receiver);
29
+ }, (value) => {
30
+ const replyParts = value;
31
+ try {
32
+ return (0, channel_envelope_1.decodeChannelReply)(replyParts, codecs);
33
+ }
34
+ finally {
35
+ (0, channel_envelope_1.closeMessages)(replyParts);
36
+ (0, channel_envelope_1.closeMessages)(parts);
37
+ }
38
+ }, (error) => error, destination);
29
39
  }
30
- finally {
31
- (0, channel_envelope_1.closeMessages)(replyParts);
32
- (0, channel_envelope_1.closeMessages)(parts);
40
+ catch (error) {
41
+ return Promise.reject(error);
33
42
  }
34
43
  }
35
- async requestRaw(target, request, timeoutMs, signal, onAdmitted) {
36
- const router = this.sockets.routeRouter(target.routerChannelId);
37
- const operation = router.requestToSpot(target.targetNodeRid, target.spotId, [request], timeoutMs, onAdmitted);
38
- return await (0, abort_1.awaitWithAbort)(operation, signal, () => {
39
- void operation.then(channel_envelope_1.closeMessages, () => undefined);
40
- });
44
+ async requestRaw(target, request, timeoutMs, signal, onAdmitted, existing) {
45
+ const operation = this.requests.begin(timeoutMs, signal, existing);
46
+ return this.requests.run(operation, (receiver) => {
47
+ const router = this.sockets.routeRouter(target.routerChannelId);
48
+ router.requestToSpot(target.targetNodeRid, target.spotId, [request], timeoutMs, onAdmitted, operation, receiver);
49
+ }, (value) => {
50
+ const replyParts = value;
51
+ if (!operation.isPending())
52
+ (0, channel_envelope_1.closeMessages)(replyParts);
53
+ return replyParts;
54
+ }, (error) => error);
41
55
  }
42
56
  }
43
57
  exports.ZLinkRouterSocketSpotRouteTransport = ZLinkRouterSocketSpotRouteTransport;
@@ -1,10 +1,13 @@
1
+ import { RequestRuntime } from '../foundation/request-runtime';
2
+ import type { PendingOperation, OperationObserver } from '../foundation/operation-registry';
1
3
  import type { Message } from '../../contracts/Common/Message';
2
4
  import type { ZLinkBackendSpot } from '../backend/contracts';
3
5
  import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
4
6
  export declare class ZLinkSourceSpotRouter {
5
7
  private readonly defaultRequestTimeoutMs;
6
- constructor(defaultRequestTimeoutMs: number | undefined);
7
- request<TReply>(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<TReply>;
8
+ private readonly requests;
9
+ constructor(defaultRequestTimeoutMs: number | undefined, requests?: RequestRuntime);
10
+ request<TReply>(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void, existing?: PendingOperation<unknown>, destination?: OperationObserver<unknown, unknown>): Promise<TReply>;
8
11
  send(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<void>;
9
- requestRaw(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<readonly Message[]>;
12
+ requestRaw(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void, existing?: PendingOperation<unknown>): Promise<readonly Message[]>;
10
13
  }