@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
@@ -39,9 +39,9 @@ class ZLinkInMemoryAuthorityStore {
39
39
  const keyValue = requireText(key.value, 'authority key');
40
40
  validateAuthorityMutation(mutation);
41
41
  const row = this.rows.get(keyValue);
42
- if (row === undefined
43
- || row.snapshot.allocation.state !== 'active'
44
- || row.snapshot.storeVersion.value !== expectedStoreVersion.value) {
42
+ if (row === undefined ||
43
+ row.snapshot.allocation.state !== 'active' ||
44
+ row.snapshot.storeVersion.value !== expectedStoreVersion.value) {
45
45
  return { kind: 'conflict', current: this.read(keyValue) };
46
46
  }
47
47
  if (mutation.kind === 'delete') {
@@ -62,10 +62,10 @@ class ZLinkInMemoryAuthorityStore {
62
62
  ownerId: row.snapshot.ownerId,
63
63
  leaseGeneration: row.snapshot.ownerLeaseGeneration
64
64
  };
65
- if (!sameOwner(mutation.expectedOwner, currentOwner)
66
- || mutation.targetOwner.ownerId !== currentOwner.ownerId
67
- || mutation.targetOwner.leaseGeneration === currentOwner.leaseGeneration
68
- || !this.validation.isTargetLive(row.snapshot.allocation.descriptor, row.snapshot.allocation.descriptorLifecycleGeneration, mutation.targetOwner)) {
65
+ if (!sameOwner(mutation.expectedOwner, currentOwner) ||
66
+ mutation.targetOwner.ownerId !== currentOwner.ownerId ||
67
+ mutation.targetOwner.leaseGeneration === currentOwner.leaseGeneration ||
68
+ !this.validation.isTargetLive(row.snapshot.allocation.descriptor, row.snapshot.allocation.descriptorLifecycleGeneration, mutation.targetOwner)) {
69
69
  return { kind: 'conflict', current: this.read(keyValue) };
70
70
  }
71
71
  const nextVersion = this.tryNextStoreVersion();
@@ -134,17 +134,15 @@ class ZLinkInMemoryAuthorityStore {
134
134
  key: authorityKey(key),
135
135
  snapshot: this.snapshot(row.snapshot)
136
136
  })),
137
- nextCursor: nextOffset < rows.length
138
- ? scanCursor(this.scanRevision, nextOffset, prefix)
139
- : undefined
137
+ nextCursor: nextOffset < rows.length ? scanCursor(this.scanRevision, nextOffset, prefix) : undefined
140
138
  };
141
139
  }
