@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
@@ -13,10 +13,7 @@ import {
13
13
  } from '../../contracts/Locations/Options';
14
14
  import type { ZLinkFrameworkRegistration } from '../configuration';
15
15
  import { buildAdvertisedEndpoint, ZLinkConfigurationException } from '../configuration';
16
- import type {
17
- ZLinkLocationRuntime,
18
- ZLinkLocationRuntimeStores
19
- } from '../locations';
16
+ import type { ZLinkLocationRuntime, ZLinkLocationRuntimeStores } from '../locations';
20
17
  import type { ZLinkBackendSubscriberSocket } from '../backend/contracts';
21
18
  import { ZLinkChannelSocketRegistry } from './channel-socket-registry';
22
19
  import { ZLinkStateLane } from '../execution/state-lane';
@@ -34,12 +31,14 @@ export class ZLinkFanoutLocationRuntime {
34
31
  private readonly lane = new ZLinkStateLane();
35
32
  private readonly options: Required<ZLinkLocationOptionOverrides>;
36
33
  private readonly store: ZLinkFanoutLocationStore;
37
- private readonly localDescriptors =
38
- new Map<string, ZLinkFanoutPublisherDescriptor>();
39
- private readonly publisherIdentities = new Map<string, {
40
- readonly publisherRid: string;
41
- readonly lifecycleGeneration: bigint;
42
- }>();
34
+ private readonly localDescriptors = new Map<string, ZLinkFanoutPublisherDescriptor>();
35
+ private readonly publisherIdentities = new Map<
36
+ string,
37
+ {
38
+ readonly publisherRid: string;
39
+ readonly lifecycleGeneration: bigint;
40
+ }
41
+ >();
43
42
  private readonly connections = new Map<string, ActiveFanoutTarget>();
44
43
  private controller?: AbortController;
45
44
  private timer?: NodeJS.Timeout;
@@ -97,25 +96,22 @@ export class ZLinkFanoutLocationRuntime {
97
96
  });
98
97
  if (timer !== undefined) clearTimeout(timer);
99
98
  const connectionIds = await this.lane.run(() => [...this.connections.keys()]);
100
- await Promise.allSettled(
101
- connectionIds.map(id => this.closeConnection(id))
102
- );
99
+ await Promise.allSettled(connectionIds.map((id) => this.closeConnection(id)));
103
100
  await this.removeLocalPublishers(signal);
104
101
  }
105
102
 
106
103
  activeTargets(channelName: string): readonly ZLinkFanoutPublisherDescriptor[] {
107
104
  return [...this.connections.values()]
108
- .filter(target => target.state === 'ready')
109
- .map(target => target.descriptor)
110
- .filter(descriptor => descriptor.channelName === channelName);
105
+ .filter((target) => target.state === 'ready')
106
+ .map((target) => target.descriptor)
107
+ .filter((descriptor) => descriptor.channelName === channelName);
111
108
  }
112
109
 
113
110
  async reclaimOwnerRows(signal?: AbortSignal): Promise<void> {
114
111
  const owner = this.requireOwnerToken();
115
112
  const descriptors = await this.lane.run(() => [...this.localDescriptors]);
116
113
  for (const [channelName, current] of descriptors) {
117
- if (current.ownerId === owner.ownerId
118
- && current.leaseGeneration === owner.leaseGeneration) {
114
+ if (current.ownerId === owner.ownerId && current.leaseGeneration === owner.leaseGeneration) {
119
115
  continue;
120
116
  }
121
117
  const candidate = {
@@ -133,10 +129,12 @@ export class ZLinkFanoutLocationRuntime {
133
129
  `Fanout publisher '${channelName}' descriptor recovery was fenced.`
134
130
  );
135
131
  }
136
- await this.lane.run(() => this.localDescriptors.set(channelName, {
137
- ...candidate,
138
- updatedAt: result.updatedAt
139
- }));
132
+ await this.lane.run(() =>
133
+ this.localDescriptors.set(channelName, {
134
+ ...candidate,
135
+ updatedAt: result.updatedAt
136
+ })
137
+ );
140
138
  }
141
139
  }
142
140
 
@@ -166,24 +164,23 @@ export class ZLinkFanoutLocationRuntime {
166
164
  `Fanout publisher '${channelName}' descriptor renewal was fenced.`
167
165
  );
168
166
  }
