@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
@@ -2,7 +2,11 @@ import type { Message } from '../../contracts/Common/Message';
2
2
  import type { ZLinkBackendSpotRouteBridge } from '../backend/contracts';
3
3
  import { ZLinkConfigurationException } from '../configuration';
4
4
  import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
5
- import { closeMessages, decodeChannelReply, type ZLinkChannelEnvelopeCodecRegistry } from './channel-envelope';
5
+ import {
6
+ closeMessages,
7
+ decodeChannelReply,
8
+ type ZLinkChannelEnvelopeCodecRegistry
9
+ } from './channel-envelope';
6
10
  import { appendParts } from './channel-multipart';
7
11
  import { awaitWithAbort } from '../abort';
8
12
 
@@ -16,13 +20,20 @@ export class ZLinkSpotRouteBridgeTransport {
16
20
  return this.bridges.has(routerChannelId);
17
21
  }
18
22
 
19
- async send(target: ZLinkSpotRouteTarget, parts: readonly Message[], signal?: AbortSignal): Promise<void> {
23
+ async send(
24
+ target: ZLinkSpotRouteTarget,
25
+ parts: readonly Message[],
26
+ signal?: AbortSignal
27
+ ): Promise<void> {
20
28
  const bridge = this.requireBridge(target.routerChannelId);
21
29
  try {
22
- await awaitWithAbort(appendParts(
23
- bridge.send(target.routerChannelId, target.targetNodeRid, target.spotId),
24
- parts
25
- ).submit(), signal);
30
+ await awaitWithAbort(
31
+ appendParts(
32
+ bridge.send(target.routerChannelId, target.targetNodeRid, target.spotId),
33
+ parts
34
+ ).submit(),
35
+ signal
36
+ );
26
37
  } finally {
27
38
  closeMessages(parts);
28
39
  }
@@ -39,7 +50,9 @@ export class ZLinkSpotRouteBridgeTransport {
39
50
  const operation = appendParts(
40
51
  bridge.request(target.routerChannelId, target.targetNodeRid, target.spotId),
41
52
  parts
42
- ).timeout(timeoutMs ?? 0).submit();
53
+ )
54
+ .timeout(timeoutMs ?? 0)
55
+ .submit();
43
56
  const replyParts = await awaitWithAbort(operation, signal, () => {
44
57
  void operation.then(closeMessages, () => undefined);
45
58
  });
@@ -58,7 +71,8 @@ export class ZLinkSpotRouteBridgeTransport {
58
71
  signal?: AbortSignal
59
72
  ): Promise<readonly Message[]> {
60
73
  const bridge = this.requireBridge(target.routerChannelId);
61
- const operation = bridge.request(target.routerChannelId, target.targetNodeRid, target.spotId)
74
+ const operation = bridge
75
+ .request(target.routerChannelId, target.targetNodeRid, target.spotId)
62
76
  .message(request)
63
77
  .timeout(timeoutMs ?? this.defaultRequestTimeoutMs ?? 0)
64
78
  .submit();
@@ -69,7 +83,10 @@ export class ZLinkSpotRouteBridgeTransport {
69
83
 
70
84
  private requireBridge(routerChannelId: string): ZLinkBackendSpotRouteBridge {
71
85
  const bridge = this.bridges.get(routerChannelId);
72
- if (bridge === undefined) throw new ZLinkConfigurationException(`Route channel '${routerChannelId}' has no SPOT route bridge.`);
86
+ if (bridge === undefined)
87
+ throw new ZLinkConfigurationException(
88
+ `Route channel '${routerChannelId}' has no SPOT route bridge.`
89
+ );
73
90
  return bridge;
74
91
  }
75
92
  }
@@ -1,7 +1,11 @@
1
1
  import type { Message } from '../../contracts/Common/Message';
2
2
  import type { RoutingId } from '../../contracts';
3
3
  import type { ZLinkFrameworkRegistration } from '../configuration';
4
- import type { ZLinkBackendSpot, ZLinkBackendSpotNode, ZLinkBackendSpotRouteBridge } from '../backend/contracts';
4
+ import type {
5
+ ZLinkBackendSpot,
6
+ ZLinkBackendSpotNode,
7
+ ZLinkBackendSpotRouteBridge
8
+ } from '../backend/contracts';
5
9
  import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
6
10
  import {
7
11
  encodeChannelEnvelopeParts,
@@ -103,9 +107,8 @@ export class ZLinkSpotRouteDispatchStrategy {
103
107
  ): Promise<void> {
104
108
  // Call-scoped flow (spec 27 §4): the envelope flow pair lives only for
105
109
  // the duration of this outbound call, never in the caller's context.
106
- return runWithOutboundFlow(
107
- this.options.flowCreationEnabled?.() ?? true,
108
- () => this.routeSendToSpotScoped(spotRouteTarget, packetName, message, signal, metadata, timeoutMs)
110
+ return runWithOutboundFlow(this.options.flowCreationEnabled?.() ?? true, () =>
111
+ this.routeSendToSpotScoped(spotRouteTarget, packetName, message, signal, metadata, timeoutMs)
109
112
  );
110
113
  }
111
114
 
@@ -143,8 +146,10 @@ export class ZLinkSpotRouteDispatchStrategy {
143
146
  this.options.flowCreationEnabled?.() ?? true,
144
147
  metadata
145
148
  ) as readonly Message[];
146
- if (this.targets.hasNamedSpotNode(spotRouteTarget.routerChannelId)
147
- && await this.spotNodeTransport.send(spotRouteTarget, parts, signal)) {
149
+ if (
150
+ this.targets.hasNamedSpotNode(spotRouteTarget.routerChannelId) &&
151
+ (await this.spotNodeTransport.send(spotRouteTarget, parts, signal))
152
+ ) {
148
153
  return;
149
154
  }
150
155
  if (this.bridgeTransport.has(spotRouteTarget.routerChannelId)) {
@@ -169,9 +174,15 @@ export class ZLinkSpotRouteDispatchStrategy {
169
174
  signal?: AbortSignal,
170
175
  metadata?: ReadonlyMap<string, string>
171
176
  ): Promise<TReply> {
172
- return runWithOutboundFlow(
173
- this.options.flowCreationEnabled?.() ?? true,
174
- () => this.routeRequestToSpotScoped<TReply>(spotRouteTarget, packetName, request, timeoutMs, signal, metadata)
177
+ return runWithOutboundFlow(this.options.flowCreationEnabled?.() ?? true, () =>
178
+ this.routeRequestToSpotScoped<TReply>(
179
+ spotRouteTarget,
180
+ packetName,
181
+ request,
182
+ timeoutMs,
183
+ signal,
184
+ metadata
185
+ )
175
186
  );
176
187
  }
177
188
 
@@ -219,7 +230,13 @@ export class ZLinkSpotRouteDispatchStrategy {
219
230
  if (namedSpotNodeRequest !== undefined) return namedSpotNodeRequest;
220
231
  }
221
232
  if (this.bridgeTransport.has(spotRouteTarget.routerChannelId)) {
222
- return this.bridgeTransport.request<TReply>(spotRouteTarget, parts, codecs, timeoutMs, signal);
233
+ return this.bridgeTransport.request<TReply>(
234
+ spotRouteTarget,
235
+ parts,
236
+ codecs,
237
+ timeoutMs,
238
+ signal
239
+ );
223
240
  }
224
241
  if (this.targets.hasBoundRouteRouter(spotRouteTarget.routerChannelId)) {
225
242
  return this.routerSocketTransport.request<TReply>(
@@ -296,7 +313,13 @@ export class ZLinkSpotRouteDispatchStrategy {
296
313
  timeoutMs: number | undefined,
297
314
  signal?: AbortSignal
298
315
  ): Promise<readonly Message[]> {
299
- return this.sourceSpotRouter.requestRaw(sourceSpot, spotRouteTarget, request, timeoutMs, signal);
316
+ return this.sourceSpotRouter.requestRaw(
317
+ sourceSpot,
318
+ spotRouteTarget,
319
+ request,
320
+ timeoutMs,
321
+ signal
322
+ );
300
323
  }
301
324
 
302
325
  async routeRequestRawToSpot(
@@ -318,12 +341,16 @@ export class ZLinkSpotRouteDispatchStrategy {
318
341
  if (this.bridgeTransport.has(spotRouteTarget.routerChannelId)) {
319
342
  return this.bridgeTransport.requestRaw(spotRouteTarget, request, timeoutMs, signal);
320
343
  }
321
- const spotNodeRequest = this.spotNodeTransport.requestRaw(spotRouteTarget, request, timeoutMs, signal);
344
+ const spotNodeRequest = this.spotNodeTransport.requestRaw(
345
+ spotRouteTarget,
346
+ request,
347
+ timeoutMs,
348
+ signal
349
+ );
322
350
  if (spotNodeRequest !== undefined) {
323
351
  return spotNodeRequest;
324
352
  }
325
353
 
326
354
  return this.routerSocketTransport.requestRaw(spotRouteTarget, request, timeoutMs, signal);
327
355
  }
328
-
329
356
  }
@@ -17,8 +17,9 @@ export class ZLinkSpotRouteTargetResolver {
17
17
  if (named?.router !== undefined) {
18
18
  return this.spotNodes?.get(routerChannelId);
19
19
  }
20
- const channelOwners = [...this.registration.spotNodes.entries()]
21
- .filter(([, node]) => Object.prototype.hasOwnProperty.call(node.meshChannels ?? {}, routerChannelId));
20
+ const channelOwners = [...this.registration.spotNodes.entries()].filter(([, node]) =>
21
+ Object.prototype.hasOwnProperty.call(node.meshChannels ?? {}, routerChannelId)
22
+ );
22
23
  if (channelOwners.length === 1) {
23
24
  return this.spotNodes?.get(channelOwners[0][0]);
24
25
  }
@@ -40,8 +41,10 @@ export class ZLinkSpotRouteTargetResolver {
40
41
  }
41
42
 
42
43
  localRouteNode(target: ZLinkSpotRouteTarget): ZLinkBackendSpotNode | undefined {
43
- const routeNode = this.routeNode(target.routerChannelId) ?? this.spotNodes?.get(target.routerChannelId);
44
- return routeNode !== undefined && routingIdsMatchSpotRoute(routeNode.routingId, target.targetNodeRid)
44
+ const routeNode =
45
+ this.routeNode(target.routerChannelId) ?? this.spotNodes?.get(target.routerChannelId);
46
+ return routeNode !== undefined &&
47
+ routingIdsMatchSpotRoute(routeNode.routingId, target.targetNodeRid)
45
48
  ? routeNode
46
49
  : undefined;
47
50
  }
@@ -55,8 +58,10 @@ export class ZLinkSpotRouteTargetResolver {
55
58
  }
56
59
 
57
60
  canRouteChannel(routerChannelId: string): boolean {
58
- return this.registration.routeChannels.has(routerChannelId)
59
- || this.spotNodeRouter(routerChannelId) !== undefined;
61
+ return (
62
+ this.registration.routeChannels.has(routerChannelId) ||
63
+ this.spotNodeRouter(routerChannelId) !== undefined
64
+ );
60
65
  }
61
66
 
62
67
  canRoutePacketChannel(routerChannelId: string): boolean {
@@ -73,15 +78,19 @@ export class ZLinkSpotRouteTargetResolver {
73
78
  hasNamedSpotNode(routerChannelId: string): boolean {
74
79
  return this.registration.spotNodes.has(routerChannelId);
75
80
  }
76
-
77
81
  }
78
82
 
79
- function routingIdsMatchSpotRoute(left: RoutingId | undefined, right: RoutingId | undefined): boolean {
83
+ function routingIdsMatchSpotRoute(
84
+ left: RoutingId | undefined,
85
+ right: RoutingId | undefined
86
+ ): boolean {
80
87
  if (left === undefined || right === undefined) {
81
88
  return false;
82
89
  }
83
90
  const rightCandidates = spotRouteRoutingIdCandidates(right);
84
- return [...spotRouteRoutingIdCandidates(left)].some(candidate => rightCandidates.has(candidate));
91
+ return [...spotRouteRoutingIdCandidates(left)].some((candidate) =>
92
+ rightCandidates.has(candidate)
93
+ );
85
94
  }
86
95
 
87
96
  function spotRouteRoutingIdCandidates(routingId: RoutingId): ReadonlySet<string> {
@@ -12,7 +12,9 @@ import {
12
12
  type ZLinkCodecSerializerSelection
13
13
  } from '../../contracts/Configuration/CodecSerializerSelection';
14
14
 
15
- export class DefaultZLinkCodecRegistryBuilder implements ZLinkCodecRegistryBuilder, ZLinkCodecRegistrar {
15
+ export class DefaultZLinkCodecRegistryBuilder
16
+ implements ZLinkCodecRegistryBuilder, ZLinkCodecRegistrar
17
+ {
16
18
  private readonly serializers = new Map<string, ZLinkMessageSerializer>();
17
19
  private readonly serializerSelections = new Map<string, ZLinkCodecSerializerSelection>();
18
20
  private readonly streamCodecs = new Map<string, unknown>();
@@ -65,5 +67,4 @@ export class DefaultZLinkCodecRegistryBuilder implements ZLinkCodecRegistryBuild
65
67
  this.codecs.add(normalized);
66
68
  return this;
67
69
  }
68
-
69
70
  }
@@ -13,9 +13,18 @@ export function currentFlowContext(): ZLinkFlowContextValue | undefined {
13
13
  return flowStorage.getStore();
14
14
  }
15
15
 
16
- export function currentOrCreateFlow(origin?: ZLinkFlowOrigin, createIfAbsent?: true): ZLinkFlowContextValue;
17
- export function currentOrCreateFlow(origin: ZLinkFlowOrigin, createIfAbsent: false): ZLinkFlowContextValue | undefined;
18
- export function currentOrCreateFlow(origin: ZLinkFlowOrigin, createIfAbsent: boolean): ZLinkFlowContextValue | undefined;
16
+ export function currentOrCreateFlow(
17
+ origin?: ZLinkFlowOrigin,
18
+ createIfAbsent?: true
19
+ ): ZLinkFlowContextValue;
20
+ export function currentOrCreateFlow(
21
+ origin: ZLinkFlowOrigin,
22
+ createIfAbsent: false
23
+ ): ZLinkFlowContextValue | undefined;
24
+ export function currentOrCreateFlow(
25
+ origin: ZLinkFlowOrigin,
26
+ createIfAbsent: boolean
27
+ ): ZLinkFlowContextValue | undefined;
19
28
  /**
20
29
  * Returns the ambient flow context or, when absent and `createIfAbsent`, a
21
30
  * fresh flow value. The returned value is NOT installed into the ambient
@@ -47,10 +47,7 @@ export {
47
47
  ZLinkLocationSpotEventKind,
48
48
  ZLinkSocketNativeEventType
49
49
  } from './internal-event-contracts';
50
- import type {
51
- ZLinkBackendSocketMonitor,
52
- ZLinkBackendSocketMonitorEvent
53
- } from '../backend';
50
+ import type { ZLinkBackendSocketMonitor, ZLinkBackendSocketMonitorEvent } from '../backend';
54
51
  import { AsyncResource } from 'node:async_hooks';
55
52
  import { ZLinkStateLane } from '../execution/state-lane';
56
53
  import { normalizeOpaqueRoutingId } from '../routing-id';
@@ -66,15 +63,9 @@ export interface ZLinkActorOwnerLeaseObservation {
66
63
  }
67
64
 
68
65
  /** Emits high-cardinality resolver detail only on the existing relocation debug path. */
69
- export function emitActorOwnerLeaseObservation(
70
- observation: ZLinkActorOwnerLeaseObservation
71
- ): void {
66
+ export function emitActorOwnerLeaseObservation(observation: ZLinkActorOwnerLeaseObservation): void {
72
67
  if (process.env.ZLINK_DEBUG_FRAMEWORK_RELOCATION !== '1') return;
73
- console.error(
74
- '[zlink.runtime.relocation]',
75
- 'actor_route.owner_lease_observed',
76
- observation
77
- );
68
+ console.error('[zlink.runtime.relocation]', 'actor_route.owner_lease_observed', observation);
78
69
  }
79
70
 
80
71
  /** Runtime composition port. It is intentionally absent from the public contract barrel. */
@@ -111,9 +102,8 @@ export class ZLinkSocketMonitoringSource {
111
102
  private readonly publisher: ZLinkRuntimeEventPublisher
112
103
  ) {
113
104
  validateSourceName(registration.sourceName);
114
- this.enabledEvents = registration.events === undefined
115
- ? undefined
116
- : new Set(registration.events);
105
+ this.enabledEvents =
106
+ registration.events === undefined ? undefined : new Set(registration.events);
117
107
  }
118
108
 
119
109
  start(): void {
@@ -155,38 +145,38 @@ export class ZLinkLocationRuntimeMonitoringSource {
155
145
  let topology;
156
146
  let serviceSummary;
157
147
  try {
158
- [status, topology, serviceSummary] = await startOutsideStateLane(() => Promise.all([
159
- this.query.getStatus(signal),
160
- this.query.listTopology({}, undefined, signal),
161
- this.query.listServiceSummaries({}, undefined, signal)
162
- ]));
148
+ [status, topology, serviceSummary] = await startOutsideStateLane(() =>
149
+ Promise.all([
150
+ this.query.getStatus(signal),
151
+ this.query.listTopology({}, undefined, signal),
152
+ this.query.listServiceSummaries({}, undefined, signal)
153
+ ])
154
+ );
163
155
  } catch (error) {
164
156
  if (await this.lane.run(() => this.markStoreFailureCore())) {
165
- await startOutsideStateLane(() => this.publisher.publish({
166
- sourceName: this.registration.sourceName,
167
- timestamp: new Date(),
168
- event: LocationRuntimeEventKind.StoreFailure
169
- } satisfies ZLinkLocationRuntimeEvent));
157
+ await startOutsideStateLane(() =>
158
+ this.publisher.publish({
159
+ sourceName: this.registration.sourceName,
160
+ timestamp: new Date(),
161
+ event: LocationRuntimeEventKind.StoreFailure
162
+ } satisfies ZLinkLocationRuntimeEvent)
163
+ );
170
164
  }
171
165
  return;
172
166
  }
173
167
 
174
168
  if (await this.lane.run(() => this.markStoreRecoveredCore())) {
175
- await startOutsideStateLane(() => this.publisher.publish({
176
- sourceName: this.registration.sourceName,
177
- timestamp: new Date(),
178
- event: LocationRuntimeEventKind.StoreRecovered
179
- } satisfies ZLinkLocationRuntimeEvent));
169
+ await startOutsideStateLane(() =>
170
+ this.publisher.publish({
171
+ sourceName: this.registration.sourceName,
172
+ timestamp: new Date(),
173
+ event: LocationRuntimeEventKind.StoreRecovered
174
+ } satisfies ZLinkLocationRuntimeEvent)
175
+ );
180
176
  }
181
177
 
182
- await this.publishIfChanged(
183
- LocationRuntimeEventKind.StatusChanged,
184
- status
185
- );
186
- await this.publishIfChanged(
187
- LocationRuntimeEventKind.TopologyChanged,
188
- topology.items
189
- );
178
+ await this.publishIfChanged(LocationRuntimeEventKind.StatusChanged, status);
179
+ await this.publishIfChanged(LocationRuntimeEventKind.TopologyChanged, topology.items);
190
180
  await this.publishIfChanged(
191
181
  LocationRuntimeEventKind.ServiceSummaryChanged,
192
182
  serviceSummary.items
@@ -205,16 +195,16 @@ export class ZLinkLocationRuntimeMonitoringSource {
205
195
  return true;
206
196
  }
207
197
 
208
- private async publishIfChanged(event: ZLinkLocationRuntimeEventKind, snapshot: unknown): Promise<void> {
198
+ private async publishIfChanged(
199
+ event: ZLinkLocationRuntimeEventKind,
200
+ snapshot: unknown
201
+ ): Promise<void> {
209
202
  const current = stableSnapshot(snapshot);
210
203
  const previous = await this.lane.run(() => this.previousSnapshotCore(event));
211
204
  if (current === previous) return;
212
- await startOutsideStateLane(() => publishLocationRuntimeChange(
213
- this.publisher,
214
- this.registration.sourceName,
215
- event,
216
- snapshot
217
- ));
205
+ await startOutsideStateLane(() =>
206
+ publishLocationRuntimeChange(this.publisher, this.registration.sourceName, event, snapshot)
207
+ );
218
208
  await this.lane.run(() => this.updateSnapshotCore(event, current));
219
209
  }
220
210
 
@@ -258,7 +248,12 @@ export class ZLinkLocationMonitoringEventEmitter {
258
248
  },
259
249
  private readonly publisher?: ZLinkRuntimeEventPublisher
260
250
  ) {
261
- for (const source of [registration.peer, registration.spot, registration.actor, registration.route]) {
251
+ for (const source of [
252
+ registration.peer,
253
+ registration.spot,
254
+ registration.actor,
255
+ registration.route
256
+ ]) {
262
257
  if (source !== undefined) {
263
258
  validateSourceName(source.sourceName);
264
259
  }
@@ -313,36 +308,68 @@ export class ZLinkLocationMonitoringEventEmitter {
313
308
  this.publishRoute(RouteLocationEventKind.ResolveMiss, { key });
314
309
  }
315
310
 
316
- private publishPeer(event: ZLinkLocationPeerEvent['event'], payload: Record<string, unknown>): void {
311
+ private publishPeer(
312
+ event: ZLinkLocationPeerEvent['event'],
313
+ payload: Record<string, unknown>
314
+ ): void {
317
315
  const registration = this.registration.peer;
318
316
  if (registration === undefined) {
319
317
  return;
320
318
  }
321
- this.publish({ sourceName: registration.sourceName, timestamp: new Date(), event, ...payload } as ZLinkLocationPeerEvent);
319
+ this.publish({
320
+ sourceName: registration.sourceName,
321
+ timestamp: new Date(),
322
+ event,
323
+ ...payload
324
+ } as ZLinkLocationPeerEvent);
322
325
  }
323
326
 
324
- private publishSpotLocation(event: ZLinkLocationSpotEvent['event'], payload: Record<string, unknown>): void {
327
+ private publishSpotLocation(
328
+ event: ZLinkLocationSpotEvent['event'],
329
+ payload: Record<string, unknown>
330
+ ): void {
325
331
  const registration = this.registration.spot;
326
332
  if (registration === undefined) {
327
333
  return;
328
334
  }
329
- this.publish({ sourceName: registration.sourceName, timestamp: new Date(), event, ...payload } as ZLinkLocationSpotEvent);
335
+ this.publish({
336
+ sourceName: registration.sourceName,
337
+ timestamp: new Date(),
338
+ event,
339
+ ...payload
340
+ } as ZLinkLocationSpotEvent);
330
341
  }
331
342
 
332
- private publishActor(event: ZLinkLocationActorEvent['event'], payload: Record<string, unknown>): void {
343
+ private publishActor(
344
+ event: ZLinkLocationActorEvent['event'],
345
+ payload: Record<string, unknown>
346
+ ): void {
333
347
  const registration = this.registration.actor;
334
348
  if (registration === undefined) {
335
349
  return;
336
350
  }
337
- this.publish({ sourceName: registration.sourceName, timestamp: new Date(), event, ...payload } as ZLinkLocationActorEvent);
351
+ this.publish({
352
+ sourceName: registration.sourceName,
353
+ timestamp: new Date(),
354
+ event,
355
+ ...payload
356
+ } as ZLinkLocationActorEvent);
338
357
  }
339
358
 
340
- private publishRoute(event: ZLinkLocationRouteEvent['event'], payload: Record<string, unknown>): void {
359
+ private publishRoute(
360
+ event: ZLinkLocationRouteEvent['event'],
361
+ payload: Record<string, unknown>
362
+ ): void {
341
363
  const registration = this.registration.route;
342
364
  if (registration === undefined) {
343
365
  return;
344
366
  }
345
- this.publish({ sourceName: registration.sourceName, timestamp: new Date(), event, ...payload } as ZLinkLocationRouteEvent);
367
+ this.publish({
368
+ sourceName: registration.sourceName,
369
+ timestamp: new Date(),
370
+ event,
371
+ ...payload
372
+ } as ZLinkLocationRouteEvent);
346
373
  }
347
374
 
348
375
  private publish<TEvent extends ZLinkRuntimeEvent>(event: TEvent): void {
@@ -357,7 +384,10 @@ export class ZLinkLocationMonitoringEventEmitter {
357
384
 
358
385
  export * from './topology-runtime-projections';
359
386
 
360
- function toSocketEvent(sourceName: string, raw: ZLinkBackendSocketMonitorEvent): ZLinkSocketEvent | undefined {
387
+ function toSocketEvent(
388
+ sourceName: string,
389
+ raw: ZLinkBackendSocketMonitorEvent
390
+ ): ZLinkSocketEvent | undefined {
361
391
  const event = mapSocketEvent(raw.nativeEvent as ZLinkSocketNativeEventType, raw.value);
362
392
  if (event === undefined) {
363
393
  return undefined;
@@ -408,11 +438,16 @@ async function publishLocationRuntimeChange<T>(
408
438
  snapshot: T
409
439
  ): Promise<void> {
410
440
  const base = { sourceName, timestamp: new Date() };
411
- const runtimeEvent: ZLinkLocationRuntimeEvent = event === LocationRuntimeEventKind.StatusChanged
412
- ? { ...base, event, status: snapshot as ZLinkLocationRuntimeStatus }
413
- : event === LocationRuntimeEventKind.TopologyChanged
414
- ? { ...base, event, topology: snapshot as readonly ZLinkLocationTopologyEntry[] }
415
- : { ...base, event: LocationRuntimeEventKind.ServiceSummaryChanged, serviceSummary: snapshot as readonly ZLinkLocationServiceSummary[] };
441
+ const runtimeEvent: ZLinkLocationRuntimeEvent =
442
+ event === LocationRuntimeEventKind.StatusChanged
443
+ ? { ...base, event, status: snapshot as ZLinkLocationRuntimeStatus }
444
+ : event === LocationRuntimeEventKind.TopologyChanged
445
+ ? { ...base, event, topology: snapshot as readonly ZLinkLocationTopologyEntry[] }
446
+ : {
447
+ ...base,
448
+ event: LocationRuntimeEventKind.ServiceSummaryChanged,
449
+ serviceSummary: snapshot as readonly ZLinkLocationServiceSummary[]
450
+ };
416
451
  await publisher.publish(runtimeEvent);
417
452
  }
418
453
 
@@ -421,7 +456,7 @@ function startOutsideStateLane<T>(work: () => T): T {
421
456
  }
422
457
 
423
458
  function stableSnapshot(value: unknown): string {
424
- return JSON.stringify(value, (_key, item) => typeof item === 'bigint' ? item.toString() : item);
459
+ return JSON.stringify(value, (_key, item) => (typeof item === 'bigint' ? item.toString() : item));
425
460
  }
426
461
 
427
462
  function validateSourceName(sourceName: string): void {