@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,4 +1,7 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from './framework-errors-internal';
1
+ import {
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from './framework-errors-internal';
2
5
  export class ZLinkRuntimeAdmissionGate {
3
6
  private readonly meshes = new Map<string, ZLinkMeshAdmissionState>();
4
7
 
@@ -100,8 +103,8 @@ export class ZLinkRuntimeAdmissionGate {
100
103
  }
101
104
  reject(signal?.reason);
102
105
  };
103
- state.waiters.push(complete);
104
- state.waiterCount += 1;
106
+ state.waiters.push(complete);
107
+ state.waiterCount += 1;
105
108
  signal?.addEventListener('abort', abort, { once: true });
106
109
  });
107
110
  }
@@ -113,9 +116,7 @@ export class ZLinkRuntimeAdmissionGate {
113
116
  return;
114
117
  }
115
118
  throw createInternalFrameworkException(
116
- meshName === undefined
117
- ? this.firstSealedReason()
118
- : this.requireState(meshName).sealedReason,
119
+ meshName === undefined ? this.firstSealedReason() : this.requireState(meshName).sealedReason,
119
120
  `${operation} was rejected because framework admission is closed.`
120
121
  );
121
122
  }
@@ -126,9 +127,8 @@ export class ZLinkRuntimeAdmissionGate {
126
127
  } else if (this.accepts(meshName)) {
127
128
  return;
128
129
  }
