@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
@@ -17,25 +17,36 @@ function runtimeAcceptsWork(state, admissionOpen) {
17
17
  /** Projects public state into the maintenance admission bounded context. */
18
18
  function maintenanceAdmissionState(state) {
19
19
  switch (state) {
20
- case contracts_1.ZLinkFrameworkRuntimeState.Preparing: return 'preparing';
21
- case contracts_1.ZLinkFrameworkRuntimeState.Serving: return 'serving';
20
+ case contracts_1.ZLinkFrameworkRuntimeState.Preparing:
21
+ return 'preparing';
22
+ case contracts_1.ZLinkFrameworkRuntimeState.Serving:
23
+ return 'serving';
22
24
  case contracts_1.ZLinkFrameworkRuntimeState.Relocating:
23
- case contracts_1.ZLinkFrameworkRuntimeState.Relocated: return 'retiring';
24
- case contracts_1.ZLinkFrameworkRuntimeState.Draining: return 'draining';
25
- case contracts_1.ZLinkFrameworkRuntimeState.Stopped: return 'stopped';
26
- case contracts_1.ZLinkFrameworkRuntimeState.Error: return 'error';
25
+ case contracts_1.ZLinkFrameworkRuntimeState.Relocated:
26
+ return 'retiring';
27
+ case contracts_1.ZLinkFrameworkRuntimeState.Draining:
28
+ return 'draining';
29
+ case contracts_1.ZLinkFrameworkRuntimeState.Stopped:
30
+ return 'stopped';
31
+ case contracts_1.ZLinkFrameworkRuntimeState.Error:
32
+ return 'error';
27
33
  }
28
34
  }
29
35
  /** Projects public state into discovery without creating transport-only state. */
30
36
  function discoveryAvailabilityForRuntimeState(state) {
31
37
  switch (state) {
32
- case contracts_1.ZLinkFrameworkRuntimeState.Preparing: return 'preparing';
33
- case contracts_1.ZLinkFrameworkRuntimeState.Serving: return 'serving';
38
+ case contracts_1.ZLinkFrameworkRuntimeState.Preparing:
39
+ return 'preparing';
40
+ case contracts_1.ZLinkFrameworkRuntimeState.Serving:
41
+ return 'serving';
34
42
  case contracts_1.ZLinkFrameworkRuntimeState.Relocating:
35
43
  case contracts_1.ZLinkFrameworkRuntimeState.Relocated:
36
- case contracts_1.ZLinkFrameworkRuntimeState.Draining: return 'retiring';
37
- case contracts_1.ZLinkFrameworkRuntimeState.Stopped: return 'stopped';
38
- case contracts_1.ZLinkFrameworkRuntimeState.Error: return 'error';
44
+ case contracts_1.ZLinkFrameworkRuntimeState.Draining:
45
+ return 'retiring';
46
+ case contracts_1.ZLinkFrameworkRuntimeState.Stopped:
47
+ return 'stopped';
48
+ case contracts_1.ZLinkFrameworkRuntimeState.Error:
49
+ return 'error';
39
50
  }
40
51
  }
41
52
  /** Combines host readiness with the target projection without changing host state. */
@@ -72,8 +72,8 @@ function encodeServiceInstanceAuthorityPayload(value) {
72
72
  const activationRecovery = value.activationRecovery === undefined
73
73
  ? conditional32(0, Buffer.alloc(0))
74
74
  : conditional32(1, concat(text16(value.activationRecovery.reference, 'activationRecovery.reference'), sha256(value.activationRecovery.sha256), boundedU32(value.activationRecovery.encodedSize, 'activationRecovery.encodedSize'), u64(value.activationRecovery.inboxSequence, 'activationRecovery.inboxSequence'), ordinalU64(value.activationRecovery.replayCursor, 'activationRecovery.replayCursor')));
75
- if (value.activationRecovery !== undefined
76
- && value.activationRecovery.replayCursor > value.activationRecovery.inboxSequence) {
75
+ if (value.activationRecovery !== undefined &&
76
+ value.activationRecovery.replayCursor > value.activationRecovery.inboxSequence) {
77
77
  throw new RangeError('activationRecovery.replayCursor must not exceed inboxSequence.');
78
78
  }
79
79
  const body = concat(Buffer.of(value.state === 'coldActivating' ? 1 : value.state === 'closing' ? 3 : 0), object, text8(value.ownerId, 'ownerId'), u64(value.ownerLeaseGeneration, 'ownerLeaseGeneration'), text8(value.ownerMeshName, 'ownerMeshName'), rid(value.ownerNodeRid, 'ownerNodeRid'), u64(value.ownerNodeGeneration, 'ownerNodeGeneration'), conditional32(0, Buffer.alloc(0)), activationRecovery);
@@ -82,16 +82,14 @@ function encodeServiceInstanceAuthorityPayload(value) {
82
82
  }
83
83
  function decodeServiceReadySpotAuthority(payload) {
84
84
  const decoded = decodeSpotAuthority(payload);
85
- return decoded?.state === 'ready' && decoded.operationKind === 0
86
- ? decoded
87
- : undefined;
85
+ return decoded?.state === 'ready' && decoded.operationKind === 0 ? decoded : undefined;
88
86
  }
89
87
  function decodeServiceInstanceAuthorityPayload(payload) {
90
88
  const decoded = decodeSpotAuthority(payload);
91
- if (decoded?.kind !== 'instance_spot'
92
- || !(decoded.state === 'coldActivating' && decoded.operationKind === 1
93
- || decoded.state === 'ready' && decoded.operationKind === 0
94
- || decoded.state === 'closing' && decoded.operationKind === 3)) {
89
+ if (decoded?.kind !== 'instance_spot' ||
90
+ !((decoded.state === 'coldActivating' && decoded.operationKind === 1) ||
91
+ (decoded.state === 'ready' && decoded.operationKind === 0) ||
92
+ (decoded.state === 'closing' && decoded.operationKind === 3))) {
95
93
  return undefined;
96
94
  }
97
95
  return {
@@ -225,10 +223,8 @@ function decodeSpotAuthority(payload) {
225
223
  replayCursor
226
224
  };
227
225
  }
228
- if (activationRecovery !== undefined
229
- && (kind !== 'instance_spot'
230
- || state !== 2
231
- || operationKind !== 0)) {
226
+ if (activationRecovery !== undefined &&
227
+ (kind !== 'instance_spot' || state !== 2 || operationKind !== 0)) {
232
228
  return undefined;
233
229
  }
234
230
  if (!activationRecoveryBody.done || !body.done)
@@ -243,7 +239,9 @@ function decodeSpotAuthority(payload) {
243
239
  : state === 3
244
240
  ? 'closing'
245
241
  : 'other'
246
- : state === 1 ? 'ready' : 'other',
242
+ : state === 1
243
+ ? 'ready'
244
+ : 'other',
247
245
  operationKind,
248
246
  stableType,
249
247
  spotId,
@@ -324,7 +322,7 @@ function ordinalU64(value, name) {
324
322
  return result;
325
323
  }
326
324
  function concat(...parts) {
327
- return Buffer.concat(parts.map(part => Buffer.from(part)));
325
+ return Buffer.concat(parts.map((part) => Buffer.from(part)));
328
326
  }
329
327
  class AuthorityReader {
330
328
  bytes;
@@ -10,9 +10,9 @@ class ServiceDiscoveryRegistry {
10
10
  validateClientServer(descriptor);
11
11
  const key = `${descriptor.channelName}\0${descriptor.serverRoutingId}`;
12
12
  const current = this.clientServers.get(key);
13
- if (current !== undefined
14
- && current.descriptor.state === 'disconnected'
15
- && sameClientServerDescriptorExceptState(current.descriptor, descriptor)) {
13
+ if (current !== undefined &&
14
+ current.descriptor.state === 'disconnected' &&
15
+ sameClientServerDescriptorExceptState(current.descriptor, descriptor)) {
16
16
  this.clientServers.set(key, { descriptor: { ...descriptor }, connectionId });
17
17
  this.invalidateClientServerCandidates(descriptor.channelName);
18
18
  return true;
@@ -58,10 +58,10 @@ class ServiceDiscoveryRegistry {
58
58
  }
59
59
  clientServerDescriptors(channelName) {
60
60
  return [...this.clientServers.values()]
61
- .map(value => value.descriptor)
62
- .filter(value => value.channelName === channelName)
61
+ .map((value) => value.descriptor)
62
+ .filter((value) => value.channelName === channelName)
63
63
  .sort((left, right) => compareOrdinal(left.serverRoutingId, right.serverRoutingId))
64
- .map(value => ({ ...value }));
64
+ .map((value) => ({ ...value }));
65
65
  }
66
66
  admitFanoutPublisher(descriptor, connectionId) {
67
67
  validateFanout(descriptor);
@@ -72,19 +72,19 @@ class ServiceDiscoveryRegistry {
72
72
  }
73
73
  fanoutEndpoints(channelName) {
74
74
  return [...this.fanoutPublishers.values()]
75
- .map(value => value.descriptor)
76
- .filter(value => value.channelName === channelName && value.state === 'serving')
75
+ .map((value) => value.descriptor)
76
+ .filter((value) => value.channelName === channelName && value.state === 'serving')
77
77
  .sort((left, right) => left.publisherRoutingId.localeCompare(right.publisherRoutingId))
78
- .map(value => ({ ...value }));
78
+ .map((value) => ({ ...value }));
79
79
  }
80
80
  admit(rows, key, descriptor, connectionId) {
81
81
  requireText(connectionId, 'connectionId');
82
82
  const current = rows.get(key);
83
- if (current !== undefined
84
- && current.descriptor.lifecycleGeneration === descriptor.lifecycleGeneration
85
- && (current.descriptor.descriptorRevision > descriptor.descriptorRevision
86
- || (current.descriptor.descriptorRevision === descriptor.descriptorRevision
87
- && !sameDescriptor(current.descriptor, descriptor)))) {
83
+ if (current !== undefined &&
84
+ current.descriptor.lifecycleGeneration === descriptor.lifecycleGeneration &&
85
+ (current.descriptor.descriptorRevision > descriptor.descriptorRevision ||
86
+ (current.descriptor.descriptorRevision === descriptor.descriptorRevision &&
87
+ !sameDescriptor(current.descriptor, descriptor)))) {
88
88
  return false;
89
89
  }
90
90
  rows.set(key, { descriptor: { ...descriptor }, connectionId });
@@ -97,11 +97,11 @@ class ServiceDiscoveryRegistry {
97
97
  }
98
98
  clientServerCandidates(channelName) {
99
99
  return [...this.clientServers.values()]
100
- .filter(value => value.descriptor.channelName === channelName
101
- && value.descriptor.state === 'serving'
102
- && value.descriptor.weight > 0)
100
+ .filter((value) => value.descriptor.channelName === channelName &&
101
+ value.descriptor.state === 'serving' &&
102
+ value.descriptor.weight > 0)
103
103
  .sort((left, right) => compareOrdinal(left.descriptor.serverRoutingId, right.descriptor.serverRoutingId))
104
- .map(value => ({
104
+ .map((value) => ({
105
105
  id: value.descriptor.serverRoutingId,
106
106
  weight: value.descriptor.weight,
107
107
  value: Object.freeze({
@@ -116,25 +116,26 @@ function compareOrdinal(left, right) {
116
116
  return left < right ? -1 : left > right ? 1 : 0;
117
117
  }
118
118
  function sameDescriptor(left, right) {
119
- return JSON.stringify({
119
+ return (JSON.stringify({
120
120
  ...left,
121
121
  lifecycleGeneration: left.lifecycleGeneration.toString(),
122
122
  descriptorRevision: left.descriptorRevision.toString()
123
- }) === JSON.stringify({
124
- ...right,
125
- lifecycleGeneration: right.lifecycleGeneration.toString(),
126
- descriptorRevision: right.descriptorRevision.toString()
127
- });
123
+ }) ===
124
+ JSON.stringify({
125
+ ...right,
126
+ lifecycleGeneration: right.lifecycleGeneration.toString(),
127
+ descriptorRevision: right.descriptorRevision.toString()
128
+ }));
128
129
  }
129
130
  function sameClientServerDescriptorExceptState(left, right) {
130
- return left.channelName === right.channelName
131
- && left.serverRoutingId === right.serverRoutingId
132
- && left.lifecycleGeneration === right.lifecycleGeneration
133
- && left.descriptorRevision === right.descriptorRevision
134
- && left.weight === right.weight
135
- && left.securityIdentity === right.securityIdentity
136
- && left.effectiveMaxMessageBytes === right.effectiveMaxMessageBytes
137
- && left.advertisedEndpoint === right.advertisedEndpoint;
131
+ return (left.channelName === right.channelName &&
132
+ left.serverRoutingId === right.serverRoutingId &&
133
+ left.lifecycleGeneration === right.lifecycleGeneration &&
134
+ left.descriptorRevision === right.descriptorRevision &&
135
+ left.weight === right.weight &&
136
+ left.securityIdentity === right.securityIdentity &&
137
+ left.effectiveMaxMessageBytes === right.effectiveMaxMessageBytes &&
138
+ left.advertisedEndpoint === right.advertisedEndpoint);
138
139
  }
139
140
  function removeCurrent(rows, key, connectionId) {
140
141
  const current = rows.get(key);
@@ -152,7 +153,8 @@ function validateClientServer(descriptor) {
152
153
  if (!Number.isInteger(descriptor.weight) || descriptor.weight < 0 || descriptor.weight > 10_000) {
153
154
  throw new RangeError('ClientServer weight must be an integer in 0..10000.');
154
155
  }
155
- if (!Number.isSafeInteger(descriptor.effectiveMaxMessageBytes) || descriptor.effectiveMaxMessageBytes < 1) {
156
+ if (!Number.isSafeInteger(descriptor.effectiveMaxMessageBytes) ||
157
+ descriptor.effectiveMaxMessageBytes < 1) {
156
158
  throw new RangeError('ClientServer message bound must be positive.');
157
159
  }
158
160
  }
@@ -19,9 +19,7 @@ function encodeInstanceActivationRecoveryEnvelope(value) {
19
19
  const targetNodeRid = textBytes(value.target.targetNodeRid, 'targetNodeRid');
20
20
  const descriptorVersion = textBytes(value.target.descriptorVersion, 'targetDescriptorVersion');
21
21
  const sourceNodeRid = textBytes(value.sourceNodeRid, 'sourceNodeRid');
22
- const sourceSpotId = value.sourceSpotId === undefined
23
- ? undefined
24
- : textBytes(value.sourceSpotId, 'sourceSpotId');
22
+ const sourceSpotId = value.sourceSpotId === undefined ? undefined : textBytes(value.sourceSpotId, 'sourceSpotId');
25
23
  validatePositiveU64(value.target.targetNodeGeneration, 'targetNodeGeneration');
26
24
  validatePositiveU64(value.sourceNodeGeneration, 'sourceNodeGeneration');
27
25
  validateU64(value.operation.high, 'operation.high');
@@ -33,22 +31,24 @@ function encodeInstanceActivationRecoveryEnvelope(value) {
33
31
  const metadataFrame = value.metadataFrame === undefined
34
32
  ? undefined
35
33
  : (0, service_metadata_codec_1.validateServiceMetadataFrame)(value.metadataFrame);
36
- const bodyLength = text8Size(targetSpotId)
37
- + text8Size(stableType)
38
- + text8Size(targetMeshName)
39
- + text8Size(targetNodeRid)
40
- + 8
41
- + text8Size(descriptorVersion)
42
- + text8Size(sourceNodeRid)
43
- + 8
44
- + 1 + (sourceSpotId === undefined ? 0 : text8Size(sourceSpotId))
45
- + 1
46
- + 8
47
- + 8
48
- + (value.operationKind === 'request' ? 8 : 0)
49
- + 8
50
- + 1 + (metadataFrame?.byteLength ?? 0)
51
- + value.applicationPayloadFrame.byteLength;
34
+ const bodyLength = text8Size(targetSpotId) +
35
+ text8Size(stableType) +
36
+ text8Size(targetMeshName) +
37
+ text8Size(targetNodeRid) +
38
+ 8 +
39
+ text8Size(descriptorVersion) +
40
+ text8Size(sourceNodeRid) +
41
+ 8 +
42
+ 1 +
43
+ (sourceSpotId === undefined ? 0 : text8Size(sourceSpotId)) +
44
+ 1 +
45
+ 8 +
46
+ 8 +
47
+ (value.operationKind === 'request' ? 8 : 0) +
48
+ 8 +
49
+ 1 +
50
+ (metadataFrame?.byteLength ?? 0) +
51
+ value.applicationPayloadFrame.byteLength;
52
52
  const envelopeLength = 4 + 1 + 2 + 4 + bodyLength;
53
53
  const encodedLength = envelopeLength + 4;
54
54
  if (encodedLength > MAX_ENCODED_BYTES) {
@@ -137,9 +137,7 @@ function decodeInstanceActivationRecoveryEnvelope(encoded) {
137
137
  if (hasMetadata !== 0 && hasMetadata !== 1) {
138
138
  throw new TypeError('Instance activation recovery metadata flag is invalid.');
139
139
  }
140
- const metadataFrame = hasMetadata === 1
141
- ? body.metadataFrame()
142
- : undefined;
140
+ const metadataFrame = hasMetadata === 1 ? body.metadataFrame() : undefined;
143
141
  const applicationPayloadFrame = body.takeRemaining();
144
142
  (0, service_wire_m6a_codec_1.validateApplicationPayloadFrame)(applicationPayloadFrame);
145
143
  if (!body.done) {
@@ -12,10 +12,10 @@ class ServiceLivenessRegistry {
12
12
  constructor(probeIntervalMs = exports.DEFAULT_SERVICE_PROBE_INTERVAL_MS, peerTimeoutMs = exports.DEFAULT_SERVICE_PEER_TIMEOUT_MS) {
13
13
  this.probeIntervalMs = probeIntervalMs;
14
14
  this.peerTimeoutMs = peerTimeoutMs;
15
- if (!Number.isFinite(probeIntervalMs)
16
- || probeIntervalMs <= 0
17
- || !Number.isFinite(peerTimeoutMs)
18
- || peerTimeoutMs <= probeIntervalMs) {
15
+ if (!Number.isFinite(probeIntervalMs) ||
16
+ probeIntervalMs <= 0 ||
17
+ !Number.isFinite(peerTimeoutMs) ||
18
+ peerTimeoutMs <= probeIntervalMs) {
19
19
  throw new RangeError('Liveness requires a positive probe interval and a larger timeout.');
20
20
  }
21
21
  }
@@ -34,10 +34,10 @@ class ServiceLivenessRegistry {
34
34
  }
35
35
  requestProbe(nodeRoutingId, connectionId, nowMs) {
36
36
  const current = this.peers.get(nodeRoutingId);
37
- if (current === undefined
38
- || current.connectionId !== connectionId
39
- || current.ready
40
- || current.outstandingProbe !== undefined)
37
+ if (current === undefined ||
38
+ current.connectionId !== connectionId ||
39
+ current.ready ||
40
+ current.outstandingProbe !== undefined)
41
41
  return false;
42
42
  current.nextProbeMs = Math.min(current.nextProbeMs, nowMs);
43
43
  return true;
@@ -51,9 +51,9 @@ class ServiceLivenessRegistry {
51
51
  }
52
52
  acknowledge(nodeRoutingId, connectionId, probeId, nowMs) {
53
53
  const current = this.peers.get(nodeRoutingId);
54
- if (current === undefined
55
- || current.connectionId !== connectionId
56
- || current.outstandingProbe !== probeId) {
54
+ if (current === undefined ||
55
+ current.connectionId !== connectionId ||
56
+ current.outstandingProbe !== probeId) {
57
57
  return false;
58
58
  }
59
59
  current.outstandingProbe = undefined;
@@ -80,7 +80,11 @@ class ServiceLivenessRegistry {
80
80
  if (peer.nextProbeMs > nowMs)
81
81
  continue;
82
82
  peer.outstandingProbe ??= this.allocateProbeId();
83
- probes.push({ nodeRoutingId, connectionId: peer.connectionId, probeId: peer.outstandingProbe });
83
+ probes.push({
84
+ nodeRoutingId,
85
+ connectionId: peer.connectionId,
86
+ probeId: peer.outstandingProbe
87
+ });
84
88
  do {
85
89
  peer.nextProbeMs += this.probeIntervalMs;
86
90
  } while (peer.nextProbeMs <= nowMs);
@@ -78,7 +78,7 @@ class ServiceMaintenanceRuntime {
78
78
  }
79
79
  try {
80
80
  this.transition('preparing');
81
- if (!await this.options.preflight(kind, controller.signal)) {
81
+ if (!(await this.options.preflight(kind, controller.signal))) {
82
82
  return await this.transitionAsync('blocked');
83
83
  }
84
84
  if (kind === 'retire') {
@@ -192,7 +192,5 @@ function startOutsideStateLane(work) {
192
192
  function classifyRelocationRecovery(publishedReference, payloadPresent, checksumMatches, inventoryMatches) {
193
193
  if (!publishedReference)
194
194
  return payloadPresent ? 'orphan' : 'resume';
195
- return payloadPresent && checksumMatches && inventoryMatches
196
- ? 'resume'
197
- : 'relocationDataLost';
195
+ return payloadPresent && checksumMatches && inventoryMatches ? 'resume' : 'relocationDataLost';
198
196
  }
@@ -28,7 +28,7 @@ class ServiceRelocationAggregateCommitter {
28
28
  // A heartbeat can change one of those versions while every authority
29
29
  // row remains the exact Store-confirmed value in this plan. Retry only
30
30
  // that coordination loss; a changed authority row leaves immediately.
31
- if (!await this.authorityStoreVersionsUnchanged(plan, signal))
31
+ if (!(await this.authorityStoreVersionsUnchanged(plan, signal)))
32
32
  break;
33
33
  signal?.throwIfAborted();
34
34
  result = await this.store.prepareAggregate(request, signal);
@@ -36,8 +36,8 @@ class ServiceRelocationAggregateCommitter {
36
36
  if (result.kind !== 'prepared' && result.kind !== 'alreadyPrepared') {
37
37
  throw new Error(`Location Store rejected relocation aggregate prepare: ${result.kind}.`);
38
38
  }
39
- if (result.fence.aggregateId.value !== aggregateId.value
40
- || result.fence.aggregateGeneration !== plan.envelope.aggregateGeneration) {
39
+ if (result.fence.aggregateId.value !== aggregateId.value ||
40
+ result.fence.aggregateGeneration !== plan.envelope.aggregateGeneration) {
41
41
  throw new Error('Location Store returned a different relocation aggregate fence.');
42
42
  }
43
43
  return { fence: result.fence, plan };
@@ -45,8 +45,8 @@ class ServiceRelocationAggregateCommitter {
45
45
  async authorityStoreVersionsUnchanged(plan, signal) {
46
46
  for (const participant of plan.participants) {
47
47
  const current = await this.store.readAuthority(participant.key, signal);
48
- if (current.kind !== 'snapshot'
49
- || current.storeVersion.value !== participant.expected.storeVersion.value) {
48
+ if (current.kind !== 'snapshot' ||
49
+ current.storeVersion.value !== participant.expected.storeVersion.value) {
50
50
  return false;
51
51
  }
52
52
  }
@@ -83,22 +83,22 @@ class ServiceRelocationAggregateCommitter {
83
83
  const committed = new Map();
84
84
  for (const participant of plan.participants) {
85
85
  const current = await this.store.readAuthority(participant.key, signal);
86
- if (current.kind !== 'snapshot'
87
- || current.objectGeneration !== participant.expected.objectGeneration
88
- || current.storeVersion.value === participant.expected.storeVersion.value
89
- || !Buffer.from(current.payload).equals(Buffer.from(participant.authorityPayload))) {
86
+ if (current.kind !== 'snapshot' ||
87
+ current.objectGeneration !== participant.expected.objectGeneration ||
88
+ current.storeVersion.value === participant.expected.storeVersion.value ||
89
+ !Buffer.from(current.payload).equals(Buffer.from(participant.authorityPayload))) {
90
90
  throw new Error('Committed relocation aggregate does not match its exact participant plan.');
91
91
  }
92
92
  if (participant.ownerTransition === 'newOwner') {
93
- if (current.ownerId !== plan.targetOwner.ownerId
94
- || current.ownerLeaseGeneration !== plan.targetOwner.leaseGeneration
95
- || current.authorityOwnerGeneration <= participant.expected.authorityOwnerGeneration) {
93
+ if (current.ownerId !== plan.targetOwner.ownerId ||
94
+ current.ownerLeaseGeneration !== plan.targetOwner.leaseGeneration ||
95
+ current.authorityOwnerGeneration <= participant.expected.authorityOwnerGeneration) {
96
96
  throw new Error('Committed relocation participant has a different owner fence.');
97
97
  }
98
98
  }
99
- else if (current.ownerId !== participant.expected.ownerId
100
- || current.ownerLeaseGeneration !== participant.expected.ownerLeaseGeneration
101
- || current.authorityOwnerGeneration !== participant.expected.authorityOwnerGeneration) {
99
+ else if (current.ownerId !== participant.expected.ownerId ||
100
+ current.ownerLeaseGeneration !== participant.expected.ownerLeaseGeneration ||
101
+ current.authorityOwnerGeneration !== participant.expected.authorityOwnerGeneration) {
102
102
  throw new Error('Preserved relocation participant changed its owner fence.');
103
103
  }
104
104
  committed.set(participant.key.value, current);
@@ -108,17 +108,17 @@ class ServiceRelocationAggregateCommitter {
108
108
  }
109
109
  exports.ServiceRelocationAggregateCommitter = ServiceRelocationAggregateCommitter;
110
110
  function validateAndEncodeParticipants(plan) {
111
- const envelopeByKey = new Map(plan.envelope.participants.map(value => [value.key, value]));
111
+ const envelopeByKey = new Map(plan.envelope.participants.map((value) => [value.key, value]));
112
112
  const ordered = [...plan.participants].sort((left, right) => left.key.value.localeCompare(right.key.value));
113
- if (ordered.length !== plan.envelope.participants.length
114
- || new Set(ordered.map(({ key }) => key.value)).size !== ordered.length) {
113
+ if (ordered.length !== plan.envelope.participants.length ||
114
+ new Set(ordered.map(({ key }) => key.value)).size !== ordered.length) {
115
115
  throw new TypeError('Relocation aggregate plan must cover every participant exactly once.');
116
116
  }
117
- return ordered.map(participant => {
117
+ return ordered.map((participant) => {
118
118
  const envelope = envelopeByKey.get(participant.key.value);
119
- if (envelope === undefined
120
- || envelope.objectGeneration !== participant.expected.objectGeneration
121
- || envelope.authorityOwnerGeneration !== participant.expected.authorityOwnerGeneration) {
119
+ if (envelope === undefined ||
120
+ envelope.objectGeneration !== participant.expected.objectGeneration ||
121
+ envelope.authorityOwnerGeneration !== participant.expected.authorityOwnerGeneration) {
122
122
  throw new TypeError('Relocation aggregate participant fence differs from its envelope.');
123
123
  }
124
124
  return {
@@ -131,8 +131,8 @@ function validateAndEncodeParticipants(plan) {
131
131
  });
132
132
  }
133
133
  function aggregateIdentity(value) {
134
- if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(value)
135
- || /^0{8}-0{4}-0{4}-0{4}-0{12}$/.test(value)) {
134
+ if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(value) ||
135
+ /^0{8}-0{4}-0{4}-0{4}-0{12}$/.test(value)) {
136
136
  throw new TypeError('Relocation aggregate id must be a lowercase non-zero 128-bit identity.');
137
137
  }
138
138
  return { value };
@@ -49,7 +49,7 @@ class ServiceRelocationObjectCaptureOwner {
49
49
  requireCallbackConcurrency(maxConcurrentCallbacks);
50
50
  }
51
51
  async captureUserSpotAggregate(aggregateId, aggregateGeneration, spot, actors, memberships, signal) {
52
- if (spot.objectKind !== 'user_spot' || actors.some(actor => actor.objectKind !== 'actor')) {
52
+ if (spot.objectKind !== 'user_spot' || actors.some((actor) => actor.objectKind !== 'actor')) {
53
53
  throw new TypeError('User Spot relocation requires one Spot and only Actor participants.');
54
54
  }
55
55
  if (actors.length !== memberships.length) {
@@ -64,8 +64,8 @@ class ServiceRelocationObjectCaptureOwner {
64
64
  return await this.capture(aggregateId, aggregateGeneration, [actor], [membership], signal);
65
65
  }
66
66
  async captureInstanceSpotAggregate(aggregateId, aggregateGeneration, spot, actors, memberships, signal) {
67
- if (spot.objectKind !== 'instance_spot'
68
- || actors.some(actor => actor.objectKind !== 'actor')) {
67
+ if (spot.objectKind !== 'instance_spot' ||
68
+ actors.some((actor) => actor.objectKind !== 'actor')) {
69
69
  throw new TypeError('Instance Spot relocation requires one Spot and only Actor participants.');
70
70
  }
71
71
  if (actors.length !== memberships.length) {
@@ -89,11 +89,11 @@ class ServiceRelocationObjectCaptureOwner {
89
89
  authorityOwnerGeneration: unit.authorityOwnerGeneration,
90
90
  applicationState: Buffer.from(await unit.captureApplicationState(signal)),
91
91
  boundSessionState: Buffer.from(work.boundSessionState),
92
- queuedMessages: work.queuedMessages.map(message => ({
92
+ queuedMessages: work.queuedMessages.map((message) => ({
93
93
  sequence: message.sequence,
94
94
  payload: Buffer.from(message.payload)
95
95
  })),
96
- timers: work.timers.map(timer => ({ ...timer }))
96
+ timers: work.timers.map((timer) => ({ ...timer }))
97
97
  }), signal);
98
98
  return new ServiceCapturedObjectRelocation({
99
99
  aggregateId,
@@ -140,7 +140,7 @@ class ServiceRelocationObjectRestoreOwner {
140
140
  }
141
141
  hidden.set(created.authorityKey, created);
142
142
  }
143
- await mapConcurrentOrdered(participants, this.maxConcurrentCallbacks, participant => this.target.restoreApplicationState(hidden.get(participant.key), participant.applicationState, signal), signal);
143
+ await mapConcurrentOrdered(participants, this.maxConcurrentCallbacks, (participant) => this.target.restoreApplicationState(hidden.get(participant.key), participant.applicationState, signal), signal);
144
144
  await this.target.restoreMemberships(hidden, envelope.memberships, signal);
145
145
  const spot = envelope.participants.find(({ objectKind }) => objectKind === 'user_spot' || objectKind === 'instance_spot');
146
146
  const primary = spot ?? envelope.participants[0];