@zlink-systems/framework 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  3. package/dist/contracts/Common/CoreTypes.js +7 -0
  4. package/dist/contracts/Common/index.d.ts +1 -1
  5. package/dist/contracts/Common/index.js +0 -1
  6. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  7. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  8. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  9. package/dist/contracts/Configuration/Registration.js +58 -36
  10. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  12. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  16. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  17. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  18. package/dist/contracts/Handlers/JsonContract.js +10 -4
  19. package/dist/contracts/Locations/Authority.d.ts +1 -1
  20. package/dist/contracts/Locations/Authority.js +3 -2
  21. package/dist/contracts/Locations/Options.js +1 -1
  22. package/dist/contracts/Locations/Stores.d.ts +12 -0
  23. package/dist/contracts/Locations/Stores.js +9 -0
  24. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  25. package/dist/internal.d.ts +4 -0
  26. package/dist/internal.js +15 -1
  27. package/dist/nest-integration.d.ts +4 -2
  28. package/dist/nest-integration.js +14 -4
  29. package/dist/runtime/abort.d.ts +1 -0
  30. package/dist/runtime/abort.js +8 -5
  31. package/dist/runtime/activation-admission.d.ts +1 -2
  32. package/dist/runtime/activation-admission.js +2 -6
  33. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  34. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  35. package/dist/runtime/actors/actor-client.d.ts +2 -2
  36. package/dist/runtime/actors/actor-client.js +42 -143
  37. package/dist/runtime/actors/actor-context.d.ts +3 -5
  38. package/dist/runtime/actors/actor-context.js +13 -11
  39. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  40. package/dist/runtime/actors/actor-handoff.js +8 -8
  41. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  42. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  43. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  44. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  45. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  46. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  47. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  48. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  49. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  50. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  51. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  52. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  53. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  54. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  55. package/dist/runtime/actors/bound-session-wire.js +2 -7
  56. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  57. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  58. package/dist/runtime/actors/index.d.ts +9 -7
  59. package/dist/runtime/actors/index.js +87 -69
  60. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  61. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  62. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  63. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  64. package/dist/runtime/admission.d.ts +2 -0
  65. package/dist/runtime/admission.js +7 -1
  66. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  67. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  68. package/dist/runtime/backend/contracts/index.d.ts +6 -23
  69. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  70. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  71. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  72. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
  73. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
  74. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  75. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  76. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  77. package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
  78. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  79. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  80. package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
  81. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  82. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  83. package/dist/runtime/backend/runtime-values.js +2 -0
  84. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  85. package/dist/runtime/channels/channel-clients.js +68 -52
  86. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  87. package/dist/runtime/channels/channel-envelope.js +47 -29
  88. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  89. package/dist/runtime/channels/channel-outbound-operations.js +9 -10
  90. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  91. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  94. package/dist/runtime/channels/channel-runtime-manager.js +5 -2
  95. package/dist/runtime/channels/channel-socket-options.js +3 -2
  96. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  97. package/dist/runtime/channels/channel-socket-registry.js +248 -174
  98. package/dist/runtime/channels/channel-transports.d.ts +11 -17
  99. package/dist/runtime/channels/channel-transports.js +68 -47
  100. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  101. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  102. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  103. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  104. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  105. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  106. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  107. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  108. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  109. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  110. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  111. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  112. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  113. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  114. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  115. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  116. package/dist/runtime/diagnostics/flow-context.js +16 -2
  117. package/dist/runtime/diagnostics/index.d.ts +4 -2
  118. package/dist/runtime/diagnostics/index.js +14 -4
  119. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  120. package/dist/runtime/diagnostics/message-flow.js +10 -19
  121. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  122. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  123. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  124. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  125. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  126. package/dist/runtime/disposal.d.ts +5 -0
  127. package/dist/runtime/disposal.js +22 -0
  128. package/dist/runtime/execution/index.d.ts +12 -9
  129. package/dist/runtime/execution/index.js +58 -14
  130. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  131. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  132. package/dist/runtime/execution/state-lane.d.ts +8 -1
  133. package/dist/runtime/execution/state-lane.js +118 -3
  134. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  135. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  136. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  137. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  138. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  139. package/dist/runtime/foundation/operation-identity.js +9 -5
  140. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  141. package/dist/runtime/foundation/operation-registry.js +34 -44
  142. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  143. package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
  144. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  145. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  146. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  147. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  148. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  149. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  150. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  151. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  152. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  153. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  154. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  155. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  156. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  157. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  158. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  159. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  160. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  161. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  162. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  163. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  164. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  165. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  166. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  167. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  168. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  169. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  170. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  171. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  172. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  173. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  174. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  175. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  176. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  177. package/dist/runtime/framework-errors-internal.js +343 -122
  178. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  179. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  180. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  181. package/dist/runtime/host/actor-packet-relay.js +48 -91
  182. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  183. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  184. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  185. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  186. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  187. package/dist/runtime/host/application-job-queue.js +16 -33
  188. package/dist/runtime/host/bound-session-relay.js +1 -1
  189. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  190. package/dist/runtime/host/index.d.ts +14 -13
  191. package/dist/runtime/host/index.js +190 -157
  192. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  193. package/dist/runtime/host/instance-activation-authority.js +17 -45
  194. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  195. package/dist/runtime/host/location-runtime-owner.js +2 -2
  196. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  197. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  198. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  199. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  200. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  201. package/dist/runtime/host/remote-bound-session-relay.js +7 -20
  202. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  203. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  204. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  205. package/dist/runtime/host/runtime-shutdown.js +18 -21
  206. package/dist/runtime/host/service-relocation-control.js +6 -1
  207. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  208. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  209. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  210. package/dist/runtime/host/spot-address-transport.js +34 -136
  211. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  212. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  213. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  214. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  215. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  216. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  217. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  218. package/dist/runtime/locations/authority-key-codec.js +4 -3
  219. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  220. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  221. package/dist/runtime/locations/creation-operation-id.js +6 -4
  222. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  223. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  224. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  225. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  226. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  227. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  228. package/dist/runtime/locations/key-codec.js +3 -2
  229. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  230. package/dist/runtime/locations/lease-tracker.js +7 -11
  231. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  232. package/dist/runtime/locations/lifecycle.js +2 -31
  233. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  234. package/dist/runtime/locations/location-store-failure.js +7 -0
  235. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  236. package/dist/runtime/locations/location-store-pages.js +13 -0
  237. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  238. package/dist/runtime/locations/location-store-repository.js +303 -332
  239. package/dist/runtime/locations/relocation-blob.js +18 -5
  240. package/dist/runtime/locations/resolvers.d.ts +5 -5
  241. package/dist/runtime/locations/resolvers.js +37 -28
  242. package/dist/runtime/locations/runtime.d.ts +5 -4
  243. package/dist/runtime/locations/runtime.js +123 -92
  244. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  245. package/dist/runtime/locations/spot-location-claims.js +42 -1
  246. package/dist/runtime/messaging/payload-codec.js +26 -20
  247. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  248. package/dist/runtime/messaging/submission-result.js +48 -0
  249. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  250. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  251. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  252. package/dist/runtime/spots/index.d.ts +14 -20
  253. package/dist/runtime/spots/index.js +302 -176
  254. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  255. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  256. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  257. package/dist/runtime/spots/spot-activation-state.js +2 -2
  258. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  259. package/dist/runtime/spots/spot-activation.js +49 -32
  260. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  261. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  262. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  263. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  264. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  265. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  266. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  267. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  268. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  269. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  270. package/dist/runtime/spots/spot-context.d.ts +2 -2
  271. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  272. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  273. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  274. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  275. package/dist/runtime/spots/spot-manager-public.js +5 -4
  276. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  277. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  278. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  279. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  280. package/dist/runtime/spots/spot-outbound.js +9 -8
  281. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  282. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  283. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  284. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  285. package/dist/runtime/spots/spot-route-replies.js +3 -1
  286. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  287. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  288. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  289. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  290. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  291. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  292. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  293. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  294. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  295. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  296. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  297. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  298. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  299. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  300. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  301. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  302. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  303. package/dist/runtime/streams/bound-session-service.js +11 -1
  304. package/dist/runtime/streams/index.d.ts +14 -15
  305. package/dist/runtime/streams/index.js +20 -21
  306. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  307. package/dist/runtime/streams/managed-stream.js +17 -8
  308. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  309. package/dist/runtime/streams/protocol.d.ts +6 -33
  310. package/dist/runtime/streams/protocol.js +38 -110
  311. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  312. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  313. package/dist/runtime/streams/session-calls.d.ts +1 -1
  314. package/dist/runtime/streams/session-calls.js +5 -4
  315. package/dist/runtime/streams/session-context.d.ts +6 -6
  316. package/dist/runtime/streams/session-context.js +22 -4
  317. package/dist/runtime/streams/session-requests.js +2 -1
  318. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  319. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  320. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  321. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  322. package/dist/runtime/workers/index.d.ts +2 -2
  323. package/dist/runtime/workers/index.js +5 -4
  324. package/package.json +3 -3
  325. package/src/contracts/Common/CoreTypes.ts +7 -0
  326. package/src/contracts/Common/index.ts +1 -1
  327. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  328. package/src/contracts/Configuration/Registration.ts +92 -48
  329. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  330. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  331. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  332. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  333. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  334. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  335. package/src/contracts/Handlers/JsonContract.ts +14 -4
  336. package/src/contracts/Locations/Authority.ts +7 -3
  337. package/src/contracts/Locations/Options.ts +1 -1
  338. package/src/contracts/Locations/Stores.ts +14 -0
  339. package/src/contracts/Spots/Contracts.ts +1 -1
  340. package/src/internal.ts +14 -0
  341. package/src/nest-integration.ts +28 -10
  342. package/src/runtime/abort.ts +6 -5
  343. package/src/runtime/activation-admission.ts +2 -8
  344. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  345. package/src/runtime/actors/actor-client.ts +77 -204
  346. package/src/runtime/actors/actor-context.ts +39 -33
  347. package/src/runtime/actors/actor-handoff.ts +24 -22
  348. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  349. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  350. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  351. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  352. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  353. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  354. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  355. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  356. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  357. package/src/runtime/actors/bound-session-wire.ts +2 -8
  358. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  359. package/src/runtime/actors/index.ts +100 -79
  360. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  361. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  362. package/src/runtime/admission.ts +8 -1
  363. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  364. package/src/runtime/backend/contracts/index.ts +13 -29
  365. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  366. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  367. package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
  368. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  369. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  370. package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
  371. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  372. package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
  373. package/src/runtime/backend/raw-binding-port.ts +1 -1
  374. package/src/runtime/backend/runtime-values.ts +4 -1
  375. package/src/runtime/channels/channel-clients.ts +132 -85
  376. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  377. package/src/runtime/channels/channel-envelope.ts +58 -29
  378. package/src/runtime/channels/channel-outbound-operations.ts +10 -23
  379. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  380. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  381. package/src/runtime/channels/channel-runtime-manager.ts +6 -2
  382. package/src/runtime/channels/channel-socket-options.ts +8 -2
  383. package/src/runtime/channels/channel-socket-registry.ts +301 -192
  384. package/src/runtime/channels/channel-transports.ts +161 -112
  385. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  386. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  387. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  388. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  389. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  390. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  391. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  392. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  393. package/src/runtime/diagnostics/flow-context.ts +16 -2
  394. package/src/runtime/diagnostics/index.ts +27 -17
  395. package/src/runtime/diagnostics/message-flow.ts +15 -25
  396. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  397. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  398. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  399. package/src/runtime/disposal.ts +19 -0
  400. package/src/runtime/execution/index.ts +60 -20
  401. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  402. package/src/runtime/execution/state-lane.ts +142 -4
  403. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  404. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  405. package/src/runtime/foundation/operation-identity.ts +11 -5
  406. package/src/runtime/foundation/operation-registry.ts +33 -50
  407. package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
  408. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  409. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  410. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  411. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  412. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  413. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  414. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  415. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  416. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  417. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  418. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  419. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  420. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  421. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  422. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  423. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  424. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  425. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  426. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  427. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  428. package/src/runtime/framework-errors-internal.ts +380 -134
  429. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  430. package/src/runtime/host/actor-packet-relay.ts +57 -147
  431. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  432. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  433. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  434. package/src/runtime/host/application-job-queue.ts +28 -34
  435. package/src/runtime/host/bound-session-relay.ts +1 -2
  436. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  437. package/src/runtime/host/index.ts +327 -296
  438. package/src/runtime/host/instance-activation-authority.ts +89 -109
  439. package/src/runtime/host/location-runtime-owner.ts +4 -2
  440. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  441. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  442. package/src/runtime/host/remote-bound-session-relay.ts +8 -41
  443. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  444. package/src/runtime/host/runtime-shutdown.ts +17 -21
  445. package/src/runtime/host/service-relocation-control.ts +14 -1
  446. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  447. package/src/runtime/host/spot-address-transport.ts +73 -195
  448. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  449. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  450. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  451. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  452. package/src/runtime/locations/authority-key-codec.ts +7 -3
  453. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  454. package/src/runtime/locations/creation-operation-id.ts +6 -3
  455. package/src/runtime/locations/domain-store-contract.ts +12 -3
  456. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  457. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  458. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  459. package/src/runtime/locations/key-codec.ts +3 -2
  460. package/src/runtime/locations/lease-tracker.ts +8 -14
  461. package/src/runtime/locations/lifecycle.ts +13 -43
  462. package/src/runtime/locations/location-store-failure.ts +4 -0
  463. package/src/runtime/locations/location-store-pages.ts +18 -0
  464. package/src/runtime/locations/location-store-repository.ts +450 -478
  465. package/src/runtime/locations/relocation-blob.ts +17 -6
  466. package/src/runtime/locations/resolvers.ts +75 -49
  467. package/src/runtime/locations/runtime.ts +220 -110
  468. package/src/runtime/locations/spot-location-claims.ts +58 -1
  469. package/src/runtime/messaging/payload-codec.ts +35 -24
  470. package/src/runtime/messaging/submission-result.ts +57 -1
  471. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  472. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  473. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  474. package/src/runtime/spots/index.ts +433 -229
  475. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  476. package/src/runtime/spots/spot-activation-state.ts +2 -2
  477. package/src/runtime/spots/spot-activation.ts +67 -37
  478. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  479. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  480. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  481. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  482. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  483. package/src/runtime/spots/spot-context.ts +3 -3
  484. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  485. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  486. package/src/runtime/spots/spot-manager-public.ts +21 -17
  487. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  488. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  489. package/src/runtime/spots/spot-outbound.ts +45 -23
  490. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  491. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  492. package/src/runtime/spots/spot-route-replies.ts +6 -4
  493. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  494. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  495. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  496. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  497. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  498. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  499. package/src/runtime/spots/spot-timer.ts +3 -2
  500. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  501. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  502. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  503. package/src/runtime/streams/bound-session-service.ts +21 -1
  504. package/src/runtime/streams/index.ts +76 -64
  505. package/src/runtime/streams/managed-stream.ts +29 -10
  506. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  507. package/src/runtime/streams/protocol.ts +34 -88
  508. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  509. package/src/runtime/streams/session-calls.ts +6 -5
  510. package/src/runtime/streams/session-context.ts +54 -10
  511. package/src/runtime/streams/session-requests.ts +2 -1
  512. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  513. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  514. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  515. package/src/runtime/workers/index.ts +13 -12
  516. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  517. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  518. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  519. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  520. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  521. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -17,12 +17,11 @@ interface ZLinkRoutedFrameAdmissionTarget {
17
17
  interface ZLinkSpotRoutedFrameDispatchOptions {
18
18
  readonly nativeSpotId: string;
19
19
  readonly serial: ZLinkSpotSerialTurnExecutor;
20
- readonly isSpotClosing?: () => boolean;
21
20
  readonly resolveActor: (actorId: string) => ZLinkActor | undefined;
22
21
  readonly getTarget: () => ZLinkRoutedFrameAdmissionTarget & ZLinkSpot;
23
22
  readonly defaultAccept: boolean;
24
23
  readonly routedActorTransferProvider?: ZLinkRoutedActorTransferProvider;
25
- readonly commitTransferredActor?: (actor: ZLinkActor, backlog: readonly ZLinkActorHandoffPacket[]) => Promise<readonly ZLinkActorHandoffResult[]>;
24
+ readonly commitTransferredActor?: (actor: ZLinkActor, backlog: readonly ZLinkActorHandoffPacket[], sealedSession: ZLinkRemoteBoundSessionTarget | undefined) => Promise<readonly ZLinkActorHandoffResult[]>;
26
25
  readonly actorPacketHandler?: (delivery: ZLinkActorPacketDelivery) => Promise<unknown>;
27
26
  readonly routedBoundSessionReceiver?: (actorId: string, message: unknown, packetName: string | undefined, metadata: ReadonlyMap<string, string>, actorRef?: ActorRef, actorPacketTarget?: unknown, signal?: AbortSignal) => Promise<void>;
28
27
  readonly routedBoundSessionResponseReceiver?: (actorId: string, packetName: string, requestSeq: bigint, message: unknown, replyOptions: ZLinkActorResponseOptions, actorPacketTarget?: unknown, signal?: AbortSignal) => Promise<void>;
@@ -40,7 +40,6 @@ class ZLinkSpotRoutedFrameDispatch {
40
40
  });
41
41
  this.routedActorAdmission = new spot_routed_actor_admission_1.ZLinkSpotRoutedActorAdmission({
42
42
  serial: options.serial,
43
- isSpotClosing: options.isSpotClosing,
44
43
  getTarget: options.getTarget,
45
44
  defaultAccept: options.defaultAccept,
46
45
  routedActorTransferProvider: options.routedActorTransferProvider,
@@ -6,6 +6,7 @@ import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
6
6
  import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
7
7
  import type { ZLinkSerialWorkOptions } from '../execution/serial-execution-queue';
8
8
  interface ZLinkRoutedSpotPacketActivation {
9
+ readonly objectGeneration?: bigint;
9
10
  readonly meshName?: string;
10
11
  readonly spotId: RoutingId;
11
12
  readonly spot: ZLinkSpot;
@@ -28,6 +29,9 @@ interface ZLinkRoutedSpotPacketContext {
28
29
  readonly signal?: AbortSignal;
29
30
  /** Wait until a recovered activation has actually entered its first handler. */
30
31
  readonly awaitFirstHandlerTurn?: boolean;
32
+ readonly onOneWayError?: (error: unknown) => void;
33
+ /** Retains the caller's Instance address intent through an incarnation boundary. */
34
+ readonly activationRecord?: import('../foundation/service-runtime-contracts').ReceiveRecord;
31
35
  }
32
36
  export declare class ZLinkRoutedSpotPacketDispatch {
33
37
  private readonly options;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkRoutedSpotPacketDispatch = void 0;
4
+ const dispatch_error_details_1 = require("../diagnostics/dispatch-error-details");
4
5
  const contracts_1 = require("../../contracts");
5
6
  const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
6
7
  const configuration_1 = require("../configuration");
@@ -58,17 +59,42 @@ class ZLinkRoutedSpotPacketDispatch {
58
59
  const applicationClaim = activation.meshName === undefined
59
60
  ? undefined
60
61
  : this.options.claimApplicationWork?.(activation.meshName);
61
- const runHandler = async () => {
62
+ const originalRecord = context.activationRecord?.activationRecord;
63
+ const instanceIntent = originalRecord?.activation === 'missing' ||
64
+ (originalRecord?.activation === 'ready' && originalRecord.instanceIntent);
65
+ const runHandler = async (failure) => {
62
66
  try {
67
+ if (failure !== undefined)
68
+ throw failure;
69
+ const current = this.options.resolveActivation(spotId);
70
+ if (current === undefined ||
71
+ (!instanceIntent &&
72
+ (current !== activation ||
73
+ (originalRecord?.activation === 'ready' &&
74
+ originalRecord.route.objectGeneration !== current.objectGeneration)))) {
75
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, `Spot '${String(spotId)}' is not active.`);
76
+ }
77
+ if (context.activationRecord?.deadlineUnixMs !== undefined &&
78
+ context.activationRecord.deadlineUnixMs < BigInt(Date.now())) {
79
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded, `Spot '${String(spotId)}' request deadline has expired.`);
80
+ }
81
+ const currentRegistrations = current === activation
82
+ ? registrations
83
+ : current.handlers
84
+ .snapshot()
85
+ .filter((registration) => registration.kind === 'packet' &&
86
+ (registration.packetName ?? registration.handlerType.name) ===
87
+ (packetName ?? ''));
63
88
  // Decode only after the Spot has acquired both application admission
64
89
  // and its execution authority.
65
90
  const payload = decodePayload();
66
- for (const registration of registrations) {
67
- const handler = await (0, handler_instance_scope_1.resolveLifecycleHandler)(activation.spot, registration.handlerType, this.options.providerResolver);
91
+ for (const registration of currentRegistrations) {
92
+ const handler = await (0, handler_instance_scope_1.resolveLifecycleHandler)(current.spot, registration.handlerType, this.options.providerResolver);
68
93
  resolveFirstHandlerTurn?.();
69
94
  resolveFirstHandlerTurn = undefined;
95
+ context.activationRecord?.onHandlerTurnStarted?.();
70
96
  (0, application_job_queue_scope_1.releaseApplicationJobPermitBeforeHandler)();
71
- response = await handler.handle(activation.spot, payload, {
97
+ response = await handler.handle(current.spot, payload, {
72
98
  channelName: context.channelName,
73
99
  contentType: context.contentType,
74
100
  packetName: packetName,
@@ -94,8 +120,24 @@ class ZLinkRoutedSpotPacketDispatch {
94
120
  detachedApplicationPermit?.releaseAfterInternalProcessing();
95
121
  applicationClaim?.close();
96
122
  }
97
- }, (error) => this.reportFailure(spotId, packetName, context, false, error), context.workOptions, { signal: context.signal });
98
- await firstHandlerTurn;
123
+ }, (error) => {
124
+ if (context.onOneWayError === undefined) {
125
+ this.reportFailure(spotId, packetName, context, false, error);
126
+ }
127
+ else if (resolveFirstHandlerTurn === undefined) {
128
+ context.onOneWayError(error);
129
+ }
130
+ }, context.workOptions, { signal: context.signal }, instanceIntent
131
+ ? async (failure) => {
132
+ try {
133
+ await runHandler(failure);
134
+ }
135
+ finally {
136
+ detachedApplicationPermit?.releaseAfterInternalProcessing();
137
+ applicationClaim?.close();
138
+ }
139
+ }
140
+ : undefined);
99
141
  }
100
142
  catch (error) {
101
143
  detached = false;
@@ -103,16 +145,18 @@ class ZLinkRoutedSpotPacketDispatch {
103
145
  rejectFirstHandlerTurn?.(error);
104
146
  throw error;
105
147
  }
148
+ await firstHandlerTurn;
106
149
  }
107
150
  else {
108
151
  if (activation.serial.isCurrentTurn) {
109
152
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, `Spot '${spotId}' cannot await a request to its current serial turn.`);
110
153
  }
111
- await activation.serial.execute(runHandler, context.workOptions);
154
+ await activation.serial.execute(runHandler, context.workOptions, instanceIntent ? runHandler : undefined);
112
155
  }
113
156
  }
114
157
  catch (error) {
115
- this.reportFailure(spotId, packetName, context, returnResponse, error);
158
+ if (context.activationRecord?.activationRecord === undefined)
159
+ this.reportFailure(spotId, packetName, context, returnResponse, error);
116
160
  throw error;
117
161
  }
118
162
  finally {
@@ -122,16 +166,17 @@ class ZLinkRoutedSpotPacketDispatch {
122
166
  return returnResponse ? response : undefined;
123
167
  }
124
168
  reportFailure(spotId, packetName, context, returnResponse, error) {
125
- const frameworkErrorKind = error instanceof contracts_1.ZLinkFrameworkException ? (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) : undefined;
126
- this.options.dispatchErrors?.report({
127
- surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotRoute,
169
+ const reporter = this.options.dispatchErrors;
170
+ if (reporter?.captureEnabled() !== true)
171
+ return;
172
+ reporter.report({
173
+ surface: context.activationRecord?.activationRecord?.kind === 'instanceSpot'
174
+ ? ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.InstanceSpot
175
+ : ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotRoute,
128
176
  messageKind: returnResponse
129
177
  ? ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request
130
178
  : ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
131
- reason: frameworkErrorKind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.WorkerQueueFull ||
132
- frameworkErrorKind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded
133
- ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Backpressure
134
- : ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException,
179
+ reason: (0, dispatch_error_details_1.dispatchReasonFromError)(error),
135
180
  action: returnResponse ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.FailCaller : ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop,
136
181
  packetName,
137
182
  channelName: context.channelName,
@@ -140,6 +185,11 @@ class ZLinkRoutedSpotPacketDispatch {
140
185
  });
141
186
  }
142
187
  reportMissing(spotId, packetName, context, returnResponse) {
188
+ if (context.activationRecord?.activationRecord !== undefined) {
189
+ if (!returnResponse && context.onOneWayError !== undefined)
190
+ context.onOneWayError((0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.HandlerNotFound, `SPOT route handler not found: ${packetName}`));
191
+ return;
192
+ }
143
193
  this.options.dispatchErrors?.report({
144
194
  surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotRoute,
145
195
  messageKind: returnResponse
@@ -17,41 +17,27 @@ export interface ZLinkEntryActorRuntime {
17
17
  }
18
18
  export interface ZLinkSpotActorTransferRuntime {
19
19
  prepareDeferredJoinAccepted(actorId: string, operationId: ZLinkActorJoinOperationId, actorRef: ActorRef, rawReply: Uint8Array, replyContentType?: string): ZLinkDeferredJoinCompletion;
20
- deliverDeferredJoinAccepted(completion: ZLinkDeferredJoinCompletion, actor: ZLinkActor, actorRef: ActorRef, submitMailbox: <T>(operation: () => Promise<T>) => Promise<T>, signal?: AbortSignal): Promise<void>;
20
+ deliverDeferredJoinCompletion(completion: ZLinkDeferredJoinCompletion, actor: ZLinkActor, actorRef: ActorRef, submitMailbox: <T>(operation: () => Promise<T>) => Promise<T>, signal?: AbortSignal): Promise<void>;
21
21
  getOrCreateRoutedActor(actorId: string, actorType: string, actorRef?: ActorRef, remoteBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, actorCreateRequest?: Message, signal?: AbortSignal): Promise<ZLinkRemoteActorJoinActor>;
22
22
  materializeRoutedActor: ZLinkRoutedActorTransferProvider;
23
23
  commitRoutedActorAuthority(actor: ZLinkActor, sourceActorRef: ActorRef, transferId: string, spotId: RoutingId, spotGeneration: bigint, membershipEpoch: bigint, deadlineAtMs: number, signal?: AbortSignal): Promise<import('../locations/internal-location-contracts').ZLinkAuthoritySnapshot>;
24
- rememberRoutedActorTransferTarget(actorId: string, target: ZLinkRemoteBoundSessionTarget | undefined): void;
25
- claimNativeActorLocation(actor: ZLinkActor, spotId: RoutingId, spotMeshName: string): Promise<ZLinkNativeActorJoinSnapshot>;
26
24
  claimRoutedActorLocation(actor: ZLinkActor, spotId: RoutingId, spotMeshName: string, joinedLocation?: {
27
25
  readonly spotGeneration: bigint;
28
26
  readonly membershipEpoch: bigint;
29
27
  }): Promise<void>;
30
- publishRoutedActorOwnership(actor: ZLinkActor): Promise<void>;
28
+ publishRoutedActorOwnership(actor: ZLinkActor, sealedSession: ZLinkRemoteBoundSessionTarget | undefined): Promise<void>;
31
29
  openRoutedActorSession(actor: ZLinkActor): Promise<void>;
32
30
  bindRoutedActorRef(actor: ZLinkActor, actorRef: ActorRef): void;
33
31
  commitRoutedActor(actor: ZLinkActor, spotId: RoutingId, spot: ZLinkSpot): void;
34
32
  clearRoutedActor(actor: ZLinkActor): void;
35
- rollbackNativeActorJoin(actor: ZLinkActor, snapshot: ZLinkNativeActorJoinSnapshot): Promise<void>;
36
33
  rollbackRoutedActor(actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
37
34
  notifyCoreSourceLeave(actor: ZLinkActor, callback: () => Promise<void>): Promise<void>;
38
35
  actorEntryNodeRid(actor: ZLinkActor): RoutingId | undefined;
39
36
  }
40
- export interface ZLinkNativeActorJoinSnapshot {
41
- readonly spotId?: RoutingId;
42
- readonly spot?: ZLinkSpot;
43
- readonly locationSpotId?: RoutingId;
44
- readonly spotMeshName?: string;
45
- readonly actorRef?: ActorRef;
46
- readonly spotGeneration?: bigint;
47
- readonly membershipEpoch?: bigint;
48
- readonly ownerNodeGeneration?: bigint;
49
- }
50
37
  export interface ZLinkSpotBoundSessionRuntime {
51
38
  receiveRoutedBoundSession(actorId: string, message: unknown, packetName: string | undefined, metadata: ReadonlyMap<string, string>, actorRef?: ActorRef, actorPacketTarget?: unknown, signal?: AbortSignal): Promise<void>;
52
39
  receiveRoutedBoundSessionResponse(actorId: string, packetName: string, requestSeq: bigint, message: unknown, replyOptions: ZLinkActorResponseOptions, actorPacketTarget?: unknown, signal?: AbortSignal): Promise<void>;
53
40
  receiveRoutedBoundSessionError(actorId: string, packetName: string, requestSeq: bigint, error: unknown, metadata: ReadonlyMap<string, string>, actorPacketTarget?: unknown, signal?: AbortSignal): Promise<void>;
54
- rememberRemoteBoundSessionTarget(actorId: string, target: ZLinkRemoteBoundSessionTarget | undefined): void;
55
41
  resolveRemoteBoundSessionTarget(sourceNodeRid: RoutingId, sourceSessionRid: RoutingId): ZLinkRemoteBoundSessionTarget | undefined;
56
42
  actorPacketTargetForState(actorId: string): ZLinkRemoteActorPacketTarget | undefined;
57
43
  sendActorResponse(actor: ZLinkActor, packetName: string, requestSeq: bigint, response: unknown, replyOptions: ZLinkActorResponseOptions, fallbackBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, fallbackActorRef?: ActorRef, signal?: AbortSignal): Promise<void>;
@@ -71,7 +71,7 @@ class ZLinkSpotSerialExecutor {
71
71
  */
72
72
  close() {
73
73
  const children = this.closeChildren();
74
- return Promise.all([children, this.spotSerial.close()]).then(() => undefined);
74
+ return Promise.all([children, this.spotSerial.whenIdle()]).then(() => undefined);
75
75
  }
76
76
  /**
77
77
  * Closes the Actor and timer queues. The Spot queue stays open for the Spot
@@ -87,7 +87,7 @@ class ZLinkSpotSerialExecutor {
87
87
  this.timerSerials.clear();
88
88
  this.actorExecutors.clear();
89
89
  this.closePromise = Promise.all([
90
- ...childSerials.map((serial) => serial.close()),
90
+ ...childSerials.map((serial) => serial.whenIdle()),
91
91
  ...actorExecutors.map((executor) => executor.close())
92
92
  ]).then(() => undefined);
93
93
  return this.closePromise;
@@ -1,6 +1,11 @@
1
- import { ZLinkExecutionBarrier, ZLinkSpotSerialTurn } from '../execution';
1
+ import { ZLinkExecutionBarrier, type ZLinkExecutionBarrierClaim, ZLinkSpotSerialTurn } from '../execution';
2
2
  import type { SpotId } from '../../contracts';
3
- import { type ZLinkSerialSchedulerOptions, type ZLinkSerialWorkOptions } from '../execution/serial-execution-queue';
3
+ import type { ZLinkFrameworkException } from '../../contracts/Errors/ZLinkFrameworkException';
4
+ import { type ZLinkSerialSchedulerOptions, type ZLinkSerialWorkOptions, type ZLinkSerialWorkRecord } from '../execution/serial-execution-queue';
5
+ import type { ZLinkSerialLifecycleContext } from '../execution/serial-execution-queue';
6
+ export type ZLinkSpotApplicationTurnContext = ZLinkExecutionBarrierClaim & {
7
+ readonly replay?: (failure?: unknown) => Promise<unknown> | unknown;
8
+ };
4
9
  export declare class ZLinkSpotSerialTurnExecutor {
5
10
  private readonly yieldAllowed;
6
11
  readonly sourceSpotId?: SpotId | undefined;
@@ -10,6 +15,7 @@ export declare class ZLinkSpotSerialTurnExecutor {
10
15
  private executionBarrier;
11
16
  private resumedOwnerTurn;
12
17
  private lastActivityAtMs;
18
+ private lifecycleAdmissionClosed;
13
19
  activeTurnId: number;
14
20
  constructor(yieldAllowed?: boolean, sourceSpotId?: SpotId | undefined, schedulerOptions?: ZLinkSerialSchedulerOptions);
15
21
  get isExecuting(): boolean;
@@ -17,14 +23,25 @@ export declare class ZLinkSpotSerialTurnExecutor {
17
23
  get hasPendingWork(): boolean;
18
24
  get lastActivityAt(): number;
19
25
  get currentTurn(): ZLinkSpotSerialTurn | undefined;
20
- /** Stops new turns while allowing turns accepted before close to complete. */
21
- close(): Promise<void>;
26
+ /** Waits for turns admitted through the execution barrier to complete. */
27
+ whenIdle(): Promise<void>;
22
28
  closeAdmission(): void;
29
+ /**
30
+ * Spot messaging §7 step 3: after Close ends this queue's admission, an Instance
31
+ * intent message is refused before admission as a released owner fence, and any
32
+ * other message finds no incarnation. Undefined while admission is open.
33
+ */
34
+ applicationAdmissionRefusal(instanceIntent: boolean): ZLinkFrameworkException | undefined;
35
+ /**
36
+ * Spot messaging §7: once Close commits Closing, membership work can no longer
37
+ * enter this incarnation while Instance intent messages still queue behind Close.
38
+ */
39
+ setLifecycleAdmissionClosed(closed: boolean): void;
23
40
  /** Distinguishes a gate-owning turn from a suspended AsyncLocalStorage tail. */
24
41
  isActiveTurn(turn: ZLinkSpotSerialTurn, turnId: number): boolean;
25
42
  setExecutionBarrier(barrier: ZLinkExecutionBarrier): void;
26
43
  /** Runs `operation` in serial order, one turn at a time. */
27
- execute<T>(operation: () => Promise<T> | T, workOptions?: ZLinkSerialWorkOptions): Promise<T>;
44
+ execute<T>(operation: () => Promise<T> | T, workOptions?: ZLinkSerialWorkOptions, replay?: (failure?: unknown) => Promise<T>): Promise<T>;
28
45
  /**
29
46
  * Always enqueues `operation` as its own serial turn, even when called
30
47
  * from within the currently active turn. Detached completion callbacks use
@@ -37,15 +54,18 @@ export declare class ZLinkSpotSerialTurnExecutor {
37
54
  */
38
55
  postOneWay(operation: () => Promise<unknown> | unknown, onError: (error: unknown) => void, workOptions?: ZLinkSerialWorkOptions, admission?: {
39
56
  readonly signal?: AbortSignal;
40
- }): Promise<void>;
57
+ }, replay?: (failure?: unknown) => Promise<unknown>): Promise<void>;
41
58
  /**
42
59
  * Enqueues the framework-owned turn that completes a boundary while normal
43
60
  * application admission remains sealed. Callers must release the matching
44
61
  * barrier seal after this turn finishes.
45
62
  */
46
63
  postBarrierTurn<T>(operation: () => Promise<T> | T, workOptions?: ZLinkSerialWorkOptions): Promise<T>;
47
- /** Holds this Spot's lifecycle FIFO until the full operation result settles. */
64
+ /** Admits membership work and holds the lifecycle FIFO until its result settles. */
48
65
  executeLifecycleOperation<T>(operation: () => Promise<T> | T): Promise<T>;
66
+ /** Runs owner control work that establishes or completes its own admission seal. */
67
+ executeControlLifecycleOperation<T>(operation: () => Promise<T> | T, context?: ZLinkSerialLifecycleContext): Promise<T>;
68
+ visitPendingApplication(visitor: (record: ZLinkSerialWorkRecord<unknown>) => void): void;
49
69
  private enqueueApplicationTurn;
50
70
  private enqueueFrameworkTurn;
51
71
  private enqueueContinuationTurn;
@@ -14,6 +14,7 @@ class ZLinkSpotSerialTurnExecutor {
14
14
  executionBarrier;
15
15
  resumedOwnerTurn;
16
16
  lastActivityAtMs = performance.now();
17
+ lifecycleAdmissionClosed = false;
17
18
  activeTurnId = 0;
18
19
  constructor(yieldAllowed = true, sourceSpotId, schedulerOptions) {
19
20
  this.yieldAllowed = yieldAllowed;
@@ -35,13 +36,32 @@ class ZLinkSpotSerialTurnExecutor {
35
36
  get currentTurn() {
36
37
  return (0, execution_1.captureZLinkSpotSerialTurn)(this);
37
38
  }
38
- /** Stops new turns while allowing turns accepted before close to complete. */
39
- close() {
40
- return this.scheduler.close();
39
+ /** Waits for turns admitted through the execution barrier to complete. */
40
+ whenIdle() {
41
+ return this.scheduler.whenIdle();
41
42
  }
42
43
  closeAdmission() {
43
44
  this.scheduler.closeAdmission();
44
45
  }
46
+ /**
47
+ * Spot messaging §7 step 3: after Close ends this queue's admission, an Instance
48
+ * intent message is refused before admission as a released owner fence, and any
49
+ * other message finds no incarnation. Undefined while admission is open.
50
+ */
51
+ applicationAdmissionRefusal(instanceIntent) {
52
+ if (!this.scheduler.admissionClosed)
53
+ return undefined;
54
+ return instanceIntent
55
+ ? (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving, 'The Spot incarnation released its authority before admitting this Instance intent message.')
56
+ : (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, 'The Spot incarnation is closed.');
57
+ }
58
+ /**
59
+ * Spot messaging §7: once Close commits Closing, membership work can no longer
60
+ * enter this incarnation while Instance intent messages still queue behind Close.
61
+ */
62
+ setLifecycleAdmissionClosed(closed) {
63
+ this.lifecycleAdmissionClosed = closed;
64
+ }
45
65
  /** Distinguishes a gate-owning turn from a suspended AsyncLocalStorage tail. */
46
66
  isActiveTurn(turn, turnId) {
47
67
  return (this.depth > 0 &&
@@ -57,11 +77,11 @@ class ZLinkSpotSerialTurnExecutor {
57
77
  this.executionBarrier = barrier;
58
78
  }
59
79
  /** Runs `operation` in serial order, one turn at a time. */
60
- execute(operation, workOptions) {
80
+ execute(operation, workOptions, replay) {
61
81
  if (this.isCurrentTurn) {
62
82
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, 'A Spot serial turn cannot implicitly execute another turn for the same owner.');
63
83
  }
64
- return this.enqueueApplicationTurn(operation, workOptions);
84
+ return this.enqueueApplicationTurn(operation, workOptions, replay);
65
85
  }
66
86
  /**
67
87
  * Always enqueues `operation` as its own serial turn, even when called
@@ -75,11 +95,18 @@ class ZLinkSpotSerialTurnExecutor {
75
95
  * Queues a one-way turn in serial order. Handler completion is reported
76
96
  * through `onError` and never blocks the sender turn.
77
97
  */
78
- async postOneWay(operation, onError, workOptions = {}, admission = {}) {
98
+ async postOneWay(operation, onError, workOptions = {}, admission = {}, replay) {
79
99
  this.lastActivityAtMs = performance.now();
80
100
  let barrierClaim;
81
101
  try {
82
- barrierClaim = await this.executionBarrier?.enter();
102
+ const entry = this.executionBarrier?.enter();
103
+ barrierClaim = entry instanceof Promise ? await entry : entry;
104
+ const refusal = this.applicationAdmissionRefusal(replay !== undefined);
105
+ if (refusal !== undefined)
106
+ throw refusal;
107
+ if (barrierClaim !== undefined && replay !== undefined) {
108
+ Object.assign(barrierClaim, { replay: (0, application_job_queue_scope_1.bindApplicationJobPermit)(replay) });
109
+ }
83
110
  if (admission.signal?.aborted === true) {
84
111
  throw new DOMException('The operation was aborted.', 'AbortError');
85
112
  }
@@ -112,15 +139,55 @@ class ZLinkSpotSerialTurnExecutor {
112
139
  postBarrierTurn(operation, workOptions) {
113
140
  return this.enqueueFrameworkTurn(operation, workOptions);
114
141
  }
115
- /** Holds this Spot's lifecycle FIFO until the full operation result settles. */
142
+ /** Admits membership work and holds the lifecycle FIFO until its result settles. */
116
143
  executeLifecycleOperation(operation) {
117
- return this.scheduler.submitLifecycleOperation(operation);
144
+ let entry;
145
+ try {
146
+ if (this.lifecycleAdmissionClosed) {
147
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestRejected, 'Spot lifecycle admission is closed by a committed Close.');
148
+ }
149
+ entry = this.executionBarrier?.enter();
150
+ }
151
+ catch (error) {
152
+ return Promise.reject(error);
153
+ }
154
+ const submit = (claim) => {
155
+ try {
156
+ return this.scheduler.submitLifecycleOperation(operation);
157
+ }
158
+ catch (error) {
159
+ return Promise.reject(error);
160
+ }
161
+ finally {
162
+ claim?.release();
163
+ }
164
+ };
165
+ return entry instanceof Promise ? entry.then(submit) : submit(entry);
118
166
  }
119
- async enqueueApplicationTurn(operation, workOptions = {}) {
167
+ /** Runs owner control work that establishes or completes its own admission seal. */
168
+ executeControlLifecycleOperation(operation, context) {
169
+ try {
170
+ return this.scheduler.submitLifecycleOperation(operation, context);
171
+ }
172
+ catch (error) {
173
+ return Promise.reject(error);
174
+ }
175
+ }
176
+ visitPendingApplication(visitor) {
177
+ this.scheduler.visitPendingApplication(visitor);
178
+ }
179
+ async enqueueApplicationTurn(operation, workOptions = {}, replay) {
120
180
  this.lastActivityAtMs = performance.now();
121
181
  let barrierClaim;
122
182
  try {
123
- barrierClaim = await this.executionBarrier?.enter();
183
+ const entry = this.executionBarrier?.enter();
184
+ barrierClaim = entry instanceof Promise ? await entry : entry;
185
+ const refusal = this.applicationAdmissionRefusal(replay !== undefined);
186
+ if (refusal !== undefined)
187
+ throw refusal;
188
+ if (barrierClaim !== undefined && replay !== undefined) {
189
+ Object.assign(barrierClaim, { replay: (0, application_job_queue_scope_1.bindApplicationJobPermit)(replay) });
190
+ }
124
191
  return await this.submitQueuedTurn(operation, workOptions, barrierClaim);
125
192
  }
126
193
  catch (error) {
@@ -152,6 +219,11 @@ class ZLinkSpotSerialTurnExecutor {
152
219
  : this.scheduler.submit(boundOperation, options, barrierClaim);
153
220
  }
154
221
  runQueuedRecord(record) {
222
+ const context = record.context;
223
+ if (context?.replay !== undefined && record.operation === context.replay) {
224
+ context.release();
225
+ return Promise.resolve(this.executionBarrier?.enter()).then((claim) => this.runTurn(record.operation, (value) => record.resolve(value), (error) => record.reject(error), claim, record.release));
226
+ }
155
227
  return this.runTurn(record.operation, (value) => record.resolve(value), (error) => record.reject(error), record.context, record.release);
156
228
  }
157
229
  yieldPromise(pending) {
@@ -6,10 +6,11 @@ import type { ZLinkEntrySpotTimerHandlerRegistration, ZLinkSpotTimerHandlerRegis
6
6
  import { ZLinkTimerOverrunPolicy } from '../../contracts';
7
7
  import { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
8
8
  import type { ZLinkExecutionBarrier } from '../execution';
9
- import type { OperationClock } from '../foundation/operation-registry';
10
- export interface ZLinkTimerClock extends OperationClock {
9
+ export interface ZLinkTimerClock {
11
10
  now(): number;
12
11
  utcNow(): number;
12
+ setTimeout(callback: () => void, delayMs: number): unknown;
13
+ clearTimeout(handle: unknown): void;
13
14
  }
14
15
  type ZLinkTimerOwnerSpot = ZLinkSpot | ZLinkEntrySpot;
15
16
  type ZLinkTimerFailureReporter = (tick: ZLinkTimerTick, cause: unknown, event?: ZLinkSpotEventKind.TimerHandlerFailed | ZLinkSpotEventKind.TimerStoppedAfterUnhandledException) => Promise<void> | void;
@@ -1,6 +1,10 @@
1
- import type { ServiceSessionBindingAdmissionResult } from '../foundation/service-session-binding-ingress-port';
1
+ export declare const DEFAULT_TERMINAL_RELOCATION_CAPACITY = 4096;
2
2
  export interface ZLinkActorSessionBindingActor {
3
3
  readonly actorId: string;
4
+ readonly ref: {
5
+ readonly actorId: string;
6
+ readonly bindingGeneration?: bigint;
7
+ };
4
8
  }
5
9
  export interface ZLinkActorSessionBindingContext<TActor extends ZLinkActorSessionBindingActor> {
6
10
  readonly routingId?: unknown;
@@ -30,10 +34,6 @@ export interface ZLinkActorSessionRelocationClaim {
30
34
  readonly actorNodeGeneration?: bigint;
31
35
  readonly sealId: string;
32
36
  }
33
- export interface ZLinkActorSessionRetainedOutbound {
34
- deliver(): Promise<boolean>;
35
- fail(error: unknown): void;
36
- }
37
37
  export interface ZLinkActorSessionRelocationSnapshot extends ZLinkActorSessionRelocationClaim {
38
38
  readonly phase: 'sealed' | 'applying' | 'applied' | 'terminal';
39
39
  readonly applyFingerprint?: string;
@@ -71,7 +71,6 @@ export declare enum ZLinkActorSessionBindingTermination {
71
71
  }
72
72
  export declare class ZLinkActorSessionBindingRegistry<TContext extends ZLinkActorSessionBindingContext<TActor>, TActor extends ZLinkActorSessionBindingActor> {
73
73
  private readonly terminalRelocationCapacity;
74
- private readonly outboundCapacity;
75
74
  private readonly sealWaitTimeoutMs;
76
75
  private readonly errorSink?;
77
76
  private readonly lane;
@@ -81,7 +80,7 @@ export declare class ZLinkActorSessionBindingRegistry<TContext extends ZLinkActo
81
80
  private readonly activeFrameWaiters;
82
81
  private readonly relocations;
83
82
  private readonly terminalRelocations;
84
- constructor(terminalRelocationCapacity?: number, outboundCapacity?: number, sealWaitTimeoutMs?: number, errorSink?: (() => {
83
+ constructor(terminalRelocationCapacity?: number, sealWaitTimeoutMs?: number, errorSink?: (() => {
85
84
  reportRuntimeTaskException(taskName: string, error: unknown): void;
86
85
  } | undefined) | undefined);
87
86
  bind(context: TContext, actor: TActor, bindingToken: string, authorityFence?: ZLinkActorSessionAuthorityFence, sessionIdentity?: string, commitActor?: () => void): Promise<void>;
@@ -93,12 +92,15 @@ export declare class ZLinkActorSessionBindingRegistry<TContext extends ZLinkActo
93
92
  find(actorId: string): Promise<TActor | undefined>;
94
93
  private findCore;
95
94
  route(actorId: string): Promise<ZLinkActorSessionRoute<TContext, TActor> | undefined>;
95
+ /** Selects the route only when it is the exact Session binding (§8.1 validation values). */
96
+ routeForSessionBinding(actorId: string, sessionRid: string, bindingGeneration?: bigint): Promise<ZLinkActorSessionRoute<TContext, TActor> | undefined>;
96
97
  private routeCore;
97
98
  capturePendingReplyClaim(actorId: string, actor: ZLinkActorSessionBindingActor, bindingToken: string): Promise<{
98
99
  readonly context: TContext;
99
100
  } | undefined>;
100
101
  private capturePendingReplyClaimCore;
101
102
  unbind(actorId: string, context: TContext, bindingToken: string, termination?: ZLinkActorSessionBindingTermination): Promise<void>;
103
+ /** Fixes the unbind order in the lane; the caller awaits transport completion outside it. */
102
104
  private unbindCore;
103
105
  unbindActor(actorId: string): Promise<void>;
104
106
  private unbindActorCore;
@@ -110,6 +112,10 @@ export declare class ZLinkActorSessionBindingRegistry<TContext extends ZLinkActo
110
112
  private requireCurrentTokenCore;
111
113
  accept(actorId: string, bindingToken: string): Promise<void>;
112
114
  private acceptCore;
115
+ acceptOneWay(actorId: string, bindingToken: string, prepare: () => {
116
+ readonly deliver: () => Promise<void>;
117
+ readonly drop: (reason: 'stale_target' | 'target_closed' | 'shutdown', error?: unknown) => void;
118
+ }): Promise<boolean>;
113
119
  /**
114
120
  * Holds Session ingress accepted after a relocation seal until the target
115
121
  * route is published and the seal is released. The caller keeps the
@@ -129,31 +135,15 @@ export declare class ZLinkActorSessionBindingRegistry<TContext extends ZLinkActo
129
135
  private prepareRelocationSeal;
130
136
  relocationSnapshot(actorId: string, sealId: string): Promise<ZLinkActorSessionRelocationSnapshot | undefined>;
131
137
  private relocationSnapshotCore;
132
- retainRelocationOutbound(actorId: string, operation: ZLinkActorSessionRetainedOutbound, sealId?: string): Promise<ServiceSessionBindingAdmissionResult>;
133
- private retainRelocationOutboundCorePublic;
134
- /**
135
- * Session–Actor binding §8.1: the Session owner holds a push only while the
136
- * binding's relocation seal is open, and keeps it behind earlier held pushes.
137
- * Whether the push names the current binding was decided once by the Session
138
- * owner's binding record before this call.
139
- */
140
- private retainRelocationOutboundCore;
141
- discardRelocationOutbound(actorId: string, sealId: string, error: unknown): Promise<void>;
142
- private discardRelocationOutboundCore;
143
138
  applyRelocation(actorId: string, sealId: string, applyFingerprint: string, commitOwnerTransition: () => Promise<void>): Promise<void>;
144
139
  private prepareRelocationApply;
145
- /**
146
- * Command 44 commit or abort releases every push held under this seal in
147
- * arrival order (Session–Actor binding §8.1). The held pushes were admitted
148
- * by the current binding; the route change does not judge them again.
149
- */
150
140
  private completeRelocationApply;
151
141
  private failRelocationApply;
152
142
  observeRelocationTerminal(actorId: string, sealId: string, applyFingerprint: string): Promise<void>;
153
143
  private observeRelocationTerminalCore;
154
144
  /**
155
145
  * Actor-wide relocation teardown: every seal (active and terminal-retained)
156
- * and every held outbound entry for `actorId` is discarded unconditionally.
146
+ * for `actorId` is discarded unconditionally.
157
147
  * Reserved for paths where the Actor itself is gone or being torn down
158
148
  * (destroy, ownership clear, relocation-seal expiry/failure) — never for a
159
149
  * single physical route's disconnect, which must not disturb a relocation
@@ -165,7 +155,7 @@ export declare class ZLinkActorSessionBindingRegistry<TContext extends ZLinkActo
165
155
  * Spec 48 §137: a relocation seal's lifecycle is independent of any single
166
156
  * physical route's binding. Unbinding one physical route (a disconnect)
167
157
  * must retire only the still-open (nonterminal) relocation seal that this
168
- * exact route's Session owns, and the outbound held against that seal — it
158
+ * exact route's Session owns — it
169
159
  * must never reach into a seal that has already reached 'terminal' (its
170
160
  * bounded retention exists precisely so a late same-seal relay can still
171
161
  * pass on a successor route) nor into a different Session's active seal
@@ -188,14 +178,11 @@ export declare class ZLinkActorSessionBindingRegistry<TContext extends ZLinkActo
188
178
  private waitForActiveFramesCore;
189
179
  private resolveActiveFrameWaiters;
190
180
  private rejectActiveFrameWaiters;
191
- private startOutboundDrain;
192
- private reserveOutbound;
193
- private settleOutbound;
194
- private failOutbound;
195
181
  private rememberTerminalRelocation;
196
182
  private deleteEmptyRelocationQueue;
197
183
  private resolveSealWaiters;
198
184
  private rejectSealWaiters;
185
+ private startHeldOneWayDrain;
199
186
  }
200
187
  export interface ZLinkActorSessionRouteFence {
201
188
  readonly objectGeneration: bigint;