@zlink-systems/framework 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
  13. package/dist/contracts/Handlers/JsonContract.js +23 -11
  14. package/dist/contracts/Spots/SpotKind.js +16 -8
  15. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
  16. package/dist/location-store-integration.js +16 -16
  17. package/dist/nest-integration.js +17 -11
  18. package/dist/runtime/abort.js +9 -5
  19. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  20. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  21. package/dist/runtime/actors/actor-client.js +83 -63
  22. package/dist/runtime/actors/actor-context.js +28 -22
  23. package/dist/runtime/actors/actor-creation.js +4 -3
  24. package/dist/runtime/actors/actor-handoff.js +89 -92
  25. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
  26. package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
  27. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  28. package/dist/runtime/actors/actor-mailbox.js +1 -1
  29. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  30. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  31. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  32. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  33. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  34. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  35. package/dist/runtime/actors/bound-session-wire.js +14 -9
  36. package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
  37. package/dist/runtime/actors/index.js +2 -5
  38. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  39. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  40. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  41. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  42. package/dist/runtime/admission.js +2 -6
  43. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  44. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  45. package/dist/runtime/backend/contracts/index.d.ts +1 -0
  46. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  47. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  48. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  49. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  50. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  51. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  52. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
  53. package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
  54. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  55. package/dist/runtime/backend/runtime-message.js +3 -3
  56. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  57. package/dist/runtime/backend/runtime-values.js +4 -5
  58. package/dist/runtime/channels/channel-clients.js +27 -24
  59. package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
  60. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  61. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  62. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  63. package/dist/runtime/channels/channel-envelope.js +83 -47
  64. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  65. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  66. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  67. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  68. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  69. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  70. package/dist/runtime/channels/channel-transports.js +46 -42
  71. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  72. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  73. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
  74. package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
  75. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  76. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  77. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  78. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  79. package/dist/runtime/channels/source-spot-router.js +6 -2
  80. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  81. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  82. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  83. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
  84. package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
  85. package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
  86. package/dist/runtime/diagnostics/flow-context.js +2 -2
  87. package/dist/runtime/diagnostics/index.js +38 -10
  88. package/dist/runtime/diagnostics/message-flow.js +58 -42
  89. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  90. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  91. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  92. package/dist/runtime/execution/index.js +7 -6
  93. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  94. package/dist/runtime/execution/state-lane.js +2 -2
  95. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
  96. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  97. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  98. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
  99. package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
  100. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  101. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  102. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  103. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  104. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  105. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  106. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  107. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  108. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  109. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  110. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  111. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
  112. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  113. package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
  114. package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
  115. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  116. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
  117. package/dist/runtime/foundation/service-topology-registry.js +105 -96
  118. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  119. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  120. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  121. package/dist/runtime/framework-errors-internal.js +7 -10
  122. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  123. package/dist/runtime/handlers/index.js +3 -1
  124. package/dist/runtime/host/actor-packet-relay.js +74 -70
  125. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  126. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  127. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  128. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  129. package/dist/runtime/host/application-job-queue.js +18 -22
  130. package/dist/runtime/host/bound-session-relay.js +3 -1
  131. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  132. package/dist/runtime/host/host-capacity-status.js +8 -4
  133. package/dist/runtime/host/index.js +245 -228
  134. package/dist/runtime/host/instance-activation-authority.js +93 -96
  135. package/dist/runtime/host/location-runtime-owner.js +16 -14
  136. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  137. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  138. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  139. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  140. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  141. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  142. package/dist/runtime/host/runtime-shutdown.js +1 -2
  143. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  144. package/dist/runtime/host/spot-address-transport.js +69 -71
  145. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  146. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  147. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  148. package/dist/runtime/locations/actor-location-claims.js +26 -20
  149. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  150. package/dist/runtime/locations/authority-key-codec.js +7 -7
  151. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  152. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  153. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  154. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  155. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  156. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  157. package/dist/runtime/locations/key-codec.js +1 -1
  158. package/dist/runtime/locations/lease-tracker.js +23 -21
  159. package/dist/runtime/locations/lifecycle.js +4 -5
  160. package/dist/runtime/locations/location-store-repository.js +368 -324
  161. package/dist/runtime/locations/opaque-record-key.js +2 -2
  162. package/dist/runtime/locations/resolvers.js +73 -82
  163. package/dist/runtime/locations/runtime.js +68 -63
  164. package/dist/runtime/locations/spot-location-claims.js +39 -35
  165. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  166. package/dist/runtime/messaging/packet-name.js +7 -6
  167. package/dist/runtime/messaging/payload-codec.js +21 -18
  168. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  169. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  170. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
  171. package/dist/runtime/routing-id.js +3 -5
  172. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  173. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  174. package/dist/runtime/spots/index.js +209 -220
  175. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  176. package/dist/runtime/spots/spot-activation-state.js +17 -15
  177. package/dist/runtime/spots/spot-activation.js +33 -16
  178. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  179. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  180. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
  181. package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
  182. package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
  183. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  184. package/dist/runtime/spots/spot-closing.js +3 -7
  185. package/dist/runtime/spots/spot-context.js +2 -2
  186. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  187. package/dist/runtime/spots/spot-handle.js +6 -3
  188. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  189. package/dist/runtime/spots/spot-manager-public.js +5 -6
  190. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  191. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  192. package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
  193. package/dist/runtime/spots/spot-outbound.js +10 -14
  194. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  195. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  196. package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
  197. package/dist/runtime/spots/spot-route-replies.js +4 -6
  198. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  199. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
  200. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  201. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  202. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  203. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  204. package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
  205. package/dist/runtime/spots/spot-timer.js +26 -30
  206. package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
  207. package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
  208. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
  209. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  210. package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
  211. package/dist/runtime/streams/bound-session-response-target.js +8 -1
  212. package/dist/runtime/streams/bound-session-service.d.ts +1 -0
  213. package/dist/runtime/streams/bound-session-service.js +14 -12
  214. package/dist/runtime/streams/index.js +28 -20
  215. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  216. package/dist/runtime/streams/managed-stream.js +52 -31
  217. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  218. package/dist/runtime/streams/protocol.d.ts +5 -1
  219. package/dist/runtime/streams/protocol.js +68 -20
  220. package/dist/runtime/streams/session-actor-coordinator.js +37 -41
  221. package/dist/runtime/streams/session-context.d.ts +9 -2
  222. package/dist/runtime/streams/session-context.js +50 -32
  223. package/dist/runtime/streams/session-local-actors.d.ts +3 -1
  224. package/dist/runtime/streams/session-local-actors.js +17 -2
  225. package/dist/runtime/streams/session-provider.js +2 -2
  226. package/dist/runtime/streams/session-serial-executor.js +1 -2
  227. package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
  228. package/dist/runtime/streams/stream-frame-factory.js +14 -7
  229. package/dist/runtime/streams/stream-session-runtime.js +112 -78
  230. package/dist/runtime/workers/index.js +15 -4
  231. package/package.json +3 -3
  232. package/src/contracts/Channels/RouteCalls.ts +6 -1
  233. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  234. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  235. package/src/contracts/Configuration/Builders.ts +14 -14
  236. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  237. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  238. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  239. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  240. package/src/contracts/Configuration/Registration.ts +46 -17
  241. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  242. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  243. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  244. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  245. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  246. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  247. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  248. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  249. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  250. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  251. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
  252. package/src/contracts/Errors/index.ts +1 -4
  253. package/src/contracts/Handlers/Attributes.ts +15 -9
  254. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  255. package/src/contracts/Handlers/JsonContract.ts +53 -19
  256. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  257. package/src/contracts/Locations/Authority.ts +4 -11
  258. package/src/contracts/Locations/Keys.ts +6 -1
  259. package/src/contracts/Locations/Options.ts +3 -2
  260. package/src/contracts/Locations/RelocationStore.ts +1 -4
  261. package/src/contracts/Locations/Resolvers.ts +5 -5
  262. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  263. package/src/contracts/Locations/Stores.ts +1 -2
  264. package/src/contracts/Locations/index.ts +2 -8
  265. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  266. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  267. package/src/contracts/Spots/Contracts.ts +2 -8
  268. package/src/contracts/Spots/SpotKind.ts +16 -8
  269. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  270. package/src/contracts/Streams/IZLinkSession.ts +2 -2
  271. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  272. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  273. package/src/internal.ts +5 -4
  274. package/src/location-store-integration.ts +24 -16
  275. package/src/nest-integration.ts +40 -25
  276. package/src/runtime/abort.ts +10 -4
  277. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  278. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  279. package/src/runtime/actors/actor-client.ts +162 -133
  280. package/src/runtime/actors/actor-context.ts +142 -134
  281. package/src/runtime/actors/actor-creation.ts +47 -44
  282. package/src/runtime/actors/actor-execution-context.ts +6 -4
  283. package/src/runtime/actors/actor-handoff.ts +269 -293
  284. package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
  285. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  286. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  287. package/src/runtime/actors/actor-mailbox.ts +16 -19
  288. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  289. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  290. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  291. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  292. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  293. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  294. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  295. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  296. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  297. package/src/runtime/actors/bound-session-wire.ts +37 -17
  298. package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
  299. package/src/runtime/actors/index.ts +43 -86
  300. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  301. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  302. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  303. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  304. package/src/runtime/admission.ts +9 -9
  305. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  306. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  307. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  308. package/src/runtime/backend/contracts/index.ts +77 -52
  309. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  310. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  311. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  312. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  313. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  314. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  315. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  316. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  317. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  318. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  319. package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
  320. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  321. package/src/runtime/backend/runtime-message.ts +5 -3
  322. package/src/runtime/backend/runtime-values.ts +10 -7
  323. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  324. package/src/runtime/channels/channel-clients.ts +93 -73
  325. package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
  326. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  327. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  328. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  329. package/src/runtime/channels/channel-envelope.ts +256 -150
  330. package/src/runtime/channels/channel-multipart.ts +13 -5
  331. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  332. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  333. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  334. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  335. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  336. package/src/runtime/channels/channel-socket-options.ts +3 -10
  337. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  338. package/src/runtime/channels/channel-transports.ts +218 -206
  339. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  340. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  341. package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
  342. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  343. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  344. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  345. package/src/runtime/channels/index.ts +1 -4
  346. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  347. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  348. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  349. package/src/runtime/channels/source-spot-router.ts +26 -22
  350. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  351. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  352. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  353. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  354. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  355. package/src/runtime/codecs/index.ts +3 -2
  356. package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
  357. package/src/runtime/diagnostics/flow-context.ts +18 -7
  358. package/src/runtime/diagnostics/index.ts +96 -61
  359. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  360. package/src/runtime/diagnostics/message-flow.ts +107 -79
  361. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  362. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  363. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  364. package/src/runtime/execution/index.ts +18 -26
  365. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  366. package/src/runtime/execution/state-lane.ts +2 -2
  367. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
  368. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  369. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  370. package/src/runtime/foundation/operation-identity.ts +1 -2
  371. package/src/runtime/foundation/operation-registry.ts +8 -2
  372. package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
  373. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  374. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  375. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  376. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  377. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  378. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  379. package/src/runtime/foundation/service-mailbox.ts +14 -14
  380. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  381. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  382. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  383. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  384. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  385. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  386. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  387. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
  388. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  389. package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
  390. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  391. package/src/runtime/foundation/service-topology-registry.ts +170 -159
  392. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  393. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  394. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  395. package/src/runtime/framework-errors-internal.ts +31 -30
  396. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  397. package/src/runtime/handlers/index.ts +18 -8
  398. package/src/runtime/host/actor-packet-relay.ts +290 -261
  399. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  400. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  401. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  402. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  403. package/src/runtime/host/application-job-queue.ts +32 -48
  404. package/src/runtime/host/bound-session-relay.ts +7 -9
  405. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  406. package/src/runtime/host/host-capacity-status.ts +10 -9
  407. package/src/runtime/host/index.ts +861 -789
  408. package/src/runtime/host/instance-activation-authority.ts +125 -143
  409. package/src/runtime/host/location-runtime-owner.ts +38 -26
  410. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  411. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  412. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  413. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  414. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  415. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  416. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  417. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  418. package/src/runtime/host/runtime-shutdown.ts +4 -3
  419. package/src/runtime/host/service-relocation-control.ts +14 -5
  420. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  421. package/src/runtime/host/spot-address-transport.ts +284 -237
  422. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  423. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  424. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  425. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  426. package/src/runtime/locations/actor-location-claims.ts +61 -49
  427. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  428. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  429. package/src/runtime/locations/authority-key-codec.ts +13 -10
  430. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  431. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  432. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  433. package/src/runtime/locations/canonical-codec.ts +3 -1
  434. package/src/runtime/locations/creation-operation-id.ts +4 -3
  435. package/src/runtime/locations/domain-store-contract.ts +13 -7
  436. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  437. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  438. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  439. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  440. package/src/runtime/locations/key-codec.ts +3 -4
  441. package/src/runtime/locations/lease-tracker.ts +36 -27
  442. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  443. package/src/runtime/locations/lifecycle.ts +33 -28
  444. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  445. package/src/runtime/locations/opaque-record-key.ts +4 -9
  446. package/src/runtime/locations/resolvers.ts +201 -178
  447. package/src/runtime/locations/runtime.ts +251 -159
  448. package/src/runtime/locations/spot-location-claims.ts +110 -112
  449. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  450. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  451. package/src/runtime/messaging/packet-name.ts +8 -6
  452. package/src/runtime/messaging/payload-codec.ts +70 -50
  453. package/src/runtime/messaging/submission-result.ts +6 -9
  454. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  455. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
  456. package/src/runtime/routing-id.ts +10 -7
  457. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  458. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  459. package/src/runtime/spots/index.ts +595 -564
  460. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  461. package/src/runtime/spots/spot-activation-state.ts +43 -51
  462. package/src/runtime/spots/spot-activation.ts +179 -116
  463. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  464. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  465. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  466. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  467. package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
  468. package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
  469. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  470. package/src/runtime/spots/spot-closing.ts +11 -12
  471. package/src/runtime/spots/spot-context.ts +46 -26
  472. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  473. package/src/runtime/spots/spot-handle.ts +17 -15
  474. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  475. package/src/runtime/spots/spot-location-claim.ts +5 -4
  476. package/src/runtime/spots/spot-manager-public.ts +62 -82
  477. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  478. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  479. package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
  480. package/src/runtime/spots/spot-outbound.ts +47 -59
  481. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  482. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  483. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  484. package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
  485. package/src/runtime/spots/spot-route-replies.ts +23 -24
  486. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  487. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  488. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
  489. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  490. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  491. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  492. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  493. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  494. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  495. package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
  496. package/src/runtime/spots/spot-timer.ts +103 -91
  497. package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
  498. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
  499. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  500. package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
  501. package/src/runtime/streams/bound-session-response-target.ts +39 -9
  502. package/src/runtime/streams/bound-session-service.ts +52 -42
  503. package/src/runtime/streams/index.ts +183 -100
  504. package/src/runtime/streams/managed-stream.ts +123 -90
  505. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  506. package/src/runtime/streams/protocol.ts +115 -46
  507. package/src/runtime/streams/session-actor-coordinator.ts +109 -93
  508. package/src/runtime/streams/session-calls.ts +2 -8
  509. package/src/runtime/streams/session-context.ts +96 -51
  510. package/src/runtime/streams/session-local-actors.ts +19 -3
  511. package/src/runtime/streams/session-provider.ts +5 -7
  512. package/src/runtime/streams/session-serial-executor.ts +7 -6
  513. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  514. package/src/runtime/streams/stream-frame-factory.ts +59 -40
  515. package/src/runtime/streams/stream-session-runtime.ts +317 -214
  516. package/src/runtime/workers/index.ts +68 -29
