@zlink-systems/framework 0.26.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 (521) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  3. package/dist/contracts/Common/CoreTypes.js +7 -0
  4. package/dist/contracts/Common/index.d.ts +1 -1
  5. package/dist/contracts/Common/index.js +0 -1
  6. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  7. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  8. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  9. package/dist/contracts/Configuration/Registration.js +58 -36
  10. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  12. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  16. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  17. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  18. package/dist/contracts/Handlers/JsonContract.js +10 -4
  19. package/dist/contracts/Locations/Authority.d.ts +1 -1
  20. package/dist/contracts/Locations/Authority.js +3 -2
  21. package/dist/contracts/Locations/Options.js +1 -1
  22. package/dist/contracts/Locations/Stores.d.ts +12 -0
  23. package/dist/contracts/Locations/Stores.js +9 -0
  24. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  25. package/dist/internal.d.ts +4 -0
  26. package/dist/internal.js +15 -1
  27. package/dist/nest-integration.d.ts +4 -2
  28. package/dist/nest-integration.js +14 -4
  29. package/dist/runtime/abort.d.ts +1 -0
  30. package/dist/runtime/abort.js +8 -5
  31. package/dist/runtime/activation-admission.d.ts +1 -2
  32. package/dist/runtime/activation-admission.js +2 -6
  33. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  34. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  35. package/dist/runtime/actors/actor-client.d.ts +2 -2
  36. package/dist/runtime/actors/actor-client.js +42 -143
  37. package/dist/runtime/actors/actor-context.d.ts +3 -5
  38. package/dist/runtime/actors/actor-context.js +13 -11
  39. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  40. package/dist/runtime/actors/actor-handoff.js +8 -8
  41. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  42. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  43. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  44. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  45. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  46. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  47. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  48. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  49. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  50. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  51. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  52. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  53. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  54. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  55. package/dist/runtime/actors/bound-session-wire.js +2 -7
  56. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  57. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  58. package/dist/runtime/actors/index.d.ts +9 -7
  59. package/dist/runtime/actors/index.js +87 -69
  60. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  61. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  62. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  63. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  64. package/dist/runtime/admission.d.ts +2 -0
  65. package/dist/runtime/admission.js +7 -1
  66. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  67. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  68. package/dist/runtime/backend/contracts/index.d.ts +6 -23
  69. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  70. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  71. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  72. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
  73. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
  74. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  75. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  76. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  77. package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
  78. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  79. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  80. package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
  81. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  82. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  83. package/dist/runtime/backend/runtime-values.js +2 -0
  84. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  85. package/dist/runtime/channels/channel-clients.js +68 -52
  86. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  87. package/dist/runtime/channels/channel-envelope.js +47 -29
  88. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  89. package/dist/runtime/channels/channel-outbound-operations.js +9 -10
  90. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  91. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  94. package/dist/runtime/channels/channel-runtime-manager.js +5 -2
  95. package/dist/runtime/channels/channel-socket-options.js +3 -2
  96. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  97. package/dist/runtime/channels/channel-socket-registry.js +248 -174
  98. package/dist/runtime/channels/channel-transports.d.ts +11 -17
  99. package/dist/runtime/channels/channel-transports.js +68 -47
  100. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  101. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  102. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  103. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  104. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  105. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  106. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  107. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  108. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  109. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  110. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  111. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  112. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  113. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  114. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  115. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  116. package/dist/runtime/diagnostics/flow-context.js +16 -2
  117. package/dist/runtime/diagnostics/index.d.ts +4 -2
  118. package/dist/runtime/diagnostics/index.js +14 -4
  119. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  120. package/dist/runtime/diagnostics/message-flow.js +10 -19
  121. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  122. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  123. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  124. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  125. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  126. package/dist/runtime/disposal.d.ts +5 -0
  127. package/dist/runtime/disposal.js +22 -0
  128. package/dist/runtime/execution/index.d.ts +12 -9
  129. package/dist/runtime/execution/index.js +58 -14
  130. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  131. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  132. package/dist/runtime/execution/state-lane.d.ts +8 -1
  133. package/dist/runtime/execution/state-lane.js +118 -3
  134. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  135. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  136. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  137. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  138. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  139. package/dist/runtime/foundation/operation-identity.js +9 -5
  140. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  141. package/dist/runtime/foundation/operation-registry.js +34 -44
  142. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  143. package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
  144. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  145. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  146. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  147. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  148. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  149. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  150. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  151. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  152. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  153. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  154. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  155. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  156. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  157. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  158. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  159. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  160. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  161. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  162. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  163. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  164. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  165. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  166. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  167. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  168. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  169. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  170. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  171. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  172. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  173. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  174. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  175. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  176. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  177. package/dist/runtime/framework-errors-internal.js +343 -122
  178. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  179. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  180. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  181. package/dist/runtime/host/actor-packet-relay.js +48 -91
  182. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  183. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  184. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  185. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  186. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  187. package/dist/runtime/host/application-job-queue.js +16 -33
  188. package/dist/runtime/host/bound-session-relay.js +1 -1
  189. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  190. package/dist/runtime/host/index.d.ts +14 -13
  191. package/dist/runtime/host/index.js +190 -157
  192. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  193. package/dist/runtime/host/instance-activation-authority.js +17 -45
  194. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  195. package/dist/runtime/host/location-runtime-owner.js +2 -2
  196. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  197. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  198. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  199. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  200. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  201. package/dist/runtime/host/remote-bound-session-relay.js +7 -20
  202. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  203. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  204. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  205. package/dist/runtime/host/runtime-shutdown.js +18 -21
  206. package/dist/runtime/host/service-relocation-control.js +6 -1
  207. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  208. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  209. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  210. package/dist/runtime/host/spot-address-transport.js +34 -136
  211. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  212. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  213. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  214. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  215. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  216. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  217. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  218. package/dist/runtime/locations/authority-key-codec.js +4 -3
  219. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  220. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  221. package/dist/runtime/locations/creation-operation-id.js +6 -4
  222. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  223. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  224. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  225. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  226. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  227. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  228. package/dist/runtime/locations/key-codec.js +3 -2
  229. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  230. package/dist/runtime/locations/lease-tracker.js +7 -11
  231. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  232. package/dist/runtime/locations/lifecycle.js +2 -31
  233. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  234. package/dist/runtime/locations/location-store-failure.js +7 -0
  235. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  236. package/dist/runtime/locations/location-store-pages.js +13 -0
  237. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  238. package/dist/runtime/locations/location-store-repository.js +303 -332
  239. package/dist/runtime/locations/relocation-blob.js +18 -5
  240. package/dist/runtime/locations/resolvers.d.ts +5 -5
  241. package/dist/runtime/locations/resolvers.js +37 -28
  242. package/dist/runtime/locations/runtime.d.ts +5 -4
  243. package/dist/runtime/locations/runtime.js +123 -92
  244. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  245. package/dist/runtime/locations/spot-location-claims.js +42 -1
  246. package/dist/runtime/messaging/payload-codec.js +26 -20
  247. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  248. package/dist/runtime/messaging/submission-result.js +48 -0
  249. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  250. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  251. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  252. package/dist/runtime/spots/index.d.ts +14 -20
  253. package/dist/runtime/spots/index.js +302 -176
  254. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  255. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  256. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  257. package/dist/runtime/spots/spot-activation-state.js +2 -2
  258. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  259. package/dist/runtime/spots/spot-activation.js +49 -32
  260. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  261. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  262. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  263. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  264. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  265. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  266. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  267. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  268. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  269. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  270. package/dist/runtime/spots/spot-context.d.ts +2 -2
  271. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  272. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  273. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  274. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  275. package/dist/runtime/spots/spot-manager-public.js +5 -4
  276. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  277. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  278. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  279. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  280. package/dist/runtime/spots/spot-outbound.js +9 -8
  281. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  282. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  283. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  284. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  285. package/dist/runtime/spots/spot-route-replies.js +3 -1
  286. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  287. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  288. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  289. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  290. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  291. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  292. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  293. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  294. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  295. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  296. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  297. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  298. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  299. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  300. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  301. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  302. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  303. package/dist/runtime/streams/bound-session-service.js +11 -1
  304. package/dist/runtime/streams/index.d.ts +14 -15
  305. package/dist/runtime/streams/index.js +20 -21
  306. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  307. package/dist/runtime/streams/managed-stream.js +17 -8
  308. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  309. package/dist/runtime/streams/protocol.d.ts +6 -33
  310. package/dist/runtime/streams/protocol.js +38 -110
  311. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  312. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  313. package/dist/runtime/streams/session-calls.d.ts +1 -1
  314. package/dist/runtime/streams/session-calls.js +5 -4
  315. package/dist/runtime/streams/session-context.d.ts +6 -6
  316. package/dist/runtime/streams/session-context.js +22 -4
  317. package/dist/runtime/streams/session-requests.js +2 -1
  318. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  319. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  320. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  321. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  322. package/dist/runtime/workers/index.d.ts +2 -2
  323. package/dist/runtime/workers/index.js +5 -4
  324. package/package.json +3 -3
  325. package/src/contracts/Common/CoreTypes.ts +7 -0
  326. package/src/contracts/Common/index.ts +1 -1
  327. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  328. package/src/contracts/Configuration/Registration.ts +92 -48
  329. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  330. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  331. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  332. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  333. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  334. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  335. package/src/contracts/Handlers/JsonContract.ts +14 -4
  336. package/src/contracts/Locations/Authority.ts +7 -3
  337. package/src/contracts/Locations/Options.ts +1 -1
  338. package/src/contracts/Locations/Stores.ts +14 -0
  339. package/src/contracts/Spots/Contracts.ts +1 -1
  340. package/src/internal.ts +14 -0
  341. package/src/nest-integration.ts +28 -10
  342. package/src/runtime/abort.ts +6 -5
  343. package/src/runtime/activation-admission.ts +2 -8
  344. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  345. package/src/runtime/actors/actor-client.ts +77 -204
  346. package/src/runtime/actors/actor-context.ts +39 -33
  347. package/src/runtime/actors/actor-handoff.ts +24 -22
  348. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  349. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  350. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  351. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  352. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  353. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  354. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  355. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  356. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  357. package/src/runtime/actors/bound-session-wire.ts +2 -8
  358. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  359. package/src/runtime/actors/index.ts +100 -79
  360. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  361. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  362. package/src/runtime/admission.ts +8 -1
  363. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  364. package/src/runtime/backend/contracts/index.ts +13 -29
  365. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  366. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  367. package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
  368. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  369. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  370. package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
  371. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  372. package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
  373. package/src/runtime/backend/raw-binding-port.ts +1 -1
  374. package/src/runtime/backend/runtime-values.ts +4 -1
  375. package/src/runtime/channels/channel-clients.ts +132 -85
  376. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  377. package/src/runtime/channels/channel-envelope.ts +58 -29
  378. package/src/runtime/channels/channel-outbound-operations.ts +10 -23
  379. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  380. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  381. package/src/runtime/channels/channel-runtime-manager.ts +6 -2
  382. package/src/runtime/channels/channel-socket-options.ts +8 -2
  383. package/src/runtime/channels/channel-socket-registry.ts +301 -192
  384. package/src/runtime/channels/channel-transports.ts +161 -112
  385. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  386. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  387. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  388. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  389. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  390. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  391. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  392. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  393. package/src/runtime/diagnostics/flow-context.ts +16 -2
  394. package/src/runtime/diagnostics/index.ts +27 -17
  395. package/src/runtime/diagnostics/message-flow.ts +15 -25
  396. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  397. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  398. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  399. package/src/runtime/disposal.ts +19 -0
  400. package/src/runtime/execution/index.ts +60 -20
  401. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  402. package/src/runtime/execution/state-lane.ts +142 -4
  403. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  404. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  405. package/src/runtime/foundation/operation-identity.ts +11 -5
  406. package/src/runtime/foundation/operation-registry.ts +33 -50
  407. package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
  408. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  409. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  410. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  411. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  412. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  413. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  414. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  415. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  416. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  417. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  418. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  419. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  420. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  421. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  422. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  423. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  424. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  425. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  426. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  427. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  428. package/src/runtime/framework-errors-internal.ts +380 -134
  429. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  430. package/src/runtime/host/actor-packet-relay.ts +57 -147
  431. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  432. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  433. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  434. package/src/runtime/host/application-job-queue.ts +28 -34
  435. package/src/runtime/host/bound-session-relay.ts +1 -2
  436. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  437. package/src/runtime/host/index.ts +327 -296
  438. package/src/runtime/host/instance-activation-authority.ts +89 -109
  439. package/src/runtime/host/location-runtime-owner.ts +4 -2
  440. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  441. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  442. package/src/runtime/host/remote-bound-session-relay.ts +8 -41
  443. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  444. package/src/runtime/host/runtime-shutdown.ts +17 -21
  445. package/src/runtime/host/service-relocation-control.ts +14 -1
  446. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  447. package/src/runtime/host/spot-address-transport.ts +73 -195
  448. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  449. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  450. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  451. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  452. package/src/runtime/locations/authority-key-codec.ts +7 -3
  453. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  454. package/src/runtime/locations/creation-operation-id.ts +6 -3
  455. package/src/runtime/locations/domain-store-contract.ts +12 -3
  456. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  457. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  458. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  459. package/src/runtime/locations/key-codec.ts +3 -2
  460. package/src/runtime/locations/lease-tracker.ts +8 -14
  461. package/src/runtime/locations/lifecycle.ts +13 -43
  462. package/src/runtime/locations/location-store-failure.ts +4 -0
  463. package/src/runtime/locations/location-store-pages.ts +18 -0
  464. package/src/runtime/locations/location-store-repository.ts +450 -478
  465. package/src/runtime/locations/relocation-blob.ts +17 -6
  466. package/src/runtime/locations/resolvers.ts +75 -49
  467. package/src/runtime/locations/runtime.ts +220 -110
  468. package/src/runtime/locations/spot-location-claims.ts +58 -1
  469. package/src/runtime/messaging/payload-codec.ts +35 -24
  470. package/src/runtime/messaging/submission-result.ts +57 -1
  471. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  472. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  473. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  474. package/src/runtime/spots/index.ts +433 -229
  475. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  476. package/src/runtime/spots/spot-activation-state.ts +2 -2
  477. package/src/runtime/spots/spot-activation.ts +67 -37
  478. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  479. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  480. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  481. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  482. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  483. package/src/runtime/spots/spot-context.ts +3 -3
  484. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  485. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  486. package/src/runtime/spots/spot-manager-public.ts +21 -17
  487. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  488. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  489. package/src/runtime/spots/spot-outbound.ts +45 -23
  490. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  491. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  492. package/src/runtime/spots/spot-route-replies.ts +6 -4
  493. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  494. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  495. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  496. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  497. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  498. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  499. package/src/runtime/spots/spot-timer.ts +3 -2
  500. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  501. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  502. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  503. package/src/runtime/streams/bound-session-service.ts +21 -1
  504. package/src/runtime/streams/index.ts +76 -64
  505. package/src/runtime/streams/managed-stream.ts +29 -10
  506. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  507. package/src/runtime/streams/protocol.ts +34 -88
  508. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  509. package/src/runtime/streams/session-calls.ts +6 -5
  510. package/src/runtime/streams/session-context.ts +54 -10
  511. package/src/runtime/streams/session-requests.ts +2 -1
  512. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  513. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  514. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  515. package/src/runtime/workers/index.ts +13 -12
  516. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  517. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  518. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  519. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  520. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  521. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,18 +1,16 @@
