@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
@@ -1,7 +1,4 @@
1
- import type {
2
- ZLinkObservationLoss,
3
- ZLinkObservedStatus
4
- } from '../../contracts';
1
+ import type { ZLinkObservationLoss, ZLinkObservedStatus } from '../../contracts';
5
2
 
6
3
  export const ZLINK_DEFAULT_TERMINAL_OBSERVATION_CAPACITY = 64;
7
4
  export const ZLINK_SIGNED_OBSERVATION_LOSS_MAXIMUM = 9_223_372_036_854_775_807n;
@@ -55,9 +52,7 @@ class RuntimeObservationLossState {
55
52
  }
56
53
 
57
54
  recordDiscardedTerminal(): void {
58
- this.discardedTerminal = saturatingObservationLossIncrement(
59
- this.discardedTerminal
60
- );
55
+ this.discardedTerminal = saturatingObservationLossIncrement(this.discardedTerminal);
61
56
  }
62
57
 
63
58
  snapshot(): ZLinkObservationLoss {
@@ -74,8 +69,11 @@ class RuntimeObservationLossState {
74
69
  * dispatcher; they never invoke an iterator continuation directly.
75
70
  */
76
71
  export class RuntimeEventQueue<T>
77
- implements AsyncIterable<ZLinkObservedStatus<T>>, AsyncIterator<ZLinkObservedStatus<T>>,
78
- RuntimeObservationDispatchTarget {
72
+ implements
73
+ AsyncIterable<ZLinkObservedStatus<T>>,
74
+ AsyncIterator<ZLinkObservedStatus<T>>,
75
+ RuntimeObservationDispatchTarget
76
+ {
79
77
  private readonly intermediateBySource = new Map<unknown, RetainedObservation<T>>();
80
78
  private readonly terminalFifo: Array<RetainedObservation<T> | undefined> = [];
81
79
  private readonly terminalCountBySource = new Map<unknown, number>();
@@ -108,7 +106,9 @@ export class RuntimeEventQueue<T>
108
106
  }
109
107
  }
110
108
 
111
- [Symbol.asyncIterator](): AsyncIterator<ZLinkObservedStatus<T>> { return this; }
109
+ [Symbol.asyncIterator](): AsyncIterator<ZLinkObservedStatus<T>> {
110
+ return this;
111
+ }
112
112
 
113
113
  next(): Promise<IteratorResult<ZLinkObservedStatus<T>>> {
114
114
  if (this.waitersCount === 0) {
@@ -126,7 +126,7 @@ export class RuntimeEventQueue<T>
126
126
  return Promise.resolve({ done: true, value: undefined });
127
127
  }
128
128
  }
129
- return new Promise(resolve => {
129
+ return new Promise((resolve) => {
130
130
  this.waiters.push(resolve);
131
131
  this.waitersCount += 1;
132
132
  if (this.hasRetained() || this.closed || this.completeWhenDrained) {
@@ -217,10 +217,7 @@ export class RuntimeEventQueue<T>
217
217
  }
218
218
  this.terminalFifo.push(this.retain(value, source));
219
219
  this.terminalCount += 1;
220
- this.terminalCountBySource.set(
221
- source,
222
- (this.terminalCountBySource.get(source) ?? 0) + 1
223
- );
220
+ this.terminalCountBySource.set(source, (this.terminalCountBySource.get(source) ?? 0) + 1);
224
221
  this.signalDispatcher();
225
222
  }
226
223
 
@@ -236,9 +233,8 @@ export class RuntimeEventQueue<T>
236
233
  const terminal = this.peekTerminal();
237
234
  const intermediate = this.oldestIntermediate();
238
235
  if (
239
- terminal !== undefined
240
- && (intermediate === undefined
241
- || terminal.publishOrdinal <= intermediate.publishOrdinal)
236
+ terminal !== undefined &&
237
+ (intermediate === undefined || terminal.publishOrdinal <= intermediate.publishOrdinal)
242
238
  ) {
243
239
  return this.takeTerminal();
244
240
  }
@@ -248,9 +244,7 @@ export class RuntimeEventQueue<T>
248
244
  }
249
245
 
250
246
  private peekTerminal(): RetainedObservation<T> | undefined {
251
- return this.terminalCount === 0
252
- ? undefined
253
- : this.terminalFifo[this.terminalHead];
247
+ return this.terminalCount === 0 ? undefined : this.terminalFifo[this.terminalHead];
254
248
  }
255
249
 
256
250
  private oldestIntermediate(): RetainedObservation<T> | undefined {
@@ -297,10 +291,7 @@ export class RuntimeEventQueue<T>
297
291
  if (this.terminalCount === 0) {
298
292
  this.terminalFifo.length = 0;
299
293
  this.terminalHead = 0;
300
- } else if (
301
- this.terminalHead >= 1024
302
- && this.terminalHead * 2 >= this.terminalFifo.length
303
- ) {
294
+ } else if (this.terminalHead >= 1024 && this.terminalHead * 2 >= this.terminalFifo.length) {
304
295
  this.terminalFifo.splice(0, this.terminalHead);
305
296
  this.terminalHead = 0;
306
297
  }
@@ -333,9 +324,7 @@ export class RuntimeEventQueue<T>
333
324
  return { status, loss: this.loss.snapshot() };
334
325
  }
335
326
 
336
- private takeWaiter():
337
- | ((result: IteratorResult<ZLinkObservedStatus<T>>) => void)
338
- | undefined {
327
+ private takeWaiter(): ((result: IteratorResult<ZLinkObservedStatus<T>>) => void) | undefined {
339
328
  if (this.waitersCount === 0) return undefined;
340
329
  const waiter = this.waiters[this.waitersHead];
341
330
  this.waiters[this.waitersHead] = undefined;
@@ -39,8 +39,7 @@ export class ZLinkClientServerRuntimeProjection implements ZLinkClientServerRunt
39
39
 
40
40
  constructor(
41
41
  private readonly runtime: RuntimeAccessor,
42
- private readonly hostState: HostStateAccessor =
43
- () => ZLinkFrameworkRuntimeState.Serving
42
+ private readonly hostState: HostStateAccessor = () => ZLinkFrameworkRuntimeState.Serving
44
43
  ) {}
45
44
 
46
45
  snapshot(channelName: string): ZLinkClientServerStatus {
@@ -50,23 +49,30 @@ export class ZLinkClientServerRuntimeProjection implements ZLinkClientServerRunt
50
49
  private snapshotCore(channelName: string): ZLinkClientServerStatus {
51
50
  const topology = this.requireRuntime().clientServerTopology(channelName);
52
51
  if (topology.localRole === undefined) {
53
- throw new ZLinkConfigurationException(`ClientServer channel '${channelName}' is not registered.`);
52
+ throw new ZLinkConfigurationException(
53
+ `ClientServer channel '${channelName}' is not registered.`
54
+ );
54
55
  }
55
56
  const targets = topology.descriptors.map((descriptor): ZLinkClientServerTargetStatus => ({
56
57
  nodeRid: descriptor.serverRoutingId,
57
58
  weight: descriptor.weight,
58
- state: descriptor.state === 'serving' ? ZLinkPeerState.Ready
59
- : descriptor.state === 'retiring' ? ZLinkPeerState.Draining
60
- : descriptor.state === 'preparing' ? ZLinkPeerState.Connecting
61
- : ZLinkPeerState.NotConnected,
62
- unavailableReason: descriptor.state === 'serving' && descriptor.weight > 0
63
- ? undefined
64
- : descriptor.state === 'retiring'
65
- ? ZLinkTopologyReason.Draining
66
- : ZLinkTopologyReason.NoReadyTarget
59
+ state:
60
+ descriptor.state === 'serving'
61
+ ? ZLinkPeerState.Ready
62
+ : descriptor.state === 'retiring'
63
+ ? ZLinkPeerState.Draining
64
+ : descriptor.state === 'preparing'
65
+ ? ZLinkPeerState.Connecting
66
+ : ZLinkPeerState.NotConnected,
67
+ unavailableReason:
68
+ descriptor.state === 'serving' && descriptor.weight > 0
69
+ ? undefined
70
+ : descriptor.state === 'retiring'
71
+ ? ZLinkTopologyReason.Draining
72
+ : ZLinkTopologyReason.NoReadyTarget
67
73
  }));
68
74
  const readyTargetCount = targets.filter(
69
- target => target.state === ZLinkPeerState.Ready && target.weight > 0
75
+ (target) => target.state === ZLinkPeerState.Ready && target.weight > 0
70
76
  ).length;
71
77
  const hostState = this.hostState();
72
78
  const isReady = topologyRuntimeIsReady(hostState, readyTargetCount);
@@ -110,13 +116,16 @@ export class ZLinkClientServerRuntimeProjection implements ZLinkClientServerRunt
110
116
  } catch {
111
117
  // The last complete projection remains valid after native teardown.
112
118
  }
113
- queue.seal({
114
- ...current,
115
- state: ZLinkTopologyState.Stopped,
116
- isReady: false,
117
- sequence: this.sequence,
118
- observedAt: new Date()
119
- }, channelName);
119
+ queue.seal(
120
+ {
121
+ ...current,
122
+ state: ZLinkTopologyState.Stopped,
123
+ isReady: false,
124
+ sequence: this.sequence,
125
+ observedAt: new Date()
126
+ },
127
+ channelName
128
+ );
120
129
  }
121
130
  };
122
131
  this.hostObservers.add(hostObserver);
@@ -154,7 +163,8 @@ export class ZLinkClientServerRuntimeProjection implements ZLinkClientServerRunt
154
163
 
155
164
  private requireRuntime(): ZLinkChannelRuntimeManager {
156
165
  const runtime = this.runtime();
157
- if (runtime === undefined) throw new ZLinkConfigurationException('ClientServer runtime has not started.');
166
+ if (runtime === undefined)
167
+ throw new ZLinkConfigurationException('ClientServer runtime has not started.');
158
168
  return runtime;
159
169
  }
160
170
  }
@@ -165,8 +175,7 @@ export class ZLinkFanoutRuntimeProjection implements ZLinkFanoutRuntime {
165
175
 
166
176
  constructor(
167
177
  private readonly runtime: RuntimeAccessor,
168
- private readonly hostState: HostStateAccessor =
169
- () => ZLinkFrameworkRuntimeState.Serving
178
+ private readonly hostState: HostStateAccessor = () => ZLinkFrameworkRuntimeState.Serving
170
179
  ) {}
171
180
 
172
181
  snapshot(channelName: string): ZLinkFanoutStatus {
@@ -174,21 +183,27 @@ export class ZLinkFanoutRuntimeProjection implements ZLinkFanoutRuntime {
174
183
  }
175
184
 
176
185
  private snapshotCore(channelName: string): ZLinkFanoutStatus {
177
- const publishers = this.requireRuntime().fanoutTopology(channelName).descriptors
178
- .map((descriptor): ZLinkPeerStatus => ({
186
+ const publishers = this.requireRuntime()
187
+ .fanoutTopology(channelName)
188
+ .descriptors.map((descriptor): ZLinkPeerStatus => ({
179
189
  nodeRid: descriptor.publisherRoutingId,
180
- state: descriptor.state === 'serving' ? ZLinkPeerState.Ready
181
- : descriptor.state === 'retiring' ? ZLinkPeerState.Draining
182
- : descriptor.state === 'preparing' ? ZLinkPeerState.Connecting
183
- : ZLinkPeerState.NotConnected,
184
- unavailableReason: descriptor.state === 'serving'
185
- ? undefined
186
- : descriptor.state === 'retiring'
187
- ? ZLinkTopologyReason.Draining
188
- : ZLinkTopologyReason.NoReadyTarget
190
+ state:
191
+ descriptor.state === 'serving'
192
+ ? ZLinkPeerState.Ready
193
+ : descriptor.state === 'retiring'
194
+ ? ZLinkPeerState.Draining
195
+ : descriptor.state === 'preparing'
196
+ ? ZLinkPeerState.Connecting
197
+ : ZLinkPeerState.NotConnected,
198
+ unavailableReason:
199
+ descriptor.state === 'serving'
200
+ ? undefined
201
+ : descriptor.state === 'retiring'
202
+ ? ZLinkTopologyReason.Draining
203
+ : ZLinkTopologyReason.NoReadyTarget
189
204
  }));
190
205
  const readyPublisherCount = publishers.filter(
191
- publisher => publisher.state === ZLinkPeerState.Ready
206
+ (publisher) => publisher.state === ZLinkPeerState.Ready
192
207
  ).length;
193
208
  const hostState = this.hostState();
194
209
  const hostReady = runtimeStateIsReady(hostState);
@@ -235,13 +250,16 @@ export class ZLinkFanoutRuntimeProjection implements ZLinkFanoutRuntime {
235
250
  } catch {
236
251
  // The last complete projection remains valid after native teardown.
237
252
  }
238
- queue.seal({
239
- ...current,
240
- state: ZLinkTopologyState.Stopped,
241
- isReady: false,
242
- sequence: this.sequence,
243
- observedAt: new Date()
244
- }, channelName);
253
+ queue.seal(
254
+ {
255
+ ...current,
256
+ state: ZLinkTopologyState.Stopped,
257
+ isReady: false,
258
+ sequence: this.sequence,
259
+ observedAt: new Date()
260
+ },
261
+ channelName
262
+ );
245
263
  }
246
264
  };
247
265
  this.hostObservers.add(hostObserver);
@@ -275,7 +293,8 @@ export class ZLinkFanoutRuntimeProjection implements ZLinkFanoutRuntime {
275
293
 
276
294
  private requireRuntime(): ZLinkChannelRuntimeManager {
277
295
  const runtime = this.runtime();
278
- if (runtime === undefined) throw new ZLinkConfigurationException('Fanout runtime has not started.');
296
+ if (runtime === undefined)
297
+ throw new ZLinkConfigurationException('Fanout runtime has not started.');
279
298
  return runtime;
280
299
  }
281
300
  }
@@ -32,10 +32,7 @@ export type ZLinkExecutionArea = 'application' | 'infrastructure';
32
32
 
33
33
  const executionAreaStorage = new AsyncLocalStorage<ZLinkExecutionArea>();
34
34
 
35
- export function runZLinkExecutionArea<T>(
36
- area: ZLinkExecutionArea,
37
- operation: () => T
38
- ): T {
35
+ export function runZLinkExecutionArea<T>(area: ZLinkExecutionArea, operation: () => T): T {
39
36
  return executionAreaStorage.run(area, operation);
40
37
  }
41
38
 
@@ -140,7 +137,10 @@ export class ZLinkSpotSerialTurn {
140
137
  return;
141
138
  }
142
139
  await Promise.race([
143
- owner.then(() => undefined, () => undefined),
140
+ owner.then(
141
+ () => undefined,
142
+ () => undefined
143
+ ),
144
144
  this.suspended
145
145
  ]);
146
146
  }
@@ -169,12 +169,8 @@ export function runZLinkSpotSerialTurn<T>(
169
169
  turn: ZLinkSpotSerialTurn,
170
170
  operation: () => Promise<T> | T
171
171
  ): Promise<T> {
172
- return runZLinkExecutionArea(
173
- 'application',
174
- () => spotSerialTurnStorage.run(
175
- { executor, turnId, turn },
176
- async () => operation()
177
- )
172
+ return runZLinkExecutionArea('application', () =>
173
+ spotSerialTurnStorage.run({ executor, turnId, turn }, async () => operation())
178
174
  );
179
175
  }
180
176
 
@@ -194,18 +190,13 @@ export function captureZLinkSpotSerialTurn(
194
190
  /** Returns the physical Spot owner only while its captured turn owns the gate. */
195
191
  export function currentZLinkSpotSerialSourceId(): unknown {
196
192
  const current = spotSerialTurnStorage.getStore();
197
- if (
198
- current === undefined
199
- || !current.executor.isActiveTurn(current.turn, current.turnId)
200
- ) {
193
+ if (current === undefined || !current.executor.isActiveTurn(current.turn, current.turnId)) {
201
194
  return undefined;
202
195
  }
203
196
  return current.executor.sourceSpotId;
204
197
  }
205
198
 
206
- export function requireZLinkYieldTurn(
207
- capturedTurn?: ZLinkSpotSerialTurn
208
- ): ZLinkSpotSerialTurn {
199
+ export function requireZLinkYieldTurn(capturedTurn?: ZLinkSpotSerialTurn): ZLinkSpotSerialTurn {
209
200
  const turn = capturedTurn ?? captureZLinkSpotSerialTurn();
210
201
  if (turn === undefined || !turn.yieldAllowed) {
211
202
  throw new ZLinkConfigurationException(
@@ -227,15 +218,19 @@ export function captureZLinkExecutionTurn(): ZLinkCapturedExecutionTurn | undefi
227
218
  }
228
219
  return {
229
220
  yieldPromise: <T>(pending: Promise<T>) => current.turn.yieldPromise(pending),
230
- post: (callback: () => void) => { void current.executor.post(callback); }
221
+ post: (callback: () => void) => {
222
+ void current.executor.post(callback);
223
+ }
231
224
  };
232
225
  }
233
226
 
234
227
  export function isCurrentZLinkSpotSerialTurn(executor: ZLinkSpotSerialTurnExecutorLike): boolean {
235
228
  const current = spotSerialTurnStorage.getStore();
236
- return current !== undefined
237
- && current.executor === executor
238
- && executor.isActiveTurn(current.turn, current.turnId);
229
+ return (
230
+ current !== undefined &&
231
+ current.executor === executor &&
232
+ executor.isActiveTurn(current.turn, current.turnId)
233
+ );
239
234
  }
240
235
 
241
236
  export interface ZLinkExecutionBarrierSeal {
@@ -306,10 +301,7 @@ export class ZLinkExecutionBarrier {
306
301
  return seal;
307
302
  }
308
303
 
309
- async waitForQuiescence(
310
- seal: ZLinkExecutionBarrierSeal,
311
- signal?: AbortSignal
312
- ): Promise<void> {
304
+ async waitForQuiescence(seal: ZLinkExecutionBarrierSeal, signal?: AbortSignal): Promise<void> {
313
305
  this.requireCurrent(seal);
314
306
  if (this.activeClaims === 0) return;
315
307
  if (signal?.aborted === true) throw signal.reason;
@@ -12,10 +12,11 @@ export interface ZLinkSerialSchedulerOptions {
12
12
  readonly lifecycleBurstLimit?: number;
13
13
  }
14
14
 
15
- export const ZLINK_DEFAULT_SERIAL_SCHEDULER_OPTIONS: Required<ZLinkSerialSchedulerOptions> = Object.freeze({
16
- ownerTimeBudget: 10,
17
- lifecycleBurstLimit: 8,
18
- });
15
+ export const ZLINK_DEFAULT_SERIAL_SCHEDULER_OPTIONS: Required<ZLinkSerialSchedulerOptions> =
16
+ Object.freeze({
17
+ ownerTimeBudget: 10,
18
+ lifecycleBurstLimit: 8
19
+ });
19
20
 
20
21
  export interface ZLinkSerialWorkRecord<T> {
21
22
  readonly acceptedSequence: bigint;
@@ -102,10 +103,7 @@ export class ZLinkSerialExecutionQueue {
102
103
  /**
103
104
  * Enqueues a continuation for an already-admitted owner turn.
104
105
  */
105
- submitContinuation<T>(
106
- operation: () => Promise<T> | T,
107
- context?: unknown
108
- ): Promise<T> {
106
+ submitContinuation<T>(operation: () => Promise<T> | T, context?: unknown): Promise<T> {
109
107
  try {
110
108
  return this.admit(operation, { lane: 'application' }, context);
111
109
  } catch (error) {
@@ -125,12 +123,7 @@ export class ZLinkSerialExecutionQueue {
125
123
  context?: unknown,
126
124
  preparation?: ZLinkSerialWorkPreparation
127
125
  ): Promise<T> {
128
- return this.admit(
129
- operation,
130
- { ...options, lane: 'application' },
131
- context,
132
- preparation
133
- );
126
+ return this.admit(operation, { ...options, lane: 'application' }, context, preparation);
134
127
  }
135
128
 
136
129
  /**
@@ -160,14 +153,14 @@ export class ZLinkSerialExecutionQueue {
160
153
  }
161
154
 
162
155
  get hasPendingWork(): boolean {
163
- return this.draining
164
- || this.application.records.length > 0
165
- || this.lifecycle.records.length > 0;
156
+ return (
157
+ this.draining || this.application.records.length > 0 || this.lifecycle.records.length > 0
158
+ );
166
159
  }
167
160
 
168
161
  whenIdle(): Promise<void> {
169
162
  if (!this.hasPendingWork) return Promise.resolve();
170
- return new Promise(resolve => this.idleWaiters.push(resolve));
163
+ return new Promise((resolve) => this.idleWaiters.push(resolve));
171
164
  }
172
165
 
173
166
  /** Stops new submissions while allowing the accepted FIFO to finish. */
@@ -257,8 +250,10 @@ export class ZLinkSerialExecutionQueue {
257
250
  const record = selection.record;
258
251
  if (selection.lane === 'lifecycle') {
259
252
  const applicationHead = this.application.records[0]!;
260
- if (this.application.records.length > 0
261
- && !this.cancelPreparationForRearbitration(applicationHead)) {
253
+ if (
254
+ this.application.records.length > 0 &&
255
+ !this.cancelPreparationForRearbitration(applicationHead)
256
+ ) {
262
257
  waitingForPreparation = true;
263
258
  break;
264
259
  }
@@ -268,8 +263,7 @@ export class ZLinkSerialExecutionQueue {
268
263
  waitingForPreparation = true;
269
264
  break;
270
265
  }
271
- if (record.preparationState === 'pending'
272
- || record.preparationState === 'canceling') {
266
+ if (record.preparationState === 'pending' || record.preparationState === 'canceling') {
273
267
  waitingForPreparation = true;
274
268
  break;
275
269
  }
@@ -295,8 +289,10 @@ export class ZLinkSerialExecutionQueue {
295
289
  } finally {
296
290
  this.draining = false;
297
291
  this.claimStartedAt = undefined;
298
- if (!waitingForPreparation
299
- && (this.application.records.length > 0 || this.lifecycle.records.length > 0)) {
292
+ if (
293
+ !waitingForPreparation &&
294
+ (this.application.records.length > 0 || this.lifecycle.records.length > 0)
295
+ ) {
300
296
  this.scheduleDrain();
301
297
  } else {
302
298
  if (this.application.records.length === 0 && this.lifecycle.records.length === 0) {
@@ -306,10 +302,12 @@ export class ZLinkSerialExecutionQueue {
306
302
  }
307
303
  }
308
304
 
309
- private selectNext(): {
310
- readonly lane: ZLinkSerialWorkLane;
311
- readonly record: SerialWorkRecord<unknown>;
312
- } | undefined {
305
+ private selectNext():
306
+ | {
307
+ readonly lane: ZLinkSerialWorkLane;
308
+ readonly record: SerialWorkRecord<unknown>;
309
+ }
310
+ | undefined {
313
311
  const applicationReady = this.application.records.length > 0;
314
312
  const lifecycleReady = this.lifecycle.records.length > 0;
315
313
  if (!applicationReady && !lifecycleReady) return undefined;
@@ -329,9 +327,7 @@ export class ZLinkSerialExecutionQueue {
329
327
  readonly lane: ZLinkSerialWorkLane;
330
328
  readonly record: SerialWorkRecord<unknown>;
331
329
  }): ZLinkSerialWorkRecord<unknown> {
332
- const record = selection.lane === 'lifecycle'
333
- ? this.takeLifecycle()
334
- : this.takeApplication();
330
+ const record = selection.lane === 'lifecycle' ? this.takeLifecycle() : this.takeApplication();
335
331
  if (record !== selection.record) {
336
332
  throw new Error('The selected serial work record changed before owner claim.');
337
333
  }
@@ -340,10 +336,7 @@ export class ZLinkSerialExecutionQueue {
340
336
 
341
337
  private takeLifecycle(): ZLinkSerialWorkRecord<unknown> {
342
338
  this.lifecycleStreak += 1;
343
- if (
344
- this.application.records.length > 0
345
- && this.lifecycleStreak >= this.lifecycleBurstLimit
346
- ) {
339
+ if (this.application.records.length > 0 && this.lifecycleStreak >= this.lifecycleBurstLimit) {
347
340
  this.lifecycleDebt = true;
348
341
  }
349
342
  return this.lifecycle.records.shift()!;
@@ -375,7 +368,7 @@ export class ZLinkSerialExecutionQueue {
375
368
  record.preparationController = undefined;
376
369
  this.scheduleDrain();
377
370
  },
378
- error => {
371
+ (error) => {
379
372
  if (record.preparationState === 'canceling' || controller.signal.aborted) {
380
373
  preparation.cancel();
381
374
  record.preparationState = 'idle';
@@ -390,9 +383,7 @@ export class ZLinkSerialExecutionQueue {
390
383
  }
391
384
 
392
385
  /** Returns false while an outstanding readiness attempt is being canceled. */
393
- private cancelPreparationForRearbitration(
394
- record: SerialWorkRecord<unknown>
395
- ): boolean {
386
+ private cancelPreparationForRearbitration(record: SerialWorkRecord<unknown>): boolean {
396
387
  if (record.preparation === undefined || record.preparationState === 'idle') return true;
397
388
  if (record.preparationState === 'ready') {
398
389
  record.preparation.cancel();
@@ -438,5 +429,5 @@ function validateNonNegative(value: number, field: string): void {
438
429
  }
439
430
 
440
431
  function macrotaskBoundary(): Promise<void> {
441
- return new Promise(resolve => setImmediate(resolve));
432
+ return new Promise((resolve) => setImmediate(resolve));
442
433
  }
@@ -66,8 +66,8 @@ export class ZLinkStateLane {
66
66
  throwIfReentrant(): void {
67
67
  if (this.isOnLane) {
68
68
  throw new Error(
69
- 'This code already runs on the state lane it is trying to enter. Call the component\'s '
70
- + 'private state method directly instead of re-entering its public surface.'
69
+ "This code already runs on the state lane it is trying to enter. Call the component's " +
70
+ 'private state method directly instead of re-entering its public surface.'
71
71
  );
72
72
  }
73
73
  }