@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,10 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZLinkActorSessionBindingRegistry = exports.ZLinkActorSessionBindingTermination = void 0;
4
- const framework_errors_internal_1 = require("../framework-errors-internal");
5
- const abort_1 = require("../abort");
3
+ exports.ZLinkActorSessionBindingRegistry = exports.ZLinkActorSessionBindingTermination = exports.DEFAULT_TERMINAL_RELOCATION_CAPACITY = void 0;
6
4
  const node_async_hooks_1 = require("node:async_hooks");
5
+ const ZLinkFrameworkException_1 = require("../../contracts/Errors/ZLinkFrameworkException");
6
+ const Options_1 = require("../../contracts/Locations/Options");
7
+ const abort_1 = require("../abort");
7
8
  const state_lane_1 = require("../execution/state-lane");
9
+ const framework_errors_internal_1 = require("../framework-errors-internal");
10
+ exports.DEFAULT_TERMINAL_RELOCATION_CAPACITY = 4096;
8
11
  const detachedStateLaneResource = new node_async_hooks_1.AsyncResource('zlink:actor-session-binding-registry');
9
12
  var ZLinkActorSessionBindingTermination;
10
13
  (function (ZLinkActorSessionBindingTermination) {
@@ -13,7 +16,6 @@ var ZLinkActorSessionBindingTermination;
13
16
  })(ZLinkActorSessionBindingTermination || (exports.ZLinkActorSessionBindingTermination = ZLinkActorSessionBindingTermination = {}));