169
- await this.lane.run(() => this.localDescriptors.set(channelName, {
170
- ...current,
171
- updatedAt: result.updatedAt
172
- }));
167
+ await this.lane.run(() =>
168
+ this.localDescriptors.set(channelName, {
169
+ ...current,
170
+ updatedAt: result.updatedAt
171
+ })
172
+ );
173
173
  continue;
174
174
  }
175
- const generatedLifecycle = BigInt(
176
- `0x${randomUUID().replaceAll('-', '').slice(0, 16)}`
177
- ) & 0x7fff_ffff_ffff_ffffn;
175
+ const generatedLifecycle =
176
+ BigInt(`0x${randomUUID().replaceAll('-', '').slice(0, 16)}`) & 0x7fff_ffff_ffff_ffffn;
178
177
  const identity = await this.lane.run(() => {
179
178
  const currentIdentity = this.publisherIdentities.get(channelName);
180
179
  if (currentIdentity !== undefined) return currentIdentity;
181
180
  const created = {
182
- publisherRid: channel.routingId
183
- ?? `${channel.routingIdPrefix ?? 'fanout'}-${randomUUID()}`,
184
- lifecycleGeneration: generatedLifecycle === 0n
185
- ? 1n
186
- : generatedLifecycle
181
+ publisherRid:
182
+ channel.routingId ?? `${channel.routingIdPrefix ?? 'fanout'}-${randomUUID()}`,
183
+ lifecycleGeneration: generatedLifecycle === 0n ? 1n : generatedLifecycle
187
184
  };
188
185
  this.publisherIdentities.set(channelName, created);
189
186
  return created;
@@ -210,36 +207,35 @@ export class ZLinkFanoutLocationRuntime {
210
207
  `Fanout publisher '${channelName}' descriptor claim failed with '${result.status}'.`
211
208
  );
212
209
  }
213
- await this.lane.run(() => this.localDescriptors.set(channelName, {
214
- ...descriptor,
215
- updatedAt: result.updatedAt
216
- }));
210
+ await this.lane.run(() =>
211
+ this.localDescriptors.set(channelName, {
212
+ ...descriptor,
213
+ updatedAt: result.updatedAt
214
+ })
215
+ );
217
216
  }
218
217
  }
219
218
 
