@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
@@ -1,13 +1,7 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
2
1
  import { AsyncLocalStorage } from 'node:async_hooks';
3
2
  import { ZLinkConfigurationException } from '../configuration';
4
3
 
5
- const MAX_DEFERRED_JOINS = 64;
6
- const MAX_DEFERRED_JOIN_REQUEST_BYTES = 1024 * 1024;
7
- const MAX_DEFERRED_JOIN_BYTES = 8 * 1024 * 1024;
8
-
9
4
  interface DeferredActorJoin {
10
- readonly requestBytes: number;
11
5
  /** Starts target admission after the handler terminal, before reply admission. */
12
6
  readonly prepare?: () => Promise<void> | void;
13
7
  readonly execute: () => Promise<void>;
@@ -16,7 +10,6 @@ interface DeferredActorJoin {
16
10
 
17
11
  class ActorJoinRegistrationScope {
18
12
  private readonly intents: DeferredActorJoin[] = [];
19
- private totalBytes = 0;
20
13
  private open = true;
21
14
  private prepared = false;
22
15
 
@@ -31,29 +24,7 @@ class ActorJoinRegistrationScope {
31
24
  'Actor join defer requires an open Framework actor handler scope.'
32
25
  );
33
26
  }
34
- if (this.intents.length >= MAX_DEFERRED_JOINS) {
35
- discardWithoutWaiting(intent);
36
- throw createInternalFrameworkException(
37
- ZLinkFrameworkInternalErrorKind.InvalidConfiguration,
38
- `An actor handler may defer at most ${MAX_DEFERRED_JOINS} joins.`
39
- );
40
- }
41
- if (intent.requestBytes > MAX_DEFERRED_JOIN_REQUEST_BYTES) {
42
- discardWithoutWaiting(intent);
43
- throw createInternalFrameworkException(
44
- ZLinkFrameworkInternalErrorKind.InvalidConfiguration,
45
- `A deferred actor join request may use at most ${MAX_DEFERRED_JOIN_REQUEST_BYTES} bytes.`
46
- );
47
- }
48
- if (this.totalBytes + intent.requestBytes > MAX_DEFERRED_JOIN_BYTES) {
49
- discardWithoutWaiting(intent);
50
- throw createInternalFrameworkException(
51
- ZLinkFrameworkInternalErrorKind.InvalidConfiguration,
52
- `Deferred actor join requests may use at most ${MAX_DEFERRED_JOIN_BYTES} bytes per handler.`
53
- );
54
- }
55
27
  this.intents.push(intent);
56
- this.totalBytes += intent.requestBytes;
57
28
  }
58
29
 
59
30
  sealAfterHandlerTerminal(): void {
@@ -110,9 +81,7 @@ export function deferActorJoin(intent: DeferredActorJoin): void {
110
81
  scope.register(intent);
111
82
  }
112
83
 
113
- export function runActorHandlerWithDeferredJoins<T>(
114
- handler: () => Promise<T> | T
115
- ): Promise<T>;
84
+ export function runActorHandlerWithDeferredJoins<T>(handler: () => Promise<T> | T): Promise<T>;
116
85
  export function runActorHandlerWithDeferredJoins<T, TResult>(
117
86
  handler: () => Promise<T> | T,
118
87
  afterHandler: (result: T) => Promise<TResult> | TResult,
@@ -1,8 +1,4 @@
1
- import type {
2
- ActorRef,
3
- ZLinkActor,
4
- ZLinkActorMembership
5
- } from '../../contracts';
1
+ import type { ActorRef, ZLinkActor, ZLinkActorMembership } from '../../contracts';
6
2
  import { ZLinkConfigurationException } from '../configuration';
7
3
 
8
4
  export const ZLINK_ACTOR_LIFECYCLE_SNAPSHOT = Symbol('zlink.actor.lifecycle-snapshot');
@@ -61,9 +57,10 @@ export function createActorMembership(
61
57
 
62
58
  function lifecycleSource(actor: ZLinkActor): ZLinkActorLifecycleSnapshotSource {
63
59
  const rawContext: unknown = actor.context;
64
- const context = typeof rawContext === 'object' && rawContext !== null
65
- ? (rawContext as ZLinkActorLifecycleSnapshotContext)
66
- : undefined;
60
+ const context =
61
+ typeof rawContext === 'object' && rawContext !== null
62
+ ? (rawContext as ZLinkActorLifecycleSnapshotContext)
63
+ : undefined;
67
64
  // A caller can hand in a value that carries no Framework context at all, so the
68
65
  // failure path reports the configuration error instead of dereferencing it.
69
66
  const actorId = context?.actorId ?? '<unknown>';
@@ -9,15 +9,12 @@ import type {
9
9
  RoutingId,
10
10
  ZLinkActor,
11
11
  ZLinkActorJoinOperationId,
12
- ZLinkMessageSerializer,
12
+ ZLinkMessageSerializer
13
13
  } from '../../contracts';
14
14
  import { ZLinkFrameworkErrorKind, ZLinkSpotKind } from '../../contracts';
15
15
  import type { ZLinkActorJoinRuntimeResult } from './actor-runtime-contracts';
16
16
  import type { Message } from '../../contracts/Common/Message';
17
- import type {
18
- ZLinkBackendActorRef,
19
- ZLinkBackendMeshNode
20
- } from '../backend/contracts';
17
+ import type { ZLinkBackendActorRef, ZLinkBackendMeshNode } from '../backend/contracts';
21
18
  import {
22
19
  closeMeshCompletion,
23
20
  type ZLinkMeshCompletion,
@@ -87,23 +84,21 @@ export class ZLinkLocalNativeActorJoin {
87
84
  );
88
85
  }
89
86
  const completion = await this.waitForJoinCompletion(
90
- () => node.joinActorSpot(
91
- actorRef,
92
- toBackendRoutingId(target.targetNodeRid),
93
- toBackendRoutingId(target.spotId),
94
- target.targetSpotGeneration,
95
- actorJoinApplicationPayload(request),
96
- timeoutMs
97
- ),
87
+ () =>
88
+ node.joinActorSpot(
89
+ actorRef,
90
+ toBackendRoutingId(target.targetNodeRid),
91
+ toBackendRoutingId(target.spotId),
92
+ target.targetSpotGeneration,
93
+ actorJoinApplicationPayload(request),
94
+ timeoutMs
95
+ ),
98
96
  completions,
99
97
  timeoutMs,
100
98
  signal
101
99
  );
102
100
  const control = completion.kindData;
103
- if (
104
- control?.kind !== 'actorJoinCompletion' ||
105
- control.actor === null
106
- ) {
101
+ if (control?.kind !== 'actorJoinCompletion' || control.actor === null) {
107
102
  closeMeshCompletion(completion);
108
103
  const message = `Actor join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`;
109
104
  // Classify the (terminal, fine) pair instead of collapsing every non-OK
@@ -111,11 +106,7 @@ export class ZLinkLocalNativeActorJoin {
111
106
  // 83-118). An OK terminal that carries no join control is a protocol
112
107
  // violation, not a missing route.
113
108
  throw completion.terminalResult !== 0 || completion.failureErrno !== 0
114
- ? wireReplyFailureException(
115
- completion.terminalResult,
116
- completion.failureErrno,
117
- message
118
- )
109
+ ? wireReplyFailureException(completion.terminalResult, completion.failureErrno, message)
119
110
  : createInternalFrameworkException(
120
111
  ZLinkFrameworkInternalErrorKind.RequestProtocolError,
121
112
  message
@@ -150,9 +141,7 @@ export class ZLinkLocalNativeActorJoin {
150
141
  );
151
142
  // The Session owner relays from the verified Ready authority snapshot;
152
143
  // membership coordinates alone cannot recreate a User/Instance fence.
153
- state.setRemoteActorPacketTarget(
154
- target.spotKind === ZLinkSpotKind.Entry ? undefined : target
155
- );
144
+ state.setRemoteActorPacketTarget(target.spotKind === ZLinkSpotKind.Entry ? undefined : target);
156
145
  if (state.actorType !== undefined) {
157
146
  this.options.postCommitLocation?.joinedEventually(
158
147
  state.actorType,
@@ -170,10 +159,7 @@ export class ZLinkLocalNativeActorJoin {
170
159
  try {
171
160
  return {
172
161
  accepted: true,
173
- actor: toFrameworkActorRef(
174
- control.actor as never,
175
- actorMeshName
176
- ),
162
+ actor: toFrameworkActorRef(control.actor as never, actorMeshName),
177
163
  reply: completion.parts[0]
178
164
  };
179
165
  } finally {
@@ -197,15 +183,13 @@ export class ZLinkLocalNativeActorJoin {
197
183
  const completions = this.requireCompletions();
198
184
  const actorMeshName = runtimeActorMeshName(actor, state, '');
199
185
  const targetNodeRid = spotRouteTarget?.targetNodeRid ?? nodeRid;
200
- const remote = spotRouteTarget !== undefined && (
201
- !routingIdsEqual(
186
+ const remote =
187
+ spotRouteTarget !== undefined &&
188
+ (!routingIdsEqual(
202
189
  toFrameworkRoutingId(node.status().routingId),
203
190
  spotRouteTarget.targetNodeRid
204
- ) || !routingIdsEqual(
205
- toFrameworkRoutingId(actorRef.nodeRid),
206
- spotRouteTarget.targetNodeRid
207
- )
208
- );
191
+ ) ||
192
+ !routingIdsEqual(toFrameworkRoutingId(actorRef.nodeRid), spotRouteTarget.targetNodeRid));
209
193
  if (remote) {
210
194
  return await this.relocateRemoteActorJoin(
211
195
  node,
@@ -221,32 +205,26 @@ export class ZLinkLocalNativeActorJoin {
221
205
  );
222
206
  }
223
207
  const completion = await this.waitForJoinCompletion(
224
- () => node.joinActorEntrySpot(
225
- actorRef,
226
- toBackendRoutingId(targetNodeRid),
227
- actorJoinApplicationPayload(request),
228
- timeoutMs
229
- ),
208
+ () =>
209
+ node.joinActorEntrySpot(
210
+ actorRef,
211
+ toBackendRoutingId(targetNodeRid),
212
+ actorJoinApplicationPayload(request),
213
+ timeoutMs
214
+ ),
230
215
  completions,
231
216
  timeoutMs,
232
217
  signal
233
218
  );
234
219
  const control = completion.kindData;
235
- if (
236
- control?.kind !== 'actorJoinCompletion' ||
237
- control.actor === null
238
- ) {
220
+ if (control?.kind !== 'actorJoinCompletion' || control.actor === null) {
239
221
  closeMeshCompletion(completion);
240
222
  const message = `Actor entry SPOT join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`;
241
223
  // Classify the (terminal, fine) pair instead of collapsing to NotFound
242
224
  // (spec 32-framework-error-model:83-118); an OK terminal with no join
243
225
  // control is a protocol violation.
244
226
  throw completion.terminalResult !== 0 || completion.failureErrno !== 0
245
- ? wireReplyFailureException(
246
- completion.terminalResult,
247
- completion.failureErrno,
248
- message
249
- )
227
+ ? wireReplyFailureException(completion.terminalResult, completion.failureErrno, message)
250
228
  : createInternalFrameworkException(
251
229
  ZLinkFrameworkInternalErrorKind.RequestProtocolError,
252
230
  message
@@ -291,10 +269,7 @@ export class ZLinkLocalNativeActorJoin {
291
269
  try {
292
270
  return {
293
271
  accepted: true,
294
- actor: toFrameworkActorRef(
295
- control.actor as never,
296
- actorMeshName
297
- ),
272
+ actor: toFrameworkActorRef(control.actor as never, actorMeshName),
298
273
  reply: completion.parts[0]
299
274
  };
300
275
  } finally {
@@ -311,11 +286,7 @@ export class ZLinkLocalNativeActorJoin {
311
286
  // The operation ID identifies one Core request. Once it is submitted, a
312
287
  // NotConnected completion is terminal for that request; resubmitting it
313
288
  // could execute the target lifecycle twice after a delayed reply.
314
- return submitJoinWhenConnected(
315
- () => completions.submit(submit, signal),
316
- timeoutMs,
317
- signal
318
- );
289
+ return submitJoinWhenConnected(() => completions.submit(submit, signal), timeoutMs, signal);
319
290
  }
320
291
 
321
292
  private async relocateRemoteActorJoin(
@@ -339,9 +310,8 @@ export class ZLinkLocalNativeActorJoin {
339
310
  }
340
311
  const completions = this.requireCompletions();
341
312
  let relocationId: string = randomUUID();
342
- const completionOperationKey = completionOperationId === undefined
343
- ? undefined
344
- : operationIdentityKey(completionOperationId);
313
+ const completionOperationKey =
314
+ completionOperationId === undefined ? undefined : operationIdentityKey(completionOperationId);
345
315
  if (completionOperationKey === relocationId) {
346
316
  throw new Error('Actor Join OperationId must be distinct from RelocationId.');
347
317
  }
@@ -351,59 +321,61 @@ export class ZLinkLocalNativeActorJoin {
351
321
  // the existing internal admission route (wire protocol §10); fabricating
352
322
  // an Actor fence from the destination Spot would let a stale source pass
353
323
  // receiver-side Authority-row equality.
354
- const canonicalAdmission = actorAuthorityFence === undefined
355
- || !supportsCanonicalActorJoin(node, entrySpot)
356
- ? undefined
357
- : {
358
- request: actorJoinApplicationPayload(request),
359
- actorFence: {
360
- targetNodeGeneration: actorAuthorityFence.nodeGeneration,
361
- authorityOwnerGeneration: actorAuthorityFence.authorityOwnerGeneration,
362
- ownerLeaseGeneration: actorAuthorityFence.ownerLeaseGeneration
363
- },
364
- local: { phase: 'admission', transferId: relocationId } as const
365
- };
324
+ const canonicalAdmission =
325
+ actorAuthorityFence === undefined || !supportsCanonicalActorJoin(node, entrySpot)
326
+ ? undefined
327
+ : {
328
+ request: actorJoinApplicationPayload(request),
329
+ actorFence: {
330
+ targetNodeGeneration: actorAuthorityFence.nodeGeneration,
331
+ authorityOwnerGeneration: actorAuthorityFence.authorityOwnerGeneration,
332
+ ownerLeaseGeneration: actorAuthorityFence.ownerLeaseGeneration
333
+ },
334
+ local: { phase: 'admission', transferId: relocationId } as const
335
+ };
366
336
  let admissionOperationId: ZLinkActorJoinOperationId | undefined;
367
337
  const admission = await this.waitForJoinCompletion(
368
338
  () => {
369
- const legacyAdmission = canonicalAdmission === undefined
370
- ? legacyRemoteActorJoinPayload(actor, state, actorRef, target, request, relocationId)
371
- : undefined;
372
- const operationId = canonicalAdmission === undefined
373
- ? entrySpot
374
- ? node.joinActorEntrySpot(
375
- actorRef,
376
- toBackendRoutingId(target.targetNodeRid),
377
- legacyAdmission!,
378
- timeoutMs
379
- )
380
- : node.joinActorSpot(
381
- actorRef,
382
- toBackendRoutingId(target.targetNodeRid),
383
- toBackendRoutingId(target.spotId),
384
- target.targetSpotGeneration!,
385
- legacyAdmission!,
386
- timeoutMs
387
- )
388
- : entrySpot
389
- ? node.joinActorEntrySpotCanonical!(
390
- actorRef,
391
- toBackendRoutingId(target.targetNodeRid),
392
- canonicalAdmission.request,
393
- canonicalAdmission.actorFence,
394
- canonicalAdmission.local,
395
- timeoutMs
396
- )
397
- : node.joinActorSpotCanonical!(
398
- actorRef,
399
- toBackendRoutingId(target.targetNodeRid),
400
- toBackendRoutingId(target.spotId),
401
- target.targetSpotGeneration!,
402
- canonicalAdmission.request,
403
- canonicalAdmission.actorFence,
404
- canonicalAdmission.local,
405
- timeoutMs
406
- );
339
+ const legacyAdmission =
340
+ canonicalAdmission === undefined
341
+ ? legacyRemoteActorJoinPayload(actor, state, actorRef, target, request, relocationId)
342
+ : undefined;
343
+ const operationId =
344
+ canonicalAdmission === undefined
345
+ ? entrySpot
346
+ ? node.joinActorEntrySpot(
347
+ actorRef,
348
+ toBackendRoutingId(target.targetNodeRid),
349
+ legacyAdmission!,
350
+ timeoutMs
351
+ )
352
+ : node.joinActorSpot(
353
+ actorRef,
354
+ toBackendRoutingId(target.targetNodeRid),
355
+ toBackendRoutingId(target.spotId),
356
+ target.targetSpotGeneration!,
357
+ legacyAdmission!,
358
+ timeoutMs
359
+ )
360
+ : entrySpot
361
+ ? node.joinActorEntrySpotCanonical!(
362
+ actorRef,
363
+ toBackendRoutingId(target.targetNodeRid),
364
+ canonicalAdmission.request,
365
+ canonicalAdmission.actorFence,
366
+ canonicalAdmission.local,
367
+ timeoutMs
368
+ )
369
+ : node.joinActorSpotCanonical!(
370
+ actorRef,
371
+ toBackendRoutingId(target.targetNodeRid),
372
+ toBackendRoutingId(target.spotId),
373
+ target.targetSpotGeneration!,
374
+ canonicalAdmission.request,
375
+ canonicalAdmission.actorFence,
376
+ canonicalAdmission.local,
377
+ timeoutMs
378
+ );
407
379
  admissionOperationId = operationId;
408
380
  return operationId;
409
381
  },
@@ -501,17 +473,16 @@ export class ZLinkLocalNativeActorJoin {
501
473
  : {
502
474
  replyContentType: control.replyContentType ?? 'application/octet-stream'
503
475
  }),
504
- reply: completionOperationId === undefined
505
- ? Buffer.alloc(0)
506
- : Buffer.from(admission.parts[0]?.data() ?? []),
476
+ reply:
477
+ completionOperationId === undefined
478
+ ? Buffer.alloc(0)
479
+ : Buffer.from(admission.parts[0]?.data() ?? []),
507
480
  actorNodeGeneration: actorAuthorityFence!.nodeGeneration,
508
481
  expectedOwnerLeaseGeneration: actorAuthorityFence!.ownerLeaseGeneration,
509
482
  targetNodeGeneration: target.targetNodeGeneration!,
510
483
  targetSpotGeneration: control.location.spotGeneration,
511
- targetAuthorityOwnerGeneration:
512
- actorAuthorityFence!.authorityOwnerGeneration + 1n,
513
- targetSpotAuthorityOwnerGeneration:
514
- target.authorityOwnerGeneration ?? 1n
484
+ targetAuthorityOwnerGeneration: actorAuthorityFence!.authorityOwnerGeneration + 1n,
485
+ targetSpotAuthorityOwnerGeneration: target.authorityOwnerGeneration ?? 1n
515
486
  }
516
487
  }),
517
488
  advertisedReceiveChunkLimitBytes: control.receiveChunkLimitBytes,
@@ -556,17 +527,18 @@ export class ZLinkLocalNativeActorJoin {
556
527
  }
557
528
  return completions;
558
529
  }
559
-
560
530
  }
561
531
 
562
532
  function remoteJoinAuthorityFence(
563
533
  node: ZLinkBackendMeshNode,
564
534
  state: ZLinkActorRuntimeState
565
- ): {
566
- readonly nodeGeneration: bigint;
567
- readonly authorityOwnerGeneration: bigint;
568
- readonly ownerLeaseGeneration: bigint;
569
- } | undefined {
535
+ ):
536
+ | {
537
+ readonly nodeGeneration: bigint;
538
+ readonly authorityOwnerGeneration: bigint;
539
+ readonly ownerLeaseGeneration: bigint;
540
+ }
541
+ | undefined {
570
542
  if (state.locationGeneration === undefined || state.ownerLeaseGeneration === undefined) {
571
543
  return undefined;
572
544
  }
@@ -577,10 +549,7 @@ function remoteJoinAuthorityFence(
577
549
  };
578
550
  }
579
551
 
580
- function supportsCanonicalActorJoin(
581
- node: ZLinkBackendMeshNode,
582
- entrySpot: boolean
583
- ): boolean {
552
+ function supportsCanonicalActorJoin(node: ZLinkBackendMeshNode, entrySpot: boolean): boolean {
584
553
  return entrySpot
585
554
  ? typeof node.joinActorEntrySpotCanonical === 'function'
586
555
  : typeof node.joinActorSpotCanonical === 'function';
@@ -606,20 +575,22 @@ function legacyRemoteActorJoinPayload(
606
575
  // only when this backend cannot prove the source Actor fence needed for
607
576
  // canonical admission; it never substitutes target-Spot values as an Actor
608
577
  // authority fence.
609
- const payload = Buffer.from(JSON.stringify({
610
- packetName: '__zlink.actor.join_spot.request',
611
- phase: 'admission',
612
- transferId,
613
- spotId: String(target.spotId),
614
- actorId: actor.context.actorId,
615
- actorType: state.actorType,
616
- actorNodeRid: String(actorRef.nodeRid),
617
- actorGeneration: actorRef.generation.toString(),
618
- ...(state.spotId === undefined ? {} : { sourceSpotId: String(state.spotId) }),
619
- ...(target.routerChannelId.length === 0 ? {} : { routerChannelId: target.routerChannelId }),
620
- request: Buffer.from(request.data()).toString('base64'),
621
- requestContentType: frameworkPayloadContentType(request)
622
- }));
578
+ const payload = Buffer.from(
579
+ JSON.stringify({
580
+ packetName: '__zlink.actor.join_spot.request',
581
+ phase: 'admission',
582
+ transferId,
583
+ spotId: String(target.spotId),
584
+ actorId: actor.context.actorId,
585
+ actorType: state.actorType,
586
+ actorNodeRid: String(actorRef.nodeRid),
587
+ actorGeneration: actorRef.generation.toString(),
588
+ ...(state.spotId === undefined ? {} : { sourceSpotId: String(state.spotId) }),
589
+ ...(target.routerChannelId.length === 0 ? {} : { routerChannelId: target.routerChannelId }),
590
+ request: Buffer.from(request.data()).toString('base64'),
591
+ requestContentType: frameworkPayloadContentType(request)
592
+ })
593
+ );
623
594
  return {
624
595
  packetName: ZLINK_FRAMEWORK_ACTOR_JOIN_PACKET_NAME,
625
596
  contentType: 'application/json',
@@ -636,8 +607,10 @@ function canonicalHandoffRelocationId(handoffId: string): string {
636
607
  if (!/^[0-9a-f]{32}$/u.test(hex) || /^0+$/u.test(hex)) {
637
608
  throw new TypeError('Canonical Actor Join handoff id is not a non-zero 128-bit identity.');
638
609
  }
639
- return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}`
640
- + `-${hex.slice(16, 20)}-${hex.slice(20)}`;
610
+ return (
611
+ `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}` +
612
+ `-${hex.slice(16, 20)}-${hex.slice(20)}`
613
+ );
641
614
  }
642
615
 
643
616
  function remoteActorJoinFailureException(
@@ -650,17 +623,18 @@ function remoteActorJoinFailureException(
650
623
  const failure = wireReplyFailureException(terminalResult, failureErrno, message);
651
624
  const targetGeneration = target.targetNodeGeneration;
652
625
  if (
653
- failure.kind === ZLinkFrameworkErrorKind.DeadlineExceeded
654
- && targetGeneration !== undefined
655
- && targetGeneration !== 0n
656
- && !node.peers().some((peer) =>
657
- peer.state === 3
658
- && peer.routingId !== null
659
- && routingIdsEqual(
660
- peer.routingId,
661
- target.targetNodeRid
626
+ failure.kind === ZLinkFrameworkErrorKind.DeadlineExceeded &&
627
+ targetGeneration !== undefined &&
628
+ targetGeneration !== 0n &&
629
+ !node
630
+ .peers()
631
+ .some(
632
+ (peer) =>
633
+ peer.state === 3 &&
634
+ peer.routingId !== null &&
635
+ routingIdsEqual(peer.routingId, target.targetNodeRid) &&
636
+ peer.lifecycleGeneration === targetGeneration
662
637
  )
663
- && peer.lifecycleGeneration === targetGeneration)
664
638
  ) {
665
639
  return createInternalFrameworkException(
666
640
  ZLinkFrameworkInternalErrorKind.RouteNotConnected,
@@ -680,9 +654,7 @@ function runtimeActorMeshName(
680
654
  readonly context?: { readonly meshName?: string };
681
655
  }
682
656
  ).context;
683
- const stateMeshName = (
684
- state as unknown as { readonly meshName?: string } | undefined
685
- )?.meshName;
657
+ const stateMeshName = (state as unknown as { readonly meshName?: string } | undefined)?.meshName;
686
658
  return context?.meshName ?? stateMeshName ?? fallback;
687
659
  }
688
660
 
@@ -19,18 +19,13 @@ export class ZLinkActorSerialExecutor {
19
19
  private readonly sourceSpotId: unknown,
20
20
  options?: ZLinkSerialSchedulerOptions
21
21
  ) {
22
- this.scheduler = new ZLinkSerialExecutionQueue(
23
- (record) => this.runRecord(record),
24
- options
25
- );
22
+ this.scheduler = new ZLinkSerialExecutionQueue((record) => this.runRecord(record), options);
26
23
  }
27
24
 
28
- execute<T>(
29
- operation: () => Promise<T> | T,
30
- workOptions?: ZLinkSerialWorkOptions
31
- ): Promise<T> {
25
+ execute<T>(operation: () => Promise<T> | T, workOptions?: ZLinkSerialWorkOptions): Promise<T> {
32
26
  const boundOperation = bindApplicationJobPermit(() =>
33
- runZLinkActorExecution(this.actorId, this.sourceSpotId, operation));
27
+ runZLinkActorExecution(this.actorId, this.sourceSpotId, operation)
28
+ );
34
29
  return hasApplicationJobPermit()
35
30
  ? this.scheduler.submitPreAdmitted(boundOperation, workOptions)
36
31
  : this.scheduler.submit(boundOperation, workOptions);
@@ -46,9 +41,7 @@ export class ZLinkActorSerialExecutor {
46
41
  admitDurablePrefix(
47
42
  records: readonly {
48
43
  readonly operation: (
49
- executeChild: <TChild>(
50
- child: () => Promise<TChild> | TChild
51
- ) => Promise<TChild>
44
+ executeChild: <TChild>(child: () => Promise<TChild> | TChild) => Promise<TChild>
52
45
  ) => Promise<void>;
53
46
  readonly preparation?: ZLinkSerialWorkPreparation;
54
47
  readonly workOptions?: ZLinkSerialWorkOptions;
@@ -56,13 +49,17 @@ export class ZLinkActorSerialExecutor {
56
49
  ): readonly Promise<void>[] {
57
50
  // No await occurs in this map: the whole durable prefix is appended in
58
51
  // one event-loop turn before later ingress can observe the released hold.
59
- return records.map(record => this.scheduler.admitDurablePrefix(
60
- () => record.operation(child =>
61
- runZLinkActorExecution(this.actorId, this.sourceSpotId, child)),
62
- record.workOptions,
63
- undefined,
64
- record.preparation
65
- ));
52
+ return records.map((record) =>
53
+ this.scheduler.admitDurablePrefix(
54
+ () =>
55
+ record.operation((child) =>
56
+ runZLinkActorExecution(this.actorId, this.sourceSpotId, child)
57
+ ),
58
+ record.workOptions,
59
+ undefined,
60
+ record.preparation
61
+ )
62
+ );
66
63
  }
67
64
 
68
65
  close(): Promise<void> {