@zlink-systems/framework 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Handlers/JsonContract.js +23 -11
  13. package/dist/contracts/Spots/SpotKind.js +16 -8
  14. package/dist/location-store-integration.js +16 -16
  15. package/dist/nest-integration.js +17 -11
  16. package/dist/runtime/abort.js +9 -5
  17. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  18. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  19. package/dist/runtime/actors/actor-client.js +83 -63
  20. package/dist/runtime/actors/actor-context.js +24 -18
  21. package/dist/runtime/actors/actor-creation.js +4 -3
  22. package/dist/runtime/actors/actor-handoff.js +89 -92
  23. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  24. package/dist/runtime/actors/actor-mailbox.js +1 -1
  25. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  26. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  27. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  28. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  29. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  30. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  31. package/dist/runtime/actors/bound-session-wire.js +14 -9
  32. package/dist/runtime/actors/deferred-join-accepted-journal.js +158 -124
  33. package/dist/runtime/actors/index.js +2 -5
  34. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  35. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  36. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  37. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  38. package/dist/runtime/admission.js +2 -6
  39. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  40. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  41. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  42. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  43. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  44. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  45. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  46. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  47. package/dist/runtime/backend/node/node-raw-mesh-backend.js +116 -113
  48. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  49. package/dist/runtime/backend/runtime-message.js +3 -3
  50. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  51. package/dist/runtime/backend/runtime-values.js +4 -5
  52. package/dist/runtime/channels/channel-clients.js +27 -24
  53. package/dist/runtime/channels/channel-dispatch-pipeline.js +10 -18
  54. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  55. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  56. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  57. package/dist/runtime/channels/channel-envelope.js +83 -47
  58. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  59. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  60. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  61. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  62. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  63. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  64. package/dist/runtime/channels/channel-transports.js +43 -33
  65. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  66. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  67. package/dist/runtime/channels/dispatch-error-reporter.js +9 -7
  68. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  69. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  70. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  71. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  72. package/dist/runtime/channels/source-spot-router.js +6 -2
  73. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  74. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  75. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  76. package/dist/runtime/diagnostics/index.js +38 -10
  77. package/dist/runtime/diagnostics/message-flow.js +47 -39
  78. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  79. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  80. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  81. package/dist/runtime/execution/index.js +7 -6
  82. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  83. package/dist/runtime/execution/state-lane.js +2 -2
  84. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -23
  85. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  86. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  87. package/dist/runtime/foundation/raw-service-mesh-runtime.js +136 -136
  88. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  89. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  90. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  91. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  92. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  93. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  94. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  95. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  96. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  97. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  98. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  99. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  100. package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
  101. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  102. package/dist/runtime/foundation/service-topology-registry.js +96 -95
  103. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  104. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  105. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  106. package/dist/runtime/framework-errors-internal.js +7 -10
  107. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  108. package/dist/runtime/handlers/index.js +3 -1
  109. package/dist/runtime/host/actor-packet-relay.js +74 -70
  110. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  111. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  112. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  113. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  114. package/dist/runtime/host/application-job-queue.js +18 -22
  115. package/dist/runtime/host/bound-session-relay.js +3 -1
  116. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  117. package/dist/runtime/host/host-capacity-status.js +8 -4
  118. package/dist/runtime/host/index.js +244 -227
  119. package/dist/runtime/host/instance-activation-authority.js +93 -96
  120. package/dist/runtime/host/location-runtime-owner.js +16 -14
  121. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  122. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  123. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  124. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  125. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  126. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  127. package/dist/runtime/host/runtime-shutdown.js +1 -2
  128. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  129. package/dist/runtime/host/spot-address-transport.js +69 -71
  130. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  131. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  132. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  133. package/dist/runtime/locations/actor-location-claims.js +26 -20
  134. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  135. package/dist/runtime/locations/authority-key-codec.js +7 -7
  136. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  137. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  138. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  139. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  140. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  141. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  142. package/dist/runtime/locations/key-codec.js +1 -1
  143. package/dist/runtime/locations/lease-tracker.js +23 -21
  144. package/dist/runtime/locations/lifecycle.js +4 -5
  145. package/dist/runtime/locations/location-store-repository.js +368 -324
  146. package/dist/runtime/locations/opaque-record-key.js +2 -2
  147. package/dist/runtime/locations/resolvers.js +73 -82
  148. package/dist/runtime/locations/runtime.js +68 -63
  149. package/dist/runtime/locations/spot-location-claims.js +39 -35
  150. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  151. package/dist/runtime/messaging/packet-name.js +7 -6
  152. package/dist/runtime/messaging/payload-codec.js +21 -18
  153. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  154. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  155. package/dist/runtime/routing-id.js +3 -5
  156. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  157. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  158. package/dist/runtime/spots/index.js +208 -219
  159. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  160. package/dist/runtime/spots/spot-activation-state.js +17 -15
  161. package/dist/runtime/spots/spot-activation.js +33 -16
  162. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  163. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  164. package/dist/runtime/spots/spot-actor-packet-dispatch.js +23 -20
  165. package/dist/runtime/spots/spot-actor-packet-drain.js +12 -10
  166. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  167. package/dist/runtime/spots/spot-closing.js +3 -7
  168. package/dist/runtime/spots/spot-context.js +2 -2
  169. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  170. package/dist/runtime/spots/spot-handle.js +6 -3
  171. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  172. package/dist/runtime/spots/spot-manager-public.js +5 -6
  173. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  174. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  175. package/dist/runtime/spots/spot-node-runtime-manager.js +74 -85
  176. package/dist/runtime/spots/spot-outbound.js +10 -14
  177. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  178. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  179. package/dist/runtime/spots/spot-route-packet-dispatch.js +16 -14
  180. package/dist/runtime/spots/spot-route-replies.js +4 -6
  181. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  182. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +1 -2
  183. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  184. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  185. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  186. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  187. package/dist/runtime/spots/spot-subscription-dispatch.js +5 -5
  188. package/dist/runtime/spots/spot-timer.js +25 -29
  189. package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
  190. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  191. package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
  192. package/dist/runtime/streams/bound-session-service.js +8 -9
  193. package/dist/runtime/streams/index.js +20 -19
  194. package/dist/runtime/streams/managed-stream.js +32 -30
  195. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  196. package/dist/runtime/streams/protocol.js +29 -18
  197. package/dist/runtime/streams/session-actor-coordinator.js +34 -37
  198. package/dist/runtime/streams/session-context.js +30 -28
  199. package/dist/runtime/streams/session-provider.js +2 -2
  200. package/dist/runtime/streams/session-serial-executor.js +1 -2
  201. package/dist/runtime/streams/stream-frame-factory.js +11 -5
  202. package/dist/runtime/streams/stream-session-runtime.js +70 -66
  203. package/dist/runtime/workers/index.js +15 -4
  204. package/package.json +2 -2
  205. package/src/contracts/Channels/RouteCalls.ts +6 -1
  206. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  207. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  208. package/src/contracts/Configuration/Builders.ts +14 -14
  209. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  210. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  211. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  212. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  213. package/src/contracts/Configuration/Registration.ts +46 -17
  214. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  215. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  216. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  217. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  218. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  219. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  220. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  221. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  222. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  223. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  224. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -6
  225. package/src/contracts/Errors/index.ts +1 -4
  226. package/src/contracts/Handlers/Attributes.ts +15 -9
  227. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  228. package/src/contracts/Handlers/JsonContract.ts +53 -19
  229. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  230. package/src/contracts/Locations/Authority.ts +4 -11
  231. package/src/contracts/Locations/Keys.ts +6 -1
  232. package/src/contracts/Locations/Options.ts +3 -2
  233. package/src/contracts/Locations/RelocationStore.ts +1 -4
  234. package/src/contracts/Locations/Resolvers.ts +5 -5
  235. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  236. package/src/contracts/Locations/Stores.ts +1 -2
  237. package/src/contracts/Locations/index.ts +2 -8
  238. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  239. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  240. package/src/contracts/Spots/Contracts.ts +2 -8
  241. package/src/contracts/Spots/SpotKind.ts +16 -8
  242. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  243. package/src/contracts/Streams/IZLinkSession.ts +0 -1
  244. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  245. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  246. package/src/internal.ts +5 -4
  247. package/src/location-store-integration.ts +24 -16
  248. package/src/nest-integration.ts +40 -25
  249. package/src/runtime/abort.ts +10 -4
  250. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  251. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  252. package/src/runtime/actors/actor-client.ts +162 -133
  253. package/src/runtime/actors/actor-context.ts +138 -130
  254. package/src/runtime/actors/actor-creation.ts +47 -44
  255. package/src/runtime/actors/actor-execution-context.ts +6 -4
  256. package/src/runtime/actors/actor-handoff.ts +269 -293
  257. package/src/runtime/actors/actor-join-deferred-scope.ts +5 -4
  258. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  259. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  260. package/src/runtime/actors/actor-mailbox.ts +16 -19
  261. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  262. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  263. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  264. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  265. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  266. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  267. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  268. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  269. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  270. package/src/runtime/actors/bound-session-wire.ts +37 -17
  271. package/src/runtime/actors/deferred-join-accepted-journal.ts +351 -320
  272. package/src/runtime/actors/index.ts +43 -86
  273. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  274. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  275. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  276. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  277. package/src/runtime/admission.ts +9 -9
  278. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  279. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  280. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  281. package/src/runtime/backend/contracts/index.ts +73 -52
  282. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  283. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  284. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  285. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  286. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  287. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  288. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  289. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  290. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  291. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  292. package/src/runtime/backend/node/node-raw-mesh-backend.ts +335 -383
  293. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  294. package/src/runtime/backend/runtime-message.ts +5 -3
  295. package/src/runtime/backend/runtime-values.ts +10 -7
  296. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  297. package/src/runtime/channels/channel-clients.ts +93 -73
  298. package/src/runtime/channels/channel-dispatch-pipeline.ts +40 -42
  299. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  300. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  301. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  302. package/src/runtime/channels/channel-envelope.ts +256 -150
  303. package/src/runtime/channels/channel-multipart.ts +13 -5
  304. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  305. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  306. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  307. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  308. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  309. package/src/runtime/channels/channel-socket-options.ts +3 -10
  310. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  311. package/src/runtime/channels/channel-transports.ts +215 -197
  312. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  313. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  314. package/src/runtime/channels/dispatch-error-reporter.ts +11 -8
  315. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  316. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  317. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  318. package/src/runtime/channels/index.ts +1 -4
  319. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  320. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  321. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  322. package/src/runtime/channels/source-spot-router.ts +26 -22
  323. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  324. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  325. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  326. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  327. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  328. package/src/runtime/codecs/index.ts +3 -2
  329. package/src/runtime/diagnostics/flow-context.ts +12 -3
  330. package/src/runtime/diagnostics/index.ts +96 -61
  331. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  332. package/src/runtime/diagnostics/message-flow.ts +95 -76
  333. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  334. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  335. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  336. package/src/runtime/execution/index.ts +18 -26
  337. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  338. package/src/runtime/execution/state-lane.ts +2 -2
  339. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -51
  340. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  341. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  342. package/src/runtime/foundation/operation-identity.ts +1 -2
  343. package/src/runtime/foundation/operation-registry.ts +8 -2
  344. package/src/runtime/foundation/raw-service-mesh-runtime.ts +312 -385
  345. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  346. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  347. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  348. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  349. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  350. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  351. package/src/runtime/foundation/service-mailbox.ts +14 -14
  352. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  353. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  354. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  355. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  356. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  357. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  358. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  359. package/src/runtime/foundation/service-session-binding-ingress-port.ts +1 -4
  360. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  361. package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
  362. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  363. package/src/runtime/foundation/service-topology-registry.ts +157 -159
  364. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  365. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  366. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  367. package/src/runtime/framework-errors-internal.ts +31 -30
  368. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  369. package/src/runtime/handlers/index.ts +18 -8
  370. package/src/runtime/host/actor-packet-relay.ts +290 -261
  371. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  372. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  373. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  374. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  375. package/src/runtime/host/application-job-queue.ts +32 -48
  376. package/src/runtime/host/bound-session-relay.ts +7 -9
  377. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  378. package/src/runtime/host/host-capacity-status.ts +10 -9
  379. package/src/runtime/host/index.ts +861 -789
  380. package/src/runtime/host/instance-activation-authority.ts +125 -143
  381. package/src/runtime/host/location-runtime-owner.ts +38 -26
  382. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  383. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  384. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  385. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  386. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  387. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  388. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  389. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  390. package/src/runtime/host/runtime-shutdown.ts +4 -3
  391. package/src/runtime/host/service-relocation-control.ts +14 -5
  392. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  393. package/src/runtime/host/spot-address-transport.ts +284 -237
  394. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  395. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  396. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  397. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  398. package/src/runtime/locations/actor-location-claims.ts +61 -49
  399. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  400. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  401. package/src/runtime/locations/authority-key-codec.ts +13 -10
  402. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  403. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  404. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  405. package/src/runtime/locations/canonical-codec.ts +3 -1
  406. package/src/runtime/locations/creation-operation-id.ts +4 -3
  407. package/src/runtime/locations/domain-store-contract.ts +13 -7
  408. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  409. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  410. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  411. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  412. package/src/runtime/locations/key-codec.ts +3 -4
  413. package/src/runtime/locations/lease-tracker.ts +36 -27
  414. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  415. package/src/runtime/locations/lifecycle.ts +33 -28
  416. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  417. package/src/runtime/locations/opaque-record-key.ts +4 -9
  418. package/src/runtime/locations/resolvers.ts +201 -178
  419. package/src/runtime/locations/runtime.ts +251 -159
  420. package/src/runtime/locations/spot-location-claims.ts +110 -112
  421. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  422. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  423. package/src/runtime/messaging/packet-name.ts +8 -6
  424. package/src/runtime/messaging/payload-codec.ts +70 -50
  425. package/src/runtime/messaging/submission-result.ts +6 -9
  426. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  427. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  428. package/src/runtime/routing-id.ts +10 -7
  429. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  430. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  431. package/src/runtime/spots/index.ts +593 -563
  432. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  433. package/src/runtime/spots/spot-activation-state.ts +43 -51
  434. package/src/runtime/spots/spot-activation.ts +179 -116
  435. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  436. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  437. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  438. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  439. package/src/runtime/spots/spot-actor-packet-dispatch.ts +184 -153
  440. package/src/runtime/spots/spot-actor-packet-drain.ts +54 -42
  441. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  442. package/src/runtime/spots/spot-closing.ts +11 -12
  443. package/src/runtime/spots/spot-context.ts +46 -26
  444. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  445. package/src/runtime/spots/spot-handle.ts +17 -15
  446. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  447. package/src/runtime/spots/spot-location-claim.ts +5 -4
  448. package/src/runtime/spots/spot-manager-public.ts +62 -82
  449. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  450. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  451. package/src/runtime/spots/spot-node-runtime-manager.ts +230 -221
  452. package/src/runtime/spots/spot-outbound.ts +47 -59
  453. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  454. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  455. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  456. package/src/runtime/spots/spot-route-packet-dispatch.ts +128 -95
  457. package/src/runtime/spots/spot-route-replies.ts +23 -24
  458. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  459. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  460. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +11 -17
  461. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  462. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  463. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  464. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  465. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  466. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  467. package/src/runtime/spots/spot-subscription-dispatch.ts +56 -46
  468. package/src/runtime/spots/spot-timer.ts +98 -91
  469. package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
  470. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
  471. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  472. package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
  473. package/src/runtime/streams/bound-session-response-target.ts +29 -8
  474. package/src/runtime/streams/bound-session-service.ts +39 -39
  475. package/src/runtime/streams/index.ts +176 -100
  476. package/src/runtime/streams/managed-stream.ts +98 -87
  477. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  478. package/src/runtime/streams/protocol.ts +73 -43
  479. package/src/runtime/streams/session-actor-coordinator.ts +97 -89
  480. package/src/runtime/streams/session-calls.ts +2 -8
  481. package/src/runtime/streams/session-context.ts +66 -48
  482. package/src/runtime/streams/session-provider.ts +5 -7
  483. package/src/runtime/streams/session-serial-executor.ts +7 -6
  484. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  485. package/src/runtime/streams/stream-frame-factory.ts +55 -38
  486. package/src/runtime/streams/stream-session-runtime.ts +268 -210
  487. package/src/runtime/workers/index.ts +68 -29