129
- const reason = meshName === undefined
130
- ? this.firstSealedReason()
131
- : this.requireState(meshName).sealedReason;
130
+ const reason =
131
+ meshName === undefined ? this.firstSealedReason() : this.requireState(meshName).sealedReason;
132
132
  throw createInternalFrameworkException(
133
133
  reason === ZLinkFrameworkInternalErrorKind.RuntimeShutdown
134
134
  ? ZLinkFrameworkInternalErrorKind.RuntimeShutdown
@@ -1,7 +1,4 @@
1
- import type {
2
- ApplicationJobPermitPort,
3
- ApplicationJobQueuePort
4
- } from './contracts';
1
+ import type { ApplicationJobPermitPort, ApplicationJobQueuePort } from './contracts';
5
2
 
6
3
  export type ApplicationJobRecordDomain = 'application' | 'infrastructure';
7
4
 
@@ -53,9 +50,8 @@ export class ApplicationIngressRecordOwner {
53
50
  const initial = this.shared.takeInitialPermit(domain);
54
51
  if (initial !== undefined) return initial;
55
52
 
56
- const waitSignal = signal === undefined
57
- ? this.stop.signal
58
- : AbortSignal.any([this.stop.signal, signal]);
53
+ const waitSignal =
54
+ signal === undefined ? this.stop.signal : AbortSignal.any([this.stop.signal, signal]);
59
55
  const permit = await this.shared.acquirePermit(waitSignal);
60
56
  if (this.closed) {
61
57
  permit.releaseAfterInternalProcessing();
@@ -125,11 +121,7 @@ export class ApplicationJobRecordLease implements ApplicationJobPermitPort {
125
121
  }
126
122
 
127
123
  private releaseJobIfTerminal(): void {
128
- if (
129
- this.jobReleased
130
- || !this.ingressClosed
131
- || !this.processingTerminal
132
- ) return;
124
+ if (this.jobReleased || !this.ingressClosed || !this.processingTerminal) return;
133
125
  this.jobReleased = true;
134
126
  this.shared.releaseJob();
135
127
  }
@@ -160,9 +152,7 @@ class SharedIngressRecordState {
160
152
  this.tryCloseIngressRecord();
161
153
  }
162
154
 
163
- takeInitialPermit(
164
- domain: ApplicationJobRecordDomain
165
- ): ApplicationJobRecordLease | undefined {
155
+ takeInitialPermit(domain: ApplicationJobRecordDomain): ApplicationJobRecordLease | undefined {
166
156
  const permit = this.initialPermit;
167
157
  if (permit === undefined) return undefined;
168
158
  this.initialPermit = undefined;
@@ -2,8 +2,9 @@
2
2
  * Internal E2E seam for holding one acquired application-job permit until the
3
3
  * handler turn completes. Production hosts do not register this provider.
4
4
  */
5
- export const ZLINK_INTERNAL_APPLICATION_JOB_QUEUE_HANDLER_START_GATE =
6
- Symbol.for('zlink.internal.application-job-queue-handler-start-gate');
5
+ export const ZLINK_INTERNAL_APPLICATION_JOB_QUEUE_HANDLER_START_GATE = Symbol.for(
6
+ 'zlink.internal.application-job-queue-handler-start-gate'
7
+ );
7
8
 
8
9
  export interface ZLinkInternalApplicationJobQueueHandlerStartGate {
9
10
  shouldHoldPermitBeforeHandler(): boolean;
@@ -44,9 +44,9 @@ export class ApplicationJobReceiveFlowController<TNativeState> {
44
44
  private readonly toNativeState: (state: ApplicationJobPressureState) => TNativeState,
45
45
  private readonly failureSink?: (error: unknown) => void
46
46
  ) {
47
- this.unregisterPressureListener = queue?.onPressureStateChange?.(
48
- (state, sequence) => this.apply(state, sequence)
49
- ) ?? (() => undefined);
47
+ this.unregisterPressureListener =
48
+ queue?.onPressureStateChange?.((state, sequence) => this.apply(state, sequence)) ??
49
+ (() => undefined);
50
50
  }
51
51
 
52
52
  register(target: ApplicationJobReceiveFlowTarget<TNativeState>): boolean {
@@ -106,9 +106,9 @@ export class ApplicationJobReceiveFlowController<TNativeState> {
106
106
  private currentTransition(): ApplicationJobPressureTransition | undefined {
107
107
  const snapshot = this.queue?.pressureTransition?.();
108
108
  const fallbackState = snapshot === undefined ? this.queue?.pressureState?.() : undefined;
109
- const current = snapshot ?? (fallbackState === undefined
110
- ? undefined
111
- : { state: fallbackState, sequence: 0n });
109
+ const current =
110
+ snapshot ??
111
+ (fallbackState === undefined ? undefined : { state: fallbackState, sequence: 0n });
112
112
  if (this.latestTransition === undefined) return current;
113
113
  if (current === undefined || this.latestTransition.sequence > current.sequence) {
114
114
  return this.latestTransition;
@@ -117,8 +117,10 @@ export class ApplicationJobReceiveFlowController<TNativeState> {
117
117
  }
118
118
 
119
119
  private rememberLatest(transition: ApplicationJobPressureTransition): void {
120
- if (this.latestTransition === undefined
121
- || transition.sequence > this.latestTransition.sequence) {
120
+ if (
121
+ this.latestTransition === undefined ||
122
+ transition.sequence > this.latestTransition.sequence
123
+ ) {
122
124
  this.latestTransition = transition;
123
125
  }
124
126
  }
@@ -129,18 +131,19 @@ export class ApplicationJobReceiveFlowController<TNativeState> {
129
131
  transition: ApplicationJobPressureTransition,
130
132
  throwOnFailure: boolean
131
133
  ): void {
132
- if (this.targets.get(target) !== targetState
133
- || transition.sequence <= targetState.appliedSequence
134
- || (targetState.pending !== undefined
135
- && transition.sequence <= targetState.pending.sequence)) return;
134
+ if (
135
+ this.targets.get(target) !== targetState ||
136
+ transition.sequence <= targetState.appliedSequence ||
137
+ (targetState.pending !== undefined && transition.sequence <= targetState.pending.sequence)
138
+ )
139
+ return;
136
140
  targetState.pending = transition;
137
141
  if (targetState.applying) return;
138
142
 
139
143
  targetState.applying = true;
140
144
  let firstFailure: unknown;
141
145
  try {
142
- while (this.targets.get(target) === targetState
143
- && targetState.pending !== undefined) {
146
+ while (this.targets.get(target) === targetState && targetState.pending !== undefined) {
144
147
  const next = targetState.pending;
145
148
  targetState.pending = undefined;
146
149
  if (next.sequence <= targetState.appliedSequence) continue;
@@ -7,10 +7,7 @@ import type {
7
7
  ZLinkBackendTopicMessage
8
8
  } from '../runtime-values';
9
9
  import type { CoreHwmBudgetSnapshot } from '@zlink-systems/zlink';
10
- import {
11
- type ZLinkBackendRecvFlags,
12
- type ZLinkBackendSendFlags
13
- } from '../runtime-values';
10
+ import { type ZLinkBackendRecvFlags, type ZLinkBackendSendFlags } from '../runtime-values';
14
11
  export * from '../runtime-values';
15
12
  type MessageLike = ZLinkBackendMessageLike;
16
13
  type Received = ZLinkBackendReceived;
@@ -27,9 +24,7 @@ import type {
27
24
  ServiceSpot,
28
25
  StreamSessionService
29
26
  } from '../../foundation/service-runtime-contracts';
30
- import type {
31
- RoutingId
32
- } from '../../../contracts';
27
+ import type { RoutingId } from '../../../contracts';
33
28
  import type { ZLinkCoreHwmOptions } from '../../../contracts/Configuration';
34
29
  import type { ZLinkSubmitResult } from '../../messaging/submission-result';
35
30
  import type { Message } from '../../../contracts/Common/Message';
@@ -65,23 +60,33 @@ export type ZLinkBackendObjectPlacement =
65
60
  | { readonly kind: 'unavailable' };
66
61
 
67
62
  export interface ZLinkBackendMeshNode {
63
+ setDispatchErrorReporter?(
64
+ reporter: import('../../channels/dispatch-error-reporter').ZLinkDispatchErrorReporter,
65
+ meshName: string
66
+ ): void;
68
67
  setRoutingId(routingId: unknown): void;
69
68
  setBind(endpoint: string): void;
70
69
  setAdvertiseHost(host: string): void;
71
70
  start(): void;
72
- setMailboxRecordDroppedHandler?(handler: (record: {
73
- readonly kind: 'spot_multicast' | 'actor_control' | 'actor_binding';
74
- readonly owner: string;
75
- }) => void): void;
76
- setProtocolErrorHandler?(handler: (record: {
77
- readonly sourceNodeRid: string;
78
- readonly request: boolean;
79
- readonly replied: boolean;
80
- readonly command?: number;
81
- }) => void): void;
82
- setMessageFollowHandler?(handler: (
83
- record: import('../../foundation/service-stateful-wire-codec').ServiceMessageFollowRecord
84
- ) => void): void;
71
+ setMailboxRecordDroppedHandler?(
72
+ handler: (record: {
73
+ readonly kind: 'spot_multicast' | 'actor_control' | 'actor_binding';
74
+ readonly owner: string;
75
+ }) => void
76
+ ): void;
77
+ setProtocolErrorHandler?(
78
+ handler: (record: {
79
+ readonly sourceNodeRid: string;
80
+ readonly request: boolean;
81
+ readonly replied: boolean;
82
+ readonly command?: number;
83
+ }) => void
84
+ ): void;
85
+ setMessageFollowHandler?(
86
+ handler: (
87
+ record: import('../../foundation/service-stateful-wire-codec').ServiceMessageFollowRecord
88
+ ) => void
89
+ ): void;
85
90
  sendMessageFollowNotification?(
86
91
  targetNodeRid: string,
87
92
  record: Omit<
@@ -168,12 +173,14 @@ export interface ZLinkBackendMeshNode {
168
173
  }): Promise<bigint>;
169
174
  removePeerConnection(intentId: bigint): void;
170
175
  disconnectPeer(peerRid: unknown, lifecycleGeneration: bigint): void;
171
- replaceDiscoveredNotRequiredPeers?(peers: readonly {
172
- readonly nodeRoutingId: string;
173
- readonly lifecycleGeneration: bigint;
174
- readonly descriptorRevision: bigint;
175
- readonly endpoint: string;
176
- }[]): void;
176
+ replaceDiscoveredNotRequiredPeers?(
177
+ peers: readonly {
178
+ readonly nodeRoutingId: string;
179
+ readonly lifecycleGeneration: bigint;
180
+ readonly descriptorRevision: bigint;
181
+ readonly endpoint: string;
182
+ }[]
183
+ ): void;
177
184
  onPeerDisconnected?(handler: (endpoint: string) => void): void;
178
185
  expectPeer?(peer: {
179
186
  readonly nodeRoutingId: string;
@@ -235,10 +242,12 @@ export interface ZLinkBackendMeshNode {
235
242
  createSpot(): ServiceSpot;
236
243
  entrySpot(): ServiceSpot;
237
244
  getOrCreateSpot(routingId: unknown): { readonly spot: ServiceSpot; readonly created: boolean };
238
- instanceSpotApplicationTarget?(spotId: string): {
239
- readonly stableType: string;
240
- readonly objectGeneration: bigint;
241
- } | undefined;
245
+ instanceSpotApplicationTarget?(spotId: string):
246
+ | {
247
+ readonly stableType: string;
248
+ readonly objectGeneration: bigint;
249
+ }
250
+ | undefined;
242
251
  waitForInstanceApplicationQuiescence?(spotId: string, signal?: AbortSignal): Promise<void>;
243
252
  restoreUserSpotAuthority?(
244
253
  spotId: string,
@@ -253,10 +262,7 @@ export interface ZLinkBackendMeshNode {
253
262
  generation: bigint,
254
263
  authorityOwnerGeneration: bigint
255
264
  ): ServiceSpot;
256
- createActor(
257
- actorId: string,
258
- parts?: MessageLike | readonly MessageLike[]
259
- ): ZLinkBackendActorRef;
265
+ createActor(actorId: string, parts?: MessageLike | readonly MessageLike[]): ZLinkBackendActorRef;
260
266
  restoreActorAuthority?(
261
267
  actorId: string,
262
268
  stableType: string,
@@ -281,9 +287,7 @@ export interface ZLinkBackendMeshNode {
281
287
  };
282
288
  lookupRemoteActor(targetNodeRid: unknown, actorId: string, timeoutMs?: number): MeshOperationId;
283
289
  destroyActor(actor: ZLinkBackendActorRef, timeoutMs?: number): MeshOperationId;
284
- rememberSpotRoute?(
285
- route: ServiceDirectSpotRouteFence
286
- ): void;
290
+ rememberSpotRoute?(route: ServiceDirectSpotRouteFence): void;
287
291
  forgetSpotRoute?(
288
292
  spot: ServiceDirectSpotRouteFence['spot'],
289
293
  authorityOwnerGeneration: bigint,
@@ -384,7 +388,11 @@ export interface ZLinkBackendMeshNode {
384
388
  domains: number,
385
389
  batch: ReadyBatch,
386
390
  flags?: number
387
- ): { readonly ok: boolean; readonly hasResidue: boolean; readonly records: readonly ReadyRecord[] };
391
+ ): {
392
+ readonly ok: boolean;
393
+ readonly hasResidue: boolean;
394
+ readonly records: readonly ReadyRecord[];
395
+ };
388
396
  createStreamSessionService(stream: unknown): StreamSessionService;
389
397
  }
390
398
 
@@ -507,10 +515,7 @@ export interface ZLinkBackendDealerSocket extends ZLinkBackendConnectableSocket
507
515
  sendTimeoutMs: number;
508
516
  maxMessageSize: number;
509
517
  send(message: Message | readonly Message[]): Promise<void>;
510
- request(
511
- message: Message | readonly Message[],
512
- timeoutMs?: number
513
- ): Promise<readonly Message[]>;
518
+ request(message: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
514
519
  recv(flags?: ZLinkBackendRecvFlags): Received | undefined;
515
520
  }
516
521
 
@@ -542,10 +547,7 @@ export interface ZLinkBackendRouterSocket extends ZLinkBackendConnectableSocket
542
547
  maxMessageSize: number;
543
548
  setRoutingId(routingId: RoutingId): void;
544
549
  recv(flags?: ZLinkBackendRecvFlags): Received | undefined;
545
- send(
546
- routingId: RoutingId,
547
- message: Message | readonly Message[]
548
- ): Promise<void>;
550
+ send(routingId: RoutingId, message: Message | readonly Message[]): Promise<void>;
549
551
  request(
550
552
  routingId: RoutingId,
551
553
  message: Message | readonly Message[],
@@ -600,8 +602,16 @@ export interface ZLinkBackendStreamSocket extends ZLinkBackendSocket {
600
602
  maxMessageSize: number;
601
603
  setTlsServer(cert: string, key: string, requireClientCert?: boolean): void;
602
604
  recvPacket(packet: ZLinkBackendStreamPacket, flags?: ZLinkBackendRecvFlags): boolean;
603
- send(routingId: RoutingId, payload: Message | readonly Message[], flags: ZLinkBackendSendFlags): boolean;
604
- submit(routingId: RoutingId, payload: Message | readonly Message[], timeoutMs?: number): Promise<void>;
605
+ send(
606
+ routingId: RoutingId,
607
+ payload: Message | readonly Message[],
608
+ flags: ZLinkBackendSendFlags
609
+ ): boolean;
610
+ submit(
611
+ routingId: RoutingId,
612
+ payload: Message | readonly Message[],
613
+ timeoutMs?: number
614
+ ): Promise<void>;
605
615
  disconnectPeer(routingId: RoutingId): void;
606
616
  bindActor(
607
617
  sessionRid: RoutingId,
@@ -635,8 +645,16 @@ export interface ZLinkBackendSpotRouteBridge extends ZLinkBackendObject {
635
645
  router: ZLinkBackendRouterSocket,
636
646
  options?: { readonly capabilities?: number }
637
647
  ): void;
638
- send(channelName: string, targetNodeRid: RoutingId, targetSpotId: RoutingId): ZLinkBackendSendOperation;
639
- request(channelName: string, targetNodeRid: RoutingId, targetSpotId: RoutingId): ZLinkBackendRequestOperation;
648
+ send(
649
+ channelName: string,
650
+ targetNodeRid: RoutingId,
651
+ targetSpotId: RoutingId
652
+ ): ZLinkBackendSendOperation;
653
+ request(
654
+ channelName: string,
655
+ targetNodeRid: RoutingId,
656
+ targetSpotId: RoutingId
657
+ ): ZLinkBackendRequestOperation;
640
658
  handleRouterReceived(
641
659
  channelName: string,
642
660
  sourceNodeRid: RoutingId,
@@ -658,7 +676,10 @@ export interface ZLinkBackendSpotNode extends ZLinkBackendObject {
658
676
  disconnectPeerRid(targetNodeRid: RoutingId): void;
659
677
  disconnectPeer(endpoint: string): void;
660
678
  createSpot(): ZLinkBackendSpot;
661
- getOrCreateSpot(spotId: RoutingId): { readonly spot: ZLinkBackendSpot; readonly created: boolean };
679
+ getOrCreateSpot(spotId: RoutingId): {
680
+ readonly spot: ZLinkBackendSpot;
681
+ readonly created: boolean;
682
+ };
662
683
  status(): ZLinkBackendMeshNodeStatus;
663
684
  peers(): readonly ZLinkBackendMeshPeerEntry[];
664
685
  subjects(): readonly unknown[];
@@ -706,7 +727,11 @@ export interface ZLinkBackendSpot extends ZLinkBackendObject {
706
727
  timeoutMs?: number
707
728
  ): Promise<readonly Message[]>;
708
729
  sendToChannel(channelName: string, payload: Message | readonly Message[]): Promise<void>;
709
- publish(topic: string, payload: Message | readonly Message[], flags: ZLinkBackendSendFlags): boolean;
730
+ publish(
731
+ topic: string,
732
+ payload: Message | readonly Message[],
733
+ flags: ZLinkBackendSendFlags
734
+ ): boolean;
710
735
  sendToSpot(
711
736
  targetRid: RoutingId,
712
737
  spotId: RoutingId,
@@ -1,13 +1,7 @@
1
1
  import { SubmitResult } from './runtime-values';
2
2
  import { ZLinkSubmitStatus } from '../messaging/submission-result';
3
- import type {
4
- ZLinkBackendActorSessionNode,
5
- ZLinkBackendMeshNode
6
- } from './contracts';
7
- import {
8
- closeMeshCompletion,
9
- type ZLinkMeshCompletionTable
10
- } from './mesh-completion-table';
3
+ import type { ZLinkBackendActorSessionNode, ZLinkBackendMeshNode } from './contracts';
4
+ import { closeMeshCompletion, type ZLinkMeshCompletionTable } from './mesh-completion-table';
11
5
  import { routingIdsEqual } from '../routing-id';
12
6
 
13
7
  export function meshActorSessionNodeAdapter(
@@ -51,18 +45,14 @@ export function meshActorSessionNodeAdapter(
51
45
  throw new Error('MeshNode completion runtime is not started.');
52
46
  }
53
47
  const completion = await completions.submit(
54
- () => node.closeActorBoundSession(
55
- actor,
56
- expectedBindingGeneration,
57
- timeoutMs
58
- ),
48
+ () => node.closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs),
59
49
  signal
60
50
  );
61
51
  try {
62
52
  if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
63
53
  throw new Error(
64
54
  `Actor '${actor.actorId}' bound-session close failed with result ` +
65
- `'${completion.terminalResult}' and errno '${completion.failureErrno}'.`
55
+ `'${completion.terminalResult}' and errno '${completion.failureErrno}'.`
66
56
  );
67
57
  }
68
58
  } finally {
@@ -31,7 +31,9 @@ export class ZLinkMeshCompletionTable {
31
31
  private readonly pending = new Map<string, PendingCompletion>();
32
32
  private disposed = false;
33
33
 
34
- constructor(private readonly onDiagnostic?: (diagnostic: ZLinkMeshCompletionDiagnostic) => void) {}
34
+ constructor(
35
+ private readonly onDiagnostic?: (diagnostic: ZLinkMeshCompletionDiagnostic) => void
36
+ ) {}
35
37
 
36
38
  /**
37
39
  * Submits and registers without yielding control to the event loop. Mesh
@@ -39,10 +41,7 @@ export class ZLinkMeshCompletionTable {
39
41
  * registration. The table therefore does not need to retain responses that
40
42
  * arrived before their waiter.
41
43
  */
42
- submit(
43
- operation: () => MeshOperationId,
44
- signal?: AbortSignal
45
- ): Promise<ZLinkMeshCompletion> {
44
+ submit(operation: () => MeshOperationId, signal?: AbortSignal): Promise<ZLinkMeshCompletion> {
46
45
  if (this.isDisposed()) {
47
46
  return Promise.reject(new Error('Mesh completion table is disposed.'));
48
47
  }
@@ -74,9 +73,8 @@ export class ZLinkMeshCompletionTable {
74
73
  this.pending.set(key, {
75
74
  resolve,
76
75
  reject,
77
- removeAbort: signal === undefined
78
- ? undefined
79
- : () => signal.removeEventListener('abort', abort)
76
+ removeAbort:
77
+ signal === undefined ? undefined : () => signal.removeEventListener('abort', abort)
80
78
  });
81
79
  });
82
80
  }
@@ -123,7 +121,6 @@ export class ZLinkMeshCompletionTable {
123
121
  get pendingCount(): number {
124
122
  return this.pending.size;
125
123
  }
126
-
127
124
  }
128
125
 
129
126
  function retainCompletion(record: ReceiveRecord): ZLinkMeshCompletion {
@@ -70,8 +70,7 @@ export class ZLinkMeshDispatchPump {
70
70
  constructor(
71
71
  private readonly node: ZLinkBackendMeshNode,
72
72
  private readonly options: ZLinkMeshDispatchPumpOptions
73
- ) {
74
- }
73
+ ) {}
75
74
 
76
75
  start(): void {
77
76
  if (this.applicationWorkerCount === 0) this.startApplicationWorker();
@@ -103,11 +102,9 @@ export class ZLinkMeshDispatchPump {
103
102
  const previous = this.pendingDomains;
104
103
  this.pendingDomains |= domains;
105
104
  const startInfrastructure =
106
- (domains & ReadyDomain.Infrastructure) !== 0
107
- && (previous & ReadyDomain.Infrastructure) === 0;
105
+ (domains & ReadyDomain.Infrastructure) !== 0 && (previous & ReadyDomain.Infrastructure) === 0;
108
106
  const startApplication =
109
- (domains & ReadyDomain.Application) !== 0
110
- && (previous & ReadyDomain.Application) === 0;
107
+ (domains & ReadyDomain.Application) !== 0 && (previous & ReadyDomain.Application) === 0;
111
108
  if (startInfrastructure && startApplication) {
112
109
  const startTurn = this.yieldIfNeeded() ?? Promise.resolve();
113
110
  this.scheduleInfrastructure(startTurn);
@@ -141,11 +138,11 @@ export class ZLinkMeshDispatchPump {
141
138
  this.applicationWorkerCount += 1;
142
139
  let worker: Promise<void>;
143
140
  worker = detachedMeshDispatchScope(() =>
144
- runZLinkExecutionArea('application', () => this.runApplicationWorker()))
145
- .finally(() => {
146
- this.applicationWorkerCount -= 1;
147
- this.activeDrains.delete(worker);
148
- });
141
+ runZLinkExecutionArea('application', () => this.runApplicationWorker())
142
+ ).finally(() => {
143
+ this.applicationWorkerCount -= 1;
144
+ this.activeDrains.delete(worker);
145
+ });
149
146
  this.activeDrains.add(worker);
150
147
  }
151
148
 
@@ -154,7 +151,8 @@ export class ZLinkMeshDispatchPump {
154
151
  // unrelated owners. Each owner may supply up to 64 pre-admitted records.
155
152
  const readyBatch = this.node.createReadyBatch(1);
156
153
  const receiveBatch = this.node.createReceiveBatch(
157
- MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ?? 256
154
+ MESH_DISPATCH_RECEIVE_CAPACITY,
155
+ this.options.partCapacity ?? 256
158
156
  );
159
157
  try {
160
158
  for (;;) {
@@ -178,7 +176,7 @@ export class ZLinkMeshDispatchPump {
178
176
  this.pendingDomains &= ~ReadyDomain.Application;
179
177
  return Promise.resolve();
180
178
  }
181
- return new Promise(resolve => this.idleApplicationWorkers.add(resolve));
179
+ return new Promise((resolve) => this.idleApplicationWorkers.add(resolve));
182
180
  }
183
181
 
184
182
  private reportDispatchError(error: unknown): void {
@@ -202,8 +200,11 @@ export class ZLinkMeshDispatchPump {
202
200
  }
203
201
  this.infrastructureScheduled = true;
204
202
  const drain = (startTurn ?? this.yieldIfNeeded() ?? Promise.resolve())
205
- .then(() => detachedMeshDispatchScope(() =>
206
- runZLinkExecutionArea('infrastructure', () => this.drainInfrastructure())))
203
+ .then(() =>
204
+ detachedMeshDispatchScope(() =>
205
+ runZLinkExecutionArea('infrastructure', () => this.drainInfrastructure())
206
+ )
207
+ )
207
208
  .catch((error) => {
208
209
  if (error instanceof ZLinkMeshDispatchFailure) {
209
210
  this.options.reportError?.(error.dispatchCause, error.context);
@@ -230,7 +231,8 @@ export class ZLinkMeshDispatchPump {
230
231
  Math.min(this.options.readyCapacity ?? 32, MESH_DISPATCH_LIFECYCLE_CLAIM_BUDGET)
231
232
  );
232
233
  const receiveBatch = this.node.createReceiveBatch(
233
- MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ?? 256
234
+ MESH_DISPATCH_RECEIVE_CAPACITY,
235
+ this.options.partCapacity ?? 256
234
236
  );
235
237
  try {
236
238
  while (!this.disposed) {
@@ -287,14 +289,15 @@ export class ZLinkMeshDispatchPump {
287
289
  // Raw ingress already attached one host permit to each record.
288
290
  // A claim that reserves admission here may receive only that permit's record.
289
291
  try {
290
- const capacity = owner.ordinaryIngressPreAdmitted === true
291
- ? MESH_DISPATCH_RECEIVE_CAPACITY : 1;
292
+ const capacity =
293
+ owner.ordinaryIngressPreAdmitted === true ? MESH_DISPATCH_RECEIVE_CAPACITY : 1;
292
294
  for (;;) {
293
- let claimPermit = owner.terminalCompletion === true
294
- || owner.ordinaryIngressPreAdmitted === true
295
- || domain === ReadyDomain.Infrastructure
296
- ? undefined
297
- : await this.acquirePermit();
295
+ let claimPermit =
296
+ owner.terminalCompletion === true ||
297
+ owner.ordinaryIngressPreAdmitted === true ||
298
+ domain === ReadyDomain.Infrastructure
299
+ ? undefined
300
+ : await this.acquirePermit();
298
301
  try {
299
302
  if (this.capacityStop.signal.aborted) return false;
300
303
  receiveBatch.reset(capacity);
@@ -314,7 +317,9 @@ export class ZLinkMeshDispatchPump {
314
317
  if (this.disposed) break;
315
318
  const permit = record.applicationJobPermit ?? claimPermit;
316
319
  if (owner.ordinaryIngressPreAdmitted === true && permit === undefined) {
317
- throw new Error('Pre-admitted raw ingress record lost its Application Job Queue permit.');
320
+ throw new Error(
321
+ 'Pre-admitted raw ingress record lost its Application Job Queue permit.'
322
+ );
318
323
  }
319
324
  this.recordsSinceYield += 1;
320
325
  const dispatch = async () => {
@@ -332,9 +337,10 @@ export class ZLinkMeshDispatchPump {
332
337
  await dispatch();
333
338
  } else {
334
339
  if (
335
- domain === ReadyDomain.Application
336
- && record.applicationJobPermit === undefined
337
- ) permit.markApplicationQueued();
340
+ domain === ReadyDomain.Application &&
341
+ record.applicationJobPermit === undefined
342
+ )
343
+ permit.markApplicationQueued();
338
344
  // The scope now owns this reservation, including failure
339
345
  // and detached handler handoff. Only unused permits remain
340
346
  // owned by the receive attempt's finally block.
@@ -380,8 +386,11 @@ export class ZLinkMeshDispatchPump {
380
386
 
381
387
  private yieldIfNeeded(): Promise<void> | undefined {
382
388
  const nowMs = this.nowMs();
383
- if (this.recordsSinceYield < MESH_DISPATCH_YIELD_RECORDS
384
- && nowMs - this.yieldStartedAtMs < MESH_DISPATCH_YIELD_INTERVAL_MS) return undefined;
389
+ if (
390
+ this.recordsSinceYield < MESH_DISPATCH_YIELD_RECORDS &&
391
+ nowMs - this.yieldStartedAtMs < MESH_DISPATCH_YIELD_INTERVAL_MS
392
+ )
393
+ return undefined;
385
394
  this.recordsSinceYield = 0;
386
395
  return yieldToTimers().then(() => {
387
396
  this.yieldStartedAtMs = this.nowMs();
@@ -425,7 +434,6 @@ function yieldToEventLoop(): Promise<void> {
425
434
  return new Promise((resolve) => setImmediate(resolve));
426
435
  }
427
436
 
428
-
429
437
  function yieldToTimers(): Promise<void> {
430
438
  return new Promise((resolve) => setTimeout(resolve, 0));
431
439
  }