@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
@@ -1,5 +1,6 @@
1
1
  import type { ActorRef, ZLinkActor, ZLinkActorMembership } from '../../contracts';
2
2
  import { ZLinkConfigurationException } from '../configuration';
3
+ import { diagnosticTextOrAbsent } from '../diagnostics/diagnostic-text';
3
4
 
4
5
  export const ZLINK_ACTOR_LIFECYCLE_SNAPSHOT = Symbol('zlink.actor.lifecycle-snapshot');
5
6
 
@@ -63,7 +64,7 @@ function lifecycleSource(actor: ZLinkActor): ZLinkActorLifecycleSnapshotSource {
63
64
  : undefined;
64
65
  // A caller can hand in a value that carries no Framework context at all, so the
65
66
  // failure path reports the configuration error instead of dereferencing it.
66
- const actorId = context?.actorId ?? '<unknown>';
67
+ const actorId = diagnosticTextOrAbsent(context?.actorId);
67
68
  const snapshot = context?.[ZLINK_ACTOR_LIFECYCLE_SNAPSHOT];
68
69
  const source = snapshot === undefined ? undefined : snapshot.call(context);
69
70
  if (source === undefined) {
@@ -1,51 +1,73 @@
1
- import {
2
- ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException,
4
- wireReplyFailureException
5
- } from '../framework-errors-internal';
1
+ import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
6
2
  import { randomUUID } from 'node:crypto';
7
- import { isBackendNotConnectedError } from '../backend/runtime-values';
8
- import type {
9
- RoutingId,
10
- ZLinkActor,
11
- ZLinkActorJoinOperationId,
12
- ZLinkMessageSerializer
3
+ import {
4
+ type RoutingId,
5
+ type ZLinkActor,
6
+ type ZLinkActorJoinOperationId,
7
+ type ZLinkMessageSerializer,
8
+ type ZLinkSpot,
9
+ type ZLinkSpotActorJoinResult,
10
+ ZLinkSpotKind
13
11
  } from '../../contracts';
14
- import { ZLinkSpotKind } from '../../contracts';
15
- import type { ZLinkActorJoinRuntimeResult } from './actor-runtime-contracts';
12
+
16
13
  import type { Message } from '../../contracts/Common/Message';
14
+ import { createAbortError, throwIfAborted } from '../abort';
17
15
  import type { ZLinkBackendActorRef, ZLinkBackendMeshNode } from '../backend/contracts';
18
16
  import {
19
17
  closeMeshCompletion,
20
18
  type ZLinkMeshCompletion,
21
19
  type ZLinkMeshCompletionTable
22
20
  } from '../backend/mesh-completion-table';
23
- import { createAbortError, throwIfAborted } from '../abort';
21
+ import { isBackendNotConnectedError } from '../backend/runtime-values';
22
+ import { operationIdentityKey } from '../foundation/operation-identity';
23
+ import {
24
+ ZLinkFrameworkInternalErrorKind,
25
+ createInternalFrameworkException,
26
+ wireReplyFailureException
27
+ } from '../framework-errors-internal';
28
+ import type { ZLinkLocationLifecycle } from '../locations';
29
+ import { frameworkPayloadContentType } from '../messaging/payload-codec';
30
+ import { routingIdsEqual, toBackendRoutingId } from '../routing-id';
24
31
  import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
32
+ import type { ZLinkActorJoinRelocation } from './actor-join-relocation';
33
+ import { ZLINK_REMOTE_ACTOR_JOIN_PACKET } from './actor-remote-wire';
34
+ import type { ZLinkActorJoinRuntimeResult } from './actor-runtime-contracts';
25
35
  import {
26
36
  ZLinkActorRuntimeState,
27
37
  toFrameworkActorRef,
28
38
  toFrameworkRoutingId
29
39
  } from './actor-runtime-state';
30
40
  import type { ZLinkPostCommitActorBinder } from './post-commit-actor-binder';
31
- import type { ZLinkPostCommitActorLocation } from './post-commit-actor-location';
32
- import { toBackendRoutingId as toBackendRoutingId } from '../routing-id';
33
- import { routingIdsEqual } from '../routing-id';
34
- import { operationIdentityKey } from '../foundation/operation-identity';
35
- import { frameworkPayloadContentType } from '../messaging/payload-codec';
36
- import type { ZLinkActorJoinRelocation } from './actor-join-relocation';
41
+ const LOCAL_JOIN_RESOLUTION_TIMEOUT_MS = 5_000;
42
+ const LOCAL_JOIN_POLL_INTERVAL_MS = 10;
37
43
 
38
44
  const ZLINK_FRAMEWORK_ACTOR_JOIN_PACKET_NAME = 'ZLinkFrameworkActorJoinRequest';
39
45
 
40
46
  export interface ZLinkLocalNativeActorJoinOptions {
41
- readonly postCommitLocation?: ZLinkPostCommitActorLocation;
47
+ readonly locationLifecycle?: ZLinkLocationLifecycle;
48
+ readonly localSpotJoin?: (
49
+ spotId: RoutingId,
50
+ actor: ZLinkActor,
51
+ request: Message,
52
+ commit: (spot: ZLinkSpot) => Promise<void>,
53
+ signal?: AbortSignal,
54
+ leaveSource?: () => Promise<void>,
55
+ contentType?: string
56
+ ) => Promise<ZLinkSpotActorJoinResult>;
57
+ readonly localEntryJoin?: (actor: ZLinkActor, signal?: AbortSignal) => Promise<void>;
58
+ readonly localSourceLeave?: (
59
+ actor: ZLinkActor,
60
+ spotId: RoutingId | undefined,
61
+ signal?: AbortSignal
62
+ ) => Promise<void>;
63
+ readonly reportSourceLeaveError: (error: unknown) => void;
42
64
  readonly postCommitBinder?: ZLinkPostCommitActorBinder;
43
65
  readonly completionTableProvider: () => ZLinkMeshCompletionTable | undefined;
44
66
  readonly actorJoinRelocation?: ZLinkActorJoinRelocation;
45
67
  readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
46
68
  }
47
69
 
48
- /** Owns core-native actor joins and their local runtime state transition. */
70
+ /** Selects local membership commits or remote Actor relocation. */
49
71
  export class ZLinkLocalNativeActorJoin {
50
72
  constructor(private readonly options: ZLinkLocalNativeActorJoinOptions) {}
51
73
 
@@ -62,9 +84,7 @@ export class ZLinkLocalNativeActorJoin {
62
84
  completionOperationId?: ZLinkActorJoinOperationId
63
85
  ): Promise<ZLinkActorJoinRuntimeResult<Message>> {
64
86
  if (signal?.aborted === true) throw createAbortError();
65
- const completions = this.requireCompletions();
66
87
  const target = requireUserSpotRoute(spotRouteTarget, spotId);
67
- const actorMeshName = runtimeActorMeshName(actor, state, target.routerChannelId);
68
88
  const remote = !routingIdsEqual(
69
89
  toFrameworkRoutingId(node.status().routingId),
70
90
  target.targetNodeRid
@@ -83,88 +103,16 @@ export class ZLinkLocalNativeActorJoin {
83
103
  false
84
104
  );
85
105
  }
86
- const completion = await this.waitForJoinCompletion(
87
- () =>
88
- node.joinActorSpot(
89
- actorRef,
90
- toBackendRoutingId(target.targetNodeRid),
91
- toBackendRoutingId(target.spotId),
92
- target.targetSpotGeneration,
93
- actorJoinApplicationPayload(request),
94
- timeoutMs
95
- ),
96
- completions,
97
- timeoutMs,
106
+ return await this.joinLocal(
107
+ node,
108
+ actor,
109
+ state,
110
+ actorRef,
111
+ target,
112
+ target.spotId,
113
+ request,
98
114
  signal
99
115
  );
100
- const control = completion.kindData;
101
- if (control?.kind !== 'actorJoinCompletion' || control.actor === null) {
102
- closeMeshCompletion(completion);
103
- const message = `Actor join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`;
104
- // Classify the (terminal, fine) pair instead of collapsing every non-OK
105
- // or malformed join completion to NotFound (spec 32-framework-error-model:
106
- // 83-118). An OK terminal that carries no join control is a protocol
107
- // violation, not a missing route.
108
- throw completion.terminalResult !== 0 || completion.failureErrno !== 0
109
- ? wireReplyFailureException(completion.terminalResult, completion.failureErrno, message)
110
- : createInternalFrameworkException(
111
- ZLinkFrameworkInternalErrorKind.RequestProtocolError,
112
- message
113
- );
114
- }
115
- if (control.joinResult !== 0) {
116
- try {
117
- return {
118
- accepted: false,
119
- actor: toFrameworkActorRef(control.actor as never, actorMeshName),
120
- reply: completion.parts[0]
121
- };
122
- } finally {
123
- disposeParts(completion.parts.slice(1));
124
- }
125
- }
126
- if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
127
- closeMeshCompletion(completion);
128
- throw wireReplyFailureException(
129
- completion.terminalResult,
130
- completion.failureErrno,
131
- `Actor join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`
132
- );
133
- }
134
-
135
- state.setNativeActorRef(control.actor as never);
136
- state.setJoinedSpot(
137
- toFrameworkRoutingId(control.location.spotId ?? target.spotId),
138
- undefined,
139
- control.location.membershipEpoch,
140
- control.location.spotGeneration
141
- );
142
- // The Session owner relays from the verified Ready authority snapshot;
143
- // membership coordinates alone cannot recreate a User/Instance fence.
144
- state.setRemoteActorPacketTarget(target.spotKind === ZLinkSpotKind.Entry ? undefined : target);
145
- if (state.actorType !== undefined) {
146
- this.options.postCommitLocation?.joinedEventually(
147
- state.actorType,
148
- actor.context.actorId,
149
- spotRouteTarget?.routerChannelId ?? '',
150
- toFrameworkRoutingId(control.location.spotId ?? target.spotId),
151
- control.location.spotGeneration,
152
- control.location.membershipEpoch,
153
- node.status().lifecycleGeneration
154
- );
155
- }
156
- await this.options.postCommitBinder?.bind(
157
- toFrameworkActorRef(control.actor as never, actorMeshName)
158
- );
159
- try {
160
- return {
161
- accepted: true,
162
- actor: toFrameworkActorRef(control.actor as never, actorMeshName),
163
- reply: completion.parts[0]
164
- };
165
- } finally {
166
- disposeParts(completion.parts.slice(1));
167
- }
168
116
  }
169
117
 
170
118
  async joinEntrySpot(
@@ -180,8 +128,6 @@ export class ZLinkLocalNativeActorJoin {
180
128
  completionOperationId?: ZLinkActorJoinOperationId
181
129
  ): Promise<ZLinkActorJoinRuntimeResult<Message>> {
182
130
  if (signal?.aborted === true) throw createAbortError();
183
- const completions = this.requireCompletions();
184
- const actorMeshName = runtimeActorMeshName(actor, state, '');
185
131
  const targetNodeRid = spotRouteTarget?.targetNodeRid ?? nodeRid;
186
132
  const remote =
187
133
  spotRouteTarget !== undefined &&
@@ -204,77 +150,127 @@ export class ZLinkLocalNativeActorJoin {
204
150
  true
205
151
  );
206
152
  }
207
- const completion = await this.waitForJoinCompletion(
208
- () =>
209
- node.joinActorEntrySpot(
210
- actorRef,
211
- toBackendRoutingId(targetNodeRid),
212
- actorJoinApplicationPayload(request),
213
- timeoutMs
214
- ),
215
- completions,
216
- timeoutMs,
153
+ const target = {
154
+ routerChannelId: spotRouteTarget?.routerChannelId ?? runtimeActorMeshName(actor, state, ''),
155
+ targetNodeRid,
156
+ spotId: toFrameworkRoutingId(node.entrySpot().routingId),
157
+ spotKind: ZLinkSpotKind.Entry,
158
+ targetSpotGeneration: node.entrySpot().status().lifecycleGeneration
159
+ };
160
+ return await this.joinLocal(
161
+ node,
162
+ actor,
163
+ state,
164
+ actorRef,
165
+ target,
166
+ spotRouteTarget?.spotId ?? target.spotId,
167
+ request,
217
168
  signal
218
169
  );
219
- const control = completion.kindData;
220
- if (control?.kind !== 'actorJoinCompletion' || control.actor === null) {
221
- closeMeshCompletion(completion);
222
- const message = `Actor entry SPOT join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`;
223
- // Classify the (terminal, fine) pair instead of collapsing to NotFound
224
- // (spec 32-framework-error-model:83-118); an OK terminal with no join
225
- // control is a protocol violation.
226
- throw completion.terminalResult !== 0 || completion.failureErrno !== 0
227
- ? wireReplyFailureException(completion.terminalResult, completion.failureErrno, message)
228
- : createInternalFrameworkException(
229
- ZLinkFrameworkInternalErrorKind.RequestProtocolError,
230
- message
231
- );
232
- }
233
- if (control.joinResult !== 0) {
234
- try {
235
- return {
236
- accepted: false,
237
- actor: toFrameworkActorRef(control.actor as never, actorMeshName),
238
- reply: completion.parts[0]
239
- };
240
- } finally {
241
- disposeParts(completion.parts.slice(1));
242
- }
170
+ }
171
+
172
+ private async joinLocal(
173
+ node: ZLinkBackendMeshNode,
174
+ actor: ZLinkActor,
175
+ state: ZLinkActorRuntimeState,
176
+ actorRef: ZLinkBackendActorRef,
177
+ target: ZLinkSpotRouteTarget,
178
+ storeSpotId: RoutingId,
179
+ request: Message,
180
+ signal: AbortSignal | undefined
181
+ ): Promise<ZLinkActorJoinRuntimeResult<Message>> {
182
+ const location = node.actorLookup(actor.context.actorId);
183
+ const meshName = runtimeActorMeshName(actor, state, target.routerChannelId);
184
+ if (routingIdsEqual(toFrameworkRoutingId(location.spotId), target.spotId)) {
185
+ return { accepted: true, actor: toFrameworkActorRef(actorRef, meshName) };
243
186
  }
244
- if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
245
- closeMeshCompletion(completion);
246
- throw wireReplyFailureException(
247
- completion.terminalResult,
248
- completion.failureErrno,
249
- `Actor entry SPOT join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`
187
+ if (state.actorType === undefined)
188
+ throw new Error('Local Actor Join requires a registered Actor type.');
189
+ const actorType = state.actorType;
190
+ const previousSpotId = state.spotId;
191
+ const spotGeneration = target.targetSpotGeneration;
192
+ if (
193
+ spotGeneration === undefined ||
194
+ spotGeneration <= 0n ||
195
+ node.restoreActorAuthority === undefined
196
+ ) {
197
+ throw new Error(
198
+ 'Local Actor Join requires a valid target generation and stateful membership runtime.'
250
199
  );
251
200
  }
252
-
253
- state.setNativeActorRef(control.actor as never);
254
- state.clearJoinedSpot();
255
- state.setRemoteActorPacketTarget(undefined);
256
- if (state.actorType !== undefined) {
257
- this.options.postCommitLocation?.leftEventually(
258
- state.actorType,
201
+ const membershipEpoch = location.membershipEpoch + 1n;
202
+ const commit = async (spot?: ZLinkSpot): Promise<void> => {
203
+ throwIfAborted(signal);
204
+ if (target.spotKind === ZLinkSpotKind.Entry) {
205
+ await this.options.locationLifecycle?.notifyActorLeftSpot(
206
+ actorType,
207
+ actor.context.actorId,
208
+ storeSpotId,
209
+ spotGeneration,
210
+ membershipEpoch,
211
+ node.status().lifecycleGeneration
212
+ );
213
+ } else {
214
+ await this.options.locationLifecycle?.notifyActorJoinedSpot(
215
+ actorType,
216
+ actor.context.actorId,
217
+ meshName,
218
+ storeSpotId,
219
+ spotGeneration,
220
+ membershipEpoch,
221
+ node.status().lifecycleGeneration
222
+ );
223
+ }
224
+ const committedActor = node.restoreActorAuthority!(
259
225
  actor.context.actorId,
260
- toFrameworkRoutingId(control.location.spotId ?? spotRouteTarget?.spotId ?? nodeRid),
261
- control.location.spotGeneration,
262
- control.location.membershipEpoch,
263
- node.status().lifecycleGeneration
226
+ actorType,
227
+ actorRef.generation,
228
+ state.locationGeneration ?? actorRef.generation,
229
+ target.spotKind === ZLinkSpotKind.Entry ? undefined : String(target.spotId),
230
+ spotGeneration,
231
+ membershipEpoch
232
+ );
233
+ state.setNativeActorRef(committedActor);
234
+ if (target.spotKind === ZLinkSpotKind.Entry) state.clearJoinedSpot();
235
+ else state.setJoinedSpot(target.spotId, spot, membershipEpoch, spotGeneration);
236
+ state.setRemoteActorPacketTarget(
237
+ target.spotKind === ZLinkSpotKind.Entry ? undefined : target
238
+ );
239
+ };
240
+ const leaveSource = async (): Promise<void> => {
241
+ void this.options.localSourceLeave?.(actor, previousSpotId, signal).catch((error) => {
242
+ this.options.reportSourceLeaveError(error);
243
+ });
244
+ };
245
+ let response: ZLinkSpotActorJoinResult;
246
+ if (target.spotKind === ZLinkSpotKind.Entry) {
247
+ if (this.options.localEntryJoin === undefined)
248
+ throw new Error('Local Entry Actor Join runtime is not configured.');
249
+ await commit();
250
+ try {
251
+ await this.options.localEntryJoin(actor, signal);
252
+ } finally {
253
+ await leaveSource();
254
+ }
255
+ response = { accepted: true };
256
+ } else {
257
+ if (this.options.localSpotJoin === undefined)
258
+ throw new Error('Local Spot Actor Join runtime is not configured.');
259
+ response = await this.options.localSpotJoin(
260
+ target.spotId,
261
+ actor,
262
+ request,
263
+ commit,
264
+ signal,
265
+ leaveSource,
266
+ frameworkPayloadContentType(request)
264
267
  );
265
268
  }
266
- await this.options.postCommitBinder?.bind(
267
- toFrameworkActorRef(control.actor as never, actorMeshName)
268
- );
269
- try {
270
- return {
271
- accepted: true,
272
- actor: toFrameworkActorRef(control.actor as never, actorMeshName),
273
- reply: completion.parts[0]
274
- };
275
- } finally {
276
- disposeParts(completion.parts.slice(1));
277
- }
269
+ return {
270
+ accepted: response.accepted,
271
+ actor: toFrameworkActorRef(state.nativeActorRef ?? actorRef, meshName),
272
+ reply: response.reply as Message | undefined
273
+ };
278
274
  }
279
275
 
280
276
  private async waitForJoinCompletion(
@@ -463,7 +459,7 @@ export class ZLinkLocalNativeActorJoin {
463
459
  ...(completionOperationId === undefined
464
460
  ? {}
465
461
  : {
466
- replyContentType: control.replyContentType ?? 'application/octet-stream'
462
+ replyContentType: control.replyContentType ?? ZlinkStreamContentType.Raw
467
463
  }),
468
464
  reply:
469
465
  completionOperationId === undefined
@@ -569,7 +565,7 @@ function legacyRemoteActorJoinPayload(
569
565
  // authority fence.
570
566
  const payload = Buffer.from(
571
567
  JSON.stringify({
572
- packetName: '__zlink.actor.join_spot.request',
568
+ packetName: ZLINK_REMOTE_ACTOR_JOIN_PACKET,
573
569
  phase: 'admission',
574
570
  transferId,
575
571
  spotId: String(target.spotId),
@@ -585,7 +581,7 @@ function legacyRemoteActorJoinPayload(
585
581
  );
586
582
  return {
587
583
  packetName: ZLINK_FRAMEWORK_ACTOR_JOIN_PACKET_NAME,
588
- contentType: 'application/json',
584
+ contentType: ZlinkStreamContentType.Json,
589
585
  payload,
590
586
  // Older in-process MeshNode adapters consume the fallback as a Message.
591
587
  // Keep that structural view without changing the typed service payload.
@@ -624,7 +620,9 @@ async function submitJoinWhenConnected<T>(
624
620
  timeoutMs: number | undefined,
625
621
  signal: AbortSignal | undefined
626
622
  ): Promise<T> {
627
- const deadline = performance.now() + Math.min(timeoutMs ?? 5_000, 5_000);
623
+ const deadline =
624
+ performance.now() +
625
+ Math.min(timeoutMs ?? LOCAL_JOIN_RESOLUTION_TIMEOUT_MS, LOCAL_JOIN_RESOLUTION_TIMEOUT_MS);
628
626
  for (;;) {
629
627
  throwIfAborted(signal);
630
628
  try {
@@ -633,7 +631,7 @@ async function submitJoinWhenConnected<T>(
633
631
  if (!isBackendNotConnectedError(error) || performance.now() >= deadline) {
634
632
  throw error;
635
633
  }
636
- await new Promise<void>((resolve) => setTimeout(resolve, 10));
634
+ await new Promise<void>((resolve) => setTimeout(resolve, LOCAL_JOIN_POLL_INTERVAL_MS));
637
635
  }
638
636
  }
639
637
  }
@@ -1,3 +1,4 @@
1
+ import { ConfigError, ConfigResult } from '@zlink-systems/zlink';
1
2
  import type {
2
3
  ZLinkBackendActorRef,
3
4
  ZLinkBackendMeshNode,
@@ -22,17 +23,9 @@ export function lookupNativeActorRef(
22
23
  generation: actor.generation
23
24
  };
24
25
  } catch (error) {
25
- if (nativeErrno(error) === 2) {
26
+ if (error instanceof ConfigError && error.result === ConfigResult.NotFound) {
26
27
  return undefined;
27
28
  }
28
29
  throw error;
29
30
  }
30
31
  }
31
-
32
- function nativeErrno(error: unknown): number | undefined {
33
- if (typeof error !== 'object' || error === null || !('nativeErrno' in error)) {
34
- return undefined;
35
- }
36
- const value = error.nativeErrno;
37
- return typeof value === 'number' ? value : undefined;
38
- }
@@ -1,11 +1,12 @@
1
- import type { ActorRef, RoutingId } from '../../contracts';
2
- import { ZLinkSpotKind } from '../../contracts';
1
+ import { type ActorRef, type RoutingId, ZLinkSpotKind } from '../../contracts';
2
+
3
+ import { ZLINK_MAX_SPOT_ID_BYTES } from '../../contracts/Common/CoreTypes';
3
4
  import { decodeRoutingId, routingIdWireHex } from '../routing-id';
4
- import type { ZLinkRemoteActorPacketTarget } from './actor-runtime-state';
5
5
  import {
6
6
  decodeActorMessageFollowContext,
7
7
  type ZLinkActorMessageFollowContext
8
8
  } from './actor-message-follow-context';
9
+ import type { ZLinkRemoteActorPacketTarget } from './actor-runtime-state';
9
10
 
10
11
  export const ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET = '__zlink.actor.packet.relay';
11
12
  export const ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET =
@@ -48,6 +49,7 @@ export function encodeRemoteActorPacketRelayPayload(input: {
48
49
  readonly header: Uint8Array;
49
50
  readonly payload: Uint8Array;
50
51
  readonly bindingActorRef?: ActorRef;
52
+ readonly bindingGeneration?: bigint;
51
53
  /** The actor reference used to preserve relocation context at the target Spot. */
52
54
  readonly actorRef?: ActorRef;
53
55
  readonly returnResponse?: boolean;
@@ -70,13 +72,15 @@ export function encodeRemoteActorPacketRelayPayload(input: {
70
72
  ? undefined
71
73
  : routingIdWireHex(input.bindingActorRef.nodeRid),
72
74
  bindingActorGeneration: input.bindingActorRef?.objectGeneration.toString(),
73
- bindingGeneration: (
74
- input.bindingActorRef as
75
- | (ActorRef & {
76
- readonly bindingGeneration?: bigint;
77
- })
78
- | undefined
79
- )?.bindingGeneration?.toString(),
75
+ bindingGeneration:
76
+ input.bindingGeneration?.toString() ??
77
+ (
78
+ input.bindingActorRef as
79
+ | (ActorRef & {
80
+ readonly bindingGeneration?: bigint;
81
+ })
82
+ | undefined
83
+ )?.bindingGeneration?.toString(),
80
84
  returnResponse: input.returnResponse,
81
85
  messageFollowContext: input.messageFollowContext,
82
86
  header: Buffer.from(input.header).toString('base64'),
@@ -169,8 +173,10 @@ export function decodeRemoteActorPacketTarget(
169
173
 
170
174
  function requireSpotId(value: string): string {
171
175
  const bytes = Buffer.byteLength(value, 'utf8');
172
- if (bytes < 1 || bytes > 255) {
173
- throw new Error('Actor packet target SpotId must contain 1..255 UTF-8 bytes.');
176
+ if (bytes < 1 || bytes > ZLINK_MAX_SPOT_ID_BYTES) {
177
+ throw new Error(
178
+ `Actor packet target SpotId must contain 1..${ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes.`
179
+ );
174
180
  }
175
181
  return value;
176
182
  }
@@ -11,12 +11,14 @@ import type {
11
11
  import type { ZLinkActorSourceTransfer } from './actor-source-transfer';
12
12
  import { ZLinkActorRuntimeState, toFrameworkRoutingId } from './actor-runtime-state';
13
13
  import { lookupNativeActorRef } from './actor-native-lookup';
14
- import { ZLinkPostCommitActorLocation } from './post-commit-actor-location';
15
14
  import { ZLinkLocalNativeActorJoin } from './actor-local-native-join';
16
15
  import { ZLinkPostCommitActorBinder } from './post-commit-actor-binder';
17
16
  import type { ZLinkActorJoinRelocation } from './actor-join-relocation';
18
17
 
19
- export interface ZLinkActorNativeJoinCoordinatorOptions {
18
+ export interface ZLinkActorNativeJoinCoordinatorOptions extends Pick<
19
+ import('./actor-local-native-join').ZLinkLocalNativeActorJoinOptions,
20
+ 'localSpotJoin' | 'localEntryJoin' | 'localSourceLeave' | 'reportSourceLeaveError'
21
+ > {
20
22
  readonly messageFlow?: () =>
21
23
  import('../diagnostics/message-flow').ZLinkMessageFlowTracer | undefined;
22
24
  readonly node: ZLinkBackendMeshNode | (() => ZLinkBackendMeshNode);
@@ -46,16 +48,12 @@ export class ZLinkActorNativeJoinCoordinator implements ZLinkActorJoinCoordinato
46
48
  }
47
49
 
48
50
  constructor(private readonly options: ZLinkActorNativeJoinCoordinatorOptions) {
49
- const postCommitLocation =
50
- options.locationLifecycle === undefined
51
- ? undefined
52
- : new ZLinkPostCommitActorLocation({
53
- lifecycle: options.locationLifecycle,
54
- reportError: options.postCommitErrorReporter,
55
- signal: options.shutdownSignal
56
- });
57
51
  this.localJoin = new ZLinkLocalNativeActorJoin({
58
- postCommitLocation,
52
+ locationLifecycle: options.locationLifecycle,
53
+ localSpotJoin: options.localSpotJoin,
54
+ localEntryJoin: options.localEntryJoin,
55
+ localSourceLeave: options.localSourceLeave,
56
+ reportSourceLeaveError: options.reportSourceLeaveError,
59
57
  postCommitBinder:
60
58
  options.remoteActorBinder === undefined
61
59
  ? undefined
@@ -1,3 +1,5 @@
1
+ import { ZLINK_MAX_SPOT_ID_BYTES } from '../../contracts/Common/CoreTypes';
2
+ import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
1
3
  import type { RoutingId, SpotId } from '../../contracts';
2
4
  import { decodeRoutingId } from '../routing-id';
3
5
 
@@ -133,7 +135,7 @@ export function decodeRemoteActorJoinPayload(payload: unknown): {
133
135
  ),
134
136
  boundSessionSpotId: optionalSpotId(payload, 'boundSessionSpotId'),
135
137
  request: (payload as { request: string }).request,
136
- requestContentType: optionalString(payload, 'requestContentType') ?? 'application/json'
138
+ requestContentType: optionalString(payload, 'requestContentType') ?? ZlinkStreamContentType.Json
137
139
  };
138
140
  }
139
141
 
@@ -158,8 +160,8 @@ function optionalSpotId(value: object, key: string): SpotId | undefined {
158
160
 
159
161
  function requireSpotId(value: string): SpotId {
160
162
  const bytes = Buffer.byteLength(value, 'utf8');
161
- if (bytes < 1 || bytes > 255) {
162
- throw new Error('Remote actor SpotId must contain 1..255 UTF-8 bytes.');
163
+ if (bytes < 1 || bytes > ZLINK_MAX_SPOT_ID_BYTES) {
164
+ throw new Error(`Remote actor SpotId must contain 1..${ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes.`);
163
165
  }
164
166
  return value;
165
167
  }
@@ -0,0 +1,4 @@
1
+ export {
2
+ remainingRequestTimeout as remainingActorRequestTimeout,
3
+ waitRequestReply as waitActorReply
4
+ } from '../messaging/request-deadline';
@@ -1,5 +1,6 @@
1
1
  const INITIAL_RETRY_DELAY_MS = 25;
2
2
  const MAX_RETRY_DELAY_MS = 1_000;
3
+ const RETRY_BACKOFF_MULTIPLIER = 2;
3
4
 
4
5
  export class ZLinkActorRetryDelay {
5
6
  private delayMs = INITIAL_RETRY_DELAY_MS;
@@ -11,7 +12,7 @@ export class ZLinkActorRetryDelay {
11
12
  async wait(signal: AbortSignal | undefined): Promise<boolean> {
12
13
  const completed = await delayUnlessAborted(this.delayMs, signal);
13
14
  if (completed) {
14
- this.delayMs = Math.min(this.delayMs * 2, MAX_RETRY_DELAY_MS);
15
+ this.delayMs = Math.min(this.delayMs * RETRY_BACKOFF_MULTIPLIER, MAX_RETRY_DELAY_MS);
15
16
  }
16
17
  return completed;
17
18
  }
@@ -18,20 +18,18 @@ export interface ZLinkActorRoutedJoinTransport {
18
18
  routerChannelId: string,
19
19
  targetNodeRid: string,
20
20
  packetName: string | undefined,
21
- message: unknown,
22
- signal?: AbortSignal
21
+ message: unknown
23
22
  ): Promise<ZLinkSubmitResult>;
24
23
  submitInfrastructure?(
25
24
  routerChannelId: string,
26
25
  targetNodeRid: string,
27
26
  packetName: string | undefined,
28
- message: unknown,
29
- signal?: AbortSignal
27
+ message: unknown
30
28
  ): Promise<ZLinkSubmitResult>;
31
29
  sendToSpot(
32
30
  spotRouteTarget: ZLinkSpotRouteTarget,
33
31
  message: unknown,
34
- options: { readonly packetName?: string; readonly signal?: AbortSignal }
32
+ options: { readonly packetName?: string }
35
33
  ): Promise<ZLinkSubmitResult>;
36
34
  requestRawToSpot?(
37
35
  spotRouteTarget: ZLinkSpotRouteTarget,