@zlink-systems/framework 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Handlers/JsonContract.js +23 -11
  13. package/dist/contracts/Spots/SpotKind.js +16 -8
  14. package/dist/location-store-integration.js +16 -16
  15. package/dist/nest-integration.js +17 -11
  16. package/dist/runtime/abort.js +9 -5
  17. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  18. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  19. package/dist/runtime/actors/actor-client.js +83 -63
  20. package/dist/runtime/actors/actor-context.js +24 -18
  21. package/dist/runtime/actors/actor-creation.js +4 -3
  22. package/dist/runtime/actors/actor-handoff.js +89 -92
  23. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  24. package/dist/runtime/actors/actor-mailbox.js +1 -1
  25. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  26. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  27. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  28. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  29. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  30. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  31. package/dist/runtime/actors/bound-session-wire.js +14 -9
  32. package/dist/runtime/actors/deferred-join-accepted-journal.js +158 -124
  33. package/dist/runtime/actors/index.js +2 -5
  34. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  35. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  36. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  37. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  38. package/dist/runtime/admission.js +2 -6
  39. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  40. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  41. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  42. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  43. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  44. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  45. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  46. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  47. package/dist/runtime/backend/node/node-raw-mesh-backend.js +116 -113
  48. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  49. package/dist/runtime/backend/runtime-message.js +3 -3
  50. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  51. package/dist/runtime/backend/runtime-values.js +4 -5
  52. package/dist/runtime/channels/channel-clients.js +27 -24
  53. package/dist/runtime/channels/channel-dispatch-pipeline.js +10 -18
  54. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  55. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  56. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  57. package/dist/runtime/channels/channel-envelope.js +83 -47
  58. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  59. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  60. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  61. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  62. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  63. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  64. package/dist/runtime/channels/channel-transports.js +43 -33
  65. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  66. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  67. package/dist/runtime/channels/dispatch-error-reporter.js +9 -7
  68. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  69. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  70. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  71. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  72. package/dist/runtime/channels/source-spot-router.js +6 -2
  73. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  74. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  75. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  76. package/dist/runtime/diagnostics/index.js +38 -10
  77. package/dist/runtime/diagnostics/message-flow.js +47 -39
  78. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  79. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  80. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  81. package/dist/runtime/execution/index.js +7 -6
  82. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  83. package/dist/runtime/execution/state-lane.js +2 -2
  84. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -23
  85. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  86. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  87. package/dist/runtime/foundation/raw-service-mesh-runtime.js +136 -136
  88. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  89. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  90. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  91. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  92. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  93. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  94. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  95. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  96. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  97. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  98. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  99. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  100. package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
  101. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  102. package/dist/runtime/foundation/service-topology-registry.js +96 -95
  103. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  104. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  105. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  106. package/dist/runtime/framework-errors-internal.js +7 -10
  107. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  108. package/dist/runtime/handlers/index.js +3 -1
  109. package/dist/runtime/host/actor-packet-relay.js +74 -70
  110. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  111. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  112. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  113. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  114. package/dist/runtime/host/application-job-queue.js +18 -22
  115. package/dist/runtime/host/bound-session-relay.js +3 -1
  116. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  117. package/dist/runtime/host/host-capacity-status.js +8 -4
  118. package/dist/runtime/host/index.js +244 -227
  119. package/dist/runtime/host/instance-activation-authority.js +93 -96
  120. package/dist/runtime/host/location-runtime-owner.js +16 -14
  121. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  122. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  123. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  124. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  125. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  126. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  127. package/dist/runtime/host/runtime-shutdown.js +1 -2
  128. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  129. package/dist/runtime/host/spot-address-transport.js +69 -71
  130. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  131. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  132. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  133. package/dist/runtime/locations/actor-location-claims.js +26 -20
  134. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  135. package/dist/runtime/locations/authority-key-codec.js +7 -7
  136. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  137. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  138. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  139. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  140. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  141. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  142. package/dist/runtime/locations/key-codec.js +1 -1
  143. package/dist/runtime/locations/lease-tracker.js +23 -21
  144. package/dist/runtime/locations/lifecycle.js +4 -5
  145. package/dist/runtime/locations/location-store-repository.js +368 -324
  146. package/dist/runtime/locations/opaque-record-key.js +2 -2
  147. package/dist/runtime/locations/resolvers.js +73 -82
  148. package/dist/runtime/locations/runtime.js +68 -63
  149. package/dist/runtime/locations/spot-location-claims.js +39 -35
  150. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  151. package/dist/runtime/messaging/packet-name.js +7 -6
  152. package/dist/runtime/messaging/payload-codec.js +21 -18
  153. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  154. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  155. package/dist/runtime/routing-id.js +3 -5
  156. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  157. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  158. package/dist/runtime/spots/index.js +208 -219
  159. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  160. package/dist/runtime/spots/spot-activation-state.js +17 -15
  161. package/dist/runtime/spots/spot-activation.js +33 -16
  162. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  163. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  164. package/dist/runtime/spots/spot-actor-packet-dispatch.js +23 -20
  165. package/dist/runtime/spots/spot-actor-packet-drain.js +12 -10
  166. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  167. package/dist/runtime/spots/spot-closing.js +3 -7
  168. package/dist/runtime/spots/spot-context.js +2 -2
  169. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  170. package/dist/runtime/spots/spot-handle.js +6 -3
  171. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  172. package/dist/runtime/spots/spot-manager-public.js +5 -6
  173. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  174. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  175. package/dist/runtime/spots/spot-node-runtime-manager.js +74 -85
  176. package/dist/runtime/spots/spot-outbound.js +10 -14
  177. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  178. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  179. package/dist/runtime/spots/spot-route-packet-dispatch.js +16 -14
  180. package/dist/runtime/spots/spot-route-replies.js +4 -6
  181. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  182. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +1 -2
  183. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  184. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  185. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  186. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  187. package/dist/runtime/spots/spot-subscription-dispatch.js +5 -5
  188. package/dist/runtime/spots/spot-timer.js +25 -29
  189. package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
  190. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  191. package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
  192. package/dist/runtime/streams/bound-session-service.js +8 -9
  193. package/dist/runtime/streams/index.js +20 -19
  194. package/dist/runtime/streams/managed-stream.js +32 -30
  195. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  196. package/dist/runtime/streams/protocol.js +29 -18
  197. package/dist/runtime/streams/session-actor-coordinator.js +34 -37
  198. package/dist/runtime/streams/session-context.js +30 -28
  199. package/dist/runtime/streams/session-provider.js +2 -2
  200. package/dist/runtime/streams/session-serial-executor.js +1 -2
  201. package/dist/runtime/streams/stream-frame-factory.js +11 -5
  202. package/dist/runtime/streams/stream-session-runtime.js +70 -66
  203. package/dist/runtime/workers/index.js +15 -4
  204. package/package.json +2 -2
  205. package/src/contracts/Channels/RouteCalls.ts +6 -1
  206. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  207. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  208. package/src/contracts/Configuration/Builders.ts +14 -14
  209. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  210. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  211. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  212. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  213. package/src/contracts/Configuration/Registration.ts +46 -17
  214. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  215. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  216. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  217. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  218. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  219. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  220. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  221. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  222. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  223. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  224. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -6
  225. package/src/contracts/Errors/index.ts +1 -4
  226. package/src/contracts/Handlers/Attributes.ts +15 -9
  227. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  228. package/src/contracts/Handlers/JsonContract.ts +53 -19
  229. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  230. package/src/contracts/Locations/Authority.ts +4 -11
  231. package/src/contracts/Locations/Keys.ts +6 -1
  232. package/src/contracts/Locations/Options.ts +3 -2
  233. package/src/contracts/Locations/RelocationStore.ts +1 -4
  234. package/src/contracts/Locations/Resolvers.ts +5 -5
  235. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  236. package/src/contracts/Locations/Stores.ts +1 -2
  237. package/src/contracts/Locations/index.ts +2 -8
  238. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  239. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  240. package/src/contracts/Spots/Contracts.ts +2 -8
  241. package/src/contracts/Spots/SpotKind.ts +16 -8
  242. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  243. package/src/contracts/Streams/IZLinkSession.ts +0 -1
  244. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  245. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  246. package/src/internal.ts +5 -4
  247. package/src/location-store-integration.ts +24 -16
  248. package/src/nest-integration.ts +40 -25
  249. package/src/runtime/abort.ts +10 -4
  250. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  251. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  252. package/src/runtime/actors/actor-client.ts +162 -133
  253. package/src/runtime/actors/actor-context.ts +138 -130
  254. package/src/runtime/actors/actor-creation.ts +47 -44
  255. package/src/runtime/actors/actor-execution-context.ts +6 -4
  256. package/src/runtime/actors/actor-handoff.ts +269 -293
  257. package/src/runtime/actors/actor-join-deferred-scope.ts +5 -4
  258. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  259. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  260. package/src/runtime/actors/actor-mailbox.ts +16 -19
  261. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  262. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  263. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  264. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  265. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  266. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  267. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  268. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  269. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  270. package/src/runtime/actors/bound-session-wire.ts +37 -17
  271. package/src/runtime/actors/deferred-join-accepted-journal.ts +351 -320
  272. package/src/runtime/actors/index.ts +43 -86
  273. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  274. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  275. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  276. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  277. package/src/runtime/admission.ts +9 -9
  278. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  279. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  280. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  281. package/src/runtime/backend/contracts/index.ts +73 -52
  282. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  283. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  284. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  285. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  286. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  287. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  288. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  289. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  290. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  291. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  292. package/src/runtime/backend/node/node-raw-mesh-backend.ts +335 -383
  293. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  294. package/src/runtime/backend/runtime-message.ts +5 -3
  295. package/src/runtime/backend/runtime-values.ts +10 -7
  296. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  297. package/src/runtime/channels/channel-clients.ts +93 -73
  298. package/src/runtime/channels/channel-dispatch-pipeline.ts +40 -42
  299. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  300. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  301. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  302. package/src/runtime/channels/channel-envelope.ts +256 -150
  303. package/src/runtime/channels/channel-multipart.ts +13 -5
  304. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  305. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  306. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  307. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  308. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  309. package/src/runtime/channels/channel-socket-options.ts +3 -10
  310. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  311. package/src/runtime/channels/channel-transports.ts +215 -197
  312. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  313. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  314. package/src/runtime/channels/dispatch-error-reporter.ts +11 -8
  315. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  316. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  317. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  318. package/src/runtime/channels/index.ts +1 -4
  319. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  320. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  321. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  322. package/src/runtime/channels/source-spot-router.ts +26 -22
  323. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  324. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  325. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  326. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  327. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  328. package/src/runtime/codecs/index.ts +3 -2
  329. package/src/runtime/diagnostics/flow-context.ts +12 -3
  330. package/src/runtime/diagnostics/index.ts +96 -61
  331. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  332. package/src/runtime/diagnostics/message-flow.ts +95 -76
  333. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  334. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  335. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  336. package/src/runtime/execution/index.ts +18 -26
  337. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  338. package/src/runtime/execution/state-lane.ts +2 -2
  339. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -51
  340. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  341. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  342. package/src/runtime/foundation/operation-identity.ts +1 -2
  343. package/src/runtime/foundation/operation-registry.ts +8 -2
  344. package/src/runtime/foundation/raw-service-mesh-runtime.ts +312 -385
  345. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  346. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  347. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  348. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  349. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  350. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  351. package/src/runtime/foundation/service-mailbox.ts +14 -14
  352. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  353. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  354. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  355. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  356. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  357. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  358. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  359. package/src/runtime/foundation/service-session-binding-ingress-port.ts +1 -4
  360. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  361. package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
  362. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  363. package/src/runtime/foundation/service-topology-registry.ts +157 -159
  364. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  365. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  366. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  367. package/src/runtime/framework-errors-internal.ts +31 -30
  368. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  369. package/src/runtime/handlers/index.ts +18 -8
  370. package/src/runtime/host/actor-packet-relay.ts +290 -261
  371. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  372. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  373. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  374. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  375. package/src/runtime/host/application-job-queue.ts +32 -48
  376. package/src/runtime/host/bound-session-relay.ts +7 -9
  377. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  378. package/src/runtime/host/host-capacity-status.ts +10 -9
  379. package/src/runtime/host/index.ts +861 -789
  380. package/src/runtime/host/instance-activation-authority.ts +125 -143
  381. package/src/runtime/host/location-runtime-owner.ts +38 -26
  382. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  383. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  384. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  385. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  386. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  387. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  388. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  389. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  390. package/src/runtime/host/runtime-shutdown.ts +4 -3
  391. package/src/runtime/host/service-relocation-control.ts +14 -5
  392. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  393. package/src/runtime/host/spot-address-transport.ts +284 -237
  394. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  395. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  396. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  397. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  398. package/src/runtime/locations/actor-location-claims.ts +61 -49
  399. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  400. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  401. package/src/runtime/locations/authority-key-codec.ts +13 -10
  402. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  403. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  404. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  405. package/src/runtime/locations/canonical-codec.ts +3 -1
  406. package/src/runtime/locations/creation-operation-id.ts +4 -3
  407. package/src/runtime/locations/domain-store-contract.ts +13 -7
  408. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  409. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  410. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  411. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  412. package/src/runtime/locations/key-codec.ts +3 -4
  413. package/src/runtime/locations/lease-tracker.ts +36 -27
  414. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  415. package/src/runtime/locations/lifecycle.ts +33 -28
  416. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  417. package/src/runtime/locations/opaque-record-key.ts +4 -9
  418. package/src/runtime/locations/resolvers.ts +201 -178
  419. package/src/runtime/locations/runtime.ts +251 -159
  420. package/src/runtime/locations/spot-location-claims.ts +110 -112
  421. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  422. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  423. package/src/runtime/messaging/packet-name.ts +8 -6
  424. package/src/runtime/messaging/payload-codec.ts +70 -50
  425. package/src/runtime/messaging/submission-result.ts +6 -9
  426. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  427. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  428. package/src/runtime/routing-id.ts +10 -7
  429. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  430. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  431. package/src/runtime/spots/index.ts +593 -563
  432. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  433. package/src/runtime/spots/spot-activation-state.ts +43 -51
  434. package/src/runtime/spots/spot-activation.ts +179 -116
  435. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  436. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  437. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  438. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  439. package/src/runtime/spots/spot-actor-packet-dispatch.ts +184 -153
  440. package/src/runtime/spots/spot-actor-packet-drain.ts +54 -42
  441. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  442. package/src/runtime/spots/spot-closing.ts +11 -12
  443. package/src/runtime/spots/spot-context.ts +46 -26
  444. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  445. package/src/runtime/spots/spot-handle.ts +17 -15
  446. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  447. package/src/runtime/spots/spot-location-claim.ts +5 -4
  448. package/src/runtime/spots/spot-manager-public.ts +62 -82
  449. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  450. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  451. package/src/runtime/spots/spot-node-runtime-manager.ts +230 -221
  452. package/src/runtime/spots/spot-outbound.ts +47 -59
  453. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  454. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  455. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  456. package/src/runtime/spots/spot-route-packet-dispatch.ts +128 -95
  457. package/src/runtime/spots/spot-route-replies.ts +23 -24
  458. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  459. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  460. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +11 -17
  461. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  462. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  463. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  464. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  465. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  466. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  467. package/src/runtime/spots/spot-subscription-dispatch.ts +56 -46
  468. package/src/runtime/spots/spot-timer.ts +98 -91
  469. package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
  470. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
  471. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  472. package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
  473. package/src/runtime/streams/bound-session-response-target.ts +29 -8
  474. package/src/runtime/streams/bound-session-service.ts +39 -39
  475. package/src/runtime/streams/index.ts +176 -100
  476. package/src/runtime/streams/managed-stream.ts +98 -87
  477. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  478. package/src/runtime/streams/protocol.ts +73 -43
  479. package/src/runtime/streams/session-actor-coordinator.ts +97 -89
  480. package/src/runtime/streams/session-calls.ts +2 -8
  481. package/src/runtime/streams/session-context.ts +66 -48
  482. package/src/runtime/streams/session-provider.ts +5 -7
  483. package/src/runtime/streams/session-serial-executor.ts +7 -6
  484. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  485. package/src/runtime/streams/stream-frame-factory.ts +55 -38
  486. package/src/runtime/streams/stream-session-runtime.ts +268 -210
  487. package/src/runtime/workers/index.ts +68 -29
