@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
@@ -6,10 +6,7 @@ import {
6
6
  } from '../framework-errors-internal';
7
7
  import { isZLinkBackendResultError } from '../backend/runtime-values';
8
8
  import type { Message } from '../../contracts/Common/Message';
9
- import {
10
- ZLinkSubmitStatus,
11
- type ZLinkSubmitResult
12
- } from '../messaging/submission-result';
9
+ import { ZLinkSubmitStatus, type ZLinkSubmitResult } from '../messaging/submission-result';
13
10
  import {
14
11
  ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome,
15
12
  type ZLinkRuntimeMessageFlowResult,
@@ -60,9 +57,8 @@ export class ZLinkChannelOutboundOperations {
60
57
  ): Promise<ZLinkSubmitResult> {
61
58
  // Call-scoped flow (spec 27 §4): the envelope encoder and the trace
62
59
  // points below share one ambient flow that does not outlive this call.
63
- return runWithOutboundFlow(
64
- this.dispatchServices.flowCreationEnabled(),
65
- () => this.sendScoped(channelName, packetName, message, signal, metadata)
60
+ return runWithOutboundFlow(this.dispatchServices.flowCreationEnabled(), () =>
61
+ this.sendScoped(channelName, packetName, message, signal, metadata)
66
62
  );
67
63
  }
68
64
 
@@ -132,7 +128,7 @@ export class ZLinkChannelOutboundOperations {
132
128
  channelRouteKind: 'client_server',
133
129
  serverRid,
134
130
  packetName,
135
- correlationId: undefined,
131
+ correlationId: undefined
136
132
  });
137
133
  }
138
134
 
@@ -144,10 +140,11 @@ export class ZLinkChannelOutboundOperations {
144
140
  signal?: AbortSignal,
145
141
  metadata?: ReadonlyMap<string, string>
146
142
  ): Promise<TReply> {
147
- return keepChannelRequestAlive(runWithOutboundFlow(
148
- this.dispatchServices.flowCreationEnabled(),
149
- () => this.requestScoped<TReply>(channelName, packetName, request, timeoutMs, signal, metadata)
150
- ));
143
+ return keepChannelRequestAlive(
144
+ runWithOutboundFlow(this.dispatchServices.flowCreationEnabled(), () =>
145
+ this.requestScoped<TReply>(channelName, packetName, request, timeoutMs, signal, metadata)
146
+ )
147
+ );
151
148
  }
152
149
 
