@zlink-systems/framework 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
  13. package/dist/contracts/Handlers/JsonContract.js +23 -11
  14. package/dist/contracts/Spots/SpotKind.js +16 -8
  15. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
  16. package/dist/location-store-integration.js +16 -16
  17. package/dist/nest-integration.js +17 -11
  18. package/dist/runtime/abort.js +9 -5
  19. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  20. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  21. package/dist/runtime/actors/actor-client.js +83 -63
  22. package/dist/runtime/actors/actor-context.js +28 -22
  23. package/dist/runtime/actors/actor-creation.js +4 -3
  24. package/dist/runtime/actors/actor-handoff.js +89 -92
  25. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
  26. package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
  27. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  28. package/dist/runtime/actors/actor-mailbox.js +1 -1
  29. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  30. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  31. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  32. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  33. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  34. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  35. package/dist/runtime/actors/bound-session-wire.js +14 -9
  36. package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
  37. package/dist/runtime/actors/index.js +2 -5
  38. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  39. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  40. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  41. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  42. package/dist/runtime/admission.js +2 -6
  43. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  44. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  45. package/dist/runtime/backend/contracts/index.d.ts +1 -0
  46. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  47. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  48. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  49. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  50. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  51. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  52. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
  53. package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
  54. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  55. package/dist/runtime/backend/runtime-message.js +3 -3
  56. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  57. package/dist/runtime/backend/runtime-values.js +4 -5
  58. package/dist/runtime/channels/channel-clients.js +27 -24
  59. package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
  60. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  61. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  62. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  63. package/dist/runtime/channels/channel-envelope.js +83 -47
  64. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  65. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  66. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  67. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  68. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  69. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  70. package/dist/runtime/channels/channel-transports.js +46 -42
  71. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  72. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  73. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
  74. package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
  75. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  76. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  77. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  78. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  79. package/dist/runtime/channels/source-spot-router.js +6 -2
  80. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  81. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  82. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  83. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
  84. package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
  85. package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
  86. package/dist/runtime/diagnostics/flow-context.js +2 -2
  87. package/dist/runtime/diagnostics/index.js +38 -10
  88. package/dist/runtime/diagnostics/message-flow.js +58 -42
  89. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  90. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  91. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  92. package/dist/runtime/execution/index.js +7 -6
  93. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  94. package/dist/runtime/execution/state-lane.js +2 -2
  95. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
  96. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  97. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  98. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
  99. package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
  100. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  101. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  102. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  103. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  104. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  105. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  106. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  107. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  108. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  109. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  110. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  111. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
  112. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  113. package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
  114. package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
  115. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  116. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
  117. package/dist/runtime/foundation/service-topology-registry.js +105 -96
  118. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  119. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  120. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  121. package/dist/runtime/framework-errors-internal.js +7 -10
  122. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  123. package/dist/runtime/handlers/index.js +3 -1
  124. package/dist/runtime/host/actor-packet-relay.js +74 -70
  125. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  126. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  127. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  128. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  129. package/dist/runtime/host/application-job-queue.js +18 -22
  130. package/dist/runtime/host/bound-session-relay.js +3 -1
  131. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  132. package/dist/runtime/host/host-capacity-status.js +8 -4
  133. package/dist/runtime/host/index.js +245 -228
  134. package/dist/runtime/host/instance-activation-authority.js +93 -96
  135. package/dist/runtime/host/location-runtime-owner.js +16 -14
  136. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  137. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  138. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  139. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  140. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  141. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  142. package/dist/runtime/host/runtime-shutdown.js +1 -2
  143. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  144. package/dist/runtime/host/spot-address-transport.js +69 -71
  145. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  146. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  147. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  148. package/dist/runtime/locations/actor-location-claims.js +26 -20
  149. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  150. package/dist/runtime/locations/authority-key-codec.js +7 -7
  151. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  152. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  153. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  154. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  155. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  156. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  157. package/dist/runtime/locations/key-codec.js +1 -1
  158. package/dist/runtime/locations/lease-tracker.js +23 -21
  159. package/dist/runtime/locations/lifecycle.js +4 -5
  160. package/dist/runtime/locations/location-store-repository.js +368 -324
  161. package/dist/runtime/locations/opaque-record-key.js +2 -2
  162. package/dist/runtime/locations/resolvers.js +73 -82
  163. package/dist/runtime/locations/runtime.js +68 -63
  164. package/dist/runtime/locations/spot-location-claims.js +39 -35
  165. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  166. package/dist/runtime/messaging/packet-name.js +7 -6
  167. package/dist/runtime/messaging/payload-codec.js +21 -18
  168. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  169. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  170. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
  171. package/dist/runtime/routing-id.js +3 -5
  172. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  173. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  174. package/dist/runtime/spots/index.js +209 -220
  175. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  176. package/dist/runtime/spots/spot-activation-state.js +17 -15
  177. package/dist/runtime/spots/spot-activation.js +33 -16
  178. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  179. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  180. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
  181. package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
  182. package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
  183. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  184. package/dist/runtime/spots/spot-closing.js +3 -7
  185. package/dist/runtime/spots/spot-context.js +2 -2
  186. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  187. package/dist/runtime/spots/spot-handle.js +6 -3
  188. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  189. package/dist/runtime/spots/spot-manager-public.js +5 -6
  190. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  191. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  192. package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
  193. package/dist/runtime/spots/spot-outbound.js +10 -14
  194. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  195. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  196. package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
  197. package/dist/runtime/spots/spot-route-replies.js +4 -6
  198. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  199. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
  200. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  201. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  202. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  203. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  204. package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
  205. package/dist/runtime/spots/spot-timer.js +26 -30
  206. package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
  207. package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
  208. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
  209. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  210. package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
  211. package/dist/runtime/streams/bound-session-response-target.js +8 -1
  212. package/dist/runtime/streams/bound-session-service.d.ts +1 -0
  213. package/dist/runtime/streams/bound-session-service.js +14 -12
  214. package/dist/runtime/streams/index.js +28 -20
  215. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  216. package/dist/runtime/streams/managed-stream.js +52 -31
  217. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  218. package/dist/runtime/streams/protocol.d.ts +5 -1
  219. package/dist/runtime/streams/protocol.js +68 -20
  220. package/dist/runtime/streams/session-actor-coordinator.js +37 -41
  221. package/dist/runtime/streams/session-context.d.ts +9 -2
  222. package/dist/runtime/streams/session-context.js +50 -32
  223. package/dist/runtime/streams/session-local-actors.d.ts +3 -1
  224. package/dist/runtime/streams/session-local-actors.js +17 -2
  225. package/dist/runtime/streams/session-provider.js +2 -2
  226. package/dist/runtime/streams/session-serial-executor.js +1 -2
  227. package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
  228. package/dist/runtime/streams/stream-frame-factory.js +14 -7
  229. package/dist/runtime/streams/stream-session-runtime.js +112 -78
  230. package/dist/runtime/workers/index.js +15 -4
  231. package/package.json +3 -3
  232. package/src/contracts/Channels/RouteCalls.ts +6 -1
  233. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  234. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  235. package/src/contracts/Configuration/Builders.ts +14 -14
  236. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  237. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  238. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  239. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  240. package/src/contracts/Configuration/Registration.ts +46 -17
  241. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  242. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  243. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  244. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  245. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  246. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  247. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  248. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  249. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  250. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  251. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
  252. package/src/contracts/Errors/index.ts +1 -4
  253. package/src/contracts/Handlers/Attributes.ts +15 -9
  254. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  255. package/src/contracts/Handlers/JsonContract.ts +53 -19
  256. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  257. package/src/contracts/Locations/Authority.ts +4 -11
  258. package/src/contracts/Locations/Keys.ts +6 -1
  259. package/src/contracts/Locations/Options.ts +3 -2
  260. package/src/contracts/Locations/RelocationStore.ts +1 -4
  261. package/src/contracts/Locations/Resolvers.ts +5 -5
  262. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  263. package/src/contracts/Locations/Stores.ts +1 -2
  264. package/src/contracts/Locations/index.ts +2 -8
  265. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  266. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  267. package/src/contracts/Spots/Contracts.ts +2 -8
  268. package/src/contracts/Spots/SpotKind.ts +16 -8
  269. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  270. package/src/contracts/Streams/IZLinkSession.ts +2 -2
  271. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  272. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  273. package/src/internal.ts +5 -4
  274. package/src/location-store-integration.ts +24 -16
  275. package/src/nest-integration.ts +40 -25
  276. package/src/runtime/abort.ts +10 -4
  277. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  278. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  279. package/src/runtime/actors/actor-client.ts +162 -133
  280. package/src/runtime/actors/actor-context.ts +142 -134
  281. package/src/runtime/actors/actor-creation.ts +47 -44
  282. package/src/runtime/actors/actor-execution-context.ts +6 -4
  283. package/src/runtime/actors/actor-handoff.ts +269 -293
  284. package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
  285. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  286. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  287. package/src/runtime/actors/actor-mailbox.ts +16 -19
  288. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  289. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  290. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  291. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  292. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  293. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  294. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  295. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  296. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  297. package/src/runtime/actors/bound-session-wire.ts +37 -17
  298. package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
  299. package/src/runtime/actors/index.ts +43 -86
  300. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  301. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  302. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  303. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  304. package/src/runtime/admission.ts +9 -9
  305. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  306. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  307. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  308. package/src/runtime/backend/contracts/index.ts +77 -52
  309. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  310. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  311. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  312. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  313. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  314. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  315. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  316. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  317. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  318. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  319. package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
  320. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  321. package/src/runtime/backend/runtime-message.ts +5 -3
  322. package/src/runtime/backend/runtime-values.ts +10 -7
  323. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  324. package/src/runtime/channels/channel-clients.ts +93 -73
  325. package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
  326. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  327. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  328. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  329. package/src/runtime/channels/channel-envelope.ts +256 -150
  330. package/src/runtime/channels/channel-multipart.ts +13 -5
  331. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  332. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  333. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  334. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  335. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  336. package/src/runtime/channels/channel-socket-options.ts +3 -10
  337. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  338. package/src/runtime/channels/channel-transports.ts +218 -206
  339. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  340. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  341. package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
  342. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  343. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  344. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  345. package/src/runtime/channels/index.ts +1 -4
  346. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  347. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  348. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  349. package/src/runtime/channels/source-spot-router.ts +26 -22
  350. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  351. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  352. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  353. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  354. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  355. package/src/runtime/codecs/index.ts +3 -2
  356. package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
  357. package/src/runtime/diagnostics/flow-context.ts +18 -7
  358. package/src/runtime/diagnostics/index.ts +96 -61
  359. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  360. package/src/runtime/diagnostics/message-flow.ts +107 -79
  361. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  362. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  363. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  364. package/src/runtime/execution/index.ts +18 -26
  365. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  366. package/src/runtime/execution/state-lane.ts +2 -2
  367. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
  368. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  369. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  370. package/src/runtime/foundation/operation-identity.ts +1 -2
  371. package/src/runtime/foundation/operation-registry.ts +8 -2
  372. package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
  373. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  374. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  375. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  376. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  377. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  378. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  379. package/src/runtime/foundation/service-mailbox.ts +14 -14
  380. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  381. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  382. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  383. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  384. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  385. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  386. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  387. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
  388. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  389. package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
  390. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  391. package/src/runtime/foundation/service-topology-registry.ts +170 -159
  392. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  393. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  394. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  395. package/src/runtime/framework-errors-internal.ts +31 -30
  396. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  397. package/src/runtime/handlers/index.ts +18 -8
  398. package/src/runtime/host/actor-packet-relay.ts +290 -261
  399. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  400. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  401. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  402. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  403. package/src/runtime/host/application-job-queue.ts +32 -48
  404. package/src/runtime/host/bound-session-relay.ts +7 -9
  405. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  406. package/src/runtime/host/host-capacity-status.ts +10 -9
  407. package/src/runtime/host/index.ts +861 -789
  408. package/src/runtime/host/instance-activation-authority.ts +125 -143
  409. package/src/runtime/host/location-runtime-owner.ts +38 -26
  410. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  411. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  412. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  413. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  414. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  415. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  416. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  417. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  418. package/src/runtime/host/runtime-shutdown.ts +4 -3
  419. package/src/runtime/host/service-relocation-control.ts +14 -5
  420. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  421. package/src/runtime/host/spot-address-transport.ts +284 -237
  422. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  423. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  424. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  425. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  426. package/src/runtime/locations/actor-location-claims.ts +61 -49
  427. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  428. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  429. package/src/runtime/locations/authority-key-codec.ts +13 -10
  430. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  431. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  432. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  433. package/src/runtime/locations/canonical-codec.ts +3 -1
  434. package/src/runtime/locations/creation-operation-id.ts +4 -3
  435. package/src/runtime/locations/domain-store-contract.ts +13 -7
  436. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  437. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  438. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  439. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  440. package/src/runtime/locations/key-codec.ts +3 -4
  441. package/src/runtime/locations/lease-tracker.ts +36 -27
  442. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  443. package/src/runtime/locations/lifecycle.ts +33 -28
  444. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  445. package/src/runtime/locations/opaque-record-key.ts +4 -9
  446. package/src/runtime/locations/resolvers.ts +201 -178
  447. package/src/runtime/locations/runtime.ts +251 -159
  448. package/src/runtime/locations/spot-location-claims.ts +110 -112
  449. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  450. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  451. package/src/runtime/messaging/packet-name.ts +8 -6
  452. package/src/runtime/messaging/payload-codec.ts +70 -50
  453. package/src/runtime/messaging/submission-result.ts +6 -9
  454. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  455. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
  456. package/src/runtime/routing-id.ts +10 -7
  457. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  458. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  459. package/src/runtime/spots/index.ts +595 -564
  460. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  461. package/src/runtime/spots/spot-activation-state.ts +43 -51
  462. package/src/runtime/spots/spot-activation.ts +179 -116
  463. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  464. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  465. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  466. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  467. package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
  468. package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
  469. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  470. package/src/runtime/spots/spot-closing.ts +11 -12
  471. package/src/runtime/spots/spot-context.ts +46 -26
  472. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  473. package/src/runtime/spots/spot-handle.ts +17 -15
  474. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  475. package/src/runtime/spots/spot-location-claim.ts +5 -4
  476. package/src/runtime/spots/spot-manager-public.ts +62 -82
  477. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  478. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  479. package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
  480. package/src/runtime/spots/spot-outbound.ts +47 -59
  481. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  482. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  483. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  484. package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
  485. package/src/runtime/spots/spot-route-replies.ts +23 -24
  486. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  487. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  488. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
  489. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  490. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  491. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  492. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  493. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  494. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  495. package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
  496. package/src/runtime/spots/spot-timer.ts +103 -91
  497. package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
  498. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
  499. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  500. package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
  501. package/src/runtime/streams/bound-session-response-target.ts +39 -9
  502. package/src/runtime/streams/bound-session-service.ts +52 -42
  503. package/src/runtime/streams/index.ts +183 -100
  504. package/src/runtime/streams/managed-stream.ts +123 -90
  505. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  506. package/src/runtime/streams/protocol.ts +115 -46
  507. package/src/runtime/streams/session-actor-coordinator.ts +109 -93
  508. package/src/runtime/streams/session-calls.ts +2 -8
  509. package/src/runtime/streams/session-context.ts +96 -51
  510. package/src/runtime/streams/session-local-actors.ts +19 -3
  511. package/src/runtime/streams/session-provider.ts +5 -7
  512. package/src/runtime/streams/session-serial-executor.ts +7 -6
  513. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  514. package/src/runtime/streams/stream-frame-factory.ts +59 -40
  515. package/src/runtime/streams/stream-session-runtime.ts +317 -214
  516. package/src/runtime/workers/index.ts +68 -29