142
140
  async removeAllByOwner(owner, signal) {
143
141
  signal?.throwIfAborted();
144
142
  let removed = 0;
145
143
  for (const [key, row] of [...this.rows.entries()]) {
146
- if (row.snapshot.ownerId !== owner.ownerId
147
- || row.snapshot.ownerLeaseGeneration !== owner.leaseGeneration)
144
+ if (row.snapshot.ownerId !== owner.ownerId ||
145
+ row.snapshot.ownerLeaseGeneration !== owner.leaseGeneration)
148
146
  continue;
149
147
  if (row.snapshot.allocation.state === 'active') {
150
148
  this.adjustCapacity(this.activeCapacity, row.snapshot.allocation, -1);
@@ -168,8 +166,8 @@ class ZLinkInMemoryAuthorityStore {
168
166
  }
169
167
  const current = this.rows.get(key);
170
168
  if (current !== undefined) {
171
- if (current.snapshot.allocation.objectKind !== request.key.kind
172
- || current.snapshot.allocation.stableType !== request.intent.stableType) {
169
+ if (current.snapshot.allocation.objectKind !== request.key.kind ||
170
+ current.snapshot.allocation.stableType !== request.intent.stableType) {
173
171
  return { kind: 'typeMismatch', current: this.snapshot(current.snapshot) };
174
172
  }
175
173
  if (current.snapshot.allocation.state === 'active') {
@@ -200,9 +198,9 @@ class ZLinkInMemoryAuthorityStore {
200
198
  if (!this.hasPendingCapacity(allocation)) {
201
199
  return { kind: 'placementCapacityExhausted' };
202
200
  }
203
- if (this.storeVersion >= MAX_GENERATION
204
- || this.objectGeneration >= MAX_GENERATION
205
- || this.ownerGeneration >= MAX_GENERATION) {
201
+ if (this.storeVersion >= MAX_GENERATION ||
202
+ this.objectGeneration >= MAX_GENERATION ||
203
+ this.ownerGeneration >= MAX_GENERATION) {
206
204
  return { kind: 'generationExhausted' };
207
205
  }
208
206
  const reservationId = (0, node_crypto_1.randomUUID)();
@@ -244,12 +242,12 @@ class ZLinkInMemoryAuthorityStore {
244
242
  if (terminal === 'committed' && row?.snapshot.allocation.state === 'active') {
245
243
  return { kind: 'alreadyCommitted', ready: this.snapshot(row.snapshot) };
246
244
  }
247
- if (row === undefined
248
- || row.snapshot.allocation.state !== 'reserved'
249
- || row.creation?.reservationId !== request.reservationId
250
- || row.snapshot.storeVersion.value !== request.expectedStoreVersion
251
- || !sameCreationTarget(row.creation.target, request.target)
252
- || !this.validation.isTargetLive(row.creation.target.descriptor, row.creation.target.lifecycleGeneration, row.creation.target.owner)) {
245
+ if (row === undefined ||
246
+ row.snapshot.allocation.state !== 'reserved' ||
247
+ row.creation?.reservationId !== request.reservationId ||
248
+ row.snapshot.storeVersion.value !== request.expectedStoreVersion ||
249
+ !sameCreationTarget(row.creation.target, request.target) ||
250
+ !this.validation.isTargetLive(row.creation.target.descriptor, row.creation.target.lifecycleGeneration, row.creation.target.owner)) {
253
251
  return { kind: 'stale' };
254
252
  }
255
253
  const nextVersion = this.tryNextStoreVersion();
@@ -281,17 +279,17 @@ class ZLinkInMemoryAuthorityStore {
281
279
  }
282
280
  const terminalRecord = validateTerminalForMutation(request.completion.terminal, this.now());
283
281
  const existingTerminal = this.operationTerminals.get(creationOperationKey(terminalRecord.operation));
284
- if (existingTerminal !== undefined
285
- && existingTerminal.expiresAt.getTime() > this.now().getTime()) {
282
+ if (existingTerminal !== undefined &&
283
+ existingTerminal.expiresAt.getTime() > this.now().getTime()) {
286
284
  return {
287
285
  kind: 'alreadyCompleted',
288
286
  terminal: copyTerminalRecord(existingTerminal)
289
287
  };
290
288
  }
291
289
  const reservationTerminal = this.creationTerminals.get(request.reservationId);
292
- if (reservationTerminal === 'committed'
293
- || reservationTerminal === 'rejected'
294
- || reservationTerminal === 'failed') {
290
+ if (reservationTerminal === 'committed' ||
291
+ reservationTerminal === 'rejected' ||
292
+ reservationTerminal === 'failed') {
295
293
  const retained = this.operationTerminals.get(creationOperationKey(terminalRecord.operation));
296
294
  return retained === undefined
297
295
  ? { kind: 'stale' }
@@ -299,12 +297,12 @@ class ZLinkInMemoryAuthorityStore {
299
297
  }
300
298
  const key = creationKey(request.key);
301
299
  const row = this.rows.get(key);
302
- if (row === undefined
303
- || row.snapshot.allocation.state !== 'reserved'
304
- || row.creation?.reservationId !== request.reservationId
305
- || row.snapshot.storeVersion.value !== request.expectedStoreVersion
306
- || !sameCreationTarget(row.creation.target, request.target)
307
- || !this.validation.isTargetLive(row.creation.target.descriptor, row.creation.target.lifecycleGeneration, row.creation.target.owner)) {
300
+ if (row === undefined ||
301
+ row.snapshot.allocation.state !== 'reserved' ||
302
+ row.creation?.reservationId !== request.reservationId ||
303
+ row.snapshot.storeVersion.value !== request.expectedStoreVersion ||
304
+ !sameCreationTarget(row.creation.target, request.target) ||
305
+ !this.validation.isTargetLive(row.creation.target.descriptor, row.creation.target.lifecycleGeneration, row.creation.target.owner)) {
308
306
  return { kind: 'stale' };
309
307
  }
310
308
  if (!this.creationTerminalAvailable(terminalRecord)) {
@@ -373,11 +371,11 @@ class ZLinkInMemoryAuthorityStore {
373
371
  return { kind: 'alreadyAborted' };
374
372
  const key = creationKey(request.key);
375
373
  const row = this.rows.get(key);
376
- if (row === undefined
377
- || row.snapshot.allocation.state !== 'reserved'
378
- || row.creation?.reservationId !== request.reservationId
379
- || row.snapshot.storeVersion.value !== request.expectedStoreVersion
380
- || !sameCreationTarget(row.creation.target, request.target)) {
374
+ if (row === undefined ||
375
+ row.snapshot.allocation.state !== 'reserved' ||
376
+ row.creation?.reservationId !== request.reservationId ||
377
+ row.snapshot.storeVersion.value !== request.expectedStoreVersion ||
378
+ !sameCreationTarget(row.creation.target, request.target)) {
381
379
  return { kind: 'stale' };
382
380
  }
383
381
  this.adjustCapacity(this.pendingCapacity, row.snapshot.allocation, -1);
@@ -395,9 +393,7 @@ class ZLinkInMemoryAuthorityStore {
395
393
  if (existing.state === 'prepared' && sameAggregateRequest(existing.request, request)) {
396
394
  return { kind: 'alreadyPrepared', fence: existing.fence };
397
395
  }
398
- return existing.state === 'committed'
399
- ? { kind: 'stale' }
400
- : { kind: 'conflict' };
396
+ return existing.state === 'committed' ? { kind: 'stale' } : { kind: 'conflict' };
401
397
  }
402
398
  if (!this.validation.isTargetLive(request.targetDescriptor, request.targetDescriptorLifecycleGeneration, request.targetOwner)) {
403
399
  return { kind: 'conflict' };
@@ -409,9 +405,9 @@ class ZLinkInMemoryAuthorityStore {
409
405
  let sourceCapacity = { actors: 0, spots: 0 };
410
406
  for (const participant of request.participants) {
411
407
  const row = this.rows.get(participant.authorityKey.value);
412
- if (row === undefined
413
- || row.snapshot.allocation.state !== 'active'
414
- || row.snapshot.storeVersion.value !== participant.expectedStoreVersion.value) {
408
+ if (row === undefined ||
409
+ row.snapshot.allocation.state !== 'active' ||
410
+ row.snapshot.storeVersion.value !== participant.expectedStoreVersion.value) {
415
411
  return { kind: 'conflict' };
416
412
  }
417
413
  if (participant.ownerTransition === 'preserve') {
@@ -450,9 +446,9 @@ class ZLinkInMemoryAuthorityStore {
450
446
  const rows = [];
451
447
  for (const participant of aggregate.request.participants) {
452
448
  const row = this.rows.get(participant.authorityKey.value);
453
- if (row === undefined
454
- || row.snapshot.allocation.state !== 'active'
455
- || row.snapshot.storeVersion.value !== participant.expectedStoreVersion.value) {
449
+ if (row === undefined ||
450
+ row.snapshot.allocation.state !== 'active' ||
451
+ row.snapshot.storeVersion.value !== participant.expectedStoreVersion.value) {
456
452
  return { kind: 'stale' };
457
453
  }
458
454
  if (participant.ownerTransition === 'newOwner') {
@@ -467,8 +463,8 @@ class ZLinkInMemoryAuthorityStore {
467
463
  versionsNeeded++;
468
464
  rows.push({ participant, row, changesOwner: participant.ownerTransition === 'newOwner' });
469
465
  }
470
- if (this.storeVersion + versionsNeeded > MAX_GENERATION
471
- || this.ownerGeneration + ownersNeeded > MAX_GENERATION) {
466
+ if (this.storeVersion + versionsNeeded > MAX_GENERATION ||
467
+ this.ownerGeneration + ownersNeeded > MAX_GENERATION) {
472
468
  return { kind: 'generationExhausted' };
473
469
  }
474
470
  for (const entry of rows) {
@@ -552,7 +548,7 @@ class ZLinkInMemoryAuthorityStore {
552
548
  return this.validation.isTargetLive(snapshot.allocation.descriptor, snapshot.allocation.descriptorLifecycleGeneration, { ownerId: snapshot.ownerId, leaseGeneration: snapshot.ownerLeaseGeneration });
553
549
  }
554
550
  hasPendingCapacity(allocation) {
555
- return this.validation.placementCapacityAvailable?.(allocation.descriptor, allocation.capacity, this.capacityVectorUsage(this.pendingCapacity, allocation), this.capacityVectorUsage(this.activeCapacity, allocation)) ?? true;
551
+ return (this.validation.placementCapacityAvailable?.(allocation.descriptor, allocation.capacity, this.capacityVectorUsage(this.pendingCapacity, allocation), this.capacityVectorUsage(this.activeCapacity, allocation)) ?? true);
556
552
  }
557
553
  adjustCapacity(values, allocation, multiplier) {
558
554
  for (const entry of capacityEntries(allocation.descriptor, allocation.descriptorLifecycleGeneration, allocation.capacity)) {
@@ -566,12 +562,14 @@ class ZLinkInMemoryAuthorityStore {
566
562
  return {
567
563
  actors: values.get(capacityKey(descriptor, lifecycle, 'actor', '')) ?? 0,
568
564
  spots: values.get(capacityKey(descriptor, lifecycle, 'spot', '')) ?? 0,
569
- ...(spotType === undefined ? {} : {
570
- spotType: {
571
- ...spotType,
572
- count: values.get(capacityKey(descriptor, lifecycle, spotType.objectKind, spotType.stableType)) ?? 0
573
- }
574
- })
565
+ ...(spotType === undefined
566
+ ? {}
567
+ : {
568
+ spotType: {
569
+ ...spotType,
570
+ count: values.get(capacityKey(descriptor, lifecycle, spotType.objectKind, spotType.stableType)) ?? 0
571
+ }
572
+ })
575
573
  };
576
574
  }
577
575
  adjust(values, key, delta) {
@@ -603,15 +601,16 @@ function validateAuthorityMutation(mutation) {
603
601
  if (mutation.kind === 'delete' || mutation.kind === 'restore')
604
602
  return;
605
603
  if (mutation.kind === 'rebindOwnerLease') {
606
- if (mutation.expectedOwner.ownerId !== mutation.targetOwner.ownerId
607
- || mutation.expectedOwner.leaseGeneration === mutation.targetOwner.leaseGeneration
608
- || mutation.expectedOwner.leaseGeneration <= 0n
609
- || mutation.targetOwner.leaseGeneration <= 0n) {
604
+ if (mutation.expectedOwner.ownerId !== mutation.targetOwner.ownerId ||
605
+ mutation.expectedOwner.leaseGeneration === mutation.targetOwner.leaseGeneration ||
606
+ mutation.expectedOwner.leaseGeneration <= 0n ||
607
+ mutation.targetOwner.leaseGeneration <= 0n) {
610
608
  throw new TypeError('Authority lease rebind must retain the owner and change the lease generation.');
611
609
  }
612
610
  return;
613
611
  }
614
- const generationTransition = mutation.generationTransition;
612
+ const generationTransition = mutation
613
+ .generationTransition;
615
614
  if (generationTransition !== 'preserve') {
616
615
  throw new TypeError('Authority owner transitions require an aggregate CAS.');
617
616
  }
@@ -622,9 +621,9 @@ function validateReserve(request) {
622
621
  requireText(request.intent.requestContentReference, 'creation content reference');
623
622
  validatePayload(request.creatingPayload);
624
623
  validateCapacityVector(request.capacity);
625
- if (request.intent.requestSha256.byteLength !== 32
626
- || request.intent.requestEncodedSize < 0n
627
- || request.intent.requestEncodedSize > BigInt(MAX_PAYLOAD_BYTES)) {
624
+ if (request.intent.requestSha256.byteLength !== 32 ||
625
+ request.intent.requestEncodedSize < 0n ||
626
+ request.intent.requestEncodedSize > BigInt(MAX_PAYLOAD_BYTES)) {
628
627
  throw new TypeError('Object creation content receipt is invalid.');
629
628
  }
630
629
  }
@@ -634,13 +633,13 @@ function validateCreationOperation(operation) {
634
633
  if (sourceRidBytes < 1 || sourceRidBytes > 255 || sourceRid.includes('\0')) {
635
634
  throw new TypeError('Creation terminal source node RID must contain 1..255 UTF-8 bytes without NUL.');
636
635
  }
637
- if (operation.sourceNodeGeneration < 1n
638
- || operation.sourceNodeGeneration > MAX_U64
639
- || operation.operationId.high < 0n
640
- || operation.operationId.high > MAX_U64
641
- || operation.operationId.low < 0n
642
- || operation.operationId.low > MAX_U64
643
- || (operation.operationId.high === 0n && operation.operationId.low === 0n)) {
636
+ if (operation.sourceNodeGeneration < 1n ||
637
+ operation.sourceNodeGeneration > MAX_U64 ||
638
+ operation.operationId.high < 0n ||
639
+ operation.operationId.high > MAX_U64 ||
640
+ operation.operationId.low < 0n ||
641
+ operation.operationId.low > MAX_U64 ||
642
+ (operation.operationId.high === 0n && operation.operationId.low === 0n)) {
644
643
  throw new RangeError('Creation terminal source generation and operation ID are invalid.');
645
644
  }
646
645
  }
@@ -653,9 +652,9 @@ function validateTerminalForMutation(publication, storeNow) {
653
652
  }
654
653
  const deadlineMs = publication.operationDeadline.getTime();
655
654
  const expiresAtMs = deadlineMs + CREATION_TERMINAL_RETENTION_MS;
656
- if (!Number.isSafeInteger(deadlineMs)
657
- || !Number.isSafeInteger(expiresAtMs)
658
- || expiresAtMs <= storeNow.getTime()) {
655
+ if (!Number.isSafeInteger(deadlineMs) ||
656
+ !Number.isSafeInteger(expiresAtMs) ||
657
+ expiresAtMs <= storeNow.getTime()) {
659
658
  throw new RangeError('Creation terminal expiry must be the live operation deadline plus five minutes.');
660
659
  }
661
660
  return {
@@ -696,7 +695,7 @@ function validateAggregateRequest(request) {
696
695
  throw new TypeError('Aggregate inventory digest must contain 32 bytes.');
697
696
  }
698
697
  validateCapacityVector(request.capacity);
699
- const keys = request.participants.map(participant => participant.authorityKey.value);
698
+ const keys = request.participants.map((participant) => participant.authorityKey.value);
700
699
  const sorted = [...keys].sort();
701
700
  if (new Set(keys).size !== keys.length || keys.some((key, index) => key !== sorted[index])) {
702
701
  throw new TypeError('Aggregate participants must be unique and canonically sorted.');
@@ -709,9 +708,9 @@ function validatePayload(payload) {
709
708
  }
710
709
  function validateCapacityVector(value) {
711
710
  const counts = [value.actors, value.spots, value.spotType?.count ?? 0];
712
- if (counts.some(count => !Number.isInteger(count) || count < 0 || count > 0x7fff_ffff)
713
- || counts.every(count => count === 0)
714
- || value.spotType !== undefined && value.spotType.count === 0) {
711
+ if (counts.some((count) => !Number.isInteger(count) || count < 0 || count > 0x7fff_ffff) ||
712
+ counts.every((count) => count === 0) ||
713
+ (value.spotType !== undefined && value.spotType.count === 0)) {
715
714
  throw new RangeError('Placement capacity vector is invalid.');
716
715
  }
717
716
  }
@@ -728,9 +727,9 @@ function aggregateTargetAllocation(request) {
728
727
  function addCapacity(left, right) {
729
728
  let spotType = left.spotType;
730
729
  if (right.spotType !== undefined) {
731
- if (spotType !== undefined
732
- && (spotType.objectKind !== right.spotType.objectKind
733
- || spotType.stableType !== right.spotType.stableType)) {
730
+ if (spotType !== undefined &&
731
+ (spotType.objectKind !== right.spotType.objectKind ||
732
+ spotType.stableType !== right.spotType.stableType)) {
734
733
  throw new TypeError('Aggregate capacity contains more than one Spot type.');
735
734
  }
736
735
  spotType = {
@@ -759,10 +758,10 @@ function creationTarget(request) {
759
758
  };
760
759
  }
761
760
  function sameCreationTarget(target, actual) {
762
- return target.descriptor.meshName === actual.meshName
763
- && sameRid(target.descriptor.rid, actual.nodeRid)
764
- && target.lifecycleGeneration === actual.nodeLifecycleGeneration
765
- && sameOwner(target.owner, actual.owner);
761
+ return (target.descriptor.meshName === actual.meshName &&
762
+ sameRid(target.descriptor.rid, actual.nodeRid) &&
763
+ target.lifecycleGeneration === actual.nodeLifecycleGeneration &&
764
+ sameOwner(target.owner, actual.owner));
766
765
  }
767
766
  function sameOwner(left, right) {
768
767
  return left.ownerId === right.ownerId && left.leaseGeneration === right.leaseGeneration;
@@ -775,18 +774,30 @@ function sameRid(left, right) {
775
774
  }
776
775
  function capacityEntries(descriptor, lifecycle, capacity) {
777
776
  return [
778
- ...(capacity.actors === 0 ? [] : [{
779
- key: capacityKey(descriptor, lifecycle, 'actor', ''),
780
- count: capacity.actors
781
- }]),
782
- ...(capacity.spots === 0 ? [] : [{
783
- key: capacityKey(descriptor, lifecycle, 'spot', ''),
784
- count: capacity.spots
785
- }]),
786
- ...(capacity.spotType === undefined ? [] : [{
787
- key: capacityKey(descriptor, lifecycle, capacity.spotType.objectKind, capacity.spotType.stableType),
788
- count: capacity.spotType.count
789
- }])
777
+ ...(capacity.actors === 0
778
+ ? []
779
+ : [
780
+ {
781
+ key: capacityKey(descriptor, lifecycle, 'actor', ''),
782
+ count: capacity.actors
783
+ }
784
+ ]),
785
+ ...(capacity.spots === 0
786
+ ? []
787
+ : [
788
+ {
789
+ key: capacityKey(descriptor, lifecycle, 'spot', ''),
790
+ count: capacity.spots
791
+ }
792
+ ]),
793
+ ...(capacity.spotType === undefined
794
+ ? []
795
+ : [
796
+ {
797
+ key: capacityKey(descriptor, lifecycle, capacity.spotType.objectKind, capacity.spotType.stableType),
798
+ count: capacity.spotType.count
799
+ }
800
+ ])
790
801
  ];
791
802
  }
792
803
  function cloneCapacity(value) {
@@ -797,11 +808,11 @@ function cloneCapacity(value) {
797
808
  };
798
809
  }
799
810
  function sameCapacity(left, right) {
800
- return left.actors === right.actors
801
- && left.spots === right.spots
802
- && left.spotType?.objectKind === right.spotType?.objectKind
803
- && left.spotType?.stableType === right.spotType?.stableType
804
- && left.spotType?.count === right.spotType?.count;
811
+ return (left.actors === right.actors &&
812
+ left.spots === right.spots &&
813
+ left.spotType?.objectKind === right.spotType?.objectKind &&
814
+ left.spotType?.stableType === right.spotType?.stableType &&
815
+ left.spotType?.count === right.spotType?.count);
805
816
  }
806
817
  function capacityKey(descriptor, lifecycle, kind, stableType) {
807
818
  return `${descriptor.meshName}\0${String(descriptor.rid)}\0${lifecycle}\0${kind}\0${stableType}`;
@@ -844,24 +855,23 @@ function aggregateRecordKey(id, generation) {
844
855
  return `${id}\0${generation}`;
845
856
  }
846
857
  function sameAggregateRequest(left, right) {
847
- if (left.aggregateId.value !== right.aggregateId.value
848
- || left.aggregateGeneration !== right.aggregateGeneration
849
- || !sameOwner(left.targetOwner, right.targetOwner)
850
- || !Buffer.from(left.inventoryDigest).equals(Buffer.from(right.inventoryDigest))
851
- || left.participants.length !== right.participants.length
852
- || !sameDescriptor(left.targetDescriptor, right.targetDescriptor)
853
- || left.targetDescriptorLifecycleGeneration
854
- !== right.targetDescriptorLifecycleGeneration
855
- || !sameCapacity(left.capacity, right.capacity)) {
858
+ if (left.aggregateId.value !== right.aggregateId.value ||
859
+ left.aggregateGeneration !== right.aggregateGeneration ||
860
+ !sameOwner(left.targetOwner, right.targetOwner) ||
861
+ !Buffer.from(left.inventoryDigest).equals(Buffer.from(right.inventoryDigest)) ||
862
+ left.participants.length !== right.participants.length ||
863
+ !sameDescriptor(left.targetDescriptor, right.targetDescriptor) ||
864
+ left.targetDescriptorLifecycleGeneration !== right.targetDescriptorLifecycleGeneration ||
865
+ !sameCapacity(left.capacity, right.capacity)) {
856
866
  return false;
857
867
  }
858
868
  return left.participants.every((participant, index) => {
859
869
  const other = right.participants[index];
860
- return participant.authorityKey.value === other.authorityKey.value
861
- && participant.expectedStoreVersion.value === other.expectedStoreVersion.value
862
- && participant.ownerTransition === other.ownerTransition
863
- && Buffer.from(participant.authorityPayload).equals(Buffer.from(other.authorityPayload))
864
- && Buffer.from(participant.membershipMutation).equals(Buffer.from(other.membershipMutation));
870
+ return (participant.authorityKey.value === other.authorityKey.value &&
871
+ participant.expectedStoreVersion.value === other.expectedStoreVersion.value &&
872
+ participant.ownerTransition === other.ownerTransition &&
873
+ Buffer.from(participant.authorityPayload).equals(Buffer.from(other.authorityPayload)) &&
874
+ Buffer.from(participant.membershipMutation).equals(Buffer.from(other.membershipMutation)));
865
875
  });
866
876
  }
867
877
  function cloneAggregateRequest(request) {
@@ -872,7 +882,7 @@ function cloneAggregateRequest(request) {
872
882
  targetDescriptor: { ...request.targetDescriptor },
873
883
  capacity: cloneCapacity(request.capacity),
874
884
  inventoryDigest: Buffer.from(request.inventoryDigest),
875
- participants: request.participants.map(participant => ({
885
+ participants: request.participants.map((participant) => ({
876
886
  ...participant,
877
887
  authorityKey: { ...participant.authorityKey },
878
888
  expectedStoreVersion: { ...participant.expectedStoreVersion },