@@ -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';
@@ -69,19 +64,25 @@ export interface ZLinkBackendMeshNode {
69
64
  setBind(endpoint: string): void;
70
65
  setAdvertiseHost(host: string): void;
71
66
  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;
67
+ setMailboxRecordDroppedHandler?(
68
+ handler: (record: {
69
+ readonly kind: 'spot_multicast' | 'actor_control' | 'actor_binding';
70
+ readonly owner: string;
71
+ }) => void
72
+ ): void;
73
+ setProtocolErrorHandler?(
74
+ handler: (record: {
75
+ readonly sourceNodeRid: string;
76
+ readonly request: boolean;
77
+ readonly replied: boolean;
78
+ readonly command?: number;
79
+ }) => void
80
+ ): void;
81
+ setMessageFollowHandler?(
82
+ handler: (
83
+ record: import('../../foundation/service-stateful-wire-codec').ServiceMessageFollowRecord
84
+ ) => void
85
+ ): void;
85
86
  sendMessageFollowNotification?(
86
87
  targetNodeRid: string,
87
88
  record: Omit<
@@ -168,12 +169,14 @@ export interface ZLinkBackendMeshNode {
168
169
  }): Promise<bigint>;
169
170
  removePeerConnection(intentId: bigint): void;
170
171
  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;
172
+ replaceDiscoveredNotRequiredPeers?(
173
+ peers: readonly {
174
+ readonly nodeRoutingId: string;
175
+ readonly lifecycleGeneration: bigint;
176
+ readonly descriptorRevision: bigint;
177
+ readonly endpoint: string;
178
+ }[]
179
+ ): void;
177
180
  onPeerDisconnected?(handler: (endpoint: string) => void): void;
178
181
  expectPeer?(peer: {
179
182
  readonly nodeRoutingId: string;
@@ -235,10 +238,12 @@ export interface ZLinkBackendMeshNode {
235
238
  createSpot(): ServiceSpot;
236
239
  entrySpot(): ServiceSpot;
237
240
  getOrCreateSpot(routingId: unknown): { readonly spot: ServiceSpot; readonly created: boolean };
238
- instanceSpotApplicationTarget?(spotId: string): {
239
- readonly stableType: string;
240
- readonly objectGeneration: bigint;
241
- } | undefined;
241
+ instanceSpotApplicationTarget?(spotId: string):
242
+ | {
243
+ readonly stableType: string;
244
+ readonly objectGeneration: bigint;
245
+ }
246
+ | undefined;
242
247
  waitForInstanceApplicationQuiescence?(spotId: string, signal?: AbortSignal): Promise<void>;
243
248
  restoreUserSpotAuthority?(
244
249
  spotId: string,
@@ -253,10 +258,7 @@ export interface ZLinkBackendMeshNode {
253
258
  generation: bigint,
254
259
  authorityOwnerGeneration: bigint
255
260
  ): ServiceSpot;
256
- createActor(
257
- actorId: string,
258
- parts?: MessageLike | readonly MessageLike[]
259
- ): ZLinkBackendActorRef;
261
+ createActor(actorId: string, parts?: MessageLike | readonly MessageLike[]): ZLinkBackendActorRef;
260
262
  restoreActorAuthority?(
261
263
  actorId: string,
262
264
  stableType: string,
@@ -281,9 +283,7 @@ export interface ZLinkBackendMeshNode {
281
283
  };
282
284
  lookupRemoteActor(targetNodeRid: unknown, actorId: string, timeoutMs?: number): MeshOperationId;
283
285
  destroyActor(actor: ZLinkBackendActorRef, timeoutMs?: number): MeshOperationId;
284
- rememberSpotRoute?(
285
- route: ServiceDirectSpotRouteFence
286
- ): void;
286
+ rememberSpotRoute?(route: ServiceDirectSpotRouteFence): void;
287
287
  forgetSpotRoute?(
288
288
  spot: ServiceDirectSpotRouteFence['spot'],
289
289
  authorityOwnerGeneration: bigint,
@@ -384,7 +384,11 @@ export interface ZLinkBackendMeshNode {
384
384
  domains: number,
385
385
  batch: ReadyBatch,
386
386
  flags?: number
387
- ): { readonly ok: boolean; readonly hasResidue: boolean; readonly records: readonly ReadyRecord[] };
387
+ ): {
388
+ readonly ok: boolean;
389
+ readonly hasResidue: boolean;
390
+ readonly records: readonly ReadyRecord[];
391
+ };
388
392
  createStreamSessionService(stream: unknown): StreamSessionService;
389
393
  }
390
394
 
@@ -507,10 +511,7 @@ export interface ZLinkBackendDealerSocket extends ZLinkBackendConnectableSocket
507
511
  sendTimeoutMs: number;
508
512
  maxMessageSize: number;
509
513
  send(message: Message | readonly Message[]): Promise<void>;
510
- request(
511
- message: Message | readonly Message[],
512
- timeoutMs?: number
513
- ): Promise<readonly Message[]>;
514
+ request(message: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
514
515
  recv(flags?: ZLinkBackendRecvFlags): Received | undefined;
515
516
  }
516
517
 
@@ -542,10 +543,7 @@ export interface ZLinkBackendRouterSocket extends ZLinkBackendConnectableSocket
542
543
  maxMessageSize: number;
543
544
  setRoutingId(routingId: RoutingId): void;
544
545
  recv(flags?: ZLinkBackendRecvFlags): Received | undefined;
545
- send(
546
- routingId: RoutingId,
547
- message: Message | readonly Message[]
548
- ): Promise<void>;
546
+ send(routingId: RoutingId, message: Message | readonly Message[]): Promise<void>;
549
547
  request(
550
548
  routingId: RoutingId,
551
549
  message: Message | readonly Message[],
@@ -600,8 +598,16 @@ export interface ZLinkBackendStreamSocket extends ZLinkBackendSocket {
600
598
  maxMessageSize: number;
601
599
  setTlsServer(cert: string, key: string, requireClientCert?: boolean): void;
602
600
  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>;
601
+ send(
602
+ routingId: RoutingId,
603
+ payload: Message | readonly Message[],
604
+ flags: ZLinkBackendSendFlags
605
+ ): boolean;
606
+ submit(
607
+ routingId: RoutingId,
608
+ payload: Message | readonly Message[],
609
+ timeoutMs?: number
610
+ ): Promise<void>;
605
611
  disconnectPeer(routingId: RoutingId): void;
606
612
  bindActor(
607
613
  sessionRid: RoutingId,
@@ -635,8 +641,16 @@ export interface ZLinkBackendSpotRouteBridge extends ZLinkBackendObject {
635
641
  router: ZLinkBackendRouterSocket,
636
642
  options?: { readonly capabilities?: number }
637
643
  ): void;
638
- send(channelName: string, targetNodeRid: RoutingId, targetSpotId: RoutingId): ZLinkBackendSendOperation;
639
- request(channelName: string, targetNodeRid: RoutingId, targetSpotId: RoutingId): ZLinkBackendRequestOperation;
644
+ send(
645
+ channelName: string,
646
+ targetNodeRid: RoutingId,
647
+ targetSpotId: RoutingId
648
+ ): ZLinkBackendSendOperation;
649
+ request(
650
+ channelName: string,
651
+ targetNodeRid: RoutingId,
652
+ targetSpotId: RoutingId
653
+ ): ZLinkBackendRequestOperation;
640
654
  handleRouterReceived(
641
655
  channelName: string,
642
656
  sourceNodeRid: RoutingId,
@@ -658,7 +672,10 @@ export interface ZLinkBackendSpotNode extends ZLinkBackendObject {
658
672
  disconnectPeerRid(targetNodeRid: RoutingId): void;
659
673
  disconnectPeer(endpoint: string): void;
660
674
  createSpot(): ZLinkBackendSpot;
661
- getOrCreateSpot(spotId: RoutingId): { readonly spot: ZLinkBackendSpot; readonly created: boolean };
675
+ getOrCreateSpot(spotId: RoutingId): {
676
+ readonly spot: ZLinkBackendSpot;
677
+ readonly created: boolean;
678
+ };
662
679
  status(): ZLinkBackendMeshNodeStatus;
663
680
  peers(): readonly ZLinkBackendMeshPeerEntry[];
664
681
  subjects(): readonly unknown[];
@@ -706,7 +723,11 @@ export interface ZLinkBackendSpot extends ZLinkBackendObject {
706
723
  timeoutMs?: number
707
724
  ): Promise<readonly Message[]>;
708
725
  sendToChannel(channelName: string, payload: Message | readonly Message[]): Promise<void>;
709
- publish(topic: string, payload: Message | readonly Message[], flags: ZLinkBackendSendFlags): boolean;
726
+ publish(
727
+ topic: string,
728
+ payload: Message | readonly Message[],
729
+ flags: ZLinkBackendSendFlags
730
+ ): boolean;
710
731
  sendToSpot(
711
732
  targetRid: RoutingId,
712
733
  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
  }