@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
@@ -1,3 +1,4 @@
1
+ import type { ZLinkMeshDispatchAdmission } from '../admission';
1
2
  import type {
2
3
  RoutingId,
3
4
  ZLinkMessageContext,
@@ -13,7 +14,7 @@ import {
13
14
  } from '../../contracts/Dispatch/ZLinkDispatchOptions';
14
15
  import type { Message } from '../../contracts/Common/Message';
15
16
  import { SubmitResult } from '../backend/runtime-values';
16
- import type { ReceiveRecord } from '../foundation/service-runtime-contracts';
17
+ import { ReceiveKind, type ReceiveRecord } from '../foundation/service-runtime-contracts';
17
18
  import { ZLinkConfigurationException, type ZLinkRouteChannelOptions } from '../configuration';
18
19
  import type { ZLinkBackendSpotRouteBridge } from '../backend/contracts';
19
20
  import type { ZLinkRuntimeMetrics } from '../diagnostics';
@@ -40,7 +41,8 @@ import {
40
41
  import { codecsForFrameworkPacket } from './channel-framework-packets';
41
42
  import {
42
43
  ZLinkChannelDispatchPipeline,
43
- type ZLinkChannelDispatchFields
44
+ type ZLinkChannelDispatchFields,
45
+ type ZLinkRequestDispatch
44
46
  } from './channel-dispatch-pipeline';
45
47
 
46
48
  export interface ZLinkChannelRequestDispatcherOptions {
@@ -59,6 +61,8 @@ export interface ZLinkChannelRequestDispatcherOptions {
59
61
  readonly unhandled?: ZLinkUnhandledDispatchOptions;
60
62
  }
61
63
 
64
+ const completedChannelReply = Promise.resolve();
65
+
62
66
  export interface ZLinkChannelRequestHandler {
63
67
  handle(payload: unknown, context: ZLinkMessageContext): Promise<unknown> | unknown;
64
68
  }
@@ -134,7 +138,7 @@ export class ZLinkChannelRequestDispatcher {
134
138
  await this.pipeline.dispatchMalformed({
135
139
  info,
136
140
  error,
137
- transportRequest: replyToken !== null,
141
+ transportRequest: replyToken != null,
138
142
  writeProtocolError:
139
143
  replyToken === null
140
144
  ? undefined
@@ -236,19 +240,23 @@ export class ZLinkChannelRequestDispatcher {
236
240
  });
237
241
  }
238
242
 
239
- async dispatchMesh(record: ReceiveRecord, signal?: AbortSignal): Promise<void> {
243
+ dispatchMesh(
244
+ record: ReceiveRecord,
245
+ signal?: AbortSignal,
246
+ admit?: ZLinkMeshDispatchAdmission
247
+ ): void | Promise<void> {
240
248
  if (record.parts.length === 0 || record.parts[0].data().length === 0) {
241
- return;
249
+ return completedChannelReply;
242
250
  }
243
251
  let envelope: ReturnType<typeof decodeChannelEnvelope>;
244
252
  try {
245
253
  envelope = decodeChannelEnvelope(record.parts, undefined, this.flowEnabled());
246
254
  } catch (error) {
247
255
  const info = inspectMalformedChannelHeader(record.parts, this.flowEnabled());
248
- await this.pipeline.dispatchMalformed({
256
+ return this.pipeline.dispatchMalformed({
249
257
  info,
250
258
  error,
251
- transportRequest: false,
259
+ transportRequest: isMeshRequest(record),
252
260
  sourceRid: record.sourceNodeRid == null ? undefined : String(record.sourceNodeRid),
253
261
  writeProtocolError: async (protocolError) => {
254
262
  requireMeshReplyAccepted(
@@ -261,7 +269,6 @@ export class ZLinkChannelRequestDispatcher {
261
269
  );
262
270
  }
263
271
  });
264
- return;
265
272
  }
266
273
  const packetName = envelope.packetName;
267
274
  if (packetName === undefined) {
@@ -269,24 +276,26 @@ export class ZLinkChannelRequestDispatcher {
269
276
  }
270
277
  const correlationId = envelope.header.correlationId ?? undefined;
271
278
  if (envelope.header.kind === ZLinkChannelMessageKind.Command) {
272
- await this.pipeline.dispatchOneWay({
273
- fields: {
274
- messageKind: ZLinkDispatchMessageKind.Send,
275
- packetName,
276
- correlationId,
277
- flowId: envelope.header.flowId,
278
- flowOrigin: envelope.header.flowOrigin
279
+ return this.pipeline.dispatchOneWay(
280
+ {
281
+ fields: {
282
+ messageKind: ZLinkDispatchMessageKind.Send,
283
+ packetName,
284
+ correlationId,
285
+ flowId: envelope.header.flowId,
286
+ flowOrigin: envelope.header.flowOrigin
287
+ },
288
+ envelope,
289
+ codecs: this.options.codecs,
290
+ handler: this.options.sendHandlers?.get(packetName),
291
+ context: this.createMeshContext(envelope, record.sourceNodeRid),
292
+ signal
279
293
  },
280
- envelope,
281
- codecs: this.options.codecs,
282
- handler: this.options.sendHandlers?.get(packetName),
283
- context: this.createMeshContext(envelope, record.sourceNodeRid),
284
- signal
285
- });
286
- return;
294
+ admit
295
+ );
287
296
  }
288
297
  if (envelope.header.kind !== ZLinkChannelMessageKind.Request) {
289
- return;
298
+ return completedChannelReply;
290
299
  }
291
300
  const fields: ZLinkChannelDispatchFields = {
292
301
  messageKind: ZLinkDispatchMessageKind.Request,
@@ -295,25 +304,20 @@ export class ZLinkChannelRequestDispatcher {
295
304
  flowId: envelope.header.flowId,
296
305
  flowOrigin: envelope.header.flowOrigin
297
306
  };
298
- await this.pipeline.dispatchRequest({
299
- fields,
300
- envelope,
301
- codecs: this.options.codecs,
302
- handler: this.options.handlers.get(packetName),
303
- context: this.createMeshContext(envelope, record.sourceNodeRid),
304
- signal,
305
- missingHandlerMessage: `No channel request handler is registered for '${this.options.channelName}:${packetName}'.`,
306
- writeReply: async (reply) => {
307
- requireMeshReplyAccepted(
308
- record.reply(encodeChannelReplyParts(envelope.header, reply, this.options.codecs))
309
- );
310
- },
311
- writeError: async (error) => {
312
- requireMeshReplyAccepted(
313
- record.reply(encodeChannelErrorReplyParts(envelope.header, error))
314
- );
315
- }
316
- });
307
+ return this.pipeline.dispatchRequest(
308
+ new ZLinkMeshRequestDispatch(
309
+ fields,
310
+ envelope,
311
+ this.options.codecs,
312
+ this.options.handlers.get(packetName),
313
+ this.createMeshContext(envelope, record.sourceNodeRid),
314
+ signal,
315
+ record,
316
+ 'channel',
317
+ this.options.channelName
318
+ ),
319
+ admit
320
+ );
317
321
  }
318
322
 
319
323
  private submitReply(
@@ -324,7 +328,7 @@ export class ZLinkChannelRequestDispatcher {
324
328
  if (operation.submit() === false) {
325
329
  throw new ZLinkConfigurationException('Channel reply was not accepted by Core.');
326
330
  }
327
- return Promise.resolve();
331
+ return completedChannelReply;
328
332
  }
329
333
 
330
334
  private createMeshContext(
@@ -350,6 +354,43 @@ export class ZLinkChannelRequestDispatcher {
350
354
  }
351
355
  }
352
356
 
357
+ /**
358
+ * One mesh request handed to the dispatch pipeline. The reply writers are
359
+ * methods over the received record instead of per-message closures, and the
360
+ * missing-handler text is built only when no handler exists.
361
+ */
362
+ class ZLinkMeshRequestDispatch<
363
+ TContext extends ZLinkMessageContext
364
+ > implements ZLinkRequestDispatch<TContext> {
365
+ constructor(
366
+ readonly fields: ZLinkChannelDispatchFields,
367
+ readonly envelope: ReturnType<typeof decodeChannelEnvelope>,
368
+ readonly codecs: ZLinkChannelEnvelopeCodecRegistry | undefined,
369
+ readonly handler: ZLinkRequestDispatch<TContext>['handler'],
370
+ readonly context: TContext,
371
+ readonly signal: AbortSignal | undefined,
372
+ private readonly record: ReceiveRecord,
373
+ private readonly handlerSurface: 'channel' | 'routed',
374
+ private readonly channelName: string
375
+ ) {}
376
+
377
+ get missingHandlerMessage(): string {
378
+ return `No ${this.handlerSurface} request handler is registered for '${this.channelName}:${this.fields.packetName}'.`;
379
+ }
380
+
381
+ writeReply(reply: unknown): void {
382
+ requireMeshReplyAccepted(
383
+ this.record.reply(encodeChannelReplyParts(this.envelope.header, reply, this.codecs))
384
+ );
385
+ }
386
+
387
+ writeError(error: unknown): void {
388
+ requireMeshReplyAccepted(
389
+ this.record.reply(encodeChannelErrorReplyParts(this.envelope.header, error))
390
+ );
391
+ }
392
+ }
393
+
353
394
  function requireMeshReplyAccepted(result: number): void {
354
395
  if (result !== SubmitResult.Ok) {
355
396
  throw new ZLinkConfigurationException(
@@ -587,7 +628,7 @@ export class ZLinkRoutePacketDispatcher {
587
628
  await this.pipeline.dispatchMalformed({
588
629
  info,
589
630
  error,
590
- transportRequest: replyToken !== null,
631
+ transportRequest: replyToken != null,
591
632
  sourceRid: String(received.routingId),
592
633
  writeProtocolError:
593
634
  replyToken === null
@@ -685,19 +726,23 @@ export class ZLinkRoutePacketDispatcher {
685
726
  });
686
727
  }
687
728
 
688
- async dispatchMesh(record: ReceiveRecord, signal?: AbortSignal): Promise<void> {
729
+ dispatchMesh(
730
+ record: ReceiveRecord,
731
+ signal?: AbortSignal,
732
+ admit?: ZLinkMeshDispatchAdmission
733
+ ): void | Promise<void> {
689
734
  if (record.parts.length === 0 || record.parts[0].data().length === 0) {
690
- return;
735
+ return completedChannelReply;
691
736
  }
692
737
  let envelope: ReturnType<typeof decodeChannelEnvelope>;
693
738
  try {
694
739
  envelope = decodeChannelEnvelope(record.parts, undefined, this.flowEnabled());
695
740
  } catch (error) {
696
741
  const info = inspectMalformedChannelHeader(record.parts, this.flowEnabled());
697
- await this.pipeline.dispatchMalformed({
742
+ return this.pipeline.dispatchMalformed({
698
743
  info,
699
744
  error,
700
- transportRequest: false,
745
+ transportRequest: isMeshRequest(record),
701
746
  sourceRid: record.sourceNodeRid == null ? undefined : String(record.sourceNodeRid),
702
747
  writeProtocolError: async (protocolError) => {
703
748
  requireMeshReplyAccepted(
@@ -710,7 +755,6 @@ export class ZLinkRoutePacketDispatcher {
710
755
  );
711
756
  }
712
757
  });
713
- return;
714
758
  }
715
759
  const packetName = envelope.packetName;
716
760
  if (packetName === undefined) {
@@ -719,17 +763,17 @@ export class ZLinkRoutePacketDispatcher {
719
763
  const sourceNodeRid = String(record.sourceNodeRid ?? '');
720
764
  const correlationId = envelope.header.correlationId ?? undefined;
721
765
  if (envelope.header.kind === ZLinkChannelMessageKind.Command) {
722
- await this.dispatchMeshCommand(
766
+ return this.dispatchMeshCommand(
723
767
  envelope,
724
768
  packetName,
725
769
  sourceNodeRid,
726
770
  record.sourceNodeRid,
727
- signal
771
+ signal,
772
+ admit
728
773
  );
729
- return;
730
774
  }
731
775
  if (envelope.header.kind !== ZLinkChannelMessageKind.Request) {
732
- return;
776
+ return completedChannelReply;
733
777
  }
734
778
  const fields: ZLinkChannelDispatchFields = {
735
779
  messageKind: ZLinkDispatchMessageKind.Request,
@@ -739,26 +783,20 @@ export class ZLinkRoutePacketDispatcher {
739
783
  flowId: envelope.header.flowId,
740
784
  flowOrigin: envelope.header.flowOrigin
741
785
  };
742
- const codecs = codecsForFrameworkPacket(packetName, this.codecs);
743
- await this.pipeline.dispatchRequest({
744
- fields,
745
- envelope,
746
- codecs,
747
- handler: this.requestHandlers.get(packetName),
748
- context: this.createRouteContext(envelope, record.sourceNodeRid),
749
- signal,
750
- missingHandlerMessage: `No routed request handler is registered for '${this.routerChannelId}:${packetName}'.`,
751
- writeReply: async (reply) => {
752
- requireMeshReplyAccepted(
753
- record.reply(encodeChannelReplyParts(envelope.header, reply, codecs))
754
- );
755
- },
756
- writeError: async (error) => {
757
- requireMeshReplyAccepted(
758
- record.reply(encodeChannelErrorReplyParts(envelope.header, error))
759
- );
760
- }
761
- });
786
+ return this.pipeline.dispatchRequest(
787
+ new ZLinkMeshRequestDispatch(
788
+ fields,
789
+ envelope,
790
+ codecsForFrameworkPacket(packetName, this.codecs),
791
+ this.requestHandlers.get(packetName),
792
+ this.createRouteContext(envelope, record.sourceNodeRid),
793
+ signal,
794
+ record,
795
+ 'routed',
796
+ this.routerChannelId
797
+ ),
798
+ admit
799
+ );
762
800
  }
763
801
 
764
802
  async dispatchLocalCommand(
@@ -803,30 +841,34 @@ export class ZLinkRoutePacketDispatcher {
803
841
  packetName: string,
804
842
  sourceRid: string,
805
843
  sourceNodeRid: unknown,
806
- signal?: AbortSignal
807
- ): Promise<void> {
808
- return this.pipeline.dispatchOneWay({
809
- fields: {
810
- messageKind: ZLinkDispatchMessageKind.Send,
811
- packetName,
812
- sourceRid,
813
- correlationId: envelope.header.correlationId ?? undefined,
814
- flowId: envelope.header.flowId,
815
- flowOrigin: envelope.header.flowOrigin
844
+ signal?: AbortSignal,
845
+ admit?: ZLinkMeshDispatchAdmission
846
+ ): void | Promise<void> {
847
+ return this.pipeline.dispatchOneWay(
848
+ {
849
+ fields: {
850
+ messageKind: ZLinkDispatchMessageKind.Send,
851
+ packetName,
852
+ sourceRid,
853
+ correlationId: envelope.header.correlationId ?? undefined,
854
+ flowId: envelope.header.flowId,
855
+ flowOrigin: envelope.header.flowOrigin
856
+ },
857
+ envelope,
858
+ codecs: codecsForFrameworkPacket(packetName, this.codecs),
859
+ handler: this.sendHandlers.get(packetName),
860
+ context: this.createRouteContext(envelope, sourceNodeRid),
861
+ signal
816
862
  },
817
- envelope,
818
- codecs: codecsForFrameworkPacket(packetName, this.codecs),
819
- handler: this.sendHandlers.get(packetName),
820
- context: this.createRouteContext(envelope, sourceNodeRid),
821
- signal
822
- });
863
+ admit
864
+ );
823
865
  }
824
866
 
825
867
  private submitReply(operation: ZLinkMultipartReplyOperation): Promise<void> {
826
868
  if (operation.submit() === false) {
827
869
  throw new ZLinkConfigurationException('Route reply was not accepted by Core.');
828
870
  }
829
- return Promise.resolve();
871
+ return completedChannelReply;
830
872
  }
831
873
 
832
874
  private createRouteContext(
@@ -844,3 +886,7 @@ export class ZLinkRoutePacketDispatcher {
844
886
  };
845
887
  }
846
888
  }
889
+
890
+ function isMeshRequest(record: ReceiveRecord): boolean {
891
+ return record.kind === ReceiveKind.NodeRequest || record.kind === ReceiveKind.ChannelRequest;
892
+ }
@@ -3,6 +3,7 @@ import type { Message } from '../../contracts/Common/Message';
3
3
  import type { ZLinkFlowOrigin } from '../../contracts';
4
4
  import {
5
5
  decodeChannelHeader,
6
+ isValidChannelCorrelationId,
6
7
  ZLINK_CHANNEL_FORMAT_MARKER,
7
8
  ZLinkChannelMessageKind,
8
9
  type ZLinkChannelEnvelopeHeader
@@ -29,7 +30,6 @@ export function tryDecodeChannelHeader(
29
30
  * present only when it is individually well-formed.
30
31
  */
31
32
  export interface ZLinkMalformedChannelHeaderInfo {
32
- readonly kind?: ZLinkChannelMessageKind;
33
33
  readonly channelName?: string;
34
34
  readonly messageName?: string;
35
35
  readonly correlationId?: string;
@@ -50,7 +50,6 @@ export function inspectMalformedChannelHeader(
50
50
  } catch {
51
51
  return {};
52
52
  }
53
- if (header.formatMarker !== ZLINK_CHANNEL_FORMAT_MARKER) return {};
54
53
  const flowId =
55
54
  typeof header.flowId === 'string' && CHANNEL_FLOW_ID_PATTERN.test(header.flowId)
56
55
  ? header.flowId
@@ -58,7 +57,6 @@ export function inspectMalformedChannelHeader(
58
57
  const flowOrigin = salvageFlowOrigin(header.flowOrigin);
59
58
  const flowPairValid = flowEnabled && flowId !== undefined && flowOrigin !== undefined;
60
59
  return {
61
- kind: salvageChannelKind(header.kind),
62
60
  channelName: salvageString(header.channelName),
63
61
  messageName: salvageString(header.messageName),
64
62
  correlationId: salvageCorrelationId(header.correlationId),
@@ -94,24 +92,12 @@ export function malformedProtocolErrorRequestHeader(
94
92
  const CHANNEL_FLOW_ID_PATTERN =
95
93
  /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
96
94
 
97
- function salvageChannelKind(value: unknown): ZLinkChannelMessageKind | undefined {
98
- return value === ZLinkChannelMessageKind.Request ||
99
- value === ZLinkChannelMessageKind.Response ||
100
- value === ZLinkChannelMessageKind.Command ||
101
- value === ZLinkChannelMessageKind.Publish ||
102
- value === ZLinkChannelMessageKind.Error
103
- ? value
104
- : undefined;
105
- }
106
-
107
95
  function salvageString(value: unknown): string | undefined {
108
96
  return typeof value === 'string' && value.length > 0 ? value : undefined;
109
97
  }
110
98
 
111
99
  function salvageCorrelationId(value: unknown): string | undefined {
112
- if (typeof value !== 'string') return undefined;
113
- const byteLength = Buffer.byteLength(value, 'utf8');
114
- return byteLength >= 1 && byteLength <= 64 && /^[\x00-\x7f]*$/.test(value) ? value : undefined;
100
+ return typeof value === 'string' && isValidChannelCorrelationId(value) ? value : undefined;
115
101
  }
116
102
 
117
103
  function salvageFlowOrigin(value: unknown): ZLinkFlowOrigin | undefined {