@@ -12,6 +12,7 @@ const actor_lifecycle_snapshot_1 = require("./actor-lifecycle-snapshot");
12
12
  const operation_identity_1 = require("../foundation/operation-identity");
13
13
  const actor_join_deferred_scope_1 = require("./actor-join-deferred-scope");
14
14
  const execution_1 = require("../execution");
15
+ const dispatch_error_details_1 = require("../diagnostics/dispatch-error-details");
15
16
  exports.ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME = Symbol('zlink.actor.join-entry-spot-runtime');
16
17
  class DefaultZLinkActorContext {
17
18
  state;
@@ -154,7 +155,6 @@ class DefaultZLinkActorJoinSpotCall {
154
155
  };
155
156
  try {
156
157
  (0, actor_join_deferred_scope_1.deferActorJoin)({
157
- requestBytes: requestMessage.data().byteLength,
158
158
  prepare: async () => {
159
159
  if (prepared)
160
160
  return;
@@ -179,14 +179,17 @@ class DefaultZLinkActorJoinSpotCall {
179
179
  execute: async () => {
180
180
  let result;
181
181
  try {
182
- const pending = pendingJoin ?? this.coordinator.joinSpot(this.actor, this.state, this.spotId, requestMessage, remainingJoinTimeout(deadline.atMs), deadline.signal, operationId);
183
- result = this.turn === undefined
184
- ? await pending
185
- : await this.turn.yieldFrameworkPromise(pending);
182
+ const pending = pendingJoin ??
183
+ this.coordinator.joinSpot(this.actor, this.state, this.spotId, requestMessage, remainingJoinTimeout(deadline.atMs), deadline.signal, operationId);
184
+ result =
185
+ this.turn === undefined
186
+ ? await pending
187
+ : await this.turn.yieldFrameworkPromise(pending);
186
188
  }
187
189
  catch (error) {
188
190
  this.state.endDeferredJoin();
189
- await this.coordinator.abortDeferredJoin?.(this.actor, this.state, operationId)
191
+ await this.coordinator
192
+ .abortDeferredJoin?.(this.actor, this.state, operationId)
190
193
  .catch(() => undefined);
191
194
  await notifyJoinFailure(this.actor, operationId, error, this.coordinator);
192
195
  return;
@@ -195,10 +198,10 @@ class DefaultZLinkActorJoinSpotCall {
195
198
  deadline.close();
196
199
  requestMessage.close();
197
200
  }
198
- if (!result.accepted
199
- || sourceNodeRid === undefined
200
- || result.actor === undefined
201
- || String(sourceNodeRid) === String(result.actor.nodeRid)) {
201
+ if (!result.accepted ||
202
+ sourceNodeRid === undefined ||
203
+ result.actor === undefined ||
204
+ String(sourceNodeRid) === String(result.actor.nodeRid)) {
202
205
  await notifyJoinCompletion(this.actor, operationId, result, this.messageSerializers);
203
206
  }
204
207
  else {
@@ -277,7 +280,6 @@ class DefaultZLinkActorJoinEntrySpotCall {
277
280
  };
278
281
  try {
279
282
  (0, actor_join_deferred_scope_1.deferActorJoin)({
280
- requestBytes: requestMessage.data().byteLength,
281
283
  prepare: async () => {
282
284
  if (prepared)
283
285
  return;
@@ -299,14 +301,17 @@ class DefaultZLinkActorJoinEntrySpotCall {
299
301
  execute: async () => {
300
302
  let result;
301
303
  try {
302
- const pending = pendingJoin ?? this.coordinator.joinEntrySpot(this.actor, this.state, undefined, requestMessage, remainingJoinTimeout(deadline.atMs), deadline.signal, operationId);
303
- result = this.turn === undefined
304
- ? await pending
305
- : await this.turn.yieldFrameworkPromise(pending);
304
+ const pending = pendingJoin ??
305
+ this.coordinator.joinEntrySpot(this.actor, this.state, undefined, requestMessage, remainingJoinTimeout(deadline.atMs), deadline.signal, operationId);
306
+ result =
307
+ this.turn === undefined
308
+ ? await pending
309
+ : await this.turn.yieldFrameworkPromise(pending);
306
310
  }
307
311
  catch (error) {
308
312
  this.state.endDeferredJoin();
309
- await this.coordinator.abortDeferredJoin?.(this.actor, this.state, operationId)
313
+ await this.coordinator
314
+ .abortDeferredJoin?.(this.actor, this.state, operationId)
310
315
  .catch(() => undefined);
311
316
  await notifyJoinFailure(this.actor, operationId, error, this.coordinator);
312
317
  return;
@@ -315,10 +320,10 @@ class DefaultZLinkActorJoinEntrySpotCall {
315
320
  deadline.close();
316
321
  requestMessage.close();
317
322
  }
318
- if (!result.accepted
319
- || sourceNodeRid === undefined
320
- || result.actor === undefined
321
- || String(sourceNodeRid) === String(result.actor.nodeRid)) {
323
+ if (!result.accepted ||
324
+ sourceNodeRid === undefined ||
325
+ result.actor === undefined ||
326
+ String(sourceNodeRid) === String(result.actor.nodeRid)) {
322
327
  await notifyJoinCompletion(this.actor, operationId, result, this.messageSerializers);
323
328
  }
324
329
  else {
@@ -430,6 +435,7 @@ async function notifyJoinFailure(actor, operationId, error, coordinator) {
430
435
  // The completion carries only an error kind, so trace the cause on the
431
436
  // message flow under the same flow id as the Join that produced it.
432
437
  const tracePoint = coordinator?.messageFlow?.()?.begin(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Error);
438
+ const errorDetails = tracePoint === undefined ? undefined : (0, dispatch_error_details_1.dispatchErrorDetails)(error);
433
439
  tracePoint?.trace({
434
440
  outcome: ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Error,
435
441
  surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotActor,
@@ -438,8 +444,8 @@ async function notifyJoinFailure(actor, operationId, error, coordinator) {
438
444
  actorId: actor.context.actorId,
439
445
  errorReason: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException,
440
446
  errorAction: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.ReplyError,
441
- errorType: String(frameworkError.kind),
442
- errorMessage: String(error)
447
+ errorType: errorDetails?.errorType,
448
+ errorMessage: errorDetails?.errorMessage
443
449
  });
444
450
  await actor.onJoinCompleted?.({
445
451
  status: 'failed',
@@ -93,9 +93,10 @@ class ZLinkActorCreationCoordinator {
93
93
  }
94
94
  let response;
95
95
  try {
96
- response = nodeRid === undefined
97
- ? { accepted: true }
98
- : await this.options.actorCreatedNotifier?.(nodeRid, actor, createRequest.callbackRequest, signal) ?? { accepted: true };
96
+ response =
97
+ nodeRid === undefined
98
+ ? { accepted: true }
99
+ : ((await this.options.actorCreatedNotifier?.(nodeRid, actor, createRequest.callbackRequest, signal)) ?? { accepted: true });
99
100
  }
100
101
  catch (error) {
101
102
  await this.discardStagingActor(state, nativeActorNode);
@@ -46,7 +46,8 @@ class ZLinkActorHandoffCoordinator {
46
46
  replyRoutes = new Map();
47
47
  constructor(options) {
48
48
  this.options = options;
49
- this.messageFollowDurationMs = options.messageFollowDurationMs ?? exports.DEFAULT_MESSAGE_FOLLOW_DURATION_MS;
49
+ this.messageFollowDurationMs =
50
+ options.messageFollowDurationMs ?? exports.DEFAULT_MESSAGE_FOLLOW_DURATION_MS;
50
51
  }
51
52
  begin(actorId, oldGeneration) {
52
53
  this.startHandoff(actorId, oldGeneration, { phase: 'relocating' });
@@ -62,10 +63,12 @@ class ZLinkActorHandoffCoordinator {
62
63
  throw new Error(`Actor '${actorId}' handoff requires a positive source ObjectGeneration.`);
63
64
  }
64
65
  const source = this.options.requestSource(actorId);
65
- if (source.meshName.length === 0 || source.ownerId.length === 0
66
- || source.ownerLeaseGeneration <= 0n
67
- || source.nodeRid.length === 0 || source.nodeGeneration <= 0n
68
- || source.authorityOwnerGeneration <= 0n) {
66
+ if (source.meshName.length === 0 ||
67
+ source.ownerId.length === 0 ||
68
+ source.ownerLeaseGeneration <= 0n ||
69
+ source.nodeRid.length === 0 ||
70
+ source.nodeGeneration <= 0n ||
71
+ source.authorityOwnerGeneration <= 0n) {
69
72
  throw new Error(`Actor '${actorId}' handoff requires an exact source owner fence.`);
70
73
  }
71
74
  if (source.objectGeneration !== oldGeneration) {
@@ -85,8 +88,7 @@ class ZLinkActorHandoffCoordinator {
85
88
  ownerId: source.ownerId,
86
89
  ownerLeaseGeneration: source.ownerLeaseGeneration,
87
90
  nodeRid: sourceOwner.nodeRid,
88
- nodeRidHex: sourceOwner.nodeRidHex
89
- ?? (0, routing_id_1.encodeRoutingIdStorageHex)(sourceOwner.nodeRid),
91
+ nodeRidHex: sourceOwner.nodeRidHex ?? (0, routing_id_1.encodeRoutingIdStorageHex)(sourceOwner.nodeRid),
90
92
  nodeGeneration: source.nodeGeneration,
91
93
  authorityOwnerGeneration: source.authorityOwnerGeneration
92
94
  });
@@ -195,7 +197,7 @@ class ZLinkActorHandoffCoordinator {
195
197
  void start.then(() => {
196
198
  release.startOpen = true;
197
199
  this.finishPrefixReleaseIfIdle(actorId, handoff, release);
198
- }, error => {
200
+ }, (error) => {
199
201
  release.startOpen = true;
200
202
  if (handoff.pending.length === 0)
201
203
  release.errors.push(error);
@@ -222,7 +224,7 @@ class ZLinkActorHandoffCoordinator {
222
224
  const pending = handoff.pending.slice(begin, end);
223
225
  let admitted;
224
226
  try {
225
- admitted = release.queue(pending.map(record => this.createPrefixRecord(record, release)));
227
+ admitted = release.queue(pending.map((record) => this.createPrefixRecord(record, release)));
226
228
  }
227
229
  catch (error) {
228
230
  this.failUnqueuedPrefix(handoff, release, error);
@@ -230,7 +232,7 @@ class ZLinkActorHandoffCoordinator {
230
232
  }
231
233
  release.cursor = end;
232
234
  release.inFlight += 1;
233
- void admitted.terminal.then(() => this.completePrefixBatch(actorId, handoff, release), error => {
235
+ void admitted.terminal.then(() => this.completePrefixBatch(actorId, handoff, release), (error) => {
234
236
  release.errors.push(error);
235
237
  this.completePrefixBatch(actorId, handoff, release);
236
238
  });
@@ -291,9 +293,7 @@ class ZLinkActorHandoffCoordinator {
291
293
  this.finishPrefixReleaseIfIdle(actorId, handoff, release);
292
294
  }
293
295
  finishPrefixReleaseIfIdle(actorId, handoff, release) {
294
- if (!release.startOpen
295
- || release.inFlight !== 0
296
- || release.cursor !== handoff.pending.length)
296
+ if (!release.startOpen || release.inFlight !== 0 || release.cursor !== handoff.pending.length)
297
297
  return;
298
298
  if (handoff.prefixRelease === release)
299
299
  handoff.prefixRelease = undefined;
@@ -413,14 +413,14 @@ class ZLinkActorHandoffCoordinator {
413
413
  }
414
414
  capture(actorId, parts, returnResponse = false, remoteBoundSessionTarget, fallbackActorRef, deadlineUnixMs, messageFollowOrigin, provisionalReplay) {
415
415
  const incomingContext = (0, actor_message_follow_context_1.actorMessageFollowContext)(fallbackActorRef);
416
- const originalDeadlineUnixMs = deadlineUnixMs
417
- ?? incomingContext?.deadlineUnixMs
418
- ?? packetDeadlineUnixMs(parts);
416
+ const originalDeadlineUnixMs = deadlineUnixMs ?? incomingContext?.deadlineUnixMs ?? packetDeadlineUnixMs(parts);
419
417
  const handoff = this.active.get(actorId);
420
418
  if (handoff !== undefined) {
421
419
  if (parts.length < 2)
422
420
  return Promise.resolve(undefined);
423
- if (handoff.connectionBoundSealed && !returnResponse && remoteBoundSessionTarget !== undefined) {
421
+ if (handoff.connectionBoundSealed &&
422
+ !returnResponse &&
423
+ remoteBoundSessionTarget !== undefined) {
424
424
  // The Session route seal already fixed the accepted high water. A
425
425
  // send whose lifetime is only the Session connection can no longer
426
426
  // drain here and must never enter the durable frozen journal, so the
@@ -430,7 +430,8 @@ class ZLinkActorHandoffCoordinator {
430
430
  if (handoff.phase === 'provisional' && handoff.replay === undefined) {
431
431
  handoff.replay = provisionalReplay;
432
432
  }
433
- const context = incomingContext ?? this.createInitialIngressContext(handoff.sourceOwner, handoff.oldGeneration, parts, returnResponse, originalDeadlineUnixMs);
433
+ const context = incomingContext ??
434
+ this.createInitialIngressContext(handoff.sourceOwner, handoff.oldGeneration, parts, returnResponse, originalDeadlineUnixMs);
434
435
  try {
435
436
  this.validateContext(actorId, context, parts, returnResponse, fallbackActorRef);
436
437
  }
@@ -499,13 +500,13 @@ class ZLinkActorHandoffCoordinator {
499
500
  }
500
501
  const followRoute = this.findMessageFollowRoute(actorId, incomingContext);
501
502
  const staleGeneration = fallbackActorRef?.objectGeneration;
502
- if (fallbackActorRef !== undefined
503
- && this.options.isCurrentActorRef?.(actorId, fallbackActorRef) === true) {
503
+ if (fallbackActorRef !== undefined &&
504
+ this.options.isCurrentActorRef?.(actorId, fallbackActorRef) === true) {
504
505
  if (incomingContext !== undefined) {
505
506
  this.validateContext(actorId, incomingContext, parts, returnResponse, fallbackActorRef);
506
507
  const currentFence = this.options.currentOwnerFence?.(actorId);
507
- if (currentFence !== undefined
508
- && !(0, actor_message_follow_context_1.messageFollowOwnerFencesEqual)(incomingContext.targetOwner, currentFence)) {
508
+ if (currentFence !== undefined &&
509
+ !(0, actor_message_follow_context_1.messageFollowOwnerFencesEqual)(incomingContext.targetOwner, currentFence)) {
509
510
  // A relocation round trip (A→B→A) keeps the ObjectGeneration, so a
510
511
  // context resolved against a departed tenure still addresses this
511
512
  // node while the current tenure holds strictly newer authority
@@ -526,18 +527,17 @@ class ZLinkActorHandoffCoordinator {
526
527
  }
527
528
  return undefined;
528
529
  }
529
- if (incomingContext === undefined
530
- && fallbackActorRef !== undefined
531
- && this.hasMessageFollowRouteForStaleRef(actorId, fallbackActorRef)) {
530
+ if (incomingContext === undefined &&
531
+ fallbackActorRef !== undefined &&
532
+ this.hasMessageFollowRouteForStaleRef(actorId, fallbackActorRef)) {
532
533
  this.options.onMarker?.('message_follow_rejected', actorId);
533
534
  return Promise.reject(actorLocationStale(actorId));
534
535
  }
535
- if (followRoute === undefined
536
- &&
537
- staleGeneration !== undefined
538
- && this.staleGenerations.get(actorId)?.has(staleGeneration) === true
539
- && fallbackActorRef !== undefined
540
- && this.isKnownStaleRef(actorId, fallbackActorRef)) {
536
+ if (followRoute === undefined &&
537
+ staleGeneration !== undefined &&
538
+ this.staleGenerations.get(actorId)?.has(staleGeneration) === true &&
539
+ fallbackActorRef !== undefined &&
540
+ this.isKnownStaleRef(actorId, fallbackActorRef)) {
541
541
  this.options.onMarker?.('message_follow_expired', actorId);
542
542
  return Promise.reject(actorLocationStale(actorId));
543
543
  }
@@ -575,8 +575,8 @@ class ZLinkActorHandoffCoordinator {
575
575
  snapshotCoreBacklog(actorId) {
576
576
  const handoff = this.requireActive(actorId);
577
577
  let snapshotIndex = -1;
578
- while (snapshotIndex + 1 < handoff.pending.length
579
- && handoff.pending[snapshotIndex + 1].packet.returnResponse === false) {
578
+ while (snapshotIndex + 1 < handoff.pending.length &&
579
+ handoff.pending[snapshotIndex + 1].packet.returnResponse === false) {
580
580
  snapshotIndex++;
581
581
  }
582
582
  handoff.snapshotIndex = snapshotIndex;
@@ -592,7 +592,7 @@ class ZLinkActorHandoffCoordinator {
592
592
  const handoff = this.requireActive(actorId);
593
593
  const first = handoff.snapshotIndex + 1;
594
594
  handoff.snapshotIndex = handoff.pending.length - 1;
595
- return handoff.pending.slice(first).map(entry => entry.packet);
595
+ return handoff.pending.slice(first).map((entry) => entry.packet);
596
596
  }
597
597
  complete(actorId, target, targetActorRef, results, targetOwnerFence) {
598
598
  const handoff = this.requireActive(actorId);
@@ -630,10 +630,9 @@ class ZLinkActorHandoffCoordinator {
630
630
  if (pending.packet.source !== undefined) {
631
631
  this.removeReplyRoute(pending.packet.source.replyRouteId);
632
632
  }
633
- void this.enqueueMessageFollow(followRoute, actorId, pending.packet)
634
- .then(value => {
633
+ void this.enqueueMessageFollow(followRoute, actorId, pending.packet).then((value) => {
635
634
  pending.resolve?.(value);
636
- }, error => {
635
+ }, (error) => {
637
636
  pending.reject?.(error);
638
637
  });
639
638
  }
@@ -641,16 +640,15 @@ class ZLinkActorHandoffCoordinator {
641
640
  messageFollowCount(actorId) {
642
641
  return actorId === undefined
643
642
  ? this.messageFollowRoutes.size
644
- : [...this.messageFollowRoutes.values()]
645
- .filter(route => route.targetActorRef.actorId === actorId).length;
643
+ : [...this.messageFollowRoutes.values()].filter((route) => route.targetActorRef.actorId === actorId).length;
646
644
  }
647
645
  pendingCount(actorId) {
648
646
  return this.active.get(actorId)?.pending.length ?? 0;
649
647
  }
650
648
  isKnownStale(actor) {
651
- return this.messageFollowCount(actor.actorId) === 0
652
- && this.options.isCurrentActorRef?.(actor.actorId, actor) !== true
653
- && this.isKnownStaleRef(actor.actorId, actor);
649
+ return (this.messageFollowCount(actor.actorId) === 0 &&
650
+ this.options.isCurrentActorRef?.(actor.actorId, actor) !== true &&
651
+ this.isKnownStaleRef(actor.actorId, actor));
654
652
  }
655
653
  recordStaleFailure(actorId) {
656
654
  this.options.onMarker?.('message_follow_rejected', actorId);
@@ -660,10 +658,10 @@ class ZLinkActorHandoffCoordinator {
660
658
  if (source === undefined || source.replyRouteId.length === 0)
661
659
  return 'notAcknowledged';
662
660
  const route = this.replyRoutes.get(source.replyRouteId);
663
- if (route === undefined
664
- || packet.messageFollowContext.objectGeneration
665
- !== route.sourceEvidence.objectGeneration.toString()
666
- || !(0, actor_message_follow_context_1.messageFollowOwnerFencesEqual)(packet.messageFollowContext.targetOwner, route.sourceOwner)) {
661
+ if (route === undefined ||
662
+ packet.messageFollowContext.objectGeneration !==
663
+ route.sourceEvidence.objectGeneration.toString() ||
664
+ !(0, actor_message_follow_context_1.messageFollowOwnerFencesEqual)(packet.messageFollowContext.targetOwner, route.sourceOwner)) {
667
665
  return 'notAcknowledged';
668
666
  }
669
667
  return this.acceptRelocatedTerminalRelay(packet.messageFollowContext.operationId, source.replyRouteId, source, result, sourceNodeRid, targetAuthorityOwnerGeneration, actorId).status;
@@ -675,14 +673,14 @@ class ZLinkActorHandoffCoordinator {
675
673
  if (route === undefined)
676
674
  return { status: 'notAcknowledged' };
677
675
  const exactSource = source ?? route.source;
678
- if (!requestSourcesEqual(route.source, exactSource)
679
- || (actorId !== undefined && route.actorId !== actorId)
680
- || route.operationId !== operationId
681
- || route.targetNodeRid === undefined
682
- || !(0, routing_id_1.routingIdsEqual)(route.targetNodeRid, sourceNodeRid)
683
- || route.targetAuthorityOwnerGeneration === undefined
684
- || (targetAuthorityOwnerGeneration !== undefined
685
- && route.targetAuthorityOwnerGeneration !== targetAuthorityOwnerGeneration)) {
676
+ if (!requestSourcesEqual(route.source, exactSource) ||
677
+ (actorId !== undefined && route.actorId !== actorId) ||
678
+ route.operationId !== operationId ||
679
+ route.targetNodeRid === undefined ||
680
+ !(0, routing_id_1.routingIdsEqual)(route.targetNodeRid, sourceNodeRid) ||
681
+ route.targetAuthorityOwnerGeneration === undefined ||
682
+ (targetAuthorityOwnerGeneration !== undefined &&
683
+ route.targetAuthorityOwnerGeneration !== targetAuthorityOwnerGeneration)) {
686
684
  return { status: 'notAcknowledged' };
687
685
  }
688
686
  try {
@@ -823,8 +821,8 @@ class ZLinkActorHandoffCoordinator {
823
821
  const stale = this.staleGenerations.get(actorId);
824
822
  if (stale !== undefined) {
825
823
  const recordedGeneration = stale.get(entry.oldGeneration);
826
- if (recordedGeneration !== undefined
827
- && recordedGeneration <= departedAuthorityOwnerGeneration) {
824
+ if (recordedGeneration !== undefined &&
825
+ recordedGeneration <= departedAuthorityOwnerGeneration) {
828
826
  stale.delete(entry.oldGeneration);
829
827
  }
830
828
  if (stale.size === 0)
@@ -849,10 +847,10 @@ class ZLinkActorHandoffCoordinator {
849
847
  return this.messageFollowRoutes.get(messageFollowRouteKey(actorId, BigInt(context.objectGeneration), context.targetOwner));
850
848
  }
851
849
  hasMessageFollowRouteForStaleRef(actorId, actorRef) {
852
- return [...this.messageFollowRoutes.values()].some(route => route.targetActorRef.actorId === actorId
853
- && actorRef.objectGeneration === route.oldGeneration
854
- && (route.oldNodeRid === undefined
855
- || (0, routing_id_1.routingIdsEqual)(actorRef.nodeRid, (0, actor_message_follow_context_1.messageFollowOwnerNodeRid)(route.sourceOwner))));
850
+ return [...this.messageFollowRoutes.values()].some((route) => route.targetActorRef.actorId === actorId &&
851
+ actorRef.objectGeneration === route.oldGeneration &&
852
+ (route.oldNodeRid === undefined ||
853
+ (0, routing_id_1.routingIdsEqual)(actorRef.nodeRid, (0, actor_message_follow_context_1.messageFollowOwnerNodeRid)(route.sourceOwner))));
856
854
  }
857
855
  createInitialIngressContext(sourceOwner, generation, parts, request, deadlineUnixMs) {
858
856
  const operationId = (0, actor_message_follow_context_1.createMessageFollowId)();
@@ -871,15 +869,14 @@ class ZLinkActorHandoffCoordinator {
871
869
  });
872
870
  }
873
871
  validateContext(actorId, context, parts, request, actorRef) {
874
- if (actorRef !== undefined
875
- && context.objectGeneration !== actorRef.objectGeneration.toString()) {
872
+ if (actorRef !== undefined &&
873
+ context.objectGeneration !== actorRef.objectGeneration.toString()) {
876
874
  throw actorGenerationStale(actorId);
877
875
  }
878
876
  if (context.objectGeneration === '0' || context.request !== request) {
879
877
  throw actorLocationStale(actorId);
880
878
  }
881
- if (context.deadlineUnixMs !== undefined
882
- && Date.now() >= context.deadlineUnixMs) {
879
+ if (context.deadlineUnixMs !== undefined && Date.now() >= context.deadlineUnixMs) {
883
880
  throw actorDeadlineExceeded(actorId);
884
881
  }
885
882
  (0, actor_message_follow_context_1.verifyActorMessageFollowPayload)(context, parts);
@@ -888,13 +885,15 @@ class ZLinkActorHandoffCoordinator {
888
885
  const physicalRefs = this.staleActorRefs.get(actorId);
889
886
  if (physicalRefs !== undefined) {
890
887
  const departedAuthorityOwnerGeneration = physicalRefs.get(actorRefKey(actor.nodeRid, actor.objectGeneration));
891
- return departedAuthorityOwnerGeneration !== undefined
892
- && !this.isNewerTenureRef(actorId, actor, departedAuthorityOwnerGeneration);
893
- }
894
- const departedAuthorityOwnerGeneration = this.staleGenerations.get(actorId)?.get(actor.objectGeneration);
895
- return departedAuthorityOwnerGeneration !== undefined
896
- && !this.isNewerTenureRef(actorId, actor, departedAuthorityOwnerGeneration)
897
- && this.options.isStaleActorRef?.(actorId, actor) === true;
888
+ return (departedAuthorityOwnerGeneration !== undefined &&
889
+ !this.isNewerTenureRef(actorId, actor, departedAuthorityOwnerGeneration));
890
+ }
891
+ const departedAuthorityOwnerGeneration = this.staleGenerations
892
+ .get(actorId)
893
+ ?.get(actor.objectGeneration);
894
+ return (departedAuthorityOwnerGeneration !== undefined &&
895
+ !this.isNewerTenureRef(actorId, actor, departedAuthorityOwnerGeneration) &&
896
+ this.options.isStaleActorRef?.(actorId, actor) === true);
898
897
  }
899
898
  /**
900
899
  * The stale record captures the departing tenure's full fence. A ref whose
@@ -921,9 +920,9 @@ class ZLinkActorHandoffCoordinator {
921
920
  const context = packet.messageFollowContext;
922
921
  const duplicate = entry.operations.get(context.operationId);
923
922
  if (duplicate !== undefined) {
924
- if (duplicate.checksum !== context.payloadChecksumSha256
925
- || duplicate.request !== context.request
926
- || duplicate.replyRouteId !== context.replyRouteId) {
923
+ if (duplicate.checksum !== context.payloadChecksumSha256 ||
924
+ duplicate.request !== context.request ||
925
+ duplicate.replyRouteId !== context.replyRouteId) {
927
926
  this.options.onMarker?.('message_follow_rejected', actorId);
928
927
  return Promise.reject(actorLocationStale(actorId));
929
928
  }
@@ -1026,7 +1025,8 @@ class ZLinkActorHandoffCoordinator {
1026
1025
  return;
1027
1026
  let accepted = false;
1028
1027
  try {
1029
- accepted = await this.options.onMessageFollowRelayed?.(actorId, entry.targetActorRef, context, packet.messageFollowOrigin, entry.queuedMessages, entry.queuedBytes) === true;
1028
+ accepted =
1029
+ (await this.options.onMessageFollowRelayed?.(actorId, entry.targetActorRef, context, packet.messageFollowOrigin, entry.queuedMessages, entry.queuedBytes)) === true;
1030
1030
  }
1031
1031
  catch {
1032
1032
  accepted = false;
@@ -1090,9 +1090,9 @@ async function replayActorHandoffBacklog(backlog, dispatch, onEnqueued) {
1090
1090
  for (const packet of backlog) {
1091
1091
  const decoded = decodeHandoffPacket(packet);
1092
1092
  try {
1093
- if (packet.returnResponse
1094
- && packet.messageFollowContext.deadlineUnixMs !== undefined
1095
- && Date.now() >= packet.messageFollowContext.deadlineUnixMs) {
1093
+ if (packet.returnResponse &&
1094
+ packet.messageFollowContext.deadlineUnixMs !== undefined &&
1095
+ Date.now() >= packet.messageFollowContext.deadlineUnixMs) {
1096
1096
  throw actorDeadlineExceeded(packet.fallbackActorRef?.actorId ?? 'accepted-handoff');
1097
1097
  }
1098
1098
  await onEnqueued?.(packet.index);
@@ -1104,9 +1104,7 @@ async function replayActorHandoffBacklog(backlog, dispatch, onEnqueued) {
1104
1104
  index: packet.index,
1105
1105
  ok: false,
1106
1106
  error: error instanceof Error ? error.message : String(error),
1107
- errorKind: error instanceof contracts_1.ZLinkFrameworkException
1108
- ? (0, framework_errors_internal_1.internalFrameworkErrorKind)(error)
1109
- : undefined
1107
+ errorKind: error instanceof contracts_1.ZLinkFrameworkException ? (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) : undefined
1110
1108
  });
1111
1109
  }
1112
1110
  finally {
@@ -1213,13 +1211,13 @@ function actorRefEvidenceKey(nodeRid, nodeRidHex, generation) {
1213
1211
  return `${nodeRidHex ?? (0, routing_id_1.encodeRoutingIdStorageHex)(nodeRid)}\u0000${generation}`;
1214
1212
  }
1215
1213
  function requestSourcesEqual(expected, actual) {
1216
- return expected.replyRouteId === actual.replyRouteId
1217
- && expected.ownerId === actual.ownerId
1218
- && expected.ownerLeaseGeneration === actual.ownerLeaseGeneration
1219
- && expected.nodeRid === actual.nodeRid
1220
- && expected.nodeGeneration === actual.nodeGeneration
1221
- && /^[1-9][0-9]*$/.test(actual.ownerLeaseGeneration)
1222
- && /^[1-9][0-9]*$/.test(actual.nodeGeneration);
1214
+ return (expected.replyRouteId === actual.replyRouteId &&
1215
+ expected.ownerId === actual.ownerId &&
1216
+ expected.ownerLeaseGeneration === actual.ownerLeaseGeneration &&
1217
+ expected.nodeRid === actual.nodeRid &&
1218
+ expected.nodeGeneration === actual.nodeGeneration &&
1219
+ /^[1-9][0-9]*$/.test(actual.ownerLeaseGeneration) &&
1220
+ /^[1-9][0-9]*$/.test(actual.nodeGeneration));
1223
1221
  }
1224
1222
  function terminalRequestSource(route) {
1225
1223
  return Object.freeze({
@@ -1243,10 +1241,9 @@ function actorMoving(actorId) {
1243
1241
  return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorMoving, `Actor '${actorId}' bound-session send arrived after its Session route seal.`, true);
1244
1242
  }
1245
1243
  function actorRelayError(actorId, errorKind, error) {
1246
- const kind = Object.values(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind)
1247
- .includes(errorKind)
1244
+ const kind = Object.values(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind).includes(errorKind)
1248
1245
  ? errorKind
1249
1246
  : framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed;
1250
- return (0, framework_errors_internal_1.createInternalFrameworkException)(kind, String(error ?? `Actor Message Follow relay failed for '${actorId}'.`), kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorMoving
1251
- || kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected);
1247
+ return (0, framework_errors_internal_1.createInternalFrameworkException)(kind, String(error ?? `Actor Message Follow relay failed for '${actorId}'.`), kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorMoving ||
1248
+ kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected);
1252
1249
  }
@@ -1,5 +1,4 @@
1
1
  interface DeferredActorJoin {
2
- readonly requestBytes: number;
3
2
  /** Starts target admission after the handler terminal, before reply admission. */
4
3
  readonly prepare?: () => Promise<void> | void;
5
4
  readonly execute: () => Promise<void>;
@@ -2,15 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.deferActorJoin = deferActorJoin;
4
4
  exports.runActorHandlerWithDeferredJoins = runActorHandlerWithDeferredJoins;
5
- const framework_errors_internal_1 = require("../framework-errors-internal");
6
5
  const node_async_hooks_1 = require("node:async_hooks");
7
6
  const configuration_1 = require("../configuration");
8
- const MAX_DEFERRED_JOINS = 64;
9
- const MAX_DEFERRED_JOIN_REQUEST_BYTES = 1024 * 1024;
10
- const MAX_DEFERRED_JOIN_BYTES = 8 * 1024 * 1024;
11
7
  class ActorJoinRegistrationScope {
12
8
  intents = [];
13
- totalBytes = 0;
14
9
  open = true;
15
10
  prepared = false;
16
11
  // Ledger 2.3: a deferred join runs in registration order right after the
@@ -21,20 +16,7 @@ class ActorJoinRegistrationScope {
21
16
  discardWithoutWaiting(intent);
22
17
  throw new configuration_1.ZLinkConfigurationException('Actor join defer requires an open Framework actor handler scope.');
23
18
  }
24
- if (this.intents.length >= MAX_DEFERRED_JOINS) {
25
- discardWithoutWaiting(intent);
26
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidConfiguration, `An actor handler may defer at most ${MAX_DEFERRED_JOINS} joins.`);
27
- }
28
- if (intent.requestBytes > MAX_DEFERRED_JOIN_REQUEST_BYTES) {
29
- discardWithoutWaiting(intent);
30
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidConfiguration, `A deferred actor join request may use at most ${MAX_DEFERRED_JOIN_REQUEST_BYTES} bytes.`);
31
- }
32
- if (this.totalBytes + intent.requestBytes > MAX_DEFERRED_JOIN_BYTES) {
33
- discardWithoutWaiting(intent);
34
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidConfiguration, `Deferred actor join requests may use at most ${MAX_DEFERRED_JOIN_BYTES} bytes per handler.`);
35
- }
36
19
  this.intents.push(intent);
37
- this.totalBytes += intent.requestBytes;
38
20
  }
39
21
  sealAfterHandlerTerminal() {
40
22
  this.open = false;
@@ -31,8 +31,7 @@ class ZLinkLocalNativeActorJoin {
31
31
  }
32
32
  const completion = await this.waitForJoinCompletion(() => node.joinActorSpot(actorRef, (0, routing_id_1.toBackendRoutingId)(target.targetNodeRid), (0, routing_id_1.toBackendRoutingId)(target.spotId), target.targetSpotGeneration, actorJoinApplicationPayload(request), timeoutMs), completions, timeoutMs, signal);
33
33
  const control = completion.kindData;
34
- if (control?.kind !== 'actorJoinCompletion' ||
35
- control.actor === null) {
34
+ if (control?.kind !== 'actorJoinCompletion' || control.actor === null) {
36
35
  (0, mesh_completion_table_1.closeMeshCompletion)(completion);
37
36
  const message = `Actor join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`;
38
37
  // Classify the (terminal, fine) pair instead of collapsing every non-OK
@@ -85,14 +84,15 @@ class ZLinkLocalNativeActorJoin {
85
84
  const completions = this.requireCompletions();
86
85
  const actorMeshName = runtimeActorMeshName(actor, state, '');
87
86
  const targetNodeRid = spotRouteTarget?.targetNodeRid ?? nodeRid;
88
- const remote = spotRouteTarget !== undefined && (!(0, routing_id_2.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(node.status().routingId), spotRouteTarget.targetNodeRid) || !(0, routing_id_2.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(actorRef.nodeRid), spotRouteTarget.targetNodeRid));
87
+ const remote = spotRouteTarget !== undefined &&
88
+ (!(0, routing_id_2.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(node.status().routingId), spotRouteTarget.targetNodeRid) ||
89
+ !(0, routing_id_2.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(actorRef.nodeRid), spotRouteTarget.targetNodeRid));
89
90
  if (remote) {
90
91
  return await this.relocateRemoteActorJoin(node, actor, state, actorRef, spotRouteTarget, request, timeoutMs, signal, completionOperationId, true);
91
92
  }
92
93
  const completion = await this.waitForJoinCompletion(() => node.joinActorEntrySpot(actorRef, (0, routing_id_1.toBackendRoutingId)(targetNodeRid), actorJoinApplicationPayload(request), timeoutMs), completions, timeoutMs, signal);
93
94
  const control = completion.kindData;
94
- if (control?.kind !== 'actorJoinCompletion' ||
95
- control.actor === null) {
95
+ if (control?.kind !== 'actorJoinCompletion' || control.actor === null) {
96
96
  (0, mesh_completion_table_1.closeMeshCompletion)(completion);
97
97
  const message = `Actor entry SPOT join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`;
98
98
  // Classify the (terminal, fine) pair instead of collapsing to NotFound
@@ -149,9 +149,7 @@ class ZLinkLocalNativeActorJoin {
149
149
  }
150
150
  const completions = this.requireCompletions();
151
151
  let relocationId = (0, node_crypto_1.randomUUID)();
152
- const completionOperationKey = completionOperationId === undefined
153
- ? undefined
154
- : (0, operation_identity_1.operationIdentityKey)(completionOperationId);
152
+ const completionOperationKey = completionOperationId === undefined ? undefined : (0, operation_identity_1.operationIdentityKey)(completionOperationId);
155
153
  if (completionOperationKey === relocationId) {
156
154
  throw new Error('Actor Join OperationId must be distinct from RelocationId.');
157
155
  }
@@ -161,8 +159,7 @@ class ZLinkLocalNativeActorJoin {
161
159
  // the existing internal admission route (wire protocol §10); fabricating
162
160
  // an Actor fence from the destination Spot would let a stale source pass
163
161
  // receiver-side Authority-row equality.
164
- const canonicalAdmission = actorAuthorityFence === undefined
165
- || !supportsCanonicalActorJoin(node, entrySpot)
162
+ const canonicalAdmission = actorAuthorityFence === undefined || !supportsCanonicalActorJoin(node, entrySpot)
166
163
  ? undefined
167
164
  : {
168
165
  request: actorJoinApplicationPayload(request),
@@ -359,19 +356,21 @@ function canonicalHandoffRelocationId(handoffId) {
359
356
  if (!/^[0-9a-f]{32}$/u.test(hex) || /^0+$/u.test(hex)) {
360
357
  throw new TypeError('Canonical Actor Join handoff id is not a non-zero 128-bit identity.');
361
358
  }
362
- return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}`
363
- + `-${hex.slice(16, 20)}-${hex.slice(20)}`;
359
+ return (`${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}` +
360
+ `-${hex.slice(16, 20)}-${hex.slice(20)}`);
364
361
  }
365
362
  function remoteActorJoinFailureException(node, target, terminalResult, failureErrno, message) {
366
363
  const failure = (0, framework_errors_internal_1.wireReplyFailureException)(terminalResult, failureErrno, message);
367
364
  const targetGeneration = target.targetNodeGeneration;
368
- if (failure.kind === contracts_1.ZLinkFrameworkErrorKind.DeadlineExceeded
369
- && targetGeneration !== undefined
370
- && targetGeneration !== 0n
371
- && !node.peers().some((peer) => peer.state === 3
372
- && peer.routingId !== null
373
- && (0, routing_id_2.routingIdsEqual)(peer.routingId, target.targetNodeRid)
374
- && peer.lifecycleGeneration === targetGeneration)) {
365
+ if (failure.kind === contracts_1.ZLinkFrameworkErrorKind.DeadlineExceeded &&
366
+ targetGeneration !== undefined &&
367
+ targetGeneration !== 0n &&
368
+ !node
369
+ .peers()
370
+ .some((peer) => peer.state === 3 &&
371
+ peer.routingId !== null &&
372
+ (0, routing_id_2.routingIdsEqual)(peer.routingId, target.targetNodeRid) &&
373
+ peer.lifecycleGeneration === targetGeneration)) {
375
374
  return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, 'wire Actor join target RouteMesh peer became unavailable');
376
375
  }
377
376
  return failure;