14
17
  class ZLinkActorSessionBindingRegistry {
15
18
  terminalRelocationCapacity;
16
- outboundCapacity;
17
19
  sealWaitTimeoutMs;
18
20
  errorSink;
19
21
  lane = new state_lane_1.ZLinkStateLane();
@@ -23,24 +25,20 @@ class ZLinkActorSessionBindingRegistry {
23
25
  activeFrameWaiters = new Map();
24
26
  relocations = new Map();
25
27
  terminalRelocations = new Map();
26
- constructor(terminalRelocationCapacity = 4096, outboundCapacity = 4096,
28
+ constructor(terminalRelocationCapacity = exports.DEFAULT_TERMINAL_RELOCATION_CAPACITY,
27
29
  // Spec 06 — SessionRelocationSealTimeout bounds how long a session
28
30
  // relocation seal may hold ingress (default 3,000 ms, finite only).
29
31
  // Every wait on the seal (accept paths) and on active-frame drain
30
32
  // (the sealing side) must observe that bound; an unbounded wait here
31
33
  // turns a lost control or a lifecycle interlock into a silent stall
32
34
  // (spec 48:205 — transport/deadline limits apply during relocation).
33
- sealWaitTimeoutMs = 3_000, errorSink) {
35
+ sealWaitTimeoutMs = Options_1.zlinkDefaultLocationOptions.sessionRelocationSealTimeoutMs, errorSink) {
34
36
  this.terminalRelocationCapacity = terminalRelocationCapacity;
35
- this.outboundCapacity = outboundCapacity;
36
37
  this.sealWaitTimeoutMs = sealWaitTimeoutMs;
37
38
  this.errorSink = errorSink;
38
39
  if (!Number.isSafeInteger(terminalRelocationCapacity) || terminalRelocationCapacity <= 0) {
39
40
  throw new RangeError('Session relocation terminal capacity must be a positive safe integer.');
40
41
  }
41
- if (!Number.isSafeInteger(outboundCapacity) || outboundCapacity <= 0) {
42
- throw new RangeError('Session relocation outbound capacity must be a positive safe integer.');
43
- }
44
42
  if (!Number.isSafeInteger(sealWaitTimeoutMs) || sealWaitTimeoutMs <= 0) {
45
43
  throw new RangeError('Session relocation seal timeout must be a positive safe integer.');
46
44
  }
@@ -48,7 +46,7 @@ class ZLinkActorSessionBindingRegistry {
48
46
  async bind(context, actor, bindingToken, authorityFence, sessionIdentity, commitActor) {
49
47
  await this.lane.run(() => this.commitCore(undefined, context, actor, bindingToken, authorityFence, sessionIdentity, commitActor));
50
48
  }
51
- async commitCore(previous, context, actor, bindingToken, authorityFence, sessionIdentity, commitActor) {
49
+ commitCore(previous, context, actor, bindingToken, authorityFence, sessionIdentity, commitActor) {
52
50
  const current = this.routes.get(actor.actorId);
53
51
  if (current !== previous) {
54
52
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorSessionNotBound, `Actor '${actor.actorId}' session binding changed before route commit.`, true);
@@ -75,7 +73,17 @@ class ZLinkActorSessionBindingRegistry {
75
73
  }
76
74
  }
77
75
  if (!sameBinding && actorSlot !== undefined) {
78
- await context.actorSlotControls.enqueueBound(actorSlot, actor.actorId);
76
+ // Session–Actor binding §5-2: `$zlink.actor.bound` enters the ordered
77
+ // STREAM queue before the slot is published; transport completion is
78
+ // not awaited inside the state lane (execution gate).
79
+ void context
80
+ .actorSlotControls.enqueueBound(actorSlot, actor.actorId)
81
+ .catch(async (error) => {
82
+ this.errorSink?.()?.reportRuntimeTaskException('session actor bound', error);
83
+ // The client never learned the slot, so the binding ends through
84
+ // the one unbind path; no `$zlink.actor.unbound` follows.
85
+ await this.unbind(actor.actorId, context, bindingToken, ZLinkActorSessionBindingTermination.PhysicalDisconnect).catch((unbindError) => this.errorSink?.()?.reportRuntimeTaskException('session actor bound', unbindError));
86
+ });
79
87
  }
80
88
  }
81
89
  catch (error) {
@@ -109,14 +117,14 @@ class ZLinkActorSessionBindingRegistry {
109
117
  async replaceAndReleaseSeal(previous, context, actor, bindingToken, sealId, authorityFence, sessionIdentity, commitActor) {
110
118
  await this.lane.run(() => this.replaceAndReleaseSealCore(previous, context, actor, bindingToken, sealId, authorityFence, sessionIdentity, commitActor));
111
119
  }
112
- async replaceAndReleaseSealCore(previous, context, actor, bindingToken, sealId, authorityFence, sessionIdentity, commitActor) {
120
+ replaceAndReleaseSealCore(previous, context, actor, bindingToken, sealId, authorityFence, sessionIdentity, commitActor) {
113
121
  if (previous.sealId !== sealId) {
114
122
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${actor.actorId}' route switch did not match its relocation seal.`, true);
115
123
  }
116
124
  // JavaScript cannot interleave another ingress turn between these two
117
125
  // synchronous mutations. The replacement preserves the seal, then the
118
126
  // exact release publishes the route to held ingress as one owner turn.
119
- await this.commitCore(previous, context, actor, bindingToken, authorityFence, sessionIdentity, commitActor);
127
+ this.commitCore(previous, context, actor, bindingToken, authorityFence, sessionIdentity, commitActor);
120
128
  if (!this.abortSealCore(actor.actorId, sealId)) {
121
129
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${actor.actorId}' route switch lost its relocation seal.`, true);
122
130
  }
@@ -130,6 +138,17 @@ class ZLinkActorSessionBindingRegistry {
130
138
  async route(actorId) {
131
139
  return await this.lane.run(() => this.routeCore(actorId));
132
140
  }
141
+ /** Selects the route only when it is the exact Session binding (§8.1 validation values). */
142
+ async routeForSessionBinding(actorId, sessionRid, bindingGeneration) {
143
+ return await this.lane.run(() => {
144
+ const route = this.routeCore(actorId);
145
+ const generation = route?.actor.ref.bindingGeneration;
146
+ return route?.sessionIdentity === sessionRid &&
147
+ (bindingGeneration === undefined || generation === bindingGeneration)
148
+ ? route
149
+ : undefined;
150
+ });
151
+ }
133
152
  routeCore(actorId) {
134
153
  return this.routes.get(actorId);
135
154
  }
@@ -144,9 +163,13 @@ class ZLinkActorSessionBindingRegistry {
144
163
  return Object.freeze({ context: route.context });
145
164
  }
146
165
  async unbind(actorId, context, bindingToken, termination = ZLinkActorSessionBindingTermination.BindingEnd) {
147
- await this.lane.run(() => this.unbindCore(actorId, context, bindingToken, termination));
166
+ const { submission } = await this.lane.run(() => ({
167
+ submission: this.unbindCore(actorId, context, bindingToken, termination)
168
+ }));
169
+ await submission;
148
170
  }
149
- async unbindCore(actorId, context, bindingToken, termination) {
171
+ /** Fixes the unbind order in the lane; the caller awaits transport completion outside it. */
172
+ unbindCore(actorId, context, bindingToken, termination) {
150
173
  const route = this.routes.get(actorId);
151
174
  if (route === undefined || route.context !== context || route.bindingToken !== bindingToken) {
152
175
  return;
@@ -155,29 +178,33 @@ class ZLinkActorSessionBindingRegistry {
155
178
  context.unbindLocal(actorId, bindingToken);
156
179
  this.rejectSealWaiters(actorId, new Error(`Actor '${actorId}' session binding was removed while ingress was held.`));
157
180
  this.rejectActiveFrameWaiters(actorId, new Error(`Actor '${actorId}' session binding was removed while accepted frames were active.`));
158
- this.clearRouteRelocation(actorId, route, new Error(`Actor '${actorId}' session binding was removed.`));
181
+ this.clearRouteRelocation(actorId, route);
159
182
  if (termination === ZLinkActorSessionBindingTermination.BindingEnd &&
160
183
  route.actorSlot !== undefined) {
161
- await context.actorSlotControls?.enqueueUnbound(route.actorSlot);
184
+ return context.actorSlotControls?.enqueueUnbound(route.actorSlot);
162
185
  }
186
+ return undefined;
163
187
  }
164
188
  async unbindActor(actorId) {
165
- await this.lane.run(() => this.unbindActorCore(actorId));
189
+ const { submission } = await this.lane.run(() => ({
190
+ submission: this.unbindActorCore(actorId)
191
+ }));
192
+ await submission;
166
193
  }
167
- async unbindActorCore(actorId) {
194
+ unbindActorCore(actorId) {
168
195
  const route = this.routes.get(actorId);
169
196
  if (route === undefined) {
170
- return;
197
+ return undefined;
171
198
  }
172
- await this.unbindCore(actorId, route.context, route.bindingToken, ZLinkActorSessionBindingTermination.BindingEnd);
199
+ return this.unbindCore(actorId, route.context, route.bindingToken, ZLinkActorSessionBindingTermination.BindingEnd);
173
200
  }
174
201
  async cleanup(context) {
175
202
  await this.lane.run(() => this.cleanupCore(context));
176
203
  }
177
- async cleanupCore(context) {
204
+ cleanupCore(context) {
178
205
  for (const route of [...this.routes.values()]) {
179
206
  if (route.context === context) {
180
- await this.unbindCore(route.actor.actorId, context, route.bindingToken, ZLinkActorSessionBindingTermination.PhysicalDisconnect);
207
+ this.unbindCore(route.actor.actorId, context, route.bindingToken, ZLinkActorSessionBindingTermination.PhysicalDisconnect);
181
208
  }
182
209
  }
183
210
  }
@@ -213,6 +240,25 @@ class ZLinkActorSessionBindingRegistry {
213
240
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${actorId}' session ingress is sealed for relocation.`, true);
214
241
  }
215
242
  }
243
+ async acceptOneWay(actorId, bindingToken, prepare) {
244
+ return await this.lane.run(() => {
245
+ const route = this.requireRouteCore(actorId);
246
+ this.requireCurrentTokenCore(actorId, bindingToken);
247
+ const queue = this.relocations.get(actorId);
248
+ if (queue === undefined ||
249
+ (route.sealId === undefined &&
250
+ queue.ingress.length === 0 &&
251
+ queue.ingressDrain === undefined))
252
+ return false;
253
+ queue.ingress.push({
254
+ ...prepare(),
255
+ sealId: route.sealId
256
+ });
257
+ if (route.sealId === undefined)
258
+ this.startHeldOneWayDrain(actorId, queue);
259
+ return true;
260
+ });
261
+ }
216
262
  /**
217
263
  * Holds Session ingress accepted after a relocation seal until the target
218
264
  * route is published and the seal is released. The caller keeps the
@@ -349,6 +395,9 @@ class ZLinkActorSessionBindingRegistry {
349
395
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorSessionNotBound, `Actor '${actorId}' session route seal was fenced by its binding identity.`, true);
350
396
  }
351
397
  route.sealId = sealId;
398
+ if (!this.relocations.has(actorId)) {
399
+ this.relocations.set(actorId, { actorId, seals: new Map(), ingress: [] });
400
+ }
352
401
  // A pre-seal REQUEST is captured as part of installing command 42. Its
353
402
  // Session frame no longer gates the seal; its single submission attempt
354
403
  // and terminal continue under the request admission state above.
@@ -397,13 +446,7 @@ class ZLinkActorSessionBindingRegistry {
397
446
  resolveTerminal = resolve;
398
447
  });
399
448
  const ready = this.waitForActiveFramesCore(claim.actorId, signal);
400
- const actorQueue = queue ?? {
401
- actorId: claim.actorId,
402
- seals: new Map(),
403
- outbound: [],
404
- nextArrivalOrder: 1n,
405
- outboundCount: 0
406
- };
449
+ const actorQueue = this.relocations.get(claim.actorId);
407
450
  const state = {
408
451
  ...claim,
409
452
  phase: 'sealed',
@@ -422,75 +465,6 @@ class ZLinkActorSessionBindingRegistry {
422
465
  relocationSnapshotCore(actorId, sealId) {
423
466
  return this.relocations.get(actorId)?.seals.get(sealId);
424
467
  }
425
- async retainRelocationOutbound(actorId, operation, sealId) {
426
- return await this.lane.run(() => this.retainRelocationOutboundCorePublic(actorId, operation, sealId));
427
- }
428
- retainRelocationOutboundCorePublic(actorId, operation, sealId) {
429
- if (sealId !== undefined) {
430
- const queue = this.relocations.get(actorId);
431
- const state = queue?.seals.get(sealId);
432
- if (queue === undefined ||
433
- state === undefined ||
434
- (queue.activeSealId !== sealId &&
435
- !(queue.activeSealId === undefined && state.phase === 'terminal'))) {
436
- failRetainedOutbound(operation, new Error(`Actor '${actorId}' Session outbound did not match its exact relocation seal.`));
437
- return 'rejected';
438
- }
439
- }
440
- return this.retainRelocationOutboundCore(actorId, operation);
441
- }
442
- /**
443
- * Session–Actor binding §8.1: the Session owner holds a push only while the
444
- * binding's relocation seal is open, and keeps it behind earlier held pushes.
445
- * Whether the push names the current binding was decided once by the Session
446
- * owner's binding record before this call.
447
- */
448
- retainRelocationOutboundCore(actorId, operation) {
449
- const queue = this.relocations.get(actorId);
450
- const state = queue?.activeSealId === undefined ? undefined : queue.seals.get(queue.activeSealId);
451
- if (queue === undefined)
452
- return 'passThrough';
453
- if (state === undefined || state.phase === 'applied' || state.phase === 'terminal') {
454
- if (queue.drainPromise === undefined && queue.outbound.length === 0)
455
- return 'passThrough';
456
- if (!this.reserveOutbound(queue, operation))
457
- return 'rejected';
458
- queue.outbound.push({
459
- operation,
460
- arrivalOrder: queue.nextArrivalOrder++,
461
- released: true,
462
- settled: false
463
- });
464
- this.startOutboundDrain(queue);
465
- return 'retained';
466
- }
467
- if (!this.reserveOutbound(queue, operation))
468
- return 'rejected';
469
- queue.outbound.push({
470
- sealId: state.sealId,
471
- operation,
472
- arrivalOrder: queue.nextArrivalOrder++,
473
- released: false,
474
- settled: false
475
- });
476
- return 'retained';
477
- }
478
- async discardRelocationOutbound(actorId, sealId, error) {
479
- await this.lane.run(() => this.discardRelocationOutboundCore(actorId, sealId, error));
480
- }
481
- discardRelocationOutboundCore(actorId, sealId, error) {
482
- const queue = this.relocations.get(actorId);
483
- if (queue === undefined)
484
- return;
485
- for (let index = queue.outbound.length - 1; index >= 0; index--) {
486
- const entry = queue.outbound[index];
487
- if (entry.sealId !== sealId)
488
- continue;
489
- queue.outbound.splice(index, 1);
490
- this.failOutbound(queue, entry, error);
491
- }
492
- this.deleteEmptyRelocationQueue(queue);
493
- }
494
468
  async applyRelocation(actorId, sealId, applyFingerprint, commitOwnerTransition) {
495
469
  const prepared = await this.lane.run(() => this.prepareRelocationApply(actorId, sealId, applyFingerprint));
496
470
  if (prepared.applyPromise !== undefined) {
@@ -522,7 +496,7 @@ class ZLinkActorSessionBindingRegistry {
522
496
  if (state.applyFingerprint !== applyFingerprint || state.applyPromise === undefined) {
523
497
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${actorId}' Session seal received a conflicting route apply.`, true);
524
498
  }
525
- return { queue, state, applyPromise: state.applyPromise };
499
+ return { state, applyPromise: state.applyPromise };
526
500
  }
527
501
  state.phase = 'applying';
528
502
  state.applyFingerprint = applyFingerprint;
@@ -534,27 +508,14 @@ class ZLinkActorSessionBindingRegistry {
534
508
  });
535
509
  state.applyPromise = promise;
536
510
  return {
537
- queue,
538
511
  state,
539
512
  promise,
540
513
  resolve,
541
- reject,
542
- sealId
514
+ reject
543
515
  };
544
516
  }
545
- /**
546
- * Command 44 commit or abort releases every push held under this seal in
547
- * arrival order (Session–Actor binding §8.1). The held pushes were admitted
548
- * by the current binding; the route change does not judge them again.
549
- */
550
517
  completeRelocationApply(prepared) {
551
- const { queue, state, sealId } = prepared;
552
- for (const entry of queue.outbound) {
553
- if (entry.sealId === sealId)
554
- entry.released = true;
555
- }
556
- this.startOutboundDrain(queue);
557
- state.phase = 'applied';
518
+ prepared.state.phase = 'applied';
558
519
  }
559
520
  failRelocationApply(prepared) {
560
521
  prepared.state.phase = 'sealed';
@@ -585,7 +546,7 @@ class ZLinkActorSessionBindingRegistry {
585
546
  }
586
547
  /**
587
548
  * Actor-wide relocation teardown: every seal (active and terminal-retained)
588
- * and every held outbound entry for `actorId` is discarded unconditionally.
549
+ * for `actorId` is discarded unconditionally.
589
550
  * Reserved for paths where the Actor itself is gone or being torn down
590
551
  * (destroy, ownership clear, relocation-seal expiry/failure) — never for a
591
552
  * single physical route's disconnect, which must not disturb a relocation
@@ -598,9 +559,14 @@ class ZLinkActorSessionBindingRegistry {
598
559
  const queue = this.relocations.get(actorId);
599
560
  if (queue === undefined)
600
561
  return;
562
+ this.rejectSealWaiters(actorId, error, error instanceof ZLinkFrameworkException_1.ZLinkFrameworkException &&
563
+ error.kind === ZLinkFrameworkException_1.ZLinkFrameworkErrorKind.DeadlineExceeded
564
+ ? 'target_closed'
565
+ : error instanceof ZLinkFrameworkException_1.ZLinkFrameworkException &&
566
+ error.kind === ZLinkFrameworkException_1.ZLinkFrameworkErrorKind.ShuttingDown
567
+ ? 'shutdown'
568
+ : 'stale_target');
601
569
  this.relocations.delete(actorId);
602
- for (const entry of queue.outbound.splice(0))
603
- this.failOutbound(queue, entry, error);
604
570
  for (const state of queue.seals.values()) {
605
571
  this.terminalRelocations.delete(state);
606
572
  if (state.phase !== 'terminal')
@@ -611,14 +577,14 @@ class ZLinkActorSessionBindingRegistry {
611
577
  * Spec 48 §137: a relocation seal's lifecycle is independent of any single
612
578
  * physical route's binding. Unbinding one physical route (a disconnect)
613
579
  * must retire only the still-open (nonterminal) relocation seal that this
614
- * exact route's Session owns, and the outbound held against that seal — it
580
+ * exact route's Session owns — it
615
581
  * must never reach into a seal that has already reached 'terminal' (its
616
582
  * bounded retention exists precisely so a late same-seal relay can still
617
583
  * pass on a successor route) nor into a different Session's active seal
618
584
  * (a concurrent successor that already re-sealed before this stale route
619
585
  * noticed the disconnect).
620
586
  */
621
- clearRouteRelocation(actorId, route, error) {
587
+ clearRouteRelocation(actorId, route) {
622
588
  const queue = this.relocations.get(actorId);
623
589
  if (queue === undefined)
624
590
  return;
@@ -633,13 +599,6 @@ class ZLinkActorSessionBindingRegistry {
633
599
  this.deleteEmptyRelocationQueue(queue);
634
600
  return;
635
601
  }
636
- for (let index = queue.outbound.length - 1; index >= 0; index--) {
637
- const entry = queue.outbound[index];
638
- if (entry.sealId !== activeSealId)
639
- continue;
640
- queue.outbound.splice(index, 1);
641
- this.failOutbound(queue, entry, error);
642
- }
643
602
  queue.activeSealId = undefined;
644
603
  queue.seals.delete(activeSealId);
645
604
  this.terminalRelocations.delete(activeState);
@@ -823,77 +782,6 @@ class ZLinkActorSessionBindingRegistry {
823
782
  for (const waiter of waiters)
824
783
  waiter.reject(error);
825
784
  }
826
- startOutboundDrain(queue) {
827
- if (queue.drainPromise !== undefined)
828
- return;
829
- const drain = startOutsideStateLane(async () => {
830
- for (;;) {
831
- const entry = await this.lane.run(() => {
832
- const current = queue.outbound.at(0);
833
- if (current === undefined || !current.released)
834
- return undefined;
835
- if (current.settled) {
836
- queue.outbound.shift();
837
- return null;
838
- }
839
- return current;
840
- });
841
- if (entry === undefined)
842
- return;
843
- if (entry === null)
844
- continue;
845
- try {
846
- const delivered = await entry.operation.deliver();
847
- await this.lane.run(() => {
848
- if (delivered)
849
- this.settleOutbound(queue, entry);
850
- else
851
- this.failOutbound(queue, entry, new Error(`Actor '${queue.actorId}' retained Session outbound delivery was rejected.`));
852
- if (queue.outbound[0] === entry)
853
- queue.outbound.shift();
854
- });
855
- }
856
- catch (error) {
857
- await this.lane.run(() => {
858
- this.failOutbound(queue, entry, error);
859
- if (queue.outbound[0] === entry)
860
- queue.outbound.shift();
861
- });
862
- }
863
- }
864
- });
865
- startOutsideStateLane(() => {
866
- void drain.finally(async () => await this.lane.run(() => {
867
- if (queue.drainPromise === drain)
868
- queue.drainPromise = undefined;
869
- if (queue.outbound[0]?.released === true)
870
- this.startOutboundDrain(queue);
871
- else
872
- this.deleteEmptyRelocationQueue(queue);
873
- }));
874
- });
875
- queue.drainPromise = drain;
876
- }
877
- reserveOutbound(queue, operation) {
878
- if (queue.outboundCount < this.outboundCapacity) {
879
- queue.outboundCount++;
880
- return true;
881
- }
882
- failRetainedOutbound(operation, new Error(`Actor '${queue.actorId}' Session relocation outbound capacity was exhausted.`));
883
- return false;
884
- }
885
- settleOutbound(queue, entry) {
886
- if (entry.settled)
887
- return;
888
- entry.settled = true;
889
- queue.outboundCount--;
890
- }
891
- failOutbound(queue, entry, error) {
892
- if (entry.settled)
893
- return;
894
- this.settleOutbound(queue, entry);
895
- failRetainedOutbound(entry.operation, error);
896
- }
897
785
  rememberTerminalRelocation(state) {
898
786
  this.terminalRelocations.delete(state);
899
787
  this.terminalRelocations.set(state, true);
@@ -912,13 +800,21 @@ class ZLinkActorSessionBindingRegistry {
912
800
  deleteEmptyRelocationQueue(queue) {
913
801
  if (queue.activeSealId === undefined &&
914
802
  queue.seals.size === 0 &&
915
- queue.outbound.length === 0 &&
916
- queue.drainPromise === undefined &&
803
+ queue.ingress.length === 0 &&
804
+ queue.ingressDrain === undefined &&
917
805
  this.relocations.get(queue.actorId) === queue) {
918
806
  this.relocations.delete(queue.actorId);
919
807
  }
920
808
  }
921
- resolveSealWaiters(actorId, _sealId) {
809
+ resolveSealWaiters(actorId, sealId) {
810
+ const queue = this.relocations.get(actorId);
811
+ if (queue !== undefined) {
812
+ for (const entry of queue.ingress) {
813
+ if (entry.sealId === sealId)
814
+ entry.sealId = undefined;
815
+ }
816
+ this.startHeldOneWayDrain(actorId, queue);
817
+ }
922
818
  const waiters = this.sealWaiters.get(actorId);
923
819
  if (waiters === undefined)
924
820
  return;
@@ -926,7 +822,12 @@ class ZLinkActorSessionBindingRegistry {
926
822
  for (const waiter of waiters)
927
823
  waiter.resolve();
928
824
  }
929
- rejectSealWaiters(actorId, error) {
825
+ rejectSealWaiters(actorId, error, reason = 'target_closed') {
826
+ const queue = this.relocations.get(actorId);
827
+ if (queue !== undefined) {
828
+ for (const delivery of queue.ingress.splice(0))
829
+ delivery.drop(reason, error);
830
+ }
930
831
  const waiters = this.sealWaiters.get(actorId);
931
832
  if (waiters === undefined)
932
833
  return;
@@ -934,6 +835,44 @@ class ZLinkActorSessionBindingRegistry {
934
835
  for (const waiter of waiters)
935
836
  waiter.reject(error);
936
837
  }
838
+ startHeldOneWayDrain(actorId, queue) {
839
+ if (queue.ingressDrain !== undefined)
840
+ return;
841
+ const drain = startOutsideStateLane(async () => {
842
+ for (;;) {
843
+ const next = await this.lane.run(() => {
844
+ if (this.relocations.get(actorId) !== queue)
845
+ return undefined;
846
+ const first = queue.ingress.at(0);
847
+ if (first === undefined || first.sealId !== undefined)
848
+ return undefined;
849
+ return queue.ingress.shift();
850
+ });
851
+ if (next === undefined)
852
+ return;
853
+ try {
854
+ await next.deliver();
855
+ }
856
+ catch (error) {
857
+ next.drop('stale_target', error);
858
+ }
859
+ }
860
+ });
861
+ queue.ingressDrain = drain;
862
+ startOutsideStateLane(() => {
863
+ void drain.finally(async () => {
864
+ await this.lane.run(() => {
865
+ if (queue.ingressDrain !== drain)
866
+ return;
867
+ queue.ingressDrain = undefined;
868
+ if (queue.ingress.at(0)?.sealId === undefined && queue.ingress.length > 0)
869
+ this.startHeldOneWayDrain(actorId, queue);
870
+ else
871
+ this.deleteEmptyRelocationQueue(queue);
872
+ });
873
+ });
874
+ });
875
+ }
937
876
  }
938
877
  exports.ZLinkActorSessionBindingRegistry = ZLinkActorSessionBindingRegistry;
939
878
  function assertRelocationClaim(state, claim) {
@@ -948,15 +887,6 @@ function assertRelocationClaim(state, claim) {
948
887
  function startOutsideStateLane(work) {
949
888
  return detachedStateLaneResource.runInAsyncScope(work);
950
889
  }
951
- function failRetainedOutbound(operation, error) {
952
- try {
953
- operation.fail(error);
954
- }
955
- catch {
956
- // The aggregate has already removed the entry. A failure observer cannot
957
- // retain or settle the same delivery a second time.
958
- }
959
- }
960
890
  function assertSuccessorSessionIdentity(predecessor, successor) {
961
891
  if (predecessor.actorGeneration !== successor.actorGeneration ||
962
892
  predecessor.bindingGeneration !== successor.bindingGeneration ||
@@ -1,12 +1,9 @@
1
1
  import type { ActorRef } from '../../contracts';
2
- import type { ServiceSessionBindingAdmissionResult } from '../foundation/service-session-binding-ingress-port';
3
- import type { ZLinkActorSessionAuthorityFence, ZLinkActorSessionRelocationClaim, ZLinkActorSessionRelocationSnapshot, ZLinkActorSessionRetainedOutbound, ZLinkActorSessionRouteFence } from './actor-session-binding-registry';
2
+ import type { ZLinkActorSessionAuthorityFence, ZLinkActorSessionRelocationClaim, ZLinkActorSessionRelocationSnapshot, ZLinkActorSessionRouteFence } from './actor-session-binding-registry';
4
3
  export interface ZLinkActorSessionBindingRuntimeOwner {
5
4
  actorSlot(actorId: string, sessionRid: string): Promise<number | undefined>;
6
5
  sealRelocation(claim: ZLinkActorSessionRelocationClaim, expected: ZLinkActorSessionRouteFence, signal?: AbortSignal): Promise<void>;
7
6
  relocationSnapshot(actorId: string, sealId: string): Promise<ZLinkActorSessionRelocationSnapshot | undefined>;
8
- retainRelocationOutbound(actorId: string, operation: ZLinkActorSessionRetainedOutbound, sealId?: string): Promise<ServiceSessionBindingAdmissionResult>;
9
- discardRelocationOutbound(actorId: string, sealId: string, error: unknown): Promise<void>;
10
7
  applyRelocation(actorId: string, sealId: string, applyFingerprint: string, commitOwnerTransition: () => Promise<void>): Promise<void>;
11
8
  observeRelocationTerminal(actorId: string, sealId: string, applyFingerprint: string): Promise<void>;
12
9
  clearRelocation(actorId: string, error: unknown): Promise<void>;
@@ -1,15 +1,18 @@
1
1
  import type { ZLinkMessage, ZLinkMessageSerializer, ZLinkSessionActor } from '../../contracts';
2
- import { type ZLinkSubmitResult } from '../messaging/submission-result';
3
2
  import type { Message } from '../../contracts/Common/Message';
4
- import { type ZLinkStreamFrameHeader } from './protocol';
3
+ import type { ZLinkDispatchErrorReporter } from '../channels';
4
+ import { type ZLinkSubmitResult } from '../messaging/submission-result';
5
5
  import { ZLinkActorSessionBindingRegistry } from './actor-session-binding-registry';
6
6
  import { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
7
+ import { type ZLinkStreamFrameHeader } from './protocol';
7
8
  import { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
8
9
  import { ZLinkStreamFrameMessageFactory } from './stream-frame-factory';
10
+ export declare const DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS = 2000;
9
11
  export interface ZLinkBoundActorRelaySenderOptions {
12
+ readonly dispatchErrors?: ZLinkDispatchErrorReporter;
10
13
  readonly actorBindTimeoutMs?: number;
11
14
  readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
12
- readonly relay?: (actor: ZLinkSessionActor, header: ZLinkStreamFrameHeader, payload: Message, signal?: AbortSignal) => Promise<boolean>;
15
+ readonly relay?: (actor: ZLinkSessionActor, header: ZLinkStreamFrameHeader, payload: Message) => Promise<boolean>;
13
16
  readonly notifyDisconnected?: (actor: ZLinkSessionActor, signal?: AbortSignal) => Promise<void>;
14
17
  }
15
18
  export declare class ZLinkBoundActorRelaySender {
@@ -18,7 +21,8 @@ export declare class ZLinkBoundActorRelaySender {
18
21
  private readonly options;
19
22
  private readonly lifecycle;
20
23
  constructor(routes: ZLinkActorSessionBindingRegistry<DefaultZLinkSessionContext, DefaultZLinkSessionActor>, frameMessages: ZLinkStreamFrameMessageFactory, options?: ZLinkBoundActorRelaySenderOptions, lifecycle?: ZLinkActorSessionLifecycleCoordinator);
21
- relay(actor: DefaultZLinkSessionActor, payload: ZLinkMessage, signal?: AbortSignal, dispatchHeader?: ZLinkStreamFrameHeader): Promise<ZLinkSubmitResult>;
24
+ relay(actor: DefaultZLinkSessionActor, payload: ZLinkMessage, dispatchHeader?: ZLinkStreamFrameHeader): Promise<ZLinkSubmitResult>;
25
+ private traceHeldDrop;
22
26
  private relayAcceptedFrame;
23
27
  private currentHeader;
24
28
  private requireDispatchHeader;