220
219
  private async reconcileSubscribers(signal?: AbortSignal): Promise<void> {
221
220
  for (const [channelName, channel] of this.registration.channels) {
222
- if (channel.subscriber === undefined
223
- || (channel.subscriber.manualConnections?.length ?? 0) > 0) {
221
+ if (
222
+ channel.subscriber === undefined ||
223
+ (channel.subscriber.manualConnections?.length ?? 0) > 0
224
+ ) {
224
225
  continue;
225
226
  }
226
227
  const rows = await this.listLivePublishers(channelName, signal);
227
- const desired = new Map(rows.map(row => [
228
- fanoutConnectionId(row),
229
- row
230
- ]));
228
+ const desired = new Map(rows.map((row) => [fanoutConnectionId(row), row]));
231
229
  for (const [connectionId, descriptor] of desired) {
232
230
  const current = await this.lane.run(() => this.connections.get(connectionId));
233
231
  if (current === undefined) {
234
232
  await this.openConnection(connectionId, descriptor);
235
233
  continue;
236
234
  }
237
- if (descriptor.descriptorRevision
238
- < current.descriptor.descriptorRevision) {
235
+ if (descriptor.descriptorRevision < current.descriptor.descriptorRevision) {
239
236
  continue;
240
237
  }
241
- if (descriptor.descriptorRevision
242
- === current.descriptor.descriptorRevision) {
238
+ if (descriptor.descriptorRevision === current.descriptor.descriptorRevision) {
243
239
  if (!sameFanoutDescriptor(descriptor, current.descriptor)) {
244
240
  await this.closeConnection(connectionId);
245
241
  }
@@ -258,8 +254,7 @@ export class ZLinkFanoutLocationRuntime {
258
254
  }
259
255
  const connections = await this.lane.run(() => [...this.connections]);
260
256
  for (const [connectionId, current] of connections) {
261
- if (current.descriptor.channelName === channelName
262
- && !desired.has(connectionId)) {
257
+ if (current.descriptor.channelName === channelName && !desired.has(connectionId)) {
263
258
  await this.closeConnection(connectionId);
264
259
  }
265
260
  }
@@ -285,15 +280,13 @@ export class ZLinkFanoutLocationRuntime {
285
280
  },
286
281
  onTerminated: () => {
287
282
  const current = this.connections.get(connectionId);
288
- if (target !== undefined
289
- && current === target
290
- && current.reconnectEligible) {
283
+ if (target !== undefined && current === target && current.reconnectEligible) {
291
284
  this.sockets.removeFanoutPublisher(descriptor, connectionId);
292
285
  current.state = 'connecting';
293
286
  setImmediate(() => {
294
- void this.replaceConnection(current)
295
- .catch(error =>
296
- this.locationRuntime.reportDiscoveryFailure(error));
287
+ void this.replaceConnection(current).catch((error) =>
288
+ this.locationRuntime.reportDiscoveryFailure(error)
289
+ );
297
290
  });
298
291
  }
299
292
  }
@@ -308,11 +301,7 @@ export class ZLinkFanoutLocationRuntime {
308
301
  state: 'connecting'
309
302
  };
310
303
  await this.lane.run(() => this.connections.set(connectionId, target));
311
- target.stopReceiver = this.onSubscriberOpened(
312
- descriptor.channelName,
313
- connectionId,
314
- subscriber
315
- );
304
+ target.stopReceiver = this.onSubscriberOpened(descriptor.channelName, connectionId, subscriber);
316
305
  }
317
306
 
318
307
  private async closeConnection(connectionId: string): Promise<void> {
@@ -330,14 +319,15 @@ export class ZLinkFanoutLocationRuntime {
330
319
  await this.sockets.closeFanoutSubscriberConnection(connectionId);
331
320
  }
332
321
 
333
- private async replaceConnection(
334
- expected: ActiveFanoutTarget
335
- ): Promise<void> {
322
+ private async replaceConnection(expected: ActiveFanoutTarget): Promise<void> {
336
323
  const prepared = await this.lane.run(() => {
337
324
  const controller = this.controller;
338
- if (this.connections.get(expected.connectionId) !== expected
339
- || !expected.reconnectEligible
340
- || controller === undefined) return undefined;
325
+ if (
326
+ this.connections.get(expected.connectionId) !== expected ||
327
+ !expected.reconnectEligible ||
328
+ controller === undefined
329
+ )
330
+ return undefined;
341
331
  return { controller, descriptor: expected.descriptor };
342
332
  });
343
333
  if (prepared === undefined) {
@@ -368,9 +358,11 @@ export class ZLinkFanoutLocationRuntime {
368
358
  for (const descriptor of rows) {
369
359
  if (descriptor.state !== ZLinkFrameworkRuntimeState.Serving) continue;
370
360
  const lease = await this.storeOwnerLease(descriptor.ownerId, signal);
371
- if (lease.kind === 'found'
372
- && lease.token.leaseGeneration === descriptor.leaseGeneration
373
- && lease.leaseExpiresAt.getTime() > lease.storeNow.getTime()) {
361
+ if (
362
+ lease.kind === 'found' &&
363
+ lease.token.leaseGeneration === descriptor.leaseGeneration &&
364
+ lease.leaseExpiresAt.getTime() > lease.storeNow.getTime()
365
+ ) {
374
366
  live.push(descriptor);
375
367
  }
376
368
  }
@@ -378,10 +370,7 @@ export class ZLinkFanoutLocationRuntime {
378
370
  }
379
371
 
380
372
  private storeOwnerLease(ownerId: string, signal?: AbortSignal) {
381
- return this.stores.ownerLeaseStore.readOwnerLease(
382
- ownerId,
383
- signal
384
- );
373
+ return this.stores.ownerLeaseStore.readOwnerLease(ownerId, signal);
385
374
  }
386
375
 
387
376
  private async removeLocalPublishers(signal?: AbortSignal): Promise<void> {
@@ -389,10 +378,14 @@ export class ZLinkFanoutLocationRuntime {
389
378
  if (owner === undefined) return;
390
379
  const descriptors = await this.lane.run(() => [...this.localDescriptors.values()]);
391
380
  for (const descriptor of descriptors) {
392
- await this.store.removeFanoutPublisher({
393
- channelName: descriptor.channelName,
394
- publisherRid: descriptor.publisherRid
395
- }, owner, signal);
381
+ await this.store.removeFanoutPublisher(
382
+ {
383
+ channelName: descriptor.channelName,
384
+ publisherRid: descriptor.publisherRid
385
+ },
386
+ owner,
387
+ signal
388
+ );
396
389
  }
397
390
  await this.lane.run(() => this.localDescriptors.clear());
398
391
  }
@@ -412,7 +405,7 @@ export class ZLinkFanoutLocationRuntime {
412
405
  this.timer = setTimeout(() => {
413
406
  this.timer = undefined;
414
407
  void this.tickCore(this.controller?.signal)
415
- .catch(error => this.locationRuntime.reportDiscoveryFailure(error))
408
+ .catch((error) => this.locationRuntime.reportDiscoveryFailure(error))
416
409
  .finally(() => this.schedule());
417
410
  }, this.options.pollingIntervalMs);
418
411
  this.timer.unref();
@@ -429,31 +422,35 @@ function advertisedEndpoint(boundEndpoint: string, advertiseHost: string | undef
429
422
  return result;
430
423
  }
431
424
 
432
- function fanoutConnectionId(
433
- descriptor: ZLinkFanoutPublisherDescriptor
434
- ): string {
435
- return `${descriptor.channelName}\0${String(descriptor.publisherRid)}\0`
436
- + descriptor.lifecycleGeneration.toString();
425
+ function fanoutConnectionId(descriptor: ZLinkFanoutPublisherDescriptor): string {
426
+ return (
427
+ `${descriptor.channelName}\0${String(descriptor.publisherRid)}\0` +
428
+ descriptor.lifecycleGeneration.toString()
429
+ );
437
430
  }
438
431
 
439
432
  function sameFanoutImmutableIdentity(
440
433
  left: ZLinkFanoutPublisherDescriptor,
441
434
  right: ZLinkFanoutPublisherDescriptor
442
435
  ): boolean {
443
- return left.channelName === right.channelName
444
- && left.publisherRid === right.publisherRid
445
- && left.lifecycleGeneration === right.lifecycleGeneration
446
- && left.endpoint === right.endpoint
447
- && left.securityIdentity === right.securityIdentity
448
- && left.ownerId === right.ownerId
449
- && left.leaseGeneration === right.leaseGeneration;
436
+ return (
437
+ left.channelName === right.channelName &&
438
+ left.publisherRid === right.publisherRid &&
439
+ left.lifecycleGeneration === right.lifecycleGeneration &&
440
+ left.endpoint === right.endpoint &&
441
+ left.securityIdentity === right.securityIdentity &&
442
+ left.ownerId === right.ownerId &&
443
+ left.leaseGeneration === right.leaseGeneration
444
+ );
450
445
  }
451
446
 
452
447
  function sameFanoutDescriptor(
453
448
  left: ZLinkFanoutPublisherDescriptor,
454
449
  right: ZLinkFanoutPublisherDescriptor
455
450
  ): boolean {
456
- return sameFanoutImmutableIdentity(left, right)
457
- && left.descriptorRevision === right.descriptorRevision
458
- && left.state === right.state;
451
+ return (
452
+ sameFanoutImmutableIdentity(left, right) &&
453
+ left.descriptorRevision === right.descriptorRevision &&
454
+ left.state === right.state
455
+ );
459
456
  }
@@ -7,13 +7,9 @@ import { tryDecodeChannelHeader } from './channel-envelope-inspection';
7
7
  import type { ZLinkChannelEnvelopeHeader } from './channel-envelope';
8
8
 
9
9
  export { FANOUT_LIVENESS_TOPIC, requirePublicFanoutTopic };
10
- export const FANOUT_LIVENESS_PAYLOAD =
11
- Uint8Array.from([0x5a, 0x46, 0x01, 0x01]);
10
+ export const FANOUT_LIVENESS_PAYLOAD = Uint8Array.from([0x5a, 0x46, 0x01, 0x01]);
12
11
 
13
- export type ZLinkFanoutInboundKind =
14
- | 'application'
15
- | 'beacon'
16
- | 'protocolError';
12
+ export type ZLinkFanoutInboundKind = 'application' | 'beacon' | 'protocolError';
17
13
 
18
14
  export interface ZLinkFanoutInboundClassification {
19
15
  readonly kind: ZLinkFanoutInboundKind;
@@ -26,15 +22,12 @@ export function inspectFanoutInbound(
26
22
  ): ZLinkFanoutInboundClassification {
27
23
  if (topic !== FANOUT_LIVENESS_TOPIC) {
28
24
  const header = tryDecodeChannelHeader(parts as readonly Message[]);
29
- return header === undefined
30
- ? { kind: 'protocolError' }
31
- : { kind: 'application', header };
25
+ return header === undefined ? { kind: 'protocolError' } : { kind: 'application', header };
32
26
  }
33
27
  if (parts.length !== 1) return { kind: 'protocolError' };
34
28
  const payload = parts[0]!.data();
35
- return payload.length === FANOUT_LIVENESS_PAYLOAD.length
36
- && payload.every((value, index) =>
37
- value === FANOUT_LIVENESS_PAYLOAD[index])
29
+ return payload.length === FANOUT_LIVENESS_PAYLOAD.length &&
30
+ payload.every((value, index) => value === FANOUT_LIVENESS_PAYLOAD[index])
38
31
  ? { kind: 'beacon' }
39
32
  : { kind: 'protocolError' };
40
33
  }
@@ -1,7 +1,4 @@
1
- import type {
2
- Type,
3
- ZLinkHandlerFilterContext,
4
- } from '../../contracts';
1
+ import type { Type, ZLinkHandlerFilterContext } from '../../contracts';
5
2
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
6
3
 
7
4
  export interface ZLinkHandlerFilterScopeResolver {
@@ -11,10 +11,7 @@ export {
11
11
  type ZLinkSpotPublisherClientTransport
12
12
  } from './channel-transports';
13
13
  export { DefaultZLinkChannelRuntimeOptions } from './channel-socket-options';
14
- export {
15
- ZLinkDispatchErrorReporter,
16
- type ZLinkDispatchErrorSink
17
- } from './dispatch-error-reporter';
14
+ export { ZLinkDispatchErrorReporter, type ZLinkDispatchErrorSink } from './dispatch-error-reporter';
18
15
  export { ZLinkRouteDisconnectedError } from './route-disconnected-error';
19
16
  export {
20
17
  DefaultZLinkChannelClient,
@@ -18,7 +18,9 @@ export class ZLinkLocalSpotRouteTransport {
18
18
  timeoutMs?: number
19
19
  ): Promise<void> {
20
20
  if (this.dispatcher === undefined) {
21
- throw new ZLinkConfigurationException(`Route channel '${routerChannelId}' could not dispatch local SPOT send.`);
21
+ throw new ZLinkConfigurationException(
22
+ `Route channel '${routerChannelId}' could not dispatch local SPOT send.`
23
+ );
22
24
  }
23
25
  await this.dispatcher.send(spotId, packetName, message, {
24
26
  channelName: routerChannelId,
@@ -37,7 +39,9 @@ export class ZLinkLocalSpotRouteTransport {
37
39
  signal?: AbortSignal
38
40
  ): Promise<TReply> {
39
41
  if (this.dispatcher === undefined) {
40
- throw new ZLinkConfigurationException(`Route channel '${routerChannelId}' could not dispatch local SPOT request.`);
42
+ throw new ZLinkConfigurationException(
43
+ `Route channel '${routerChannelId}' could not dispatch local SPOT request.`
44
+ );
41
45
  }
42
46
  const pending = this.dispatcher.request<TReply>(spotId, packetName, request, {
43
47
  channelName: routerChannelId,
@@ -47,12 +51,23 @@ export class ZLinkLocalSpotRouteTransport {
47
51
  if (effectiveTimeoutMs === undefined) return pending;
48
52
  return new Promise<TReply>((resolve, reject) => {
49
53
  const timeout = setTimeout(
50
- () => reject(new ZLinkConfigurationException(`Route channel '${routerChannelId}' local SPOT request timed out.`)),
54
+ () =>
55
+ reject(
56
+ new ZLinkConfigurationException(
57
+ `Route channel '${routerChannelId}' local SPOT request timed out.`
58
+ )
59
+ ),
51
60
  effectiveTimeoutMs
52
61
  );
53
62
  pending.then(
54
- (value) => { clearTimeout(timeout); resolve(value); },
55
- (error) => { clearTimeout(timeout); reject(error); }
63
+ (value) => {
64
+ clearTimeout(timeout);
65
+ resolve(value);
66
+ },
67
+ (error) => {
68
+ clearTimeout(timeout);
69
+ reject(error);
70
+ }
56
71
  );
57
72
  });
58
73
  }
@@ -14,14 +14,20 @@ export class ZLinkRouteMemberSnapshot {
14
14
  observeReady(channel: string, routingId: string, endpoint: string): void {
15
15
  getOrCreateSet(this.members, channel).add(routingId);
16
16
  getOrCreateSet(this.connected, channel).add(routingId);
17
- if (endpoint.length > 0) getOrCreateMap(this.memberByEndpoint, channel).set(endpoint, routingId);
17
+ if (endpoint.length > 0)
18
+ getOrCreateMap(this.memberByEndpoint, channel).set(endpoint, routingId);
18
19
  }
19
20
 
20
- observeTermination(channel: string, routingId: string | undefined, endpoint: string): string | undefined {
21
+ observeTermination(
22
+ channel: string,
23
+ routingId: string | undefined,
24
+ endpoint: string
25
+ ): string | undefined {
21
26
  const connected = this.connected.get(channel);
22
- const disconnected = routingId
23
- ?? this.memberByEndpoint.get(channel)?.get(endpoint)
24
- ?? (connected?.size === 1 ? connected.values().next().value : undefined);
27
+ const disconnected =
28
+ routingId ??
29
+ this.memberByEndpoint.get(channel)?.get(endpoint) ??
30
+ (connected?.size === 1 ? connected.values().next().value : undefined);
25
31
  if (disconnected === undefined) return undefined;
26
32
  getOrCreateSet(this.members, channel).add(disconnected);
27
33
  connected?.delete(disconnected);
@@ -39,12 +39,7 @@ export class ZLinkRouterSocketSpotRouteTransport {
39
39
  ): Promise<TReply> {
40
40
  const router = this.sockets.routeRouter(target.routerChannelId);
41
41
  void flags;
42
- const operation = router.requestToSpot(
43
- target.targetNodeRid,
44
- target.spotId,
45
- parts,
46
- timeoutMs
47
- );
42
+ const operation = router.requestToSpot(target.targetNodeRid, target.spotId, parts, timeoutMs);
48
43
  const replyParts = await awaitWithAbort(operation, signal, () => {
49
44
  void operation.then(closeMessages, () => undefined);
50
45
  });
@@ -73,5 +68,4 @@ export class ZLinkRouterSocketSpotRouteTransport {
73
68
  void operation.then(closeMessages, () => undefined);
74
69
  });
75
70
  }
76
-
77
71
  }
@@ -17,18 +17,20 @@ export class ZLinkSourceSpotRouter {
17
17
  signal?: AbortSignal
18
18
  ): Promise<TReply> {
19
19
  throwIfAborted(signal);
20
- const parts = [encodeSpotDirectEnvelope(
21
- ZLinkChannelMessageKind.Request,
22
- target.routerChannelId,
23
- packetName,
24
- request
25
- )] as readonly Message[];
20
+ const parts = [
21
+ encodeSpotDirectEnvelope(
22
+ ZLinkChannelMessageKind.Request,
23
+ target.routerChannelId,
24
+ packetName,
25
+ request
26
+ )
27
+ ] as readonly Message[];
26
28
  const operation = sourceSpot.requestToSpot(
27
- target.targetNodeRid,
28
- target.spotId,
29
- parts,
30
- timeoutMs ?? this.defaultRequestTimeoutMs
31
- );
29
+ target.targetNodeRid,
30
+ target.spotId,
31
+ parts,
32
+ timeoutMs ?? this.defaultRequestTimeoutMs
33
+ );
32
34
  const replyParts = await awaitWithAbort(operation, signal, () => {
33
35
  void operation.then(closeMessages, () => undefined);
34
36
  });
@@ -50,13 +52,15 @@ export class ZLinkSourceSpotRouter {
50
52
  timeoutMs?: number
51
53
  ): Promise<void> {
52
54
  throwIfAborted(signal);
53
- const parts = [encodeSpotDirectEnvelope(
54
- ZLinkChannelMessageKind.Command,
55
- target.routerChannelId,
56
- packetName,
57
- message,
58
- metadata
59
- )] as readonly Message[];
55
+ const parts = [
56
+ encodeSpotDirectEnvelope(
57
+ ZLinkChannelMessageKind.Command,
58
+ target.routerChannelId,
59
+ packetName,
60
+ message,
61
+ metadata
62
+ )
63
+ ] as readonly Message[];
60
64
  try {
61
65
  void timeoutMs;
62
66
  await awaitWithAbort(
@@ -77,10 +81,10 @@ export class ZLinkSourceSpotRouter {
77
81
  ): Promise<readonly Message[]> {
78
82
  throwIfAborted(signal);
79
83
  const operation = sourceSpot.requestToSpot(
80
- target.targetNodeRid,
81
- target.spotId,
82
- request,
83
- timeoutMs ?? this.defaultRequestTimeoutMs
84
+ target.targetNodeRid,
85
+ target.spotId,
86
+ request,
87
+ timeoutMs ?? this.defaultRequestTimeoutMs
84
88
  );
85
89
  return await awaitWithAbort(operation, signal, () => {
86
90
  void operation.then(closeMessages, () => undefined);
@@ -12,14 +12,16 @@ export function encodeSpotDirectEnvelope(
12
12
  payload: unknown,
13
13
  metadata?: ReadonlyMap<string, string>
14
14
  ): MessageLike {
15
- return Buffer.from(JSON.stringify({
16
- marker: SPOT_DIRECT_ENVELOPE,
17
- kind,
18
- channelName,
19
- packetName,
20
- payload,
21
- metadata: Object.fromEntries(metadata ?? [])
22
- }));
15
+ return Buffer.from(
16
+ JSON.stringify({
17
+ marker: SPOT_DIRECT_ENVELOPE,
18
+ kind,
19
+ channelName,
20
+ packetName,
21
+ payload,
22
+ metadata: Object.fromEntries(metadata ?? [])
23
+ })
24
+ );
23
25
  }
24
26
 
25
27
  export function decodeSpotDirectReply<TReply>(parts: readonly Message[]): TReply {
@@ -26,10 +26,7 @@ export class ZLinkSpotNodeRouteTransport {
26
26
  }
27
27
  try {
28
28
  throwIfAborted(signal);
29
- await awaitWithAbort(
30
- router.sendToSpot(target.targetNodeRid, target.spotId, parts),
31
- signal
32
- );
29
+ await awaitWithAbort(router.sendToSpot(target.targetNodeRid, target.spotId, parts), signal);
33
30
  return true;
34
31
  } finally {
35
32
  closeMessages(parts);
@@ -50,21 +47,21 @@ export class ZLinkSpotNodeRouteTransport {
50
47
  const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? 30_000;
51
48
  throwIfAborted(signal);
52
49
  const operation = router.requestToSpot(
53
- target.targetNodeRid,
54
- target.spotId,
55
- parts,
56
- effectiveTimeoutMs
57
- );
50
+ target.targetNodeRid,
51
+ target.spotId,
52
+ parts,
53
+ effectiveTimeoutMs
54
+ );
58
55
  return awaitWithAbort(operation, signal, () => {
59
56
  void operation.then(closeMessages, () => undefined);
60
57
  }).then((replyParts) => {
61
- try {
62
- return decodeChannelReply<TReply>(replyParts, codecs);
63
- } finally {
64
- closeMessages(replyParts);
65
- closeMessages(parts);
66
- }
67
- });
58
+ try {
59
+ return decodeChannelReply<TReply>(replyParts, codecs);
60
+ } finally {
61
+ closeMessages(replyParts);
62
+ closeMessages(parts);
63
+ }
64
+ });
68
65
  }
69
66
 
70
67
  requestRaw(