@zlink-systems/framework 0.30.0 → 0.30.2

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 (456) hide show
  1. package/LICENSE +150 -68
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/contracts/Actors/ZLinkActorClient.d.ts +2 -1
  4. package/dist/contracts/Channels/Calls.d.ts +2 -1
  5. package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +6 -0
  6. package/dist/contracts/Common/ZLinkEncodedPayload.js +18 -3
  7. package/dist/contracts/Common/ZLinkMessageMetadata.js +11 -5
  8. package/dist/contracts/Common/encoded-payload-storage.d.ts +1 -1
  9. package/dist/contracts/Common/encoded-payload-storage.js +5 -2
  10. package/dist/contracts/Configuration/Builders.d.ts +1 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +2 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +5 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +2 -2
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +2 -2
  16. package/dist/contracts/Handlers/Attributes.d.ts +5 -13
  17. package/dist/contracts/Handlers/Attributes.js +7 -11
  18. package/dist/contracts/Handlers/JsonContract.d.ts +2 -46
  19. package/dist/contracts/Handlers/JsonContract.js +4 -153
  20. package/dist/contracts/Locations/Rows.d.ts +2 -0
  21. package/dist/contracts/Spots/Contracts.d.ts +6 -1
  22. package/dist/contracts/Spots/ZLinkSpot.d.ts +3 -3
  23. package/dist/nest-integration.d.ts +1 -1
  24. package/dist/nest-integration.js +2 -1
  25. package/dist/runtime/abort.d.ts +5 -0
  26. package/dist/runtime/abort.js +10 -0
  27. package/dist/runtime/actors/actor-authority-publication.js +3 -2
  28. package/dist/runtime/actors/actor-client.d.ts +1 -2
  29. package/dist/runtime/actors/actor-client.js +52 -57
  30. package/dist/runtime/actors/actor-context.d.ts +2 -0
  31. package/dist/runtime/actors/actor-context.js +46 -9
  32. package/dist/runtime/actors/actor-handoff.d.ts +8 -4
  33. package/dist/runtime/actors/actor-handoff.js +219 -92
  34. package/dist/runtime/actors/actor-join-relocation.d.ts +3 -0
  35. package/dist/runtime/actors/actor-local-native-join.js +13 -12
  36. package/dist/runtime/actors/actor-mailbox.js +27 -1
  37. package/dist/runtime/actors/actor-remote-joiner.js +3 -1
  38. package/dist/runtime/actors/actor-remote-wire.js +15 -0
  39. package/dist/runtime/actors/actor-reply.d.ts +4 -0
  40. package/dist/runtime/actors/actor-reply.js +29 -0
  41. package/dist/runtime/actors/actor-routed-join-transport.d.ts +6 -2
  42. package/dist/runtime/actors/actor-routed-json-request.d.ts +2 -0
  43. package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -0
  44. package/dist/runtime/actors/actor-runtime-state.js +2 -20
  45. package/dist/runtime/actors/actor-source-transfer.d.ts +1 -17
  46. package/dist/runtime/actors/index.d.ts +8 -3
  47. package/dist/runtime/actors/index.js +55 -27
  48. package/dist/runtime/actors/session-disconnected-wire.d.ts +8 -0
  49. package/dist/runtime/actors/session-disconnected-wire.js +48 -0
  50. package/dist/runtime/actors/spot-actor-dispatch.js +2 -2
  51. package/dist/runtime/admission.d.ts +9 -1
  52. package/dist/runtime/admission.js +56 -23
  53. package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +6 -8
  54. package/dist/runtime/application-jobs/application-ingress-record-owner.js +39 -22
  55. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +15 -1
  56. package/dist/runtime/application-jobs/application-job-queue-scope.js +61 -20
  57. package/dist/runtime/application-jobs/contracts.d.ts +12 -1
  58. package/dist/runtime/backend/contracts/index.d.ts +37 -12
  59. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +2 -2
  60. package/dist/runtime/backend/mesh-completion-table.d.ts +9 -1
  61. package/dist/runtime/backend/mesh-completion-table.js +154 -49
  62. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +28 -1
  63. package/dist/runtime/backend/mesh-dispatch-pump.js +208 -101
  64. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +2 -2
  65. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -9
  66. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  67. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +5 -2
  68. package/dist/runtime/backend/node/node-raw-binding-port.js +124 -72
  69. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +46 -13
  70. package/dist/runtime/backend/node/node-raw-mesh-backend.js +181 -164
  71. package/dist/runtime/backend/node/node-socket-backend-adapter.d.ts +1 -1
  72. package/dist/runtime/backend/node/node-socket-backend-adapter.js +11 -11
  73. package/dist/runtime/backend/raw-binding-port.d.ts +2 -2
  74. package/dist/runtime/backend/runtime-message.d.ts +1 -0
  75. package/dist/runtime/backend/runtime-message.js +5 -0
  76. package/dist/runtime/backend/runtime-values.d.ts +1 -0
  77. package/dist/runtime/backend/runtime-values.js +2 -1
  78. package/dist/runtime/channels/channel-clients.d.ts +2 -0
  79. package/dist/runtime/channels/channel-clients.js +75 -23
  80. package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +25 -5
  81. package/dist/runtime/channels/channel-dispatch-pipeline.js +111 -56
  82. package/dist/runtime/channels/channel-dispatch-services.d.ts +1 -0
  83. package/dist/runtime/channels/channel-dispatch-services.js +45 -0
  84. package/dist/runtime/channels/channel-dispatchers.d.ts +4 -3
  85. package/dist/runtime/channels/channel-dispatchers.js +62 -54
  86. package/dist/runtime/channels/channel-envelope-inspection.d.ts +1 -2
  87. package/dist/runtime/channels/channel-envelope-inspection.js +1 -16
  88. package/dist/runtime/channels/channel-envelope.d.ts +2 -0
  89. package/dist/runtime/channels/channel-envelope.js +146 -28
  90. package/dist/runtime/channels/channel-outbound-operations.d.ts +2 -2
  91. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +4 -3
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +19 -24
  94. package/dist/runtime/channels/channel-runtime-manager.d.ts +9 -8
  95. package/dist/runtime/channels/channel-runtime-manager.js +16 -16
  96. package/dist/runtime/channels/channel-transports.d.ts +18 -16
  97. package/dist/runtime/channels/channel-transports.js +77 -58
  98. package/dist/runtime/channels/client-server-location-runtime.js +5 -4
  99. package/dist/runtime/channels/dispatch-error-reporter.d.ts +2 -1
  100. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  101. package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
  102. package/dist/runtime/channels/fanout-location-runtime.js +3 -3
  103. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  104. package/dist/runtime/channels/local-spot-route-transport.js +2 -1
  105. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +2 -2
  106. package/dist/runtime/channels/router-socket-spot-route-transport.js +4 -4
  107. package/dist/runtime/channels/source-spot-router.d.ts +2 -2
  108. package/dist/runtime/channels/source-spot-router.js +4 -4
  109. package/dist/runtime/channels/spot-node-route-transport.d.ts +2 -2
  110. package/dist/runtime/channels/spot-node-route-transport.js +4 -4
  111. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +2 -2
  112. package/dist/runtime/channels/spot-route-bridge-transport.js +4 -4
  113. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +5 -4
  114. package/dist/runtime/channels/spot-route-dispatch-strategy.js +18 -18
  115. package/dist/runtime/diagnostics/flow-context.js +19 -7
  116. package/dist/runtime/diagnostics/index.js +4 -9
  117. package/dist/runtime/diagnostics/message-flow.d.ts +8 -0
  118. package/dist/runtime/diagnostics/message-flow.js +35 -5
  119. package/dist/runtime/diagnostics/runtime-metrics.d.ts +2 -2
  120. package/dist/runtime/diagnostics/runtime-metrics.js +10 -8
  121. package/dist/runtime/execution/index.d.ts +4 -2
  122. package/dist/runtime/execution/index.js +33 -10
  123. package/dist/runtime/execution/serial-execution-queue.d.ts +5 -0
  124. package/dist/runtime/execution/serial-execution-queue.js +22 -2
  125. package/dist/runtime/execution/state-lane.d.ts +2 -0
  126. package/dist/runtime/execution/state-lane.js +5 -0
  127. package/dist/runtime/foundation/actor-join-recovery-codec.js +2 -2
  128. package/dist/runtime/foundation/durable-service-request.d.ts +14 -0
  129. package/dist/runtime/foundation/durable-service-request.js +98 -0
  130. package/dist/runtime/foundation/operation-identity.d.ts +1 -0
  131. package/dist/runtime/foundation/operation-identity.js +5 -1
  132. package/dist/runtime/foundation/operation-registry.d.ts +25 -1
  133. package/dist/runtime/foundation/operation-registry.js +86 -18
  134. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +61 -8
  135. package/dist/runtime/foundation/raw-service-mesh-runtime.js +486 -266
  136. package/dist/runtime/foundation/service-liveness-registry.d.ts +12 -1
  137. package/dist/runtime/foundation/service-liveness-registry.js +38 -0
  138. package/dist/runtime/foundation/service-mailbox.d.ts +7 -0
  139. package/dist/runtime/foundation/service-maintenance-runtime.js +1 -6
  140. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +3 -3
  141. package/dist/runtime/foundation/service-relocation-object-owner.js +48 -34
  142. package/dist/runtime/foundation/service-relocation-runtime.d.ts +2 -0
  143. package/dist/runtime/foundation/service-relocation-runtime.js +20 -4
  144. package/dist/runtime/foundation/service-runtime-contracts.d.ts +10 -1
  145. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +2 -1
  146. package/dist/runtime/foundation/service-stateful-registry.d.ts +5 -4
  147. package/dist/runtime/foundation/service-stateful-registry.js +24 -26
  148. package/dist/runtime/foundation/service-stateful-runtime.d.ts +75 -9
  149. package/dist/runtime/foundation/service-stateful-runtime.js +486 -218
  150. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +14 -6
  151. package/dist/runtime/foundation/service-stateful-wire-codec.js +48 -27
  152. package/dist/runtime/foundation/service-topology-registry.d.ts +12 -2
  153. package/dist/runtime/foundation/service-topology-registry.js +61 -27
  154. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +6 -1
  155. package/dist/runtime/foundation/service-wire-binary-primitives.js +27 -11
  156. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  157. package/dist/runtime/foundation/service-wire-constants.generated.js +1 -0
  158. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +13 -3
  159. package/dist/runtime/foundation/service-wire-m6a-codec.js +189 -78
  160. package/dist/runtime/handlers/handler-instance-scope.d.ts +8 -0
  161. package/dist/runtime/handlers/handler-instance-scope.js +54 -11
  162. package/dist/runtime/host/actor-packet-relay.d.ts +6 -4
  163. package/dist/runtime/host/actor-packet-relay.js +59 -72
  164. package/dist/runtime/host/actor-placement-coordinator.js +25 -8
  165. package/dist/runtime/host/actor-runtime-options-factory.js +2 -2
  166. package/dist/runtime/host/actor-transfer-runtime.d.ts +7 -31
  167. package/dist/runtime/host/actor-transfer-runtime.js +85 -331
  168. package/dist/runtime/host/application-job-queue.d.ts +40 -7
  169. package/dist/runtime/host/application-job-queue.js +137 -42
  170. package/dist/runtime/host/entry-actor-runtime.d.ts +1 -0
  171. package/dist/runtime/host/entry-actor-runtime.js +3 -0
  172. package/dist/runtime/host/index.d.ts +12 -2
  173. package/dist/runtime/host/index.js +300 -202
  174. package/dist/runtime/host/location-runtime-owner.js +2 -6
  175. package/dist/runtime/host/mesh-router-resolver.d.ts +4 -0
  176. package/dist/runtime/host/mesh-router-resolver.js +14 -6
  177. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -4
  178. package/dist/runtime/host/remote-bound-session-relay.js +73 -208
  179. package/dist/runtime/host/route-mesh-runtime.d.ts +2 -2
  180. package/dist/runtime/host/route-mesh-runtime.js +6 -4
  181. package/dist/runtime/host/runtime-shutdown.d.ts +1 -0
  182. package/dist/runtime/host/runtime-shutdown.js +3 -2
  183. package/dist/runtime/host/service-relocation-control.d.ts +1 -0
  184. package/dist/runtime/host/service-relocation-control.js +10 -4
  185. package/dist/runtime/host/service-relocation-host-runtime.d.ts +22 -14
  186. package/dist/runtime/host/service-relocation-host-runtime.js +754 -599
  187. package/dist/runtime/host/spot-address-transport.js +3 -2
  188. package/dist/runtime/host/spot-runtime-options-factory.js +16 -7
  189. package/dist/runtime/host/user-spot-creation-coordinator.js +33 -84
  190. package/dist/runtime/locations/actor-location-claims.d.ts +2 -2
  191. package/dist/runtime/locations/actor-location-claims.js +34 -19
  192. package/dist/runtime/locations/auto-connect-loop.d.ts +2 -0
  193. package/dist/runtime/locations/auto-connect-loop.js +22 -14
  194. package/dist/runtime/locations/auto-connect-reconciler.js +0 -6
  195. package/dist/runtime/locations/auto-connect-types.d.ts +0 -1
  196. package/dist/runtime/locations/descriptor-publication.d.ts +4 -0
  197. package/dist/runtime/locations/descriptor-publication.js +11 -0
  198. package/dist/runtime/locations/domain-store-contract.d.ts +1 -0
  199. package/dist/runtime/locations/in-memory-authority-store.d.ts +7 -1
  200. package/dist/runtime/locations/in-memory-authority-store.js +56 -19
  201. package/dist/runtime/locations/in-memory-location-store.js +1 -10
  202. package/dist/runtime/locations/index.d.ts +1 -0
  203. package/dist/runtime/locations/index.js +1 -0
  204. package/dist/runtime/locations/lease-tracker.js +1 -6
  205. package/dist/runtime/locations/lifecycle.d.ts +1 -2
  206. package/dist/runtime/locations/lifecycle.js +2 -5
  207. package/dist/runtime/locations/location-store-repository.d.ts +51 -1
  208. package/dist/runtime/locations/location-store-repository.js +363 -139
  209. package/dist/runtime/locations/relocation-blob.d.ts +18 -1
  210. package/dist/runtime/locations/relocation-blob.js +52 -1
  211. package/dist/runtime/locations/request-source-resolver.d.ts +37 -0
  212. package/dist/runtime/locations/request-source-resolver.js +80 -0
  213. package/dist/runtime/locations/resolvers.js +1 -1
  214. package/dist/runtime/locations/runtime.d.ts +7 -3
  215. package/dist/runtime/locations/runtime.js +61 -53
  216. package/dist/runtime/messaging/framework-json-v1.d.ts +4 -6
  217. package/dist/runtime/messaging/framework-json-v1.js +38 -294
  218. package/dist/runtime/messaging/packet-name.d.ts +1 -1
  219. package/dist/runtime/messaging/packet-name.js +8 -24
  220. package/dist/runtime/messaging/payload-codec.d.ts +7 -1
  221. package/dist/runtime/messaging/payload-codec.js +7 -6
  222. package/dist/runtime/messaging/request-result.d.ts +2 -0
  223. package/dist/runtime/messaging/request-result.js +57 -0
  224. package/dist/runtime/messaging/submission-result.d.ts +1 -0
  225. package/dist/runtime/messaging/submission-result.js +5 -2
  226. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +34 -1
  227. package/dist/runtime/protocol/service_wire_codec.generated.js +229 -0
  228. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +16 -1
  229. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +37 -8
  230. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +7 -2
  231. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +36 -21
  232. package/dist/runtime/spots/index.d.ts +21 -11
  233. package/dist/runtime/spots/index.js +243 -178
  234. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -2
  235. package/dist/runtime/spots/spot-activation-registry.js +21 -11
  236. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  237. package/dist/runtime/spots/spot-activation-state.js +7 -7
  238. package/dist/runtime/spots/spot-activation.d.ts +7 -3
  239. package/dist/runtime/spots/spot-activation.js +140 -52
  240. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -0
  241. package/dist/runtime/spots/spot-actor-admission-coordinator.js +13 -22
  242. package/dist/runtime/spots/spot-actor-membership.d.ts +0 -1
  243. package/dist/runtime/spots/spot-actor-membership.js +0 -8
  244. package/dist/runtime/spots/spot-actor-packet-dispatch.js +33 -8
  245. package/dist/runtime/spots/spot-actor-packet-drain.js +5 -33
  246. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -0
  247. package/dist/runtime/spots/spot-entry-activation.js +20 -11
  248. package/dist/runtime/spots/spot-handler-registry.d.ts +7 -4
  249. package/dist/runtime/spots/spot-handler-registry.js +24 -10
  250. package/dist/runtime/spots/spot-manager-internal-contracts.d.ts +2 -2
  251. package/dist/runtime/spots/spot-manager-public.js +2 -2
  252. package/dist/runtime/spots/spot-node-autoconnect.d.ts +2 -1
  253. package/dist/runtime/spots/spot-node-autoconnect.js +22 -42
  254. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -2
  255. package/dist/runtime/spots/spot-node-runtime-manager.js +115 -50
  256. package/dist/runtime/spots/spot-outbound.d.ts +3 -0
  257. package/dist/runtime/spots/spot-outbound.js +27 -18
  258. package/dist/runtime/spots/spot-remote-codec.js +5 -1
  259. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +1 -0
  260. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +1 -1
  261. package/dist/runtime/spots/spot-runtime-ports.d.ts +1 -1
  262. package/dist/runtime/spots/spot-serial-executor.d.ts +10 -0
  263. package/dist/runtime/spots/spot-serial-executor.js +61 -8
  264. package/dist/runtime/spots/spot-serial-turn-executor.js +19 -2
  265. package/dist/runtime/spots/spot-subscription-dispatch.js +1 -4
  266. package/dist/runtime/spots/spot-timer.d.ts +57 -5
  267. package/dist/runtime/spots/spot-timer.js +288 -103
  268. package/dist/runtime/streams/actor-session-binding-registry.d.ts +42 -11
  269. package/dist/runtime/streams/actor-session-binding-registry.js +165 -48
  270. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +8 -4
  271. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -1
  272. package/dist/runtime/streams/bound-actor-relay-sender.js +15 -8
  273. package/dist/runtime/streams/bound-session-service.d.ts +1 -1
  274. package/dist/runtime/streams/bound-session-service.js +6 -11
  275. package/dist/runtime/streams/index.d.ts +3 -2
  276. package/dist/runtime/streams/index.js +6 -4
  277. package/dist/runtime/streams/managed-stream.js +3 -2
  278. package/dist/runtime/streams/native-fallback-bound-session.js +8 -73
  279. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -8
  280. package/dist/runtime/streams/session-actor-coordinator.js +15 -32
  281. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +3 -10
  282. package/dist/runtime/streams/stream-session-runtime.d.ts +1 -1
  283. package/dist/runtime/streams/stream-session-runtime.js +14 -31
  284. package/dist/runtime/workers/index.js +1 -1
  285. package/package.json +3 -3
  286. package/src/contracts/Actors/ZLinkActorClient.ts +2 -1
  287. package/src/contracts/Channels/Calls.ts +2 -1
  288. package/src/contracts/Common/ZLinkEncodedPayload.ts +24 -4
  289. package/src/contracts/Common/ZLinkMessageMetadata.ts +13 -8
  290. package/src/contracts/Common/encoded-payload-storage.ts +6 -3
  291. package/src/contracts/Configuration/Builders.ts +4 -1
  292. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +7 -2
  293. package/src/contracts/Configuration/RegistrationBuilders.ts +6 -2
  294. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  295. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -1
  296. package/src/contracts/Handlers/Attributes.ts +14 -21
  297. package/src/contracts/Handlers/JsonContract.ts +8 -216
  298. package/src/contracts/Locations/Rows.ts +2 -0
  299. package/src/contracts/Spots/Contracts.ts +10 -1
  300. package/src/contracts/Spots/ZLinkSpot.ts +3 -3
  301. package/src/nest-integration.ts +1 -0
  302. package/src/runtime/abort.ts +12 -0
  303. package/src/runtime/actors/actor-authority-publication.ts +3 -2
  304. package/src/runtime/actors/actor-client.ts +100 -85
  305. package/src/runtime/actors/actor-context.ts +49 -9
  306. package/src/runtime/actors/actor-handoff.ts +291 -110
  307. package/src/runtime/actors/actor-join-relocation.ts +3 -0
  308. package/src/runtime/actors/actor-local-native-join.ts +21 -26
  309. package/src/runtime/actors/actor-mailbox.ts +40 -2
  310. package/src/runtime/actors/actor-remote-joiner.ts +6 -1
  311. package/src/runtime/actors/actor-remote-wire.ts +17 -0
  312. package/src/runtime/actors/actor-reply.ts +42 -0
  313. package/src/runtime/actors/actor-routed-join-transport.ts +14 -4
  314. package/src/runtime/actors/actor-routed-json-request.ts +10 -2
  315. package/src/runtime/actors/actor-runtime-contracts.ts +2 -0
  316. package/src/runtime/actors/actor-runtime-state.ts +2 -20
  317. package/src/runtime/actors/actor-source-transfer.ts +1 -34
  318. package/src/runtime/actors/index.ts +60 -32
  319. package/src/runtime/actors/session-disconnected-wire.ts +66 -0
  320. package/src/runtime/actors/spot-actor-dispatch.ts +4 -2
  321. package/src/runtime/admission.ts +69 -21
  322. package/src/runtime/application-jobs/application-ingress-record-owner.ts +41 -25
  323. package/src/runtime/application-jobs/application-job-queue-scope.ts +83 -22
  324. package/src/runtime/application-jobs/contracts.ts +16 -1
  325. package/src/runtime/backend/contracts/index.ts +92 -18
  326. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +5 -3
  327. package/src/runtime/backend/mesh-completion-table.ts +160 -57
  328. package/src/runtime/backend/mesh-dispatch-pump.ts +237 -108
  329. package/src/runtime/backend/node/node-backend-adapter-support.ts +17 -8
  330. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +12 -2
  331. package/src/runtime/backend/node/node-raw-binding-port.ts +148 -85
  332. package/src/runtime/backend/node/node-raw-mesh-backend.ts +315 -201
  333. package/src/runtime/backend/node/node-socket-backend-adapter.ts +26 -11
  334. package/src/runtime/backend/raw-binding-port.ts +7 -2
  335. package/src/runtime/backend/runtime-message.ts +6 -0
  336. package/src/runtime/backend/runtime-values.ts +1 -0
  337. package/src/runtime/channels/channel-clients.ts +132 -58
  338. package/src/runtime/channels/channel-dispatch-pipeline.ts +198 -114
  339. package/src/runtime/channels/channel-dispatch-services.ts +69 -1
  340. package/src/runtime/channels/channel-dispatchers.ts +136 -90
  341. package/src/runtime/channels/channel-envelope-inspection.ts +2 -16
  342. package/src/runtime/channels/channel-envelope.ts +225 -31
  343. package/src/runtime/channels/channel-outbound-operations.ts +22 -8
  344. package/src/runtime/channels/channel-runtime-lifecycle.ts +13 -13
  345. package/src/runtime/channels/channel-runtime-manager.ts +41 -17
  346. package/src/runtime/channels/channel-transports.ts +171 -112
  347. package/src/runtime/channels/client-server-location-runtime.ts +11 -10
  348. package/src/runtime/channels/dispatch-error-reporter.ts +4 -2
  349. package/src/runtime/channels/fanout-location-runtime.ts +17 -9
  350. package/src/runtime/channels/local-spot-route-transport.ts +3 -1
  351. package/src/runtime/channels/router-socket-spot-route-transport.ts +13 -4
  352. package/src/runtime/channels/source-spot-router.ts +8 -4
  353. package/src/runtime/channels/spot-node-route-transport.ts +8 -4
  354. package/src/runtime/channels/spot-route-bridge-transport.ts +6 -4
  355. package/src/runtime/channels/spot-route-dispatch-strategy.ts +47 -18
  356. package/src/runtime/diagnostics/flow-context.ts +20 -7
  357. package/src/runtime/diagnostics/index.ts +1 -7
  358. package/src/runtime/diagnostics/message-flow.ts +47 -9
  359. package/src/runtime/diagnostics/runtime-metrics.ts +12 -10
  360. package/src/runtime/execution/index.ts +40 -14
  361. package/src/runtime/execution/serial-execution-queue.ts +33 -4
  362. package/src/runtime/execution/state-lane.ts +7 -0
  363. package/src/runtime/foundation/actor-join-recovery-codec.ts +2 -2
  364. package/src/runtime/foundation/durable-service-request.ts +137 -0
  365. package/src/runtime/foundation/operation-identity.ts +5 -1
  366. package/src/runtime/foundation/operation-registry.ts +98 -20
  367. package/src/runtime/foundation/raw-service-mesh-runtime.ts +704 -336
  368. package/src/runtime/foundation/service-liveness-registry.ts +39 -0
  369. package/src/runtime/foundation/service-mailbox.ts +8 -0
  370. package/src/runtime/foundation/service-maintenance-runtime.ts +1 -8
  371. package/src/runtime/foundation/service-relocation-object-owner.ts +55 -36
  372. package/src/runtime/foundation/service-relocation-runtime.ts +25 -4
  373. package/src/runtime/foundation/service-runtime-contracts.ts +19 -2
  374. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -1
  375. package/src/runtime/foundation/service-stateful-registry.ts +38 -35
  376. package/src/runtime/foundation/service-stateful-runtime.ts +732 -275
  377. package/src/runtime/foundation/service-stateful-wire-codec.ts +49 -16
  378. package/src/runtime/foundation/service-topology-registry.ts +91 -36
  379. package/src/runtime/foundation/service-wire-binary-primitives.ts +35 -12
  380. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  381. package/src/runtime/foundation/service-wire-m6a-codec.ts +231 -76
  382. package/src/runtime/handlers/handler-instance-scope.ts +67 -16
  383. package/src/runtime/host/actor-packet-relay.ts +113 -94
  384. package/src/runtime/host/actor-placement-coordinator.ts +31 -8
  385. package/src/runtime/host/actor-runtime-options-factory.ts +13 -2
  386. package/src/runtime/host/actor-transfer-runtime.ts +104 -430
  387. package/src/runtime/host/application-job-queue.ts +160 -41
  388. package/src/runtime/host/entry-actor-runtime.ts +4 -0
  389. package/src/runtime/host/index.ts +473 -271
  390. package/src/runtime/host/location-runtime-owner.ts +2 -6
  391. package/src/runtime/host/mesh-router-resolver.ts +13 -5
  392. package/src/runtime/host/remote-bound-session-relay.ts +88 -271
  393. package/src/runtime/host/route-mesh-runtime.ts +12 -6
  394. package/src/runtime/host/runtime-shutdown.ts +15 -4
  395. package/src/runtime/host/service-relocation-control.ts +11 -5
  396. package/src/runtime/host/service-relocation-host-runtime.ts +1092 -759
  397. package/src/runtime/host/spot-address-transport.ts +4 -2
  398. package/src/runtime/host/spot-runtime-options-factory.ts +20 -7
  399. package/src/runtime/host/user-spot-creation-coordinator.ts +41 -100
  400. package/src/runtime/locations/actor-location-claims.ts +52 -30
  401. package/src/runtime/locations/auto-connect-loop.ts +22 -14
  402. package/src/runtime/locations/auto-connect-reconciler.ts +0 -6
  403. package/src/runtime/locations/auto-connect-types.ts +0 -1
  404. package/src/runtime/locations/descriptor-publication.ts +7 -0
  405. package/src/runtime/locations/domain-store-contract.ts +5 -0
  406. package/src/runtime/locations/in-memory-authority-store.ts +85 -23
  407. package/src/runtime/locations/in-memory-location-store.ts +1 -12
  408. package/src/runtime/locations/index.ts +1 -0
  409. package/src/runtime/locations/lease-tracker.ts +2 -9
  410. package/src/runtime/locations/lifecycle.ts +8 -26
  411. package/src/runtime/locations/location-store-repository.ts +628 -152
  412. package/src/runtime/locations/relocation-blob.ts +75 -1
  413. package/src/runtime/locations/request-source-resolver.ts +138 -0
  414. package/src/runtime/locations/resolvers.ts +2 -2
  415. package/src/runtime/locations/runtime.ts +98 -64
  416. package/src/runtime/messaging/framework-json-v1.ts +5 -325
  417. package/src/runtime/messaging/packet-name.ts +5 -25
  418. package/src/runtime/messaging/payload-codec.ts +8 -11
  419. package/src/runtime/messaging/request-result.ts +62 -0
  420. package/src/runtime/messaging/submission-result.ts +5 -1
  421. package/src/runtime/protocol/service_wire_codec.generated.ts +218 -5
  422. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +16 -13
  423. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +46 -25
  424. package/src/runtime/spots/index.ts +389 -283
  425. package/src/runtime/spots/spot-activation-registry.ts +25 -13
  426. package/src/runtime/spots/spot-activation-state.ts +12 -19
  427. package/src/runtime/spots/spot-activation.ts +198 -96
  428. package/src/runtime/spots/spot-actor-admission-coordinator.ts +25 -55
  429. package/src/runtime/spots/spot-actor-membership.ts +0 -15
  430. package/src/runtime/spots/spot-actor-packet-dispatch.ts +56 -11
  431. package/src/runtime/spots/spot-actor-packet-drain.ts +9 -52
  432. package/src/runtime/spots/spot-entry-activation.ts +33 -21
  433. package/src/runtime/spots/spot-handler-registry.ts +56 -12
  434. package/src/runtime/spots/spot-manager-internal-contracts.ts +2 -2
  435. package/src/runtime/spots/spot-manager-public.ts +2 -2
  436. package/src/runtime/spots/spot-node-autoconnect.ts +28 -47
  437. package/src/runtime/spots/spot-node-runtime-manager.ts +197 -67
  438. package/src/runtime/spots/spot-outbound.ts +39 -19
  439. package/src/runtime/spots/spot-remote-codec.ts +9 -2
  440. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +2 -1
  441. package/src/runtime/spots/spot-runtime-ports.ts +1 -1
  442. package/src/runtime/spots/spot-serial-executor.ts +97 -25
  443. package/src/runtime/spots/spot-serial-turn-executor.ts +22 -3
  444. package/src/runtime/spots/spot-subscription-dispatch.ts +1 -4
  445. package/src/runtime/spots/spot-timer.ts +418 -158
  446. package/src/runtime/streams/actor-session-binding-registry.ts +236 -64
  447. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +16 -8
  448. package/src/runtime/streams/bound-actor-relay-sender.ts +23 -9
  449. package/src/runtime/streams/bound-session-service.ts +7 -10
  450. package/src/runtime/streams/index.ts +12 -6
  451. package/src/runtime/streams/managed-stream.ts +4 -2
  452. package/src/runtime/streams/native-fallback-bound-session.ts +14 -103
  453. package/src/runtime/streams/session-actor-coordinator.ts +39 -88
  454. package/src/runtime/streams/stream-binding-runtime-ports.ts +3 -9
  455. package/src/runtime/streams/stream-session-runtime.ts +13 -34
  456. package/src/runtime/workers/index.ts +1 -1
