@zlink-systems/framework 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
  13. package/dist/contracts/Handlers/JsonContract.js +23 -11
  14. package/dist/contracts/Spots/SpotKind.js +16 -8
  15. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
  16. package/dist/location-store-integration.js +16 -16
  17. package/dist/nest-integration.js +17 -11
  18. package/dist/runtime/abort.js +9 -5
  19. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  20. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  21. package/dist/runtime/actors/actor-client.js +83 -63
  22. package/dist/runtime/actors/actor-context.js +28 -22
  23. package/dist/runtime/actors/actor-creation.js +4 -3
  24. package/dist/runtime/actors/actor-handoff.js +89 -92
  25. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
  26. package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
  27. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  28. package/dist/runtime/actors/actor-mailbox.js +1 -1
  29. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  30. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  31. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  32. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  33. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  34. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  35. package/dist/runtime/actors/bound-session-wire.js +14 -9
  36. package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
  37. package/dist/runtime/actors/index.js +2 -5
  38. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  39. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  40. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  41. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  42. package/dist/runtime/admission.js +2 -6
  43. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  44. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  45. package/dist/runtime/backend/contracts/index.d.ts +1 -0
  46. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  47. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  48. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  49. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  50. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  51. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  52. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
  53. package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
  54. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  55. package/dist/runtime/backend/runtime-message.js +3 -3
  56. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  57. package/dist/runtime/backend/runtime-values.js +4 -5
  58. package/dist/runtime/channels/channel-clients.js +27 -24
  59. package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
  60. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  61. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  62. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  63. package/dist/runtime/channels/channel-envelope.js +83 -47
  64. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  65. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  66. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  67. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  68. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  69. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  70. package/dist/runtime/channels/channel-transports.js +46 -42
  71. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  72. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  73. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
  74. package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
  75. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  76. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  77. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  78. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  79. package/dist/runtime/channels/source-spot-router.js +6 -2
  80. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  81. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  82. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  83. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
  84. package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
  85. package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
  86. package/dist/runtime/diagnostics/flow-context.js +2 -2
  87. package/dist/runtime/diagnostics/index.js +38 -10
  88. package/dist/runtime/diagnostics/message-flow.js +58 -42
  89. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  90. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  91. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  92. package/dist/runtime/execution/index.js +7 -6
  93. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  94. package/dist/runtime/execution/state-lane.js +2 -2
  95. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
  96. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  97. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  98. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
  99. package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
  100. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  101. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  102. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  103. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  104. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  105. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  106. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  107. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  108. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  109. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  110. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  111. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
  112. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  113. package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
  114. package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
  115. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  116. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
  117. package/dist/runtime/foundation/service-topology-registry.js +105 -96
  118. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  119. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  120. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  121. package/dist/runtime/framework-errors-internal.js +7 -10
  122. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  123. package/dist/runtime/handlers/index.js +3 -1
  124. package/dist/runtime/host/actor-packet-relay.js +74 -70
  125. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  126. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  127. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  128. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  129. package/dist/runtime/host/application-job-queue.js +18 -22
  130. package/dist/runtime/host/bound-session-relay.js +3 -1
  131. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  132. package/dist/runtime/host/host-capacity-status.js +8 -4
  133. package/dist/runtime/host/index.js +245 -228
  134. package/dist/runtime/host/instance-activation-authority.js +93 -96
  135. package/dist/runtime/host/location-runtime-owner.js +16 -14
  136. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  137. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  138. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  139. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  140. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  141. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  142. package/dist/runtime/host/runtime-shutdown.js +1 -2
  143. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  144. package/dist/runtime/host/spot-address-transport.js +69 -71
  145. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  146. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  147. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  148. package/dist/runtime/locations/actor-location-claims.js +26 -20
  149. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  150. package/dist/runtime/locations/authority-key-codec.js +7 -7
  151. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  152. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  153. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  154. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  155. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  156. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  157. package/dist/runtime/locations/key-codec.js +1 -1
  158. package/dist/runtime/locations/lease-tracker.js +23 -21
  159. package/dist/runtime/locations/lifecycle.js +4 -5
  160. package/dist/runtime/locations/location-store-repository.js +368 -324
  161. package/dist/runtime/locations/opaque-record-key.js +2 -2
  162. package/dist/runtime/locations/resolvers.js +73 -82
  163. package/dist/runtime/locations/runtime.js +68 -63
  164. package/dist/runtime/locations/spot-location-claims.js +39 -35
  165. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  166. package/dist/runtime/messaging/packet-name.js +7 -6
  167. package/dist/runtime/messaging/payload-codec.js +21 -18
  168. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  169. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  170. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
  171. package/dist/runtime/routing-id.js +3 -5
  172. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  173. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  174. package/dist/runtime/spots/index.js +209 -220
  175. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  176. package/dist/runtime/spots/spot-activation-state.js +17 -15
  177. package/dist/runtime/spots/spot-activation.js +33 -16
  178. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  179. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  180. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
  181. package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
  182. package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
  183. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  184. package/dist/runtime/spots/spot-closing.js +3 -7
  185. package/dist/runtime/spots/spot-context.js +2 -2
  186. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  187. package/dist/runtime/spots/spot-handle.js +6 -3
  188. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  189. package/dist/runtime/spots/spot-manager-public.js +5 -6
  190. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  191. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  192. package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
  193. package/dist/runtime/spots/spot-outbound.js +10 -14
  194. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  195. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  196. package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
  197. package/dist/runtime/spots/spot-route-replies.js +4 -6
  198. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  199. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
  200. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  201. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  202. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  203. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  204. package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
  205. package/dist/runtime/spots/spot-timer.js +26 -30
  206. package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
  207. package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
  208. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
  209. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  210. package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
  211. package/dist/runtime/streams/bound-session-response-target.js +8 -1
  212. package/dist/runtime/streams/bound-session-service.d.ts +1 -0
  213. package/dist/runtime/streams/bound-session-service.js +14 -12
  214. package/dist/runtime/streams/index.js +28 -20
  215. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  216. package/dist/runtime/streams/managed-stream.js +52 -31
  217. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  218. package/dist/runtime/streams/protocol.d.ts +5 -1
  219. package/dist/runtime/streams/protocol.js +68 -20
  220. package/dist/runtime/streams/session-actor-coordinator.js +37 -41
  221. package/dist/runtime/streams/session-context.d.ts +9 -2
  222. package/dist/runtime/streams/session-context.js +50 -32
  223. package/dist/runtime/streams/session-local-actors.d.ts +3 -1
  224. package/dist/runtime/streams/session-local-actors.js +17 -2
  225. package/dist/runtime/streams/session-provider.js +2 -2
  226. package/dist/runtime/streams/session-serial-executor.js +1 -2
  227. package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
  228. package/dist/runtime/streams/stream-frame-factory.js +14 -7
  229. package/dist/runtime/streams/stream-session-runtime.js +112 -78
  230. package/dist/runtime/workers/index.js +15 -4
  231. package/package.json +3 -3
  232. package/src/contracts/Channels/RouteCalls.ts +6 -1
  233. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  234. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  235. package/src/contracts/Configuration/Builders.ts +14 -14
  236. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  237. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  238. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  239. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  240. package/src/contracts/Configuration/Registration.ts +46 -17
  241. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  242. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  243. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  244. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  245. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  246. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  247. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  248. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  249. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  250. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  251. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
  252. package/src/contracts/Errors/index.ts +1 -4
  253. package/src/contracts/Handlers/Attributes.ts +15 -9
  254. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  255. package/src/contracts/Handlers/JsonContract.ts +53 -19
  256. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  257. package/src/contracts/Locations/Authority.ts +4 -11
  258. package/src/contracts/Locations/Keys.ts +6 -1
  259. package/src/contracts/Locations/Options.ts +3 -2
  260. package/src/contracts/Locations/RelocationStore.ts +1 -4
  261. package/src/contracts/Locations/Resolvers.ts +5 -5
  262. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  263. package/src/contracts/Locations/Stores.ts +1 -2
  264. package/src/contracts/Locations/index.ts +2 -8
  265. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  266. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  267. package/src/contracts/Spots/Contracts.ts +2 -8
  268. package/src/contracts/Spots/SpotKind.ts +16 -8
  269. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  270. package/src/contracts/Streams/IZLinkSession.ts +2 -2
  271. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  272. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  273. package/src/internal.ts +5 -4
  274. package/src/location-store-integration.ts +24 -16
  275. package/src/nest-integration.ts +40 -25
  276. package/src/runtime/abort.ts +10 -4
  277. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  278. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  279. package/src/runtime/actors/actor-client.ts +162 -133
  280. package/src/runtime/actors/actor-context.ts +142 -134
  281. package/src/runtime/actors/actor-creation.ts +47 -44
  282. package/src/runtime/actors/actor-execution-context.ts +6 -4
  283. package/src/runtime/actors/actor-handoff.ts +269 -293
  284. package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
  285. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  286. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  287. package/src/runtime/actors/actor-mailbox.ts +16 -19
  288. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  289. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  290. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  291. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  292. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  293. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  294. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  295. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  296. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  297. package/src/runtime/actors/bound-session-wire.ts +37 -17
  298. package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
  299. package/src/runtime/actors/index.ts +43 -86
  300. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  301. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  302. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  303. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  304. package/src/runtime/admission.ts +9 -9
  305. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  306. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  307. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  308. package/src/runtime/backend/contracts/index.ts +77 -52
  309. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  310. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  311. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  312. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  313. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  314. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  315. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  316. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  317. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  318. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  319. package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
  320. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  321. package/src/runtime/backend/runtime-message.ts +5 -3
  322. package/src/runtime/backend/runtime-values.ts +10 -7
  323. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  324. package/src/runtime/channels/channel-clients.ts +93 -73
  325. package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
  326. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  327. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  328. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  329. package/src/runtime/channels/channel-envelope.ts +256 -150
  330. package/src/runtime/channels/channel-multipart.ts +13 -5
  331. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  332. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  333. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  334. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  335. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  336. package/src/runtime/channels/channel-socket-options.ts +3 -10
  337. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  338. package/src/runtime/channels/channel-transports.ts +218 -206
  339. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  340. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  341. package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
  342. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  343. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  344. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  345. package/src/runtime/channels/index.ts +1 -4
  346. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  347. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  348. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  349. package/src/runtime/channels/source-spot-router.ts +26 -22
  350. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  351. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  352. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  353. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  354. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  355. package/src/runtime/codecs/index.ts +3 -2
  356. package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
  357. package/src/runtime/diagnostics/flow-context.ts +18 -7
  358. package/src/runtime/diagnostics/index.ts +96 -61
  359. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  360. package/src/runtime/diagnostics/message-flow.ts +107 -79
  361. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  362. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  363. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  364. package/src/runtime/execution/index.ts +18 -26
  365. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  366. package/src/runtime/execution/state-lane.ts +2 -2
  367. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
  368. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  369. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  370. package/src/runtime/foundation/operation-identity.ts +1 -2
  371. package/src/runtime/foundation/operation-registry.ts +8 -2
  372. package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
  373. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  374. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  375. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  376. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  377. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  378. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  379. package/src/runtime/foundation/service-mailbox.ts +14 -14
  380. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  381. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  382. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  383. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  384. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  385. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  386. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  387. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
  388. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  389. package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
  390. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  391. package/src/runtime/foundation/service-topology-registry.ts +170 -159
  392. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  393. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  394. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  395. package/src/runtime/framework-errors-internal.ts +31 -30
  396. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  397. package/src/runtime/handlers/index.ts +18 -8
  398. package/src/runtime/host/actor-packet-relay.ts +290 -261
  399. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  400. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  401. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  402. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  403. package/src/runtime/host/application-job-queue.ts +32 -48
  404. package/src/runtime/host/bound-session-relay.ts +7 -9
  405. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  406. package/src/runtime/host/host-capacity-status.ts +10 -9
  407. package/src/runtime/host/index.ts +861 -789
  408. package/src/runtime/host/instance-activation-authority.ts +125 -143
  409. package/src/runtime/host/location-runtime-owner.ts +38 -26
  410. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  411. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  412. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  413. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  414. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  415. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  416. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  417. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  418. package/src/runtime/host/runtime-shutdown.ts +4 -3
  419. package/src/runtime/host/service-relocation-control.ts +14 -5
  420. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  421. package/src/runtime/host/spot-address-transport.ts +284 -237
  422. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  423. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  424. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  425. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  426. package/src/runtime/locations/actor-location-claims.ts +61 -49
  427. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  428. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  429. package/src/runtime/locations/authority-key-codec.ts +13 -10
  430. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  431. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  432. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  433. package/src/runtime/locations/canonical-codec.ts +3 -1
  434. package/src/runtime/locations/creation-operation-id.ts +4 -3
  435. package/src/runtime/locations/domain-store-contract.ts +13 -7
  436. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  437. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  438. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  439. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  440. package/src/runtime/locations/key-codec.ts +3 -4
  441. package/src/runtime/locations/lease-tracker.ts +36 -27
  442. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  443. package/src/runtime/locations/lifecycle.ts +33 -28
  444. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  445. package/src/runtime/locations/opaque-record-key.ts +4 -9
  446. package/src/runtime/locations/resolvers.ts +201 -178
  447. package/src/runtime/locations/runtime.ts +251 -159
  448. package/src/runtime/locations/spot-location-claims.ts +110 -112
  449. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  450. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  451. package/src/runtime/messaging/packet-name.ts +8 -6
  452. package/src/runtime/messaging/payload-codec.ts +70 -50
  453. package/src/runtime/messaging/submission-result.ts +6 -9
  454. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  455. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
  456. package/src/runtime/routing-id.ts +10 -7
  457. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  458. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  459. package/src/runtime/spots/index.ts +595 -564
  460. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  461. package/src/runtime/spots/spot-activation-state.ts +43 -51
  462. package/src/runtime/spots/spot-activation.ts +179 -116
  463. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  464. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  465. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  466. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  467. package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
  468. package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
  469. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  470. package/src/runtime/spots/spot-closing.ts +11 -12
  471. package/src/runtime/spots/spot-context.ts +46 -26
  472. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  473. package/src/runtime/spots/spot-handle.ts +17 -15
  474. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  475. package/src/runtime/spots/spot-location-claim.ts +5 -4
  476. package/src/runtime/spots/spot-manager-public.ts +62 -82
  477. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  478. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  479. package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
  480. package/src/runtime/spots/spot-outbound.ts +47 -59
  481. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  482. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  483. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  484. package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
  485. package/src/runtime/spots/spot-route-replies.ts +23 -24
  486. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  487. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  488. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
  489. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  490. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  491. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  492. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  493. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  494. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  495. package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
  496. package/src/runtime/spots/spot-timer.ts +103 -91
  497. package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
  498. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
  499. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  500. package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
  501. package/src/runtime/streams/bound-session-response-target.ts +39 -9
  502. package/src/runtime/streams/bound-session-service.ts +52 -42
  503. package/src/runtime/streams/index.ts +183 -100
  504. package/src/runtime/streams/managed-stream.ts +123 -90
  505. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  506. package/src/runtime/streams/protocol.ts +115 -46
  507. package/src/runtime/streams/session-actor-coordinator.ts +109 -93
  508. package/src/runtime/streams/session-calls.ts +2 -8
  509. package/src/runtime/streams/session-context.ts +96 -51
  510. package/src/runtime/streams/session-local-actors.ts +19 -3
  511. package/src/runtime/streams/session-provider.ts +5 -7
  512. package/src/runtime/streams/session-serial-executor.ts +7 -6
  513. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  514. package/src/runtime/streams/stream-frame-factory.ts +59 -40
  515. package/src/runtime/streams/stream-session-runtime.ts +317 -214
  516. package/src/runtime/workers/index.ts +68 -29
