@zlink-systems/framework 0.26.0 → 0.28.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 (561) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
  3. package/dist/contracts/Channels/Calls.d.ts +1 -1
  4. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  5. package/dist/contracts/Common/CoreTypes.js +7 -0
  6. package/dist/contracts/Common/index.d.ts +1 -1
  7. package/dist/contracts/Common/index.js +0 -1
  8. package/dist/contracts/Configuration/Builders.d.ts +0 -1
  9. package/dist/contracts/Configuration/Configs.d.ts +0 -1
  10. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  11. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  12. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  13. package/dist/contracts/Configuration/Registration.js +58 -36
  14. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  15. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  16. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  17. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  18. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
  19. package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
  20. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  21. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  22. package/dist/contracts/Handlers/JsonContract.js +10 -4
  23. package/dist/contracts/Locations/Authority.d.ts +1 -1
  24. package/dist/contracts/Locations/Authority.js +3 -2
  25. package/dist/contracts/Locations/Options.js +1 -1
  26. package/dist/contracts/Locations/Stores.d.ts +12 -0
  27. package/dist/contracts/Locations/Stores.js +9 -0
  28. package/dist/contracts/Spots/Contracts.d.ts +2 -2
  29. package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
  30. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
  31. package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
  32. package/dist/internal.d.ts +4 -0
  33. package/dist/internal.js +15 -1
  34. package/dist/nest-integration.d.ts +4 -2
  35. package/dist/nest-integration.js +14 -4
  36. package/dist/runtime/abort.d.ts +1 -0
  37. package/dist/runtime/abort.js +8 -5
  38. package/dist/runtime/activation-admission.d.ts +1 -2
  39. package/dist/runtime/activation-admission.js +2 -6
  40. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  41. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  42. package/dist/runtime/actors/actor-client.d.ts +2 -2
  43. package/dist/runtime/actors/actor-client.js +49 -153
  44. package/dist/runtime/actors/actor-context.d.ts +3 -5
  45. package/dist/runtime/actors/actor-context.js +13 -11
  46. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  47. package/dist/runtime/actors/actor-handoff.js +8 -8
  48. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  49. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  50. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  51. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  52. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  53. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  54. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  55. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  56. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  57. package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
  58. package/dist/runtime/actors/actor-request-deadline.js +6 -0
  59. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  60. package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
  61. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  62. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  63. package/dist/runtime/actors/bound-session-wire.js +2 -7
  64. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  65. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  66. package/dist/runtime/actors/index.d.ts +9 -7
  67. package/dist/runtime/actors/index.js +87 -69
  68. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  69. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  70. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  71. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  72. package/dist/runtime/admission.d.ts +2 -0
  73. package/dist/runtime/admission.js +7 -1
  74. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  75. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  76. package/dist/runtime/backend/contracts/index.d.ts +7 -27
  77. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  78. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  79. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  80. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
  81. package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
  82. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  83. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
  84. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  85. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  86. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  87. package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
  88. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  89. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  90. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  91. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  92. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  93. package/dist/runtime/backend/runtime-values.js +2 -0
  94. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  95. package/dist/runtime/channels/channel-clients.js +73 -59
  96. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  97. package/dist/runtime/channels/channel-envelope.d.ts +1 -1
  98. package/dist/runtime/channels/channel-envelope.js +51 -39
  99. package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
  100. package/dist/runtime/channels/channel-outbound-operations.js +25 -42
  101. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  102. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  103. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  104. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  105. package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
  106. package/dist/runtime/channels/channel-runtime-manager.js +13 -10
  107. package/dist/runtime/channels/channel-socket-options.js +3 -12
  108. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  109. package/dist/runtime/channels/channel-socket-registry.js +240 -177
  110. package/dist/runtime/channels/channel-transports.d.ts +21 -31
  111. package/dist/runtime/channels/channel-transports.js +80 -62
  112. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  113. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  114. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  115. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  116. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  117. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  118. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  119. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  120. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  121. package/dist/runtime/channels/local-spot-route-transport.js +1 -3
  122. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
  123. package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
  124. package/dist/runtime/channels/source-spot-router.d.ts +1 -1
  125. package/dist/runtime/channels/source-spot-router.js +2 -4
  126. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  127. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  128. package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
  129. package/dist/runtime/channels/spot-node-route-transport.js +5 -5
  130. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
  131. package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
  132. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
  133. package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
  134. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  135. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  136. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  137. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  138. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  139. package/dist/runtime/diagnostics/flow-context.js +16 -2
  140. package/dist/runtime/diagnostics/index.d.ts +4 -2
  141. package/dist/runtime/diagnostics/index.js +14 -4
  142. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  143. package/dist/runtime/diagnostics/message-flow.js +10 -19
  144. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  145. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  146. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  147. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  148. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  149. package/dist/runtime/disposal.d.ts +5 -0
  150. package/dist/runtime/disposal.js +22 -0
  151. package/dist/runtime/execution/index.d.ts +12 -9
  152. package/dist/runtime/execution/index.js +58 -14
  153. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  154. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  155. package/dist/runtime/execution/state-lane.d.ts +8 -1
  156. package/dist/runtime/execution/state-lane.js +118 -3
  157. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  158. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  159. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  160. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  161. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  162. package/dist/runtime/foundation/operation-identity.js +9 -5
  163. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  164. package/dist/runtime/foundation/operation-registry.js +34 -44
  165. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  166. package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
  167. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  168. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  169. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  170. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  171. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  172. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  173. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  174. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  175. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  176. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  177. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  178. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  179. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  180. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  181. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  182. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  183. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  184. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  185. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  186. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  187. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  188. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  189. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  190. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  191. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  192. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  193. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  194. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  195. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  196. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  197. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  198. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  199. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  200. package/dist/runtime/framework-errors-internal.js +343 -122
  201. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  202. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  203. package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
  204. package/dist/runtime/host/actor-packet-relay.js +54 -99
  205. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  206. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  207. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  208. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  209. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  210. package/dist/runtime/host/application-job-queue.js +16 -33
  211. package/dist/runtime/host/bound-session-relay.js +1 -1
  212. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  213. package/dist/runtime/host/index.d.ts +14 -13
  214. package/dist/runtime/host/index.js +190 -171
  215. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  216. package/dist/runtime/host/instance-activation-authority.js +17 -45
  217. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  218. package/dist/runtime/host/location-runtime-owner.js +2 -2
  219. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  220. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  221. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  222. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  223. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  224. package/dist/runtime/host/remote-bound-session-relay.js +15 -28
  225. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  226. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  227. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  228. package/dist/runtime/host/runtime-shutdown.js +18 -21
  229. package/dist/runtime/host/service-relocation-control.js +6 -1
  230. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  231. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  232. package/dist/runtime/host/spot-address-transport.d.ts +3 -12
  233. package/dist/runtime/host/spot-address-transport.js +78 -220
  234. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  235. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  236. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  237. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  238. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  239. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  240. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  241. package/dist/runtime/locations/authority-key-codec.js +4 -3
  242. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  243. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  244. package/dist/runtime/locations/creation-operation-id.js +6 -4
  245. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  246. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  247. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  248. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  249. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  250. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  251. package/dist/runtime/locations/key-codec.js +3 -2
  252. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  253. package/dist/runtime/locations/lease-tracker.js +7 -11
  254. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  255. package/dist/runtime/locations/lifecycle.js +2 -31
  256. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  257. package/dist/runtime/locations/location-store-failure.js +7 -0
  258. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  259. package/dist/runtime/locations/location-store-pages.js +13 -0
  260. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  261. package/dist/runtime/locations/location-store-repository.js +309 -336
  262. package/dist/runtime/locations/relocation-blob.js +18 -5
  263. package/dist/runtime/locations/resolvers.d.ts +5 -5
  264. package/dist/runtime/locations/resolvers.js +37 -28
  265. package/dist/runtime/locations/runtime.d.ts +5 -4
  266. package/dist/runtime/locations/runtime.js +123 -92
  267. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  268. package/dist/runtime/locations/spot-location-claims.js +42 -1
  269. package/dist/runtime/messaging/payload-codec.js +26 -20
  270. package/dist/runtime/messaging/request-deadline.d.ts +3 -0
  271. package/dist/runtime/messaging/request-deadline.js +39 -0
  272. package/dist/runtime/messaging/submission-result.d.ts +4 -0
  273. package/dist/runtime/messaging/submission-result.js +56 -1
  274. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  275. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  276. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  277. package/dist/runtime/spots/index.d.ts +14 -20
  278. package/dist/runtime/spots/index.js +302 -176
  279. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  280. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  281. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  282. package/dist/runtime/spots/spot-activation-state.js +2 -2
  283. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  284. package/dist/runtime/spots/spot-activation.js +49 -32
  285. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  286. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  287. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  288. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  289. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  290. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  291. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  292. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  293. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  294. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  295. package/dist/runtime/spots/spot-context.d.ts +2 -2
  296. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  297. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  298. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  299. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  300. package/dist/runtime/spots/spot-manager-public.js +5 -4
  301. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  302. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  303. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  304. package/dist/runtime/spots/spot-outbound.d.ts +7 -8
  305. package/dist/runtime/spots/spot-outbound.js +21 -23
  306. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  307. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  308. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  309. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  310. package/dist/runtime/spots/spot-route-replies.js +3 -1
  311. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  312. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  313. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  314. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  315. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  316. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  317. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  318. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  319. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  320. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  321. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  322. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  323. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  324. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  325. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
  326. package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
  327. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  328. package/dist/runtime/streams/bound-session-service.js +12 -2
  329. package/dist/runtime/streams/index.d.ts +16 -17
  330. package/dist/runtime/streams/index.js +22 -23
  331. package/dist/runtime/streams/managed-stream.d.ts +5 -2
  332. package/dist/runtime/streams/managed-stream.js +20 -13
  333. package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
  334. package/dist/runtime/streams/protocol.d.ts +6 -33
  335. package/dist/runtime/streams/protocol.js +38 -110
  336. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  337. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  338. package/dist/runtime/streams/session-calls.d.ts +6 -8
  339. package/dist/runtime/streams/session-calls.js +6 -22
  340. package/dist/runtime/streams/session-context.d.ts +10 -10
  341. package/dist/runtime/streams/session-context.js +25 -10
  342. package/dist/runtime/streams/session-requests.js +2 -1
  343. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  344. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  345. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  346. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  347. package/dist/runtime/workers/index.d.ts +2 -2
  348. package/dist/runtime/workers/index.js +5 -4
  349. package/package.json +3 -3
  350. package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
  351. package/src/contracts/Channels/Calls.ts +1 -1
  352. package/src/contracts/Common/CoreTypes.ts +7 -0
  353. package/src/contracts/Common/index.ts +1 -1
  354. package/src/contracts/Configuration/Builders.ts +0 -1
  355. package/src/contracts/Configuration/Configs.ts +0 -1
  356. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  357. package/src/contracts/Configuration/Registration.ts +92 -48
  358. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  359. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
  360. package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
  361. package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
  362. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  363. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  364. package/src/contracts/Handlers/JsonContract.ts +14 -4
  365. package/src/contracts/Locations/Authority.ts +7 -3
  366. package/src/contracts/Locations/Options.ts +1 -1
  367. package/src/contracts/Locations/Stores.ts +14 -0
  368. package/src/contracts/Spots/Contracts.ts +2 -2
  369. package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
  370. package/src/contracts/Streams/IZLinkSession.ts +2 -3
  371. package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
  372. package/src/internal.ts +14 -0
  373. package/src/nest-integration.ts +28 -10
  374. package/src/runtime/abort.ts +6 -5
  375. package/src/runtime/activation-admission.ts +2 -8
  376. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  377. package/src/runtime/actors/actor-client.ts +85 -218
  378. package/src/runtime/actors/actor-context.ts +39 -33
  379. package/src/runtime/actors/actor-handoff.ts +24 -22
  380. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  381. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  382. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  383. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  384. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  385. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  386. package/src/runtime/actors/actor-request-deadline.ts +4 -0
  387. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  388. package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
  389. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  390. package/src/runtime/actors/bound-session-wire.ts +2 -8
  391. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  392. package/src/runtime/actors/index.ts +100 -79
  393. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  394. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  395. package/src/runtime/admission.ts +8 -1
  396. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  397. package/src/runtime/backend/contracts/index.ts +14 -37
  398. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  399. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  400. package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
  401. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
  402. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  403. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  404. package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
  405. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  406. package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
  407. package/src/runtime/backend/raw-binding-port.ts +1 -1
  408. package/src/runtime/backend/runtime-values.ts +4 -1
  409. package/src/runtime/channels/channel-clients.ts +139 -102
  410. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  411. package/src/runtime/channels/channel-envelope.ts +74 -57
  412. package/src/runtime/channels/channel-outbound-operations.ts +40 -55
  413. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  414. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  415. package/src/runtime/channels/channel-runtime-manager.ts +12 -30
  416. package/src/runtime/channels/channel-socket-options.ts +8 -15
  417. package/src/runtime/channels/channel-socket-registry.ts +291 -196
  418. package/src/runtime/channels/channel-transports.ts +168 -145
  419. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  420. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  421. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  422. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  423. package/src/runtime/channels/local-spot-route-transport.ts +1 -5
  424. package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
  425. package/src/runtime/channels/source-spot-router.ts +2 -9
  426. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  427. package/src/runtime/channels/spot-node-route-transport.ts +7 -9
  428. package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
  429. package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
  430. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  431. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  432. package/src/runtime/diagnostics/flow-context.ts +16 -2
  433. package/src/runtime/diagnostics/index.ts +27 -17
  434. package/src/runtime/diagnostics/message-flow.ts +15 -25
  435. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  436. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  437. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  438. package/src/runtime/disposal.ts +19 -0
  439. package/src/runtime/execution/index.ts +60 -20
  440. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  441. package/src/runtime/execution/state-lane.ts +142 -4
  442. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  443. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  444. package/src/runtime/foundation/operation-identity.ts +11 -5
  445. package/src/runtime/foundation/operation-registry.ts +33 -50
  446. package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
  447. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  448. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  449. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  450. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  451. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  452. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  453. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  454. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  455. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  456. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  457. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  458. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  459. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  460. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  461. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  462. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  463. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  464. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  465. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  466. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  467. package/src/runtime/framework-errors-internal.ts +380 -134
  468. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  469. package/src/runtime/host/actor-packet-relay.ts +63 -160
  470. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  471. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  472. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  473. package/src/runtime/host/application-job-queue.ts +28 -34
  474. package/src/runtime/host/bound-session-relay.ts +1 -2
  475. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  476. package/src/runtime/host/index.ts +327 -320
  477. package/src/runtime/host/instance-activation-authority.ts +89 -109
  478. package/src/runtime/host/location-runtime-owner.ts +4 -2
  479. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  480. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  481. package/src/runtime/host/remote-bound-session-relay.ts +16 -57
  482. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  483. package/src/runtime/host/runtime-shutdown.ts +17 -21
  484. package/src/runtime/host/service-relocation-control.ts +14 -1
  485. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  486. package/src/runtime/host/spot-address-transport.ts +175 -356
  487. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  488. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  489. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  490. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  491. package/src/runtime/locations/authority-key-codec.ts +7 -3
  492. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  493. package/src/runtime/locations/creation-operation-id.ts +6 -3
  494. package/src/runtime/locations/domain-store-contract.ts +12 -3
  495. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  496. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  497. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  498. package/src/runtime/locations/key-codec.ts +3 -2
  499. package/src/runtime/locations/lease-tracker.ts +8 -14
  500. package/src/runtime/locations/lifecycle.ts +13 -43
  501. package/src/runtime/locations/location-store-failure.ts +4 -0
  502. package/src/runtime/locations/location-store-pages.ts +18 -0
  503. package/src/runtime/locations/location-store-repository.ts +457 -482
  504. package/src/runtime/locations/relocation-blob.ts +17 -6
  505. package/src/runtime/locations/resolvers.ts +75 -49
  506. package/src/runtime/locations/runtime.ts +220 -110
  507. package/src/runtime/locations/spot-location-claims.ts +58 -1
  508. package/src/runtime/messaging/payload-codec.ts +35 -24
  509. package/src/runtime/messaging/request-deadline.ts +58 -0
  510. package/src/runtime/messaging/submission-result.ts +72 -2
  511. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  512. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  513. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  514. package/src/runtime/spots/index.ts +433 -229
  515. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  516. package/src/runtime/spots/spot-activation-state.ts +2 -2
  517. package/src/runtime/spots/spot-activation.ts +67 -37
  518. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  519. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  520. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  521. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  522. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  523. package/src/runtime/spots/spot-context.ts +3 -3
  524. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  525. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  526. package/src/runtime/spots/spot-manager-public.ts +21 -17
  527. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  528. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  529. package/src/runtime/spots/spot-outbound.ts +59 -47
  530. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  531. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  532. package/src/runtime/spots/spot-route-replies.ts +6 -4
  533. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  534. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  535. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  536. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  537. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  538. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  539. package/src/runtime/spots/spot-timer.ts +3 -2
  540. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  541. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  542. package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
  543. package/src/runtime/streams/bound-session-service.ts +22 -2
  544. package/src/runtime/streams/index.ts +78 -68
  545. package/src/runtime/streams/managed-stream.ts +32 -23
  546. package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
  547. package/src/runtime/streams/protocol.ts +34 -88
  548. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  549. package/src/runtime/streams/session-calls.ts +11 -36
  550. package/src/runtime/streams/session-context.ts +60 -25
  551. package/src/runtime/streams/session-requests.ts +2 -1
  552. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  553. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  554. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  555. package/src/runtime/workers/index.ts +13 -12
  556. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  557. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  558. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  559. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  560. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  561. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -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);