@@ -48,6 +48,13 @@ class ZLinkChannelDispatchServices {
48
48
  return this.handlerFiltersValue;
49
49
  }
50
50
  channelRequestHandler(handlerType) {
51
+ const activate = this.registration.filterTypes.length === 0
52
+ ? (0, handler_instance_scope_1.prepareHandlerInstance)(this.providerResolver, handlerType)
53
+ : undefined;
54
+ if (activate !== undefined)
55
+ return {
56
+ handle: (payload, context) => this.invokeScopeFreeHandler(activate, payload, context)
57
+ };
51
58
  return {
52
59
  handle: (payload, context) => this.withHandlerScope(context, async (scope) => {
53
60
  const handler = await scope.resolve(handlerType);
@@ -56,6 +63,13 @@ class ZLinkChannelDispatchServices {
56
63
  };
57
64
  }
58
65
  channelSendHandler(handlerType) {
66
+ const activate = this.registration.filterTypes.length === 0
67
+ ? (0, handler_instance_scope_1.prepareHandlerInstance)(this.providerResolver, handlerType)
68
+ : undefined;
69
+ if (activate !== undefined)
70
+ return {
71
+ handle: (payload, context) => this.invokeScopeFreeHandler(activate, payload, context)
72
+ };
59
73
  return {
60
74
  handle: (payload, context) => this.withHandlerScope(context, async (scope) => {
61
75
  const handler = await scope.resolve(handlerType);
@@ -64,6 +78,13 @@ class ZLinkChannelDispatchServices {
64
78
  };
65
79
  }
66
80
  routeRequestHandler(handlerType) {
81
+ const activate = this.registration.filterTypes.length === 0
82
+ ? (0, handler_instance_scope_1.prepareHandlerInstance)(this.providerResolver, handlerType)
83
+ : undefined;
84
+ if (activate !== undefined)
85
+ return {
86
+ handle: (payload, context) => this.invokeScopeFreeHandler(activate, payload, context)
87
+ };
67
88
  return {
68
89
  handle: (payload, context) => this.withHandlerScope(context, async (scope) => {
69
90
  const handler = await scope.resolve(handlerType);
@@ -72,6 +93,13 @@ class ZLinkChannelDispatchServices {
72
93
  };
73
94
  }
74
95
  routeSendHandler(handlerType) {
96
+ const activate = this.registration.filterTypes.length === 0
97
+ ? (0, handler_instance_scope_1.prepareHandlerInstance)(this.providerResolver, handlerType)
98
+ : undefined;
99
+ if (activate !== undefined)
100
+ return {
101
+ handle: (payload, context) => this.invokeScopeFreeHandler(activate, payload, context)
102
+ };
75
103
  return {
76
104
  handle: (payload, context) => this.withHandlerScope(context, async (scope) => {
77
105
  const handler = await scope.resolve(handlerType);
@@ -79,6 +107,23 @@ class ZLinkChannelDispatchServices {
79
107
  })
80
108
  };
81
109
  }
110
+ invokeScopeFreeHandler(activate, payload, context) {
111
+ const handler = activate();
112
+ const cleanup = (0, handler_instance_scope_1.handlerInstanceCleanup)(handler);
113
+ if (cleanup === undefined)
114
+ return handler.handle(payload, context);
115
+ let result;
116
+ try {
117
+ result = handler.handle(payload, context);
118
+ }
119
+ catch (error) {
120
+ const disposed = cleanup.call(handler);
121
+ return Promise.resolve(disposed).then(() => {
122
+ throw error;
123
+ });
124
+ }
125
+ return Promise.resolve(result).finally(() => cleanup.call(handler));
126
+ }
82
127
  async invokeHandlerFilters(context, next, signal) {
83
128
  const scoped = (0, handler_filter_scope_1.handlerFilterScope)(this.providerResolver);
84
129
  if (scoped !== undefined) {
@@ -1,6 +1,7 @@
1
+ import type { ZLinkMeshDispatchAdmission } from '../admission';
1
2
  import type { RoutingId, ZLinkMessageContext, ZLinkHandlerFilter, ZLinkPublishMessageContext, ZLinkRouteMessageContext, ZLinkUnhandledDispatchOptions } from '../../contracts';
2
3
  import type { Message } from '../../contracts/Common/Message';
3
- import type { ReceiveRecord } from '../foundation/service-runtime-contracts';
4
+ import { type ReceiveRecord } from '../foundation/service-runtime-contracts';
4
5
  import { type ZLinkRouteChannelOptions } from '../configuration';
5
6
  import type { ZLinkBackendSpotRouteBridge } from '../backend/contracts';
6
7
  import type { ZLinkRuntimeMetrics } from '../diagnostics';
@@ -54,7 +55,7 @@ export declare class ZLinkChannelRequestDispatcher {
54
55
  }, router: {
55
56
  reply(routingId: unknown, replyToken: unknown): ZLinkMultipartReplyOperation;
56
57
  }, signal?: AbortSignal, decodedHeader?: ZLinkChannelEnvelopeHeader): Promise<boolean | void>;
57
- dispatchMesh(record: ReceiveRecord, signal?: AbortSignal): Promise<void>;
58
+ dispatchMesh(record: ReceiveRecord, signal?: AbortSignal, admit?: ZLinkMeshDispatchAdmission): void | Promise<void>;
58
59
  private submitReply;
59
60
  private createMeshContext;
60
61
  }
@@ -117,7 +118,7 @@ export declare class ZLinkRoutePacketDispatcher {
117
118
  }, router: {
118
119
  reply(routingId: unknown, replyToken: unknown): ZLinkMultipartReplyOperation;
119
120
  }, signal?: AbortSignal, decodedHeader?: ZLinkChannelEnvelopeHeader, infrastructureChecked?: boolean): Promise<boolean | void>;
120
- dispatchMesh(record: ReceiveRecord, signal?: AbortSignal): Promise<void>;
121
+ dispatchMesh(record: ReceiveRecord, signal?: AbortSignal, admit?: ZLinkMeshDispatchAdmission): void | Promise<void>;
121
122
  dispatchLocalCommand(parts: readonly Message[], sourceNodeRid: RoutingId, signal?: AbortSignal): Promise<void>;
122
123
  private dispatchMeshCommand;
123
124
  private submitReply;
@@ -5,12 +5,14 @@ exports.collectRouteChannelHandlers = collectRouteChannelHandlers;
5
5
  const contracts_1 = require("../../contracts");
6
6
  const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
7
7
  const runtime_values_1 = require("../backend/runtime-values");
8
+ const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
8
9
  const configuration_1 = require("../configuration");
9
10
  const channel_envelope_1 = require("./channel-envelope");
10
11
  const channel_envelope_inspection_1 = require("./channel-envelope-inspection");
11
12
  const channel_multipart_1 = require("./channel-multipart");
12
13
  const channel_framework_packets_1 = require("./channel-framework-packets");
13
14
  const channel_dispatch_pipeline_1 = require("./channel-dispatch-pipeline");
15
+ const completedChannelReply = Promise.resolve();
14
16
  class ZLinkChannelRequestDispatcher {
15
17
  options;
16
18
  pipeline;
@@ -49,7 +51,7 @@ class ZLinkChannelRequestDispatcher {
49
51
  await this.pipeline.dispatchMalformed({
50
52
  info,
51
53
  error,
52
- transportRequest: replyToken !== null,
54
+ transportRequest: replyToken != null,
53
55
  writeProtocolError: replyToken === null
54
56
  ? undefined
55
57
  : (protocolError) => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)((0, channel_envelope_inspection_1.malformedProtocolErrorRequestHeader)(this.options.channelName, info), protocolError)), signal)
@@ -124,9 +126,9 @@ class ZLinkChannelRequestDispatcher {
124
126
  writeError: (error) => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)(envelope.header, error)), signal)
125
127
  });
126
128
  }
127
- async dispatchMesh(record, signal) {
129
+ dispatchMesh(record, signal, admit) {
128
130
  if (record.parts.length === 0 || record.parts[0].data().length === 0) {
129
- return;
131
+ return completedChannelReply;
130
132
  }
131
133
  let envelope;
132
134
  try {
@@ -134,16 +136,15 @@ class ZLinkChannelRequestDispatcher {
134
136
  }
135
137
  catch (error) {
136
138
  const info = (0, channel_envelope_inspection_1.inspectMalformedChannelHeader)(record.parts, this.flowEnabled());
137
- await this.pipeline.dispatchMalformed({
139
+ return this.pipeline.dispatchMalformed({
138
140
  info,
139
141
  error,
140
- transportRequest: false,
142
+ transportRequest: isMeshRequest(record),
141
143
  sourceRid: record.sourceNodeRid == null ? undefined : String(record.sourceNodeRid),
142
144
  writeProtocolError: async (protocolError) => {
143
145
  requireMeshReplyAccepted(record.reply((0, channel_envelope_1.encodeChannelErrorReplyParts)((0, channel_envelope_inspection_1.malformedProtocolErrorRequestHeader)(this.options.channelName, info), protocolError)));
144
146
  }
145
147
  });
146
- return;
147
148
  }
148
149
  const packetName = envelope.packetName;
149
150
  if (packetName === undefined) {
@@ -151,7 +152,7 @@ class ZLinkChannelRequestDispatcher {
151
152
  }
152
153
  const correlationId = envelope.header.correlationId ?? undefined;
153
154
  if (envelope.header.kind === 3 /* ZLinkChannelMessageKind.Command */) {
154
- await this.pipeline.dispatchOneWay({
155
+ return this.pipeline.dispatchOneWay({
155
156
  fields: {
156
157
  messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
157
158
  packetName,
@@ -164,11 +165,10 @@ class ZLinkChannelRequestDispatcher {
164
165
  handler: this.options.sendHandlers?.get(packetName),
165
166
  context: this.createMeshContext(envelope, record.sourceNodeRid),
166
167
  signal
167
- });
168
- return;
168
+ }, admit);
169
169
  }
170
170
  if (envelope.header.kind !== 1 /* ZLinkChannelMessageKind.Request */) {
171
- return;
171
+ return completedChannelReply;
172
172
  }
173
173
  const fields = {
174
174
  messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request,
@@ -177,28 +177,14 @@ class ZLinkChannelRequestDispatcher {
177
177
  flowId: envelope.header.flowId,
178
178
  flowOrigin: envelope.header.flowOrigin
179
179
  };
180
- await this.pipeline.dispatchRequest({
181
- fields,
182
- envelope,
183
- codecs: this.options.codecs,
184
- handler: this.options.handlers.get(packetName),
185
- context: this.createMeshContext(envelope, record.sourceNodeRid),
186
- signal,
187
- missingHandlerMessage: `No channel request handler is registered for '${this.options.channelName}:${packetName}'.`,
188
- writeReply: async (reply) => {
189
- requireMeshReplyAccepted(record.reply((0, channel_envelope_1.encodeChannelReplyParts)(envelope.header, reply, this.options.codecs)));
190
- },
191
- writeError: async (error) => {
192
- requireMeshReplyAccepted(record.reply((0, channel_envelope_1.encodeChannelErrorReplyParts)(envelope.header, error)));
193
- }
194
- });
180
+ return this.pipeline.dispatchRequest(new ZLinkMeshRequestDispatch(fields, envelope, this.options.codecs, this.options.handlers.get(packetName), this.createMeshContext(envelope, record.sourceNodeRid), signal, record, 'channel', this.options.channelName), admit);
195
181
  }
196
182
  submitReply(operation, signal) {
197
183
  void signal;
198
184
  if (operation.submit() === false) {
199
185
  throw new configuration_1.ZLinkConfigurationException('Channel reply was not accepted by Core.');
200
186
  }
201
- return Promise.resolve();
187
+ return completedChannelReply;
202
188
  }
203
189
  createMeshContext(envelope, sourceNodeRid) {
204
190
  const base = {
@@ -220,6 +206,42 @@ class ZLinkChannelRequestDispatcher {
220
206
  }
221
207
  }
222
208
  exports.ZLinkChannelRequestDispatcher = ZLinkChannelRequestDispatcher;
209
+ /**
210
+ * One mesh request handed to the dispatch pipeline. The reply writers are
211
+ * methods over the received record instead of per-message closures, and the
212
+ * missing-handler text is built only when no handler exists.
213
+ */
214
+ class ZLinkMeshRequestDispatch {
215
+ fields;
216
+ envelope;
217
+ codecs;
218
+ handler;
219
+ context;
220
+ signal;
221
+ record;
222
+ handlerSurface;
223
+ channelName;
224
+ constructor(fields, envelope, codecs, handler, context, signal, record, handlerSurface, channelName) {
225
+ this.fields = fields;
226
+ this.envelope = envelope;
227
+ this.codecs = codecs;
228
+ this.handler = handler;
229
+ this.context = context;
230
+ this.signal = signal;
231
+ this.record = record;
232
+ this.handlerSurface = handlerSurface;
233
+ this.channelName = channelName;
234
+ }
235
+ get missingHandlerMessage() {
236
+ return `No ${this.handlerSurface} request handler is registered for '${this.channelName}:${this.fields.packetName}'.`;
237
+ }
238
+ writeReply(reply) {
239
+ requireMeshReplyAccepted(this.record.reply((0, channel_envelope_1.encodeChannelReplyParts)(this.envelope.header, reply, this.codecs)));
240
+ }
241
+ writeError(error) {
242
+ requireMeshReplyAccepted(this.record.reply((0, channel_envelope_1.encodeChannelErrorReplyParts)(this.envelope.header, error)));
243
+ }
244
+ }
223
245
  function requireMeshReplyAccepted(result) {
224
246
  if (result !== runtime_values_1.SubmitResult.Ok) {
225
247
  throw new configuration_1.ZLinkConfigurationException(`MeshNode channel reply was not accepted (submit result ${result}).`);
@@ -381,7 +403,7 @@ class ZLinkRoutePacketDispatcher {
381
403
  await this.pipeline.dispatchMalformed({
382
404
  info,
383
405
  error,
384
- transportRequest: replyToken !== null,
406
+ transportRequest: replyToken != null,
385
407
  sourceRid: String(received.routingId),
386
408
  writeProtocolError: replyToken === null
387
409
  ? undefined
@@ -452,9 +474,9 @@ class ZLinkRoutePacketDispatcher {
452
474
  writeError: (error) => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)(envelope.header, error)))
453
475
  });
454
476
  }
455
- async dispatchMesh(record, signal) {
477
+ dispatchMesh(record, signal, admit) {
456
478
  if (record.parts.length === 0 || record.parts[0].data().length === 0) {
457
- return;
479
+ return completedChannelReply;
458
480
  }
459
481
  let envelope;
460
482
  try {
@@ -462,16 +484,15 @@ class ZLinkRoutePacketDispatcher {
462
484
  }
463
485
  catch (error) {
464
486
  const info = (0, channel_envelope_inspection_1.inspectMalformedChannelHeader)(record.parts, this.flowEnabled());
465
- await this.pipeline.dispatchMalformed({
487
+ return this.pipeline.dispatchMalformed({
466
488
  info,
467
489
  error,
468
- transportRequest: false,
490
+ transportRequest: isMeshRequest(record),
469
491
  sourceRid: record.sourceNodeRid == null ? undefined : String(record.sourceNodeRid),
470
492
  writeProtocolError: async (protocolError) => {
471
493
  requireMeshReplyAccepted(record.reply((0, channel_envelope_1.encodeChannelErrorReplyParts)((0, channel_envelope_inspection_1.malformedProtocolErrorRequestHeader)(this.routerChannelId, info), protocolError)));
472
494
  }
473
495
  });
474
- return;
475
496
  }
476
497
  const packetName = envelope.packetName;
477
498
  if (packetName === undefined) {
@@ -480,11 +501,10 @@ class ZLinkRoutePacketDispatcher {
480
501
  const sourceNodeRid = String(record.sourceNodeRid ?? '');
481
502
  const correlationId = envelope.header.correlationId ?? undefined;
482
503
  if (envelope.header.kind === 3 /* ZLinkChannelMessageKind.Command */) {
483
- await this.dispatchMeshCommand(envelope, packetName, sourceNodeRid, record.sourceNodeRid, signal);
484
- return;
504
+ return this.dispatchMeshCommand(envelope, packetName, sourceNodeRid, record.sourceNodeRid, signal, admit);
485
505
  }
486
506
  if (envelope.header.kind !== 1 /* ZLinkChannelMessageKind.Request */) {
487
- return;
507
+ return completedChannelReply;
488
508
  }
489
509
  const fields = {
490
510
  messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request,
@@ -494,22 +514,7 @@ class ZLinkRoutePacketDispatcher {
494
514
  flowId: envelope.header.flowId,
495
515
  flowOrigin: envelope.header.flowOrigin
496
516
  };
497
- const codecs = (0, channel_framework_packets_1.codecsForFrameworkPacket)(packetName, this.codecs);
498
- await this.pipeline.dispatchRequest({
499
- fields,
500
- envelope,
501
- codecs,
502
- handler: this.requestHandlers.get(packetName),
503
- context: this.createRouteContext(envelope, record.sourceNodeRid),
504
- signal,
505
- missingHandlerMessage: `No routed request handler is registered for '${this.routerChannelId}:${packetName}'.`,
506
- writeReply: async (reply) => {
507
- requireMeshReplyAccepted(record.reply((0, channel_envelope_1.encodeChannelReplyParts)(envelope.header, reply, codecs)));
508
- },
509
- writeError: async (error) => {
510
- requireMeshReplyAccepted(record.reply((0, channel_envelope_1.encodeChannelErrorReplyParts)(envelope.header, error)));
511
- }
512
- });
517
+ return this.pipeline.dispatchRequest(new ZLinkMeshRequestDispatch(fields, envelope, (0, channel_framework_packets_1.codecsForFrameworkPacket)(packetName, this.codecs), this.requestHandlers.get(packetName), this.createRouteContext(envelope, record.sourceNodeRid), signal, record, 'routed', this.routerChannelId), admit);
513
518
  }
514
519
  async dispatchLocalCommand(parts, sourceNodeRid, signal) {
515
520
  if (parts.length === 0 || parts[0].data().length === 0)
@@ -537,7 +542,7 @@ class ZLinkRoutePacketDispatcher {
537
542
  }
538
543
  await this.dispatchMeshCommand(envelope, packetName, String(sourceNodeRid), sourceNodeRid, signal);
539
544
  }
540
- dispatchMeshCommand(envelope, packetName, sourceRid, sourceNodeRid, signal) {
545
+ dispatchMeshCommand(envelope, packetName, sourceRid, sourceNodeRid, signal, admit) {
541
546
  return this.pipeline.dispatchOneWay({
542
547
  fields: {
543
548
  messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
@@ -552,13 +557,13 @@ class ZLinkRoutePacketDispatcher {
552
557
  handler: this.sendHandlers.get(packetName),
553
558
  context: this.createRouteContext(envelope, sourceNodeRid),
554
559
  signal
555
- });
560
+ }, admit);
556
561
  }
557
562
  submitReply(operation) {
558
563
  if (operation.submit() === false) {
559
564
  throw new configuration_1.ZLinkConfigurationException('Route reply was not accepted by Core.');
560
565
  }
561
- return Promise.resolve();
566
+ return completedChannelReply;
562
567
  }
563
568
  createRouteContext(envelope, sourceRid) {
564
569
  const sourceNodeRid = String(sourceRid ?? '');
@@ -573,3 +578,6 @@ class ZLinkRoutePacketDispatcher {
573
578
  }
574
579
  }
575
580
  exports.ZLinkRoutePacketDispatcher = ZLinkRoutePacketDispatcher;
581
+ function isMeshRequest(record) {
582
+ return record.kind === service_runtime_contracts_1.ReceiveKind.NodeRequest || record.kind === service_runtime_contracts_1.ReceiveKind.ChannelRequest;
583
+ }
@@ -1,6 +1,6 @@
1
1
  import type { Message } from '../../contracts/Common/Message';
2
2
  import type { ZLinkFlowOrigin } from '../../contracts';
3
- import { ZLinkChannelMessageKind, type ZLinkChannelEnvelopeHeader } from './channel-envelope';
3
+ import { type ZLinkChannelEnvelopeHeader } from './channel-envelope';
4
4
  export declare function tryDecodeChannelHeader(parts: readonly Message[], flowEnabled?: boolean): ZLinkChannelEnvelopeHeader | undefined;
5
5
  /**
6
6
  * Identifiers salvaged from a malformed channel envelope. Spec 27 §7: a
@@ -9,7 +9,6 @@ export declare function tryDecodeChannelHeader(parts: readonly Message[], flowEn
9
9
  * present only when it is individually well-formed.
10
10
  */
11
11
  export interface ZLinkMalformedChannelHeaderInfo {
12
- readonly kind?: ZLinkChannelMessageKind;
13
12
  readonly channelName?: string;
14
13
  readonly messageName?: string;
15
14
  readonly correlationId?: string;
@@ -29,15 +29,12 @@ function inspectMalformedChannelHeader(parts, flowEnabled) {
29
29
  catch {
30
30
  return {};
31
31
  }
32
- if (header.formatMarker !== channel_envelope_1.ZLINK_CHANNEL_FORMAT_MARKER)
33
- return {};
34
32
  const flowId = typeof header.flowId === 'string' && CHANNEL_FLOW_ID_PATTERN.test(header.flowId)
35
33
  ? header.flowId
36
34
  : undefined;
37
35
  const flowOrigin = salvageFlowOrigin(header.flowOrigin);
38
36
  const flowPairValid = flowEnabled && flowId !== undefined && flowOrigin !== undefined;
39
37
  return {
40
- kind: salvageChannelKind(header.kind),
41
38
  channelName: salvageString(header.channelName),
42
39
  messageName: salvageString(header.messageName),
43
40
  correlationId: salvageCorrelationId(header.correlationId),
@@ -66,23 +63,11 @@ function malformedProtocolErrorRequestHeader(channelName, info) {
66
63
  };
67
64
  }
68
65
  const CHANNEL_FLOW_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
69
- function salvageChannelKind(value) {
70
- return value === 1 /* ZLinkChannelMessageKind.Request */ ||
71
- value === 2 /* ZLinkChannelMessageKind.Response */ ||
72
- value === 3 /* ZLinkChannelMessageKind.Command */ ||
73
- value === 4 /* ZLinkChannelMessageKind.Publish */ ||
74
- value === 5 /* ZLinkChannelMessageKind.Error */
75
- ? value
76
- : undefined;
77
- }
78
66
  function salvageString(value) {
79
67
  return typeof value === 'string' && value.length > 0 ? value : undefined;
80
68
  }
81
69
  function salvageCorrelationId(value) {
82
- if (typeof value !== 'string')
83
- return undefined;
84
- const byteLength = Buffer.byteLength(value, 'utf8');
85
- return byteLength >= 1 && byteLength <= 64 && /^[\x00-\x7f]*$/.test(value) ? value : undefined;
70
+ return typeof value === 'string' && (0, channel_envelope_1.isValidChannelCorrelationId)(value) ? value : undefined;
86
71
  }
87
72
  function salvageFlowOrigin(value) {
88
73
  switch (value) {
@@ -54,6 +54,7 @@ export declare function encodeChannelReplyParts(request: ZLinkChannelEnvelopeHea
54
54
  */
55
55
  export declare const ZLINK_FRAMEWORK_ORIGIN_METADATA_KEY = "zlink.origin";
56
56
  export declare const ZLINK_FRAMEWORK_ORIGIN_METADATA_VALUE = "framework";
57
+ export declare function channelErrorKindFromCode(code: string): ZLinkFrameworkErrorKind | undefined;
57
58
  export declare function channelErrorCodeName(kind: ZLinkFrameworkErrorKind): string;
58
59
  /**
59
60
  * A channel error decoded from an Error reply envelope. `origin` carries the
@@ -71,3 +72,4 @@ export declare function decodeChannelEnvelope(parts: readonly Message[], decoded
71
72
  export declare function decodeChannelPayload(envelope: ZLinkChannelEnvelope, codecs?: ZLinkChannelEnvelopeCodecRegistry): unknown;
72
73
  export declare function closeMessages(parts: readonly MessageLike[]): void;
73
74
  export declare function decodeChannelHeader(parts: readonly Message[], flowEnabled?: boolean): ZLinkChannelEnvelopeHeader;
75
+ export declare function isValidChannelCorrelationId(value: string): boolean;