@zlink-systems/framework 0.25.0 → 0.27.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 (557) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
  3. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  4. package/dist/contracts/Common/CoreTypes.js +7 -0
  5. package/dist/contracts/Common/index.d.ts +1 -1
  6. package/dist/contracts/Common/index.js +0 -1
  7. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  8. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  9. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  10. package/dist/contracts/Configuration/Registration.js +58 -36
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  14. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  15. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  16. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  17. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  18. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  19. package/dist/contracts/Handlers/JsonContract.js +10 -4
  20. package/dist/contracts/Locations/Authority.d.ts +1 -1
  21. package/dist/contracts/Locations/Authority.js +3 -2
  22. package/dist/contracts/Locations/Options.js +1 -1
  23. package/dist/contracts/Locations/Stores.d.ts +12 -0
  24. package/dist/contracts/Locations/Stores.js +9 -0
  25. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
  26. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  27. package/dist/internal.d.ts +5 -0
  28. package/dist/internal.js +16 -1
  29. package/dist/nest-integration.d.ts +4 -2
  30. package/dist/nest-integration.js +14 -4
  31. package/dist/runtime/abort.d.ts +1 -0
  32. package/dist/runtime/abort.js +8 -5
  33. package/dist/runtime/activation-admission.d.ts +28 -0
  34. package/dist/runtime/activation-admission.js +57 -0
  35. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  36. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  37. package/dist/runtime/actors/actor-client.d.ts +2 -2
  38. package/dist/runtime/actors/actor-client.js +42 -143
  39. package/dist/runtime/actors/actor-context.d.ts +3 -5
  40. package/dist/runtime/actors/actor-context.js +19 -17
  41. package/dist/runtime/actors/actor-handoff.d.ts +13 -7
  42. package/dist/runtime/actors/actor-handoff.js +36 -25
  43. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  44. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  45. package/dist/runtime/actors/actor-local-native-join.js +85 -123
  46. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  47. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  48. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  49. package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
  50. package/dist/runtime/actors/actor-remote-joiner.js +11 -17
  51. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  52. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  53. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  54. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  55. package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
  56. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  57. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  58. package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
  59. package/dist/runtime/actors/bound-session-wire.js +2 -7
  60. package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
  61. package/dist/runtime/actors/deferred-join-completion.js +21 -0
  62. package/dist/runtime/actors/index.d.ts +10 -8
  63. package/dist/runtime/actors/index.js +101 -73
  64. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  65. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  66. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  67. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  68. package/dist/runtime/admission.d.ts +7 -1
  69. package/dist/runtime/admission.js +11 -1
  70. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  71. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  72. package/dist/runtime/backend/contracts/index.d.ts +8 -33
  73. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
  74. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  75. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  76. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
  77. package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
  78. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
  79. package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
  80. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  81. package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
  82. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  83. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
  84. package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
  85. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
  86. package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
  87. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  88. package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
  89. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  90. package/dist/runtime/backend/runtime-values.js +2 -0
  91. package/dist/runtime/channels/channel-clients.d.ts +20 -9
  92. package/dist/runtime/channels/channel-clients.js +68 -60
  93. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  94. package/dist/runtime/channels/channel-envelope.js +47 -29
  95. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  96. package/dist/runtime/channels/channel-outbound-operations.js +9 -18
  97. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  98. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  99. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  100. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  101. package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
  102. package/dist/runtime/channels/channel-runtime-manager.js +4 -12
  103. package/dist/runtime/channels/channel-socket-options.js +3 -2
  104. package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
  105. package/dist/runtime/channels/channel-socket-registry.js +296 -235
  106. package/dist/runtime/channels/channel-transports.d.ts +11 -20
  107. package/dist/runtime/channels/channel-transports.js +68 -47
  108. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  109. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  110. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  111. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  112. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  113. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  114. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  115. package/dist/runtime/channels/fanout-location-runtime.js +133 -81
  116. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  117. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  118. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  119. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  120. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  121. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  122. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  123. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  124. package/dist/runtime/diagnostics/flow-context.js +16 -2
  125. package/dist/runtime/diagnostics/index.d.ts +4 -2
  126. package/dist/runtime/diagnostics/index.js +14 -4
  127. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  128. package/dist/runtime/diagnostics/message-flow.js +10 -19
  129. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  130. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  131. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  132. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  133. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  134. package/dist/runtime/disposal.d.ts +5 -0
  135. package/dist/runtime/disposal.js +22 -0
  136. package/dist/runtime/execution/index.d.ts +22 -9
  137. package/dist/runtime/execution/index.js +107 -37
  138. package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
  139. package/dist/runtime/execution/serial-execution-queue.js +99 -26
  140. package/dist/runtime/execution/state-lane.d.ts +8 -1
  141. package/dist/runtime/execution/state-lane.js +118 -3
  142. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  143. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  144. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  145. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  146. package/dist/runtime/foundation/listener-records.d.ts +11 -0
  147. package/dist/runtime/foundation/listener-records.js +20 -0
  148. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  149. package/dist/runtime/foundation/operation-identity.js +9 -5
  150. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  151. package/dist/runtime/foundation/operation-registry.js +34 -44
  152. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
  153. package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
  154. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  155. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  156. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
  157. package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
  158. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  159. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  160. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  161. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  162. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  163. package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
  164. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  165. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  166. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  167. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
  168. package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
  169. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
  170. package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
  171. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  172. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  173. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  174. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
  175. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  176. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  177. package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
  178. package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
  179. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
  180. package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
  181. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
  182. package/dist/runtime/foundation/service-topology-registry.js +22 -61
  183. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  184. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  185. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  186. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  187. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  188. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  189. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  190. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  191. package/dist/runtime/framework-errors-internal.js +343 -122
  192. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  193. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  194. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  195. package/dist/runtime/host/actor-packet-relay.js +48 -91
  196. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  197. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  198. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  199. package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
  200. package/dist/runtime/host/actor-transfer-runtime.js +210 -256
  201. package/dist/runtime/host/application-job-queue.js +16 -33
  202. package/dist/runtime/host/bound-session-relay.js +1 -1
  203. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  204. package/dist/runtime/host/index.d.ts +19 -14
  205. package/dist/runtime/host/index.js +234 -175
  206. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  207. package/dist/runtime/host/instance-activation-authority.js +17 -45
  208. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  209. package/dist/runtime/host/location-runtime-owner.js +2 -2
  210. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  211. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  212. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  213. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  214. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  215. package/dist/runtime/host/remote-bound-session-relay.js +11 -23
  216. package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
  217. package/dist/runtime/host/route-mesh-runtime.js +178 -257
  218. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  219. package/dist/runtime/host/runtime-shutdown.js +18 -21
  220. package/dist/runtime/host/service-relocation-control.js +6 -1
  221. package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
  222. package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
  223. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  224. package/dist/runtime/host/spot-address-transport.js +34 -136
  225. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  226. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  227. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
  228. package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
  229. package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
  230. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
  231. package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
  232. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  233. package/dist/runtime/locations/authority-key-codec.js +4 -3
  234. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  235. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  236. package/dist/runtime/locations/creation-operation-id.js +6 -4
  237. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  238. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  239. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  240. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  241. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  242. package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
  243. package/dist/runtime/locations/key-codec.js +3 -2
  244. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  245. package/dist/runtime/locations/lease-tracker.js +7 -11
  246. package/dist/runtime/locations/lifecycle.d.ts +5 -10
  247. package/dist/runtime/locations/lifecycle.js +4 -33
  248. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  249. package/dist/runtime/locations/location-store-failure.js +7 -0
  250. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  251. package/dist/runtime/locations/location-store-pages.js +13 -0
  252. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  253. package/dist/runtime/locations/location-store-repository.js +303 -332
  254. package/dist/runtime/locations/relocation-blob.js +18 -5
  255. package/dist/runtime/locations/resolvers.d.ts +5 -5
  256. package/dist/runtime/locations/resolvers.js +44 -30
  257. package/dist/runtime/locations/runtime.d.ts +5 -4
  258. package/dist/runtime/locations/runtime.js +123 -92
  259. package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
  260. package/dist/runtime/locations/spot-location-claims.js +40 -23
  261. package/dist/runtime/messaging/payload-codec.js +26 -20
  262. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  263. package/dist/runtime/messaging/submission-result.js +48 -0
  264. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
  265. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
  266. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
  267. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
  268. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
  269. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
  270. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
  271. package/dist/runtime/spots/index.d.ts +29 -29
  272. package/dist/runtime/spots/index.js +441 -313
  273. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
  274. package/dist/runtime/spots/spot-activation-registry.js +27 -60
  275. package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
  276. package/dist/runtime/spots/spot-activation-state.js +4 -17
  277. package/dist/runtime/spots/spot-activation.d.ts +10 -9
  278. package/dist/runtime/spots/spot-activation.js +103 -81
  279. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  280. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  281. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  282. package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
  283. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
  284. package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
  285. package/dist/runtime/spots/spot-actor-membership.js +44 -53
  286. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  287. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  288. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  289. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  290. package/dist/runtime/spots/spot-context.d.ts +2 -2
  291. package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
  292. package/dist/runtime/spots/spot-entry-activation.js +9 -21
  293. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  294. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  295. package/dist/runtime/spots/spot-manager-public.js +6 -5
  296. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  297. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
  298. package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
  299. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  300. package/dist/runtime/spots/spot-outbound.js +10 -37
  301. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  302. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  303. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  304. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  305. package/dist/runtime/spots/spot-route-replies.js +3 -1
  306. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
  307. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
  308. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
  309. package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
  310. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  311. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  312. package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
  313. package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
  314. package/dist/runtime/spots/spot-serial-executor.js +9 -2
  315. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
  316. package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
  317. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  318. package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
  319. package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
  320. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
  321. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  322. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  323. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  324. package/dist/runtime/streams/bound-session-service.js +12 -19
  325. package/dist/runtime/streams/index.d.ts +15 -14
  326. package/dist/runtime/streams/index.js +38 -39
  327. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  328. package/dist/runtime/streams/managed-stream.js +17 -8
  329. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  330. package/dist/runtime/streams/protocol.d.ts +6 -33
  331. package/dist/runtime/streams/protocol.js +38 -110
  332. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  333. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  334. package/dist/runtime/streams/session-calls.d.ts +1 -1
  335. package/dist/runtime/streams/session-calls.js +5 -4
  336. package/dist/runtime/streams/session-context.d.ts +6 -6
  337. package/dist/runtime/streams/session-context.js +22 -4
  338. package/dist/runtime/streams/session-requests.js +2 -1
  339. package/dist/runtime/streams/session-serial-executor.js +2 -2
  340. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  341. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  342. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  343. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  344. package/dist/runtime/workers/index.d.ts +2 -2
  345. package/dist/runtime/workers/index.js +5 -4
  346. package/package.json +3 -3
  347. package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
  348. package/src/contracts/Common/CoreTypes.ts +7 -0
  349. package/src/contracts/Common/index.ts +1 -1
  350. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  351. package/src/contracts/Configuration/Registration.ts +92 -48
  352. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  353. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  354. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  355. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  356. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  357. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  358. package/src/contracts/Handlers/JsonContract.ts +14 -4
  359. package/src/contracts/Locations/Authority.ts +7 -3
  360. package/src/contracts/Locations/Options.ts +1 -1
  361. package/src/contracts/Locations/Stores.ts +14 -0
  362. package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
  363. package/src/contracts/Spots/Contracts.ts +1 -1
  364. package/src/internal.ts +15 -0
  365. package/src/nest-integration.ts +28 -10
  366. package/src/runtime/abort.ts +6 -5
  367. package/src/runtime/activation-admission.ts +72 -0
  368. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  369. package/src/runtime/actors/actor-client.ts +77 -204
  370. package/src/runtime/actors/actor-context.ts +45 -39
  371. package/src/runtime/actors/actor-handoff.ts +55 -45
  372. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  373. package/src/runtime/actors/actor-local-native-join.ts +174 -215
  374. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  375. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  376. package/src/runtime/actors/actor-remote-joiner.ts +15 -36
  377. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  378. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  379. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  380. package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
  381. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  382. package/src/runtime/actors/actor-source-transfer.ts +5 -18
  383. package/src/runtime/actors/bound-session-wire.ts +2 -8
  384. package/src/runtime/actors/deferred-join-completion.ts +44 -0
  385. package/src/runtime/actors/index.ts +122 -88
  386. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  387. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  388. package/src/runtime/admission.ts +13 -2
  389. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  390. package/src/runtime/backend/contracts/index.ts +15 -42
  391. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
  392. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  393. package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
  394. package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
  395. package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
  396. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  397. package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
  398. package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
  399. package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
  400. package/src/runtime/backend/raw-binding-port.ts +14 -1
  401. package/src/runtime/backend/runtime-values.ts +4 -1
  402. package/src/runtime/channels/channel-clients.ts +132 -96
  403. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  404. package/src/runtime/channels/channel-envelope.ts +58 -29
  405. package/src/runtime/channels/channel-outbound-operations.ts +10 -31
  406. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  407. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  408. package/src/runtime/channels/channel-runtime-manager.ts +8 -15
  409. package/src/runtime/channels/channel-socket-options.ts +8 -2
  410. package/src/runtime/channels/channel-socket-registry.ts +369 -262
  411. package/src/runtime/channels/channel-transports.ts +161 -115
  412. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  413. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  414. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  415. package/src/runtime/channels/fanout-location-runtime.ts +175 -106
  416. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  417. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  418. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  419. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  420. package/src/runtime/diagnostics/flow-context.ts +16 -2
  421. package/src/runtime/diagnostics/index.ts +27 -17
  422. package/src/runtime/diagnostics/message-flow.ts +15 -25
  423. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  424. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  425. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  426. package/src/runtime/disposal.ts +19 -0
  427. package/src/runtime/execution/index.ts +116 -38
  428. package/src/runtime/execution/serial-execution-queue.ts +179 -34
  429. package/src/runtime/execution/state-lane.ts +142 -4
  430. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  431. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  432. package/src/runtime/foundation/listener-records.ts +21 -0
  433. package/src/runtime/foundation/operation-identity.ts +11 -5
  434. package/src/runtime/foundation/operation-registry.ts +33 -50
  435. package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
  436. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  437. package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
  438. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  439. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  440. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  441. package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
  442. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  443. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  444. package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
  445. package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
  446. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  447. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  448. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
  449. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  450. package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
  451. package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
  452. package/src/runtime/foundation/service-topology-registry.ts +30 -79
  453. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  454. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  455. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  456. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  457. package/src/runtime/framework-errors-internal.ts +380 -134
  458. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  459. package/src/runtime/host/actor-packet-relay.ts +57 -147
  460. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  461. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  462. package/src/runtime/host/actor-transfer-runtime.ts +266 -418
  463. package/src/runtime/host/application-job-queue.ts +28 -34
  464. package/src/runtime/host/bound-session-relay.ts +1 -2
  465. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  466. package/src/runtime/host/index.ts +408 -312
  467. package/src/runtime/host/instance-activation-authority.ts +89 -109
  468. package/src/runtime/host/location-runtime-owner.ts +4 -2
  469. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  470. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  471. package/src/runtime/host/remote-bound-session-relay.ts +12 -44
  472. package/src/runtime/host/route-mesh-runtime.ts +236 -275
  473. package/src/runtime/host/runtime-shutdown.ts +17 -21
  474. package/src/runtime/host/service-relocation-control.ts +14 -1
  475. package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
  476. package/src/runtime/host/spot-address-transport.ts +73 -195
  477. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  478. package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
  479. package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
  480. package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
  481. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  482. package/src/runtime/locations/authority-key-codec.ts +7 -3
  483. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  484. package/src/runtime/locations/creation-operation-id.ts +6 -3
  485. package/src/runtime/locations/domain-store-contract.ts +12 -3
  486. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  487. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  488. package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
  489. package/src/runtime/locations/key-codec.ts +3 -2
  490. package/src/runtime/locations/lease-tracker.ts +8 -14
  491. package/src/runtime/locations/lifecycle.ts +16 -45
  492. package/src/runtime/locations/location-store-failure.ts +4 -0
  493. package/src/runtime/locations/location-store-pages.ts +18 -0
  494. package/src/runtime/locations/location-store-repository.ts +450 -478
  495. package/src/runtime/locations/relocation-blob.ts +17 -6
  496. package/src/runtime/locations/resolvers.ts +90 -58
  497. package/src/runtime/locations/runtime.ts +220 -110
  498. package/src/runtime/locations/spot-location-claims.ts +54 -26
  499. package/src/runtime/messaging/payload-codec.ts +35 -24
  500. package/src/runtime/messaging/submission-result.ts +57 -1
  501. package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
  502. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
  503. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
  504. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
  505. package/src/runtime/spots/index.ts +687 -437
  506. package/src/runtime/spots/spot-activation-registry.ts +42 -71
  507. package/src/runtime/spots/spot-activation-state.ts +4 -16
  508. package/src/runtime/spots/spot-activation.ts +167 -115
  509. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  510. package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
  511. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
  512. package/src/runtime/spots/spot-actor-membership.ts +107 -75
  513. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  514. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  515. package/src/runtime/spots/spot-context.ts +3 -3
  516. package/src/runtime/spots/spot-entry-activation.ts +13 -33
  517. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  518. package/src/runtime/spots/spot-manager-public.ts +29 -21
  519. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  520. package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
  521. package/src/runtime/spots/spot-outbound.ts +47 -68
  522. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  523. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  524. package/src/runtime/spots/spot-route-replies.ts +6 -4
  525. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
  526. package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
  527. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  528. package/src/runtime/spots/spot-runtime-ports.ts +10 -43
  529. package/src/runtime/spots/spot-serial-executor.ts +10 -2
  530. package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
  531. package/src/runtime/spots/spot-timer.ts +3 -2
  532. package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
  533. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
  534. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  535. package/src/runtime/streams/bound-session-service.ts +23 -37
  536. package/src/runtime/streams/index.ts +102 -88
  537. package/src/runtime/streams/managed-stream.ts +29 -10
  538. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  539. package/src/runtime/streams/protocol.ts +34 -88
  540. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  541. package/src/runtime/streams/session-calls.ts +6 -5
  542. package/src/runtime/streams/session-context.ts +54 -10
  543. package/src/runtime/streams/session-requests.ts +2 -1
  544. package/src/runtime/streams/session-serial-executor.ts +2 -2
  545. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  546. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  547. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  548. package/src/runtime/workers/index.ts +13 -12
  549. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
  550. package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
  551. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  552. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  553. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  554. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  555. package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
  556. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  557. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,51 +1,73 @@