1
- import type { ActorRef, RoutingId, ZLinkActor, ZLinkActorJoinOperationId, ZLinkMessageSerializer, ZLinkSpot } from '../../contracts';
2
- import { ZLinkMessage } from '../../contracts';
3
- import type { ZLinkAuthoritySnapshot, ZLinkLocationOwnerToken } from '../locations/internal-location-contracts';
4
- import type { ZLinkAuthorityStore, ZLinkObjectCreationStore, ZLinkOwnerLeaseStore } from '../locations/internal-store-contracts';
1
+ import { type ActorRef, type RoutingId, type ZLinkActor, type ZLinkActorJoinOperationId, type ZLinkMessageSerializer, type ZLinkSpot, ZLinkMessage } from '../../contracts';
5
2
  import type { Message } from '../../contracts/Common/Message';
6
- import type { ZLinkBackendActorRef, ZLinkBackendMeshNode } from '../backend';
7
3
  import { type ZLinkActorHandoffCoordinator, type ZLinkActorHandoffReplayPreparation, type ZLinkActorRoutedJoinTransport, type ZLinkActorTransferRegistry, type ZLinkDeferredJoinCompletion, type ZLinkRemoteBoundSessionTarget } from '../actors';
4
+ import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult, ZLinkActorHandoffTerminalAcceptance, ZLinkActorHandoffTerminalAck } from '../actors/actor-handoff';
5
+ import { type ZLinkActorMessageFollowOwnerFence } from '../actors/actor-message-follow-context';
8
6
  import type { ZLinkActorRuntimeState } from '../actors/actor-runtime-state';