@@ -14,10 +14,7 @@ import {
14
14
  import type { Message } from '../../contracts/Common/Message';
15
15
  import { SubmitResult } from '../backend/runtime-values';
16
16
  import type { ReceiveRecord } from '../foundation/service-runtime-contracts';
17
- import {
18
- ZLinkConfigurationException,
19
- type ZLinkRouteChannelOptions
20
- } from '../configuration';
17
+ import { ZLinkConfigurationException, type ZLinkRouteChannelOptions } from '../configuration';
21
18
  import type { ZLinkBackendSpotRouteBridge } from '../backend/contracts';
22
19
  import type { ZLinkRuntimeMetrics } from '../diagnostics';
23
20
  import {
@@ -102,18 +99,25 @@ export class ZLinkChannelRequestDispatcher {
102
99
  return this.options.dispatchErrors.flow.flowCreationEnabled();
103
100
  }
104
101
 
105
- async dispatch(received: {
106
- parts: readonly Message[];
107
- routingId: unknown;
108
- spotId?: unknown;
109
- replyToken: unknown | null;
110
- send?: () => ZLinkMultipartOperation<ZLinkMultipartAsyncSubmitOperation>;
111
- }, router: {
112
- reply(routingId: unknown, replyToken: unknown): ZLinkMultipartReplyOperation;
113
- }, signal?: AbortSignal, decodedHeader?: ZLinkChannelEnvelopeHeader): Promise<boolean | void> {
102
+ async dispatch(
103
+ received: {
104
+ parts: readonly Message[];
105
+ routingId: unknown;
106
+ spotId?: unknown;
107
+ replyToken: unknown | null;
108
+ send?: () => ZLinkMultipartOperation<ZLinkMultipartAsyncSubmitOperation>;
109
+ },
110
+ router: {
111
+ reply(routingId: unknown, replyToken: unknown): ZLinkMultipartReplyOperation;
112
+ },
113
+ signal?: AbortSignal,
114
+ decodedHeader?: ZLinkChannelEnvelopeHeader
115
+ ): Promise<boolean | void> {
114
116
  if (received.spotId !== null && received.spotId !== undefined) {
115
117
  if (received.send === undefined) {
116
- throw new ZLinkConfigurationException('Routed SPOT packet is missing a local SPOT delivery context.');
118
+ throw new ZLinkConfigurationException(
119
+ 'Routed SPOT packet is missing a local SPOT delivery context.'
120
+ );
117
121
  }
118
122
  await appendParts(received.send(), received.parts).submit().admitted;
119
123
  return true;
@@ -131,18 +135,20 @@ export class ZLinkChannelRequestDispatcher {
131
135
  info,
132
136
  error,
133
137
  transportRequest: replyToken !== null,
134
- writeProtocolError: replyToken === null
135
- ? undefined
136
- : protocolError => this.submitReply(
137
- appendParts(
138
- router.reply(received.routingId, replyToken),
139
- encodeChannelErrorReplyParts(
140
- malformedProtocolErrorRequestHeader(this.options.channelName, info),
141
- protocolError
138
+ writeProtocolError:
139
+ replyToken === null
140
+ ? undefined
141
+ : (protocolError) =>
142
+ this.submitReply(
143
+ appendParts(
144
+ router.reply(received.routingId, replyToken),
145
+ encodeChannelErrorReplyParts(
146
+ malformedProtocolErrorRequestHeader(this.options.channelName, info),
147
+ protocolError
148
+ )
149
+ ),
150
+ signal
142
151
  )
143
- ),
144
- signal
145
- )
146
152
  });
147
153
  return;
148
154
  }
@@ -211,20 +217,22 @@ export class ZLinkChannelRequestDispatcher {
211
217
  context,
212
218
  signal,
213
219
  missingHandlerMessage: `No channel request handler is registered for '${this.options.channelName}:${packetName}'.`,
214
- writeReply: reply => this.submitReply(
215
- appendParts(
216
- router.reply(received.routingId, replyToken),
217
- encodeChannelReplyParts(envelope.header, reply, this.options.codecs)
220
+ writeReply: (reply) =>
221
+ this.submitReply(
222
+ appendParts(
223
+ router.reply(received.routingId, replyToken),
224
+ encodeChannelReplyParts(envelope.header, reply, this.options.codecs)
225
+ ),
226
+ signal
218
227
  ),
219
- signal
220
- ),
221
- writeError: error => this.submitReply(
222
- appendParts(
223
- router.reply(received.routingId, replyToken),
224
- encodeChannelErrorReplyParts(envelope.header, error)
225
- ),
226
- signal
227
- )
228
+ writeError: (error) =>
229
+ this.submitReply(
230
+ appendParts(
231
+ router.reply(received.routingId, replyToken),
232
+ encodeChannelErrorReplyParts(envelope.header, error)
233
+ ),
234
+ signal
235
+ )
228
236
  });
229
237
  }
230
238
 
@@ -243,10 +251,14 @@ export class ZLinkChannelRequestDispatcher {
243
251
  transportRequest: false,
244
252
  sourceRid: record.sourceNodeRid == null ? undefined : String(record.sourceNodeRid),
245
253
  writeProtocolError: async (protocolError) => {
246
- requireMeshReplyAccepted(record.reply(encodeChannelErrorReplyParts(
247
- malformedProtocolErrorRequestHeader(this.options.channelName, info),
248
- protocolError
249
- )));
254
+ requireMeshReplyAccepted(
255
+ record.reply(
256
+ encodeChannelErrorReplyParts(
257
+ malformedProtocolErrorRequestHeader(this.options.channelName, info),
258
+ protocolError
259
+ )
260
+ )
261
+ );
250
262
  }
251
263
  });
252
264
  return;
@@ -292,19 +304,22 @@ export class ZLinkChannelRequestDispatcher {
292
304
  signal,
293
305
  missingHandlerMessage: `No channel request handler is registered for '${this.options.channelName}:${packetName}'.`,
294
306
  writeReply: async (reply) => {
295
- requireMeshReplyAccepted(record.reply(
296
- encodeChannelReplyParts(envelope.header, reply, this.options.codecs)
297
- ));
307
+ requireMeshReplyAccepted(
308
+ record.reply(encodeChannelReplyParts(envelope.header, reply, this.options.codecs))
309
+ );
298
310
  },
299
311
  writeError: async (error) => {
300
- requireMeshReplyAccepted(record.reply(
301
- encodeChannelErrorReplyParts(envelope.header, error)
302
- ));
312
+ requireMeshReplyAccepted(
313
+ record.reply(encodeChannelErrorReplyParts(envelope.header, error))
314
+ );
303
315
  }
304
316
  });
305
317
  }
