@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
@@ -86,8 +86,11 @@ export function decodeActorMessageFollowContext(
86
86
  const hopCount = input.hopCount;
87
87
  const checksum = input.payloadChecksumSha256;
88
88
  if (typeof request !== 'boolean') throw invalidContext('request must be boolean');
89
- if (!Number.isSafeInteger(hopCount) || (hopCount as number) < 0
90
- || (hopCount as number) > ZLINK_MESSAGE_FOLLOW_MAX_HOPS) {
89
+ if (
90
+ !Number.isSafeInteger(hopCount) ||
91
+ (hopCount as number) < 0 ||
92
+ (hopCount as number) > ZLINK_MESSAGE_FOLLOW_MAX_HOPS
93
+ ) {
91
94
  throw invalidContext('hopCount is outside 0..8');
92
95
  }
93
96
  if (typeof checksum !== 'string' || !/^[0-9a-f]{64}$/.test(checksum)) {
@@ -102,16 +105,20 @@ export function decodeActorMessageFollowContext(
102
105
  if (!request && replyRouteId !== undefined) {
103
106
  throw invalidContext('one-way context must not contain replyRouteId');
104
107
  }
105
- if (!Array.isArray(input.visitedOwners)
106
- || input.visitedOwners.some(item => typeof item !== 'string' || item.length === 0)
107
- || input.visitedOwners.length !== (hopCount as number) + 1) {
108
+ if (
109
+ !Array.isArray(input.visitedOwners) ||
110
+ input.visitedOwners.some((item) => typeof item !== 'string' || item.length === 0) ||
111
+ input.visitedOwners.length !== (hopCount as number) + 1
112
+ ) {
108
113
  throw invalidContext('visitedOwners does not match hopCount');
109
114
  }
110
115
  const visitedOwners = [...input.visitedOwners] as string[];
111
116
  const targetOwnerKeys = messageFollowOwnerFenceCompatibleKeys(targetOwner);
112
- if (new Set(visitedOwners).size !== visitedOwners.length
113
- || !targetOwnerKeys.includes(visitedOwners[visitedOwners.length - 1])
114
- || visitedOwners.slice(0, -1).some(key => targetOwnerKeys.includes(key))) {
117
+ if (
118
+ new Set(visitedOwners).size !== visitedOwners.length ||
119
+ !targetOwnerKeys.includes(visitedOwners[visitedOwners.length - 1]) ||
120
+ visitedOwners.slice(0, -1).some((key) => targetOwnerKeys.includes(key))
121
+ ) {
115
122
  throw invalidContext('visited owner fence chain is invalid');
116
123
  }
117
124
  return freezeContext({
@@ -141,8 +148,11 @@ export function advanceActorMessageFollowContext(
141
148
  throw invalidContext('Message Follow reached the 8-hop limit');
142
149
  }
143
150
  const targetKey = messageFollowOwnerFenceKey(targetOwner);
144
- if (messageFollowOwnerFenceCompatibleKeys(targetOwner)
145
- .some(key => context.visitedOwners.includes(key))) {
151
+ if (
152
+ messageFollowOwnerFenceCompatibleKeys(targetOwner).some((key) =>
153
+ context.visitedOwners.includes(key)
154
+ )
155
+ ) {
146
156
  throw invalidContext('Message Follow owner loop was detected');
147
157
  }
148
158
  return freezeContext({
@@ -167,8 +177,7 @@ export function attachActorMessageFollowContext(
167
177
  export function actorMessageFollowContext(
168
178
  actorRef: ActorRef | undefined
169
179
  ): ZLinkActorMessageFollowContext | undefined {
170
- return (actorRef as ActorRefWithMessageFollow | undefined)
171
- ?.__zlinkMessageFollowContext;
180
+ return (actorRef as ActorRefWithMessageFollow | undefined)?.__zlinkMessageFollowContext;
172
181
  }
173
182
 
174
183
  export function actorMessageFollowPayloadChecksum(parts: readonly Message[]): string {
@@ -192,9 +201,7 @@ export function verifyActorMessageFollowPayload(
192
201
  }
193
202
  }
194
203
 
195
- export function messageFollowOwnerFenceKey(
196
- fence: ZLinkActorMessageFollowOwnerFence
197
- ): string {
204
+ export function messageFollowOwnerFenceKey(fence: ZLinkActorMessageFollowOwnerFence): string {
198
205
  return JSON.stringify([
199
206
  'zlink-actor-message-follow-owner-fence',
200
207
  2,
@@ -245,10 +252,7 @@ export function ownerFence(input: {
245
252
  return Object.freeze(value);
246
253
  }
247
254
 
248
- function decodeOwnerFence(
249
- value: unknown,
250
- name: string
251
- ): ZLinkActorMessageFollowOwnerFence {
255
+ function decodeOwnerFence(value: unknown, name: string): ZLinkActorMessageFollowOwnerFence {
252
256
  if (typeof value !== 'object' || value === null) {
253
257
  throw invalidContext(`${name} must be an object`);
254
258
  }
@@ -269,9 +273,7 @@ function decodeOwnerFence(
269
273
  });
270
274
  }
271
275
 
272
- function freezeContext(
273
- context: ZLinkActorMessageFollowContext
274
- ): ZLinkActorMessageFollowContext {
276
+ function freezeContext(context: ZLinkActorMessageFollowContext): ZLinkActorMessageFollowContext {
275
277
  return Object.freeze({
276
278
  ...context,
277
279
  sourceOwner: Object.freeze({ ...context.sourceOwner }),
@@ -281,8 +283,7 @@ function freezeContext(
281
283
  }
282
284
 
283
285
  function requireId(value: unknown, name: string): string {
284
- if (typeof value !== 'string' || !/^[0-9a-f]{32}$/.test(value)
285
- || /^0+$/.test(value)) {
286
+ if (typeof value !== 'string' || !/^[0-9a-f]{32}$/.test(value) || /^0+$/.test(value)) {
286
287
  throw invalidContext(`${name} must be a nonzero 128-bit lowercase hex value`);
287
288
  }
288
289
  return value;
@@ -308,8 +309,12 @@ function requirePositiveBigInt(value: unknown, name: string): string {
308
309
 
309
310
  function optionalNodeRidHex(value: unknown, name: string): string | undefined {
310
311
  if (value === undefined) return undefined;
311
- if (typeof value !== 'string' || value.length === 0 || value.length % 2 !== 0
312
- || !/^[0-9a-f]+$/.test(value)) {
312
+ if (
313
+ typeof value !== 'string' ||
314
+ value.length === 0 ||
315
+ value.length % 2 !== 0 ||
316
+ !/^[0-9a-f]+$/.test(value)
317
+ ) {
313
318
  throw invalidContext(`${name} must be non-empty lowercase hexadecimal bytes`);
314
319
  }
315
320
  return value;
@@ -320,18 +325,23 @@ function messageFollowOwnerFenceCompatibleKeys(
320
325
  ): readonly string[] {
321
326
  const canonical = messageFollowOwnerFenceKey(fence);
322
327
  const textHex = encodeRoutingIdStorageHex(fence.nodeRid);
323
- if (fence.nodeRid.includes('\u0000')
324
- || fence.ownerId.includes('\u0000')
325
- || (fence.nodeRidHex !== undefined && fence.nodeRidHex !== textHex)) {
328
+ if (
329
+ fence.nodeRid.includes('\u0000') ||
330
+ fence.ownerId.includes('\u0000') ||
331
+ (fence.nodeRidHex !== undefined && fence.nodeRidHex !== textHex)
332
+ ) {
326
333
  return [canonical];
327
334
  }
328
- return [canonical, [
329
- fence.nodeRid,
330
- fence.nodeGeneration,
331
- fence.ownerId,
332
- fence.ownerLeaseGeneration,
333
- fence.authorityOwnerGeneration
334
- ].join('\u0000')];
335
+ return [
336
+ canonical,
337
+ [
338
+ fence.nodeRid,
339
+ fence.nodeGeneration,
340
+ fence.ownerId,
341
+ fence.ownerLeaseGeneration,
342
+ fence.authorityOwnerGeneration
343
+ ].join('\u0000')
344
+ ];
335
345
  }
336
346
 
337
347
  function optionalPositiveSafeInteger(value: unknown, name: string): number | undefined {
@@ -8,19 +8,22 @@ import {
8
8
  } from './actor-message-follow-context';
9
9
 
10
10
  export const ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET = '__zlink.actor.packet.relay';
11
- export const ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET = 'zlink.framework.actor.session_disconnected';
11
+ export const ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET =
12
+ 'zlink.framework.actor.session_disconnected';
12
13
  export const ZLINK_REMOTE_ACTOR_SESSION_BIND_PACKET = 'framework.internal.actor-session-bind';
13
14
 
14
15
  export function encodeRemoteActorSessionBinding(input: {
15
16
  readonly sessionNodeRid: RoutingId;
16
17
  readonly sessionRid: RoutingId;
17
18
  }): Uint8Array {
18
- return Buffer.from(JSON.stringify({
19
- sessionNodeRid: String(input.sessionNodeRid),
20
- sessionNodeRidHex: routingIdWireHex(input.sessionNodeRid),
21
- sessionRid: String(input.sessionRid),
22
- sessionRidHex: routingIdWireHex(input.sessionRid)
23
- }));
19
+ return Buffer.from(
20
+ JSON.stringify({
21
+ sessionNodeRid: String(input.sessionNodeRid),
22
+ sessionNodeRidHex: routingIdWireHex(input.sessionNodeRid),
23
+ sessionRid: String(input.sessionRid),
24
+ sessionRidHex: routingIdWireHex(input.sessionRid)
25
+ })
26
+ );
24
27
  }
25
28
 
26
29
  export function decodeRemoteActorSessionBinding(payload: Uint8Array): {
@@ -57,18 +60,23 @@ export function encodeRemoteActorPacketRelayPayload(input: {
57
60
  boundSessionTargetNodeRid: input.boundSessionTargetNodeRid,
58
61
  boundSessionSpotId: input.boundSessionSpotId,
59
62
  actorNodeRid: input.actorRef === undefined ? undefined : String(input.actorRef.nodeRid),
60
- actorNodeRidHex: input.actorRef === undefined
61
- ? undefined
62
- : routingIdWireHex(input.actorRef.nodeRid),
63
+ actorNodeRidHex:
64
+ input.actorRef === undefined ? undefined : routingIdWireHex(input.actorRef.nodeRid),
63
65
  actorGeneration: input.actorRef?.objectGeneration.toString(),
64
- bindingActorNodeRid: input.bindingActorRef === undefined ? undefined : String(input.bindingActorRef.nodeRid),
65
- bindingActorNodeRidHex: input.bindingActorRef === undefined
66
- ? undefined
67
- : routingIdWireHex(input.bindingActorRef.nodeRid),
66
+ bindingActorNodeRid:
67
+ input.bindingActorRef === undefined ? undefined : String(input.bindingActorRef.nodeRid),
68
+ bindingActorNodeRidHex:
69
+ input.bindingActorRef === undefined
70
+ ? undefined
71
+ : routingIdWireHex(input.bindingActorRef.nodeRid),
68
72
  bindingActorGeneration: input.bindingActorRef?.objectGeneration.toString(),
69
- bindingGeneration: (input.bindingActorRef as (ActorRef & {
70
- readonly bindingGeneration?: bigint;
71
- }) | undefined)?.bindingGeneration?.toString(),
73
+ bindingGeneration: (
74
+ input.bindingActorRef as
75
+ | (ActorRef & {
76
+ readonly bindingGeneration?: bigint;
77
+ })
78
+ | undefined
79
+ )?.bindingGeneration?.toString(),
72
80
  returnResponse: input.returnResponse,
73
81
  messageFollowContext: input.messageFollowContext,
74
82
  header: Buffer.from(input.header).toString('base64'),
@@ -127,7 +135,9 @@ export function encodeRemoteActorPacketTarget(
127
135
  };
128
136
  }
129
137
 
130
- export function decodeRemoteActorPacketTarget(value: unknown): ZLinkRemoteActorPacketTarget | undefined {
138
+ export function decodeRemoteActorPacketTarget(
139
+ value: unknown
140
+ ): ZLinkRemoteActorPacketTarget | undefined {
131
141
  if (
132
142
  typeof value !== 'object' ||
133
143
  value === null ||
@@ -144,9 +154,10 @@ export function decodeRemoteActorPacketTarget(value: unknown): ZLinkRemoteActorP
144
154
  (value as { targetNodeRidHex?: unknown }).targetNodeRidHex
145
155
  ),
146
156
  spotId: requireSpotId((value as { spotId: string }).spotId),
147
- spotKind: (value as { spotKind?: unknown }).spotKind === ZLinkSpotKind.Entry
148
- ? ZLinkSpotKind.Entry
149
- : ZLinkSpotKind.User,
157
+ spotKind:
158
+ (value as { spotKind?: unknown }).spotKind === ZLinkSpotKind.Entry
159
+ ? ZLinkSpotKind.Entry
160
+ : ZLinkSpotKind.User,
150
161
  targetSpotGeneration: optionalBigInt(value, 'targetSpotGeneration'),
151
162
  targetNodeGeneration: optionalBigInt(value, 'targetNodeGeneration'),
152
163
  authorityOwnerGeneration: optionalBigInt(value, 'authorityOwnerGeneration'),
@@ -1,17 +1,13 @@
1
- import type {
2
- ActorRef,
3
- RoutingId,
4
- ZLinkActor,
5
- ZLinkMessageSerializer
6
- } from '../../contracts';
1
+ import type { ActorRef, RoutingId, ZLinkActor, ZLinkMessageSerializer } from '../../contracts';
7
2
  import type { Message } from '../../contracts/Common/Message';
8
3
  import type { ZLinkBackendMeshNode, ZLinkMeshCompletionTable } from '../backend';
9
4
  import type { ZLinkLocationLifecycle } from '../locations';
10
5
  import { throwIfAborted } from '../abort';
6
+ import type { ZLinkSpotRouteResolver } from '../spots/spot-routing-internal';
11
7
  import type {
12
- ZLinkSpotRouteResolver
13
- } from '../spots/spot-routing-internal';
14
- import type { ZLinkActorJoinCoordinator, ZLinkActorJoinRuntimeResult } from './actor-runtime-contracts';
8
+ ZLinkActorJoinCoordinator,
9
+ ZLinkActorJoinRuntimeResult
10
+ } from './actor-runtime-contracts';
15
11
  import type { ZLinkActorSourceTransfer } from './actor-source-transfer';
16
12
  import { ZLinkActorRuntimeState, toFrameworkRoutingId } from './actor-runtime-state';
17
13
  import { lookupNativeActorRef } from './actor-native-lookup';
@@ -28,7 +24,11 @@ export interface ZLinkActorNativeJoinCoordinatorOptions {
28
24
  readonly completionTableProvider: () => ZLinkMeshCompletionTable | undefined;
29
25
  readonly spotRouteResolver?: ZLinkSpotRouteResolver;
30
26
  readonly locationLifecycle?: ZLinkLocationLifecycle;
31
- readonly remoteActorBinder?: (actorRef: ActorRef, signal?: AbortSignal, force?: boolean) => Promise<void>;
27
+ readonly remoteActorBinder?: (
28
+ actorRef: ActorRef,
29
+ signal?: AbortSignal,
30
+ force?: boolean
31
+ ) => Promise<void>;
32
32
  readonly postCommitErrorReporter?: (error: unknown) => void;
33
33
  readonly sourceTransfer?: ZLinkActorSourceTransfer;
34
34
  readonly actorJoinRelocation?: ZLinkActorJoinRelocation;
@@ -47,22 +47,24 @@ export class ZLinkActorNativeJoinCoordinator implements ZLinkActorJoinCoordinato
47
47
  }
48
48
 
49
49
  constructor(private readonly options: ZLinkActorNativeJoinCoordinatorOptions) {
50
- const postCommitLocation = options.locationLifecycle === undefined
51
- ? undefined
52
- : new ZLinkPostCommitActorLocation({
53
- lifecycle: options.locationLifecycle,
54
- reportError: options.postCommitErrorReporter,
55
- signal: options.shutdownSignal
56
- });
57
- this.localJoin = new ZLinkLocalNativeActorJoin({
58
- postCommitLocation,
59
- postCommitBinder: options.remoteActorBinder === undefined
50
+ const postCommitLocation =
51
+ options.locationLifecycle === undefined
60
52
  ? undefined
61
- : new ZLinkPostCommitActorBinder({
62
- bind: (actorRef, force) => options.remoteActorBinder!(actorRef, undefined, force),
53
+ : new ZLinkPostCommitActorLocation({
54
+ lifecycle: options.locationLifecycle,
63
55
  reportError: options.postCommitErrorReporter,
64
56
  signal: options.shutdownSignal
65
- }),
57
+ });
58
+ this.localJoin = new ZLinkLocalNativeActorJoin({
59
+ postCommitLocation,
60
+ postCommitBinder:
61
+ options.remoteActorBinder === undefined
62
+ ? undefined
63
+ : new ZLinkPostCommitActorBinder({
64
+ bind: (actorRef, force) => options.remoteActorBinder!(actorRef, undefined, force),
65
+ reportError: options.postCommitErrorReporter,
66
+ signal: options.shutdownSignal
67
+ }),
66
68
  completionTableProvider: options.completionTableProvider,
67
69
  actorJoinRelocation: options.actorJoinRelocation,
68
70
  messageSerializers: options.messageSerializers
@@ -104,7 +106,10 @@ export class ZLinkActorNativeJoinCoordinator implements ZLinkActorJoinCoordinato
104
106
  ): Promise<ZLinkActorJoinRuntimeResult<Message>> {
105
107
  throwIfAborted(signal);
106
108
  const node = this.node();
107
- const actorRef = state.nativeActorRef ?? lookupNativeActorRef(node, actor.context.actorId) ?? node.createActor(actor.context.actorId);
109
+ const actorRef =
110
+ state.nativeActorRef ??
111
+ lookupNativeActorRef(node, actor.context.actorId) ??
112
+ node.createActor(actor.context.actorId);
108
113
  state.setNativeActorRef(actorRef as never);
109
114
  let target: Awaited<ReturnType<ZLinkSpotRouteResolver['resolve']>> | undefined;
110
115
  target = await this.options.spotRouteResolver?.resolve(spotId, signal);
@@ -121,13 +126,7 @@ export class ZLinkActorNativeJoinCoordinator implements ZLinkActorJoinCoordinato
121
126
  signal,
122
127
  completionOperationId
123
128
  );
124
- return this.withDeferredJoinFinalizer(
125
- actor,
126
- state,
127
- target,
128
- result,
129
- completionOperationId
130
- );
129
+ return this.withDeferredJoinFinalizer(actor, state, target, result, completionOperationId);
131
130
  }
132
131
 
133
132
  async joinEntrySpot(
@@ -141,21 +140,26 @@ export class ZLinkActorNativeJoinCoordinator implements ZLinkActorJoinCoordinato
141
140
  ): Promise<ZLinkActorJoinRuntimeResult<Message>> {
142
141
  throwIfAborted(signal);
143
142
  const node = this.node();
144
- const actorRef = state.nativeActorRef ?? lookupNativeActorRef(node, actor.context.actorId) ?? node.createActor(actor.context.actorId);
143
+ const actorRef =
144
+ state.nativeActorRef ??
145
+ lookupNativeActorRef(node, actor.context.actorId) ??
146
+ node.createActor(actor.context.actorId);
145
147
  state.setNativeActorRef(actorRef as never);
146
148
  const meshName = state.meshName ?? actor.context.meshName;
147
149
  const entrySpotId = this.options.entrySpotIdProvider?.(meshName);
148
150
  let resolvedTarget: Awaited<ReturnType<ZLinkSpotRouteResolver['resolve']>> | undefined;
149
- resolvedTarget = entrySpotId === undefined
150
- ? undefined
151
- : await this.options.spotRouteResolver?.resolve(entrySpotId, signal);
151
+ resolvedTarget =
152
+ entrySpotId === undefined
153
+ ? undefined
154
+ : await this.options.spotRouteResolver?.resolve(entrySpotId, signal);
152
155
  // The caller may carry the Entry node from the previous membership.
153
156
  // Entry placement can change while the Actor is in a User Spot, so the
154
157
  // current authority route is the source of truth whenever it is available.
155
- const selectedNodeRid = resolvedTarget?.targetNodeRid
156
- ?? nodeRid
157
- ?? state.entryNodeRid
158
- ?? toFrameworkRoutingId(node.status().routingId);
158
+ const selectedNodeRid =
159
+ resolvedTarget?.targetNodeRid ??
160
+ nodeRid ??
161
+ state.entryNodeRid ??
162
+ toFrameworkRoutingId(node.status().routingId);
159
163
  const target = resolvedTarget;
160
164
  const result = await this.localJoin.joinEntrySpot(
161
165
  node,
@@ -169,13 +173,7 @@ export class ZLinkActorNativeJoinCoordinator implements ZLinkActorJoinCoordinato
169
173
  signal,
170
174
  completionOperationId
171
175
  );
172
- return this.withDeferredJoinFinalizer(
173
- actor,
174
- state,
175
- target,
176
- result,
177
- completionOperationId
178
- );
176
+ return this.withDeferredJoinFinalizer(actor, state, target, result, completionOperationId);
179
177
  }
180
178
 
181
179
  private withDeferredJoinFinalizer(
@@ -205,9 +203,7 @@ export class ZLinkActorNativeJoinCoordinator implements ZLinkActorJoinCoordinato
205
203
  }
206
204
 
207
205
  private node(): ZLinkBackendMeshNode {
208
- return typeof this.options.node === 'function'
209
- ? this.options.node()
210
- : this.options.node;
206
+ return typeof this.options.node === 'function' ? this.options.node() : this.options.node;
211
207
  }
212
208
  }
213
209
 
@@ -216,11 +212,11 @@ function installResolvedSpotRoute(
216
212
  target: Awaited<ReturnType<ZLinkSpotRouteResolver['resolve']>> | undefined
217
213
  ): void {
218
214
  if (
219
- target?.targetSpotGeneration === undefined
220
- || target.targetNodeGeneration === undefined
221
- || target.authorityOwnerGeneration === undefined
222
- || target.ownerLeaseGeneration === undefined
223
- || target.authorityStoreVersion === undefined
215
+ target?.targetSpotGeneration === undefined ||
216
+ target.targetNodeGeneration === undefined ||
217
+ target.authorityOwnerGeneration === undefined ||
218
+ target.ownerLeaseGeneration === undefined ||
219
+ target.authorityStoreVersion === undefined
224
220
  ) {
225
221
  return;
226
222
  }
@@ -2,8 +2,7 @@ import type { RoutingId, SpotId } from '../../contracts';
2
2
  import { decodeRoutingId } from '../routing-id';
3
3
 
4
4
  export const ZLINK_REMOTE_ACTOR_JOIN_PACKET = '__zlink.actor.join_spot.request';
5
- export const ZLINK_REMOTE_ACTOR_SOURCE_LEAVE_TERMINAL =
6
- '__zlink.actor.source_leave.terminal';
5
+ export const ZLINK_REMOTE_ACTOR_SOURCE_LEAVE_TERMINAL = '__zlink.actor.source_leave.terminal';
7
6
  export const REMOTE_ACTOR_JOIN_PACKET = ZLINK_REMOTE_ACTOR_JOIN_PACKET;
8
7
  export const REMOTE_ACTOR_JOIN_ADMISSION = 'admission';
9
8
  export const REMOTE_ACTOR_JOIN_COMMIT = 'commit';
@@ -30,13 +29,12 @@ export function decodeRemoteActorSourceLeaveTerminal(
30
29
  return undefined;
31
30
  }
32
31
  if (
33
- typeof decoded !== 'object'
34
- || decoded === null
35
- || (decoded as { packetName?: unknown }).packetName
36
- !== ZLINK_REMOTE_ACTOR_SOURCE_LEAVE_TERMINAL
37
- || typeof (decoded as { transferId?: unknown }).transferId !== 'string'
38
- || typeof (decoded as { actorId?: unknown }).actorId !== 'string'
39
- || typeof (decoded as { succeeded?: unknown }).succeeded !== 'boolean'
32
+ typeof decoded !== 'object' ||
33
+ decoded === null ||
34
+ (decoded as { packetName?: unknown }).packetName !== ZLINK_REMOTE_ACTOR_SOURCE_LEAVE_TERMINAL ||
35
+ typeof (decoded as { transferId?: unknown }).transferId !== 'string' ||
36
+ typeof (decoded as { actorId?: unknown }).actorId !== 'string' ||
37
+ typeof (decoded as { succeeded?: unknown }).succeeded !== 'boolean'
40
38
  ) {
41
39
  return undefined;
42
40
  }
@@ -123,10 +121,8 @@ export function decodeRemoteActorJoinPayload(payload: unknown): {
123
121
  ),
124
122
  actorGeneration: (payload as { actorGeneration: string }).actorGeneration,
125
123
  actorNodeGeneration: optionalString(payload, 'actorNodeGeneration'),
126
- expectedAuthorityOwnerGeneration:
127
- optionalString(payload, 'expectedAuthorityOwnerGeneration'),
128
- expectedOwnerLeaseGeneration:
129
- optionalString(payload, 'expectedOwnerLeaseGeneration'),
124
+ expectedAuthorityOwnerGeneration: optionalString(payload, 'expectedAuthorityOwnerGeneration'),
125
+ expectedOwnerLeaseGeneration: optionalString(payload, 'expectedOwnerLeaseGeneration'),
130
126
  sourceSpotId: optionalSpotId(payload, 'sourceSpotId'),
131
127
  routerChannelId: optionalString(payload, 'routerChannelId'),
132
128
  boundSessionRouterChannelId: optionalString(payload, 'boundSessionRouterChannelId'),
@@ -41,13 +41,21 @@ export interface ZLinkActorRoutedJoinTransport {
41
41
  requestToSpot<TReply = unknown>(
42
42
  spotRouteTarget: ZLinkSpotRouteTarget,
43
43
  request: unknown,
44
- options: { readonly packetName?: string; readonly timeoutMs?: number; readonly signal?: AbortSignal }
44
+ options: {
45
+ readonly packetName?: string;
46
+ readonly timeoutMs?: number;
47
+ readonly signal?: AbortSignal;
48
+ }
45
49
  ): Promise<TReply>;
46
50
  requestFromSpotToSpot?<TReply = unknown>(
47
51
  sourceSpot: ZLinkBackendSpot,
48
52
  spotRouteTarget: ZLinkSpotRouteTarget,
49
53
  request: unknown,
50
- options: { readonly packetName?: string; readonly timeoutMs?: number; readonly signal?: AbortSignal }
54
+ options: {
55
+ readonly packetName?: string;
56
+ readonly timeoutMs?: number;
57
+ readonly signal?: AbortSignal;
58
+ }
51
59
  ): Promise<TReply>;
52
60
  requestRawFromSpotToSpot?(
53
61
  sourceSpot: ZLinkBackendSpot,
@@ -8,7 +8,7 @@ import type {
8
8
  ZLinkBoundSession,
9
9
  ZLinkMessage,
10
10
  ZLinkActorCreateResponse,
11
- ZLinkMessageSerializer,
11
+ ZLinkMessageSerializer
12
12
  } from '../../contracts';
13
13
  import type { Message } from '../../contracts/Common/Message';
14
14
  import type { ZLinkBackendMeshNode, ZLinkMeshCompletionTable } from '../backend';
@@ -75,10 +75,7 @@ export interface ZLinkActorManagerOptions {
75
75
  }
76
76
 
77
77
  export interface ZLinkActorRuntimeLocationLookup {
78
- resolveActorRef(
79
- actorId: string,
80
- signal?: AbortSignal
81
- ): Promise<ActorRef | undefined>;
78
+ resolveActorRef(actorId: string, signal?: AbortSignal): Promise<ActorRef | undefined>;
82
79
  }
83
80
 
84
81
  export type ZLinkActorBoundSessionFactory = (actorId: string) => ZLinkBoundSession;