153
150
  private async requestScoped<TReply>(
@@ -165,10 +162,7 @@ export class ZLinkChannelOutboundOperations {
165
162
  const traceTerminal = (result: ZLinkRuntimeMessageFlowResult): void => {
166
163
  if (terminalRecorded) return;
167
164
  terminalRecorded = true;
168
- this.dispatchServices.beginOutbound(
169
- ZLinkMessageFlowOutcome.ReplyReceived,
170
- result
171
- )?.trace({
165
+ this.dispatchServices.beginOutbound(ZLinkMessageFlowOutcome.ReplyReceived, result)?.trace({
172
166
  surface: ZLinkDispatchErrorSurface.Channel,
173
167
  messageKind: ZLinkDispatchMessageKind.Request,
174
168
  channelName,
@@ -181,9 +175,14 @@ export class ZLinkChannelOutboundOperations {
181
175
  };
182
176
  try {
183
177
  throwIfAborted(signal);
184
- const dealer = await this.sockets.awaitClientDealerForOutbound(channelName, signal, deadlineAtMs);
178
+ const dealer = await this.sockets.awaitClientDealerForOutbound(
179
+ channelName,
180
+ signal,
181
+ deadlineAtMs
182
+ );
185
183
  // Binding timeouts are whole milliseconds; rounding down keeps the call's deadline.
186
- const remainingMs = deadlineAtMs === undefined ? undefined : Math.floor(deadlineAtMs - performance.now());
184
+ const remainingMs =
185
+ deadlineAtMs === undefined ? undefined : Math.floor(deadlineAtMs - performance.now());
187
186
  if (dealer === undefined || (remainingMs !== undefined && remainingMs <= 0)) {
188
187
  throw createInternalFrameworkException(
189
188
  this.sockets.hasKnownClientServerTargets(channelName)
@@ -267,9 +266,8 @@ export class ZLinkChannelOutboundOperations {
267
266
  event: unknown,
268
267
  metadata: ReadonlyMap<string, string> = EMPTY_OUTBOUND_METADATA
269
268
  ): ZLinkSubmitResult {
270
- return runWithOutboundFlow(
271
- this.dispatchServices.flowCreationEnabled(),
272
- () => this.tryPublishScoped(channelName, topic, packetName, event, metadata)
269
+ return runWithOutboundFlow(this.dispatchServices.flowCreationEnabled(), () =>
270
+ this.tryPublishScoped(channelName, topic, packetName, event, metadata)
273
271
  );
274
272
  }
275
273
 
@@ -308,9 +306,8 @@ export class ZLinkChannelOutboundOperations {
308
306
  signal?: AbortSignal,
309
307
  metadata: ReadonlyMap<string, string> = EMPTY_OUTBOUND_METADATA
310
308
  ): Promise<ZLinkSubmitResult> {
311
- return runWithOutboundFlow(
312
- this.dispatchServices.flowCreationEnabled(),
313
- () => this.publishScoped(channelName, topic, packetName, event, signal, metadata)
309
+ return runWithOutboundFlow(this.dispatchServices.flowCreationEnabled(), () =>
310
+ this.publishScoped(channelName, topic, packetName, event, signal, metadata)
314
311
  );
315
312
  }
316
313
 
@@ -352,9 +349,8 @@ export class ZLinkChannelOutboundOperations {
352
349
  signal?: AbortSignal,
353
350
  metadata: ReadonlyMap<string, string> = EMPTY_OUTBOUND_METADATA
354
351
  ): Promise<ZLinkSubmitResult> {
355
- return runWithOutboundFlow(
356
- this.dispatchServices.flowCreationEnabled(),
357
- () => this.routeSubmitScoped(routerChannelId, targetNodeRid, packetName, message, signal, metadata)
352
+ return runWithOutboundFlow(this.dispatchServices.flowCreationEnabled(), () =>
353
+ this.routeSubmitScoped(routerChannelId, targetNodeRid, packetName, message, signal, metadata)
358
354
  );
359
355
  }
360
356
 
@@ -426,9 +422,8 @@ export class ZLinkChannelOutboundOperations {
426
422
  signal?: AbortSignal,
427
423
  metadata?: ReadonlyMap<string, string>
428
424
  ): Promise<TReply> {
429
- return runWithOutboundFlow(
430
- this.dispatchServices.flowCreationEnabled(),
431
- () => this.routeRequestScoped<TReply>(
425
+ return runWithOutboundFlow(this.dispatchServices.flowCreationEnabled(), () =>
426
+ this.routeRequestScoped<TReply>(
432
427
  routerChannelId,
433
428
  targetNodeRid,
434
429
  packetName,
@@ -455,10 +450,7 @@ export class ZLinkChannelOutboundOperations {
455
450
  const traceTerminal = (result: ZLinkRuntimeMessageFlowResult): void => {
456
451
  if (terminalRecorded) return;
457
452
  terminalRecorded = true;
458
- this.dispatchServices.beginOutbound(
459
- ZLinkMessageFlowOutcome.ReplyReceived,
460
- result
461
- )?.trace({
453
+ this.dispatchServices.beginOutbound(ZLinkMessageFlowOutcome.ReplyReceived, result)?.trace({
462
454
  surface: ZLinkDispatchErrorSurface.RouteMeshChannel,
463
455
  messageKind: ZLinkDispatchMessageKind.Request,
464
456
  channelName: routerChannelId,
@@ -520,8 +512,8 @@ export class ZLinkChannelOutboundOperations {
520
512
  traceTerminal(requestTerminalResult(error, signal));
521
513
  }
522
514
  if (
523
- this.sockets.routeMemberStatus(routerChannelId, targetNodeRid) === 'disconnected'
524
- && (isSubmitDeadline(error) || error instanceof ZLinkRouteDisconnectedError)
515
+ this.sockets.routeMemberStatus(routerChannelId, targetNodeRid) === 'disconnected' &&
516
+ (isSubmitDeadline(error) || error instanceof ZLinkRouteDisconnectedError)
525
517
  ) {
526
518
  throw createInternalFrameworkException(
527
519
  ZLinkFrameworkInternalErrorKind.RouteNotConnected,
@@ -557,8 +549,10 @@ export function keepChannelRequestAlive<T>(request: Promise<T>): Promise<T> {
557
549
  }
558
550
 
559
551
  function isSubmitDeadline(error: unknown): boolean {
560
- return error instanceof ZLinkFrameworkException
561
- && internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.DeadlineExceeded;
552
+ return (
553
+ error instanceof ZLinkFrameworkException &&
554
+ internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.DeadlineExceeded
555
+ );
562
556
  }
563
557
 
564
558
  function publishResult(status: ZLinkSubmitStatus): ZLinkSubmitResult {
@@ -577,7 +571,9 @@ function requestTerminalResult(
577
571
  }
578
572
 
579
573
  function isRemoteChannelErrorReply(error: unknown): boolean {
580
- return error instanceof ZLinkFrameworkException
581
- && 'origin' in error
582
- && (error as { readonly origin?: unknown }).origin !== undefined;
574
+ return (
575
+ error instanceof ZLinkFrameworkException &&
576
+ 'origin' in error &&
577
+ (error as { readonly origin?: unknown }).origin !== undefined
578
+ );
583
579
  }
@@ -8,9 +8,7 @@ import type {
8
8
  ZLinkBackendReadablePoller,
9
9
  ZLinkChannelBackendAdapter
10
10
  } from '../backend/contracts';
11
- import {
12
- closeMessages
13
- } from './channel-envelope';
11
+ import { closeMessages } from './channel-envelope';
14
12
  import { tryDecodeChannelHeader } from './channel-envelope-inspection';
15
13
  // 같은 계약을 두 곳에 두지 않는다 — channel-multipart가 소유한다.
16
14
  import type { ZLinkMultipartAsyncSubmitOperation } from './channel-multipart';
@@ -19,10 +17,7 @@ import {
19
17
  ZLinkReceiveTaskTracker,
20
18
  type ZLinkReceiveTaskErrorReporter
21
19
  } from './channel-receive-task-tracker';
22
- import {
23
- ApplicationJobQueue,
24
- type ApplicationJobQueuePermit
25
- } from '../host/application-job-queue';
20
+ import { ApplicationJobQueue, type ApplicationJobQueuePermit } from '../host/application-job-queue';
26
21
  import { runWithApplicationJobPermit } from '../application-jobs/application-job-queue-scope';
27
22
 
28
23
  // The loop awaits between reads and the signal can abort in that gap. Reading
@@ -32,7 +27,6 @@ function signalAborted(signal?: AbortSignal): boolean {
32
27
  return signal?.aborted === true;
33
28
  }
34
29
 
35
-
36
30
  interface ZLinkMultipartOperation<TNext> {
37
31
  message(message: MessageLike): TNext;
38
32
  }
@@ -127,7 +121,7 @@ export class ZLinkReceiveRoundRobinCoordinator {
127
121
  }
128
122
 
129
123
  setReady(token: symbol, ready: boolean): void {
130
- const owner = this.owners.find(candidate => candidate.token === token);
124
+ const owner = this.owners.find((candidate) => candidate.token === token);
131
125
  if (owner !== undefined) owner.ready = ready;
132
126
  }
133
127
 
@@ -141,7 +135,7 @@ export class ZLinkReceiveRoundRobinCoordinator {
141
135
 
142
136
  release(token: symbol): void {
143
137
  if (this.active !== token) return;
144
- const index = this.owners.findIndex(owner => owner.token === token);
138
+ const index = this.owners.findIndex((owner) => owner.token === token);
145
139
  this.active = undefined;
146
140
  if (this.owners.length > 0) this.cursor = (index + 1) % this.owners.length;
147
141
  }
@@ -151,7 +145,7 @@ export class ZLinkReceiveRoundRobinCoordinator {
151
145
  }
152
146
 
153
147
  unregister(token: symbol): void {
154
- const index = this.owners.findIndex(owner => owner.token === token);
148
+ const index = this.owners.findIndex((owner) => owner.token === token);
155
149
  if (index < 0) return;
156
150
  if (this.active === token) this.active = undefined;
157
151
  this.owners.splice(index, 1);
@@ -244,15 +238,16 @@ export class ZLinkChannelReceiveLoop {
244
238
 
245
239
  private async runLoop(signal?: AbortSignal): Promise<void> {
246
240
  const batch = new ZLinkReceiveBatchBudget();
247
- const capacitySignal = signal === undefined
248
- ? this.capacityStop.signal
249
- : AbortSignal.any([signal, this.capacityStop.signal]);
241
+ const capacitySignal =
242
+ signal === undefined
243
+ ? this.capacityStop.signal
244
+ : AbortSignal.any([signal, this.capacityStop.signal]);
250
245
  while (!this.isStopped() && signal?.aborted !== true) {
251
246
  if (!this.poller.wait(0)) {
252
247
  this.roundRobin?.setReady(this.receiveOwner, false);
253
248
  this.roundRobin?.release(this.receiveOwner);
254
249
  batch.reset();
255
- if (!await this.poller.waitForReadable(capacitySignal)) break;
250
+ if (!(await this.poller.waitForReadable(capacitySignal))) break;
256
251
  continue;
257
252
  }
258
253
  const applicationJobPermit = await this.acquirePermit(capacitySignal);
@@ -265,9 +260,10 @@ export class ZLinkChannelReceiveLoop {
265
260
  await waitReceiveLoopTurn();
266
261
  continue;
267
262
  }
268
- const releaseRawReceive = this.roundRobin === undefined
269
- ? this.rawReceiveReservations.tryAcquire()
270
- : this.roundRobin.tryAcquireRawReceiveReservation();
263
+ const releaseRawReceive =
264
+ this.roundRobin === undefined
265
+ ? this.rawReceiveReservations.tryAcquire()
266
+ : this.roundRobin.tryAcquireRawReceiveReservation();
271
267
  if (releaseRawReceive === undefined) {
272
268
  applicationJobPermit.releaseAfterInternalProcessing();
273
269
  this.roundRobin?.release(this.receiveOwner);
@@ -282,7 +278,7 @@ export class ZLinkChannelReceiveLoop {
282
278
  this.roundRobin?.setReady(this.receiveOwner, false);
283
279
  this.roundRobin?.release(this.receiveOwner);
284
280
  batch.reset();
285
- if (!await this.poller.waitForReadable(capacitySignal)) break;
281
+ if (!(await this.poller.waitForReadable(capacitySignal))) break;
286
282
  continue;
287
283
  }
288
284
  const receivedBytes = messageBytes(received.parts);
@@ -314,12 +310,8 @@ export class ZLinkChannelReceiveLoop {
314
310
  }
315
311
  applicationJobPermit.markApplicationQueued();
316
312
  const task = runWithApplicationJobPermit(applicationJobPermit, () =>
317
- this.dispatchAndClose(
318
- received,
319
- signal,
320
- classification.decodedHeader,
321
- true
322
- ));
313
+ this.dispatchAndClose(received, signal, classification.decodedHeader, true)
314
+ );
323
315
  releaseRawReceive();
324
316
  this.inFlight.track(task);
325
317
  if (batch.record(receivedBytes)) {
@@ -350,14 +342,20 @@ export class ZLinkChannelReceiveLoop {
350
342
  }
351
343
  }
352
344
 
353
- private async dispatchAndClose(received: {
354
- parts: readonly Message[];
355
- routingId: unknown;
356
- spotId?: unknown;
357
- replyToken: unknown | null;
358
- send?: () => ZLinkMultipartOperation<ZLinkMultipartAsyncSubmitOperation>;
359
- close(): void;
360
- }, signal?: AbortSignal, decodedHeader?: ZLinkChannelEnvelopeHeader, infrastructureChecked = false, releaseRawReceive?: () => void): Promise<void> {
345
+ private async dispatchAndClose(
346
+ received: {
347
+ parts: readonly Message[];
348
+ routingId: unknown;
349
+ spotId?: unknown;
350
+ replyToken: unknown | null;
351
+ send?: () => ZLinkMultipartOperation<ZLinkMultipartAsyncSubmitOperation>;
352
+ close(): void;
353
+ },
354
+ signal?: AbortSignal,
355
+ decodedHeader?: ZLinkChannelEnvelopeHeader,
356
+ infrastructureChecked = false,
357
+ releaseRawReceive?: () => void
358
+ ): Promise<void> {
361
359
  let closeReceived = true;
362
360
  try {
363
361
  if (!infrastructureChecked) {
@@ -368,15 +366,10 @@ export class ZLinkChannelReceiveLoop {
368
366
  }
369
367
  decodedHeader = classification.decodedHeader;
370
368
  }
371
- const consumed = await this.dispatcher.dispatch(
372
- received,
373
- this.router,
374
- signal,
375
- decodedHeader
376
- );
377
- if (consumed === true) {
378
- closeReceived = false;
379
- }
369
+ const consumed = await this.dispatcher.dispatch(received, this.router, signal, decodedHeader);
370
+ if (consumed === true) {
371
+ closeReceived = false;
372
+ }
380
373
  } finally {
381
374
  releaseRawReceive?.();
382
375
  if (closeReceived) {
@@ -395,10 +388,13 @@ export class ZLinkChannelReceiveLoop {
395
388
  if (this.infrastructureHandler?.(received, this.router) === true) {
396
389
  return { kind: 'consumed', closeReceived: true };
397
390
  }
398
- const decodedHeader = tryDecodeChannelHeader(received.parts, this.dispatcher.flowEnabled?.() ?? true);
391
+ const decodedHeader = tryDecodeChannelHeader(
392
+ received.parts,
393
+ this.dispatcher.flowEnabled?.() ?? true
394
+ );
399
395
  if (
400
- decodedHeader === undefined
401
- && this.spotRouteBridge?.handleRouterReceived(
396
+ decodedHeader === undefined &&
397
+ this.spotRouteBridge?.handleRouterReceived(
402
398
  this.channelName,
403
399
  received.routingId as RoutingId,
404
400
  0n,
@@ -464,15 +460,16 @@ export class ZLinkSubscriberReceiveLoop {
464
460
 
465
461
  private async runLoop(signal?: AbortSignal): Promise<void> {
466
462
  const batch = new ZLinkReceiveBatchBudget();
467
- const capacitySignal = signal === undefined
468
- ? this.capacityStop.signal
469
- : AbortSignal.any([signal, this.capacityStop.signal]);
463
+ const capacitySignal =
464
+ signal === undefined
465
+ ? this.capacityStop.signal
466
+ : AbortSignal.any([signal, this.capacityStop.signal]);
470
467
  while (!this.isStopped() && signal?.aborted !== true) {
471
468
  if (!this.poller.wait(0)) {
472
469
  this.roundRobin?.setReady(this.receiveOwner, false);
473
470
  this.roundRobin?.release(this.receiveOwner);
474
471
  batch.reset();
475
- if (!await this.poller.waitForReadable(capacitySignal)) break;
472
+ if (!(await this.poller.waitForReadable(capacitySignal))) break;
476
473
  continue;
477
474
  }
478
475
  const applicationJobPermit = await this.acquirePermit(capacitySignal);
@@ -483,9 +480,10 @@ export class ZLinkSubscriberReceiveLoop {
483
480
  await waitReceiveLoopTurn();
484
481
  continue;
485
482
  }
486
- const releaseRawReceive = this.roundRobin === undefined
487
- ? this.rawReceiveReservations.tryAcquire()
488
- : this.roundRobin.tryAcquireRawReceiveReservation();
483
+ const releaseRawReceive =
484
+ this.roundRobin === undefined
485
+ ? this.rawReceiveReservations.tryAcquire()
486
+ : this.roundRobin.tryAcquireRawReceiveReservation();
489
487
  if (releaseRawReceive === undefined) {
490
488
  applicationJobPermit.releaseAfterInternalProcessing();
491
489
  this.roundRobin?.release(this.receiveOwner);
@@ -501,7 +499,7 @@ export class ZLinkSubscriberReceiveLoop {
501
499
  this.roundRobin?.setReady(this.receiveOwner, false);
502
500
  this.roundRobin?.release(this.receiveOwner);
503
501
  batch.reset();
504
- if (!await this.poller.waitForReadable(capacitySignal)) break;
502
+ if (!(await this.poller.waitForReadable(capacitySignal))) break;
505
503
  continue;
506
504
  }
507
505
  const receivedBytes = messageBytes(topicMessage.parts as readonly Message[]);
@@ -533,12 +531,8 @@ export class ZLinkSubscriberReceiveLoop {
533
531
  }
534
532
  applicationJobPermit.markApplicationQueued();
535
533
  const task = runWithApplicationJobPermit(applicationJobPermit, () =>
536
- this.dispatchAndClose(
537
- topicMessage,
538
- signal,
539
- classification.decodedHeader,
540
- true
541
- ));
534
+ this.dispatchAndClose(topicMessage, signal, classification.decodedHeader, true)
535
+ );
542
536
  releaseRawReceive();
543
537
  this.inFlight.track(task);
544
538
  if (batch.record(receivedBytes)) {
@@ -582,7 +576,7 @@ export class ZLinkSubscriberReceiveLoop {
582
576
  if (classification.kind === 'consumed') return;
583
577
  decodedHeader = classification.decodedHeader;
584
578
  }
585
- await this.dispatcher.dispatch(topicMessage, signal, decodedHeader);
579
+ await this.dispatcher.dispatch(topicMessage, signal, decodedHeader);
586
580
  } finally {
587
581
  releaseRawReceive?.();
588
582
  closeMessages(topicMessage.parts as readonly Message[]);
@@ -595,12 +589,11 @@ export class ZLinkSubscriberReceiveLoop {
595
589
  | { readonly kind: 'consumed' }
596
590
  | { readonly kind: 'application'; readonly decodedHeader?: ZLinkChannelEnvelopeHeader } {
597
591
  const infrastructureResult = this.infrastructureHandler?.(topicMessage);
598
- const decodedHeader = typeof infrastructureResult === 'object'
599
- ? infrastructureResult.decodedHeader
600
- : undefined;
592
+ const decodedHeader =
593
+ typeof infrastructureResult === 'object' ? infrastructureResult.decodedHeader : undefined;
601
594
  if (
602
- infrastructureResult === true
603
- || (typeof infrastructureResult === 'object' && infrastructureResult.consumed)
595
+ infrastructureResult === true ||
596
+ (typeof infrastructureResult === 'object' && infrastructureResult.consumed)
604
597
  ) {
605
598
  return { kind: 'consumed' };
606
599
  }
@@ -657,15 +650,16 @@ export class ZLinkRouteReceiveLoop {
657
650
 
658
651
  private async runLoop(signal?: AbortSignal): Promise<void> {
659
652
  const batch = new ZLinkReceiveBatchBudget();
660
- const capacitySignal = signal === undefined
661
- ? this.capacityStop.signal
662
- : AbortSignal.any([signal, this.capacityStop.signal]);
653
+ const capacitySignal =
654
+ signal === undefined
655
+ ? this.capacityStop.signal
656
+ : AbortSignal.any([signal, this.capacityStop.signal]);
663
657
  while (!this.isStopped() && signal?.aborted !== true) {
664
658
  if (!this.poller.wait(0)) {
665
659
  this.roundRobin?.setReady(this.receiveOwner, false);
666
660
  this.roundRobin?.release(this.receiveOwner);
667
661
  batch.reset();
668
- if (!await this.poller.waitForReadable(capacitySignal)) break;
662
+ if (!(await this.poller.waitForReadable(capacitySignal))) break;
669
663
  continue;
670
664
  }
671
665
  this.roundRobin?.setReady(this.receiveOwner, true);
@@ -673,9 +667,10 @@ export class ZLinkRouteReceiveLoop {
673
667
  await waitReceiveLoopTurn();
674
668
  continue;
675
669
  }
676
- const releaseRawReceive = this.roundRobin === undefined
677
- ? this.rawReceiveReservations.tryAcquire()
678
- : this.roundRobin.tryAcquireRawReceiveReservation();
670
+ const releaseRawReceive =
671
+ this.roundRobin === undefined
672
+ ? this.rawReceiveReservations.tryAcquire()
673
+ : this.roundRobin.tryAcquireRawReceiveReservation();
679
674
  if (releaseRawReceive === undefined) {
680
675
  this.roundRobin?.release(this.receiveOwner);
681
676
  await waitReceiveLoopTurn();
@@ -688,7 +683,7 @@ export class ZLinkRouteReceiveLoop {
688
683
  this.roundRobin?.setReady(this.receiveOwner, false);
689
684
  this.roundRobin?.release(this.receiveOwner);
690
685
  batch.reset();
691
- if (!await this.poller.waitForReadable(capacitySignal)) break;
686
+ if (!(await this.poller.waitForReadable(capacitySignal))) break;
692
687
  continue;
693
688
  }
694
689
  const receivedBytes = messageBytes(received.parts);
@@ -708,12 +703,14 @@ export class ZLinkRouteReceiveLoop {
708
703
  // submit() transfers the parts to Core before returning its admission
709
704
  // Promise. Track that terminal without serializing the single route
710
705
  // receiver; the held reservation bounds pending infrastructure sends.
711
- this.inFlight.track(infrastructure
712
- .catch(error => {
713
- received.close();
714
- throw error;
715
- })
716
- .finally(releaseRawReceive));
706
+ this.inFlight.track(
707
+ infrastructure
708
+ .catch((error) => {
709
+ received.close();
710
+ throw error;
711
+ })
712
+ .finally(releaseRawReceive)
713
+ );
717
714
  }
718
715
  if (batch.record(receivedBytes)) {
719
716
  this.roundRobin?.release(this.receiveOwner);
@@ -741,7 +738,8 @@ export class ZLinkRouteReceiveLoop {
741
738
  }
742
739
  applicationJobPermit.markApplicationQueued();
743
740
  const task = runWithApplicationJobPermit(applicationJobPermit, () =>
744
- this.dispatchAndClose(received, signal, true));
741
+ this.dispatchAndClose(received, signal, true)
742
+ );
745
743
  releaseRawReceive();
746
744
  this.inFlight.track(task);
747
745
  if (batch.record(receivedBytes)) {
@@ -772,16 +770,21 @@ export class ZLinkRouteReceiveLoop {
772
770
  }
773
771
  }
774
772
 
775
- private async dispatchAndClose(received: {
776
- parts: readonly Message[];
777
- routingId: unknown;
778
- spotId?: unknown;
779
- replyToken: unknown | null;
780
- close(): void;
781
- }, signal?: AbortSignal, infrastructureChecked = false, releaseRawReceive?: () => void): Promise<void> {
773
+ private async dispatchAndClose(
774
+ received: {
775
+ parts: readonly Message[];
776
+ routingId: unknown;
777
+ spotId?: unknown;
778
+ replyToken: unknown | null;
779
+ close(): void;
780
+ },
781
+ signal?: AbortSignal,
782
+ infrastructureChecked = false,
783
+ releaseRawReceive?: () => void
784
+ ): Promise<void> {
782
785
  let closeReceived = true;
783
- try {
784
- const consumed = await this.dispatcher.dispatch(
786
+ try {
787
+ const consumed = await this.dispatcher.dispatch(
785
788
  received,
786
789
  this.router,
787
790
  signal,
@@ -791,9 +794,9 @@ export class ZLinkRouteReceiveLoop {
791
794
  if (consumed === true) {
792
795
  closeReceived = false;
793
796
  }
794
- } finally {
795
- releaseRawReceive?.();
796
- if (closeReceived) {
797
+ } finally {
798
+ releaseRawReceive?.();
799
+ if (closeReceived) {
797
800
  received.close();
798
801
  }
799
802
  }
@@ -812,13 +815,15 @@ class ZLinkReceiveBatchBudget {
812
815
  record(bytes: number): boolean {
813
816
  this.messages += 1;
814
817
  this.bytes += bytes;
815
- return this.messages >= RECEIVE_BATCH_MESSAGE_LIMIT
816
- || this.bytes >= RECEIVE_BATCH_BYTE_LIMIT
817
- || performance.now() - this.startedAt >= RECEIVE_BATCH_TIME_LIMIT_MS;
818
+ return (
819
+ this.messages >= RECEIVE_BATCH_MESSAGE_LIMIT ||
820
+ this.bytes >= RECEIVE_BATCH_BYTE_LIMIT ||
821
+ performance.now() - this.startedAt >= RECEIVE_BATCH_TIME_LIMIT_MS
822
+ );
818
823
  }
819
824
 
820
825
  async yieldAndReset(): Promise<void> {
821
- await new Promise<void>(resolve => setImmediate(resolve));
826
+ await new Promise<void>((resolve) => setImmediate(resolve));
822
827
  this.reset();
823
828
  }
824
829
 
@@ -830,10 +835,9 @@ class ZLinkReceiveBatchBudget {
830
835
  }
831
836
 
832
837
  function waitReceiveLoopTurn(): Promise<void> {
833
- return new Promise<void>(resolve => setImmediate(resolve));
838
+ return new Promise<void>((resolve) => setImmediate(resolve));
834
839
  }
835
840
 
836
-
837
841
  function messageBytes(parts: readonly Message[]): number {
838
842
  return parts.reduce((sum, part) => sum + messagePartBytes(part), 0);
839
843
  }
@@ -16,7 +16,7 @@ export class ZLinkReceiveTaskTracker {
16
16
  this.tasks.add(task);
17
17
  void task.then(
18
18
  () => this.complete(task),
19
- error => {
19
+ (error) => {
20
20
  this.complete(task);
21
21
  if (consumeError) {
22
22
  try {