@@ -2,22 +2,17 @@ import type { RoutingId } from '../../contracts/Common/CoreTypes';
2
2
  import type { ZLinkCreationOperationIdentity } from './internal-location-contracts';
3
3
  import { encodeRoutingIdStorageHex } from '../routing-id';
4
4
 
5
- export function opaqueRecordPreimage(
6
- record: string,
7
- ...segments: readonly string[]
8
- ): string {
5
+ export function opaqueRecordPreimage(record: string, ...segments: readonly string[]): string {
9
6
  return [record, ...segments].join('\0');
10
7
  }
11
8
 
12
- export function creationTerminalPreimage(
13
- operation: ZLinkCreationOperationIdentity
14
- ): string {
9
+ export function creationTerminalPreimage(operation: ZLinkCreationOperationIdentity): string {
15
10
  return opaqueRecordPreimage(
16
11
  'creation-terminal',
17
12
  routingIdHexSegment(operation.sourceNodeRid),
18
13
  operation.sourceNodeGeneration.toString(),
19
- operation.operationId.high.toString(16).padStart(16, '0')
20
- + operation.operationId.low.toString(16).padStart(16, '0')
14
+ operation.operationId.high.toString(16).padStart(16, '0') +
15
+ operation.operationId.low.toString(16).padStart(16, '0')
21
16
  );
22
17
  }
23
18
 
@@ -1,4 +1,8 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException, internalFrameworkErrorKind } from '../framework-errors-internal';
1
+ import {
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException,
4
+ internalFrameworkErrorKind
5
+ } from '../framework-errors-internal';
2
6
  import type { ActorRef, RoutingId, SpotId } from '../../contracts/Common';
3
7
  import {
4
8
  ZLinkLocationRole,
@@ -15,7 +19,7 @@ import {
15
19
  type ZLinkRouteLocation,
16
20
  type ZLinkRouteLocationKey,
17
21
  type ZLinkSpotLocation,
18
- type ZLinkSpotLocationKey,
22
+ type ZLinkSpotLocationKey
19
23
  } from './internal-location-contracts';
20
24
  import type {
21
25
  ZLinkActorLocationStore,
@@ -29,32 +33,18 @@ import { decodeServiceReadySpotAuthority } from '../foundation/service-authority
29
33
  import { serviceRelocationAuthorityApplicationPayload } from '../foundation/service-relocation-runtime';
30
34
  import { decodeActorAuthorityIdentity } from '../actors/actor-authority-publication';
31
35
  import { encodeAuthorityKey } from './authority-key-codec';
32
- import {
33
- ZLinkSpotKind
34
- } from '../../contracts/Spots';
36
+ import { ZLinkSpotKind } from '../../contracts/Spots';
35
37
  import type { ZLinkAuthoritySnapshot } from './internal-location-contracts';
36
38
  import type {
37
39
  SpotHandle,
38
40
  ZLinkActorSpotHandleResolver,
39
41
  ZLinkSpotHandleResolver
40
42
  } from '../spots/spot-handle';
41
- import {
42
- ZLinkFrameworkErrorKind,
43
- ZLinkFrameworkException
44
- } from '../../contracts/Errors';
45
- import type {
46
- ZLinkSpotRouteResolver,
47
- ZLinkSpotRouteTarget
48
- } from '../spots/spot-routing-internal';
43
+ import { ZLinkFrameworkErrorKind, ZLinkFrameworkException } from '../../contracts/Errors';
44
+ import type { ZLinkSpotRouteResolver, ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
49
45
  import { createSpotHandle, type ResolvedSpotHandle } from '../spots/spot-handle';
50
- import {
51
- isKnownZLinkLocationAutoConnectType,
52
- isKnownZLinkLocationRole
53
- } from './canonical-codec';
54
- import {
55
- ZLinkLiveRowFilter,
56
- ZLinkOwnerLeaseTracker
57
- } from './lease-tracker';
46
+ import { isKnownZLinkLocationAutoConnectType, isKnownZLinkLocationRole } from './canonical-codec';
47
+ import { ZLinkLiveRowFilter, ZLinkOwnerLeaseTracker } from './lease-tracker';
58
48
  import { routingIdsEqual } from '../routing-id';
59
49
  import { ZLinkStateLane } from '../execution/state-lane';
60
50
  import { emitActorOwnerLeaseObservation } from '../diagnostics';
@@ -101,16 +91,17 @@ function projectCanonicalActorRoute(
101
91
  const { allocation } = snapshot;
102
92
  const nodeRid = allocation.descriptor.rid;
103
93
  if (
104
- allocation.objectKind !== 'actor'
105
- || allocation.state !== 'active'
106
- || snapshot.objectGeneration <= 0n
107
- || snapshot.ownerLeaseGeneration <= 0n
108
- || actorId.length === 0
109
- || allocation.stableType.length === 0
110
- || allocation.descriptor.meshName.length === 0
111
- || String(nodeRid).length === 0
112
- || allocation.descriptorLifecycleGeneration <= 0n
113
- ) return undefined;
94
+ allocation.objectKind !== 'actor' ||
95
+ allocation.state !== 'active' ||
96
+ snapshot.objectGeneration <= 0n ||
97
+ snapshot.ownerLeaseGeneration <= 0n ||
98
+ actorId.length === 0 ||
99
+ allocation.stableType.length === 0 ||
100
+ allocation.descriptor.meshName.length === 0 ||
101
+ String(nodeRid).length === 0 ||
102
+ allocation.descriptorLifecycleGeneration <= 0n
103
+ )
104
+ return undefined;
114
105
  return {
115
106
  meshName: allocation.descriptor.meshName,
116
107
  actorRef: {
@@ -170,10 +161,9 @@ export interface ZLinkSpotRouteInvalidationFence {
170
161
  readonly ownerLeaseGeneration: bigint;
171
162
  }
172
163
 
173
- export class ZLinkStoreLocationResolvers implements
174
- ZLinkPeerLocationResolver,
175
- ZLinkSpotHandleResolver,
176
- ZLinkActorSpotHandleResolver {
164
+ export class ZLinkStoreLocationResolvers
165
+ implements ZLinkPeerLocationResolver, ZLinkSpotHandleResolver, ZLinkActorSpotHandleResolver
166
+ {
177
167
  private readonly lane = new ZLinkStateLane();
178
168
  private readonly liveRows: ZLinkLiveRowFilter;
179
169
  private readonly monotonicNowMs: () => number;
@@ -196,13 +186,18 @@ export class ZLinkStoreLocationResolvers implements
196
186
  );
197
187
  }
198
188
 
199
- async listLivePeers(filter: ZLinkPeerLocationFilter, signal?: AbortSignal): Promise<readonly ZLinkPeerLocation[]> {
189
+ async listLivePeers(
190
+ filter: ZLinkPeerLocationFilter,
191
+ signal?: AbortSignal
192
+ ): Promise<readonly ZLinkPeerLocation[]> {
200
193
  const rows = await this.options.stores.peerStore.listPeers(filter, signal);
201
194
  return await this.liveRows.filter(
202
195
  rows,
203
196
  (row) => row.ownerId,
204
197
  signal,
205
- (row) => isKnownZLinkLocationAutoConnectType(row.autoConnectType) && isKnownZLinkLocationRole(row.role)
198
+ (row) =>
199
+ isKnownZLinkLocationAutoConnectType(row.autoConnectType) &&
200
+ isKnownZLinkLocationRole(row.role)
206
201
  );
207
202
  }
208
203
 
@@ -210,27 +205,31 @@ export class ZLinkStoreLocationResolvers implements
210
205
  spotId: SpotId,
211
206
  meshNames: readonly string[],
212
207
  signal?: AbortSignal
213
- ): Promise<{
214
- readonly meshName: string;
215
- readonly nodeRid: RoutingId;
216
- readonly spotId: SpotId;
217
- readonly targetNodeGeneration: bigint;
218
- readonly targetOwnerId: string;
219
- readonly ownerLeaseGeneration: bigint;
220
- } | undefined> {
208
+ ): Promise<
209
+ | {
210
+ readonly meshName: string;
211
+ readonly nodeRid: RoutingId;
212
+ readonly spotId: SpotId;
213
+ readonly targetNodeGeneration: bigint;
214
+ readonly targetOwnerId: string;
215
+ readonly ownerLeaseGeneration: bigint;
216
+ }
217
+ | undefined
218
+ > {
221
219
  for (const meshName of meshNames) {
222
220
  const descriptors = await this.liveRows.filter(
223
221
  (await this.options.stores.locationStore.listMeshNodes(meshName, undefined, signal)).items,
224
222
  (descriptor) => descriptor.ownerId,
225
223
  signal
226
224
  );
227
- const descriptor = descriptors.find((candidate) =>
228
- candidate.entrySpotId === spotId
229
- && candidate.objectRole === ZLinkObjectRole.Server
230
- // An Entry Spot accepts new joins only while its owning node is Serving.
231
- // Preparing/retiring/error rows may still be visible during replacement,
232
- // but routing them would turn a valid transfer into NotConnected.
233
- && candidate.state === ZLinkFrameworkRuntimeState.Serving
225
+ const descriptor = descriptors.find(
226
+ (candidate) =>
227
+ candidate.entrySpotId === spotId &&
228
+ candidate.objectRole === ZLinkObjectRole.Server &&
229
+ // An Entry Spot accepts new joins only while its owning node is Serving.
230
+ // Preparing/retiring/error rows may still be visible during replacement,
231
+ // but routing them would turn a valid transfer into NotConnected.
232
+ candidate.state === ZLinkFrameworkRuntimeState.Serving
234
233
  );
235
234
  if (descriptor !== undefined) {
236
235
  return {
@@ -253,7 +252,9 @@ export class ZLinkStoreLocationResolvers implements
253
252
  signal?: AbortSignal,
254
253
  excludedCandidateRids: ReadonlySet<string> = new Set()
255
254
  ): Promise<RoutingId | undefined> {
256
- const descriptors = (await this.options.stores.locationStore.listMeshNodes(meshName, undefined, signal)).items;
255
+ const descriptors = (
256
+ await this.options.stores.locationStore.listMeshNodes(meshName, undefined, signal)
257
+ ).items;
257
258
  const liveDescriptors = await this.liveRows.filter(
258
259
  descriptors,
259
260
  (descriptor) => descriptor.ownerId,
@@ -261,15 +262,17 @@ export class ZLinkStoreLocationResolvers implements
261
262
  );
262
263
  const candidates = liveDescriptors.filter((descriptor) => {
263
264
  const capacity = descriptor.populationCapacity.actors;
264
- return descriptor.state === ZLinkFrameworkRuntimeState.Serving
265
- && descriptor.objectRole === ZLinkObjectRole.Server
266
- && descriptor.placementWeight > 0
267
- && !routingIdsEqual(descriptor.rid, excludedNodeRid)
268
- && !excludedCandidateRids.has(String(descriptor.rid))
269
- && capacity.active + capacity.reserved < capacity.limit
270
- && descriptor.objectCapabilities.some((candidate) =>
271
- candidate.objectKind === 'actor' && candidate.stableType === actorType
272
- );
265
+ return (
266
+ descriptor.state === ZLinkFrameworkRuntimeState.Serving &&
267
+ descriptor.objectRole === ZLinkObjectRole.Server &&
268
+ descriptor.placementWeight > 0 &&
269
+ !routingIdsEqual(descriptor.rid, excludedNodeRid) &&
270
+ !excludedCandidateRids.has(String(descriptor.rid)) &&
271
+ capacity.active + capacity.reserved < capacity.limit &&
272
+ descriptor.objectCapabilities.some(
273
+ (candidate) => candidate.objectKind === 'actor' && candidate.stableType === actorType
274
+ )
275
+ );
273
276
  });
274
277
  if (candidates.length === 0) return undefined;
275
278
  const totalWeight = candidates.reduce(
@@ -285,7 +288,10 @@ export class ZLinkStoreLocationResolvers implements
285
288
  return candidates[candidates.length - 1]?.rid;
286
289
  }
287
290
 
288
- async resolveRoute(key: ZLinkRouteLocationKey, signal?: AbortSignal): Promise<ZLinkRouteLocation | undefined> {
291
+ async resolveRoute(
292
+ key: ZLinkRouteLocationKey,
293
+ signal?: AbortSignal
294
+ ): Promise<ZLinkRouteLocation | undefined> {
289
295
  const row = await this.liveRows.resolve(
290
296
  await this.options.stores.routeStore.resolveRoute(key, signal),
291
297
  (candidate) => candidate.ownerId,
@@ -345,10 +351,8 @@ export class ZLinkStoreLocationResolvers implements
345
351
  ): Promise<SpotHandle | undefined> {
346
352
  const initial = await this.resolveSpotRef(meshName, spotId, signal);
347
353
  if (initial === undefined) return undefined;
348
- return createSpotHandle(
349
- String(spotId),
350
- initial,
351
- (refreshSignal) => this.resolveSpotRef(meshName, spotId, refreshSignal)
354
+ return createSpotHandle(String(spotId), initial, (refreshSignal) =>
355
+ this.resolveSpotRef(meshName, spotId, refreshSignal)
352
356
  );
353
357
  }
354
358
 
@@ -361,9 +365,7 @@ export class ZLinkStoreLocationResolvers implements
361
365
  if (row === undefined) {
362
366
  return undefined;
363
367
  }
364
- const spotId = row.spotKind === ZLinkSpotKind.Entry
365
- ? row.ownerNodeRid
366
- : row.spotId;
368
+ const spotId = row.spotKind === ZLinkSpotKind.Entry ? row.ownerNodeRid : row.spotId;
367
369
  return {
368
370
  meshName: row.meshName,
369
371
  nodeRid: String(row.ownerNodeRid),
@@ -436,18 +438,16 @@ export class ZLinkStoreLocationResolvers implements
436
438
  return unavailable;
437
439
  }
438
440
  if (
439
- decoded === undefined
440
- || decoded.actor.actorId !== actorId
441
- || decoded.actor.objectGeneration !== current.objectGeneration
441
+ decoded === undefined ||
442
+ decoded.actor.actorId !== actorId ||
443
+ decoded.actor.objectGeneration !== current.objectGeneration
442
444
  ) {
443
445
  const route = await this.cacheDirectActorRoute(
444
446
  actorId,
445
447
  projectCanonicalActorRoute(current, actorId),
446
448
  remainingLeaseMs
447
449
  );
448
- return route === undefined
449
- ? { kind: 'missing' }
450
- : { kind: 'ready', route };
450
+ return route === undefined ? { kind: 'missing' } : { kind: 'ready', route };
451
451
  }
452
452
  let enclosingSpotRoute: ZLinkSpotRouteTarget | undefined;
453
453
  if (decoded.spotKind === ZLinkSpotKind.User) {
@@ -455,8 +455,8 @@ export class ZLinkStoreLocationResolvers implements
455
455
  enclosingSpotRoute = await this.authoritySpotResolver.resolve(decoded.spotId, signal);
456
456
  } catch (error) {
457
457
  if (
458
- error instanceof ZLinkFrameworkException
459
- && internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.SpotRouteNotFound
458
+ error instanceof ZLinkFrameworkException &&
459
+ internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.SpotRouteNotFound
460
460
  ) {
461
461
  return { kind: 'missing' };
462
462
  }
@@ -482,9 +482,7 @@ export class ZLinkStoreLocationResolvers implements
482
482
  enclosingSpotRoute
483
483
  };
484
484
  const cachedRoute = await this.cacheDirectActorRoute(actorId, route, remainingLeaseMs);
485
- return cachedRoute === undefined
486
- ? { kind: 'missing' }
487
- : { kind: 'ready', route: cachedRoute };
485
+ return cachedRoute === undefined ? { kind: 'missing' } : { kind: 'ready', route: cachedRoute };
488
486
  }
489
487
 
490
488
  private async cacheDirectActorRoute(
@@ -520,10 +518,8 @@ export class ZLinkStoreLocationResolvers implements
520
518
  ): Promise<SpotHandle | undefined> {
521
519
  const initial = await this.resolveActorSpotRef(meshName, actorId, signal);
522
520
  if (initial === undefined) return undefined;
523
- return createSpotHandle(
524
- initial.spotId,
525
- initial,
526
- (refreshSignal) => this.resolveActorSpotRef(meshName, actorId, refreshSignal)
521
+ return createSpotHandle(initial.spotId, initial, (refreshSignal) =>
522
+ this.resolveActorSpotRef(meshName, actorId, refreshSignal)
527
523
  );
528
524
  }
529
525
 
@@ -543,14 +539,16 @@ export class ZLinkStoreLocationResolvers implements
543
539
  this.options.events?.spotResolveMiss(key);
544
540
  return undefined;
545
541
  }
546
- if (!await this.cacheReady(
547
- this.spotRoutes,
548
- cacheKey,
549
- row,
550
- row.ownerId,
551
- row.leaseGeneration,
552
- signal
553
- )) {
542
+ if (
543
+ !(await this.cacheReady(
544
+ this.spotRoutes,
545
+ cacheKey,
546
+ row,
547
+ row.ownerId,
548
+ row.leaseGeneration,
549
+ signal
550
+ ))
551
+ ) {
554
552
  this.options.events?.spotResolveMiss(key);
555
553
  return undefined;
556
554
  }
@@ -577,16 +575,13 @@ export class ZLinkStoreLocationResolvers implements
577
575
  expectedLifecycleGeneration?: bigint,
578
576
  signal?: AbortSignal
579
577
  ): Promise<ZLinkFrameworkRuntimeState | undefined> {
580
- const descriptor = (await this.options.stores.locationStore.listMeshNodes(
581
- meshName,
582
- undefined,
583
- signal
584
- )).items.find((candidate) =>
585
- routingIdsEqual(candidate.rid, nodeRid)
586
- && (
587
- expectedLifecycleGeneration === undefined
588
- || candidate.lifecycleGeneration === expectedLifecycleGeneration
589
- )
578
+ const descriptor = (
579
+ await this.options.stores.locationStore.listMeshNodes(meshName, undefined, signal)
580
+ ).items.find(
581
+ (candidate) =>
582
+ routingIdsEqual(candidate.rid, nodeRid) &&
583
+ (expectedLifecycleGeneration === undefined ||
584
+ candidate.lifecycleGeneration === expectedLifecycleGeneration)
590
585
  );
591
586
  return descriptor?.state;
592
587
  }
@@ -598,15 +593,17 @@ export class ZLinkStoreLocationResolvers implements
598
593
  const cacheKey = `${key.meshName}\u0000${key.actorId}`;
599
594
  const cached = await this.lane.run(() => this.getCachedCore(this.actorRoutes, cacheKey));
600
595
  if (cached !== undefined) return cached;
601
- const meshNames = key.meshName.length === 0
602
- ? this.options.spotMeshNames ?? []
603
- : [key.meshName];
596
+ const meshNames =
597
+ key.meshName.length === 0 ? (this.options.spotMeshNames ?? []) : [key.meshName];
604
598
  let stored: ZLinkActorLocation | undefined;
605
599
  for (const meshName of meshNames) {
606
- stored = await this.options.stores.actorStore.resolveActor({
607
- meshName,
608
- actorId: key.actorId
609
- }, signal);
600
+ stored = await this.options.stores.actorStore.resolveActor(
601
+ {
602
+ meshName,
603
+ actorId: key.actorId
604
+ },
605
+ signal
606
+ );
610
607
  if (stored !== undefined) break;
611
608
  }
612
609
  const row = await this.liveRows.resolve(
@@ -614,22 +611,24 @@ export class ZLinkStoreLocationResolvers implements
614
611
  (candidate) => candidate.ownerId,
615
612
  signal,
616
613
  (candidate) =>
617
- candidate.actorRef.objectGeneration > 0n
618
- && candidate.ownerNodeGeneration > 0n
619
- && candidate.membershipEpoch > 0n
614
+ candidate.actorRef.objectGeneration > 0n &&
615
+ candidate.ownerNodeGeneration > 0n &&
616
+ candidate.membershipEpoch > 0n
620
617
  );
621
618
  if (row === undefined) {
622
619
  this.options.events?.actorResolveMiss(key);
623
620
  return undefined;
624
621
  }
625
- if (!await this.cacheReady(
626
- this.actorRoutes,
627
- cacheKey,
628
- row,
629
- row.ownerId,
630
- row.leaseGeneration,
631
- signal
632
- )) {
622
+ if (
623
+ !(await this.cacheReady(
624
+ this.actorRoutes,
625
+ cacheKey,
626
+ row,
627
+ row.ownerId,
628
+ row.leaseGeneration,
629
+ signal
630
+ ))
631
+ ) {
633
632
  this.options.events?.actorResolveMiss(key);
634
633
  return undefined;
635
634
  }
@@ -673,9 +672,10 @@ export class ZLinkStoreLocationResolvers implements
673
672
  }
674
673
  for (const [key, cached] of this.actorRoutes) {
675
674
  if (
676
- cached.row.spotId === spotId
677
- && (meshName === undefined || cached.row.meshName === meshName)
678
- ) this.actorRoutes.delete(key);
675
+ cached.row.spotId === spotId &&
676
+ (meshName === undefined || cached.row.meshName === meshName)
677
+ )
678
+ this.actorRoutes.delete(key);
679
679
  }
680
680
  }
681
681
 
@@ -749,45 +749,53 @@ function directActorRouteMatchesFence(
749
749
  route: ZLinkResolvedActorRoute,
750
750
  fence: ZLinkActorRouteInvalidationFence
751
751
  ): boolean {
752
- return route.actorRef.actorId === fence.actorId
753
- && route.actorRef.objectGeneration === fence.objectGeneration
754
- && routingIdsEqual(route.actorRef.nodeRid, fence.targetNodeRid)
755
- && route.ownerNodeGeneration === fence.targetNodeGeneration
756
- && route.authorityOwnerGeneration === fence.authorityOwnerGeneration
757
- && route.ownerLeaseGeneration === fence.ownerLeaseGeneration;
752
+ return (
753
+ route.actorRef.actorId === fence.actorId &&
754
+ route.actorRef.objectGeneration === fence.objectGeneration &&
755
+ routingIdsEqual(route.actorRef.nodeRid, fence.targetNodeRid) &&
756
+ route.ownerNodeGeneration === fence.targetNodeGeneration &&
757
+ route.authorityOwnerGeneration === fence.authorityOwnerGeneration &&
758
+ route.ownerLeaseGeneration === fence.ownerLeaseGeneration
759
+ );
758
760
  }
759
761
 
760
762
  function legacyActorRouteMatchesFence(
761
763
  route: ZLinkActorLocation,
762
764
  fence: ZLinkActorRouteInvalidationFence
763
765
  ): boolean {
764
- return route.actorId === fence.actorId
765
- && route.actorRef.objectGeneration === fence.objectGeneration
766
- && routingIdsEqual(route.actorRef.nodeRid, fence.targetNodeRid)
767
- && route.ownerNodeGeneration === fence.targetNodeGeneration
768
- && route.leaseGeneration === fence.ownerLeaseGeneration;
766
+ return (
767
+ route.actorId === fence.actorId &&
768
+ route.actorRef.objectGeneration === fence.objectGeneration &&
769
+ routingIdsEqual(route.actorRef.nodeRid, fence.targetNodeRid) &&
770
+ route.ownerNodeGeneration === fence.targetNodeGeneration &&
771
+ route.leaseGeneration === fence.ownerLeaseGeneration
772
+ );
769
773
  }
770
774
 
771
775
  function spotRouteMatchesFence(
772
776
  route: ZLinkSpotLocation,
773
777
  fence: ZLinkSpotRouteInvalidationFence
774
778
  ): boolean {
775
- return route.spotId === fence.spotId
776
- && route.spotGeneration === fence.objectGeneration
777
- && routingIdsEqual(route.ownerNodeRid, fence.targetNodeRid)
778
- && route.ownerNodeGeneration === fence.targetNodeGeneration
779
- && route.leaseGeneration === fence.ownerLeaseGeneration;
779
+ return (
780
+ route.spotId === fence.spotId &&
781
+ route.spotGeneration === fence.objectGeneration &&
782
+ routingIdsEqual(route.ownerNodeRid, fence.targetNodeRid) &&
783
+ route.ownerNodeGeneration === fence.targetNodeGeneration &&
784
+ route.leaseGeneration === fence.ownerLeaseGeneration
785
+ );
780
786
  }
781
787
 
782
788
  function actorEnclosingSpotMatchesFence(
783
789
  route: ZLinkActorLocation,
784
790
  fence: ZLinkSpotRouteInvalidationFence
785
791
  ): boolean {
786
- return route.spotId === fence.spotId
787
- && route.spotGeneration === fence.objectGeneration
788
- && routingIdsEqual(route.ownerNodeRid, fence.targetNodeRid)
789
- && route.ownerNodeGeneration === fence.targetNodeGeneration
790
- && route.leaseGeneration === fence.ownerLeaseGeneration;
792
+ return (
793
+ route.spotId === fence.spotId &&
794
+ route.spotGeneration === fence.objectGeneration &&
795
+ routingIdsEqual(route.ownerNodeRid, fence.targetNodeRid) &&
796
+ route.ownerNodeGeneration === fence.targetNodeGeneration &&
797
+ route.leaseGeneration === fence.ownerLeaseGeneration
798
+ );
791
799
  }
792
800
 
793
801
  function resolvedActorEnclosingSpotMatchesFence(
@@ -795,13 +803,15 @@ function resolvedActorEnclosingSpotMatchesFence(
795
803
  fence: ZLinkSpotRouteInvalidationFence
796
804
  ): boolean {
797
805
  const enclosing = route.enclosingSpotRoute;
798
- return enclosing !== undefined
799
- && enclosing.spotId === fence.spotId
800
- && enclosing.targetSpotGeneration === fence.objectGeneration
801
- && routingIdsEqual(enclosing.targetNodeRid, fence.targetNodeRid)
802
- && enclosing.targetNodeGeneration === fence.targetNodeGeneration
803
- && enclosing.authorityOwnerGeneration === fence.authorityOwnerGeneration
804
- && enclosing.ownerLeaseGeneration === fence.ownerLeaseGeneration;
806
+ return (
807
+ enclosing !== undefined &&
808
+ enclosing.spotId === fence.spotId &&
809
+ enclosing.targetSpotGeneration === fence.objectGeneration &&
810
+ routingIdsEqual(enclosing.targetNodeRid, fence.targetNodeRid) &&
811
+ enclosing.targetNodeGeneration === fence.targetNodeGeneration &&
812
+ enclosing.authorityOwnerGeneration === fence.authorityOwnerGeneration &&
813
+ enclosing.ownerLeaseGeneration === fence.ownerLeaseGeneration
814
+ );
805
815
  }
806
816
 
807
817
  export class DefaultZLinkLocationReadiness implements ZLinkLocationReadiness {
@@ -815,11 +825,15 @@ export class DefaultZLinkLocationReadiness implements ZLinkLocationReadiness {
815
825
  ): Promise<boolean> {
816
826
  try {
817
827
  void role;
818
- const page = await this.query.listTopology({
819
- meshName,
820
- nodeRid,
821
- state: ZLinkLocationTopologyState.Ready
822
- }, undefined, signal);
828
+ const page = await this.query.listTopology(
829
+ {
830
+ meshName,
831
+ nodeRid,
832
+ state: ZLinkLocationTopologyState.Ready
833
+ },
834
+ undefined,
835
+ signal
836
+ );
823
837
  return page.items.length > 0;
824
838
  } catch {
825
839
  return false;
@@ -914,26 +928,27 @@ export class ZLinkAuthoritySpotRouteResolver implements ZLinkSpotRouteResolver {
914
928
  try {
915
929
  if (prepared.cached !== undefined) return prepared.cached;
916
930
 
917
- const current = await this.store.readAuthority(
918
- encodeAuthorityKey('user_spot', key),
919
- signal
920
- );
931
+ const current = await this.store.readAuthority(encodeAuthorityKey('user_spot', key), signal);
921
932
  if (current.kind === 'snapshot' && current.allocation.state === 'active') {
922
933
  const decoded = decodeServiceReadySpotAuthority(
923
934
  serviceRelocationAuthorityApplicationPayload(current.payload)
924
935
  );
925
936
  if (
926
- decoded !== undefined
927
- && decoded.spotId === String(spotId)
928
- && decoded.ownerId === current.ownerId
929
- && decoded.ownerLeaseGeneration === current.ownerLeaseGeneration
937
+ decoded !== undefined &&
938
+ decoded.spotId === String(spotId) &&
939
+ decoded.ownerId === current.ownerId &&
940
+ decoded.ownerLeaseGeneration === current.ownerLeaseGeneration
930
941
  ) {
931
- const remainingLeaseMs = this.leaseTracker === undefined
932
- ? undefined
933
- : await this.leaseTracker.remainingOwnerTokenLeaseMs({
934
- ownerId: current.ownerId,
935
- leaseGeneration: current.ownerLeaseGeneration
936
- }, signal);
942
+ const remainingLeaseMs =
943
+ this.leaseTracker === undefined
944
+ ? undefined
945
+ : await this.leaseTracker.remainingOwnerTokenLeaseMs(
946
+ {
947
+ ownerId: current.ownerId,
948
+ leaseGeneration: current.ownerLeaseGeneration
949
+ },
950
+ signal
951
+ );
937
952
  if (remainingLeaseMs !== undefined && remainingLeaseMs <= 0) {
938
953
  throw new ZLinkFrameworkException(
939
954
  ZLinkFrameworkErrorKind.Unavailable,
@@ -944,9 +959,8 @@ export class ZLinkAuthoritySpotRouteResolver implements ZLinkSpotRouteResolver {
944
959
  routerChannelId: this.routerChannelIdForMesh(decoded.ownerMeshName),
945
960
  targetNodeRid: decoded.ownerNodeRid,
946
961
  spotId,
947
- spotKind: decoded.kind === 'instance_spot'
948
- ? ZLinkSpotKind.Instance
949
- : ZLinkSpotKind.User,
962
+ spotKind:
963
+ decoded.kind === 'instance_spot' ? ZLinkSpotKind.Instance : ZLinkSpotKind.User,
950
964
  stableType: decoded.stableType,
951
965
  targetSpotGeneration: current.objectGeneration,
952
966
  targetNodeGeneration: current.allocation.descriptorLifecycleGeneration,
@@ -961,9 +975,15 @@ export class ZLinkAuthoritySpotRouteResolver implements ZLinkSpotRouteResolver {
961
975
  signal
962
976
  )
963
977
  };
964
- await this.lane.run(() => this.cacheResolutionCore(
965
- key, prepared.epoch, target, remainingLeaseMs, current.storeVersion.value
966
- ));
978
+ await this.lane.run(() =>
979
+ this.cacheResolutionCore(
980
+ key,
981
+ prepared.epoch,
982
+ target,
983
+ remainingLeaseMs,
984
+ current.storeVersion.value
985
+ )
986
+ );
967
987
  return target;
968
988
  }
969
989
  }
@@ -1001,7 +1021,10 @@ export class ZLinkAuthoritySpotRouteResolver implements ZLinkSpotRouteResolver {
1001
1021
  }
1002
1022
  }
1003
1023
 
1004
- private beginResolutionCore(key: string): { readonly epoch: number; readonly cached?: ZLinkSpotRouteTarget } {
1024
+ private beginResolutionCore(key: string): {
1025
+ readonly epoch: number;
1026
+ readonly cached?: ZLinkSpotRouteTarget;
1027
+ } {
1005
1028
  const epoch = this.currentEpochCore(key);
1006
1029
  this.routeEpochs.set(key, epoch);
1007
1030
  this.activeResolutions.set(key, (this.activeResolutions.get(key) ?? 0) + 1);