@zlink-systems/framework 0.21.0 → 0.23.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 (516) 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/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
  13. package/dist/contracts/Handlers/JsonContract.js +23 -11
  14. package/dist/contracts/Spots/SpotKind.js +16 -8
  15. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
  16. package/dist/location-store-integration.js +16 -16
  17. package/dist/nest-integration.js +17 -11
  18. package/dist/runtime/abort.js +9 -5
  19. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  20. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  21. package/dist/runtime/actors/actor-client.js +83 -63
  22. package/dist/runtime/actors/actor-context.js +28 -22
  23. package/dist/runtime/actors/actor-creation.js +4 -3
  24. package/dist/runtime/actors/actor-handoff.js +89 -92
  25. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
  26. package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
  27. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  28. package/dist/runtime/actors/actor-mailbox.js +1 -1
  29. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  30. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  31. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  32. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  33. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  34. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  35. package/dist/runtime/actors/bound-session-wire.js +14 -9
  36. package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
  37. package/dist/runtime/actors/index.js +2 -5
  38. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  39. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  40. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  41. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  42. package/dist/runtime/admission.js +2 -6
  43. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  44. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  45. package/dist/runtime/backend/contracts/index.d.ts +1 -0
  46. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  47. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  48. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  49. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  50. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  51. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  52. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
  53. package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
  54. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  55. package/dist/runtime/backend/runtime-message.js +3 -3
  56. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  57. package/dist/runtime/backend/runtime-values.js +4 -5
  58. package/dist/runtime/channels/channel-clients.js +27 -24
  59. package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
  60. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  61. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  62. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  63. package/dist/runtime/channels/channel-envelope.js +83 -47
  64. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  65. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  66. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  67. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  68. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  69. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  70. package/dist/runtime/channels/channel-transports.js +46 -42
  71. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  72. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  73. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
  74. package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
  75. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  76. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  77. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  78. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  79. package/dist/runtime/channels/source-spot-router.js +6 -2
  80. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  81. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  82. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  83. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
  84. package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
  85. package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
  86. package/dist/runtime/diagnostics/flow-context.js +2 -2
  87. package/dist/runtime/diagnostics/index.js +38 -10
  88. package/dist/runtime/diagnostics/message-flow.js +58 -42
  89. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  90. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  91. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  92. package/dist/runtime/execution/index.js +7 -6
  93. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  94. package/dist/runtime/execution/state-lane.js +2 -2
  95. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
  96. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  97. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  98. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
  99. package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
  100. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  101. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  102. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  103. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  104. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  105. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  106. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  107. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  108. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  109. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  110. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  111. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
  112. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  113. package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
  114. package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
  115. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  116. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
  117. package/dist/runtime/foundation/service-topology-registry.js +105 -96
  118. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  119. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  120. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  121. package/dist/runtime/framework-errors-internal.js +7 -10
  122. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  123. package/dist/runtime/handlers/index.js +3 -1
  124. package/dist/runtime/host/actor-packet-relay.js +74 -70
  125. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  126. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  127. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  128. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  129. package/dist/runtime/host/application-job-queue.js +18 -22
  130. package/dist/runtime/host/bound-session-relay.js +3 -1
  131. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  132. package/dist/runtime/host/host-capacity-status.js +8 -4
  133. package/dist/runtime/host/index.js +245 -228
  134. package/dist/runtime/host/instance-activation-authority.js +93 -96
  135. package/dist/runtime/host/location-runtime-owner.js +16 -14
  136. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  137. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  138. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  139. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  140. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  141. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  142. package/dist/runtime/host/runtime-shutdown.js +1 -2
  143. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  144. package/dist/runtime/host/spot-address-transport.js +69 -71
  145. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  146. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  147. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  148. package/dist/runtime/locations/actor-location-claims.js +26 -20
  149. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  150. package/dist/runtime/locations/authority-key-codec.js +7 -7
  151. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  152. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  153. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  154. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  155. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  156. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  157. package/dist/runtime/locations/key-codec.js +1 -1
  158. package/dist/runtime/locations/lease-tracker.js +23 -21
  159. package/dist/runtime/locations/lifecycle.js +4 -5
  160. package/dist/runtime/locations/location-store-repository.js +368 -324
  161. package/dist/runtime/locations/opaque-record-key.js +2 -2
  162. package/dist/runtime/locations/resolvers.js +73 -82
  163. package/dist/runtime/locations/runtime.js +68 -63
  164. package/dist/runtime/locations/spot-location-claims.js +39 -35
  165. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  166. package/dist/runtime/messaging/packet-name.js +7 -6
  167. package/dist/runtime/messaging/payload-codec.js +21 -18
  168. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  169. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  170. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
  171. package/dist/runtime/routing-id.js +3 -5
  172. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  173. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  174. package/dist/runtime/spots/index.js +209 -220
  175. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  176. package/dist/runtime/spots/spot-activation-state.js +17 -15
  177. package/dist/runtime/spots/spot-activation.js +33 -16
  178. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  179. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  180. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
  181. package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
  182. package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
  183. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  184. package/dist/runtime/spots/spot-closing.js +3 -7
  185. package/dist/runtime/spots/spot-context.js +2 -2
  186. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  187. package/dist/runtime/spots/spot-handle.js +6 -3
  188. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  189. package/dist/runtime/spots/spot-manager-public.js +5 -6
  190. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  191. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  192. package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
  193. package/dist/runtime/spots/spot-outbound.js +10 -14
  194. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  195. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  196. package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
  197. package/dist/runtime/spots/spot-route-replies.js +4 -6
  198. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  199. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
  200. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  201. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  202. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  203. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  204. package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
  205. package/dist/runtime/spots/spot-timer.js +26 -30
  206. package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
  207. package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
  208. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
  209. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  210. package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
  211. package/dist/runtime/streams/bound-session-response-target.js +8 -1
  212. package/dist/runtime/streams/bound-session-service.d.ts +1 -0
  213. package/dist/runtime/streams/bound-session-service.js +14 -12
  214. package/dist/runtime/streams/index.js +28 -20
  215. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  216. package/dist/runtime/streams/managed-stream.js +52 -31
  217. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  218. package/dist/runtime/streams/protocol.d.ts +5 -1
  219. package/dist/runtime/streams/protocol.js +68 -20
  220. package/dist/runtime/streams/session-actor-coordinator.js +37 -41
  221. package/dist/runtime/streams/session-context.d.ts +9 -2
  222. package/dist/runtime/streams/session-context.js +50 -32
  223. package/dist/runtime/streams/session-local-actors.d.ts +3 -1
  224. package/dist/runtime/streams/session-local-actors.js +17 -2
  225. package/dist/runtime/streams/session-provider.js +2 -2
  226. package/dist/runtime/streams/session-serial-executor.js +1 -2
  227. package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
  228. package/dist/runtime/streams/stream-frame-factory.js +14 -7
  229. package/dist/runtime/streams/stream-session-runtime.js +112 -78
  230. package/dist/runtime/workers/index.js +15 -4
  231. package/package.json +3 -3
  232. package/src/contracts/Channels/RouteCalls.ts +6 -1
  233. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  234. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  235. package/src/contracts/Configuration/Builders.ts +14 -14
  236. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  237. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  238. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  239. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  240. package/src/contracts/Configuration/Registration.ts +46 -17
  241. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  242. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  243. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  244. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  245. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  246. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  247. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  248. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  249. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  250. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  251. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
  252. package/src/contracts/Errors/index.ts +1 -4
  253. package/src/contracts/Handlers/Attributes.ts +15 -9
  254. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  255. package/src/contracts/Handlers/JsonContract.ts +53 -19
  256. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  257. package/src/contracts/Locations/Authority.ts +4 -11
  258. package/src/contracts/Locations/Keys.ts +6 -1
  259. package/src/contracts/Locations/Options.ts +3 -2
  260. package/src/contracts/Locations/RelocationStore.ts +1 -4
  261. package/src/contracts/Locations/Resolvers.ts +5 -5
  262. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  263. package/src/contracts/Locations/Stores.ts +1 -2
  264. package/src/contracts/Locations/index.ts +2 -8
  265. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  266. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  267. package/src/contracts/Spots/Contracts.ts +2 -8
  268. package/src/contracts/Spots/SpotKind.ts +16 -8
  269. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  270. package/src/contracts/Streams/IZLinkSession.ts +2 -2
  271. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  272. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  273. package/src/internal.ts +5 -4
  274. package/src/location-store-integration.ts +24 -16
  275. package/src/nest-integration.ts +40 -25
  276. package/src/runtime/abort.ts +10 -4
  277. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  278. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  279. package/src/runtime/actors/actor-client.ts +162 -133
  280. package/src/runtime/actors/actor-context.ts +142 -134
  281. package/src/runtime/actors/actor-creation.ts +47 -44
  282. package/src/runtime/actors/actor-execution-context.ts +6 -4
  283. package/src/runtime/actors/actor-handoff.ts +269 -293
  284. package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
  285. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  286. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  287. package/src/runtime/actors/actor-mailbox.ts +16 -19
  288. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  289. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  290. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  291. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  292. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  293. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  294. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  295. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  296. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  297. package/src/runtime/actors/bound-session-wire.ts +37 -17
  298. package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
  299. package/src/runtime/actors/index.ts +43 -86
  300. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  301. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  302. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  303. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  304. package/src/runtime/admission.ts +9 -9
  305. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  306. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  307. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  308. package/src/runtime/backend/contracts/index.ts +77 -52
  309. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  310. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  311. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  312. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  313. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  314. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  315. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  316. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  317. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  318. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  319. package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
  320. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  321. package/src/runtime/backend/runtime-message.ts +5 -3
  322. package/src/runtime/backend/runtime-values.ts +10 -7
  323. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  324. package/src/runtime/channels/channel-clients.ts +93 -73
  325. package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
  326. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  327. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  328. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  329. package/src/runtime/channels/channel-envelope.ts +256 -150
  330. package/src/runtime/channels/channel-multipart.ts +13 -5
  331. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  332. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  333. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  334. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  335. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  336. package/src/runtime/channels/channel-socket-options.ts +3 -10
  337. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  338. package/src/runtime/channels/channel-transports.ts +218 -206
  339. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  340. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  341. package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
  342. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  343. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  344. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  345. package/src/runtime/channels/index.ts +1 -4
  346. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  347. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  348. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  349. package/src/runtime/channels/source-spot-router.ts +26 -22
  350. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  351. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  352. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  353. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  354. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  355. package/src/runtime/codecs/index.ts +3 -2
  356. package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
  357. package/src/runtime/diagnostics/flow-context.ts +18 -7
  358. package/src/runtime/diagnostics/index.ts +96 -61
  359. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  360. package/src/runtime/diagnostics/message-flow.ts +107 -79
  361. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  362. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  363. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  364. package/src/runtime/execution/index.ts +18 -26
  365. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  366. package/src/runtime/execution/state-lane.ts +2 -2
  367. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
  368. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  369. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  370. package/src/runtime/foundation/operation-identity.ts +1 -2
  371. package/src/runtime/foundation/operation-registry.ts +8 -2
  372. package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
  373. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  374. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  375. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  376. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  377. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  378. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  379. package/src/runtime/foundation/service-mailbox.ts +14 -14
  380. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  381. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  382. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  383. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  384. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  385. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  386. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  387. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
  388. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  389. package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
  390. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  391. package/src/runtime/foundation/service-topology-registry.ts +170 -159
  392. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  393. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  394. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  395. package/src/runtime/framework-errors-internal.ts +31 -30
  396. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  397. package/src/runtime/handlers/index.ts +18 -8
  398. package/src/runtime/host/actor-packet-relay.ts +290 -261
  399. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  400. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  401. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  402. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  403. package/src/runtime/host/application-job-queue.ts +32 -48
  404. package/src/runtime/host/bound-session-relay.ts +7 -9
  405. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  406. package/src/runtime/host/host-capacity-status.ts +10 -9
  407. package/src/runtime/host/index.ts +861 -789
  408. package/src/runtime/host/instance-activation-authority.ts +125 -143
  409. package/src/runtime/host/location-runtime-owner.ts +38 -26
  410. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  411. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  412. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  413. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  414. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  415. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  416. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  417. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  418. package/src/runtime/host/runtime-shutdown.ts +4 -3
  419. package/src/runtime/host/service-relocation-control.ts +14 -5
  420. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  421. package/src/runtime/host/spot-address-transport.ts +284 -237
  422. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  423. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  424. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  425. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  426. package/src/runtime/locations/actor-location-claims.ts +61 -49
  427. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  428. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  429. package/src/runtime/locations/authority-key-codec.ts +13 -10
  430. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  431. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  432. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  433. package/src/runtime/locations/canonical-codec.ts +3 -1
  434. package/src/runtime/locations/creation-operation-id.ts +4 -3
  435. package/src/runtime/locations/domain-store-contract.ts +13 -7
  436. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  437. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  438. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  439. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  440. package/src/runtime/locations/key-codec.ts +3 -4
  441. package/src/runtime/locations/lease-tracker.ts +36 -27
  442. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  443. package/src/runtime/locations/lifecycle.ts +33 -28
  444. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  445. package/src/runtime/locations/opaque-record-key.ts +4 -9
  446. package/src/runtime/locations/resolvers.ts +201 -178
  447. package/src/runtime/locations/runtime.ts +251 -159
  448. package/src/runtime/locations/spot-location-claims.ts +110 -112
  449. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  450. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  451. package/src/runtime/messaging/packet-name.ts +8 -6
  452. package/src/runtime/messaging/payload-codec.ts +70 -50
  453. package/src/runtime/messaging/submission-result.ts +6 -9
  454. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  455. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
  456. package/src/runtime/routing-id.ts +10 -7
  457. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  458. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  459. package/src/runtime/spots/index.ts +595 -564
  460. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  461. package/src/runtime/spots/spot-activation-state.ts +43 -51
  462. package/src/runtime/spots/spot-activation.ts +179 -116
  463. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  464. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  465. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  466. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  467. package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
  468. package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
  469. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  470. package/src/runtime/spots/spot-closing.ts +11 -12
  471. package/src/runtime/spots/spot-context.ts +46 -26
  472. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  473. package/src/runtime/spots/spot-handle.ts +17 -15
  474. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  475. package/src/runtime/spots/spot-location-claim.ts +5 -4
  476. package/src/runtime/spots/spot-manager-public.ts +62 -82
  477. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  478. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  479. package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
  480. package/src/runtime/spots/spot-outbound.ts +47 -59
  481. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  482. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  483. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  484. package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
  485. package/src/runtime/spots/spot-route-replies.ts +23 -24
  486. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  487. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  488. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
  489. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  490. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  491. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  492. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  493. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  494. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  495. package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
  496. package/src/runtime/spots/spot-timer.ts +103 -91
  497. package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
  498. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
  499. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  500. package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
  501. package/src/runtime/streams/bound-session-response-target.ts +39 -9
  502. package/src/runtime/streams/bound-session-service.ts +52 -42
  503. package/src/runtime/streams/index.ts +183 -100
  504. package/src/runtime/streams/managed-stream.ts +123 -90
  505. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  506. package/src/runtime/streams/protocol.ts +115 -46
  507. package/src/runtime/streams/session-actor-coordinator.ts +109 -93
  508. package/src/runtime/streams/session-calls.ts +2 -8
  509. package/src/runtime/streams/session-context.ts +96 -51
  510. package/src/runtime/streams/session-local-actors.ts +19 -3
  511. package/src/runtime/streams/session-provider.ts +5 -7
  512. package/src/runtime/streams/session-serial-executor.ts +7 -6
  513. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  514. package/src/runtime/streams/stream-frame-factory.ts +59 -40
  515. package/src/runtime/streams/stream-session-runtime.ts +317 -214
  516. package/src/runtime/workers/index.ts +68 -29