@@ -82,8 +82,10 @@ interface AggregateRecord {
82
82
  */
83
83
  export class ZLinkInMemoryAuthorityStore {
84
84
  private readonly rows = new Map<string, AuthorityRow>();
85
- private readonly creationTerminals =
86
- new Map<string, 'committed' | 'rejected' | 'failed' | 'aborted'>();
85
+ private readonly creationTerminals = new Map<
86
+ string,
87
+ 'committed' | 'rejected' | 'failed' | 'aborted'
88
+ >();
87
89
  private readonly operationTerminals = new Map<string, ZLinkCreationTerminalRecord>();
88
90
  private readonly aggregates = new Map<string, AggregateRecord>();
89
91
  private readonly activeCapacity = new Map<string, number>();
@@ -118,9 +120,9 @@ export class ZLinkInMemoryAuthorityStore {
118
120
  validateAuthorityMutation(mutation);
119
121
  const row = this.rows.get(keyValue);
120
122
  if (
121
- row === undefined
122
- || row.snapshot.allocation.state !== 'active'
123
- || row.snapshot.storeVersion.value !== expectedStoreVersion.value
123
+ row === undefined ||
124
+ row.snapshot.allocation.state !== 'active' ||
125
+ row.snapshot.storeVersion.value !== expectedStoreVersion.value
124
126
  ) {
125
127
  return { kind: 'conflict', current: this.read(keyValue) };
126
128
  }
@@ -144,10 +146,10 @@ export class ZLinkInMemoryAuthorityStore {
144
146
  leaseGeneration: row.snapshot.ownerLeaseGeneration
145
147
  };
146
148
  if (
147
- !sameOwner(mutation.expectedOwner, currentOwner)
148
- || mutation.targetOwner.ownerId !== currentOwner.ownerId
149
- || mutation.targetOwner.leaseGeneration === currentOwner.leaseGeneration
150
- || !this.validation.isTargetLive(
149
+ !sameOwner(mutation.expectedOwner, currentOwner) ||
150
+ mutation.targetOwner.ownerId !== currentOwner.ownerId ||
151
+ mutation.targetOwner.leaseGeneration === currentOwner.leaseGeneration ||
152
+ !this.validation.isTargetLive(
151
153
  row.snapshot.allocation.descriptor,
152
154
  row.snapshot.allocation.descriptorLifecycleGeneration,
153
155
  mutation.targetOwner
@@ -167,10 +169,12 @@ export class ZLinkInMemoryAuthorityStore {
167
169
  return this.stored(row.snapshot);
168
170
  }
169
171
  if (mutation.kind === 'restore') {
170
- if (!sameOwner(mutation.expectedOwner, {
171
- ownerId: row.snapshot.ownerId,
172
- leaseGeneration: row.snapshot.ownerLeaseGeneration
173
- })) {
172
+ if (
173
+ !sameOwner(mutation.expectedOwner, {
174
+ ownerId: row.snapshot.ownerId,
175
+ leaseGeneration: row.snapshot.ownerLeaseGeneration
176
+ })
177
+ ) {
174
178
  return { kind: 'conflict', current: this.read(keyValue) };
175
179
  }
176
180
  const nextVersion = this.tryNextStoreVersion();
@@ -207,9 +211,10 @@ export class ZLinkInMemoryAuthorityStore {
207
211
  if (!Number.isInteger(limit) || limit < 1 || limit > 1000) {
208
212
  throw new RangeError('Authority scan limit must be in 1..1000.');
209
213
  }
210
- const decoded = cursor === undefined
211
- ? { revision: this.scanRevision, offset: 0, prefix }
212
- : decodeCursor(cursor.encoded);
214
+ const decoded =
215
+ cursor === undefined
216
+ ? { revision: this.scanRevision, offset: 0, prefix }
217
+ : decodeCursor(cursor.encoded);
213
218
  if (decoded.revision !== this.scanRevision || decoded.prefix !== prefix) {
214
219
  return { kind: 'scanExpired' };
215
220
  }
@@ -224,23 +229,20 @@ export class ZLinkInMemoryAuthorityStore {
224
229
  key: authorityKey(key),
225
230
  snapshot: this.snapshot(row.snapshot)
226
231
  })),
227
- nextCursor: nextOffset < rows.length
228
- ? scanCursor(this.scanRevision, nextOffset, prefix)
229
- : undefined
232
+ nextCursor:
233
+ nextOffset < rows.length ? scanCursor(this.scanRevision, nextOffset, prefix) : undefined
230
234
  };
231
235
  }
232
236
 
233
- async removeAllByOwner(
234
- owner: ZLinkLocationOwnerToken,
235
- signal?: AbortSignal
236
- ): Promise<bigint> {
237
+ async removeAllByOwner(owner: ZLinkLocationOwnerToken, signal?: AbortSignal): Promise<bigint> {
237
238
  signal?.throwIfAborted();
238
239
  let removed = 0;
239
240
  for (const [key, row] of [...this.rows.entries()]) {
240
241
  if (
241
- row.snapshot.ownerId !== owner.ownerId
242
- || row.snapshot.ownerLeaseGeneration !== owner.leaseGeneration
243
- ) continue;
242
+ row.snapshot.ownerId !== owner.ownerId ||
243
+ row.snapshot.ownerLeaseGeneration !== owner.leaseGeneration
244
+ )
245
+ continue;
244
246
  if (row.snapshot.allocation.state === 'active') {
245
247
  this.adjustCapacity(this.activeCapacity, row.snapshot.allocation, -1);
246
248
  } else {
@@ -266,8 +268,8 @@ export class ZLinkInMemoryAuthorityStore {
266
268
  const current = this.rows.get(key);
267
269
  if (current !== undefined) {
268
270
  if (
269
- current.snapshot.allocation.objectKind !== request.key.kind
270
- || current.snapshot.allocation.stableType !== request.intent.stableType
271
+ current.snapshot.allocation.objectKind !== request.key.kind ||
272
+ current.snapshot.allocation.stableType !== request.intent.stableType
271
273
  ) {
272
274
  return { kind: 'typeMismatch', current: this.snapshot(current.snapshot) };
273
275
  }
@@ -285,7 +287,9 @@ export class ZLinkInMemoryAuthorityStore {
285
287
  this.scanRevision++;
286
288
  }
287
289
  const target = creationTarget(request);
288
- if (!this.validation.isTargetLive(target.descriptor, target.lifecycleGeneration, target.owner)) {
290
+ if (
291
+ !this.validation.isTargetLive(target.descriptor, target.lifecycleGeneration, target.owner)
292
+ ) {
289
293
  return { kind: 'conflict', current: this.read(key) };
290
294
  }
291
295
  const allocation: ZLinkPlacementAllocation = {
@@ -300,9 +304,9 @@ export class ZLinkInMemoryAuthorityStore {
300
304
  return { kind: 'placementCapacityExhausted' };
301
305
  }
302
306
  if (
303
- this.storeVersion >= MAX_GENERATION
304
- || this.objectGeneration >= MAX_GENERATION
305
- || this.ownerGeneration >= MAX_GENERATION
307
+ this.storeVersion >= MAX_GENERATION ||
308
+ this.objectGeneration >= MAX_GENERATION ||
309
+ this.ownerGeneration >= MAX_GENERATION
306
310
  ) {
307
311
  return { kind: 'generationExhausted' };
308
312
  }
@@ -350,12 +354,12 @@ export class ZLinkInMemoryAuthorityStore {
350
354
  return { kind: 'alreadyCommitted', ready: this.snapshot(row.snapshot) };
351
355
  }
352
356
  if (
353
- row === undefined
354
- || row.snapshot.allocation.state !== 'reserved'
355
- || row.creation?.reservationId !== request.reservationId
356
- || row.snapshot.storeVersion.value !== request.expectedStoreVersion
357
- || !sameCreationTarget(row.creation.target, request.target)
358
- || !this.validation.isTargetLive(
357
+ row === undefined ||
358
+ row.snapshot.allocation.state !== 'reserved' ||
359
+ row.creation?.reservationId !== request.reservationId ||
360
+ row.snapshot.storeVersion.value !== request.expectedStoreVersion ||
361
+ !sameCreationTarget(row.creation.target, request.target) ||
362
+ !this.validation.isTargetLive(
359
363
  row.creation.target.descriptor,
360
364
  row.creation.target.lifecycleGeneration,
361
365
  row.creation.target.owner
@@ -393,27 +397,26 @@ export class ZLinkInMemoryAuthorityStore {
393
397
  if (request.completion.kind === 'created') {
394
398
  validatePayload(request.completion.readyPayload);
395
399
  }
396
- const terminalRecord = validateTerminalForMutation(
397
- request.completion.terminal,
398
- this.now()
399
- )!;
400
+ const terminalRecord = validateTerminalForMutation(request.completion.terminal, this.now())!;
400
401
  const existingTerminal = this.operationTerminals.get(
401
402
  creationOperationKey(terminalRecord.operation)
402
403
  );
403
- if (existingTerminal !== undefined
404
- && existingTerminal.expiresAt.getTime() > this.now().getTime()) {
404
+ if (
405
+ existingTerminal !== undefined &&
406
+ existingTerminal.expiresAt.getTime() > this.now().getTime()
407
+ ) {
405
408
  return {
406
409
  kind: 'alreadyCompleted',
407
410
  terminal: copyTerminalRecord(existingTerminal)
408
411
  };
409
412
  }
410
413
  const reservationTerminal = this.creationTerminals.get(request.reservationId);
411
- if (reservationTerminal === 'committed'
412
- || reservationTerminal === 'rejected'
413
- || reservationTerminal === 'failed') {
414
- const retained = this.operationTerminals.get(
415
- creationOperationKey(terminalRecord.operation)
416
- );
414
+ if (
415
+ reservationTerminal === 'committed' ||
416
+ reservationTerminal === 'rejected' ||
417
+ reservationTerminal === 'failed'
418
+ ) {
419
+ const retained = this.operationTerminals.get(creationOperationKey(terminalRecord.operation));
417
420
  return retained === undefined
418
421
  ? { kind: 'stale' }
419
422
  : { kind: 'alreadyCompleted', terminal: copyTerminalRecord(retained) };
@@ -421,12 +424,12 @@ export class ZLinkInMemoryAuthorityStore {
421
424
  const key = creationKey(request.key);
422
425
  const row = this.rows.get(key);
423
426
  if (
424
- row === undefined
425
- || row.snapshot.allocation.state !== 'reserved'
426
- || row.creation?.reservationId !== request.reservationId
427
- || row.snapshot.storeVersion.value !== request.expectedStoreVersion
428
- || !sameCreationTarget(row.creation.target, request.target)
429
- || !this.validation.isTargetLive(
427
+ row === undefined ||
428
+ row.snapshot.allocation.state !== 'reserved' ||
429
+ row.creation?.reservationId !== request.reservationId ||
430
+ row.snapshot.storeVersion.value !== request.expectedStoreVersion ||
431
+ !sameCreationTarget(row.creation.target, request.target) ||
432
+ !this.validation.isTargetLive(
430
433
  row.creation.target.descriptor,
431
434
  row.creation.target.lifecycleGeneration,
432
435
  row.creation.target.owner
@@ -460,10 +463,7 @@ export class ZLinkInMemoryAuthorityStore {
460
463
  row.creation.terminal = request.completion.kind;
461
464
  this.creationTerminals.set(request.reservationId, request.completion.kind);
462
465
  }
463
- this.operationTerminals.set(
464
- creationOperationKey(terminalRecord.operation),
465
- terminalRecord
466
- );
466
+ this.operationTerminals.set(creationOperationKey(terminalRecord.operation), terminalRecord);
467
467
  this.scanRevision++;
468
468
  const terminal = copyTerminalRecord(terminalRecord);
469
469
  return request.completion.kind === 'created'
@@ -508,11 +508,11 @@ export class ZLinkInMemoryAuthorityStore {
508
508
  const key = creationKey(request.key);
509
509
  const row = this.rows.get(key);
510
510
  if (
511
- row === undefined
512
- || row.snapshot.allocation.state !== 'reserved'
513
- || row.creation?.reservationId !== request.reservationId
514
- || row.snapshot.storeVersion.value !== request.expectedStoreVersion
515
- || !sameCreationTarget(row.creation.target, request.target)
511
+ row === undefined ||
512
+ row.snapshot.allocation.state !== 'reserved' ||
513
+ row.creation?.reservationId !== request.reservationId ||
514
+ row.snapshot.storeVersion.value !== request.expectedStoreVersion ||
515
+ !sameCreationTarget(row.creation.target, request.target)
516
516
  ) {
517
517
  return { kind: 'stale' };
518
518
  }
@@ -535,15 +535,15 @@ export class ZLinkInMemoryAuthorityStore {
535
535
  if (existing.state === 'prepared' && sameAggregateRequest(existing.request, request)) {
536
536
  return { kind: 'alreadyPrepared', fence: existing.fence };
537
537
  }
538
- return existing.state === 'committed'
539
- ? { kind: 'stale' }
540
- : { kind: 'conflict' };
538
+ return existing.state === 'committed' ? { kind: 'stale' } : { kind: 'conflict' };
541
539
  }
542
- if (!this.validation.isTargetLive(
543
- request.targetDescriptor,
544
- request.targetDescriptorLifecycleGeneration,
545
- request.targetOwner
546
- )) {
540
+ if (
541
+ !this.validation.isTargetLive(
542
+ request.targetDescriptor,
543
+ request.targetDescriptorLifecycleGeneration,
544
+ request.targetOwner
545
+ )
546
+ ) {
547
547
  return { kind: 'conflict' };
548
548
  }
549
549
  const target = aggregateTargetAllocation(request);
@@ -554,9 +554,9 @@ export class ZLinkInMemoryAuthorityStore {
554
554
  for (const participant of request.participants) {
555
555
  const row = this.rows.get(participant.authorityKey.value);
556
556
  if (
557
- row === undefined
558
- || row.snapshot.allocation.state !== 'active'
559
- || row.snapshot.storeVersion.value !== participant.expectedStoreVersion.value
557
+ row === undefined ||
558
+ row.snapshot.allocation.state !== 'active' ||
559
+ row.snapshot.storeVersion.value !== participant.expectedStoreVersion.value
560
560
  ) {
561
561
  return { kind: 'conflict' };
562
562
  }
@@ -600,18 +600,20 @@ export class ZLinkInMemoryAuthorityStore {
600
600
  for (const participant of aggregate.request.participants) {
601
601
  const row = this.rows.get(participant.authorityKey.value);
602
602
  if (
603
- row === undefined
604
- || row.snapshot.allocation.state !== 'active'
605
- || row.snapshot.storeVersion.value !== participant.expectedStoreVersion.value
603
+ row === undefined ||
604
+ row.snapshot.allocation.state !== 'active' ||
605
+ row.snapshot.storeVersion.value !== participant.expectedStoreVersion.value
606
606
  ) {
607
607
  return { kind: 'stale' };
608
608
  }
609
609
  if (participant.ownerTransition === 'newOwner') {
610
- if (!this.validation.isTargetLive(
611
- aggregate.request.targetDescriptor,
612
- aggregate.request.targetDescriptorLifecycleGeneration,
613
- aggregate.request.targetOwner
614
- )) {
610
+ if (
611
+ !this.validation.isTargetLive(
612
+ aggregate.request.targetDescriptor,
613
+ aggregate.request.targetDescriptorLifecycleGeneration,
614
+ aggregate.request.targetOwner
615
+ )
616
+ ) {
615
617
  return { kind: 'stale' };
616
618
  }
617
619
  ownersNeeded++;
@@ -622,8 +624,8 @@ export class ZLinkInMemoryAuthorityStore {
622
624
  rows.push({ participant, row, changesOwner: participant.ownerTransition === 'newOwner' });
623
625
  }
624
626
  if (
625
- this.storeVersion + versionsNeeded > MAX_GENERATION
626
- || this.ownerGeneration + ownersNeeded > MAX_GENERATION
627
+ this.storeVersion + versionsNeeded > MAX_GENERATION ||
628
+ this.ownerGeneration + ownersNeeded > MAX_GENERATION
627
629
  ) {
628
630
  return { kind: 'generationExhausted' };
629
631
  }
@@ -648,8 +650,7 @@ export class ZLinkInMemoryAuthorityStore {
648
650
  allocation: {
649
651
  ...entry.row.snapshot.allocation,
650
652
  descriptor: { ...aggregate.request.targetDescriptor },
651
- descriptorLifecycleGeneration:
652
- aggregate.request.targetDescriptorLifecycleGeneration,
653
+ descriptorLifecycleGeneration: aggregate.request.targetDescriptorLifecycleGeneration,
653
654
  capacity: cloneCapacity(entry.row.snapshot.allocation.capacity)
654
655
  }
655
656
  };
@@ -673,11 +674,7 @@ export class ZLinkInMemoryAuthorityStore {
673
674
  if (aggregate === undefined) return { kind: 'stale' };
674
675
  if (aggregate.state === 'aborted') return { kind: 'alreadyAborted' };
675
676
  if (aggregate.state !== 'prepared') return { kind: 'stale' };
676
- this.adjustCapacity(
677
- this.pendingCapacity,
678
- aggregateTargetAllocation(aggregate.request),
679
- -1
680
- );
677
+ this.adjustCapacity(this.pendingCapacity, aggregateTargetAllocation(aggregate.request), -1);
681
678
  aggregate.state = 'aborted';
682
679
  return { kind: 'aborted' };
683
680
  }
@@ -722,12 +719,14 @@ export class ZLinkInMemoryAuthorityStore {
722
719
  }
723
720
 
724
721
  private hasPendingCapacity(allocation: ZLinkPlacementAllocation): boolean {
725
- return this.validation.placementCapacityAvailable?.(
726
- allocation.descriptor,
727
- allocation.capacity,
728
- this.capacityVectorUsage(this.pendingCapacity, allocation),
729
- this.capacityVectorUsage(this.activeCapacity, allocation)
730
- ) ?? true;
722
+ return (
723
+ this.validation.placementCapacityAvailable?.(
724
+ allocation.descriptor,
725
+ allocation.capacity,
726
+ this.capacityVectorUsage(this.pendingCapacity, allocation),
727
+ this.capacityVectorUsage(this.activeCapacity, allocation)
728
+ ) ?? true
729
+ );
731
730
  }
732
731
 
733
732
  private adjustCapacity(
@@ -754,17 +753,17 @@ export class ZLinkInMemoryAuthorityStore {
754
753
  return {
755
754
  actors: values.get(capacityKey(descriptor, lifecycle, 'actor', '')) ?? 0,
756
755
  spots: values.get(capacityKey(descriptor, lifecycle, 'spot', '')) ?? 0,
757
- ...(spotType === undefined ? {} : {
758
- spotType: {
759
- ...spotType,
760
- count: values.get(capacityKey(
761
- descriptor,
762
- lifecycle,
763
- spotType.objectKind,
764
- spotType.stableType
765
- )) ?? 0
766
- }
767
- })
756
+ ...(spotType === undefined
757
+ ? {}
758
+ : {
759
+ spotType: {
760
+ ...spotType,
761
+ count:
762
+ values.get(
763
+ capacityKey(descriptor, lifecycle, spotType.objectKind, spotType.stableType)
764
+ ) ?? 0
765
+ }
766
+ })
768
767
  };
769
768
  }
770
769
 
@@ -781,11 +780,12 @@ export class ZLinkInMemoryAuthorityStore {
781
780
  objectKind: string,
782
781
  stableType: string
783
782
  ): { readonly active: number; readonly reserved: number } {
784
- const key = objectKind === 'actor'
785
- ? capacityKey(descriptor, lifecycleGeneration, 'actor', '')
786
- : objectKind === 'user_spot' || objectKind === 'instance_spot'
787
- ? capacityKey(descriptor, lifecycleGeneration, objectKind, stableType)
788
- : capacityKey(descriptor, lifecycleGeneration, 'spot', '');
783
+ const key =
784
+ objectKind === 'actor'
785
+ ? capacityKey(descriptor, lifecycleGeneration, 'actor', '')
786
+ : objectKind === 'user_spot' || objectKind === 'instance_spot'
787
+ ? capacityKey(descriptor, lifecycleGeneration, objectKind, stableType)
788
+ : capacityKey(descriptor, lifecycleGeneration, 'spot', '');
789
789
  return {
790
790
  active: this.activeCapacity.get(key) ?? 0,
791
791
  reserved: this.pendingCapacity.get(key) ?? 0
@@ -801,18 +801,19 @@ function validateAuthorityMutation(mutation: ZLinkAuthorityMutation): void {
801
801
  if (mutation.kind === 'delete' || mutation.kind === 'restore') return;
802
802
  if (mutation.kind === 'rebindOwnerLease') {
803
803
  if (
804
- mutation.expectedOwner.ownerId !== mutation.targetOwner.ownerId
805
- || mutation.expectedOwner.leaseGeneration === mutation.targetOwner.leaseGeneration
806
- || mutation.expectedOwner.leaseGeneration <= 0n
807
- || mutation.targetOwner.leaseGeneration <= 0n
804
+ mutation.expectedOwner.ownerId !== mutation.targetOwner.ownerId ||
805
+ mutation.expectedOwner.leaseGeneration === mutation.targetOwner.leaseGeneration ||
806
+ mutation.expectedOwner.leaseGeneration <= 0n ||
807
+ mutation.targetOwner.leaseGeneration <= 0n
808
808
  ) {
809
- throw new TypeError('Authority lease rebind must retain the owner and change the lease generation.');
809
+ throw new TypeError(
810
+ 'Authority lease rebind must retain the owner and change the lease generation.'
811
+ );
810
812
  }
811
813
  return;
812
814
  }
813
- const generationTransition = (
814
- mutation as { readonly generationTransition?: unknown }
815
- ).generationTransition;
815
+ const generationTransition = (mutation as { readonly generationTransition?: unknown })
816
+ .generationTransition;
816
817
  if (generationTransition !== 'preserve') {
817
818
  throw new TypeError('Authority owner transitions require an aggregate CAS.');
818
819
  }
@@ -825,9 +826,9 @@ function validateReserve(request: ZLinkObjectReserveRequest): void {
825
826
  validatePayload(request.creatingPayload);
826
827
  validateCapacityVector(request.capacity);
827
828
  if (
828
- request.intent.requestSha256.byteLength !== 32
829
- || request.intent.requestEncodedSize < 0n
830
- || request.intent.requestEncodedSize > BigInt(MAX_PAYLOAD_BYTES)
829
+ request.intent.requestSha256.byteLength !== 32 ||
830
+ request.intent.requestEncodedSize < 0n ||
831
+ request.intent.requestEncodedSize > BigInt(MAX_PAYLOAD_BYTES)
831
832
  ) {
832
833
  throw new TypeError('Object creation content receipt is invalid.');
833
834
  }
@@ -837,16 +838,18 @@ function validateCreationOperation(operation: ZLinkCreationOperationIdentity): v
837
838
  const sourceRid = String(operation.sourceNodeRid);
838
839
  const sourceRidBytes = Buffer.byteLength(sourceRid, 'utf8');
839
840
  if (sourceRidBytes < 1 || sourceRidBytes > 255 || sourceRid.includes('\0')) {
840
- throw new TypeError('Creation terminal source node RID must contain 1..255 UTF-8 bytes without NUL.');
841
+ throw new TypeError(
842
+ 'Creation terminal source node RID must contain 1..255 UTF-8 bytes without NUL.'
843
+ );
841
844
  }
842
845
  if (
843
- operation.sourceNodeGeneration < 1n
844
- || operation.sourceNodeGeneration > MAX_U64
845
- || operation.operationId.high < 0n
846
- || operation.operationId.high > MAX_U64
847
- || operation.operationId.low < 0n
848
- || operation.operationId.low > MAX_U64
849
- || (operation.operationId.high === 0n && operation.operationId.low === 0n)
846
+ operation.sourceNodeGeneration < 1n ||
847
+ operation.sourceNodeGeneration > MAX_U64 ||
848
+ operation.operationId.high < 0n ||
849
+ operation.operationId.high > MAX_U64 ||
850
+ operation.operationId.low < 0n ||
851
+ operation.operationId.low > MAX_U64 ||
852
+ (operation.operationId.high === 0n && operation.operationId.low === 0n)
850
853
  ) {
851
854
  throw new RangeError('Creation terminal source generation and operation ID are invalid.');
852
855
  }
@@ -864,11 +867,13 @@ function validateTerminalForMutation(
864
867
  const deadlineMs = publication.operationDeadline.getTime();
865
868
  const expiresAtMs = deadlineMs + CREATION_TERMINAL_RETENTION_MS;
866
869
  if (
867
- !Number.isSafeInteger(deadlineMs)
868
- || !Number.isSafeInteger(expiresAtMs)
869
- || expiresAtMs <= storeNow.getTime()
870
+ !Number.isSafeInteger(deadlineMs) ||
871
+ !Number.isSafeInteger(expiresAtMs) ||
872
+ expiresAtMs <= storeNow.getTime()
870
873
  ) {
871
- throw new RangeError('Creation terminal expiry must be the live operation deadline plus five minutes.');
874
+ throw new RangeError(
875
+ 'Creation terminal expiry must be the live operation deadline plus five minutes.'
876
+ );
872
877
  }
873
878
  return {
874
879
  operation: copyCreationOperation(publication.operation),
@@ -914,7 +919,7 @@ function validateAggregateRequest(request: ZLinkAggregatePrepareRequest): void {
914
919
  throw new TypeError('Aggregate inventory digest must contain 32 bytes.');
915
920
  }
916
921
  validateCapacityVector(request.capacity);
917
- const keys = request.participants.map(participant => participant.authorityKey.value);
922
+ const keys = request.participants.map((participant) => participant.authorityKey.value);
918
923
  const sorted = [...keys].sort();
919
924
  if (new Set(keys).size !== keys.length || keys.some((key, index) => key !== sorted[index])) {
920
925
  throw new TypeError('Aggregate participants must be unique and canonically sorted.');
@@ -929,9 +934,11 @@ function validatePayload(payload: Uint8Array): void {
929
934
 
930
935
  function validateCapacityVector(value: ZLinkCapacityVector): void {
931
936
  const counts = [value.actors, value.spots, value.spotType?.count ?? 0];
932
- if (counts.some(count => !Number.isInteger(count) || count < 0 || count > 0x7fff_ffff)
933
- || counts.every(count => count === 0)
934
- || value.spotType !== undefined && value.spotType.count === 0) {
937
+ if (
938
+ counts.some((count) => !Number.isInteger(count) || count < 0 || count > 0x7fff_ffff) ||
939
+ counts.every((count) => count === 0) ||
940
+ (value.spotType !== undefined && value.spotType.count === 0)
941
+ ) {
935
942
  throw new RangeError('Placement capacity vector is invalid.');
936
943
  }
937
944
  }
@@ -949,15 +956,14 @@ function aggregateTargetAllocation(
949
956
  };
950
957
  }
951
958
 
952
- function addCapacity(
953
- left: ZLinkCapacityVector,
954
- right: ZLinkCapacityVector
955
- ): ZLinkCapacityVector {
959
+ function addCapacity(left: ZLinkCapacityVector, right: ZLinkCapacityVector): ZLinkCapacityVector {
956
960
  let spotType = left.spotType;
957
961
  if (right.spotType !== undefined) {
958
- if (spotType !== undefined
959
- && (spotType.objectKind !== right.spotType.objectKind
960
- || spotType.stableType !== right.spotType.stableType)) {
962
+ if (
963
+ spotType !== undefined &&
964
+ (spotType.objectKind !== right.spotType.objectKind ||
965
+ spotType.stableType !== right.spotType.stableType)
966
+ ) {
961
967
  throw new TypeError('Aggregate capacity contains more than one Spot type.');
962
968
  }
963
969
  spotType = {
@@ -988,18 +994,26 @@ function creationTarget(request: ZLinkObjectReserveRequest): CreationTarget {
988
994
  };
989
995
  }
990
996
 
991
- function sameCreationTarget(target: CreationTarget, actual: ZLinkObjectCommitRequest['target']): boolean {
992
- return target.descriptor.meshName === actual.meshName
993
- && sameRid(target.descriptor.rid, actual.nodeRid)
994
- && target.lifecycleGeneration === actual.nodeLifecycleGeneration
995
- && sameOwner(target.owner, actual.owner);
997
+ function sameCreationTarget(
998
+ target: CreationTarget,
999
+ actual: ZLinkObjectCommitRequest['target']
1000
+ ): boolean {
1001
+ return (
1002
+ target.descriptor.meshName === actual.meshName &&
1003
+ sameRid(target.descriptor.rid, actual.nodeRid) &&
1004
+ target.lifecycleGeneration === actual.nodeLifecycleGeneration &&
1005
+ sameOwner(target.owner, actual.owner)
1006
+ );
996
1007
  }
997
1008
 
998
1009
  function sameOwner(left: ZLinkLocationOwnerToken, right: ZLinkLocationOwnerToken): boolean {
999
1010
  return left.ownerId === right.ownerId && left.leaseGeneration === right.leaseGeneration;
1000
1011
  }
1001
1012
 
1002
- function sameDescriptor(left: ZLinkMeshNodeDescriptorKey, right: ZLinkMeshNodeDescriptorKey): boolean {
1013
+ function sameDescriptor(
1014
+ left: ZLinkMeshNodeDescriptorKey,
1015
+ right: ZLinkMeshNodeDescriptorKey
1016
+ ): boolean {
1003
1017
  return left.meshName === right.meshName && sameRid(left.rid, right.rid);
1004
1018
  }
1005
1019
 
@@ -1013,23 +1027,35 @@ function capacityEntries(
1013
1027
  capacity: ZLinkCapacityVector
1014
1028
  ): readonly { readonly key: string; readonly count: number }[] {
1015
1029
  return [
1016
- ...(capacity.actors === 0 ? [] : [{
1017
- key: capacityKey(descriptor, lifecycle, 'actor', ''),
1018
- count: capacity.actors
1019
- }]),
1020
- ...(capacity.spots === 0 ? [] : [{
1021
- key: capacityKey(descriptor, lifecycle, 'spot', ''),
1022
- count: capacity.spots
1023
- }]),
1024
- ...(capacity.spotType === undefined ? [] : [{
1025
- key: capacityKey(
1026
- descriptor,
1027
- lifecycle,
1028
- capacity.spotType.objectKind,
1029
- capacity.spotType.stableType
1030
- ),
1031
- count: capacity.spotType.count
1032
- }])
1030
+ ...(capacity.actors === 0
1031
+ ? []
1032
+ : [
1033
+ {
1034
+ key: capacityKey(descriptor, lifecycle, 'actor', ''),
1035
+ count: capacity.actors
1036
+ }
1037
+ ]),
1038
+ ...(capacity.spots === 0
1039
+ ? []
1040
+ : [
1041
+ {
1042
+ key: capacityKey(descriptor, lifecycle, 'spot', ''),
1043
+ count: capacity.spots
1044
+ }
1045
+ ]),
1046
+ ...(capacity.spotType === undefined
1047
+ ? []
1048
+ : [
1049
+ {
1050
+ key: capacityKey(
1051
+ descriptor,
1052
+ lifecycle,
1053
+ capacity.spotType.objectKind,
1054
+ capacity.spotType.stableType
1055
+ ),
1056
+ count: capacity.spotType.count
1057
+ }
1058
+ ])
1033
1059
  ];
1034
1060
  }
1035
1061
 
@@ -1042,11 +1068,13 @@ function cloneCapacity(value: ZLinkCapacityVector): ZLinkCapacityVector {
1042
1068
  }
1043
1069
 
1044
1070
  function sameCapacity(left: ZLinkCapacityVector, right: ZLinkCapacityVector): boolean {
1045
- return left.actors === right.actors
1046
- && left.spots === right.spots
1047
- && left.spotType?.objectKind === right.spotType?.objectKind
1048
- && left.spotType?.stableType === right.spotType?.stableType
1049
- && left.spotType?.count === right.spotType?.count;
1071
+ return (
1072
+ left.actors === right.actors &&
1073
+ left.spots === right.spots &&
1074
+ left.spotType?.objectKind === right.spotType?.objectKind &&
1075
+ left.spotType?.stableType === right.spotType?.stableType &&
1076
+ left.spotType?.count === right.spotType?.count
1077
+ );
1050
1078
  }
1051
1079
 
1052
1080
  function capacityKey(
@@ -1071,18 +1099,20 @@ function version(value: bigint): ZLinkAuthorityStoreVersion {
1071
1099
  }
1072
1100
 
1073
1101
  function scanCursor(revision: bigint, offset: number, prefix: string): ZLinkAuthorityScanCursor {
1074
- const encoded = Buffer.from(JSON.stringify({
1075
- revision: revision.toString(),
1076
- offset,
1077
- prefix
1078
- })).toString('base64url');
1102
+ const encoded = Buffer.from(
1103
+ JSON.stringify({
1104
+ revision: revision.toString(),
1105
+ offset,
1106
+ prefix
1107
+ })
1108
+ ).toString('base64url');
1079
1109
  const factory = requireScanCursorFactory();
1080
1110
  return factory(encoded);
1081
1111
  }
1082
1112
 
1083
1113
  function requireScanCursorFactory(): (encoded: string) => ZLinkAuthorityScanCursor {
1084
1114
  // Imported as a type to keep the provider contract free of runtime cycles.
1085
- return (encoded) => ({ encoded } as ZLinkAuthorityScanCursor);
1115
+ return (encoded) => ({ encoded }) as ZLinkAuthorityScanCursor;
1086
1116
  }
1087
1117
 
1088
1118
  function decodeCursor(encoded: string): { revision: bigint; offset: number; prefix: string } {
@@ -1110,29 +1140,32 @@ function sameAggregateRequest(
1110
1140
  right: ZLinkAggregatePrepareRequest
1111
1141
  ): boolean {
1112
1142
  if (
1113
- left.aggregateId.value !== right.aggregateId.value
1114
- || left.aggregateGeneration !== right.aggregateGeneration
1115
- || !sameOwner(left.targetOwner, right.targetOwner)
1116
- || !Buffer.from(left.inventoryDigest).equals(Buffer.from(right.inventoryDigest))
1117
- || left.participants.length !== right.participants.length
1118
- || !sameDescriptor(left.targetDescriptor, right.targetDescriptor)
1119
- || left.targetDescriptorLifecycleGeneration
1120
- !== right.targetDescriptorLifecycleGeneration
1121
- || !sameCapacity(left.capacity, right.capacity)
1143
+ left.aggregateId.value !== right.aggregateId.value ||
1144
+ left.aggregateGeneration !== right.aggregateGeneration ||
1145
+ !sameOwner(left.targetOwner, right.targetOwner) ||
1146
+ !Buffer.from(left.inventoryDigest).equals(Buffer.from(right.inventoryDigest)) ||
1147
+ left.participants.length !== right.participants.length ||
1148
+ !sameDescriptor(left.targetDescriptor, right.targetDescriptor) ||
1149
+ left.targetDescriptorLifecycleGeneration !== right.targetDescriptorLifecycleGeneration ||
1150
+ !sameCapacity(left.capacity, right.capacity)
1122
1151
  ) {
1123
1152
  return false;
1124
1153
  }
1125
1154
  return left.participants.every((participant, index) => {
1126
1155
  const other = right.participants[index]!;
1127
- return participant.authorityKey.value === other.authorityKey.value
1128
- && participant.expectedStoreVersion.value === other.expectedStoreVersion.value
1129
- && participant.ownerTransition === other.ownerTransition
1130
- && Buffer.from(participant.authorityPayload).equals(Buffer.from(other.authorityPayload))
1131
- && Buffer.from(participant.membershipMutation).equals(Buffer.from(other.membershipMutation));
1156
+ return (
1157
+ participant.authorityKey.value === other.authorityKey.value &&
1158
+ participant.expectedStoreVersion.value === other.expectedStoreVersion.value &&
1159
+ participant.ownerTransition === other.ownerTransition &&
1160
+ Buffer.from(participant.authorityPayload).equals(Buffer.from(other.authorityPayload)) &&
1161
+ Buffer.from(participant.membershipMutation).equals(Buffer.from(other.membershipMutation))
1162
+ );
1132
1163
  });
1133
1164
  }
1134
1165
 
1135
- function cloneAggregateRequest(request: ZLinkAggregatePrepareRequest): ZLinkAggregatePrepareRequest {
1166
+ function cloneAggregateRequest(
1167
+ request: ZLinkAggregatePrepareRequest
1168
+ ): ZLinkAggregatePrepareRequest {
1136
1169
  return {
1137
1170
  ...request,
1138
1171
  aggregateId: { ...request.aggregateId },
@@ -1140,7 +1173,7 @@ function cloneAggregateRequest(request: ZLinkAggregatePrepareRequest): ZLinkAggr
1140
1173
  targetDescriptor: { ...request.targetDescriptor },
1141
1174
  capacity: cloneCapacity(request.capacity),
1142
1175
  inventoryDigest: Buffer.from(request.inventoryDigest),
1143
- participants: request.participants.map(participant => ({
1176
+ participants: request.participants.map((participant) => ({
1144
1177
  ...participant,
1145
1178
  authorityKey: { ...participant.authorityKey },
1146
1179
  expectedStoreVersion: { ...participant.expectedStoreVersion },