@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
@@ -1,4 +1,7 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
1
+ import {
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from '../framework-errors-internal';
2
5
  import { createAbortError, throwIfAborted } from '../abort';
3
6
  import { AsyncResource } from 'node:async_hooks';
4
7
  import { ZLinkStateLane } from '../execution/state-lane';
@@ -140,11 +143,14 @@ export class ZLinkActorSessionBindingRegistry<
140
143
  > {
141
144
  private readonly lane = new ZLinkStateLane();
142
145
  private readonly routes = new Map<string, ZLinkActorSessionRoute<TContext, TActor>>();
143
- private readonly sealWaiters = new Map<string, Set<{
144
- readonly bindingToken: string;
145
- readonly resolve: () => void;
146
- readonly reject: (error: unknown) => void;
147
- }>>();
146
+ private readonly sealWaiters = new Map<
147
+ string,
148
+ Set<{
149
+ readonly bindingToken: string;
150
+ readonly resolve: () => void;
151
+ readonly reject: (error: unknown) => void;
152
+ }>
153
+ >();
148
154
  private readonly activeFrameWaiters = new Map<string, Set<ZLinkActorSessionActiveFrameWaiter>>();
149
155
  private readonly relocations = new Map<string, ZLinkActorSessionRelocationQueue>();
150
156
  private readonly terminalRelocations = new Map<ZLinkActorSessionRelocationState, true>();
@@ -178,7 +184,9 @@ export class ZLinkActorSessionBindingRegistry<
178
184
  authorityFence?: ZLinkActorSessionAuthorityFence,
179
185
  sessionIdentity?: string
180
186
  ): Promise<void> {
181
- await this.lane.run(() => this.bindCore(context, actor, bindingToken, authorityFence, sessionIdentity));
187
+ await this.lane.run(() =>
188
+ this.bindCore(context, actor, bindingToken, authorityFence, sessionIdentity)
189
+ );
182
190
  }
183
191
 
184
192
  private bindCore(
@@ -207,9 +215,9 @@ export class ZLinkActorSessionBindingRegistry<
207
215
  authorityFence?: ZLinkActorSessionAuthorityFence,
208
216
  sessionIdentity?: string
209
217
  ): Promise<void> {
210
- await this.lane.run(() => this.replaceCore(
211
- previous, context, actor, bindingToken, authorityFence, sessionIdentity
212
- ));
218
+ await this.lane.run(() =>
219
+ this.replaceCore(previous, context, actor, bindingToken, authorityFence, sessionIdentity)
220
+ );
213
221
  }
214
222
 
215
223
  private replaceCore(
@@ -230,8 +238,7 @@ export class ZLinkActorSessionBindingRegistry<
230
238
  }
231
239
 
232
240
  context.bindLocal(actor, bindingToken);
233
- const sameLocalBinding = previous.context === context
234
- && previous.bindingToken === bindingToken;
241
+ const sameLocalBinding = previous.context === context && previous.bindingToken === bindingToken;
235
242
  if (!sameLocalBinding) {
236
243
  try {
237
244
  previous.context.unbindLocal(actor.actorId, previous.bindingToken);
@@ -261,9 +268,17 @@ export class ZLinkActorSessionBindingRegistry<
261
268
  authorityFence?: ZLinkActorSessionAuthorityFence,
262
269
  sessionIdentity?: string
263
270
  ): Promise<void> {
264
- await this.lane.run(() => this.replaceAndReleaseSealCore(
265
- previous, context, actor, bindingToken, sealId, authorityFence, sessionIdentity
266
- ));
271
+ await this.lane.run(() =>
272
+ this.replaceAndReleaseSealCore(
273
+ previous,
274
+ context,
275
+ actor,
276
+ bindingToken,
277
+ sealId,
278
+ authorityFence,
279
+ sessionIdentity
280
+ )
281
+ );
267
282
  }
268
283
 
269
284
  private replaceAndReleaseSealCore(
@@ -316,7 +331,9 @@ export class ZLinkActorSessionBindingRegistry<
316
331
  actor: ZLinkActorSessionBindingActor,
317
332
  bindingToken: string
318
333
  ): Promise<{ readonly context: TContext } | undefined> {
319
- return await this.lane.run(() => this.capturePendingReplyClaimCore(actorId, actor, bindingToken));
334
+ return await this.lane.run(() =>
335
+ this.capturePendingReplyClaimCore(actorId, actor, bindingToken)
336
+ );
320
337
  }
321
338
 
322
339
  private capturePendingReplyClaimCore(
@@ -476,7 +493,9 @@ export class ZLinkActorSessionBindingRegistry<
476
493
  ): Promise<ZLinkActorSessionFrameAdmission> {
477
494
  for (;;) {
478
495
  throwIfAborted(signal);
479
- const admission = await this.lane.run(() => this.beginAcceptedFrameCore(actorId, bindingToken));
496
+ const admission = await this.lane.run(() =>
497
+ this.beginAcceptedFrameCore(actorId, bindingToken)
498
+ );
480
499
  if (admission !== undefined) return admission;
481
500
  await this.waitForSealRelease(actorId, bindingToken, signal);
482
501
  }
@@ -496,8 +515,8 @@ export class ZLinkActorSessionBindingRegistry<
496
515
  completed = true;
497
516
  route.activeFrames.count--;
498
517
  if (
499
- route.activeFrames.count === 0
500
- && this.routes.get(actorId)?.activeFrames === route.activeFrames
518
+ route.activeFrames.count === 0 &&
519
+ this.routes.get(actorId)?.activeFrames === route.activeFrames
501
520
  ) {
502
521
  this.resolveActiveFrameWaiters(actorId);
503
522
  }
@@ -516,7 +535,9 @@ export class ZLinkActorSessionBindingRegistry<
516
535
  signal?: AbortSignal
517
536
  ): Promise<ZLinkActorSessionRequestFrameAdmission> {
518
537
  const frame = await this.beginAcceptedFrameWhenReady(actorId, bindingToken, signal);
519
- return await this.lane.run(() => this.beginAcceptedRequestFrameCore(actorId, bindingToken, frame));
538
+ return await this.lane.run(() =>
539
+ this.beginAcceptedRequestFrameCore(actorId, bindingToken, frame)
540
+ );
520
541
  }
521
542
 
522
543
  private beginAcceptedRequestFrameCore(
@@ -570,11 +591,7 @@ export class ZLinkActorSessionBindingRegistry<
570
591
  operation: () => Promise<TResult>,
571
592
  signal?: AbortSignal
572
593
  ): Promise<TResult> {
573
- const admission = await this.beginAcceptedFrameWhenReady(
574
- actorId,
575
- bindingToken,
576
- signal
577
- );
594
+ const admission = await this.beginAcceptedFrameWhenReady(actorId, bindingToken, signal);
578
595
  try {
579
596
  return await operation();
580
597
  } finally {
@@ -582,7 +599,11 @@ export class ZLinkActorSessionBindingRegistry<
582
599
  }
583
600
  }
584
601
 
585
- async seal(actorId: string, sealId: string, expected: ZLinkActorSessionRouteFence): Promise<void> {
602
+ async seal(
603
+ actorId: string,
604
+ sealId: string,
605
+ expected: ZLinkActorSessionRouteFence
606
+ ): Promise<void> {
586
607
  await this.lane.run(() => this.sealCore(actorId, sealId, expected));
587
608
  }
588
609
 
@@ -658,9 +679,8 @@ export class ZLinkActorSessionBindingRegistry<
658
679
  assertRelocationClaim(existing, claim);
659
680
  return { kind: 'existing', wait: existing.ready };
660
681
  }
661
- const predecessor = queue?.activeSealId === undefined
662
- ? undefined
663
- : queue.seals.get(queue.activeSealId);
682
+ const predecessor =
683
+ queue?.activeSealId === undefined ? undefined : queue.seals.get(queue.activeSealId);
664
684
  if (predecessor !== undefined && predecessor.phase !== 'terminal') {
665
685
  if (predecessor.sessionIdentity === undefined || claim.sessionIdentity === undefined) {
666
686
  throw createInternalFrameworkException(
@@ -675,7 +695,9 @@ export class ZLinkActorSessionBindingRegistry<
675
695
 
676
696
  this.sealCore(claim.actorId, claim.sealId, expected);
677
697
  let resolveTerminal!: () => void;
678
- const terminal = new Promise<void>((resolve) => { resolveTerminal = resolve; });
698
+ const terminal = new Promise<void>((resolve) => {
699
+ resolveTerminal = resolve;
700
+ });
679
701
  const ready = this.waitForActiveFramesCore(claim.actorId, signal);
680
702
  const actorQueue: ZLinkActorSessionRelocationQueue = queue ?? {
681
703
  actorId: claim.actorId,
@@ -716,7 +738,9 @@ export class ZLinkActorSessionBindingRegistry<
716
738
  operation: ZLinkActorSessionRetainedOutbound,
717
739
  sealId?: string
718
740
  ): Promise<ServiceSessionBindingAdmissionResult> {
719
- return await this.lane.run(() => this.retainRelocationOutboundCorePublic(actorId, operation, sealId));
741
+ return await this.lane.run(() =>
742
+ this.retainRelocationOutboundCorePublic(actorId, operation, sealId)
743
+ );
720
744
  }
721
745
 
722
746
  private retainRelocationOutboundCorePublic(
@@ -728,10 +752,10 @@ export class ZLinkActorSessionBindingRegistry<
728
752
  const queue = this.relocations.get(actorId);
729
753
  const state = queue?.seals.get(sealId);
730
754
  if (
731
- queue === undefined
732
- || state === undefined
733
- || (queue.activeSealId !== sealId
734
- && !(queue.activeSealId === undefined && state.phase === 'terminal'))
755
+ queue === undefined ||
756
+ state === undefined ||
757
+ (queue.activeSealId !== sealId &&
758
+ !(queue.activeSealId === undefined && state.phase === 'terminal'))
735
759
  ) {
736
760
  failRetainedOutbound(
737
761
  operation,
@@ -755,9 +779,8 @@ export class ZLinkActorSessionBindingRegistry<
755
779
  operation: ZLinkActorSessionRetainedOutbound
756
780
  ): ServiceSessionBindingAdmissionResult {
757
781
  const queue = this.relocations.get(claim.actorId);
758
- const state = queue?.activeSealId === undefined
759
- ? undefined
760
- : queue.seals.get(queue.activeSealId);
782
+ const state =
783
+ queue?.activeSealId === undefined ? undefined : queue.seals.get(queue.activeSealId);
761
784
  const error = this.outboundAdmissionError(claim);
762
785
  if (error !== undefined) {
763
786
  failRetainedOutbound(operation, error);
@@ -767,48 +790,32 @@ export class ZLinkActorSessionBindingRegistry<
767
790
  if (!this.matchesCurrentProducerNode(claim)) {
768
791
  failRetainedOutbound(
769
792
  operation,
770
- new Error(`Actor '${claim.actorId}' Session outbound admission was fenced by its current binding.`)
793
+ new Error(
794
+ `Actor '${claim.actorId}' Session outbound admission was fenced by its current binding.`
795
+ )
771
796
  );
772
797
  return 'rejected';
773
798
  }
774
799
  if (queue === undefined) return 'passThrough';
775
- return this.retainRelocationOutboundCore(
776
- claim.actorId,
777
- operation,
778
- 'source',
779
- claim
780
- );
800
+ return this.retainRelocationOutboundCore(claim.actorId, operation, 'source', claim);
781
801
  }
782
802
  if (state.phase === 'sealed' || state.phase === 'applying') {
783
803
  const matchesSource = matchesRelocationSourceProof(state, claim);
784
804
  const matchesCurrent = this.matchesCurrentProducerNode(claim);
785
- const authorization = matchesSource || matchesCurrent
786
- ? 'source'
787
- : 'pendingTarget';
788
- return this.retainRelocationOutboundCore(
789
- claim.actorId,
790
- operation,
791
- authorization,
792
- claim
793
- );
805
+ const authorization = matchesSource || matchesCurrent ? 'source' : 'pendingTarget';
806
+ return this.retainRelocationOutboundCore(claim.actorId, operation, authorization, claim);
794
807
  }
795
808
  const acceptedProof = state.acceptedProducerProof;
796
- if (
797
- acceptedProof === undefined
798
- || !matchesAcceptedProducerProof(acceptedProof, claim)
799
- ) {
809
+ if (acceptedProof === undefined || !matchesAcceptedProducerProof(acceptedProof, claim)) {
800
810
  failRetainedOutbound(
801
811
  operation,
802
- new Error(`Actor '${claim.actorId}' Session outbound admission did not match its accepted producer proof.`)
812
+ new Error(
813
+ `Actor '${claim.actorId}' Session outbound admission did not match its accepted producer proof.`
814
+ )
803
815
  );
804
816
  return 'rejected';
805
817
  }
806
- return this.retainRelocationOutboundCore(
807
- claim.actorId,
808
- operation,
809
- 'source',
810
- claim
811
- );
818
+ return this.retainRelocationOutboundCore(claim.actorId, operation, 'source', claim);
812
819
  }
813
820
 
814
821
  private retainRelocationOutboundCore(
@@ -818,9 +825,8 @@ export class ZLinkActorSessionBindingRegistry<
818
825
  claim?: ServiceSessionBindingAdmissionClaim
819
826
  ): ServiceSessionBindingAdmissionResult {
820
827
  const queue = this.relocations.get(actorId);
821
- const state = queue?.activeSealId === undefined
822
- ? undefined
823
- : queue.seals.get(queue.activeSealId);
828
+ const state =
829
+ queue?.activeSealId === undefined ? undefined : queue.seals.get(queue.activeSealId);
824
830
  if (queue === undefined) return 'passThrough';
825
831
  if (state === undefined || state.phase === 'applied' || state.phase === 'terminal') {
826
832
  if (queue.drainPromise === undefined && queue.outbound.length === 0) return 'passThrough';
@@ -873,13 +879,9 @@ export class ZLinkActorSessionBindingRegistry<
873
879
  commitOwnerTransition: () => Promise<void>,
874
880
  acceptedProducerProof?: ZLinkActorSessionAcceptedProducerProof
875
881
  ): Promise<void> {
876
- const prepared = await this.lane.run(() => this.prepareRelocationApply(
877
- actorId,
878
- sealId,
879
- applyFingerprint,
880
- action,
881
- acceptedProducerProof
882
- ));
882
+ const prepared = await this.lane.run(() =>
883
+ this.prepareRelocationApply(actorId, sealId, applyFingerprint, action, acceptedProducerProof)
884
+ );
883
885
  if (prepared.applyPromise !== undefined) {
884
886
  await prepared.applyPromise;
885
887
  return;
@@ -937,9 +939,9 @@ export class ZLinkActorSessionBindingRegistry<
937
939
  return { queue, state, applyPromise: state.applyPromise };
938
940
  }
939
941
  if (
940
- action === 'commit'
941
- && acceptedProducerProof !== undefined
942
- && !validAcceptedTargetProof(state, acceptedProducerProof)
942
+ action === 'commit' &&
943
+ acceptedProducerProof !== undefined &&
944
+ !validAcceptedTargetProof(state, acceptedProducerProof)
943
945
  ) {
944
946
  throw createInternalFrameworkException(
945
947
  ZLinkFrameworkInternalErrorKind.ActorLocationStale,
@@ -986,9 +988,10 @@ export class ZLinkActorSessionBindingRegistry<
986
988
  readonly sealId?: string;
987
989
  }): void {
988
990
  const { queue, state, action, acceptedProducerProof, actorId, sealId } = prepared;
989
- const proof = action === 'commit'
990
- ? acceptedProducerProof ?? this.currentProducerProof(actorId!)
991
- : relocationSourceProof(state);
991
+ const proof =
992
+ action === 'commit'
993
+ ? (acceptedProducerProof ?? this.currentProducerProof(actorId!))
994
+ : relocationSourceProof(state);
992
995
  state.acceptedProducerProof = proof;
993
996
  for (let index = queue.outbound.length - 1; index >= 0; index--) {
994
997
  const entry = queue.outbound[index]!;
@@ -998,10 +1001,10 @@ export class ZLinkActorSessionBindingRegistry<
998
1001
  continue;
999
1002
  }
1000
1003
  if (
1001
- action === 'commit'
1002
- && proof !== undefined
1003
- && entry.claim !== undefined
1004
- && matchesAcceptedProducerProof(proof, entry.claim)
1004
+ action === 'commit' &&
1005
+ proof !== undefined &&
1006
+ entry.claim !== undefined &&
1007
+ matchesAcceptedProducerProof(proof, entry.claim)
1005
1008
  ) {
1006
1009
  entry.released = true;
1007
1010
  continue;
@@ -1030,27 +1033,32 @@ export class ZLinkActorSessionBindingRegistry<
1030
1033
  actorId: string
1031
1034
  ): ZLinkActorSessionAcceptedProducerProof | undefined {
1032
1035
  const route = this.routes.get(actorId);
1033
- const actorRef = (route?.actor as TActor & { readonly ref?: {
1034
- readonly actorId?: unknown;
1035
- readonly objectGeneration?: unknown;
1036
- readonly generation?: unknown;
1037
- readonly nodeRid?: unknown;
1038
- readonly ownerNodeGeneration?: unknown;
1039
- readonly bindingGeneration?: unknown;
1040
- } }).ref;
1036
+ const actorRef = (
1037
+ route?.actor as TActor & {
1038
+ readonly ref?: {
1039
+ readonly actorId?: unknown;
1040
+ readonly objectGeneration?: unknown;
1041
+ readonly generation?: unknown;
1042
+ readonly nodeRid?: unknown;
1043
+ readonly ownerNodeGeneration?: unknown;
1044
+ readonly bindingGeneration?: unknown;
1045
+ };
1046
+ }
1047
+ ).ref;
1041
1048
  const sessionIdentity = route?.sessionIdentity;
1042
1049
  if (
1043
- route === undefined
1044
- || actorRef === undefined
1045
- || sessionIdentity === undefined
1046
- || actorRef.ownerNodeGeneration === undefined
1047
- ) return undefined;
1050
+ route === undefined ||
1051
+ actorRef === undefined ||
1052
+ sessionIdentity === undefined ||
1053
+ actorRef.ownerNodeGeneration === undefined
1054
+ )
1055
+ return undefined;
1048
1056
  return {
1049
1057
  actorId,
1050
1058
  objectGeneration: BigInt(
1051
- actorRef.objectGeneration as bigint | number | string | boolean | undefined
1052
- ?? actorRef.generation as bigint | number | string | boolean | undefined
1053
- ?? -1
1059
+ (actorRef.objectGeneration as bigint | number | string | boolean | undefined) ??
1060
+ (actorRef.generation as bigint | number | string | boolean | undefined) ??
1061
+ -1
1054
1062
  ),
1055
1063
  actorNodeRid: String(actorRef.nodeRid ?? ''),
1056
1064
  actorNodeGeneration: BigInt(
@@ -1058,7 +1066,7 @@ export class ZLinkActorSessionBindingRegistry<
1058
1066
  ),
1059
1067
  sessionIdentity: String(sessionIdentity),
1060
1068
  bindingGeneration: BigInt(
1061
- actorRef.bindingGeneration as bigint | number | string | boolean | undefined ?? -1
1069
+ (actorRef.bindingGeneration as bigint | number | string | boolean | undefined) ?? -1
1062
1070
  )
1063
1071
  };
1064
1072
  }
@@ -1068,7 +1076,9 @@ export class ZLinkActorSessionBindingRegistry<
1068
1076
  sealId: string,
1069
1077
  applyFingerprint: string
1070
1078
  ): Promise<void> {
1071
- await this.lane.run(() => this.observeRelocationTerminalCore(actorId, sealId, applyFingerprint));
1079
+ await this.lane.run(() =>
1080
+ this.observeRelocationTerminalCore(actorId, sealId, applyFingerprint)
1081
+ );
1072
1082
  }
1073
1083
 
1074
1084
  private observeRelocationTerminalCore(
@@ -1079,10 +1089,10 @@ export class ZLinkActorSessionBindingRegistry<
1079
1089
  const queue = this.relocations.get(actorId);
1080
1090
  const state = queue?.seals.get(sealId);
1081
1091
  if (
1082
- queue === undefined
1083
- || state === undefined
1084
- || state.applyFingerprint !== applyFingerprint
1085
- || (state.phase !== 'applied' && state.phase !== 'terminal')
1092
+ queue === undefined ||
1093
+ state === undefined ||
1094
+ state.applyFingerprint !== applyFingerprint ||
1095
+ (state.phase !== 'applied' && state.phase !== 'terminal')
1086
1096
  ) {
1087
1097
  throw createInternalFrameworkException(
1088
1098
  ZLinkFrameworkInternalErrorKind.ActorLocationStale,
@@ -1143,9 +1153,10 @@ export class ZLinkActorSessionBindingRegistry<
1143
1153
  if (queue === undefined) return;
1144
1154
  const activeSealId = queue.activeSealId;
1145
1155
  const activeState = activeSealId === undefined ? undefined : queue.seals.get(activeSealId);
1146
- const ownsActiveSeal = activeState !== undefined
1147
- && activeState.phase !== 'terminal'
1148
- && activeState.sessionIdentity === route.sessionIdentity;
1156
+ const ownsActiveSeal =
1157
+ activeState !== undefined &&
1158
+ activeState.phase !== 'terminal' &&
1159
+ activeState.sessionIdentity === route.sessionIdentity;
1149
1160
  if (!ownsActiveSeal) {
1150
1161
  // Nothing this exact route still holds open — leave terminal
1151
1162
  // retention and any other Session's active seal untouched.
@@ -1184,7 +1195,10 @@ export class ZLinkActorSessionBindingRegistry<
1184
1195
  await this.lane.run(() => this.updateAuthorityFenceCore(actorId, authorityFence));
1185
1196
  }
1186
1197
 
1187
- private updateAuthorityFenceCore(actorId: string, authorityFence: ZLinkActorSessionAuthorityFence): void {
1198
+ private updateAuthorityFenceCore(
1199
+ actorId: string,
1200
+ authorityFence: ZLinkActorSessionAuthorityFence
1201
+ ): void {
1188
1202
  const route = this.requireRouteCore(actorId);
1189
1203
  route.authorityFence = authorityFence;
1190
1204
  }
@@ -1195,8 +1209,7 @@ export class ZLinkActorSessionBindingRegistry<
1195
1209
 
1196
1210
  private validateSealCore(actorId: string, sealId: string): boolean {
1197
1211
  const route = this.routes.get(actorId);
1198
- return route !== undefined
1199
- && route.sealId === sealId;
1212
+ return route !== undefined && route.sealId === sealId;
1200
1213
  }
1201
1214
 
1202
1215
  /** True while a relocation seal currently holds this actor's ingress. */
@@ -1254,16 +1267,20 @@ export class ZLinkActorSessionBindingRegistry<
1254
1267
  waiters.delete(waiter);
1255
1268
  if (waiters.size === 0) this.sealWaiters.delete(actorId);
1256
1269
  };
1257
- timer = startOutsideStateLane(() => setTimeout(() => {
1258
- this.lane.tryPost(() => {
1259
- removeWaiter();
1260
- rejectWaiter(createInternalFrameworkException(
1261
- ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
1262
- `Actor '${actorId}' session seal was not released within the relocation seal timeout.`,
1263
- true
1264
- ));
1265
- });
1266
- }, this.sealWaitTimeoutMs));
1270
+ timer = startOutsideStateLane(() =>
1271
+ setTimeout(() => {
1272
+ this.lane.tryPost(() => {
1273
+ removeWaiter();
1274
+ rejectWaiter(
1275
+ createInternalFrameworkException(
1276
+ ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
1277
+ `Actor '${actorId}' session seal was not released within the relocation seal timeout.`,
1278
+ true
1279
+ )
1280
+ );
1281
+ });
1282
+ }, this.sealWaitTimeoutMs)
1283
+ );
1267
1284
  timer.unref();
1268
1285
  const onAbort = () => {
1269
1286
  this.lane.tryPost(() => {
@@ -1324,17 +1341,21 @@ export class ZLinkActorSessionBindingRegistry<
1324
1341
  // Spec 48:205 — transport/deadline limits keep applying during
1325
1342
  // relocation: the sealing side must not wait forever for active
1326
1343
  // frames that themselves may be waiting on this relocation.
1327
- timer = startOutsideStateLane(() => setTimeout(() => {
1328
- this.lane.tryPost(() => {
1329
- waiters.delete(waiter);
1330
- if (waiters.size === 0) this.activeFrameWaiters.delete(actorId);
1331
- waiter.reject(createInternalFrameworkException(
1332
- ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
1333
- `Actor '${actorId}' session seal timed out waiting for active frames.`,
1334
- true
1335
- ));
1336
- });
1337
- }, this.sealWaitTimeoutMs));
1344
+ timer = startOutsideStateLane(() =>
1345
+ setTimeout(() => {
1346
+ this.lane.tryPost(() => {
1347
+ waiters.delete(waiter);
1348
+ if (waiters.size === 0) this.activeFrameWaiters.delete(actorId);
1349
+ waiter.reject(
1350
+ createInternalFrameworkException(
1351
+ ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
1352
+ `Actor '${actorId}' session seal timed out waiting for active frames.`,
1353
+ true
1354
+ )
1355
+ );
1356
+ });
1357
+ }, this.sealWaitTimeoutMs)
1358
+ );
1338
1359
  timer.unref();
1339
1360
  if (signal === undefined) return;
1340
1361
  if (signal.aborted) onAbort();
@@ -1375,11 +1396,14 @@ export class ZLinkActorSessionBindingRegistry<
1375
1396
  const delivered = await entry.operation.deliver();
1376
1397
  await this.lane.run(() => {
1377
1398
  if (delivered) this.settleOutbound(queue, entry);
1378
- else this.failOutbound(
1379
- queue,
1380
- entry,
1381
- new Error(`Actor '${queue.actorId}' retained Session outbound delivery was rejected.`)
1382
- );
1399
+ else
1400
+ this.failOutbound(
1401
+ queue,
1402
+ entry,
1403
+ new Error(
1404
+ `Actor '${queue.actorId}' retained Session outbound delivery was rejected.`
1405
+ )
1406
+ );
1383
1407
  if (queue.outbound[0] === entry) queue.outbound.shift();
1384
1408
  });
1385
1409
  } catch (error) {
@@ -1391,11 +1415,14 @@ export class ZLinkActorSessionBindingRegistry<
1391
1415
  }
1392
1416
  });
1393
1417
  startOutsideStateLane(() => {
1394
- void drain.finally(async () => await this.lane.run(() => {
1395
- if (queue.drainPromise === drain) queue.drainPromise = undefined;
1396
- if (queue.outbound[0]?.released === true) this.startOutboundDrain(queue);
1397
- else this.deleteEmptyRelocationQueue(queue);
1398
- }));
1418
+ void drain.finally(
1419
+ async () =>
1420
+ await this.lane.run(() => {
1421
+ if (queue.drainPromise === drain) queue.drainPromise = undefined;
1422
+ if (queue.outbound[0]?.released === true) this.startOutboundDrain(queue);
1423
+ else this.deleteEmptyRelocationQueue(queue);
1424
+ })
1425
+ );
1399
1426
  });
1400
1427
  queue.drainPromise = drain;
1401
1428
  }
@@ -1434,59 +1461,69 @@ export class ZLinkActorSessionBindingRegistry<
1434
1461
  failRetainedOutbound(entry.operation, error);
1435
1462
  }
1436
1463
 
1437
- private outboundAdmissionError(
1438
- claim: ServiceSessionBindingAdmissionClaim
1439
- ): Error | undefined {
1464
+ private outboundAdmissionError(claim: ServiceSessionBindingAdmissionClaim): Error | undefined {
1440
1465
  if (
1441
- claim.actorId.length === 0
1442
- || claim.objectGeneration <= 0n
1443
- || claim.actorNodeRid.length === 0
1444
- || claim.actorNodeGeneration <= 0n
1445
- || claim.producerNodeRid.length === 0
1446
- || claim.producerNodeGeneration <= 0n
1447
- || claim.bindingGeneration <= 0n
1448
- || claim.sessionIdentity.length === 0
1449
- || !routingIdsEqual(claim.producerNodeRid, claim.actorNodeRid)
1450
- || claim.producerNodeGeneration !== claim.actorNodeGeneration
1466
+ claim.actorId.length === 0 ||
1467
+ claim.objectGeneration <= 0n ||
1468
+ claim.actorNodeRid.length === 0 ||
1469
+ claim.actorNodeGeneration <= 0n ||
1470
+ claim.producerNodeRid.length === 0 ||
1471
+ claim.producerNodeGeneration <= 0n ||
1472
+ claim.bindingGeneration <= 0n ||
1473
+ claim.sessionIdentity.length === 0 ||
1474
+ !routingIdsEqual(claim.producerNodeRid, claim.actorNodeRid) ||
1475
+ claim.producerNodeGeneration !== claim.actorNodeGeneration
1451
1476
  ) {
1452
1477
  return new Error(`Actor '${claim.actorId}' Session outbound admission claim is invalid.`);
1453
1478
  }
1454
1479
  const route = this.routes.get(claim.actorId);
1455
- const ref = route?.actor as (TActor & { readonly ref?: {
1456
- readonly actorId?: unknown;
1457
- readonly objectGeneration?: unknown;
1458
- readonly generation?: unknown;
1459
- readonly bindingGeneration?: unknown;
1460
- } }) | undefined;
1480
+ const ref = route?.actor as
1481
+ | (TActor & {
1482
+ readonly ref?: {
1483
+ readonly actorId?: unknown;
1484
+ readonly objectGeneration?: unknown;
1485
+ readonly generation?: unknown;
1486
+ readonly bindingGeneration?: unknown;
1487
+ };
1488
+ })
1489
+ | undefined;
1461
1490
  const actorRef = ref?.ref;
1462
1491
  const routeSessionIdentity = route?.sessionIdentity;
1463
1492
  if (
1464
- route === undefined
1465
- || actorRef === undefined
1466
- || String(actorRef.actorId ?? claim.actorId) !== claim.actorId
1467
- || BigInt(
1468
- actorRef.objectGeneration as bigint | number | string | boolean | undefined
1469
- ?? actorRef.generation as bigint | number | string | boolean | undefined
1470
- ?? -1
1471
- ) !== claim.objectGeneration
1472
- || BigInt(
1473
- actorRef.bindingGeneration as bigint | number | string | boolean | undefined ?? -1
1474
- ) !== claim.bindingGeneration
1475
- || String(routeSessionIdentity ?? '') !== claim.sessionIdentity
1493
+ route === undefined ||
1494
+ actorRef === undefined ||
1495
+ String(actorRef.actorId ?? claim.actorId) !== claim.actorId ||
1496
+ BigInt(
1497
+ (actorRef.objectGeneration as bigint | number | string | boolean | undefined) ??
1498
+ (actorRef.generation as bigint | number | string | boolean | undefined) ??
1499
+ -1
1500
+ ) !== claim.objectGeneration ||
1501
+ BigInt(
1502
+ (actorRef.bindingGeneration as bigint | number | string | boolean | undefined) ?? -1
1503
+ ) !== claim.bindingGeneration ||
1504
+ String(routeSessionIdentity ?? '') !== claim.sessionIdentity
1476
1505
  ) {
1477
- return new Error(`Actor '${claim.actorId}' Session outbound admission was fenced by its current binding.`);
1506
+ return new Error(
1507
+ `Actor '${claim.actorId}' Session outbound admission was fenced by its current binding.`
1508
+ );
1478
1509
  }
1479
1510
  return undefined;
1480
1511
  }
1481
1512
 
1482
1513
  private matchesCurrentProducerNode(claim: ServiceSessionBindingAdmissionClaim): boolean {
1483
1514
  const route = this.routes.get(claim.actorId);
1484
- const actorRef = (route?.actor as TActor & { readonly ref?: {
1485
- readonly nodeRid?: unknown;
1486
- } }).ref;
1487
- return route !== undefined
1488
- && actorRef !== undefined
1489
- && routingIdsEqual(String(actorRef.nodeRid ?? ''), claim.actorNodeRid);
1515
+ const actorRef = (
1516
+ route?.actor as TActor & {
1517
+ readonly ref?: {
1518
+ readonly nodeRid?: unknown;
1519
+ };
1520
+ }
1521
+ ).ref;
1522
+ return (
1523
+ route !== undefined &&
1524
+ actorRef !== undefined &&
1525
+ routingIdsEqual(String(actorRef.nodeRid ?? ''), claim.actorNodeRid)
1526
+ );
1490
1527
  }
1491
1528
 
1492
1529
  private rememberTerminalRelocation(state: ZLinkActorSessionRelocationState): void {
@@ -1507,11 +1544,11 @@ export class ZLinkActorSessionBindingRegistry<
1507
1544
 
1508
1545
  private deleteEmptyRelocationQueue(queue: ZLinkActorSessionRelocationQueue): void {
1509
1546
  if (
1510
- queue.activeSealId === undefined
1511
- && queue.seals.size === 0
1512
- && queue.outbound.length === 0
1513
- && queue.drainPromise === undefined
1514
- && this.relocations.get(queue.actorId) === queue
1547
+ queue.activeSealId === undefined &&
1548
+ queue.seals.size === 0 &&
1549
+ queue.outbound.length === 0 &&
1550
+ queue.drainPromise === undefined &&
1551
+ this.relocations.get(queue.actorId) === queue
1515
1552
  ) {
1516
1553
  this.relocations.delete(queue.actorId);
1517
1554
  }
@@ -1537,11 +1574,11 @@ function assertRelocationClaim(
1537
1574
  claim: ZLinkActorSessionRelocationClaim
1538
1575
  ): void {
1539
1576
  if (
1540
- state.actorGeneration !== claim.actorGeneration
1541
- || state.bindingGeneration !== claim.bindingGeneration
1542
- || state.sessionIdentity !== claim.sessionIdentity
1543
- || state.actorNodeRid !== claim.actorNodeRid
1544
- || state.actorNodeGeneration !== claim.actorNodeGeneration
1577
+ state.actorGeneration !== claim.actorGeneration ||
1578
+ state.bindingGeneration !== claim.bindingGeneration ||
1579
+ state.sessionIdentity !== claim.sessionIdentity ||
1580
+ state.actorNodeRid !== claim.actorNodeRid ||
1581
+ state.actorNodeGeneration !== claim.actorNodeGeneration
1545
1582
  ) {
1546
1583
  throw createInternalFrameworkException(
1547
1584
  ZLinkFrameworkInternalErrorKind.ActorLocationStale,
@@ -1559,47 +1596,54 @@ function matchesRelocationSourceProof(
1559
1596
  state: ZLinkActorSessionRelocationState,
1560
1597
  claim: ServiceSessionBindingAdmissionClaim
1561
1598
  ): boolean {
1562
- return state.actorId === claim.actorId
1563
- && state.actorGeneration === claim.objectGeneration
1564
- && state.bindingGeneration === claim.bindingGeneration
1565
- && state.sessionIdentity === claim.sessionIdentity
1566
- && state.actorNodeRid !== undefined
1567
- && routingIdsEqual(state.actorNodeRid, claim.actorNodeRid)
1568
- && state.actorNodeGeneration === claim.actorNodeGeneration;
1599
+ return (
1600
+ state.actorId === claim.actorId &&
1601
+ state.actorGeneration === claim.objectGeneration &&
1602
+ state.bindingGeneration === claim.bindingGeneration &&
1603
+ state.sessionIdentity === claim.sessionIdentity &&
1604
+ state.actorNodeRid !== undefined &&
1605
+ routingIdsEqual(state.actorNodeRid, claim.actorNodeRid) &&
1606
+ state.actorNodeGeneration === claim.actorNodeGeneration
1607
+ );
1569
1608
  }
1570
1609
 
1571
1610
  function matchesAcceptedProducerProof(
1572
1611
  proof: ZLinkActorSessionAcceptedProducerProof,
1573
1612
  claim: ServiceSessionBindingAdmissionClaim
1574
1613
  ): boolean {
1575
- return proof.actorId === claim.actorId
1576
- && proof.objectGeneration === claim.objectGeneration
1577
- && routingIdsEqual(proof.actorNodeRid, claim.actorNodeRid)
1578
- && proof.actorNodeGeneration === claim.actorNodeGeneration
1579
- && proof.sessionIdentity === claim.sessionIdentity
1580
- && proof.bindingGeneration === claim.bindingGeneration;
1614
+ return (
1615
+ proof.actorId === claim.actorId &&
1616
+ proof.objectGeneration === claim.objectGeneration &&
1617
+ routingIdsEqual(proof.actorNodeRid, claim.actorNodeRid) &&
1618
+ proof.actorNodeGeneration === claim.actorNodeGeneration &&
1619
+ proof.sessionIdentity === claim.sessionIdentity &&
1620
+ proof.bindingGeneration === claim.bindingGeneration
1621
+ );
1581
1622
  }
1582
1623
 
1583
1624
  function validAcceptedTargetProof(
1584
1625
  state: ZLinkActorSessionRelocationState,
1585
1626
  proof: ZLinkActorSessionAcceptedProducerProof
1586
1627
  ): boolean {
1587
- return proof.actorId === state.actorId
1588
- && proof.objectGeneration === state.actorGeneration
1589
- && proof.actorNodeRid.length > 0
1590
- && proof.actorNodeGeneration > 0n
1591
- && proof.sessionIdentity === state.sessionIdentity
1592
- && proof.bindingGeneration === state.bindingGeneration;
1628
+ return (
1629
+ proof.actorId === state.actorId &&
1630
+ proof.objectGeneration === state.actorGeneration &&
1631
+ proof.actorNodeRid.length > 0 &&
1632
+ proof.actorNodeGeneration > 0n &&
1633
+ proof.sessionIdentity === state.sessionIdentity &&
1634
+ proof.bindingGeneration === state.bindingGeneration
1635
+ );
1593
1636
  }
1594
1637
 
1595
1638
  function relocationSourceProof(
1596
1639
  state: ZLinkActorSessionRelocationState
1597
1640
  ): ZLinkActorSessionAcceptedProducerProof | undefined {
1598
1641
  if (
1599
- state.sessionIdentity === undefined
1600
- || state.actorNodeRid === undefined
1601
- || state.actorNodeGeneration === undefined
1602
- ) return undefined;
1642
+ state.sessionIdentity === undefined ||
1643
+ state.actorNodeRid === undefined ||
1644
+ state.actorNodeGeneration === undefined
1645
+ )
1646
+ return undefined;
1603
1647
  return {
1604
1648
  actorId: state.actorId,
1605
1649
  objectGeneration: state.actorGeneration,
@@ -1610,10 +1654,7 @@ function relocationSourceProof(
1610
1654
  };
1611
1655
  }
1612
1656
 
1613
- function failRetainedOutbound(
1614
- operation: ZLinkActorSessionRetainedOutbound,
1615
- error: unknown
1616
- ): void {
1657
+ function failRetainedOutbound(operation: ZLinkActorSessionRetainedOutbound, error: unknown): void {
1617
1658
  try {
1618
1659
  operation.fail(error);
1619
1660
  } catch {
@@ -1627,9 +1668,9 @@ function assertSuccessorSessionIdentity(
1627
1668
  successor: ZLinkActorSessionRelocationClaim
1628
1669
  ): void {
1629
1670
  if (
1630
- predecessor.actorGeneration !== successor.actorGeneration
1631
- || predecessor.bindingGeneration !== successor.bindingGeneration
1632
- || predecessor.sessionIdentity !== successor.sessionIdentity
1671
+ predecessor.actorGeneration !== successor.actorGeneration ||
1672
+ predecessor.bindingGeneration !== successor.bindingGeneration ||
1673
+ predecessor.sessionIdentity !== successor.sessionIdentity
1633
1674
  ) {
1634
1675
  throw createInternalFrameworkException(
1635
1676
  ZLinkFrameworkInternalErrorKind.ActorLocationStale,
@@ -1648,14 +1689,18 @@ function routeMatchesFence<
1648
1689
  TContext extends ZLinkActorSessionBindingContext<TActor>,
1649
1690
  TActor extends ZLinkActorSessionBindingActor
1650
1691
  >(route: ZLinkActorSessionRoute<TContext, TActor>, expected: ZLinkActorSessionRouteFence): boolean {
1651
- const ref = (route.actor as TActor & { readonly ref?: unknown }).ref as {
1652
- readonly objectGeneration?: bigint;
1653
- readonly generation?: bigint;
1654
- readonly bindingGeneration?: bigint;
1655
- } | undefined;
1656
- return ref !== undefined
1657
- && BigInt(ref.objectGeneration ?? ref.generation ?? -1n) === expected.objectGeneration
1658
- && ref.bindingGeneration === expected.bindingGeneration;
1692
+ const ref = (route.actor as TActor & { readonly ref?: unknown }).ref as
1693
+ | {
1694
+ readonly objectGeneration?: bigint;
1695
+ readonly generation?: bigint;
1696
+ readonly bindingGeneration?: bigint;
1697
+ }
1698
+ | undefined;
1699
+ return (
1700
+ ref !== undefined &&
1701
+ BigInt(ref.objectGeneration ?? ref.generation ?? -1n) === expected.objectGeneration &&
1702
+ ref.bindingGeneration === expected.bindingGeneration
1703
+ );
1659
1704
  }
1660
1705
 
1661
1706
  function sessionIdentityFromContext<
@@ -1665,10 +1710,7 @@ function sessionIdentityFromContext<
1665
1710
  return context.routingId === undefined ? undefined : String(context.routingId);
1666
1711
  }
1667
1712
 
1668
- function waitForSessionRelocation(
1669
- operation: Promise<void>,
1670
- signal?: AbortSignal
1671
- ): Promise<void> {
1713
+ function waitForSessionRelocation(operation: Promise<void>, signal?: AbortSignal): Promise<void> {
1672
1714
  if (signal === undefined) return operation;
1673
1715
  if (signal.aborted) return Promise.reject(signal.reason ?? createAbortError());
1674
1716
  return new Promise<void>((resolve, reject) => {
@@ -1682,7 +1724,7 @@ function waitForSessionRelocation(
1682
1724
  signal.removeEventListener('abort', onAbort);
1683
1725
  resolve();
1684
1726
  },
1685
- error => {
1727
+ (error) => {
1686
1728
  signal.removeEventListener('abort', onAbort);
1687
1729
  reject(error);
1688
1730
  }