@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
@@ -8,8 +8,8 @@ function opaqueRecordPreimage(record, ...segments) {
8
8
  return [record, ...segments].join('\0');
9
9
  }
10
10
  function creationTerminalPreimage(operation) {
11
- return opaqueRecordPreimage('creation-terminal', routingIdHexSegment(operation.sourceNodeRid), operation.sourceNodeGeneration.toString(), operation.operationId.high.toString(16).padStart(16, '0')
12
- + operation.operationId.low.toString(16).padStart(16, '0'));
11
+ return opaqueRecordPreimage('creation-terminal', routingIdHexSegment(operation.sourceNodeRid), operation.sourceNodeGeneration.toString(), operation.operationId.high.toString(16).padStart(16, '0') +
12
+ operation.operationId.low.toString(16).padStart(16, '0'));
13
13
  }
14
14
  function routingIdHexSegment(routingId) {
15
15
  return (0, routing_id_1.encodeRoutingIdStorageHex)(routingId).toLowerCase();
@@ -23,15 +23,15 @@ const diagnostics_1 = require("../diagnostics");
23
23
  function projectCanonicalActorRoute(snapshot, actorId) {
24
24
  const { allocation } = snapshot;
25
25
  const nodeRid = allocation.descriptor.rid;
26
- if (allocation.objectKind !== 'actor'
27
- || allocation.state !== 'active'
28
- || snapshot.objectGeneration <= 0n
29
- || snapshot.ownerLeaseGeneration <= 0n
30
- || actorId.length === 0
31
- || allocation.stableType.length === 0
32
- || allocation.descriptor.meshName.length === 0
33
- || String(nodeRid).length === 0
34
- || allocation.descriptorLifecycleGeneration <= 0n)
26
+ if (allocation.objectKind !== 'actor' ||
27
+ allocation.state !== 'active' ||
28
+ snapshot.objectGeneration <= 0n ||
29
+ snapshot.ownerLeaseGeneration <= 0n ||
30
+ actorId.length === 0 ||
31
+ allocation.stableType.length === 0 ||
32
+ allocation.descriptor.meshName.length === 0 ||
33
+ String(nodeRid).length === 0 ||
34
+ allocation.descriptorLifecycleGeneration <= 0n)
35
35
  return undefined;
36
36
  return {
37
37
  meshName: allocation.descriptor.meshName,
@@ -67,17 +67,18 @@ class ZLinkStoreLocationResolvers {
67
67
  }
68
68
  async listLivePeers(filter, signal) {
69
69
  const rows = await this.options.stores.peerStore.listPeers(filter, signal);
70
- return await this.liveRows.filter(rows, (row) => row.ownerId, signal, (row) => (0, canonical_codec_1.isKnownZLinkLocationAutoConnectType)(row.autoConnectType) && (0, canonical_codec_1.isKnownZLinkLocationRole)(row.role));
70
+ return await this.liveRows.filter(rows, (row) => row.ownerId, signal, (row) => (0, canonical_codec_1.isKnownZLinkLocationAutoConnectType)(row.autoConnectType) &&
71
+ (0, canonical_codec_1.isKnownZLinkLocationRole)(row.role));
71
72
  }
72
73
  async resolveEntrySpotNode(spotId, meshNames, signal) {
73
74
  for (const meshName of meshNames) {
74
75
  const descriptors = await this.liveRows.filter((await this.options.stores.locationStore.listMeshNodes(meshName, undefined, signal)).items, (descriptor) => descriptor.ownerId, signal);
75
- const descriptor = descriptors.find((candidate) => candidate.entrySpotId === spotId
76
- && candidate.objectRole === internal_location_contracts_1.ZLinkObjectRole.Server
76
+ const descriptor = descriptors.find((candidate) => candidate.entrySpotId === spotId &&
77
+ candidate.objectRole === internal_location_contracts_1.ZLinkObjectRole.Server &&
77
78
  // An Entry Spot accepts new joins only while its owning node is Serving.
78
79
  // Preparing/retiring/error rows may still be visible during replacement,
79
80
  // but routing them would turn a valid transfer into NotConnected.
80
- && candidate.state === internal_location_contracts_1.ZLinkFrameworkRuntimeState.Serving);
81
+ candidate.state === internal_location_contracts_1.ZLinkFrameworkRuntimeState.Serving);
81
82
  if (descriptor !== undefined) {
82
83
  return {
83
84
  meshName,
@@ -96,13 +97,13 @@ class ZLinkStoreLocationResolvers {
96
97
  const liveDescriptors = await this.liveRows.filter(descriptors, (descriptor) => descriptor.ownerId, signal);
97
98
  const candidates = liveDescriptors.filter((descriptor) => {
98
99
  const capacity = descriptor.populationCapacity.actors;
99
- return descriptor.state === internal_location_contracts_1.ZLinkFrameworkRuntimeState.Serving
100
- && descriptor.objectRole === internal_location_contracts_1.ZLinkObjectRole.Server
101
- && descriptor.placementWeight > 0
102
- && !(0, routing_id_1.routingIdsEqual)(descriptor.rid, excludedNodeRid)
103
- && !excludedCandidateRids.has(String(descriptor.rid))
104
- && capacity.active + capacity.reserved < capacity.limit
105
- && descriptor.objectCapabilities.some((candidate) => candidate.objectKind === 'actor' && candidate.stableType === actorType);
100
+ return (descriptor.state === internal_location_contracts_1.ZLinkFrameworkRuntimeState.Serving &&
101
+ descriptor.objectRole === internal_location_contracts_1.ZLinkObjectRole.Server &&
102
+ descriptor.placementWeight > 0 &&
103
+ !(0, routing_id_1.routingIdsEqual)(descriptor.rid, excludedNodeRid) &&
104
+ !excludedCandidateRids.has(String(descriptor.rid)) &&
105
+ capacity.active + capacity.reserved < capacity.limit &&
106
+ descriptor.objectCapabilities.some((candidate) => candidate.objectKind === 'actor' && candidate.stableType === actorType));
106
107
  });
107
108
  if (candidates.length === 0)
108
109
  return undefined;
@@ -162,9 +163,7 @@ class ZLinkStoreLocationResolvers {
162
163
  if (row === undefined) {
163
164
  return undefined;
164
165
  }
165
- const spotId = row.spotKind === Spots_1.ZLinkSpotKind.Entry
166
- ? row.ownerNodeRid
167
- : row.spotId;
166
+ const spotId = row.spotKind === Spots_1.ZLinkSpotKind.Entry ? row.ownerNodeRid : row.spotId;
168
167
  return {
169
168
  meshName: row.meshName,
170
169
  nodeRid: String(row.ownerNodeRid),
@@ -221,13 +220,11 @@ class ZLinkStoreLocationResolvers {
221
220
  });
222
221
  return unavailable;
223
222
  }
224
- if (decoded === undefined
225
- || decoded.actor.actorId !== actorId
226
- || decoded.actor.objectGeneration !== current.objectGeneration) {
223
+ if (decoded === undefined ||
224
+ decoded.actor.actorId !== actorId ||
225
+ decoded.actor.objectGeneration !== current.objectGeneration) {
227
226
  const route = await this.cacheDirectActorRoute(actorId, projectCanonicalActorRoute(current, actorId), remainingLeaseMs);
228
- return route === undefined
229
- ? { kind: 'missing' }
230
- : { kind: 'ready', route };
227
+ return route === undefined ? { kind: 'missing' } : { kind: 'ready', route };
231
228
  }
232
229
  let enclosingSpotRoute;
233
230
  if (decoded.spotKind === Spots_1.ZLinkSpotKind.User) {
@@ -235,8 +232,8 @@ class ZLinkStoreLocationResolvers {
235
232
  enclosingSpotRoute = await this.authoritySpotResolver.resolve(decoded.spotId, signal);
236
233
  }
237
234
  catch (error) {
238
- if (error instanceof Errors_1.ZLinkFrameworkException
239
- && (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotRouteNotFound) {
235
+ if (error instanceof Errors_1.ZLinkFrameworkException &&
236
+ (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotRouteNotFound) {
240
237
  return { kind: 'missing' };
241
238
  }
242
239
  throw error;
@@ -261,9 +258,7 @@ class ZLinkStoreLocationResolvers {
261
258
  enclosingSpotRoute
262
259
  };
263
260
  const cachedRoute = await this.cacheDirectActorRoute(actorId, route, remainingLeaseMs);
264
- return cachedRoute === undefined
265
- ? { kind: 'missing' }
266
- : { kind: 'ready', route: cachedRoute };
261
+ return cachedRoute === undefined ? { kind: 'missing' } : { kind: 'ready', route: cachedRoute };
267
262
  }
268
263
  async cacheDirectActorRoute(actorId, route, remainingLeaseMs) {
269
264
  return await this.lane.run(() => {
@@ -302,7 +297,7 @@ class ZLinkStoreLocationResolvers {
302
297
  this.options.events?.spotResolveMiss(key);
303
298
  return undefined;
304
299
  }
305
- if (!await this.cacheReady(this.spotRoutes, cacheKey, row, row.ownerId, row.leaseGeneration, signal)) {
300
+ if (!(await this.cacheReady(this.spotRoutes, cacheKey, row, row.ownerId, row.leaseGeneration, signal))) {
306
301
  this.options.events?.spotResolveMiss(key);
307
302
  return undefined;
308
303
  }
@@ -318,9 +313,9 @@ class ZLinkStoreLocationResolvers {
318
313
  return undefined;
319
314
  }
320
315
  async resolveMeshNodeState(meshName, nodeRid, expectedLifecycleGeneration, signal) {
321
- const descriptor = (await this.options.stores.locationStore.listMeshNodes(meshName, undefined, signal)).items.find((candidate) => (0, routing_id_1.routingIdsEqual)(candidate.rid, nodeRid)
322
- && (expectedLifecycleGeneration === undefined
323
- || candidate.lifecycleGeneration === expectedLifecycleGeneration));
316
+ const descriptor = (await this.options.stores.locationStore.listMeshNodes(meshName, undefined, signal)).items.find((candidate) => (0, routing_id_1.routingIdsEqual)(candidate.rid, nodeRid) &&
317
+ (expectedLifecycleGeneration === undefined ||
318
+ candidate.lifecycleGeneration === expectedLifecycleGeneration));
324
319
  return descriptor?.state;
325
320
  }
326
321
  async resolveActorRow(key, signal) {
@@ -328,9 +323,7 @@ class ZLinkStoreLocationResolvers {
328
323
  const cached = await this.lane.run(() => this.getCachedCore(this.actorRoutes, cacheKey));
329
324
  if (cached !== undefined)
330
325
  return cached;
331
- const meshNames = key.meshName.length === 0
332
- ? this.options.spotMeshNames ?? []
333
- : [key.meshName];
326
+ const meshNames = key.meshName.length === 0 ? (this.options.spotMeshNames ?? []) : [key.meshName];
334
327
  let stored;
335
328
  for (const meshName of meshNames) {
336
329
  stored = await this.options.stores.actorStore.resolveActor({
@@ -340,14 +333,14 @@ class ZLinkStoreLocationResolvers {
340
333
  if (stored !== undefined)
341
334
  break;
342
335
  }
343
- const row = await this.liveRows.resolve(stored, (candidate) => candidate.ownerId, signal, (candidate) => candidate.actorRef.objectGeneration > 0n
344
- && candidate.ownerNodeGeneration > 0n
345
- && candidate.membershipEpoch > 0n);
336
+ const row = await this.liveRows.resolve(stored, (candidate) => candidate.ownerId, signal, (candidate) => candidate.actorRef.objectGeneration > 0n &&
337
+ candidate.ownerNodeGeneration > 0n &&
338
+ candidate.membershipEpoch > 0n);
346
339
  if (row === undefined) {
347
340
  this.options.events?.actorResolveMiss(key);
348
341
  return undefined;
349
342
  }
350
- if (!await this.cacheReady(this.actorRoutes, cacheKey, row, row.ownerId, row.leaseGeneration, signal)) {
343
+ if (!(await this.cacheReady(this.actorRoutes, cacheKey, row, row.ownerId, row.leaseGeneration, signal))) {
351
344
  this.options.events?.actorResolveMiss(key);
352
345
  return undefined;
353
346
  }
@@ -390,8 +383,8 @@ class ZLinkStoreLocationResolvers {
390
383
  }
391
384
  }
392
385
  for (const [key, cached] of this.actorRoutes) {
393
- if (cached.row.spotId === spotId
394
- && (meshName === undefined || cached.row.meshName === meshName))
386
+ if (cached.row.spotId === spotId &&
387
+ (meshName === undefined || cached.row.meshName === meshName))
395
388
  this.actorRoutes.delete(key);
396
389
  }
397
390
  }
@@ -450,43 +443,43 @@ class ZLinkStoreLocationResolvers {
450
443
  }
451
444
  exports.ZLinkStoreLocationResolvers = ZLinkStoreLocationResolvers;
452
445
  function directActorRouteMatchesFence(route, fence) {
453
- return route.actorRef.actorId === fence.actorId
454
- && route.actorRef.objectGeneration === fence.objectGeneration
455
- && (0, routing_id_1.routingIdsEqual)(route.actorRef.nodeRid, fence.targetNodeRid)
456
- && route.ownerNodeGeneration === fence.targetNodeGeneration
457
- && route.authorityOwnerGeneration === fence.authorityOwnerGeneration
458
- && route.ownerLeaseGeneration === fence.ownerLeaseGeneration;
446
+ return (route.actorRef.actorId === fence.actorId &&
447
+ route.actorRef.objectGeneration === fence.objectGeneration &&
448
+ (0, routing_id_1.routingIdsEqual)(route.actorRef.nodeRid, fence.targetNodeRid) &&
449
+ route.ownerNodeGeneration === fence.targetNodeGeneration &&
450
+ route.authorityOwnerGeneration === fence.authorityOwnerGeneration &&
451
+ route.ownerLeaseGeneration === fence.ownerLeaseGeneration);
459
452
  }
460
453
  function legacyActorRouteMatchesFence(route, fence) {
461
- return route.actorId === fence.actorId
462
- && route.actorRef.objectGeneration === fence.objectGeneration
463
- && (0, routing_id_1.routingIdsEqual)(route.actorRef.nodeRid, fence.targetNodeRid)
464
- && route.ownerNodeGeneration === fence.targetNodeGeneration
465
- && route.leaseGeneration === fence.ownerLeaseGeneration;
454
+ return (route.actorId === fence.actorId &&
455
+ route.actorRef.objectGeneration === fence.objectGeneration &&
456
+ (0, routing_id_1.routingIdsEqual)(route.actorRef.nodeRid, fence.targetNodeRid) &&
457
+ route.ownerNodeGeneration === fence.targetNodeGeneration &&
458
+ route.leaseGeneration === fence.ownerLeaseGeneration);
466
459
  }
467
460
  function spotRouteMatchesFence(route, fence) {
468
- return route.spotId === fence.spotId
469
- && route.spotGeneration === fence.objectGeneration
470
- && (0, routing_id_1.routingIdsEqual)(route.ownerNodeRid, fence.targetNodeRid)
471
- && route.ownerNodeGeneration === fence.targetNodeGeneration
472
- && route.leaseGeneration === fence.ownerLeaseGeneration;
461
+ return (route.spotId === fence.spotId &&
462
+ route.spotGeneration === fence.objectGeneration &&
463
+ (0, routing_id_1.routingIdsEqual)(route.ownerNodeRid, fence.targetNodeRid) &&
464
+ route.ownerNodeGeneration === fence.targetNodeGeneration &&
465
+ route.leaseGeneration === fence.ownerLeaseGeneration);
473
466
  }
474
467
  function actorEnclosingSpotMatchesFence(route, fence) {
475
- return route.spotId === fence.spotId
476
- && route.spotGeneration === fence.objectGeneration
477
- && (0, routing_id_1.routingIdsEqual)(route.ownerNodeRid, fence.targetNodeRid)
478
- && route.ownerNodeGeneration === fence.targetNodeGeneration
479
- && route.leaseGeneration === fence.ownerLeaseGeneration;
468
+ return (route.spotId === fence.spotId &&
469
+ route.spotGeneration === fence.objectGeneration &&
470
+ (0, routing_id_1.routingIdsEqual)(route.ownerNodeRid, fence.targetNodeRid) &&
471
+ route.ownerNodeGeneration === fence.targetNodeGeneration &&
472
+ route.leaseGeneration === fence.ownerLeaseGeneration);
480
473
  }
481
474
  function resolvedActorEnclosingSpotMatchesFence(route, fence) {
482
475
  const enclosing = route.enclosingSpotRoute;
483
- return enclosing !== undefined
484
- && enclosing.spotId === fence.spotId
485
- && enclosing.targetSpotGeneration === fence.objectGeneration
486
- && (0, routing_id_1.routingIdsEqual)(enclosing.targetNodeRid, fence.targetNodeRid)
487
- && enclosing.targetNodeGeneration === fence.targetNodeGeneration
488
- && enclosing.authorityOwnerGeneration === fence.authorityOwnerGeneration
489
- && enclosing.ownerLeaseGeneration === fence.ownerLeaseGeneration;
476
+ return (enclosing !== undefined &&
477
+ enclosing.spotId === fence.spotId &&
478
+ enclosing.targetSpotGeneration === fence.objectGeneration &&
479
+ (0, routing_id_1.routingIdsEqual)(enclosing.targetNodeRid, fence.targetNodeRid) &&
480
+ enclosing.targetNodeGeneration === fence.targetNodeGeneration &&
481
+ enclosing.authorityOwnerGeneration === fence.authorityOwnerGeneration &&
482
+ enclosing.ownerLeaseGeneration === fence.ownerLeaseGeneration);
490
483
  }
491
484
  class DefaultZLinkLocationReadiness {
492
485
  query;
@@ -590,10 +583,10 @@ class ZLinkAuthoritySpotRouteResolver {
590
583
  const current = await this.store.readAuthority((0, authority_key_codec_1.encodeAuthorityKey)('user_spot', key), signal);
591
584
  if (current.kind === 'snapshot' && current.allocation.state === 'active') {
592
585
  const decoded = (0, service_authority_payload_codec_1.decodeServiceReadySpotAuthority)((0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(current.payload));
593
- if (decoded !== undefined
594
- && decoded.spotId === String(spotId)
595
- && decoded.ownerId === current.ownerId
596
- && decoded.ownerLeaseGeneration === current.ownerLeaseGeneration) {
586
+ if (decoded !== undefined &&
587
+ decoded.spotId === String(spotId) &&
588
+ decoded.ownerId === current.ownerId &&
589
+ decoded.ownerLeaseGeneration === current.ownerLeaseGeneration) {
597
590
  const remainingLeaseMs = this.leaseTracker === undefined
598
591
  ? undefined
599
592
  : await this.leaseTracker.remainingOwnerTokenLeaseMs({
@@ -607,9 +600,7 @@ class ZLinkAuthoritySpotRouteResolver {
607
600
  routerChannelId: this.routerChannelIdForMesh(decoded.ownerMeshName),
608
601
  targetNodeRid: decoded.ownerNodeRid,
609
602
  spotId,
610
- spotKind: decoded.kind === 'instance_spot'
611
- ? Spots_1.ZLinkSpotKind.Instance
612
- : Spots_1.ZLinkSpotKind.User,
603
+ spotKind: decoded.kind === 'instance_spot' ? Spots_1.ZLinkSpotKind.Instance : Spots_1.ZLinkSpotKind.User,
613
604
  stableType: decoded.stableType,
614
605
  targetSpotGeneration: current.objectGeneration,
615
606
  targetNodeGeneration: current.allocation.descriptorLifecycleGeneration,
@@ -55,9 +55,9 @@ class ZLinkLocationRuntime {
55
55
  ownerLeaseRenewedAt;
56
56
  lastError;
57
57
  get ownerLeaseUsable() {
58
- return this.ownerToken !== undefined
59
- && this.ownerLeaseDeadlineMs !== undefined
60
- && this.monotonicNowMs() < this.ownerLeaseDeadlineMs;
58
+ return (this.ownerToken !== undefined &&
59
+ this.ownerLeaseDeadlineMs !== undefined &&
60
+ this.monotonicNowMs() < this.ownerLeaseDeadlineMs);
61
61
  }
62
62
  constructor(runtimeOptions) {
63
63
  this.stores = runtimeOptions.stores;
@@ -66,16 +66,20 @@ class ZLinkLocationRuntime {
66
66
  this.events = runtimeOptions.events;
67
67
  this.metrics = runtimeOptions.metrics;
68
68
  this.meshNames = [...new Set(runtimeOptions.meshNames ?? [])];
69
- this.leaseScopes = runtimeOptions.leaseScopes ?? this.meshNames.map(name => ({ kind: 'mesh', name }));
69
+ this.leaseScopes =
70
+ runtimeOptions.leaseScopes ?? this.meshNames.map((name) => ({ kind: 'mesh', name }));
70
71
  this.rewriteAuthorityPayloadForOwner = runtimeOptions.rewriteAuthorityPayloadForOwner;
71
72
  this.monotonicNowMs = runtimeOptions.monotonicNowMs ?? (() => performance.now());
72
- this.setTimer = runtimeOptions.setTimer ?? ((callback, delayMs) => setTimeout(callback, delayMs));
73
- this.clearTimer = runtimeOptions.clearTimer ?? ((handle) => clearTimeout(handle));
74
- const leaseTracker = runtimeOptions.leaseTracker ?? new lease_tracker_1.ZLinkOwnerLeaseTracker({
75
- store: this.stores.ownerLeaseStore,
76
- options: this.options,
77
- monotonicNowMs: this.monotonicNowMs
78
- });
73
+ this.setTimer =
74
+ runtimeOptions.setTimer ?? ((callback, delayMs) => setTimeout(callback, delayMs));
75
+ this.clearTimer =
76
+ runtimeOptions.clearTimer ?? ((handle) => clearTimeout(handle));
77
+ const leaseTracker = runtimeOptions.leaseTracker ??
78
+ new lease_tracker_1.ZLinkOwnerLeaseTracker({
79
+ store: this.stores.ownerLeaseStore,
80
+ options: this.options,
81
+ monotonicNowMs: this.monotonicNowMs
82
+ });
79
83
  this.liveRows = new lease_tracker_1.ZLinkLiveRowFilter(leaseTracker);
80
84
  }
81
85
  get isStarted() {
@@ -100,8 +104,8 @@ class ZLinkLocationRuntime {
100
104
  const failures = [];
101
105
  for (const entry of entries) {
102
106
  const snapshot = entry.snapshot;
103
- if (snapshot.ownerId !== owner.ownerId
104
- || snapshot.ownerLeaseGeneration === owner.leaseGeneration) {
107
+ if (snapshot.ownerId !== owner.ownerId ||
108
+ snapshot.ownerLeaseGeneration === owner.leaseGeneration) {
105
109
  continue;
106
110
  }
107
111
  try {
@@ -112,16 +116,15 @@ class ZLinkLocationRuntime {
112
116
  leaseGeneration: snapshot.ownerLeaseGeneration
113
117
  },
114
118
  targetOwner: owner,
115
- payload: Buffer.from(this.rewriteAuthorityPayloadForOwner?.(snapshot.payload, owner)
116
- ?? snapshot.payload)
119
+ payload: Buffer.from(this.rewriteAuthorityPayloadForOwner?.(snapshot.payload, owner) ?? snapshot.payload)
117
120
  }, signal);
118
121
  if (result.kind === 'stored')
119
122
  continue;
120
123
  if (result.kind === 'conflict') {
121
124
  const current = result.current;
122
- if (current.kind === 'snapshot'
123
- && current.ownerId === owner.ownerId
124
- && current.ownerLeaseGeneration === owner.leaseGeneration) {
125
+ if (current.kind === 'snapshot' &&
126
+ current.ownerId === owner.ownerId &&
127
+ current.ownerLeaseGeneration === owner.leaseGeneration) {
125
128
  continue;
126
129
  }
127
130
  continue;
@@ -213,7 +216,8 @@ class ZLinkLocationRuntime {
213
216
  return;
214
217
  }
215
218
  try {
216
- const owner = this.ownerToken ?? this.lastOwnerToken ?? {
219
+ const owner = this.ownerToken ??
220
+ this.lastOwnerToken ?? {
217
221
  ownerId: this.ownerId,
218
222
  leaseGeneration: 0n
219
223
  };
@@ -306,7 +310,7 @@ class ZLinkLocationRuntime {
306
310
  // stop() may have completed while the Store claim was in flight. Do
307
311
  // not install a token into a stopped runtime or leave an orphan lease.
308
312
  try {
309
- await withTimeout(releaseSignal => this.stores.ownerLeaseStore.releaseOwnerLease(claim.token, releaseSignal), remainingTimeoutMs(timeoutDeadline));
313
+ await withTimeout((releaseSignal) => this.stores.ownerLeaseStore.releaseOwnerLease(claim.token, releaseSignal), remainingTimeoutMs(timeoutDeadline));
310
314
  }
311
315
  catch (error) {
312
316
  this.recordFailure(errorMessage(error), 'owner_lease_release');
@@ -353,7 +357,7 @@ class ZLinkLocationRuntime {
353
357
  if (claim.kind !== 'conflict')
354
358
  return claim;
355
359
  const conflict = new ZLinkOwnerLeaseClaimError(claim.kind);
356
- return await this.confirmOwnerLease(conflict, timeoutDeadline, signal) ?? claim;
360
+ return (await this.confirmOwnerLease(conflict, timeoutDeadline, signal)) ?? claim;
357
361
  }
358
362
  async confirmOwnerLease(originalError, timeoutDeadline, signal) {
359
363
  const confirmationTimeoutMs = remainingTimeoutMs(timeoutDeadline);
@@ -361,7 +365,7 @@ class ZLinkLocationRuntime {
361
365
  throw originalError;
362
366
  let confirmed;
363
367
  try {
364
- confirmed = await withTimeout(readSignal => this.stores.ownerLeaseStore.readOwnerLease(this.ownerId, readSignal), confirmationTimeoutMs);
368
+ confirmed = await withTimeout((readSignal) => this.stores.ownerLeaseStore.readOwnerLease(this.ownerId, readSignal), confirmationTimeoutMs);
365
369
  }
366
370
  catch (confirmationError) {
367
371
  this.recordFailure(errorMessage(confirmationError), 'owner_lease_claim_confirmation');
@@ -372,7 +376,7 @@ class ZLinkLocationRuntime {
372
376
  }
373
377
  if (signal?.aborted === true) {
374
378
  try {
375
- await withTimeout(releaseSignal => this.stores.ownerLeaseStore.releaseOwnerLease(confirmed.token, releaseSignal), remainingTimeoutMs(timeoutDeadline));
379
+ await withTimeout((releaseSignal) => this.stores.ownerLeaseStore.releaseOwnerLease(confirmed.token, releaseSignal), remainingTimeoutMs(timeoutDeadline));
376
380
  }
377
381
  catch (releaseError) {
378
382
  this.recordFailure(errorMessage(releaseError), 'owner_lease_release');
@@ -392,7 +396,9 @@ class ZLinkLocationRuntime {
392
396
  // The Store's remaining TTL is measured at an unknown point during the
393
397
  // request. Subtract the full observed round trip and the fencing margin
394
398
  // so local eligibility cannot outlive the conservative pre-request bound.
395
- this.ownerLeaseDeadlineMs = requestCompletedAtMs + Math.max(0, remainingTtlMs - roundTripMs - this.options.ownerLeaseFencingMarginMs);
399
+ this.ownerLeaseDeadlineMs =
400
+ requestCompletedAtMs +
401
+ Math.max(0, remainingTtlMs - roundTripMs - this.options.ownerLeaseFencingMarginMs);
396
402
  }
397
403
  async publishDraining(signal) {
398
404
  try {
@@ -427,9 +433,9 @@ class ZLinkLocationRuntime {
427
433
  updatedAt: new Date()
428
434
  };
429
435
  let result = await this.guardWrite(() => this.stores.locationStore.updateMeshNode(stamped, intent, signal));
430
- if (intent === internal_location_contracts_1.ZLinkLocationWriteIntent.Renew
431
- && (result.status === internal_location_contracts_1.ZLinkLocationWriteStatus.RejectedConflict
432
- || result.status === internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale)) {
436
+ if (intent === internal_location_contracts_1.ZLinkLocationWriteIntent.Renew &&
437
+ (result.status === internal_location_contracts_1.ZLinkLocationWriteStatus.RejectedConflict ||
438
+ result.status === internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale)) {
433
439
  // A Store restart can remove the descriptor while retaining the
434
440
  // in-process owner token. Renew cannot recreate an absent row, so use
435
441
  // NewClaim as a bounded fallback. If another owner has recreated the
@@ -499,7 +505,11 @@ class ZLinkLocationRuntime {
499
505
  const result = await this.guardWrite(() => this.stores.routeStore.updateRoute(stamped, intent, signal));
500
506
  const key = { routeKind: route.routeKind, routeKey: route.routeKey };
501
507
  if (result.status === internal_location_contracts_1.ZLinkLocationWriteStatus.Stored) {
502
- this.events?.routeRowUpdated(key, { ...stamped, generation: result.generation, updatedAt: result.updatedAt });
508
+ this.events?.routeRowUpdated(key, {
509
+ ...stamped,
510
+ generation: result.generation,
511
+ updatedAt: result.updatedAt
512
+ });
503
513
  }
504
514
  this.notifyIfStale(result, internal_location_contracts_1.ZLinkLocationKind.Route, key_codec_1.ZLinkLocationKeyCodec.encodeRouteKey(key));
505
515
  return result;
@@ -598,9 +608,7 @@ class ZLinkLocationRuntime {
598
608
  const normalizedPage = this.pageRequest(page);
599
609
  const pageSize = normalizedPage.pageSize ?? this.options.listPageSize;
600
610
  const requestedCursor = normalizedPage.continuationToken;
601
- let cursor = requestedCursor === undefined
602
- ? undefined
603
- : Authority_1.ZLinkAuthorityScanCursor.from(requestedCursor);
611
+ let cursor = requestedCursor === undefined ? undefined : Authority_1.ZLinkAuthorityScanCursor.from(requestedCursor);
604
612
  const items = [];
605
613
  for (;;) {
606
614
  // Keep the Store cursor at the public page boundary. Scanning 1000 rows
@@ -612,11 +620,11 @@ class ZLinkLocationRuntime {
612
620
  for (const entry of result.items) {
613
621
  const identity = (0, authority_key_codec_1.decodeAuthorityKey)(entry.key);
614
622
  const allocation = entry.snapshot.allocation;
615
- if (allocation.objectKind !== filter.objectKind
616
- || (filter.stableType !== undefined && allocation.stableType !== filter.stableType)
617
- || (filter.meshName !== undefined && allocation.descriptor.meshName !== filter.meshName))
623
+ if (allocation.objectKind !== filter.objectKind ||
624
+ (filter.stableType !== undefined && allocation.stableType !== filter.stableType) ||
625
+ (filter.meshName !== undefined && allocation.descriptor.meshName !== filter.meshName))
618
626
  continue;
619
- const live = await this.liveRows.resolve(entry, (candidate) => candidate.snapshot.ownerId, signal) !== undefined;
627
+ const live = (await this.liveRows.resolve(entry, (candidate) => candidate.snapshot.ownerId, signal)) !== undefined;
620
628
  items.push(this.objectLocationEntry(identity.globalId, entry.snapshot, live));
621
629
  if (items.length >= pageSize)
622
630
  break;
@@ -638,16 +646,14 @@ class ZLinkLocationRuntime {
638
646
  const found = await this.stores.authorityStore.readAuthority((0, authority_key_codec_1.encodeAuthorityKey)('user_spot', String(spotId)), signal);
639
647
  if (found.kind === 'missing' || found.allocation.objectKind === 'actor')
640
648
  return undefined;
641
- const live = await this.liveRows.resolve(found, (snapshot) => snapshot.ownerId, signal)
642
- !== undefined;
649
+ const live = (await this.liveRows.resolve(found, (snapshot) => snapshot.ownerId, signal)) !== undefined;
643
650
  return this.objectLocationEntry(String(spotId), found, live);
644
651
  }
645
652
  async findObjectLocation(kind, globalId, signal) {
646
653
  const found = await this.stores.authorityStore.readAuthority((0, authority_key_codec_1.encodeAuthorityKey)(kind, globalId), signal);
647
654
  if (found.kind === 'missing' || found.allocation.objectKind !== kind)
648
655
  return undefined;
649
- const live = await this.liveRows.resolve(found, (snapshot) => snapshot.ownerId, signal)
650
- !== undefined;
656
+ const live = (await this.liveRows.resolve(found, (snapshot) => snapshot.ownerId, signal)) !== undefined;
651
657
  return this.objectLocationEntry(globalId, found, live);
652
658
  }
653
659
  objectLocationEntry(globalId, snapshot, ownerLive) {
@@ -657,9 +663,7 @@ class ZLinkLocationRuntime {
657
663
  objectGeneration: snapshot.objectGeneration,
658
664
  meshName: allocation.descriptor.meshName,
659
665
  nodeRid: allocation.descriptor.rid,
660
- state: allocation.state === 'reserved'
661
- ? 'creating'
662
- : ownerLive ? 'ready' : 'unavailable',
666
+ state: allocation.state === 'reserved' ? 'creating' : ownerLive ? 'ready' : 'unavailable',
663
667
  stableType: allocation.stableType
664
668
  };
665
669
  }
@@ -674,7 +678,7 @@ class ZLinkLocationRuntime {
674
678
  const entries = [];
675
679
  for (const meshName of this.meshNamesOf(filter.meshName)) {
676
680
  for (const descriptor of await this.listAllMeshNodeDescriptors(meshName, signal)) {
677
- const live = (await this.filterLive([descriptor], row => row.ownerId, signal)).length > 0;
681
+ const live = (await this.filterLive([descriptor], (row) => row.ownerId, signal)).length > 0;
678
682
  const entry = {
679
683
  meshName: descriptor.meshName,
680
684
  nodeRid: descriptor.rid,
@@ -683,14 +687,14 @@ class ZLinkLocationRuntime {
683
687
  // 넘어간다고 정하고, §409는 draining node가 새 placement target이 되지
684
688
  // 않는다고 정한다. Host lifecycle의 `Draining`만 보면 relocate로 빠지는
685
689
  // node가 계속 accepting으로 보인다.
686
- draining: descriptor.state === internal_location_contracts_1.ZLinkFrameworkRuntimeState.Draining
687
- || descriptor.state === internal_location_contracts_1.ZLinkFrameworkRuntimeState.Relocating
688
- || descriptor.state === internal_location_contracts_1.ZLinkFrameworkRuntimeState.Relocated,
690
+ draining: descriptor.state === internal_location_contracts_1.ZLinkFrameworkRuntimeState.Draining ||
691
+ descriptor.state === internal_location_contracts_1.ZLinkFrameworkRuntimeState.Relocating ||
692
+ descriptor.state === internal_location_contracts_1.ZLinkFrameworkRuntimeState.Relocated,
689
693
  state: live ? internal_location_contracts_1.ZLinkLocationTopologyState.Ready : internal_location_contracts_1.ZLinkLocationTopologyState.Lost,
690
694
  updatedAt: descriptor.updatedAt
691
695
  };
692
- if ((filter.nodeRid === undefined || entry.nodeRid === filter.nodeRid)
693
- && (filter.state === undefined || entry.state === filter.state)) {
696
+ if ((filter.nodeRid === undefined || entry.nodeRid === filter.nodeRid) &&
697
+ (filter.state === undefined || entry.state === filter.state)) {
694
698
  entries.push(entry);
695
699
  }
696
700
  }
@@ -698,9 +702,7 @@ class ZLinkLocationRuntime {
698
702
  return this.pageInMemory(entries, page);
699
703
  }
700
704
  pageRequest(page) {
701
- return page?.pageSize === undefined
702
- ? { ...page, pageSize: this.options.listPageSize }
703
- : page;
705
+ return page?.pageSize === undefined ? { ...page, pageSize: this.options.listPageSize } : page;
704
706
  }
705
707
  async listServiceSummaries(filter, page, signal) {
706
708
  const summaries = [];
@@ -708,15 +710,15 @@ class ZLinkLocationRuntime {
708
710
  const descriptors = await this.listAllMeshNodeDescriptors(meshName, signal);
709
711
  if (descriptors.length === 0)
710
712
  continue;
711
- const live = await this.filterLive(descriptors, row => row.ownerId, signal);
712
- const liveOwners = new Set(live.map(row => row.ownerId));
713
+ const live = await this.filterLive(descriptors, (row) => row.ownerId, signal);
714
+ const liveOwners = new Set(live.map((row) => row.ownerId));
713
715
  summaries.push({
714
716
  meshName,
715
717
  totalCount: descriptors.length,
716
- readyCount: descriptors.filter(row => liveOwners.has(row.ownerId)).length,
718
+ readyCount: descriptors.filter((row) => liveOwners.has(row.ownerId)).length,
717
719
  errorCount: 0,
718
- stoppedCount: descriptors.filter(row => !liveOwners.has(row.ownerId)).length,
719
- lastUpdatedAt: descriptors.reduce((latest, row) => row.updatedAt > latest ? row.updatedAt : latest, descriptors[0].updatedAt)
720
+ stoppedCount: descriptors.filter((row) => !liveOwners.has(row.ownerId)).length,
721
+ lastUpdatedAt: descriptors.reduce((latest, row) => (row.updatedAt > latest ? row.updatedAt : latest), descriptors[0].updatedAt)
720
722
  });
721
723
  }
722
724
  return this.pageInMemory(summaries, page);
@@ -753,8 +755,7 @@ class ZLinkLocationRuntime {
753
755
  if (!this.started) {
754
756
  return;
755
757
  }
756
- const scheduledAt = this.nextLeaseRenewAtMs
757
- ?? this.monotonicNowMs() + this.options.ownerLeaseRenewIntervalMs;
758
+ const scheduledAt = this.nextLeaseRenewAtMs ?? this.monotonicNowMs() + this.options.ownerLeaseRenewIntervalMs;
758
759
  const delayMs = Math.max(0, scheduledAt - this.monotonicNowMs());
759
760
  this.heartbeatTimer = this.setTimer(() => {
760
761
  this.heartbeatTimer = undefined;
@@ -763,14 +764,16 @@ class ZLinkLocationRuntime {
763
764
  this.metrics?.recordOwnerLeaseRenewLateness(lateness, scope.kind, scope.name);
764
765
  }
765
766
  this.nextLeaseRenewAtMs = scheduledAt + this.options.ownerLeaseRenewIntervalMs;
766
- if (this.ownerLeaseDeadlineMs !== undefined
767
- && this.monotonicNowMs() >= this.ownerLeaseDeadlineMs) {
767
+ if (this.ownerLeaseDeadlineMs !== undefined &&
768
+ this.monotonicNowMs() >= this.ownerLeaseDeadlineMs) {
768
769
  this.ownerLeaseHealthy = false;
769
770
  this.recordFailure('Owner lease expired before renewal completed.', 'lease_expired');
770
771
  for (const handler of this.ownerLeaseRenewalFailedHandlers)
771
772
  handler();
772
773
  }
773
- const renewal = this.renewOwnerLeaseOnce().then(() => undefined, () => undefined).finally(() => {
774
+ const renewal = this.renewOwnerLeaseOnce()
775
+ .then(() => undefined, () => undefined)
776
+ .finally(() => {
774
777
  if (this.heartbeatRenewal === renewal) {
775
778
  this.heartbeatRenewal = undefined;
776
779
  }
@@ -799,7 +802,8 @@ class ZLinkLocationRuntime {
799
802
  }
800
803
  }
801
804
  notifyIfStale(result, kind, key) {
802
- if (result.status === internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale || result.status === internal_location_contracts_1.ZLinkLocationWriteStatus.RejectedConflict) {
805
+ if (result.status === internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale ||
806
+ result.status === internal_location_contracts_1.ZLinkLocationWriteStatus.RejectedConflict) {
803
807
  this.metrics?.recordLocationStoreError('compare_exchange');
804
808
  }
805
809
  if (result.status !== internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale) {
@@ -810,7 +814,8 @@ class ZLinkLocationRuntime {
810
814
  }
811
815
  }
812
816
  notifyIfStaleStatus(status, kind, key) {
813
- if (status === internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale || status === internal_location_contracts_1.ZLinkLocationWriteStatus.RejectedConflict) {
817
+ if (status === internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale ||
818
+ status === internal_location_contracts_1.ZLinkLocationWriteStatus.RejectedConflict) {
814
819
  this.metrics?.recordLocationStoreError('compare_exchange');
815
820
  }
816
821
  if (status !== internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale) {