@zlink-systems/framework 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Handlers/JsonContract.js +23 -11
  13. package/dist/contracts/Spots/SpotKind.js +16 -8
  14. package/dist/location-store-integration.js +16 -16
  15. package/dist/nest-integration.js +17 -11
  16. package/dist/runtime/abort.js +9 -5
  17. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  18. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  19. package/dist/runtime/actors/actor-client.js +83 -63
  20. package/dist/runtime/actors/actor-context.js +24 -18
  21. package/dist/runtime/actors/actor-creation.js +4 -3
  22. package/dist/runtime/actors/actor-handoff.js +89 -92
  23. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  24. package/dist/runtime/actors/actor-mailbox.js +1 -1
  25. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  26. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  27. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  28. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  29. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  30. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  31. package/dist/runtime/actors/bound-session-wire.js +14 -9
  32. package/dist/runtime/actors/deferred-join-accepted-journal.js +158 -124
  33. package/dist/runtime/actors/index.js +2 -5
  34. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  35. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  36. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  37. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  38. package/dist/runtime/admission.js +2 -6
  39. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  40. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  41. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  42. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  43. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  44. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  45. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  46. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  47. package/dist/runtime/backend/node/node-raw-mesh-backend.js +116 -113
  48. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  49. package/dist/runtime/backend/runtime-message.js +3 -3
  50. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  51. package/dist/runtime/backend/runtime-values.js +4 -5
  52. package/dist/runtime/channels/channel-clients.js +27 -24
  53. package/dist/runtime/channels/channel-dispatch-pipeline.js +10 -18
  54. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  55. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  56. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  57. package/dist/runtime/channels/channel-envelope.js +83 -47
  58. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  59. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  60. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  61. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  62. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  63. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  64. package/dist/runtime/channels/channel-transports.js +43 -33
  65. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  66. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  67. package/dist/runtime/channels/dispatch-error-reporter.js +9 -7
  68. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  69. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  70. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  71. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  72. package/dist/runtime/channels/source-spot-router.js +6 -2
  73. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  74. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  75. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  76. package/dist/runtime/diagnostics/index.js +38 -10
  77. package/dist/runtime/diagnostics/message-flow.js +47 -39
  78. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  79. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  80. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  81. package/dist/runtime/execution/index.js +7 -6
  82. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  83. package/dist/runtime/execution/state-lane.js +2 -2
  84. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -23
  85. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  86. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  87. package/dist/runtime/foundation/raw-service-mesh-runtime.js +136 -136
  88. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  89. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  90. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  91. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  92. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  93. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  94. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  95. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  96. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  97. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  98. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  99. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  100. package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
  101. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  102. package/dist/runtime/foundation/service-topology-registry.js +96 -95
  103. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  104. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  105. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  106. package/dist/runtime/framework-errors-internal.js +7 -10
  107. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  108. package/dist/runtime/handlers/index.js +3 -1
  109. package/dist/runtime/host/actor-packet-relay.js +74 -70
  110. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  111. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  112. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  113. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  114. package/dist/runtime/host/application-job-queue.js +18 -22
  115. package/dist/runtime/host/bound-session-relay.js +3 -1
  116. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  117. package/dist/runtime/host/host-capacity-status.js +8 -4
  118. package/dist/runtime/host/index.js +244 -227
  119. package/dist/runtime/host/instance-activation-authority.js +93 -96
  120. package/dist/runtime/host/location-runtime-owner.js +16 -14
  121. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  122. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  123. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  124. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  125. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  126. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  127. package/dist/runtime/host/runtime-shutdown.js +1 -2
  128. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  129. package/dist/runtime/host/spot-address-transport.js +69 -71
  130. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  131. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  132. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  133. package/dist/runtime/locations/actor-location-claims.js +26 -20
  134. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  135. package/dist/runtime/locations/authority-key-codec.js +7 -7
  136. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  137. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  138. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  139. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  140. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  141. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  142. package/dist/runtime/locations/key-codec.js +1 -1
  143. package/dist/runtime/locations/lease-tracker.js +23 -21
  144. package/dist/runtime/locations/lifecycle.js +4 -5
  145. package/dist/runtime/locations/location-store-repository.js +368 -324
  146. package/dist/runtime/locations/opaque-record-key.js +2 -2
  147. package/dist/runtime/locations/resolvers.js +73 -82
  148. package/dist/runtime/locations/runtime.js +68 -63
  149. package/dist/runtime/locations/spot-location-claims.js +39 -35
  150. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  151. package/dist/runtime/messaging/packet-name.js +7 -6
  152. package/dist/runtime/messaging/payload-codec.js +21 -18
  153. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  154. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  155. package/dist/runtime/routing-id.js +3 -5
  156. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  157. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  158. package/dist/runtime/spots/index.js +208 -219
  159. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  160. package/dist/runtime/spots/spot-activation-state.js +17 -15
  161. package/dist/runtime/spots/spot-activation.js +33 -16
  162. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  163. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  164. package/dist/runtime/spots/spot-actor-packet-dispatch.js +23 -20
  165. package/dist/runtime/spots/spot-actor-packet-drain.js +12 -10
  166. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  167. package/dist/runtime/spots/spot-closing.js +3 -7
  168. package/dist/runtime/spots/spot-context.js +2 -2
  169. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  170. package/dist/runtime/spots/spot-handle.js +6 -3
  171. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  172. package/dist/runtime/spots/spot-manager-public.js +5 -6
  173. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  174. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  175. package/dist/runtime/spots/spot-node-runtime-manager.js +74 -85
  176. package/dist/runtime/spots/spot-outbound.js +10 -14
  177. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  178. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  179. package/dist/runtime/spots/spot-route-packet-dispatch.js +16 -14
  180. package/dist/runtime/spots/spot-route-replies.js +4 -6
  181. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  182. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +1 -2
  183. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  184. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  185. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  186. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  187. package/dist/runtime/spots/spot-subscription-dispatch.js +5 -5
  188. package/dist/runtime/spots/spot-timer.js +25 -29
  189. package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
  190. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  191. package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
  192. package/dist/runtime/streams/bound-session-service.js +8 -9
  193. package/dist/runtime/streams/index.js +20 -19
  194. package/dist/runtime/streams/managed-stream.js +32 -30
  195. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  196. package/dist/runtime/streams/protocol.js +29 -18
  197. package/dist/runtime/streams/session-actor-coordinator.js +34 -37
  198. package/dist/runtime/streams/session-context.js +30 -28
  199. package/dist/runtime/streams/session-provider.js +2 -2
  200. package/dist/runtime/streams/session-serial-executor.js +1 -2
  201. package/dist/runtime/streams/stream-frame-factory.js +11 -5
  202. package/dist/runtime/streams/stream-session-runtime.js +70 -66
  203. package/dist/runtime/workers/index.js +15 -4
  204. package/package.json +2 -2
  205. package/src/contracts/Channels/RouteCalls.ts +6 -1
  206. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  207. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  208. package/src/contracts/Configuration/Builders.ts +14 -14
  209. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  210. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  211. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  212. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  213. package/src/contracts/Configuration/Registration.ts +46 -17
  214. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  215. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  216. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  217. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  218. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  219. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  220. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  221. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  222. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  223. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  224. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -6
  225. package/src/contracts/Errors/index.ts +1 -4
  226. package/src/contracts/Handlers/Attributes.ts +15 -9
  227. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  228. package/src/contracts/Handlers/JsonContract.ts +53 -19
  229. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  230. package/src/contracts/Locations/Authority.ts +4 -11
  231. package/src/contracts/Locations/Keys.ts +6 -1
  232. package/src/contracts/Locations/Options.ts +3 -2
  233. package/src/contracts/Locations/RelocationStore.ts +1 -4
  234. package/src/contracts/Locations/Resolvers.ts +5 -5
  235. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  236. package/src/contracts/Locations/Stores.ts +1 -2
  237. package/src/contracts/Locations/index.ts +2 -8
  238. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  239. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  240. package/src/contracts/Spots/Contracts.ts +2 -8
  241. package/src/contracts/Spots/SpotKind.ts +16 -8
  242. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  243. package/src/contracts/Streams/IZLinkSession.ts +0 -1
  244. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  245. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  246. package/src/internal.ts +5 -4
  247. package/src/location-store-integration.ts +24 -16
  248. package/src/nest-integration.ts +40 -25
  249. package/src/runtime/abort.ts +10 -4
  250. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  251. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  252. package/src/runtime/actors/actor-client.ts +162 -133
  253. package/src/runtime/actors/actor-context.ts +138 -130
  254. package/src/runtime/actors/actor-creation.ts +47 -44
  255. package/src/runtime/actors/actor-execution-context.ts +6 -4
  256. package/src/runtime/actors/actor-handoff.ts +269 -293
  257. package/src/runtime/actors/actor-join-deferred-scope.ts +5 -4
  258. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  259. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  260. package/src/runtime/actors/actor-mailbox.ts +16 -19
  261. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  262. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  263. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  264. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  265. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  266. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  267. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  268. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  269. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  270. package/src/runtime/actors/bound-session-wire.ts +37 -17
  271. package/src/runtime/actors/deferred-join-accepted-journal.ts +351 -320
  272. package/src/runtime/actors/index.ts +43 -86
  273. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  274. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  275. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  276. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  277. package/src/runtime/admission.ts +9 -9
  278. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  279. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  280. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  281. package/src/runtime/backend/contracts/index.ts +73 -52
  282. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  283. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  284. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  285. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  286. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  287. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  288. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  289. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  290. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  291. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  292. package/src/runtime/backend/node/node-raw-mesh-backend.ts +335 -383
  293. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  294. package/src/runtime/backend/runtime-message.ts +5 -3
  295. package/src/runtime/backend/runtime-values.ts +10 -7
  296. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  297. package/src/runtime/channels/channel-clients.ts +93 -73
  298. package/src/runtime/channels/channel-dispatch-pipeline.ts +40 -42
  299. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  300. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  301. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  302. package/src/runtime/channels/channel-envelope.ts +256 -150
  303. package/src/runtime/channels/channel-multipart.ts +13 -5
  304. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  305. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  306. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  307. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  308. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  309. package/src/runtime/channels/channel-socket-options.ts +3 -10
  310. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  311. package/src/runtime/channels/channel-transports.ts +215 -197
  312. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  313. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  314. package/src/runtime/channels/dispatch-error-reporter.ts +11 -8
  315. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  316. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  317. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  318. package/src/runtime/channels/index.ts +1 -4
  319. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  320. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  321. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  322. package/src/runtime/channels/source-spot-router.ts +26 -22
  323. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  324. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  325. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  326. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  327. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  328. package/src/runtime/codecs/index.ts +3 -2
  329. package/src/runtime/diagnostics/flow-context.ts +12 -3
  330. package/src/runtime/diagnostics/index.ts +96 -61
  331. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  332. package/src/runtime/diagnostics/message-flow.ts +95 -76
  333. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  334. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  335. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  336. package/src/runtime/execution/index.ts +18 -26
  337. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  338. package/src/runtime/execution/state-lane.ts +2 -2
  339. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -51
  340. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  341. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  342. package/src/runtime/foundation/operation-identity.ts +1 -2
  343. package/src/runtime/foundation/operation-registry.ts +8 -2
  344. package/src/runtime/foundation/raw-service-mesh-runtime.ts +312 -385
  345. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  346. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  347. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  348. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  349. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  350. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  351. package/src/runtime/foundation/service-mailbox.ts +14 -14
  352. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  353. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  354. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  355. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  356. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  357. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  358. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  359. package/src/runtime/foundation/service-session-binding-ingress-port.ts +1 -4
  360. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  361. package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
  362. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  363. package/src/runtime/foundation/service-topology-registry.ts +157 -159
  364. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  365. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  366. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  367. package/src/runtime/framework-errors-internal.ts +31 -30
  368. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  369. package/src/runtime/handlers/index.ts +18 -8
  370. package/src/runtime/host/actor-packet-relay.ts +290 -261
  371. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  372. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  373. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  374. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  375. package/src/runtime/host/application-job-queue.ts +32 -48
  376. package/src/runtime/host/bound-session-relay.ts +7 -9
  377. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  378. package/src/runtime/host/host-capacity-status.ts +10 -9
  379. package/src/runtime/host/index.ts +861 -789
  380. package/src/runtime/host/instance-activation-authority.ts +125 -143
  381. package/src/runtime/host/location-runtime-owner.ts +38 -26
  382. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  383. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  384. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  385. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  386. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  387. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  388. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  389. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  390. package/src/runtime/host/runtime-shutdown.ts +4 -3
  391. package/src/runtime/host/service-relocation-control.ts +14 -5
  392. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  393. package/src/runtime/host/spot-address-transport.ts +284 -237
  394. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  395. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  396. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  397. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  398. package/src/runtime/locations/actor-location-claims.ts +61 -49
  399. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  400. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  401. package/src/runtime/locations/authority-key-codec.ts +13 -10
  402. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  403. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  404. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  405. package/src/runtime/locations/canonical-codec.ts +3 -1
  406. package/src/runtime/locations/creation-operation-id.ts +4 -3
  407. package/src/runtime/locations/domain-store-contract.ts +13 -7
  408. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  409. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  410. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  411. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  412. package/src/runtime/locations/key-codec.ts +3 -4
  413. package/src/runtime/locations/lease-tracker.ts +36 -27
  414. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  415. package/src/runtime/locations/lifecycle.ts +33 -28
  416. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  417. package/src/runtime/locations/opaque-record-key.ts +4 -9
  418. package/src/runtime/locations/resolvers.ts +201 -178
  419. package/src/runtime/locations/runtime.ts +251 -159
  420. package/src/runtime/locations/spot-location-claims.ts +110 -112
  421. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  422. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  423. package/src/runtime/messaging/packet-name.ts +8 -6
  424. package/src/runtime/messaging/payload-codec.ts +70 -50
  425. package/src/runtime/messaging/submission-result.ts +6 -9
  426. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  427. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  428. package/src/runtime/routing-id.ts +10 -7
  429. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  430. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  431. package/src/runtime/spots/index.ts +593 -563
  432. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  433. package/src/runtime/spots/spot-activation-state.ts +43 -51
  434. package/src/runtime/spots/spot-activation.ts +179 -116
  435. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  436. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  437. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  438. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  439. package/src/runtime/spots/spot-actor-packet-dispatch.ts +184 -153
  440. package/src/runtime/spots/spot-actor-packet-drain.ts +54 -42
  441. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  442. package/src/runtime/spots/spot-closing.ts +11 -12
  443. package/src/runtime/spots/spot-context.ts +46 -26
  444. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  445. package/src/runtime/spots/spot-handle.ts +17 -15
  446. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  447. package/src/runtime/spots/spot-location-claim.ts +5 -4
  448. package/src/runtime/spots/spot-manager-public.ts +62 -82
  449. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  450. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  451. package/src/runtime/spots/spot-node-runtime-manager.ts +230 -221
  452. package/src/runtime/spots/spot-outbound.ts +47 -59
  453. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  454. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  455. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  456. package/src/runtime/spots/spot-route-packet-dispatch.ts +128 -95
  457. package/src/runtime/spots/spot-route-replies.ts +23 -24
  458. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  459. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  460. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +11 -17
  461. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  462. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  463. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  464. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  465. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  466. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  467. package/src/runtime/spots/spot-subscription-dispatch.ts +56 -46
  468. package/src/runtime/spots/spot-timer.ts +98 -91
  469. package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
  470. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
  471. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  472. package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
  473. package/src/runtime/streams/bound-session-response-target.ts +29 -8
  474. package/src/runtime/streams/bound-session-service.ts +39 -39
  475. package/src/runtime/streams/index.ts +176 -100
  476. package/src/runtime/streams/managed-stream.ts +98 -87
  477. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  478. package/src/runtime/streams/protocol.ts +73 -43
  479. package/src/runtime/streams/session-actor-coordinator.ts +97 -89
  480. package/src/runtime/streams/session-calls.ts +2 -8
  481. package/src/runtime/streams/session-context.ts +66 -48
  482. package/src/runtime/streams/session-provider.ts +5 -7
  483. package/src/runtime/streams/session-serial-executor.ts +7 -6
  484. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  485. package/src/runtime/streams/stream-frame-factory.ts +55 -38
  486. package/src/runtime/streams/stream-session-runtime.ts +268 -210
  487. package/src/runtime/workers/index.ts +68 -29
@@ -1,4 +1,7 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
1
+ import {
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from '../framework-errors-internal';
2
5
  import { AsyncLocalStorage } from 'node:async_hooks';
3
6
  import { ZLinkConfigurationException } from '../configuration';
4
7
 
@@ -110,9 +113,7 @@ export function deferActorJoin(intent: DeferredActorJoin): void {
110
113
  scope.register(intent);
111
114
  }
112
115
 
113
- export function runActorHandlerWithDeferredJoins<T>(
114
- handler: () => Promise<T> | T
115
- ): Promise<T>;
116
+ export function runActorHandlerWithDeferredJoins<T>(handler: () => Promise<T> | T): Promise<T>;
116
117
  export function runActorHandlerWithDeferredJoins<T, TResult>(
117
118
  handler: () => Promise<T> | T,
118
119
  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> {