@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
@@ -6,10 +6,7 @@ import {
6
6
  import { zlinkLocationRoleName } from './canonical-codec';
7
7
  import { ZLinkLocationKeyCodec } from './key-codec';
8
8
  import { routingIdsEqual } from '../routing-id';
9
- import type {
10
- ZLinkAutoConnectLocal,
11
- ZLinkAutoConnectTarget
12
- } from './auto-connect-types';
9
+ import type { ZLinkAutoConnectLocal, ZLinkAutoConnectTarget } from './auto-connect-types';
13
10
  import { routeMeshConnectionNotRequired } from '../foundation/route-mesh-connection-policy';
14
11
 
15
12
  const encodeRoutingIdHex = ZLinkLocationKeyCodec.encodeRoutingIdHex;
@@ -70,20 +67,24 @@ export const ZLinkAutoConnectPlanner = Object.freeze({
70
67
  return [];
71
68
  }
72
69
  return peers
73
- .filter(peer =>
74
- peer.autoConnectType === local.autoConnectType
75
- && peer.meshName === local.meshName
76
- && peer.endpoint.length > 0
77
- && !isAutoConnectSelf(local, peer)
78
- && routeMeshConnectionNotRequired(
79
- local.objectRole ?? 'none',
80
- local.hasRouteMeshServerChannel ?? false,
81
- peer.metadata?.objectRole === 'client'
82
- ? 'client'
83
- : peer.metadata?.objectRole === 'server' ? 'server' : 'none',
84
- peer.metadata?.hasRouteMeshServerChannel === 'true'
85
- ))
86
- .map(peer => ({
70
+ .filter(
71
+ (peer) =>
72
+ peer.autoConnectType === local.autoConnectType &&
73
+ peer.meshName === local.meshName &&
74
+ peer.endpoint.length > 0 &&
75
+ !isAutoConnectSelf(local, peer) &&
76
+ routeMeshConnectionNotRequired(
77
+ local.objectRole ?? 'none',
78
+ local.hasRouteMeshServerChannel ?? false,
79
+ peer.metadata?.objectRole === 'client'
80
+ ? 'client'
81
+ : peer.metadata?.objectRole === 'server'
82
+ ? 'server'
83
+ : 'none',
84
+ peer.metadata?.hasRouteMeshServerChannel === 'true'
85
+ )
86
+ )
87
+ .map((peer) => ({
87
88
  targetKey: autoConnectTargetKeyOf(peer),
88
89
  nodeRid: peer.nodeRid,
89
90
  lifecycleGeneration: peer.generation,
@@ -106,12 +107,14 @@ function isCandidate(
106
107
  peer: ZLinkPeerLocation,
107
108
  includeDraining: boolean
108
109
  ): boolean {
109
- return peer.autoConnectType === local.autoConnectType
110
- && peer.meshName === local.meshName
111
- && (includeDraining || !peer.draining)
112
- && ZLinkAutoConnectPlanner.isRoleAllowed(peer.autoConnectType, peer.role)
113
- && peer.endpoint.length > 0
114
- && !isAutoConnectSelf(local, peer);
110
+ return (
111
+ peer.autoConnectType === local.autoConnectType &&
112
+ peer.meshName === local.meshName &&
113
+ (includeDraining || !peer.draining) &&
114
+ ZLinkAutoConnectPlanner.isRoleAllowed(peer.autoConnectType, peer.role) &&
115
+ peer.endpoint.length > 0 &&
116
+ !isAutoConnectSelf(local, peer)
117
+ );
115
118
  }
116
119
 
117
120
  function targetOf(peer: ZLinkPeerLocation): ZLinkAutoConnectTarget {
@@ -127,7 +130,11 @@ function targetOf(peer: ZLinkPeerLocation): ZLinkAutoConnectTarget {
127
130
  }
128
131
 
129
132
  function isAutoConnectSelf(local: ZLinkAutoConnectLocal, peer: ZLinkPeerLocation): boolean {
130
- if (local.nodeRid !== undefined && peer.nodeRid !== undefined && routingIdsEqual(local.nodeRid, peer.nodeRid)) {
133
+ if (
134
+ local.nodeRid !== undefined &&
135
+ peer.nodeRid !== undefined &&
136
+ routingIdsEqual(local.nodeRid, peer.nodeRid)
137
+ ) {
131
138
  return true;
132
139
  }
133
140
  return peer.endpoint === local.endpoint;
@@ -136,17 +143,21 @@ function isAutoConnectSelf(local: ZLinkAutoConnectLocal, peer: ZLinkPeerLocation
136
143
  function shouldDialAutoConnectPeer(local: ZLinkAutoConnectLocal, peer: ZLinkPeerLocation): boolean {
137
144
  switch (local.autoConnectType) {
138
145
  case ZLinkLocationAutoConnectType.RouteMesh:
139
- return local.role === ZLinkLocationRole.Router
140
- && peer.role === ZLinkLocationRole.Router
141
- && !routeMeshConnectionNotRequired(
146
+ return (
147
+ local.role === ZLinkLocationRole.Router &&
148
+ peer.role === ZLinkLocationRole.Router &&
149
+ !routeMeshConnectionNotRequired(
142
150
  local.objectRole ?? 'none',
143
151
  local.hasRouteMeshServerChannel ?? false,
144
152
  peer.metadata?.objectRole === 'client'
145
153
  ? 'client'
146
- : peer.metadata?.objectRole === 'server' ? 'server' : 'none',
154
+ : peer.metadata?.objectRole === 'server'
155
+ ? 'server'
156
+ : 'none',
147
157
  peer.metadata?.hasRouteMeshServerChannel === 'true'
148
- )
149
- && localIsPairwiseInitiator(local, peer);
158
+ ) &&
159
+ localIsPairwiseInitiator(local, peer)
160
+ );
150
161
  case ZLinkLocationAutoConnectType.Fanout:
151
162
  return local.role === ZLinkLocationRole.Sub && peer.role === ZLinkLocationRole.Pub;
152
163
  default:
@@ -11,9 +11,7 @@ import {
11
11
  } from './internal-location-contracts';
12
12
  import { ZLinkLocationKeyCodec } from './key-codec';
13
13
  import { normalizeEndpoint } from '../../contracts/Configuration/EndpointNotation';
14
- import {
15
- ZLinkAutoConnectPlanner
16
- } from './auto-connect-planner';
14
+ import { ZLinkAutoConnectPlanner } from './auto-connect-planner';
17
15
  import { ZLinkStateLane } from '../execution/state-lane';
18
16
  import type {
19
17
  IZLinkAutoConnectExecutor,
@@ -64,9 +62,10 @@ export class ZLinkAutoConnectReconciler {
64
62
  // Normalized once here so writePeer() and the removePeer() key built in
65
63
  // unpublishLocal() below always agree on the same row identity, even
66
64
  // though writePeer() itself also normalizes on write.
67
- this.localRow = options.localRow === undefined
68
- ? undefined
69
- : { ...options.localRow, endpoint: normalizeEndpoint(options.localRow.endpoint) };
65
+ this.localRow =
66
+ options.localRow === undefined
67
+ ? undefined
68
+ : { ...options.localRow, endpoint: normalizeEndpoint(options.localRow.endpoint) };
70
69
  this.runtime = options.runtime;
71
70
  this.peerResolver = options.peerResolver;
72
71
  this.executor = options.executor;
@@ -114,10 +113,13 @@ export class ZLinkAutoConnectReconciler {
114
113
 
115
114
  let rows: readonly ZLinkPeerLocation[];
116
115
  try {
117
- rows = await this.peerResolver.listLivePeers({
118
- autoConnectType: this.local.autoConnectType,
119
- meshName: this.local.meshName
120
- }, signal);
116
+ rows = await this.peerResolver.listLivePeers(
117
+ {
118
+ autoConnectType: this.local.autoConnectType,
119
+ meshName: this.local.meshName
120
+ },
121
+ signal
122
+ );
121
123
  } catch {
122
124
  await this.recordStoreFailure();
123
125
  return;
@@ -130,11 +132,13 @@ export class ZLinkAutoConnectReconciler {
130
132
  // only when the authoritative read proves that this local row is absent;
131
133
  // existing transport targets remain untouched during the rebuild window.
132
134
  if (
133
- await this.lane.run(() => this.localPublished)
134
- && this.localRow !== undefined
135
- && !rows.some(row => row.nodeRid === this.localRow!.nodeRid)
135
+ (await this.lane.run(() => this.localPublished)) &&
136
+ this.localRow !== undefined &&
137
+ !rows.some((row) => row.nodeRid === this.localRow!.nodeRid)
136
138
  ) {
137
- await this.lane.run(() => { this.localPublished = false; });
139
+ await this.lane.run(() => {
140
+ this.localPublished = false;
141
+ });
138
142
  try {
139
143
  const republished = await this.publishLocal(signal);
140
144
  if (!republished) {
@@ -151,22 +155,25 @@ export class ZLinkAutoConnectReconciler {
151
155
  await this.lane.run(() => {
152
156
  this.storeFailedValue = false;
153
157
  this.storeFailureStartedAtMs = undefined;
154
- // After a store restart, owners may need one full lease interval to
155
- // reclaim their token and republish a descriptor. Do not interpret the
156
- // incomplete post-restart scan as a definitive removal.
157
- // Keep the existing transport set through one lease interval while
158
- // owners reclaim their tokens and republish descriptors. This deferral
159
- // applies only after a Store operation failed; a successful empty scan
160
- // is authoritative and must remove stale peers promptly.
161
- this.recoveryDeferUntilMs = this.monotonicNowMs()
162
- + this.options.ownerLeaseTtlMs;
158
+ // After a store restart, owners may need one full lease interval to
159
+ // reclaim their token and republish a descriptor. Do not interpret the
160
+ // incomplete post-restart scan as a definitive removal.
161
+ // Keep the existing transport set through one lease interval while
162
+ // owners reclaim their tokens and republish descriptors. This deferral
163
+ // applies only after a Store operation failed; a successful empty scan
164
+ // is authoritative and must remove stale peers promptly.
165
+ this.recoveryDeferUntilMs = this.monotonicNowMs() + this.options.ownerLeaseTtlMs;
163
166
  });
164
167
  }
165
168
 
166
- await this.lane.run(() => { this.meshMemberRidHexes = new Set(rows
167
- .map((row) => row.nodeRid)
168
- .filter((nodeRid): nodeRid is RoutingId => nodeRid !== undefined)
169
- .map((nodeRid) => encodeRoutingIdHex(nodeRid))); });
169
+ await this.lane.run(() => {
170
+ this.meshMemberRidHexes = new Set(
171
+ rows
172
+ .map((row) => row.nodeRid)
173
+ .filter((nodeRid): nodeRid is RoutingId => nodeRid !== undefined)
174
+ .map((nodeRid) => encodeRoutingIdHex(nodeRid))
175
+ );
176
+ });
170
177
  const candidates = ZLinkAutoConnectPlanner.computeCandidates(this.local, rows);
171
178
  const nowMs = this.monotonicNowMs();
172
179
  this.executor.expectPeers?.([...candidates.values()]);
@@ -179,7 +186,9 @@ export class ZLinkAutoConnectReconciler {
179
186
  const failedEndpoints = await this.lane.run(() => [...this.failedEndpoints]);
180
187
  for (const endpoint of failedEndpoints) {
181
188
  if (!desiredEndpoints.has(endpoint)) {
182
- await this.lane.run(() => { this.failedEndpoints.delete(endpoint); });
189
+ await this.lane.run(() => {
190
+ this.failedEndpoints.delete(endpoint);
191
+ });
183
192
  }
184
193
  }
185
194
  const existingTargets = ZLinkAutoConnectPlanner.computeDesired(this.local, rows, true);
@@ -187,28 +196,36 @@ export class ZLinkAutoConnectReconciler {
187
196
  for (const [key, target] of existingTargets) {
188
197
  if (activeKeys.has(key)) desired.set(key, target);
189
198
  }
190
- await this.lane.run(() => { this.lastDesired = new Map(desired); });
199
+ await this.lane.run(() => {
200
+ this.lastDesired = new Map(desired);
201
+ });
191
202
  const connectedEndpoints: string[] = [];
192
203
  const disconnectedEndpoints: string[] = [];
193
204
  for (const [key, target] of desired) {
194
205
  let current = await this.lane.run(() => this.active.get(key));
195
206
  if (
196
- current !== undefined
197
- && current.endpoint === target.endpoint
198
- && current.ownerId === target.ownerId
199
- && this.executor.isDisconnected?.(current) === true
207
+ current !== undefined &&
208
+ current.endpoint === target.endpoint &&
209
+ current.ownerId === target.ownerId &&
210
+ this.executor.isDisconnected?.(current) === true
200
211
  ) {
201
- await this.lane.run(() => { this.active.delete(key); });
212
+ await this.lane.run(() => {
213
+ this.active.delete(key);
214
+ });
202
215
  current = undefined;
203
216
  }
204
217
  if (current === undefined) {
205
218
  const disconnecting = await this.lane.run(() => this.pendingDisconnects.get(key));
206
- if (disconnecting !== undefined
207
- && this.executor.isDisconnected !== undefined
208
- && !this.executor.isDisconnected(disconnecting)) {
219
+ if (
220
+ disconnecting !== undefined &&
221
+ this.executor.isDisconnected !== undefined &&
222
+ !this.executor.isDisconnected(disconnecting)
223
+ ) {
209
224
  continue;
210
225
  }
211
- await this.lane.run(() => { this.pendingDisconnects.delete(key); });
226
+ await this.lane.run(() => {
227
+ this.pendingDisconnects.delete(key);
228
+ });
212
229
  const connected = await this.executor.connect(target);
213
230
  if (connected) {
214
231
  connectedEndpoints.push(target.endpoint);
@@ -223,13 +240,18 @@ export class ZLinkAutoConnectReconciler {
223
240
  if (current.endpoint !== target.endpoint || current.ownerId !== target.ownerId) {
224
241
  this.disconnectIfNeeded(current);
225
242
  disconnectedEndpoints.push(current.endpoint);
226
- await this.lane.run(() => { this.active.delete(key); });
227
- if (this.executor.isDisconnected !== undefined
228
- && !this.executor.isDisconnected(current)) {
229
- await this.lane.run(() => { this.pendingDisconnects.set(key, current!); });
243
+ await this.lane.run(() => {
244
+ this.active.delete(key);
245
+ });
246
+ if (this.executor.isDisconnected !== undefined && !this.executor.isDisconnected(current)) {
247
+ await this.lane.run(() => {
248
+ this.pendingDisconnects.set(key, current!);
249
+ });
230
250
  continue;
231
251
  }
232
- await this.lane.run(() => { this.pendingDisconnects.delete(key); });
252
+ await this.lane.run(() => {
253
+ this.pendingDisconnects.delete(key);
254
+ });
233
255
  const connected = await this.executor.connect(target);
234
256
  if (connected) {
235
257
  connectedEndpoints.push(target.endpoint);
@@ -241,7 +263,7 @@ export class ZLinkAutoConnectReconciler {
241
263
  }
242
264
  }
243
265
 
244
- if (nowMs < await this.lane.run(() => this.recoveryDeferUntilMs)) {
266
+ if (nowMs < (await this.lane.run(() => this.recoveryDeferUntilMs))) {
245
267
  this.publishDesiredSetChange(connectedEndpoints, disconnectedEndpoints);
246
268
  return;
247
269
  }
@@ -250,18 +272,20 @@ export class ZLinkAutoConnectReconciler {
250
272
  // reclaiming their owner leases. Preserve existing transport connections
251
273
  // during that recovery window; stale-peer cleanup is safe after the
252
274
  // deferred reconciliation has completed.
253
- this.executor.disconnectStalePeers?.(
254
- [...candidates.values()]
255
- );
275
+ this.executor.disconnectStalePeers?.([...candidates.values()]);
256
276
 
257
277
  const activeTargets = await this.lane.run(() => [...this.active]);
258
278
  for (const [key, target] of activeTargets) {
259
279
  if (!desired.has(key)) {
260
280
  this.disconnectIfNeeded(target);
261
281
  disconnectedEndpoints.push(target.endpoint);
262
- await this.lane.run(() => { this.active.delete(key); });
282
+ await this.lane.run(() => {
283
+ this.active.delete(key);
284
+ });
263
285
  if (this.executor.isDisconnected !== undefined) {
264
- await this.lane.run(() => { this.pendingDisconnects.set(key, target); });
286
+ await this.lane.run(() => {
287
+ this.pendingDisconnects.set(key, target);
288
+ });
265
289
  }
266
290
  }
267
291
  }
@@ -270,7 +294,9 @@ export class ZLinkAutoConnectReconciler {
270
294
  const pendingDisconnects = await this.lane.run(() => [...this.pendingDisconnects]);
271
295
  for (const [key, target] of pendingDisconnects) {
272
296
  if (!desired.has(key) && this.executor.isDisconnected(target)) {
273
- await this.lane.run(() => { this.pendingDisconnects.delete(key); });
297
+ await this.lane.run(() => {
298
+ this.pendingDisconnects.delete(key);
299
+ });
274
300
  }
275
301
  }
276
302
  }
@@ -308,17 +334,27 @@ export class ZLinkAutoConnectReconciler {
308
334
  private async publishLocal(signal?: AbortSignal): Promise<boolean> {
309
335
  const prepared = await this.lane.run(() => this.preparePublishLocalCore());
310
336
  if (prepared === undefined) return await this.lane.run(() => this.localPublished);
311
- const claimed = await this.runtime.writePeer(prepared.row, ZLinkLocationWriteIntent.NewClaim, signal);
337
+ const claimed = await this.runtime.writePeer(
338
+ prepared.row,
339
+ ZLinkLocationWriteIntent.NewClaim,
340
+ signal
341
+ );
312
342
  if (claimed.status === ZLinkLocationWriteStatus.Stored) {
313
343
  return await this.lane.run(() => this.completePublishClaimCore(claimed.generation));
314
344
  }
315
345
 
316
- const renewal = await this.lane.run(() => this.preparePublishRenewalCore(prepared.row, claimed.status));
346
+ const renewal = await this.lane.run(() =>
347
+ this.preparePublishRenewalCore(prepared.row, claimed.status)
348
+ );
317
349
  if (renewal !== undefined) {
318
- const renewed = await this.runtime.writePeer({
319
- ...prepared.row,
320
- generation: renewal
321
- }, ZLinkLocationWriteIntent.Renew, signal);
350
+ const renewed = await this.runtime.writePeer(
351
+ {
352
+ ...prepared.row,
353
+ generation: renewal
354
+ },
355
+ ZLinkLocationWriteIntent.Renew,
356
+ signal
357
+ );
322
358
  return await this.lane.run(() => {
323
359
  this.localPublished = renewed.status === ZLinkLocationWriteStatus.Stored;
324
360
  return this.localPublished;
@@ -327,10 +363,15 @@ export class ZLinkAutoConnectReconciler {
327
363
  return false;
328
364
  }
329
365
 
330
- private prepareUnpublishLocalCore(): {
331
- readonly row: Pick<ZLinkPeerLocation, 'autoConnectType' | 'meshName' | 'role' | 'nodeRid' | 'endpoint'>;
332
- readonly generation: bigint;
333
- } | undefined {
366
+ private prepareUnpublishLocalCore():
367
+ | {
368
+ readonly row: Pick<
369
+ ZLinkPeerLocation,
370
+ 'autoConnectType' | 'meshName' | 'role' | 'nodeRid' | 'endpoint'
371
+ >;
372
+ readonly generation: bigint;
373
+ }
374
+ | undefined {
334
375
  if (!this.localPublished || this.localRow === undefined) return undefined;
335
376
  return {
336
377
  row: {
@@ -374,7 +415,8 @@ export class ZLinkAutoConnectReconciler {
374
415
  }
375
416
  }
376
417
 
377
- private beginStoreFailureCore(): readonly (readonly [string, ZLinkAutoConnectTarget])[] | undefined {
418
+ private beginStoreFailureCore():
419
+ readonly (readonly [string, ZLinkAutoConnectTarget])[] | undefined {
378
420
  const nowMs = this.monotonicNowMs();
379
421
  this.storeFailureStartedAtMs ??= nowMs;
380
422
  this.storeFailedValue = true;
@@ -385,8 +427,9 @@ export class ZLinkAutoConnectReconciler {
385
427
  ) {
386
428
  return undefined;
387
429
  }
388
- return [...this.lastDesired]
389
- .filter(([key, target]) => !this.active.has(key) && !this.failedEndpoints.has(target.endpoint));
430
+ return [...this.lastDesired].filter(
431
+ ([key, target]) => !this.active.has(key) && !this.failedEndpoints.has(target.endpoint)
432
+ );
390
433
  }
391
434
 
392
435
  private completeStoreFailureConnectCore(key: string, target: ZLinkAutoConnectTarget): void {
@@ -45,7 +45,9 @@ export function isKnownZLinkLocationRole(role: ZLinkLocationRole): boolean {
45
45
  return roleCanonicalNames.has(role);
46
46
  }
47
47
 
48
- export function tryParseZLinkLocationAutoConnectType(value: string): ZLinkLocationAutoConnectType | undefined {
48
+ export function tryParseZLinkLocationAutoConnectType(
49
+ value: string
50
+ ): ZLinkLocationAutoConnectType | undefined {
49
51
  return canonicalAutoConnectTypes.get(value);
50
52
  }
51
53
 
@@ -1,8 +1,9 @@
1
1
  import { randomBytes } from 'node:crypto';
2
2
 
3
- export function randomOperationId(
4
- entropy: Uint8Array = randomBytes(16)
5
- ): { readonly high: bigint; readonly low: bigint } {
3
+ export function randomOperationId(entropy: Uint8Array = randomBytes(16)): {
4
+ readonly high: bigint;
5
+ readonly low: bigint;
6
+ } {
6
7
  if (entropy.byteLength !== 16) throw new RangeError('Operation ID entropy must be 16 bytes.');
7
8
  const bytes = Buffer.from(entropy);
8
9
  const high = bytes.readBigUInt64BE(0);
@@ -97,10 +97,7 @@ export interface ZLinkDomainLocationStore {
97
97
  leaseTtlMs: number,
98
98
  signal?: AbortSignal
99
99
  ): Promise<ZLinkOwnerLeaseClaimResult>;
100
- readOwnerLease(
101
- ownerId: string,
102
- signal?: AbortSignal
103
- ): Promise<ZLinkOwnerLeaseReadResult>;
100
+ readOwnerLease(ownerId: string, signal?: AbortSignal): Promise<ZLinkOwnerLeaseReadResult>;
104
101
  renewOwnerLease(
105
102
  token: ZLinkLocationOwnerToken,
106
103
  leaseTtlMs: number,
@@ -129,7 +126,10 @@ export interface ZLinkDomainLocationStore {
129
126
  operation: ZLinkCreationOperationIdentity,
130
127
  signal?: AbortSignal
131
128
  ): Promise<ZLinkCreationTerminalReadResult>;
132
- reserve(request: ZLinkObjectReserveRequest, signal?: AbortSignal): Promise<ZLinkObjectReserveResult>;
129
+ reserve(
130
+ request: ZLinkObjectReserveRequest,
131
+ signal?: AbortSignal
132
+ ): Promise<ZLinkObjectReserveResult>;
133
133
  commit(request: ZLinkObjectCommitRequest, signal?: AbortSignal): Promise<ZLinkObjectCommitResult>;
134
134
  completeCreation(
135
135
  request: ZLinkObjectCreationCompleteRequest,
@@ -141,8 +141,14 @@ export interface ZLinkDomainLocationStore {
141
141
  request: ZLinkAggregatePrepareRequest,
142
142
  signal?: AbortSignal
143
143
  ): Promise<ZLinkAggregatePrepareResult>;
144
- commitAggregate(fence: ZLinkAggregateFence, signal?: AbortSignal): Promise<ZLinkAggregateCommitResult>;
145
- abortAggregate(fence: ZLinkAggregateFence, signal?: AbortSignal): Promise<ZLinkAggregateAbortResult>;
144
+ commitAggregate(
145
+ fence: ZLinkAggregateFence,
146
+ signal?: AbortSignal
147
+ ): Promise<ZLinkAggregateCommitResult>;
148
+ abortAggregate(
149
+ fence: ZLinkAggregateFence,
150
+ signal?: AbortSignal
151
+ ): Promise<ZLinkAggregateAbortResult>;
146
152
 
147
153
  removeAllByOwner(owner: ZLinkLocationOwnerToken, signal?: AbortSignal): Promise<bigint>;
148
154
  getMeshNodeChangeStamp?(meshName: string, signal?: AbortSignal): Promise<bigint | undefined>;