306
318
 
307
- private submitReply(operation: ZLinkMultipartReplyOperation, signal?: AbortSignal): Promise<void> {
319
+ private submitReply(
320
+ operation: ZLinkMultipartReplyOperation,
321
+ signal?: AbortSignal
322
+ ): Promise<void> {
308
323
  void signal;
309
324
  if (operation.submit() === false) {
310
325
  throw new ZLinkConfigurationException('Channel reply was not accepted by Core.');
@@ -337,7 +352,9 @@ export class ZLinkChannelRequestDispatcher {
337
352
 
338
353
  function requireMeshReplyAccepted(result: number): void {
339
354
  if (result !== SubmitResult.Ok) {
340
- throw new ZLinkConfigurationException(`MeshNode channel reply was not accepted (submit result ${result}).`);
355
+ throw new ZLinkConfigurationException(
356
+ `MeshNode channel reply was not accepted (submit result ${result}).`
357
+ );
341
358
  }
342
359
  }
343
360
 
@@ -447,7 +464,9 @@ export interface ZLinkRoutePacketDispatcherOptions {
447
464
  readonly spotRouteBridge?: ZLinkBackendSpotRouteBridge;
448
465
  }
449
466
 
450
- export function collectRouteChannelHandlers(routeChannel: ZLinkRouteChannelOptions): ZLinkRouteHandlerRegistration[] {
467
+ export function collectRouteChannelHandlers(
468
+ routeChannel: ZLinkRouteChannelOptions
469
+ ): ZLinkRouteHandlerRegistration[] {
451
470
  return [
452
471
  ...(routeChannel.handlers ?? []),
453
472
  ...(routeChannel.sendHandlers ?? []).map((handler): ZLinkRouteHandlerRegistration => ({
@@ -484,7 +503,9 @@ export class ZLinkRoutePacketDispatcher {
484
503
  for (const handler of options.handlers) {
485
504
  const target = handler.kind === 'send' ? this.sendHandlers : this.requestHandlers;
486
505
  if (target.has(handler.packetName)) {
487
- throw new ZLinkConfigurationException(`Duplicate routed handler '${options.routerChannelId}:${handler.kind}:${handler.packetName}'.`);
506
+ throw new ZLinkConfigurationException(
507
+ `Duplicate routed handler '${options.routerChannelId}:${handler.kind}:${handler.packetName}'.`
508
+ );
488
509
  }
489
510
  target.set(handler.packetName, handler.handler as never);
490
511
  }
@@ -508,9 +529,9 @@ export class ZLinkRoutePacketDispatcher {
508
529
  }): boolean | Promise<void> {
509
530
  const channelHeader = tryDecodeChannelHeader(received.parts, this.flowEnabled());
510
531
  if (
511
- this.spotRouteBridge !== undefined
512
- && channelHeader === undefined
513
- && this.spotRouteBridge.handleRouterReceived(
532
+ this.spotRouteBridge !== undefined &&
533
+ channelHeader === undefined &&
534
+ this.spotRouteBridge.handleRouterReceived(
514
535
  this.routerChannelId,
515
536
  received.routingId as RoutingId,
516
537
  0n,
@@ -521,23 +542,32 @@ export class ZLinkRoutePacketDispatcher {
521
542
  }
522
543
  if (received.spotId !== null && received.spotId !== undefined) {
523
544
  if (received.send === undefined) {
524
- throw new ZLinkConfigurationException('Routed SPOT packet is missing a local SPOT delivery context.');
545
+ throw new ZLinkConfigurationException(
546
+ 'Routed SPOT packet is missing a local SPOT delivery context.'
547
+ );
525
548
  }
526
549
  return appendParts(received.send(), received.parts).submit().admitted;
527
550
  }
528
551
  return false;
529
552
  }
530
553
 
531
- async dispatch(received: {
532
- parts: readonly Message[];
533
- routingId: unknown;
534
- spotId?: unknown;
535
- replyToken: unknown | null;
536
- send?: () => ZLinkMultipartOperation<ZLinkMultipartAsyncSubmitOperation>;
537
- }, router: {
538
- reply(routingId: unknown, replyToken: unknown): ZLinkMultipartReplyOperation;
539
- }, signal?: AbortSignal, decodedHeader?: ZLinkChannelEnvelopeHeader, infrastructureChecked = false): Promise<boolean | void> {
540
- const channelHeader = decodedHeader ?? tryDecodeChannelHeader(received.parts, this.flowEnabled());
554
+ async dispatch(
555
+ received: {
556
+ parts: readonly Message[];
557
+ routingId: unknown;
558
+ spotId?: unknown;
559
+ replyToken: unknown | null;
560
+ send?: () => ZLinkMultipartOperation<ZLinkMultipartAsyncSubmitOperation>;
561
+ },
562
+ router: {
563
+ reply(routingId: unknown, replyToken: unknown): ZLinkMultipartReplyOperation;
564
+ },
565
+ signal?: AbortSignal,
566
+ decodedHeader?: ZLinkChannelEnvelopeHeader,
567
+ infrastructureChecked = false
568
+ ): Promise<boolean | void> {
569
+ const channelHeader =
570
+ decodedHeader ?? tryDecodeChannelHeader(received.parts, this.flowEnabled());
541
571
  if (!infrastructureChecked) {
542
572
  const infrastructure = this.dispatchInfrastructure(received);
543
573
  if (infrastructure !== false) {
@@ -559,17 +589,19 @@ export class ZLinkRoutePacketDispatcher {
559
589
  error,
560
590
  transportRequest: replyToken !== null,
561
591
  sourceRid: String(received.routingId),
562
- writeProtocolError: replyToken === null
563
- ? undefined
564
- : protocolError => this.submitReply(
565
- appendParts(
566
- router.reply(received.routingId, replyToken),
567
- encodeChannelErrorReplyParts(
568
- malformedProtocolErrorRequestHeader(this.routerChannelId, info),
569
- protocolError
592
+ writeProtocolError:
593
+ replyToken === null
594
+ ? undefined
595
+ : (protocolError) =>
596
+ this.submitReply(
597
+ appendParts(
598
+ router.reply(received.routingId, replyToken),
599
+ encodeChannelErrorReplyParts(
600
+ malformedProtocolErrorRequestHeader(this.routerChannelId, info),
601
+ protocolError
602
+ )
603
+ )
570
604
  )
571
- )
572
- )
573
605
  });
574
606
  return;
575
607
  }
@@ -636,18 +668,20 @@ export class ZLinkRoutePacketDispatcher {
636
668
  context: this.createRouteContext(envelope, received.routingId),
637
669
  signal,
638
670
  missingHandlerMessage: `No routed request handler is registered for '${this.routerChannelId}:${packetName}'.`,
639
- writeReply: reply => this.submitReply(
640
- appendParts(
641
- router.reply(received.routingId, replyToken),
642
- encodeChannelReplyParts(envelope.header, reply, codecs)
643
- )
644
- ),
645
- writeError: error => this.submitReply(
646
- appendParts(
647
- router.reply(received.routingId, replyToken),
648
- encodeChannelErrorReplyParts(envelope.header, error)
671
+ writeReply: (reply) =>
672
+ this.submitReply(
673
+ appendParts(
674
+ router.reply(received.routingId, replyToken),
675
+ encodeChannelReplyParts(envelope.header, reply, codecs)
676
+ )
677
+ ),
678
+ writeError: (error) =>
679
+ this.submitReply(
680
+ appendParts(
681
+ router.reply(received.routingId, replyToken),
682
+ encodeChannelErrorReplyParts(envelope.header, error)
683
+ )
649
684
  )
650
- )
651
685
  });
652
686
  }
653
687
 
@@ -666,10 +700,14 @@ export class ZLinkRoutePacketDispatcher {
666
700
  transportRequest: false,
667
701
  sourceRid: record.sourceNodeRid == null ? undefined : String(record.sourceNodeRid),
668
702
  writeProtocolError: async (protocolError) => {
669
- requireMeshReplyAccepted(record.reply(encodeChannelErrorReplyParts(
670
- malformedProtocolErrorRequestHeader(this.routerChannelId, info),
671
- protocolError
672
- )));
703
+ requireMeshReplyAccepted(
704
+ record.reply(
705
+ encodeChannelErrorReplyParts(
706
+ malformedProtocolErrorRequestHeader(this.routerChannelId, info),
707
+ protocolError
708
+ )
709
+ )
710
+ );
673
711
  }
674
712
  });
675
713
  return;
@@ -681,7 +719,13 @@ export class ZLinkRoutePacketDispatcher {
681
719
  const sourceNodeRid = String(record.sourceNodeRid ?? '');
682
720
  const correlationId = envelope.header.correlationId ?? undefined;
683
721
  if (envelope.header.kind === ZLinkChannelMessageKind.Command) {
684
- await this.dispatchMeshCommand(envelope, packetName, sourceNodeRid, record.sourceNodeRid, signal);
722
+ await this.dispatchMeshCommand(
723
+ envelope,
724
+ packetName,
725
+ sourceNodeRid,
726
+ record.sourceNodeRid,
727
+ signal
728
+ );
685
729
  return;
686
730
  }
687
731
  if (envelope.header.kind !== ZLinkChannelMessageKind.Request) {
@@ -705,10 +749,14 @@ export class ZLinkRoutePacketDispatcher {
705
749
  signal,
706
750
  missingHandlerMessage: `No routed request handler is registered for '${this.routerChannelId}:${packetName}'.`,
707
751
  writeReply: async (reply) => {
708
- requireMeshReplyAccepted(record.reply(encodeChannelReplyParts(envelope.header, reply, codecs)));
752
+ requireMeshReplyAccepted(
753
+ record.reply(encodeChannelReplyParts(envelope.header, reply, codecs))
754
+ );
709
755
  },
710
756
  writeError: async (error) => {
711
- requireMeshReplyAccepted(record.reply(encodeChannelErrorReplyParts(envelope.header, error)));
757
+ requireMeshReplyAccepted(
758
+ record.reply(encodeChannelErrorReplyParts(envelope.header, error))
759
+ );
712
760
  }
713
761
  });
714
762
  }
@@ -733,13 +781,21 @@ export class ZLinkRoutePacketDispatcher {
733
781
  return;
734
782
  }
735
783
  if (envelope.header.kind !== ZLinkChannelMessageKind.Command) {
736
- throw new ZLinkConfigurationException('Local node-direct dispatch requires a command packet.');
784
+ throw new ZLinkConfigurationException(
785
+ 'Local node-direct dispatch requires a command packet.'
786
+ );
737
787
  }
738
788
  const packetName = envelope.packetName;
739
789
  if (packetName === undefined) {
740
790
  throw new ZLinkConfigurationException('Route packet is missing packetName.');
741
791
  }
742
- await this.dispatchMeshCommand(envelope, packetName, String(sourceNodeRid), sourceNodeRid, signal);
792
+ await this.dispatchMeshCommand(
793
+ envelope,
794
+ packetName,
795
+ String(sourceNodeRid),
796
+ sourceNodeRid,
797
+ signal
798
+ );
743
799
  }
744
800
 
745
801
  private dispatchMeshCommand(
@@ -50,9 +50,10 @@ export function inspectMalformedChannelHeader(
50
50
  return {};
51
51
  }
52
52
  if (header.formatMarker !== ZLINK_CHANNEL_FORMAT_MARKER) return {};
53
- const flowId = typeof header.flowId === 'string' && CHANNEL_FLOW_ID_PATTERN.test(header.flowId)
54
- ? header.flowId
55
- : undefined;
53
+ const flowId =
54
+ typeof header.flowId === 'string' && CHANNEL_FLOW_ID_PATTERN.test(header.flowId)
55
+ ? header.flowId
56
+ : undefined;
56
57
  const flowOrigin = salvageFlowOrigin(header.flowOrigin);
57
58
  const flowPairValid = flowEnabled && flowId !== undefined && flowOrigin !== undefined;
58
59
  return {
@@ -93,11 +94,11 @@ const CHANNEL_FLOW_ID_PATTERN =
93
94
  /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
94
95
 
95
96
  function salvageChannelKind(value: unknown): ZLinkChannelMessageKind | undefined {
96
- return value === ZLinkChannelMessageKind.Request
97
- || value === ZLinkChannelMessageKind.Response
98
- || value === ZLinkChannelMessageKind.Command
99
- || value === ZLinkChannelMessageKind.Publish
100
- || value === ZLinkChannelMessageKind.Error
97
+ return value === ZLinkChannelMessageKind.Request ||
98
+ value === ZLinkChannelMessageKind.Response ||
99
+ value === ZLinkChannelMessageKind.Command ||
100
+ value === ZLinkChannelMessageKind.Publish ||
101
+ value === ZLinkChannelMessageKind.Error
101
102
  ? value
102
103
  : undefined;
103
104
  }
@@ -109,17 +110,20 @@ function salvageString(value: unknown): string | undefined {
109
110
  function salvageCorrelationId(value: unknown): string | undefined {
110
111
  if (typeof value !== 'string') return undefined;
111
112
  const byteLength = Buffer.byteLength(value, 'utf8');
112
- return byteLength >= 1 && byteLength <= 64 && /^[\x00-\x7f]*$/.test(value)
113
- ? value
114
- : undefined;
113
+ return byteLength >= 1 && byteLength <= 64 && /^[\x00-\x7f]*$/.test(value) ? value : undefined;
115
114
  }
116
115
 
117
116
  function salvageFlowOrigin(value: unknown): ZLinkFlowOrigin | undefined {
118
117
  switch (value) {
119
- case 1: return 'Inbound';
120
- case 2: return 'Timer';
121
- case 3: return 'Application';
122
- case 4: return 'Lifecycle';
123
- default: return undefined;
118
+ case 1:
119
+ return 'Inbound';
120
+ case 2:
121
+ return 'Timer';
122
+ case 3:
123
+ return 'Application';
124
+ case 4:
125
+ return 'Lifecycle';
126
+ default:
127
+ return undefined;
124
128
  }
125
129
  }