7
+ import type { ZLinkBackendActorRef, ZLinkBackendMeshNode } from '../backend';
8
+ import { type ServiceSessionRelocationRoute, type ServiceSessionRelocationSeal, type ServiceSessionRelocationSealed, type ServiceWireOperationId } from '../foundation/service-stateful-wire-codec';
9
9
  import type { ZLinkLocationLifecycle } from '../locations';
10
+ import type { ZLinkAuthoritySnapshot, ZLinkLocationOwnerToken } from '../locations/internal-location-contracts';
11
+ import type { ZLinkAuthorityStore, ZLinkObjectCreationStore, ZLinkOwnerLeaseStore } from '../locations/internal-store-contracts';
10
12
  import type { DefaultZLinkSpotManager } from '../spots';
11
13
  import type { ZLinkSpotRouteResolver, ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
12
- import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult, ZLinkActorHandoffTerminalAcceptance, ZLinkActorHandoffTerminalAck } from '../actors/actor-handoff';
13
- import type { ZLinkNativeActorJoinSnapshot } from '../spots/spot-runtime-ports';
14
- import { type ZLinkActorMessageFollowOwnerFence } from '../actors/actor-message-follow-context';
15
- import type { ServiceSessionRelocationRoute, ServiceSessionRelocationSeal, ServiceSessionRelocationSealed, ServiceWireOperationId } from '../foundation/service-stateful-wire-codec';
16
14
  interface ZLinkSessionRelocationWirePort {
17
15
  requestSessionRelocationSeal(meshName: string, targetNodeRid: RoutingId, request: ServiceSessionRelocationSeal, signal?: AbortSignal): Promise<ServiceSessionRelocationSealed>;
18
16
  sendSessionRelocationRoute(meshName: string, targetNodeRid: RoutingId, request: ServiceSessionRelocationRoute, signal?: AbortSignal): Promise<void>;
@@ -28,7 +26,7 @@ export interface ZLinkActorTransferRuntimeActorManager {
28
26
  readonly actor: ZLinkActor;
29
27
  readonly actorRef: ActorRef;
30
28
  }>;
31
- prepareRelocationActor(actorId: string, actorType: string, objectGeneration: bigint, authorityOwnerGeneration: bigint, spotId: RoutingId, spotGeneration: bigint, membershipEpoch: bigint, signal?: AbortSignal, transfer?: {
29
+ prepareRelocationActor(actorId: string, actorType: string, objectGeneration: bigint, authorityOwnerGeneration: bigint, spotId: RoutingId | undefined, spotGeneration: bigint, membershipEpoch: bigint, signal?: AbortSignal, transfer?: {
32
30
  readonly adapterKey: string;
33
31
  readonly state: ZLinkMessage;
34
32
  }): Promise<ZLinkActor>;
@@ -65,7 +63,6 @@ export interface ZLinkActorTransferRuntimeOptions {
65
63
  }
66
64
  export declare class ZLinkActorTransferRuntime {
67
65
  private readonly options;
68
- private readonly sourceDepartureTasks;
69
66
  private readonly coreSourceLeaves;
70
67
  private readonly activeDeferredJoinTerminals;
71
68
  private readonly deferredJoinTerminals;
@@ -76,12 +73,12 @@ export declare class ZLinkActorTransferRuntime {
76
73
  cancelDeferredActorHandoff(actor: ZLinkActor, state: ZLinkActorRuntimeState): Promise<void>;
77
74
  prepareDeferredJoinAccepted(actorId: string, operationId: ZLinkActorJoinOperationId, actorRef: ActorRef, rawReply: Uint8Array, replyContentType?: string): ZLinkDeferredJoinCompletion;
78
75
  /**
79
- * Runs the Accepted completion callback once in the target Actor mailbox.
76
+ * Runs the completion callback once in the target Actor mailbox.
80
77
  * A repeated delivery of the same OperationId in this process observes the
81
78
  * first terminal (completion idempotency only).
82
79
  */
83
- deliverDeferredJoinAccepted(completion: ZLinkDeferredJoinCompletion, actor: ZLinkActor, actorRef: ActorRef, submitMailbox: <T>(operation: () => Promise<T>) => Promise<T>, signal?: AbortSignal): Promise<void>;
84
- private deliverDeferredJoinAcceptedCore;
80
+ deliverDeferredJoinCompletion(completion: ZLinkDeferredJoinCompletion, actor: ZLinkActor, actorRef: ActorRef, submitMailbox: <T>(operation: () => Promise<T>) => Promise<T>, signal?: AbortSignal): Promise<void>;
81
+ private deliverDeferredJoinCompletionCore;
85
82
  private prepareSourceActorLeave;
86
83
  private restoreSourceActor;
87
84
  private beginSourceActorMove;
@@ -130,7 +127,6 @@ export declare class ZLinkActorTransferRuntime {
130
127
  }>;
131
128
  commitRoutedActorAuthority(actor: ZLinkActor, sourceActorRef: ActorRef, transferId: string, spotId: RoutingId, spotGeneration: bigint, membershipEpoch: bigint, deadlineUnixMs: number, signal?: AbortSignal): Promise<ZLinkAuthoritySnapshot>;
132
129
  private readActorAuthorityForRelocation;
133
- rememberRoutedActorTransferTarget(actorId: string, target: ZLinkRemoteBoundSessionTarget | undefined): void;
134
130
  commitRoutedActor(actor: ZLinkActor, spotId: RoutingId, spot: ZLinkSpot): void;
135
131
  bindRoutedActorRef(actor: ZLinkActor, actorRef: ActorRef): void;
136
132
  claimRoutedActorLocation(actor: ZLinkActor, spotId: RoutingId, spotMeshName: string, joinedLocation?: {
@@ -138,11 +134,13 @@ export declare class ZLinkActorTransferRuntime {
138
134
  readonly membershipEpoch: bigint;
139
135
  }): Promise<void>;
140
136
  private installNativeActorPacketTarget;
141
- claimNativeActorLocation(actor: ZLinkActor, spotId: RoutingId, spotMeshName: string): Promise<ZLinkNativeActorJoinSnapshot>;
142
- publishRoutedActorOwnership(actor: ZLinkActor): Promise<void>;
137
+ /**
138
+ * Publishes the committed route of the Session seal that the relocation
139
+ * operation carried to this target (command 44, Session–Actor binding §8.2).
140
+ */
141
+ publishRoutedActorOwnership(actor: ZLinkActor, sealedSession: ZLinkRemoteBoundSessionTarget | undefined): Promise<void>;
143
142
  openRoutedActorSession(_actor: ZLinkActor): Promise<void>;
144
143
  clearRoutedActor(actor: ZLinkActor): void;
145
- rollbackNativeActorJoin(actor: ZLinkActor, snapshot: ZLinkNativeActorJoinSnapshot): Promise<void>;
146
144
  rollbackRoutedActor(actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
147
145
  actorEntryNodeRid(actor: ZLinkActor): RoutingId | undefined;
148
146
  private requireActorManager;
@@ -4,16 +4,18 @@ exports.ZLinkActorTransferRuntime = void 0;
4
4
  exports.committedActorOwnerFence = committedActorOwnerFence;
5
5
  const node_crypto_1 = require("node:crypto");
6
6
  const contracts_1 = require("../../contracts");
7
- const runtime_message_1 = require("../backend/runtime-message");
8
- const authority_key_codec_1 = require("../locations/authority-key-codec");
9
7
  const actors_1 = require("../actors");
10
- const actor_retry_delay_1 = require("../actors/actor-retry-delay");
11
- const routing_id_1 = require("../routing-id");
12
- const payload_codec_1 = require("../messaging/payload-codec");
13
8
  const actor_message_follow_context_1 = require("../actors/actor-message-follow-context");
14
- const service_stateful_wire_codec_1 = require("../foundation/service-stateful-wire-codec");
9
+ const runtime_message_1 = require("../backend/runtime-message");
10
+ const diagnostics_1 = require("../diagnostics");
15
11
  const operation_identity_1 = require("../foundation/operation-identity");
12
+ const service_stateful_wire_codec_1 = require("../foundation/service-stateful-wire-codec");
13
+ const authority_key_codec_1 = require("../locations/authority-key-codec");
14
+ const payload_codec_1 = require("../messaging/payload-codec");
15
+ const routing_id_1 = require("../routing-id");
16
16
  const bounded_replay_map_1 = require("./bounded-replay-map");
17
+ const TRANSFER_RESOLUTION_TIMEOUT_MS = 5_000;
18
+ const TRANSFER_POLL_INTERVAL_MS = 10;
17
19
  const DEFERRED_JOIN_TERMINAL_CAPACITY = 4096;
18
20
  /** Converts only committed actor authority evidence into a Message Follow fence. */
19
21
  function committedActorOwnerFence(actorId, targetActorRef, authority) {
@@ -55,7 +57,6 @@ function createHandoffReplayGate() {
55
57
  }
56
58
  class ZLinkActorTransferRuntime {
57
59
  options;
58
- sourceDepartureTasks = new Map();
59
60
  coreSourceLeaves = new Map();
60
61
  // Spot Actor membership sections 4-5: Join completion idempotency is
61
62
  // process-local. These maps end with the process; nothing is replayed.
@@ -90,11 +91,11 @@ class ZLinkActorTransferRuntime {
90
91
  return (0, actors_1.createDeferredJoinCompletion)(actorId, operationId, actorRef, rawReply, replyContentType);
91
92
  }
92
93
  /**
93
- * Runs the Accepted completion callback once in the target Actor mailbox.
94
+ * Runs the completion callback once in the target Actor mailbox.
94
95
  * A repeated delivery of the same OperationId in this process observes the
95
96
  * first terminal (completion idempotency only).
96
97
  */
97
- async deliverDeferredJoinAccepted(completion, actor, actorRef, submitMailbox, signal) {
98
+ async deliverDeferredJoinCompletion(completion, actor, actorRef, submitMailbox, signal) {
98
99
  const terminalKey = deferredJoinTerminalKey(completion);
99
100
  if (this.deferredJoinTerminals.get(terminalKey) !== undefined) {
100
101
  this.deferredJoinTerminals.touch(terminalKey);
@@ -103,7 +104,7 @@ class ZLinkActorTransferRuntime {
103
104
  const active = this.activeDeferredJoinTerminals.get(terminalKey);
104
105
  if (active !== undefined)
105
106
  return await waitForOperation(active, signal);
106
- const delivery = this.deliverDeferredJoinAcceptedCore(completion, actor, actorRef, submitMailbox);
107
+ const delivery = this.deliverDeferredJoinCompletionCore(completion, actor, actorRef, submitMailbox);
107
108
  this.activeDeferredJoinTerminals.set(terminalKey, delivery);
108
109
  void delivery.then(() => {
109
110
  this.deferredJoinTerminals.remember(terminalKey, true);
@@ -117,7 +118,7 @@ class ZLinkActorTransferRuntime {
117
118
  });
118
119
  return await waitForOperation(delivery, signal);
119
120
  }
120
- async deliverDeferredJoinAcceptedCore(completion, actor, actorRef, submitMailbox) {
121
+ async deliverDeferredJoinCompletionCore(completion, actor, actorRef, submitMailbox) {
121
122
  const targetActorRef = this.options
122
123
  .actorManager()
123
124
  ?.getState(actor.context.actorId)?.nativeActorRef;
@@ -131,6 +132,14 @@ class ZLinkActorTransferRuntime {
131
132
  `actor ${currentActorRef.actorId}/${currentActorRef.objectGeneration}).`);
132
133
  }
133
134
  await submitMailbox(async () => {
135
+ if (completion.status === 'failed') {
136
+ await actor.onJoinCompleted?.({
137
+ status: 'failed',
138
+ operationId: completion.operationId,
139
+ kind: completion.kind
140
+ });
141
+ return;
142
+ }
134
143
  await actor.onJoinCompleted?.({
135
144
  status: 'accepted',
136
145
  operationId: completion.operationId,
@@ -173,15 +182,19 @@ class ZLinkActorTransferRuntime {
173
182
  }
174
183
  try {
175
184
  if (state.spotId !== undefined) {
176
- relocationDebug('source_actor_move.await_spot_transfer', {
177
- actorId: actor.context.actorId,
178
- spotId: String(state.spotId)
179
- });
185
+ if ((0, diagnostics_1.isRelocationDebugEnabled)()) {
186
+ (0, diagnostics_1.relocationDebug)('source_actor_move.await_spot_transfer', {
187
+ actorId: actor.context.actorId,
188
+ spotId: String(state.spotId)
189
+ });
190
+ }
180
191
  await this.options.spotManager()?.beginActorTransfer(state.spotId, actor.context.actorId);
181
- relocationDebug('source_actor_move.spot_transfer_complete', {
182
- actorId: actor.context.actorId,
183
- spotId: String(state.spotId)
184
- });
192
+ if ((0, diagnostics_1.isRelocationDebugEnabled)()) {
193
+ (0, diagnostics_1.relocationDebug)('source_actor_move.spot_transfer_complete', {
194
+ actorId: actor.context.actorId,
195
+ spotId: String(state.spotId)
196
+ });
197
+ }
185
198
  }
186
199
  }
187
200
  catch (error) {
@@ -268,12 +281,12 @@ class ZLinkActorTransferRuntime {
268
281
  : this.options.metrics?.startRelocation(state.meshName, 'actor', this.options.actorTransferRegistry.policy(state.actorType));
269
282
  const sourceSpotId = state.spotId;
270
283
  let sourceLeaveStarted = false;
271
- let sealId;
284
+ // The relocation operation owns its Session seal; the Actor keeps only
285
+ // its current binding (Session–Actor binding §8.1).
286
+ let sealedSession;
272
287
  try {
273
- if (state.remoteBoundSessionTarget !== undefined) {
274
- sealId = (0, node_crypto_1.randomUUID)();
275
- const sealedTarget = await this.sealBoundSessionRoute(actor, state, signal, relocation);
276
- state.setRemoteBoundSessionTarget(sealedTarget);
288
+ if (state.boundSession !== undefined) {
289
+ sealedSession = await this.sealBoundSessionRoute(actor, state, signal, relocation);
277
290
  this.options.actorHandoff.sealConnectionBoundIngress(actor.context.actorId);
278
291
  }
279
292
  const transfer = await this.options.actorTransferRegistry.transferOut(actor, state.actorType, signal);
@@ -349,8 +362,7 @@ class ZLinkActorTransferRuntime {
349
362
  // transition. Keep the source shell available for that
350
363
  // callback, then release the old location and registry entry.
351
364
  void sourceLeaveCompletion.then(() => this.scheduleSourceDeparture(actor, sourceSpotId, true), (error) => {
352
- this.options.reportPostCommitError?.(error);
353
- this.scheduleSourceDeparture(actor, sourceSpotId, true);
365
+ this.scheduleSourceDeparture(actor, sourceSpotId, true, [error]);
354
366
  });
355
367
  }
356
368
  else {
@@ -368,8 +380,8 @@ class ZLinkActorTransferRuntime {
368
380
  try {
369
381
  await this.cancelSourceActorMove(actor, state, deferredJoin, replayGate.start);
370
382
  await this.restoreSourceActor(actor, sourceSpotId);
371
- if (sealId !== undefined) {
372
- await this.observeBoundSessionSealAbort(actor, state);
383
+ if (sealedSession !== undefined) {
384
+ await this.observeBoundSessionSealAbort(actor, state, sealedSession);
373
385
  }
374
386
  }
375
387
  finally {
@@ -385,8 +397,8 @@ class ZLinkActorTransferRuntime {
385
397
  await this.cancelSourceActorMove(actor, state, deferredJoin, replayGate.start);
386
398
  if (sourceLeaveStarted)
387
399
  await this.restoreSourceActor(actor, sourceSpotId);
388
- if (sealId !== undefined) {
389
- await this.observeBoundSessionSealAbort(actor, state);
400
+ if (sealedSession !== undefined) {
401
+ await this.observeBoundSessionSealAbort(actor, state, sealedSession);
390
402
  }
391
403
  }
392
404
  catch (rollbackError) {
@@ -399,10 +411,12 @@ class ZLinkActorTransferRuntime {
399
411
  }
400
412
  }
401
413
  async prepareMaintenanceSession(actor, state, signal, manageMembership = true, relocation) {
402
- relocationDebug('maintenance_session.begin', {
403
- actorId: actor.context.actorId,
404
- spotId: state.spotId === undefined ? undefined : String(state.spotId)
405
- });
414
+ if ((0, diagnostics_1.isRelocationDebugEnabled)()) {
415
+ (0, diagnostics_1.relocationDebug)('maintenance_session.begin', {
416
+ actorId: actor.context.actorId,
417
+ spotId: state.spotId === undefined ? undefined : String(state.spotId)
418
+ });
419
+ }
406
420
  if (manageMembership) {
407
421
  await this.beginSourceActorMove(actor, state);
408
422
  }
@@ -410,21 +424,22 @@ class ZLinkActorTransferRuntime {
410
424
  state.beginMove();
411
425
  this.options.actorHandoff.begin(actor.context.actorId, requireSourceObjectGeneration(actor.context.actorId, state));
412
426
  }
413
- relocationDebug('maintenance_session.source_move_complete', {
414
- actorId: actor.context.actorId
415
- });
416
- let sealId;
427
+ if ((0, diagnostics_1.isRelocationDebugEnabled)()) {
428
+ (0, diagnostics_1.relocationDebug)('maintenance_session.source_move_complete', {
429
+ actorId: actor.context.actorId
430
+ });
431
+ }
432
+ let sealedSession;
417
433
  try {
418
- if (state.remoteBoundSessionTarget !== undefined) {
419
- sealId = (0, node_crypto_1.randomUUID)();
420
- state.setRemoteBoundSessionTarget(await this.sealBoundSessionRoute(actor, state, signal, relocation));
434
+ if (state.boundSession !== undefined) {
435
+ sealedSession = await this.sealBoundSessionRoute(actor, state, signal, relocation);
421
436
  this.options.actorHandoff.sealConnectionBoundIngress(actor.context.actorId);
422
437
  }
423
438
  const handoffBacklog = this.options.actorHandoff.snapshot(actor.context.actorId);
424
439
  let terminal = 'prepared';
425
440
  let replayResults = [];
426
441
  return {
427
- target: state.remoteBoundSessionTarget,
442
+ target: sealedSession,
428
443
  handoffBacklog,
429
444
  takeRelocationRelay: () => this.options.actorHandoff.takeRelocationRelay(actor.context.actorId),
430
445
  setReplayResults: (results) => {
@@ -432,17 +447,36 @@ class ZLinkActorTransferRuntime {
432
447
  replayResults = [...results];
433
448
  },
434
449
  commit: async (target, targetActorRef, targetOwnerFence) => {
435
- if (terminal === 'rolledBack')
450
+ if (terminal !== 'prepared')
436
451
  return;
437
- if (terminal === 'prepared') {
452
+ terminal = 'committed';
453
+ const failures = [];
454
+ try {
438
455
  this.options.actorHandoff.complete(actor.context.actorId, target, targetActorRef, replayResults, targetOwnerFence);
456
+ }
457
+ catch (error) {
458
+ failures.push(error);
459
+ }
460
+ try {
439
461
  if (manageMembership && state.spotId !== undefined) {
440
462
  await this.options
441
463
  .spotManager()
442
464
  ?.commitActorLeaveAfterTransfer(state.spotId, actor.context.actorId);
443
465
  }
466
+ }
467
+ catch (error) {
468
+ failures.push(error);
469
+ }
470
+ try {
444
471
  state.endMove();
445
- terminal = 'committed';
472
+ }
473
+ catch (error) {
474
+ failures.push(error);
475
+ }
476
+ if (failures.length > 0) {
477
+ throw failures.length === 1
478
+ ? failures[0]
479
+ : new AggregateError(failures, 'Actor source retirement failed.');
446
480
  }
447
481
  },
448
482
  discard: (reason) => {
@@ -469,8 +503,8 @@ class ZLinkActorTransferRuntime {
469
503
  state.endMove();
470
504
  }
471
505
  }
472
- if (sealId !== undefined) {
473
- await this.observeBoundSessionSealAbort(actor, state);
506
+ if (sealedSession !== undefined) {
507
+ await this.observeBoundSessionSealAbort(actor, state, sealedSession);
474
508
  }
475
509
  }
476
510
  finally {
@@ -504,8 +538,8 @@ class ZLinkActorTransferRuntime {
504
538
  state.endMove();
505
539
  }
506
540
  }
507
- if (sourceRestored && sealId !== undefined) {
508
- await this.observeBoundSessionSealAbort(actor, state);
541
+ if (sourceRestored && sealedSession !== undefined) {
542
+ await this.observeBoundSessionSealAbort(actor, state, sealedSession);
509
543
  }
510
544
  }
511
545
  finally {
@@ -557,7 +591,7 @@ class ZLinkActorTransferRuntime {
557
591
  return this.options.actorHandoff.acceptRelocatedTerminalRelay(operationId, replyRouteId, undefined, result, sourceNodeRid, targetAuthorityOwnerGeneration);
558
592
  }
559
593
  async sealBoundSessionRoute(actor, state, signal, relocation) {
560
- const target = state.remoteBoundSessionTarget;
594
+ const target = state.boundSession;
561
595
  const actorRef = state.nativeActorRef;
562
596
  if (target === undefined ||
563
597
  actorRef === undefined ||
@@ -637,12 +671,9 @@ class ZLinkActorTransferRuntime {
637
671
  serviceWireRelocation: { relocation, coordinator, session }
638
672
  };
639
673
  }
640
- async abortBoundSessionRouteSeal(actor, state, targetOverride) {
641
- const target = targetOverride ??
642
- (0, actors_1.preferredRemoteBoundSessionTarget)(state.remoteBoundSessionTarget, state.boundSessionTransferTarget);
674
+ async abortBoundSessionRouteSeal(actor, state, target) {
643
675
  const actorRef = state.nativeActorRef;
644
- if (target === undefined ||
645
- actorRef === undefined ||
676
+ if (actorRef === undefined ||
646
677
  target.bindingGeneration === undefined ||
647
678
  target.previousAuthorityOwnerGeneration === undefined ||
648
679
  target.previousOwnerLeaseGeneration === undefined) {
@@ -673,9 +704,9 @@ class ZLinkActorTransferRuntime {
673
704
  }
674
705
  await serviceWire.sendSessionRelocationRoute(target.routerChannelId, target.targetNodeRid, route, this.options.shutdownSignal?.());
675
706
  }
676
- async observeBoundSessionSealAbort(actor, state) {
707
+ async observeBoundSessionSealAbort(actor, state, sealedSession) {
677
708
  try {
678
- await this.abortBoundSessionRouteSeal(actor, state);
709
+ await this.abortBoundSessionRouteSeal(actor, state, sealedSession);
679
710
  }
680
711
  catch (error) {
681
712
  try {
@@ -711,44 +742,52 @@ class ZLinkActorTransferRuntime {
711
742
  });
712
743
  return { completion: promise, submitted };
713
744
  }
714
- scheduleSourceDeparture(actor, sourceSpotId, releaseLocation) {
715
- if (this.sourceDepartureTasks.has(actor.context.actorId))
716
- return;
717
- const task = this.finishSourceDeparture(actor, sourceSpotId, releaseLocation).finally(() => this.sourceDepartureTasks.delete(actor.context.actorId));
718
- this.sourceDepartureTasks.set(actor.context.actorId, task);
745
+ scheduleSourceDeparture(actor, sourceSpotId, releaseLocation, failures = []) {
746
+ void this.finishSourceDeparture(actor, sourceSpotId, releaseLocation, failures);
719
747
  }
720
- async finishSourceDeparture(actor, sourceSpotId, releaseLocation) {
721
- const retry = new actor_retry_delay_1.ZLinkActorRetryDelay();
722
- while (this.options.shutdownSignal?.()?.aborted !== true) {
748
+ async finishSourceDeparture(actor, sourceSpotId, releaseLocation, failures) {
749
+ if (sourceSpotId !== undefined) {
723
750
  try {
724
- if (sourceSpotId !== undefined) {
751
+ await this.options
752
+ .spotManager()
753
+ ?.commitActorLeaveAfterTransfer(sourceSpotId, actor.context.actorId);
754
+ }
755
+ catch (error) {
756
+ failures.push(error);
757
+ }
758
+ }
759
+ if (releaseLocation) {
760
+ try {
761
+ const state = this.options.actorManager()?.getState(actor.context.actorId);
762
+ if (state?.actorType !== undefined && state.ownsLocation) {
725
763
  await this.options
726
- .spotManager()
727
- ?.commitActorLeaveAfterTransfer(sourceSpotId, actor.context.actorId);
764
+ .locationLifecycle()
765
+ ?.releaseActor(state.actorType, actor.context.actorId);
766
+ state.markLocationReleased();
728
767
  }
729
- if (releaseLocation) {
730
- const state = this.options.actorManager()?.getState(actor.context.actorId);
731
- if (state?.actorType !== undefined && state.ownsLocation) {
732
- await this.options
733
- .locationLifecycle()
734
- ?.releaseActor(state.actorType, actor.context.actorId);
735
- state.markLocationReleased();
736
- }
737
- // Message Follow owns the bounded stale route after the native leave.
738
- // The source Actor shell must therefore be removed from the process
739
- // registry so a later relocation can materialize the same Actor ID on
740
- // this node without colliding with its previous incarnation.
741
- await this.options.actorManager()?.completeCoreRelocationSource(actor.context.actorId);
742
- }
743
- this.options.onSourceDepartureCompleted?.(actor.context.actorId);
744
- return;
745
768
  }
746
769
  catch (error) {
747
- this.options.reportPostCommitError?.(error);
748
- if (!(await retry.wait(this.options.shutdownSignal?.())))
749
- return;
770
+ failures.push(error);
750
771
  }
751
772
  }
773
+ try {
774
+ // Message Follow keeps its route separately from the retired application instance.
775
+ await this.options.actorManager()?.completeCoreRelocationSource(actor.context.actorId);
776
+ }
777
+ catch (error) {
778
+ failures.push(error);
779
+ }
780
+ try {
781
+ this.options.onSourceDepartureCompleted?.(actor.context.actorId);
782
+ }
783
+ catch (error) {
784
+ failures.push(error);
785
+ }
786
+ if (failures.length > 0) {
787
+ this.options.reportPostCommitError?.(failures.length === 1
788
+ ? failures[0]
789
+ : new AggregateError(failures, 'Actor source retirement failed.'));
790
+ }
752
791
  }
753
792
  async getOrCreateRoutedActor(actorId, actorType, actorRef, remoteBoundSessionTarget, actorCreateRequest, signal) {
754
793
  const actorManager = this.requireActorManager('Routed actor join requires ZLINK_ACTOR_MANAGER.');
@@ -763,7 +802,9 @@ class ZLinkActorTransferRuntime {
763
802
  }
764
803
  if (actorRef !== undefined) {
765
804
  state.setNativeActorRef(actorRef);
766
- state.setRemoteBoundSessionTarget(remoteBoundSessionTarget);
805
+ if (remoteBoundSessionTarget !== undefined) {
806
+ state.installBoundSessionBinding(remoteBoundSessionTarget);
807
+ }
767
808
  return { actor, actorRef: actorRef };
768
809
  }
769
810
  return { actor, actorRef: state.ensureNativeActorRef(this.options.primaryMeshNode()) };
@@ -777,12 +818,10 @@ class ZLinkActorTransferRuntime {
777
818
  }
778
819
  if (actorEntryNodeRid !== undefined)
779
820
  state.setEntryNodeRid(actorEntryNodeRid);
780
- state.setBoundSessionTransferTarget(remoteBoundSessionTarget);
821
+ // The relocation delivers the binding it carried; the target installs it
822
+ // through the one install rule (Session–Actor binding §6, §8).
781
823
  if (remoteBoundSessionTarget !== undefined) {
782
- state.setRemoteBoundSessionTarget((0, actors_1.mergeRemoteBoundSessionTarget)(remoteBoundSessionTarget, state.remoteBoundSessionTarget));
783
- }
784
- if (remoteBoundSessionTarget?.bindingGeneration !== undefined) {
785
- state.setBoundSessionBindingGeneration(remoteBoundSessionTarget.bindingGeneration);
824
+ state.installBoundSessionBinding(remoteBoundSessionTarget);
786
825
  }
787
826
  return {
788
827
  actor: materialized.actor,
@@ -921,24 +960,11 @@ class ZLinkActorTransferRuntime {
921
960
  return undefined;
922
961
  }
923
962
  }
924
- rememberRoutedActorTransferTarget(actorId, target) {
925
- if (target === undefined)
926
- return;
927
- const state = this.options.actorManager()?.getState(actorId);
928
- if (state === undefined) {
929
- return;
930
- }
931
- state.setBoundSessionTransferTarget(target);
932
- state.setRemoteBoundSessionTarget((0, actors_1.mergeRemoteBoundSessionTarget)(target, state.remoteBoundSessionTarget));
933
- if (target.bindingGeneration !== undefined) {
934
- state.setBoundSessionBindingGeneration(target.bindingGeneration);
935
- }
936
- }
937
963
  commitRoutedActor(actor, spotId, spot) {
938
964
  const state = this.options.actorManager()?.getState(actor.context.actorId);
939
965
  state?.setJoinedSpot(spotId, spot);
940
966
  const actorRef = state?.nativeActorRef;
941
- const binding = state?.boundSessionTransferTarget;
967
+ const binding = state?.boundSession;
942
968
  if (actorRef !== undefined &&
943
969
  binding?.sessionNodeRid !== undefined &&
944
970
  binding.sessionRid !== undefined &&
@@ -982,7 +1008,7 @@ class ZLinkActorTransferRuntime {
982
1008
  (0, routing_id_1.encodeRoutingIdStorageHex)(spotId))) {
983
1009
  throw new Error(`Actor '${actor.context.actorId}' Core location does not match the committed target SPOT.`);
984
1010
  }
985
- const deadline = performance.now() + 5_000;
1011
+ const deadline = performance.now() + TRANSFER_RESOLUTION_TIMEOUT_MS;
986
1012
  const ownerNodeGeneration = node.status().lifecycleGeneration;
987
1013
  if (ownerNodeGeneration <= 0n) {
988
1014
  throw new Error(`Actor '${actor.context.actorId}' owner MeshNode has no valid lifecycle generation.`);
@@ -1006,7 +1032,7 @@ class ZLinkActorTransferRuntime {
1006
1032
  if (claim.status !== 'conflict' || performance.now() >= deadline) {
1007
1033
  break;
1008
1034
  }
1009
- await new Promise((resolve) => setTimeout(resolve, 10));
1035
+ await new Promise((resolve) => setTimeout(resolve, TRANSFER_POLL_INTERVAL_MS));
1010
1036
  }
1011
1037
  if (claim.status === 'conflict') {
1012
1038
  throw new Error(`Actor '${actor.context.actorId}' target location takeover was rejected.`);
@@ -1032,78 +1058,25 @@ class ZLinkActorTransferRuntime {
1032
1058
  }
1033
1059
  state.setRemoteActorPacketTarget(target);
1034
1060
  }
1035
- async claimNativeActorLocation(actor, spotId, spotMeshName) {
1036
- const state = this.options.actorManager()?.getState(actor.context.actorId);
1037
- const previousLocation = this.options
1038
- .locationLifecycle()
1039
- ?.actorLocationSnapshot(actor.context.actorId);
1040
- const snapshot = {
1041
- spotId: state?.spotId,
1042
- spot: state?.spot,
1043
- locationSpotId: previousLocation?.spotId,
1044
- spotMeshName: previousLocation?.meshName,
1045
- actorRef: previousLocation?.actorRef,
1046
- spotGeneration: previousLocation?.spotGeneration,
1047
- membershipEpoch: previousLocation?.membershipEpoch,
1048
- ownerNodeGeneration: previousLocation?.ownerNodeGeneration
1049
- };
1050
- await this.claimRoutedActorLocation(actor, spotId, spotMeshName);
1051
- return snapshot;
1052
- }
1053
- async publishRoutedActorOwnership(actor) {
1061
+ /**
1062
+ * Publishes the committed route of the Session seal that the relocation
1063
+ * operation carried to this target (command 44, Session–Actor binding §8.2).
1064
+ */
1065
+ async publishRoutedActorOwnership(actor, sealedSession) {
1054
1066
  const state = this.options.actorManager()?.getState(actor.context.actorId);
1055
1067
  const actorRef = state?.nativeActorRef;
1056
1068
  const generation = state?.locationGeneration;
1057
1069
  if (state === undefined || actorRef === undefined || generation === undefined)
1058
1070
  return;
1059
- const boundSessionTarget = (0, actors_1.preferredRemoteBoundSessionTarget)(state.remoteBoundSessionTarget, state.boundSessionTransferTarget);
1060
- if (boundSessionTarget?.serviceWireRelocation === undefined)
1071
+ if (sealedSession?.serviceWireRelocation === undefined)
1061
1072
  return;
1062
- await this.publishBoundSessionOwnership(actor.context.actorId, actorRef, generation, boundSessionTarget, state.ownerLeaseGeneration);
1073
+ await this.publishBoundSessionOwnership(actor.context.actorId, actorRef, generation, sealedSession, state.ownerLeaseGeneration);
1063
1074
  }
1064
1075
  async openRoutedActorSession(_actor) { }
1065
1076
  clearRoutedActor(actor) {
1066
1077
  this.options.actorManager()?.getState(actor.context.actorId)?.clearJoinedSpot();
1067
1078
  this.options.clearRemoteActorPacketTarget(actor.context.actorId);
1068
1079
  }
1069
- async rollbackNativeActorJoin(actor, snapshot) {
1070
- const state = this.options.actorManager()?.getState(actor.context.actorId);
1071
- const actorType = state?.actorType;
1072
- const lifecycle = this.options.locationLifecycle();
1073
- if (snapshot.spotId === undefined)
1074
- state?.clearJoinedSpot();
1075
- else
1076
- state?.setJoinedSpot(snapshot.spotId, snapshot.spot);
1077
- if (state?.ownsLocation !== true || actorType === undefined || lifecycle === undefined)
1078
- return;
1079
- if (snapshot.spotId === undefined) {
1080
- if (snapshot.locationSpotId === undefined ||
1081
- snapshot.spotGeneration === undefined ||
1082
- snapshot.membershipEpoch === undefined ||
1083
- snapshot.ownerNodeGeneration === undefined) {
1084
- throw new Error(`Actor '${actor.context.actorId}' cannot restore its Entry SPOT location without its exact generation fields.`);
1085
- }
1086
- await lifecycle.notifyActorLeftSpot(actorType, actor.context.actorId, snapshot.locationSpotId, snapshot.spotGeneration, snapshot.membershipEpoch, snapshot.ownerNodeGeneration);
1087
- return;
1088
- }
1089
- if (snapshot.actorRef === undefined) {
1090
- throw new Error(`Actor '${actor.context.actorId}' cannot restore its previous SPOT location without a native ref.`);
1091
- }
1092
- if (snapshot.spotMeshName === undefined ||
1093
- snapshot.spotGeneration === undefined ||
1094
- snapshot.membershipEpoch === undefined ||
1095
- snapshot.ownerNodeGeneration === undefined) {
1096
- throw new Error(`Actor '${actor.context.actorId}' cannot restore its previous SPOT location without its exact generation fields.`);
1097
- }
1098
- const restored = await lifecycle.takeoverActorJoinedSpot(actorType, actor.context.actorId, snapshot.actorRef, snapshot.spotMeshName, snapshot.spotId, snapshot.spotGeneration, snapshot.membershipEpoch, snapshot.ownerNodeGeneration, async () => state.clearAfterDestroy());
1099
- if (restored.status === 'conflict') {
1100
- throw new Error(`Actor '${actor.context.actorId}' previous SPOT location could not be restored.`);
1101
- }
1102
- if (restored.generation !== undefined)
1103
- state.setLocationGeneration(restored.generation);
1104
- if (restored.claimed !== undefined)
1105
- state.setOwnerLeaseGeneration(restored.claimed.leaseGeneration);
1106
- }
1107
1080
  async rollbackRoutedActor(actor, signal) {
1108
1081
  const manager = this.options.actorManager();
1109
1082
  const state = manager?.getState(actor.context.actorId);
@@ -1117,7 +1090,6 @@ class ZLinkActorTransferRuntime {
1117
1090
  }
1118
1091
  catch (error) {
1119
1092
  locationError = error;
1120
- void lifecycle.releaseActorEventually(actorType, actor.context.actorId);
1121
1093
  }
1122
1094
  }
1123
1095
  try {
@@ -1196,11 +1168,6 @@ class ZLinkActorTransferRuntime {
1196
1168
  }
1197
1169
  }
1198
1170
  exports.ZLinkActorTransferRuntime = ZLinkActorTransferRuntime;
1199
- function relocationDebug(marker, detail) {
1200
- if (process.env.ZLINK_DEBUG_FRAMEWORK_RELOCATION !== '1')
1201
- return;
1202
- console.error('[zlink.runtime.relocation]', marker, detail);
1203
- }
1204
1171
  function deferredJoinTerminalKey(completion) {
1205
1172
  return (`${completion.actor.actorId}:${completion.actor.objectGeneration.toString()}:` +
1206
1173
  (0, operation_identity_1.operationIdentityKey)(completion.operationId));
@@ -1243,7 +1210,7 @@ async function waitForActorAuthorityRetry(deadlineAtMs, signal, cause) {
1243
1210
  throw new Error('Actor target authority deadline expired.', { cause });
1244
1211
  }
1245
1212
  await new Promise((resolve, reject) => {
1246
- const timer = setTimeout(resolve, Math.min(10, remaining));
1213
+ const timer = setTimeout(resolve, Math.min(TRANSFER_POLL_INTERVAL_MS, remaining));
1247
1214
  timer.unref();
1248
1215
  const abort = () => {
1249
1216
  clearTimeout(timer);