@@ -13,10 +13,7 @@ import type {
13
13
  ZLinkSpotRouterPeerConnectionOptions,
14
14
  ZLinkWorkerOptions
15
15
  } from './RegistrationTypes';
16
- import {
17
- isRouteClientEnabled,
18
- isRouteTransportDeclared
19
- } from './RouteChannelInternalState';
16
+ import { isRouteClientEnabled, isRouteTransportDeclared } from './RouteChannelInternalState';
20
17
  import { validateTimerRegistration } from './TimerRegistrationValidator';
21
18
  import { zlinkDefaultLocationOptions } from '../Locations';
22
19
  import { requireValidSendTimeoutMs } from './SendTimeoutValidation';
@@ -31,8 +28,9 @@ export function validateFrameworkRegistration(
31
28
  registration.network.bindHost,
32
29
  registration.network.advertiseHost
33
30
  );
34
- const actorCapableSpotNodes = [...registration.spotNodes.values()]
35
- .filter((spotNode) => toActorFactoryCount(spotNode.actorFactories) > 0);
31
+ const actorCapableSpotNodes = [...registration.spotNodes.values()].filter(
32
+ (spotNode) => toActorFactoryCount(spotNode.actorFactories) > 0
33
+ );
36
34
  if (actorCapableSpotNodes.length > 1) {
37
35
  throw new ZLinkConfigurationException(
38
36
  'Actor factory registration is ambiguous because more than one SpotNode owns actor factories.'
@@ -40,10 +38,7 @@ export function validateFrameworkRegistration(
40
38
  }
41
39
 
42
40
  const peerLocationConfigured = hasLocationStores(registration);
43
- validateChannelCapabilities(
44
- Object.fromEntries(registration.channels),
45
- peerLocationConfigured
46
- );
41
+ validateChannelCapabilities(Object.fromEntries(registration.channels), peerLocationConfigured);
47
42
  validateChannelTopologyNames(registration);
48
43
  validateSpotNodes(registration);
49
44
  validateRouteChannels(registration, peerLocationConfigured);
@@ -55,10 +50,13 @@ export function validateFrameworkRegistration(
55
50
  function validateChannelTopologyNames(registration: ZLinkFrameworkRegistration): void {
56
51
  const declaredChannelNames = new Set(
57
52
  [...registration.channels]
58
- .filter(([, channel]) => channel.client !== undefined
59
- || channel.server !== undefined
60
- || channel.publisher !== undefined
61
- || channel.subscriber !== undefined)
53
+ .filter(
54
+ ([, channel]) =>
55
+ channel.client !== undefined ||
56
+ channel.server !== undefined ||
57
+ channel.publisher !== undefined ||
58
+ channel.subscriber !== undefined
59
+ )
62
60
  .map(([channelName]) => channelName)
63
61
  );
64
62
  if (declaredChannelNames.size === 0) return;
@@ -86,8 +84,9 @@ function toActorFactoryCount(value: ZLinkSpotNodeOptions['actorFactories']): num
86
84
  }
87
85
 
88
86
  function hasLocationStores(registration: ZLinkFrameworkRegistration): boolean {
89
- return registration.locations.useInMemoryStores
90
- || registration.locations.storeInstance !== undefined;
87
+ return (
88
+ registration.locations.useInMemoryStores || registration.locations.storeInstance !== undefined
89
+ );
91
90
  }
92
91
 
93
92
  function validateWorkerOptions(worker: ZLinkWorkerOptions | undefined): void {
@@ -112,13 +111,13 @@ function validateLocationRegistration(registration: ZLinkFrameworkRegistration):
112
111
  );
113
112
  }
114
113
  const store = locations.storeInstance;
115
- if (store !== undefined
116
- && (typeof store.read !== 'function'
117
- || typeof store.write !== 'function'
118
- || typeof store.scan !== 'function')) {
119
- throw new ZLinkConfigurationException(
120
- 'Location Store must implement read, write, and scan.'
121
- );
114
+ if (
115
+ store !== undefined &&
116
+ (typeof store.read !== 'function' ||
117
+ typeof store.write !== 'function' ||
118
+ typeof store.scan !== 'function')
119
+ ) {
120
+ throw new ZLinkConfigurationException('Location Store must implement read, write, and scan.');
122
121
  }
123
122
  const options = { ...zlinkDefaultLocationOptions, ...locations.options };
124
123
  for (const [name, value] of Object.entries({
@@ -133,8 +132,8 @@ function validateLocationRegistration(registration: ZLinkFrameworkRegistration):
133
132
  }
134
133
  }
135
134
  if (
136
- options.ownerLeaseRenewIntervalMs + options.ownerLeaseRenewTimeoutMs
137
- >= options.ownerLeaseTtlMs - options.ownerLeaseFencingMarginMs
135
+ options.ownerLeaseRenewIntervalMs + options.ownerLeaseRenewTimeoutMs >=
136
+ options.ownerLeaseTtlMs - options.ownerLeaseFencingMarginMs
138
137
  ) {
139
138
  throw new ZLinkConfigurationException(
140
139
  'ownerLeaseRenewIntervalMs + ownerLeaseRenewTimeoutMs must be less than ownerLeaseTtlMs - ownerLeaseFencingMarginMs.'
@@ -172,9 +171,9 @@ function validateLocationRegistration(registration: ZLinkFrameworkRegistration):
172
171
  }
173
172
  }
174
173
  if (
175
- options.routeCacheMaxAgeMs > 0
176
- && options.messageFollowDurationMs > 0
177
- && options.routeCacheMaxAgeMs > options.messageFollowDurationMs - 5000
174
+ options.routeCacheMaxAgeMs > 0 &&
175
+ options.messageFollowDurationMs > 0 &&
176
+ options.routeCacheMaxAgeMs > options.messageFollowDurationMs - 5000
178
177
  ) {
179
178
  throw new ZLinkConfigurationException(
180
179
  'routeCacheMaxAgeMs must be at least 5000 ms shorter than messageFollowDurationMs.'
@@ -212,9 +211,7 @@ function validateChannelCapabilities(
212
211
  );
213
212
  }
214
213
  if (channel.noDrop !== undefined && typeof channel.noDrop !== 'boolean') {
215
- throw new ZLinkConfigurationException(
216
- `Channel '${channelName}' NoDrop must be a boolean.`
217
- );
214
+ throw new ZLinkConfigurationException(`Channel '${channelName}' NoDrop must be a boolean.`);
218
215
  }
219
216
  if (channel.noDrop !== undefined && channel.publisher === undefined) {
220
217
  throw new ZLinkConfigurationException(
@@ -257,7 +254,11 @@ function validateChannelCapabilities(
257
254
  requireSocketOptions(`channel '${channelName}' client`, channel.client);
258
255
  }
259
256
  if (channel.subscriber !== undefined) {
260
- requirePeerSource(`channel '${channelName}' subscriber`, channel.subscriber.manualConnections, peerLocationConfigured);
257
+ requirePeerSource(
258
+ `channel '${channelName}' subscriber`,
259
+ channel.subscriber.manualConnections,
260
+ peerLocationConfigured
261
+ );
261
262
  }
262
263
  if ((channel.publishHandlers ?? []).length > 0 && channel.subscriber === undefined) {
263
264
  throw new ZLinkConfigurationException(
@@ -269,14 +270,17 @@ function validateChannelCapabilities(
269
270
  `Channel '${channelName}' subscriber must register at least one publish handler.`
270
271
  );
271
272
  }
272
- if (((channel.requestHandlers ?? []).length > 0 || (channel.sendHandlers ?? []).length > 0) && channel.server === undefined) {
273
+ if (
274
+ ((channel.requestHandlers ?? []).length > 0 || (channel.sendHandlers ?? []).length > 0) &&
275
+ channel.server === undefined
276
+ ) {
273
277
  throw new ZLinkConfigurationException(
274
278
  `Channel '${channelName}' request/send handlers require a server capability.`
275
279
  );
276
280
  }
277
281
  if (
278
- channel.server !== undefined
279
- && (channel.requestHandlers ?? []).length + (channel.sendHandlers ?? []).length === 0
282
+ channel.server !== undefined &&
283
+ (channel.requestHandlers ?? []).length + (channel.sendHandlers ?? []).length === 0
280
284
  ) {
281
285
  throw new ZLinkConfigurationException(
282
286
  `Channel '${channelName}' server must register at least one request or send handler.`
@@ -298,7 +302,8 @@ function validateChannelCapabilities(
298
302
  validateRouteMeshCapability(
299
303
  `channel '${channelName}' route mesh`,
300
304
  channel.routeMesh,
301
- peerLocationConfigured);
305
+ peerLocationConfigured
306
+ );
302
307
  }
303
308
  }
304
309
  }
@@ -339,11 +344,9 @@ function validateSpotNodes(registration: ZLinkFrameworkRegistration): void {
339
344
  validateSpotNodeFactories(spotNodeName, spotNode);
340
345
  validateSpotNodeTimers(spotNode);
341
346
  if (
342
- spotNode.objectRole === 'client'
343
- && (
344
- (spotNode.routeSendHandlers?.length ?? 0) > 0
345
- || (spotNode.routeRequestHandlers?.length ?? 0) > 0
346
- )
347
+ spotNode.objectRole === 'client' &&
348
+ ((spotNode.routeSendHandlers?.length ?? 0) > 0 ||
349
+ (spotNode.routeRequestHandlers?.length ?? 0) > 0)
347
350
  ) {
348
351
  throw new ZLinkConfigurationException(
349
352
  `Object Client RouteMesh '${spotNodeName}' cannot register Node-direct handlers.`
@@ -367,8 +370,8 @@ function validateMeshChannels(
367
370
  ): void {
368
371
  for (const [channelName, channel] of Object.entries(meshChannels ?? {})) {
369
372
  requireName(`RouteMesh '${spotNodeName}' channel`, channelName);
370
- const handlerCount = (channel.requestHandlers?.length ?? 0)
371
- + (channel.sendHandlers?.length ?? 0);
373
+ const handlerCount =
374
+ (channel.requestHandlers?.length ?? 0) + (channel.sendHandlers?.length ?? 0);
372
375
  if (channel.client === true && channel.server === true) {
373
376
  throw new ZLinkConfigurationException(
374
377
  `RouteMesh '${spotNodeName}' channel '${channelName}' must register exactly one role.`
@@ -424,10 +427,19 @@ function validateSpotNodeCapability(
424
427
  return;
425
428
  }
426
429
  validateManualConnections(capabilityName, capability.manualConnections);
427
- validateRouterPeerConnections(capabilityName, 'manualPeerConnections' in capability ? capability.manualPeerConnections : undefined);
430
+ validateRouterPeerConnections(
431
+ capabilityName,
432
+ 'manualPeerConnections' in capability ? capability.manualPeerConnections : undefined
433
+ );
428
434
  requireEndpoint(capabilityName, capability.bind);
429
- if (capability.routingId !== undefined && (capability.routingId.trim().length === 0 || capability.routingId.trim() !== capability.routingId)) {
430
- throw new ZLinkConfigurationException(`${capabilityName} routingId must not be empty or padded.`);
435
+ if (
436
+ capability.routingId !== undefined &&
437
+ (capability.routingId.trim().length === 0 ||
438
+ capability.routingId.trim() !== capability.routingId)
439
+ ) {
440
+ throw new ZLinkConfigurationException(
441
+ `${capabilityName} routingId must not be empty or padded.`
442
+ );
431
443
  }
432
444
  }
433
445
 
@@ -450,15 +462,18 @@ function validateListenerNetworkIdentity(
450
462
  }
451
463
 
452
464
  function isWildcardHost(host: string): boolean {
453
- const normalized = host.startsWith('[') && host.endsWith(']')
454
- ? host.slice(1, -1)
455
- : host;
465
+ const normalized = host.startsWith('[') && host.endsWith(']') ? host.slice(1, -1) : host;
456
466
  return normalized === '0.0.0.0' || normalized === '::';
457
467
  }
458
468
 
459
- function validateManualConnections(capabilityName: string, manualConnections: readonly string[] | undefined): void {
469
+ function validateManualConnections(
470
+ capabilityName: string,
471
+ manualConnections: readonly string[] | undefined
472
+ ): void {
460
473
  if ((manualConnections ?? []).some((endpoint) => endpoint.trim().length === 0)) {
461
- throw new ZLinkConfigurationException(`${capabilityName} manual connection endpoint must not be empty.`);
474
+ throw new ZLinkConfigurationException(
475
+ `${capabilityName} manual connection endpoint must not be empty.`
476
+ );
462
477
  }
463
478
  }
464
479
 
@@ -470,19 +485,28 @@ function validateRouterPeerConnections(
470
485
  for (const connection of manualPeerConnections ?? []) {
471
486
  const peerRid = String(connection.peerRid);
472
487
  if (peerRid.trim().length === 0) {
473
- throw new ZLinkConfigurationException(`${capabilityName} manual peer routing id must not be empty.`);
488
+ throw new ZLinkConfigurationException(
489
+ `${capabilityName} manual peer routing id must not be empty.`
490
+ );
474
491
  }
475
492
  if (seenPeerRids.has(peerRid)) {
476
- throw new ZLinkConfigurationException(`${capabilityName} manual peer routing id must be unique.`);
493
+ throw new ZLinkConfigurationException(
494
+ `${capabilityName} manual peer routing id must be unique.`
495
+ );
477
496
  }
478
497
  seenPeerRids.add(peerRid);
479
498
  if (connection.endpoint.trim().length === 0) {
480
- throw new ZLinkConfigurationException(`${capabilityName} manual peer connection endpoint must not be empty.`);
499
+ throw new ZLinkConfigurationException(
500
+ `${capabilityName} manual peer connection endpoint must not be empty.`
501
+ );
481
502
  }
482
503
  }
483
504
  }
484
505
 
485
- function validateDuplicatePacketNames(label: string, packetNames: readonly string[] | undefined): void {
506
+ function validateDuplicatePacketNames(
507
+ label: string,
508
+ packetNames: readonly string[] | undefined
509
+ ): void {
486
510
  const seen = new Set<string>();
487
511
  for (const packetName of packetNames ?? []) {
488
512
  requireName(label, packetName);
@@ -508,7 +532,9 @@ function requirePeerSource(
508
532
  if ((manualConnections ?? []).length > 0 || peerLocationConfigured) {
509
533
  return;
510
534
  }
511
- throw new ZLinkConfigurationException(`${capabilityName} requires location stores or manual connections.`);
535
+ throw new ZLinkConfigurationException(
536
+ `${capabilityName} requires location stores or manual connections.`
537
+ );
512
538
  }
513
539
 
514
540
  function validateFanoutPublisherIdentity(
@@ -528,7 +554,8 @@ function validateFanoutPublisherIdentity(
528
554
  `channel '${channelName}' publisher must select a fixed routing id or an automatic routing id prefix.`
529
555
  );
530
556
  }
531
- if (routingId !== undefined) requireName(`channel '${channelName}' publisher routingId`, routingId);
557
+ if (routingId !== undefined)
558
+ requireName(`channel '${channelName}' publisher routingId`, routingId);
532
559
  }
533
560
 
534
561
  function requireEndpoint(capabilityName: string, endpoint: string | undefined): void {
@@ -557,7 +584,10 @@ function validateStreamNodes(registration: ZLinkFrameworkRegistration): void {
557
584
  streamNode.advertiseHost
558
585
  );
559
586
  if (streamNode.tlsServer !== undefined) {
560
- requireFilePath(`STREAM node '${streamNodeName}' TLS certificate`, streamNode.tlsServer.certificatePath);
587
+ requireFilePath(
588
+ `STREAM node '${streamNodeName}' TLS certificate`,
589
+ streamNode.tlsServer.certificatePath
590
+ );
561
591
  requireFilePath(`STREAM node '${streamNodeName}' TLS key`, streamNode.tlsServer.keyPath);
562
592
  }
563
593
  if (streamNode.session === undefined) {
@@ -579,7 +609,9 @@ function validateStreamNodes(registration: ZLinkFrameworkRegistration): void {
579
609
  `STREAM node '${streamNodeName}' enables Actor dispatch but no Location Store is registered.`
580
610
  );
581
611
  }
582
- if (![...registration.spotNodes.values()].some((spotNode) => spotNode.objectRole !== undefined)) {
612
+ if (
613
+ ![...registration.spotNodes.values()].some((spotNode) => spotNode.objectRole !== undefined)
614
+ ) {
583
615
  throw new ZLinkConfigurationException(
584
616
  `STREAM node '${streamNodeName}' requires at least one local Object Client or Server MeshNode.`
585
617
  );
@@ -588,7 +620,10 @@ function validateStreamNodes(registration: ZLinkFrameworkRegistration): void {
588
620
  }
589
621
  }
590
622
 
591
- function validateRouteChannels(registration: ZLinkFrameworkRegistration, peerLocationConfigured: boolean): void {
623
+ function validateRouteChannels(
624
+ registration: ZLinkFrameworkRegistration,
625
+ peerLocationConfigured: boolean
626
+ ): void {
592
627
  for (const routeChannel of registration.routeChannelOptions.values()) {
593
628
  if (!isRouteTransportDeclared(routeChannel) && !isRouteTransportConfigured(routeChannel)) {
594
629
  continue;
@@ -599,7 +634,11 @@ function validateRouteChannels(registration: ZLinkFrameworkRegistration, peerLoc
599
634
  ) {
600
635
  continue;
601
636
  }
602
- validateRouteMeshCapability(`route channel '${routeChannel.routerChannelId}'`, routeChannel, peerLocationConfigured);
637
+ validateRouteMeshCapability(
638
+ `route channel '${routeChannel.routerChannelId}'`,
639
+ routeChannel,
640
+ peerLocationConfigured
641
+ );
603
642
  if (routeChannelHandlerCount(routeChannel) > 0 && !hasBind(routeChannel.bind)) {
604
643
  requireEndpoint(`route channel '${routeChannel.routerChannelId}' router`, routeChannel.bind);
605
644
  }
@@ -611,10 +650,12 @@ function isRouteTransportConfigured(routeChannel: ZLinkRouteChannelOptions): boo
611
650
  }
612
651
 
613
652
  function isRoutePacketCapabilityConfigured(routeChannel: ZLinkRouteChannelOptions): boolean {
614
- return hasBind(routeChannel.bind)
615
- || isRouteClientEnabled(routeChannel)
616
- || (routeChannel.manualConnections ?? []).length > 0
617
- || routeChannelHandlerCount(routeChannel) > 0;
653
+ return (
654
+ hasBind(routeChannel.bind) ||
655
+ isRouteClientEnabled(routeChannel) ||
656
+ (routeChannel.manualConnections ?? []).length > 0 ||
657
+ routeChannelHandlerCount(routeChannel) > 0
658
+ );
618
659
  }
619
660
 
620
661
  function isAcceptedSpotRouteChannel(
@@ -628,10 +669,14 @@ function isAcceptedSpotRouteChannel(
628
669
  return true;
629
670
  }
630
671
  if (routeChannel.routingId !== undefined) {
631
- return [...registration.spotNodes.values()].some((spotNode) =>
632
- spotNode.router?.routingId === routeChannel.routingId);
672
+ return [...registration.spotNodes.values()].some(
673
+ (spotNode) => spotNode.router?.routingId === routeChannel.routingId
674
+ );
633
675
  }
634
- return [...registration.spotNodes.values()].filter((spotNode) => spotNode.router !== undefined).length === 1;
676
+ return (
677
+ [...registration.spotNodes.values()].filter((spotNode) => spotNode.router !== undefined)
678
+ .length === 1
679
+ );
635
680
  }
636
681
 
637
682
  function validateRouteMeshCapability(
@@ -639,10 +684,12 @@ function validateRouteMeshCapability(
639
684
  routeChannel: ZLinkRouteChannelOptions | ZLinkRouteMeshChannelOptions,
640
685
  peerLocationConfigured = false
641
686
  ): void {
642
- const clientEnabled = isRouteClientEnabled(routeChannel)
643
- || (routeChannel.manualConnections ?? []).length > 0;
687
+ const clientEnabled =
688
+ isRouteClientEnabled(routeChannel) || (routeChannel.manualConnections ?? []).length > 0;
644
689
  if (!hasBind(routeChannel.bind) && !clientEnabled) {
645
- throw new ZLinkConfigurationException(`${capabilityName} must enable server or client capability.`);
690
+ throw new ZLinkConfigurationException(
691
+ `${capabilityName} must enable server or client capability.`
692
+ );
646
693
  }
647
694
  if (clientEnabled) {
648
695
  requirePeerSource(capabilityName, routeChannel.manualConnections, peerLocationConfigured);
@@ -652,9 +699,11 @@ function validateRouteMeshCapability(
652
699
  }
653
700
 
654
701
  function routeChannelHandlerCount(routeChannel: ZLinkRouteChannelOptions): number {
655
- return (routeChannel.handlers ?? []).length +
702
+ return (
703
+ (routeChannel.handlers ?? []).length +
656
704
  (routeChannel.sendHandlers ?? []).length +
657
- (routeChannel.requestHandlers ?? []).length;
705
+ (routeChannel.requestHandlers ?? []).length
706
+ );
658
707
  }
659
708
 
660
709
  function hasBind(endpoint: string | undefined): boolean {
@@ -37,10 +37,7 @@ function routeInternalState(routeChannel: object): RouteChannelInternalState {
37
37
  return routeChannel as RouteChannelInternalState;
38
38
  }
39
39
 
40
- function defineRouteInternalFlag(
41
- routeChannel: object,
42
- key: keyof RouteChannelInternalState
43
- ): void {
40
+ function defineRouteInternalFlag(routeChannel: object, key: keyof RouteChannelInternalState): void {
44
41
  Object.defineProperty(routeChannel, key, {
45
42
  value: true,
46
43
  configurable: true,
@@ -72,7 +72,10 @@ class RuntimeEndpointConnections implements ZLinkEndpointConnections {
72
72
  }
73
73
  }
74
74
 
75
- export function endpointConnections(owner: object, endpoints: readonly string[]): ZLinkEndpointConnections {
75
+ export function endpointConnections(
76
+ owner: object,
77
+ endpoints: readonly string[]
78
+ ): ZLinkEndpointConnections {
76
79
  let controller = controllers.get(owner);
77
80
  if (controller === undefined) {
78
81
  controller = new RuntimeEndpointConnections(endpoints);
@@ -4,10 +4,12 @@ export const ZLINK_MAX_SEND_TIMEOUT_MS = 2_147_483_647;
4
4
 
5
5
  export function requireValidSendTimeoutMs(label: string, value: number | undefined): void {
6
6
  if (value === undefined) return;
7
- if (!Number.isFinite(value)
8
- || !Number.isInteger(value)
9
- || value < 1
10
- || value > ZLINK_MAX_SEND_TIMEOUT_MS) {
7
+ if (
8
+ !Number.isFinite(value) ||
9
+ !Number.isInteger(value) ||
10
+ value < 1 ||
11
+ value > ZLINK_MAX_SEND_TIMEOUT_MS
12
+ ) {
11
13
  throw new ZLinkConfigurationException(
12
14
  `${label} must be an integer between 1 and ${ZLINK_MAX_SEND_TIMEOUT_MS} milliseconds.`
13
15
  );
@@ -1,7 +1,4 @@
1
- import {
2
- ZLinkTimerOverrunPolicy,
3
- type ZLinkTimerOptions
4
- } from '../Timers';
1
+ import { ZLinkTimerOverrunPolicy, type ZLinkTimerOptions } from '../Timers';
5
2
  import { ZLinkConfigurationException } from './ConfigurationException';
6
3
 
7
4
  export function validateTimerRegistration(
@@ -16,19 +13,17 @@ export function validateTimerRegistration(
16
13
  throw new ZLinkConfigurationException('SPOT timer period must be greater than zero.');
17
14
  }
18
15
  if (
19
- options?.overrunPolicy !== undefined
20
- && !Object.values(ZLinkTimerOverrunPolicy).includes(options.overrunPolicy)
16
+ options?.overrunPolicy !== undefined &&
17
+ !Object.values(ZLinkTimerOverrunPolicy).includes(options.overrunPolicy)
21
18
  ) {
22
19
  throw new ZLinkConfigurationException('SPOT timer overrun policy is not supported.');
23
20
  }
24
21
  if (
25
- options?.overrunPolicy === ZLinkTimerOverrunPolicy.CatchUpBounded
26
- && (
27
- options.maxCatchUpTicks === undefined
28
- || !Number.isInteger(options.maxCatchUpTicks)
29
- || options.maxCatchUpTicks < 1
30
- || options.maxCatchUpTicks > 2_147_483_647
31
- )
22
+ options?.overrunPolicy === ZLinkTimerOverrunPolicy.CatchUpBounded &&
23
+ (options.maxCatchUpTicks === undefined ||
24
+ !Number.isInteger(options.maxCatchUpTicks) ||
25
+ options.maxCatchUpTicks < 1 ||
26
+ options.maxCatchUpTicks > 2_147_483_647)
32
27
  ) {
33
28
  throw new ZLinkConfigurationException(
34
29
  'SPOT timer MaxCatchUpTicks must be an integer from 1 through 2,147,483,647.'
@@ -53,12 +53,7 @@ export enum ZLinkRuntimeMessageFlowOutcome {
53
53
  }
54
54
 
55
55
  export type ZLinkRuntimeMessageFlowResult =
56
- | 'succeeded'
57
- | 'failed'
58
- | 'backpressured'
59
- | 'dropped'
60
- | 'cancelled'
61
- | 'shutdown';
56
+ 'succeeded' | 'failed' | 'backpressured' | 'dropped' | 'cancelled' | 'shutdown';
62
57
 
63
58
  export interface ZLinkRuntimeMessageFlowEvent {
64
59
  readonly outcome: ZLinkRuntimeMessageFlowOutcome;
@@ -85,6 +80,7 @@ export interface ZLinkRuntimeMessageFlowEvent {
85
80
  readonly instanceSpotType?: string;
86
81
  readonly activationState?: 'activating' | 'ready' | 'closing';
87
82
  readonly actorId?: string;
83
+ readonly streamSessionId?: string;
88
84
  /** Internal service-wire command carried by a RouteMesh control record. */
89
85
  readonly commandId?: number;
90
86
  readonly messageSize?: number;
@@ -1,4 +1 @@
1
- export {
2
- ZLinkFrameworkErrorKind,
3
- ZLinkFrameworkException
4
- } from './ZLinkFrameworkException';
1
+ export { ZLinkFrameworkErrorKind, ZLinkFrameworkException } from './ZLinkFrameworkException';
@@ -46,15 +46,18 @@ export function ZLinkPacket(
46
46
  jsonContract?: ZLinkPacketJsonContract
47
47
  ): ClassDecorator {
48
48
  return (target) => {
49
- const normalized = jsonContract === undefined
50
- ? undefined
51
- : defineZLinkPacketJsonContract(packetName, jsonContract);
49
+ const normalized =
50
+ jsonContract === undefined
51
+ ? undefined
52
+ : defineZLinkPacketJsonContract(packetName, jsonContract);
52
53
  appendMetadata(target, { kind: 'packet', packetName, jsonContract: normalized });
53
54
  };
54
55
  }
55
56
 
56
57
  /** @internal */
57
- export function readZLinkPacketJsonContract(packetName: string): ZLinkPacketJsonContract | undefined {
58
+ export function readZLinkPacketJsonContract(
59
+ packetName: string
60
+ ): ZLinkPacketJsonContract | undefined {
58
61
  return readDefinedZLinkPacketJsonContract(packetName);
59
62
  }
60
63
 
@@ -87,10 +90,11 @@ function classDecorator(metadata: ZLinkDecoratorMetadata): ClassDecorator {
87
90
  }
88
91
 
89
92
  function methodDecorator(metadata: ZLinkDecoratorMetadata): MethodDecorator {
90
- return (target, propertyKey) => appendMetadata(target.constructor, {
91
- ...metadata,
92
- methodName: String(propertyKey)
93
- });
93
+ return (target, propertyKey) =>
94
+ appendMetadata(target.constructor, {
95
+ ...metadata,
96
+ methodName: String(propertyKey)
97
+ });
94
98
  }
95
99
 
96
100
  function appendMetadata(target: object, metadata: ZLinkDecoratorMetadata): void {
@@ -107,5 +111,7 @@ export function readZLinkDecoratorMetadata(target: object): readonly ZLinkDecora
107
111
  if (!Object.prototype.hasOwnProperty.call(target, ZLINK_DECORATOR_METADATA)) {
108
112
  return [];
109
113
  }
110
- return (target as Record<symbol, unknown>)[ZLINK_DECORATOR_METADATA] as readonly ZLinkDecoratorMetadata[];
114
+ return (target as Record<symbol, unknown>)[
115
+ ZLINK_DECORATOR_METADATA
116
+ ] as readonly ZLinkDecoratorMetadata[];
111
117
  }
@@ -44,11 +44,21 @@ export interface ZLinkSpotTimerHandler<TSpot> {
44
44
  }
45
45
 
46
46
  export interface ZLinkSpotActorSendHandler<TSpot, TActor extends ZLinkActor, TMessage> {
47
- handle(spot: TSpot, actor: TActor, context: ZLinkMessageContext, message: TMessage): Promise<void>;
47
+ handle(
48
+ spot: TSpot,
49
+ actor: TActor,
50
+ context: ZLinkMessageContext,
51
+ message: TMessage
52
+ ): Promise<void>;
48
53
  }
49
54
 
50
55
  export interface ZLinkSpotActorRequestHandler<TSpot, TActor extends ZLinkActor, TRequest, TReply> {
51
- handle(spot: TSpot, actor: TActor, context: ZLinkMessageContext, request: TRequest): Promise<TReply>;
56
+ handle(
57
+ spot: TSpot,
58
+ actor: TActor,
59
+ context: ZLinkMessageContext,
60
+ request: TRequest
61
+ ): Promise<TReply>;
52
62
  }
53
63
 
54
64
  export interface ZLinkEntrySpotActorSendHandler<
@@ -56,7 +66,12 @@ export interface ZLinkEntrySpotActorSendHandler<
56
66
  TActor extends ZLinkActor,
57
67
  TMessage
58
68
  > {
59
- handle(spot: TEntrySpot, actor: TActor, context: ZLinkMessageContext, message: TMessage): Promise<void>;
69
+ handle(
70
+ spot: TEntrySpot,
71
+ actor: TActor,
72
+ context: ZLinkMessageContext,
73
+ message: TMessage
74
+ ): Promise<void>;
60
75
  }
61
76
 
62
77
  export interface ZLinkEntrySpotActorRequestHandler<
@@ -65,5 +80,10 @@ export interface ZLinkEntrySpotActorRequestHandler<
65
80
  TRequest,
66
81
  TReply
67
82
  > {
68
- handle(spot: TEntrySpot, actor: TActor, context: ZLinkMessageContext, request: TRequest): Promise<TReply>;
83
+ handle(
84
+ spot: TEntrySpot,
85
+ actor: TActor,
86
+ context: ZLinkMessageContext,
87
+ request: TRequest
88
+ ): Promise<TReply>;
69
89
  }