1
- import {
2
- ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException,
4
- wireReplyFailureException
5
- } from '../framework-errors-internal';
1
+ import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
6
2
  import { randomUUID } from 'node:crypto';
7
- import { isBackendNotConnectedError } from '../backend/runtime-values';
8
- import type {
9
- RoutingId,
10
- ZLinkActor,
11
- ZLinkActorJoinOperationId,
12
- ZLinkMessageSerializer
3
+ import {
4
+ type RoutingId,
5
+ type ZLinkActor,
6
+ type ZLinkActorJoinOperationId,
7
+ type ZLinkMessageSerializer,
8
+ type ZLinkSpot,
9
+ type ZLinkSpotActorJoinResult,
10
+ ZLinkSpotKind
13
11
  } from '../../contracts';
14
- import { ZLinkFrameworkErrorKind, ZLinkSpotKind } from '../../contracts';
15
- import type { ZLinkActorJoinRuntimeResult } from './actor-runtime-contracts';
12
+
16
13
  import type { Message } from '../../contracts/Common/Message';
14
+ import { createAbortError, throwIfAborted } from '../abort';
17
15
  import type { ZLinkBackendActorRef, ZLinkBackendMeshNode } from '../backend/contracts';
18
16
  import {
19
17
  closeMeshCompletion,
20
18
  type ZLinkMeshCompletion,
21
19
  type ZLinkMeshCompletionTable
22
20
  } from '../backend/mesh-completion-table';
23
- import { createAbortError, throwIfAborted } from '../abort';
21
+ import { isBackendNotConnectedError } from '../backend/runtime-values';
22
+ import { operationIdentityKey } from '../foundation/operation-identity';
23
+ import {
24
+ ZLinkFrameworkInternalErrorKind,
25
+ createInternalFrameworkException,
26
+ wireReplyFailureException
27
+ } from '../framework-errors-internal';
28
+ import type { ZLinkLocationLifecycle } from '../locations';
29
+ import { frameworkPayloadContentType } from '../messaging/payload-codec';
30
+ import { routingIdsEqual, toBackendRoutingId } from '../routing-id';
24
31
  import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
32
+ import type { ZLinkActorJoinRelocation } from './actor-join-relocation';
33
+ import { ZLINK_REMOTE_ACTOR_JOIN_PACKET } from './actor-remote-wire';
34
+ import type { ZLinkActorJoinRuntimeResult } from './actor-runtime-contracts';
25
35
  import {
26
36
  ZLinkActorRuntimeState,
27
37
  toFrameworkActorRef,
28
38
  toFrameworkRoutingId
29
39
  } from './actor-runtime-state';
30
40
  import type { ZLinkPostCommitActorBinder } from './post-commit-actor-binder';
31
- import type { ZLinkPostCommitActorLocation } from './post-commit-actor-location';
32
- import { toBackendRoutingId as toBackendRoutingId } from '../routing-id';
33
- import { routingIdsEqual } from '../routing-id';
34
- import { operationIdentityKey } from '../foundation/operation-identity';
35
- import { frameworkPayloadContentType } from '../messaging/payload-codec';
36
- import type { ZLinkActorJoinRelocation } from './actor-join-relocation';
41
+ const LOCAL_JOIN_RESOLUTION_TIMEOUT_MS = 5_000;
42
+ const LOCAL_JOIN_POLL_INTERVAL_MS = 10;
37
43
 
38
44
  const ZLINK_FRAMEWORK_ACTOR_JOIN_PACKET_NAME = 'ZLinkFrameworkActorJoinRequest';
39
45
 
40
46
  export interface ZLinkLocalNativeActorJoinOptions {
41
- readonly postCommitLocation?: ZLinkPostCommitActorLocation;
47
+ readonly locationLifecycle?: ZLinkLocationLifecycle;
48
+ readonly localSpotJoin?: (
49
+ spotId: RoutingId,
50
+ actor: ZLinkActor,
51
+ request: Message,
52
+ commit: (spot: ZLinkSpot) => Promise<void>,
53
+ signal?: AbortSignal,
54
+ leaveSource?: () => Promise<void>,
55
+ contentType?: string
56
+ ) => Promise<ZLinkSpotActorJoinResult>;
57
+ readonly localEntryJoin?: (actor: ZLinkActor, signal?: AbortSignal) => Promise<void>;
58
+ readonly localSourceLeave?: (
59
+ actor: ZLinkActor,
60
+ spotId: RoutingId | undefined,
61
+ signal?: AbortSignal
62
+ ) => Promise<void>;
63
+ readonly reportSourceLeaveError: (error: unknown) => void;
42
64
  readonly postCommitBinder?: ZLinkPostCommitActorBinder;
43
65
  readonly completionTableProvider: () => ZLinkMeshCompletionTable | undefined;
44
66
  readonly actorJoinRelocation?: ZLinkActorJoinRelocation;
45
67
  readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
46
68
  }
47
69
 
48
- /** Owns core-native actor joins and their local runtime state transition. */
70
+ /** Selects local membership commits or remote Actor relocation. */
49
71
  export class ZLinkLocalNativeActorJoin {
50
72
  constructor(private readonly options: ZLinkLocalNativeActorJoinOptions) {}
51
73
 
@@ -62,9 +84,7 @@ export class ZLinkLocalNativeActorJoin {
62
84
  completionOperationId?: ZLinkActorJoinOperationId
63
85
  ): Promise<ZLinkActorJoinRuntimeResult<Message>> {
64
86
  if (signal?.aborted === true) throw createAbortError();
65
- const completions = this.requireCompletions();
66
87
  const target = requireUserSpotRoute(spotRouteTarget, spotId);
67
- const actorMeshName = runtimeActorMeshName(actor, state, target.routerChannelId);
68
88
  const remote = !routingIdsEqual(
69
89
  toFrameworkRoutingId(node.status().routingId),
70
90
  target.targetNodeRid
@@ -83,88 +103,16 @@ export class ZLinkLocalNativeActorJoin {
83
103
  false
84
104
  );
85
105
  }
86
- const completion = await this.waitForJoinCompletion(
87
- () =>
88
- node.joinActorSpot(
89
- actorRef,
90
- toBackendRoutingId(target.targetNodeRid),
91
- toBackendRoutingId(target.spotId),
92
- target.targetSpotGeneration,
93
- actorJoinApplicationPayload(request),
94
- timeoutMs
95
- ),
96
- completions,
97
- timeoutMs,
106
+ return await this.joinLocal(
107
+ node,
108
+ actor,
109
+ state,
110
+ actorRef,
111
+ target,
112
+ target.spotId,
113
+ request,
98
114
  signal
99
115
  );
100
- const control = completion.kindData;
101
- if (control?.kind !== 'actorJoinCompletion' || control.actor === null) {
102
- closeMeshCompletion(completion);
103
- const message = `Actor join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`;
104
- // Classify the (terminal, fine) pair instead of collapsing every non-OK
105
- // or malformed join completion to NotFound (spec 32-framework-error-model:
106
- // 83-118). An OK terminal that carries no join control is a protocol
107
- // violation, not a missing route.
108
- throw completion.terminalResult !== 0 || completion.failureErrno !== 0
109
- ? wireReplyFailureException(completion.terminalResult, completion.failureErrno, message)
110
- : createInternalFrameworkException(
111
- ZLinkFrameworkInternalErrorKind.RequestProtocolError,
112
- message
113
- );
114
- }
115
- if (control.joinResult !== 0) {
116
- try {
117
- return {
118
- accepted: false,
119
- actor: toFrameworkActorRef(control.actor as never, actorMeshName),
120
- reply: completion.parts[0]
121
- };
122
- } finally {
123
- disposeParts(completion.parts.slice(1));
124
- }
125
- }
126
- if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
127
- closeMeshCompletion(completion);
128
- throw wireReplyFailureException(
129
- completion.terminalResult,
130
- completion.failureErrno,
131
- `Actor join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`
132
- );
133
- }
134
-
135
- state.setNativeActorRef(control.actor as never);
136
- state.setJoinedSpot(
137
- toFrameworkRoutingId(control.location.spotId ?? target.spotId),
138
- undefined,
139
- control.location.membershipEpoch,
140
- control.location.spotGeneration
141
- );
142
- // The Session owner relays from the verified Ready authority snapshot;
143
- // membership coordinates alone cannot recreate a User/Instance fence.
144
- state.setRemoteActorPacketTarget(target.spotKind === ZLinkSpotKind.Entry ? undefined : target);
145
- if (state.actorType !== undefined) {
146
- this.options.postCommitLocation?.joinedEventually(
147
- state.actorType,
148
- actor.context.actorId,
149
- spotRouteTarget?.routerChannelId ?? '',
150
- toFrameworkRoutingId(control.location.spotId ?? target.spotId),
151
- control.location.spotGeneration,
152
- control.location.membershipEpoch,
153
- node.status().lifecycleGeneration
154
- );
155
- }
156
- await this.options.postCommitBinder?.bind(
157
- toFrameworkActorRef(control.actor as never, actorMeshName)
158
- );
159
- try {
160
- return {
161
- accepted: true,
162
- actor: toFrameworkActorRef(control.actor as never, actorMeshName),
163
- reply: completion.parts[0]
164
- };
165
- } finally {
166
- disposeParts(completion.parts.slice(1));
167
- }
168
116
  }
169
117
 
170
118
  async joinEntrySpot(
@@ -180,8 +128,6 @@ export class ZLinkLocalNativeActorJoin {
180
128
  completionOperationId?: ZLinkActorJoinOperationId
181
129
  ): Promise<ZLinkActorJoinRuntimeResult<Message>> {
182
130
  if (signal?.aborted === true) throw createAbortError();
183
- const completions = this.requireCompletions();
184
- const actorMeshName = runtimeActorMeshName(actor, state, '');
185
131
  const targetNodeRid = spotRouteTarget?.targetNodeRid ?? nodeRid;
186
132
  const remote =
187
133
  spotRouteTarget !== undefined &&
@@ -204,77 +150,127 @@ export class ZLinkLocalNativeActorJoin {
204
150
  true
205
151
  );
206
152
  }
207
- const completion = await this.waitForJoinCompletion(
208
- () =>
209
- node.joinActorEntrySpot(
210
- actorRef,
211
- toBackendRoutingId(targetNodeRid),
212
- actorJoinApplicationPayload(request),
213
- timeoutMs
214
- ),
215
- completions,
216
- timeoutMs,
153
+ const target = {
154
+ routerChannelId: spotRouteTarget?.routerChannelId ?? runtimeActorMeshName(actor, state, ''),
155
+ targetNodeRid,
156
+ spotId: toFrameworkRoutingId(node.entrySpot().routingId),
157
+ spotKind: ZLinkSpotKind.Entry,
158
+ targetSpotGeneration: node.entrySpot().status().lifecycleGeneration
159
+ };
160
+ return await this.joinLocal(
161
+ node,
162
+ actor,
163
+ state,
164
+ actorRef,
165
+ target,
166
+ spotRouteTarget?.spotId ?? target.spotId,
167
+ request,
217
168
  signal
218
169
  );
219
- const control = completion.kindData;
220
- if (control?.kind !== 'actorJoinCompletion' || control.actor === null) {
221
- closeMeshCompletion(completion);
222
- const message = `Actor entry SPOT join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`;
223
- // Classify the (terminal, fine) pair instead of collapsing to NotFound
224
- // (spec 32-framework-error-model:83-118); an OK terminal with no join
225
- // control is a protocol violation.
226
- throw completion.terminalResult !== 0 || completion.failureErrno !== 0
227
- ? wireReplyFailureException(completion.terminalResult, completion.failureErrno, message)
228
- : createInternalFrameworkException(
229
- ZLinkFrameworkInternalErrorKind.RequestProtocolError,
230
- message
231
- );
232
- }
233
- if (control.joinResult !== 0) {
234
- try {
235
- return {
236
- accepted: false,
237
- actor: toFrameworkActorRef(control.actor as never, actorMeshName),
238
- reply: completion.parts[0]
239
- };
240
- } finally {
241
- disposeParts(completion.parts.slice(1));
242
- }
170
+ }
171
+
172
+ private async joinLocal(
173
+ node: ZLinkBackendMeshNode,
174
+ actor: ZLinkActor,
175
+ state: ZLinkActorRuntimeState,
176
+ actorRef: ZLinkBackendActorRef,
177
+ target: ZLinkSpotRouteTarget,
178
+ storeSpotId: RoutingId,
179
+ request: Message,
180
+ signal: AbortSignal | undefined
181
+ ): Promise<ZLinkActorJoinRuntimeResult<Message>> {
182
+ const location = node.actorLookup(actor.context.actorId);
183
+ const meshName = runtimeActorMeshName(actor, state, target.routerChannelId);
184
+ if (routingIdsEqual(toFrameworkRoutingId(location.spotId), target.spotId)) {
185
+ return { accepted: true, actor: toFrameworkActorRef(actorRef, meshName) };
243
186
  }
244
- if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
245
- closeMeshCompletion(completion);
246
- throw wireReplyFailureException(
247
- completion.terminalResult,
248
- completion.failureErrno,
249
- `Actor entry SPOT join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`
187
+ if (state.actorType === undefined)
188
+ throw new Error('Local Actor Join requires a registered Actor type.');
189
+ const actorType = state.actorType;
190
+ const previousSpotId = state.spotId;
191
+ const spotGeneration = target.targetSpotGeneration;
192
+ if (
193
+ spotGeneration === undefined ||
194
+ spotGeneration <= 0n ||
195
+ node.restoreActorAuthority === undefined
196
+ ) {
197
+ throw new Error(
198
+ 'Local Actor Join requires a valid target generation and stateful membership runtime.'
250
199
  );
251
200
  }
252
-
253
- state.setNativeActorRef(control.actor as never);
254
- state.clearJoinedSpot();
255
- state.setRemoteActorPacketTarget(undefined);
256
- if (state.actorType !== undefined) {
257
- this.options.postCommitLocation?.leftEventually(
258
- state.actorType,
201
+ const membershipEpoch = location.membershipEpoch + 1n;
202
+ const commit = async (spot?: ZLinkSpot): Promise<void> => {
203
+ throwIfAborted(signal);
204
+ if (target.spotKind === ZLinkSpotKind.Entry) {
205
+ await this.options.locationLifecycle?.notifyActorLeftSpot(
206
+ actorType,
207
+ actor.context.actorId,
208
+ storeSpotId,
209
+ spotGeneration,
210
+ membershipEpoch,
211
+ node.status().lifecycleGeneration
212
+ );
213
+ } else {
214
+ await this.options.locationLifecycle?.notifyActorJoinedSpot(
215
+ actorType,
216
+ actor.context.actorId,
217
+ meshName,
218
+ storeSpotId,
219
+ spotGeneration,
220
+ membershipEpoch,
221
+ node.status().lifecycleGeneration
222
+ );
223
+ }
224
+ const committedActor = node.restoreActorAuthority!(
259
225
  actor.context.actorId,
260
- toFrameworkRoutingId(control.location.spotId ?? spotRouteTarget?.spotId ?? nodeRid),
261
- control.location.spotGeneration,
262
- control.location.membershipEpoch,
263
- node.status().lifecycleGeneration
226
+ actorType,
227
+ actorRef.generation,
228
+ state.locationGeneration ?? actorRef.generation,
229
+ target.spotKind === ZLinkSpotKind.Entry ? undefined : String(target.spotId),
230
+ spotGeneration,
231
+ membershipEpoch
232
+ );
233
+ state.setNativeActorRef(committedActor);
234
+ if (target.spotKind === ZLinkSpotKind.Entry) state.clearJoinedSpot();
235
+ else state.setJoinedSpot(target.spotId, spot, membershipEpoch, spotGeneration);
236
+ state.setRemoteActorPacketTarget(
237
+ target.spotKind === ZLinkSpotKind.Entry ? undefined : target
238
+ );
239
+ };
240
+ const leaveSource = async (): Promise<void> => {
241
+ void this.options.localSourceLeave?.(actor, previousSpotId, signal).catch((error) => {
242
+ this.options.reportSourceLeaveError(error);
243
+ });
244
+ };
245
+ let response: ZLinkSpotActorJoinResult;
246
+ if (target.spotKind === ZLinkSpotKind.Entry) {
247
+ if (this.options.localEntryJoin === undefined)
248
+ throw new Error('Local Entry Actor Join runtime is not configured.');
249
+ await commit();
250
+ try {
251
+ await this.options.localEntryJoin(actor, signal);
252
+ } finally {
253
+ await leaveSource();
254
+ }
255
+ response = { accepted: true };
256
+ } else {
257
+ if (this.options.localSpotJoin === undefined)
258
+ throw new Error('Local Spot Actor Join runtime is not configured.');
259
+ response = await this.options.localSpotJoin(
260
+ target.spotId,
261
+ actor,
262
+ request,
263
+ commit,
264
+ signal,
265
+ leaveSource,
266
+ frameworkPayloadContentType(request)
264
267
  );
265
268
  }
266
- await this.options.postCommitBinder?.bind(
267
- toFrameworkActorRef(control.actor as never, actorMeshName)
268
- );
269
- try {
270
- return {
271
- accepted: true,
272
- actor: toFrameworkActorRef(control.actor as never, actorMeshName),
273
- reply: completion.parts[0]
274
- };
275
- } finally {
276
- disposeParts(completion.parts.slice(1));
277
- }
269
+ return {
270
+ accepted: response.accepted,
271
+ actor: toFrameworkActorRef(state.nativeActorRef ?? actorRef, meshName),
272
+ reply: response.reply as Message | undefined
273
+ };
278
274
  }
279
275
 
280
276
  private async waitForJoinCompletion(
@@ -391,13 +387,7 @@ export class ZLinkLocalNativeActorJoin {
391
387
  // (spec 32-framework-error-model:83-118); an OK terminal with no join
392
388
  // control is a protocol violation.
393
389
  throw admission.terminalResult !== 0 || admission.failureErrno !== 0
394
- ? remoteActorJoinFailureException(
395
- node,
396
- target,
397
- admission.terminalResult,
398
- admission.failureErrno,
399
- message
400
- )
390
+ ? wireReplyFailureException(admission.terminalResult, admission.failureErrno, message)
401
391
  : createInternalFrameworkException(
402
392
  ZLinkFrameworkInternalErrorKind.RequestProtocolError,
403
393
  message
@@ -419,9 +409,7 @@ export class ZLinkLocalNativeActorJoin {
419
409
  }
420
410
  if (admission.terminalResult !== 0 || admission.failureErrno !== 0) {
421
411
  closeMeshCompletion(admission);
422
- throw remoteActorJoinFailureException(
423
- node,
424
- target,
412
+ throw wireReplyFailureException(
425
413
  admission.terminalResult,
426
414
  admission.failureErrno,
427
415
  `Actor admission failed for '${actor.context.actorId}' with result '${admission.terminalResult}' and errno '${admission.failureErrno}'.`
@@ -471,7 +459,7 @@ export class ZLinkLocalNativeActorJoin {
471
459
  ...(completionOperationId === undefined
472
460
  ? {}
473
461
  : {
474
- replyContentType: control.replyContentType ?? 'application/octet-stream'
462
+ replyContentType: control.replyContentType ?? ZlinkStreamContentType.Raw
475
463
  }),
476
464
  reply:
477
465
  completionOperationId === undefined
@@ -577,7 +565,7 @@ function legacyRemoteActorJoinPayload(
577
565
  // authority fence.
578
566
  const payload = Buffer.from(
579
567
  JSON.stringify({
580
- packetName: '__zlink.actor.join_spot.request',
568
+ packetName: ZLINK_REMOTE_ACTOR_JOIN_PACKET,
581
569
  phase: 'admission',
582
570
  transferId,
583
571
  spotId: String(target.spotId),
@@ -593,7 +581,7 @@ function legacyRemoteActorJoinPayload(
593
581
  );
594
582
  return {
595
583
  packetName: ZLINK_FRAMEWORK_ACTOR_JOIN_PACKET_NAME,
596
- contentType: 'application/json',
584
+ contentType: ZlinkStreamContentType.Json,
597
585
  payload,
598
586
  // Older in-process MeshNode adapters consume the fallback as a Message.
599
587
  // Keep that structural view without changing the typed service payload.
@@ -613,37 +601,6 @@ function canonicalHandoffRelocationId(handoffId: string): string {
613
601
  );
614
602
  }
615
603
 
616
- function remoteActorJoinFailureException(
617
- node: ZLinkBackendMeshNode,
618
- target: ZLinkSpotRouteTarget,
619
- terminalResult: number,
620
- failureErrno: number,
621
- message: string
622
- ) {
623
- const failure = wireReplyFailureException(terminalResult, failureErrno, message);
624
- const targetGeneration = target.targetNodeGeneration;
625
- if (
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
637
- )
638
- ) {
639
- return createInternalFrameworkException(
640
- ZLinkFrameworkInternalErrorKind.RouteNotConnected,
641
- 'wire Actor join target RouteMesh peer became unavailable'
642
- );
643
- }
644
- return failure;
645
- }
646
-
647
604
  function runtimeActorMeshName(
648
605
  actor: ZLinkActor,
649
606
  state: ZLinkActorRuntimeState,
@@ -663,7 +620,9 @@ async function submitJoinWhenConnected<T>(
663
620
  timeoutMs: number | undefined,
664
621
  signal: AbortSignal | undefined
665
622
  ): Promise<T> {
666
- const deadline = performance.now() + Math.min(timeoutMs ?? 5_000, 5_000);
623
+ const deadline =
624
+ performance.now() +
625
+ Math.min(timeoutMs ?? LOCAL_JOIN_RESOLUTION_TIMEOUT_MS, LOCAL_JOIN_RESOLUTION_TIMEOUT_MS);
667
626
  for (;;) {
668
627
  throwIfAborted(signal);
669
628
  try {
@@ -672,7 +631,7 @@ async function submitJoinWhenConnected<T>(
672
631
  if (!isBackendNotConnectedError(error) || performance.now() >= deadline) {
673
632
  throw error;
674
633
  }
675
- await new Promise<void>((resolve) => setTimeout(resolve, 10));
634
+ await new Promise<void>((resolve) => setTimeout(resolve, LOCAL_JOIN_POLL_INTERVAL_MS));
676
635
  }
677
636
  }
678
637
  }
@@ -1,3 +1,4 @@
1
+ import { ConfigError, ConfigResult } from '@zlink-systems/zlink';
1
2
  import type {
2
3
  ZLinkBackendActorRef,
3
4
  ZLinkBackendMeshNode,
@@ -22,17 +23,9 @@ export function lookupNativeActorRef(
22
23
  generation: actor.generation
23
24
  };
24
25
  } catch (error) {
25
- if (nativeErrno(error) === 2) {
26
+ if (error instanceof ConfigError && error.result === ConfigResult.NotFound) {
26
27
  return undefined;
27
28
  }
28
29
  throw error;
29
30
  }
30
31
  }
31
-
32
- function nativeErrno(error: unknown): number | undefined {
33
- if (typeof error !== 'object' || error === null || !('nativeErrno' in error)) {
34
- return undefined;
35
- }
36
- const value = error.nativeErrno;
37
- return typeof value === 'number' ? value : undefined;
38
- }
@@ -1,11 +1,12 @@
1
- import type { ActorRef, RoutingId } from '../../contracts';
2
- import { ZLinkSpotKind } from '../../contracts';
1
+ import { type ActorRef, type RoutingId, ZLinkSpotKind } from '../../contracts';
2
+
3
+ import { ZLINK_MAX_SPOT_ID_BYTES } from '../../contracts/Common/CoreTypes';
3
4
  import { decodeRoutingId, routingIdWireHex } from '../routing-id';
4
- import type { ZLinkRemoteActorPacketTarget } from './actor-runtime-state';
5
5
  import {
6
6
  decodeActorMessageFollowContext,
7
7
  type ZLinkActorMessageFollowContext
8
8
  } from './actor-message-follow-context';
9
+ import type { ZLinkRemoteActorPacketTarget } from './actor-runtime-state';
9
10
 
10
11
  export const ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET = '__zlink.actor.packet.relay';
11
12
  export const ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET =
@@ -48,6 +49,7 @@ export function encodeRemoteActorPacketRelayPayload(input: {
48
49
  readonly header: Uint8Array;
49
50
  readonly payload: Uint8Array;
50
51
  readonly bindingActorRef?: ActorRef;
52
+ readonly bindingGeneration?: bigint;
51
53
  /** The actor reference used to preserve relocation context at the target Spot. */
52
54
  readonly actorRef?: ActorRef;
53
55
  readonly returnResponse?: boolean;
@@ -70,13 +72,15 @@ export function encodeRemoteActorPacketRelayPayload(input: {
70
72
  ? undefined
71
73
  : routingIdWireHex(input.bindingActorRef.nodeRid),
72
74
  bindingActorGeneration: input.bindingActorRef?.objectGeneration.toString(),
73
- bindingGeneration: (
74
- input.bindingActorRef as
75
- | (ActorRef & {
76
- readonly bindingGeneration?: bigint;
77
- })
78
- | undefined
79
- )?.bindingGeneration?.toString(),
75
+ bindingGeneration:
76
+ input.bindingGeneration?.toString() ??
77
+ (
78
+ input.bindingActorRef as
79
+ | (ActorRef & {
80
+ readonly bindingGeneration?: bigint;
81
+ })
82
+ | undefined
83
+ )?.bindingGeneration?.toString(),
80
84
  returnResponse: input.returnResponse,
81
85
  messageFollowContext: input.messageFollowContext,
82
86
  header: Buffer.from(input.header).toString('base64'),
@@ -169,8 +173,10 @@ export function decodeRemoteActorPacketTarget(
169
173
 
170
174
  function requireSpotId(value: string): string {
171
175
  const bytes = Buffer.byteLength(value, 'utf8');
172
- if (bytes < 1 || bytes > 255) {
173
- throw new Error('Actor packet target SpotId must contain 1..255 UTF-8 bytes.');
176
+ if (bytes < 1 || bytes > ZLINK_MAX_SPOT_ID_BYTES) {
177
+ throw new Error(
178
+ `Actor packet target SpotId must contain 1..${ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes.`
179
+ );
174
180
  }
175
181
  return value;
176
182
  }