@zlink-systems/framework 0.25.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 (557) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
  3. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  4. package/dist/contracts/Common/CoreTypes.js +7 -0
  5. package/dist/contracts/Common/index.d.ts +1 -1
  6. package/dist/contracts/Common/index.js +0 -1
  7. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  8. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  9. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  10. package/dist/contracts/Configuration/Registration.js +58 -36
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  14. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  15. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  16. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  17. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  18. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  19. package/dist/contracts/Handlers/JsonContract.js +10 -4
  20. package/dist/contracts/Locations/Authority.d.ts +1 -1
  21. package/dist/contracts/Locations/Authority.js +3 -2
  22. package/dist/contracts/Locations/Options.js +1 -1
  23. package/dist/contracts/Locations/Stores.d.ts +12 -0
  24. package/dist/contracts/Locations/Stores.js +9 -0
  25. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
  26. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  27. package/dist/internal.d.ts +5 -0
  28. package/dist/internal.js +16 -1
  29. package/dist/nest-integration.d.ts +4 -2
  30. package/dist/nest-integration.js +14 -4
  31. package/dist/runtime/abort.d.ts +1 -0
  32. package/dist/runtime/abort.js +8 -5
  33. package/dist/runtime/activation-admission.d.ts +28 -0
  34. package/dist/runtime/activation-admission.js +57 -0
  35. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  36. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  37. package/dist/runtime/actors/actor-client.d.ts +2 -2
  38. package/dist/runtime/actors/actor-client.js +42 -143
  39. package/dist/runtime/actors/actor-context.d.ts +3 -5
  40. package/dist/runtime/actors/actor-context.js +19 -17
  41. package/dist/runtime/actors/actor-handoff.d.ts +13 -7
  42. package/dist/runtime/actors/actor-handoff.js +36 -25
  43. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  44. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  45. package/dist/runtime/actors/actor-local-native-join.js +85 -123
  46. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  47. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  48. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  49. package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
  50. package/dist/runtime/actors/actor-remote-joiner.js +11 -17
  51. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  52. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  53. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  54. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  55. package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
  56. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  57. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  58. package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
  59. package/dist/runtime/actors/bound-session-wire.js +2 -7
  60. package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
  61. package/dist/runtime/actors/deferred-join-completion.js +21 -0
  62. package/dist/runtime/actors/index.d.ts +10 -8
  63. package/dist/runtime/actors/index.js +101 -73
  64. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  65. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  66. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  67. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  68. package/dist/runtime/admission.d.ts +7 -1
  69. package/dist/runtime/admission.js +11 -1
  70. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  71. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  72. package/dist/runtime/backend/contracts/index.d.ts +8 -33
  73. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
  74. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  75. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  76. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
  77. package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
  78. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
  79. package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
  80. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  81. package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
  82. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  83. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
  84. package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
  85. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
  86. package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
  87. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  88. package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
  89. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  90. package/dist/runtime/backend/runtime-values.js +2 -0
  91. package/dist/runtime/channels/channel-clients.d.ts +20 -9
  92. package/dist/runtime/channels/channel-clients.js +68 -60
  93. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  94. package/dist/runtime/channels/channel-envelope.js +47 -29
  95. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  96. package/dist/runtime/channels/channel-outbound-operations.js +9 -18
  97. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  98. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  99. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  100. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  101. package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
  102. package/dist/runtime/channels/channel-runtime-manager.js +4 -12
  103. package/dist/runtime/channels/channel-socket-options.js +3 -2
  104. package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
  105. package/dist/runtime/channels/channel-socket-registry.js +296 -235
  106. package/dist/runtime/channels/channel-transports.d.ts +11 -20
  107. package/dist/runtime/channels/channel-transports.js +68 -47
  108. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  109. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  110. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  111. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  112. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  113. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  114. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  115. package/dist/runtime/channels/fanout-location-runtime.js +133 -81
  116. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  117. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  118. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  119. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  120. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  121. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  122. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  123. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  124. package/dist/runtime/diagnostics/flow-context.js +16 -2
  125. package/dist/runtime/diagnostics/index.d.ts +4 -2
  126. package/dist/runtime/diagnostics/index.js +14 -4
  127. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  128. package/dist/runtime/diagnostics/message-flow.js +10 -19
  129. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  130. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  131. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  132. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  133. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  134. package/dist/runtime/disposal.d.ts +5 -0
  135. package/dist/runtime/disposal.js +22 -0
  136. package/dist/runtime/execution/index.d.ts +22 -9
  137. package/dist/runtime/execution/index.js +107 -37
  138. package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
  139. package/dist/runtime/execution/serial-execution-queue.js +99 -26
  140. package/dist/runtime/execution/state-lane.d.ts +8 -1
  141. package/dist/runtime/execution/state-lane.js +118 -3
  142. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  143. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  144. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  145. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  146. package/dist/runtime/foundation/listener-records.d.ts +11 -0
  147. package/dist/runtime/foundation/listener-records.js +20 -0
  148. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  149. package/dist/runtime/foundation/operation-identity.js +9 -5
  150. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  151. package/dist/runtime/foundation/operation-registry.js +34 -44
  152. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
  153. package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
  154. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  155. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  156. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
  157. package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
  158. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  159. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  160. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  161. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  162. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  163. package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
  164. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  165. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  166. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  167. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
  168. package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
  169. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
  170. package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
  171. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  172. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  173. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  174. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
  175. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  176. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  177. package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
  178. package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
  179. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
  180. package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
  181. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
  182. package/dist/runtime/foundation/service-topology-registry.js +22 -61
  183. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  184. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  185. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  186. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  187. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  188. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  189. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  190. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  191. package/dist/runtime/framework-errors-internal.js +343 -122
  192. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  193. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  194. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  195. package/dist/runtime/host/actor-packet-relay.js +48 -91
  196. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  197. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  198. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  199. package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
  200. package/dist/runtime/host/actor-transfer-runtime.js +210 -256
  201. package/dist/runtime/host/application-job-queue.js +16 -33
  202. package/dist/runtime/host/bound-session-relay.js +1 -1
  203. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  204. package/dist/runtime/host/index.d.ts +19 -14
  205. package/dist/runtime/host/index.js +234 -175
  206. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  207. package/dist/runtime/host/instance-activation-authority.js +17 -45
  208. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  209. package/dist/runtime/host/location-runtime-owner.js +2 -2
  210. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  211. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  212. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  213. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  214. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  215. package/dist/runtime/host/remote-bound-session-relay.js +11 -23
  216. package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
  217. package/dist/runtime/host/route-mesh-runtime.js +178 -257
  218. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  219. package/dist/runtime/host/runtime-shutdown.js +18 -21
  220. package/dist/runtime/host/service-relocation-control.js +6 -1
  221. package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
  222. package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
  223. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  224. package/dist/runtime/host/spot-address-transport.js +34 -136
  225. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  226. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  227. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
  228. package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
  229. package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
  230. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
  231. package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
  232. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  233. package/dist/runtime/locations/authority-key-codec.js +4 -3
  234. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  235. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  236. package/dist/runtime/locations/creation-operation-id.js +6 -4
  237. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  238. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  239. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  240. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  241. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  242. package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
  243. package/dist/runtime/locations/key-codec.js +3 -2
  244. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  245. package/dist/runtime/locations/lease-tracker.js +7 -11
  246. package/dist/runtime/locations/lifecycle.d.ts +5 -10
  247. package/dist/runtime/locations/lifecycle.js +4 -33
  248. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  249. package/dist/runtime/locations/location-store-failure.js +7 -0
  250. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  251. package/dist/runtime/locations/location-store-pages.js +13 -0
  252. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  253. package/dist/runtime/locations/location-store-repository.js +303 -332
  254. package/dist/runtime/locations/relocation-blob.js +18 -5
  255. package/dist/runtime/locations/resolvers.d.ts +5 -5
  256. package/dist/runtime/locations/resolvers.js +44 -30
  257. package/dist/runtime/locations/runtime.d.ts +5 -4
  258. package/dist/runtime/locations/runtime.js +123 -92
  259. package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
  260. package/dist/runtime/locations/spot-location-claims.js +40 -23
  261. package/dist/runtime/messaging/payload-codec.js +26 -20
  262. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  263. package/dist/runtime/messaging/submission-result.js +48 -0
  264. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
  265. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
  266. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
  267. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
  268. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
  269. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
  270. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
  271. package/dist/runtime/spots/index.d.ts +29 -29
  272. package/dist/runtime/spots/index.js +441 -313
  273. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
  274. package/dist/runtime/spots/spot-activation-registry.js +27 -60
  275. package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
  276. package/dist/runtime/spots/spot-activation-state.js +4 -17
  277. package/dist/runtime/spots/spot-activation.d.ts +10 -9
  278. package/dist/runtime/spots/spot-activation.js +103 -81
  279. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  280. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  281. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  282. package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
  283. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
  284. package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
  285. package/dist/runtime/spots/spot-actor-membership.js +44 -53
  286. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  287. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  288. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  289. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  290. package/dist/runtime/spots/spot-context.d.ts +2 -2
  291. package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
  292. package/dist/runtime/spots/spot-entry-activation.js +9 -21
  293. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  294. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  295. package/dist/runtime/spots/spot-manager-public.js +6 -5
  296. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  297. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
  298. package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
  299. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  300. package/dist/runtime/spots/spot-outbound.js +10 -37
  301. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  302. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  303. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  304. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  305. package/dist/runtime/spots/spot-route-replies.js +3 -1
  306. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
  307. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
  308. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
  309. package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
  310. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  311. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  312. package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
  313. package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
  314. package/dist/runtime/spots/spot-serial-executor.js +9 -2
  315. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
  316. package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
  317. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  318. package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
  319. package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
  320. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
  321. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  322. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  323. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  324. package/dist/runtime/streams/bound-session-service.js +12 -19
  325. package/dist/runtime/streams/index.d.ts +15 -14
  326. package/dist/runtime/streams/index.js +38 -39
  327. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  328. package/dist/runtime/streams/managed-stream.js +17 -8
  329. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  330. package/dist/runtime/streams/protocol.d.ts +6 -33
  331. package/dist/runtime/streams/protocol.js +38 -110
  332. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  333. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  334. package/dist/runtime/streams/session-calls.d.ts +1 -1
  335. package/dist/runtime/streams/session-calls.js +5 -4
  336. package/dist/runtime/streams/session-context.d.ts +6 -6
  337. package/dist/runtime/streams/session-context.js +22 -4
  338. package/dist/runtime/streams/session-requests.js +2 -1
  339. package/dist/runtime/streams/session-serial-executor.js +2 -2
  340. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  341. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  342. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  343. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  344. package/dist/runtime/workers/index.d.ts +2 -2
  345. package/dist/runtime/workers/index.js +5 -4
  346. package/package.json +3 -3
  347. package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
  348. package/src/contracts/Common/CoreTypes.ts +7 -0
  349. package/src/contracts/Common/index.ts +1 -1
  350. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  351. package/src/contracts/Configuration/Registration.ts +92 -48
  352. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  353. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  354. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  355. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  356. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  357. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  358. package/src/contracts/Handlers/JsonContract.ts +14 -4
  359. package/src/contracts/Locations/Authority.ts +7 -3
  360. package/src/contracts/Locations/Options.ts +1 -1
  361. package/src/contracts/Locations/Stores.ts +14 -0
  362. package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
  363. package/src/contracts/Spots/Contracts.ts +1 -1
  364. package/src/internal.ts +15 -0
  365. package/src/nest-integration.ts +28 -10
  366. package/src/runtime/abort.ts +6 -5
  367. package/src/runtime/activation-admission.ts +72 -0
  368. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  369. package/src/runtime/actors/actor-client.ts +77 -204
  370. package/src/runtime/actors/actor-context.ts +45 -39
  371. package/src/runtime/actors/actor-handoff.ts +55 -45
  372. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  373. package/src/runtime/actors/actor-local-native-join.ts +174 -215
  374. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  375. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  376. package/src/runtime/actors/actor-remote-joiner.ts +15 -36
  377. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  378. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  379. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  380. package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
  381. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  382. package/src/runtime/actors/actor-source-transfer.ts +5 -18
  383. package/src/runtime/actors/bound-session-wire.ts +2 -8
  384. package/src/runtime/actors/deferred-join-completion.ts +44 -0
  385. package/src/runtime/actors/index.ts +122 -88
  386. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  387. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  388. package/src/runtime/admission.ts +13 -2
  389. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  390. package/src/runtime/backend/contracts/index.ts +15 -42
  391. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
  392. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  393. package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
  394. package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
  395. package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
  396. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  397. package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
  398. package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
  399. package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
  400. package/src/runtime/backend/raw-binding-port.ts +14 -1
  401. package/src/runtime/backend/runtime-values.ts +4 -1
  402. package/src/runtime/channels/channel-clients.ts +132 -96
  403. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  404. package/src/runtime/channels/channel-envelope.ts +58 -29
  405. package/src/runtime/channels/channel-outbound-operations.ts +10 -31
  406. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  407. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  408. package/src/runtime/channels/channel-runtime-manager.ts +8 -15
  409. package/src/runtime/channels/channel-socket-options.ts +8 -2
  410. package/src/runtime/channels/channel-socket-registry.ts +369 -262
  411. package/src/runtime/channels/channel-transports.ts +161 -115
  412. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  413. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  414. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  415. package/src/runtime/channels/fanout-location-runtime.ts +175 -106
  416. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  417. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  418. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  419. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  420. package/src/runtime/diagnostics/flow-context.ts +16 -2
  421. package/src/runtime/diagnostics/index.ts +27 -17
  422. package/src/runtime/diagnostics/message-flow.ts +15 -25
  423. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  424. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  425. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  426. package/src/runtime/disposal.ts +19 -0
  427. package/src/runtime/execution/index.ts +116 -38
  428. package/src/runtime/execution/serial-execution-queue.ts +179 -34
  429. package/src/runtime/execution/state-lane.ts +142 -4
  430. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  431. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  432. package/src/runtime/foundation/listener-records.ts +21 -0
  433. package/src/runtime/foundation/operation-identity.ts +11 -5
  434. package/src/runtime/foundation/operation-registry.ts +33 -50
  435. package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
  436. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  437. package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
  438. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  439. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  440. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  441. package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
  442. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  443. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  444. package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
  445. package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
  446. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  447. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  448. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
  449. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  450. package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
  451. package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
  452. package/src/runtime/foundation/service-topology-registry.ts +30 -79
  453. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  454. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  455. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  456. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  457. package/src/runtime/framework-errors-internal.ts +380 -134
  458. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  459. package/src/runtime/host/actor-packet-relay.ts +57 -147
  460. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  461. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  462. package/src/runtime/host/actor-transfer-runtime.ts +266 -418
  463. package/src/runtime/host/application-job-queue.ts +28 -34
  464. package/src/runtime/host/bound-session-relay.ts +1 -2
  465. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  466. package/src/runtime/host/index.ts +408 -312
  467. package/src/runtime/host/instance-activation-authority.ts +89 -109
  468. package/src/runtime/host/location-runtime-owner.ts +4 -2
  469. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  470. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  471. package/src/runtime/host/remote-bound-session-relay.ts +12 -44
  472. package/src/runtime/host/route-mesh-runtime.ts +236 -275
  473. package/src/runtime/host/runtime-shutdown.ts +17 -21
  474. package/src/runtime/host/service-relocation-control.ts +14 -1
  475. package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
  476. package/src/runtime/host/spot-address-transport.ts +73 -195
  477. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  478. package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
  479. package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
  480. package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
  481. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  482. package/src/runtime/locations/authority-key-codec.ts +7 -3
  483. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  484. package/src/runtime/locations/creation-operation-id.ts +6 -3
  485. package/src/runtime/locations/domain-store-contract.ts +12 -3
  486. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  487. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  488. package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
  489. package/src/runtime/locations/key-codec.ts +3 -2
  490. package/src/runtime/locations/lease-tracker.ts +8 -14
  491. package/src/runtime/locations/lifecycle.ts +16 -45
  492. package/src/runtime/locations/location-store-failure.ts +4 -0
  493. package/src/runtime/locations/location-store-pages.ts +18 -0
  494. package/src/runtime/locations/location-store-repository.ts +450 -478
  495. package/src/runtime/locations/relocation-blob.ts +17 -6
  496. package/src/runtime/locations/resolvers.ts +90 -58
  497. package/src/runtime/locations/runtime.ts +220 -110
  498. package/src/runtime/locations/spot-location-claims.ts +54 -26
  499. package/src/runtime/messaging/payload-codec.ts +35 -24
  500. package/src/runtime/messaging/submission-result.ts +57 -1
  501. package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
  502. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
  503. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
  504. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
  505. package/src/runtime/spots/index.ts +687 -437
  506. package/src/runtime/spots/spot-activation-registry.ts +42 -71
  507. package/src/runtime/spots/spot-activation-state.ts +4 -16
  508. package/src/runtime/spots/spot-activation.ts +167 -115
  509. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  510. package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
  511. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
  512. package/src/runtime/spots/spot-actor-membership.ts +107 -75
  513. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  514. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  515. package/src/runtime/spots/spot-context.ts +3 -3
  516. package/src/runtime/spots/spot-entry-activation.ts +13 -33
  517. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  518. package/src/runtime/spots/spot-manager-public.ts +29 -21
  519. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  520. package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
  521. package/src/runtime/spots/spot-outbound.ts +47 -68
  522. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  523. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  524. package/src/runtime/spots/spot-route-replies.ts +6 -4
  525. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
  526. package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
  527. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  528. package/src/runtime/spots/spot-runtime-ports.ts +10 -43
  529. package/src/runtime/spots/spot-serial-executor.ts +10 -2
  530. package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
  531. package/src/runtime/spots/spot-timer.ts +3 -2
  532. package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
  533. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
  534. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  535. package/src/runtime/streams/bound-session-service.ts +23 -37
  536. package/src/runtime/streams/index.ts +102 -88
  537. package/src/runtime/streams/managed-stream.ts +29 -10
  538. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  539. package/src/runtime/streams/protocol.ts +34 -88
  540. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  541. package/src/runtime/streams/session-calls.ts +6 -5
  542. package/src/runtime/streams/session-context.ts +54 -10
  543. package/src/runtime/streams/session-requests.ts +2 -1
  544. package/src/runtime/streams/session-serial-executor.ts +2 -2
  545. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  546. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  547. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  548. package/src/runtime/workers/index.ts +13 -12
  549. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
  550. package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
  551. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  552. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  553. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  554. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  555. package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
  556. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  557. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,9 +1,9 @@
1
1
  import { type RoutingId } from '../../contracts';
2
- import { type ZLinkSubmitResult } from '../messaging/submission-result';
3
2
  import type { ZLinkBackendMeshNode } from '../backend/contracts';
4
3
  import { type ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
5
- import { type ZLinkChannelEnvelopeCodecRegistry } from '../channels/channel-envelope';
6
4
  import type { ZLinkDispatchErrorReporter } from '../channels';
5
+ import { type ZLinkChannelEnvelopeCodecRegistry } from '../channels/channel-envelope';
6
+ import { type ZLinkSubmitResult } from '../messaging/submission-result';
7
7
  import type { ZLinkSpotAddressCallOptions, ZLinkSpotAddressTransport, ZLinkSpotRoutedTransport } from '../spots/spot-outbound';
8
8
  import type { ZLinkSpotRouteResolver } from '../spots/spot-routing-internal';
9
9
  export interface ZLinkHostSpotAddressTransportOptions {
@@ -37,7 +37,6 @@ export declare class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTr
37
37
  private reportInstanceRequestError;
38
38
  private traceInstanceAddress;
39
39
  private resolveExisting;
40
- private recoverStaleInstanceRoute;
41
40
  private selectMissingTarget;
42
41
  private sendTimeoutMsForMesh;
43
42
  private sendTimeoutMsForRouteChannel;
@@ -2,25 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkHostSpotAddressTransport = void 0;
4
4
  exports.hasObjectClientCapability = hasObjectClientCapability;
5
- const framework_errors_internal_1 = require("../framework-errors-internal");
6
- const runtime_values_1 = require("../backend/runtime-values");
7
5
  const contracts_1 = require("../../contracts");
8
- const submission_result_1 = require("../messaging/submission-result");
9
- const contracts_2 = require("../../contracts");
10
6
  const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
11
7
  const abort_1 = require("../abort");
12
8
  const mesh_completion_table_1 = require("../backend/mesh-completion-table");
9
+ const runtime_values_1 = require("../backend/runtime-values");
13
10
  const channel_envelope_1 = require("../channels/channel-envelope");
14
11
  const diagnostics_1 = require("../diagnostics");
15
12
  const flow_context_1 = require("../diagnostics/flow-context");
13
+ const framework_errors_internal_1 = require("../framework-errors-internal");
16
14
  const packet_name_1 = require("../messaging/packet-name");
15
+ const submission_result_1 = require("../messaging/submission-result");
17
16
  function hasObjectClientCapability(role) {
18
17
  return role === 'client' || role === 'server';
19
18
  }
20
- // Only a synchronous target-admission rejection is safe to retry. A
21
- // completion with the same public error kind may already represent an
22
- // admitted application operation, so it must not enter the retry loop.
23
- const PRE_ADMISSION_MISSING_INSTANCE_ERRORS = new WeakSet();
24
19
  /** Owns global Spot authority lookup and Missing Instance placement. */
25
20
  class ZLinkHostSpotAddressTransport {
26
21
  options;
@@ -44,6 +39,7 @@ class ZLinkHostSpotAddressTransport {
44
39
  deadline.setOwnerTimeout(this.sendTimeoutMsForRouteChannel(existing.routerChannelId));
45
40
  try {
46
41
  const result = await (0, abort_1.awaitWithAbort)(this.options.routed.sendToSpot(existing, message, {
42
+ instanceSpot: call.instanceSpot,
47
43
  timeoutMs: deadline.requireRemaining(),
48
44
  signal: deadline.signal,
49
45
  metadata: call.metadata
@@ -91,7 +87,7 @@ class ZLinkHostSpotAddressTransport {
91
87
  deadline.setOwnerTimeout(this.sendTimeoutMsForMesh(selected.meshName));
92
88
  const encoded = this.encode(3 /* ZLinkChannelMessageKind.Command */, selected.meshName, message);
93
89
  const sourceSpotId = call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId);
94
- const mapped = mapSubmitResult(await (0, abort_1.awaitWithAbort)(selected.node.sendToMissingInstanceSpot(selected.target, encoded, BigInt(deadline.deadlineUnixMs), sourceSpotId, call.metadata), deadline.signal));
90
+ const mapped = (0, submission_result_1.classifySubmitResult)(await (0, abort_1.awaitWithAbort)(selected.node.sendToMissingInstanceSpot(selected.target, encoded, BigInt(deadline.deadlineUnixMs), sourceSpotId, call.metadata), deadline.signal), 'Instance Spot submission');
95
91
  this.traceInstanceAddress(submitResultFlowOutcome(mapped.status), ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, selected.meshName, selected.target.stableType, selected.target.targetNodeRid, mapped.status === submission_result_1.ZLinkSubmitStatus.Submitted
96
92
  ? undefined
97
93
  : submitResultReason(mapped.status));
@@ -114,44 +110,32 @@ class ZLinkHostSpotAddressTransport {
114
110
  const timeoutMs = call.timeoutMs ?? this.options.defaultRequestTimeoutMs;
115
111
  const deadline = createSpotAddressDeadline(timeoutMs, call.signal);
116
112
  try {
117
- for (;;) {
118
- const existing = await this.resolveExisting(spotId, deadline.signal);
119
- deadline.requireRemaining();
120
- if (existing !== undefined) {
121
- this.validateExisting(existing, call);
122
- try {
123
- return await this.requestToExistingSpot(spotId, request, call, existing, deadline);
124
- }
125
- catch (error) {
126
- if (isSpotRouteRefreshError(error)) {
127
- this.options.resolver()?.invalidate?.(spotId);
128
- }
129
- const recovery = await this.recoverStaleInstanceRoute(spotId, call, deadline, error, existing);
130
- if (recovery.kind === 'route') {
131
- // Retry only after the resolver exposes a different route. The
132
- // stale target cannot have admitted the application operation.
133
- continue;
134
- }
135
- if (recovery.kind !== 'cold') {
136
- this.reportInstanceRequestError(spotId, request, error, existing.routerChannelId, existing.targetNodeRid, existing.stableType, addressedInstanceErrorReason(error));
137
- throw error;
138
- }
139
- // The logical authority is no longer Ready, so the Instance
140
- // intent path below may submit the original operation once.
141
- }
113
+ const existing = await this.resolveExisting(spotId, deadline.signal);
114
+ deadline.requireRemaining();
115
+ if (existing === undefined) {
116
+ return await this.requestToMissingInstance(spotId, request, call, deadline);
117
+ }
118
+ this.validateExisting(existing, call);
119
+ try {
120
+ return await this.requestToExistingSpot(spotId, request, call, existing, deadline);
121
+ }
122
+ catch (error) {
123
+ if (isSpotRouteRefreshError(error)) {
124
+ this.options.resolver()?.invalidate?.(spotId);
142
125
  }
143
- try {
126
+ // Failover policy §4.4: SpotMoving is the owner's Ready owner-fence
127
+ // refusal, made before admission. With Instance intent, one authority
128
+ // read under the same deadline decides: Missing means Close released
129
+ // the incarnation, so the request activates a new one. Any other
130
+ // answer, and any message the owner admitted, keeps this terminal.
131
+ if (call.instanceSpot &&
132
+ isOwnerFenceRefusal(error) &&
133
+ (await this.resolveExisting(spotId, deadline.signal)) === undefined) {
134
+ deadline.requireRemaining();
144
135
  return await this.requestToMissingInstance(spotId, request, call, deadline);
145
136
  }
146
- catch (error) {
147
- if (!isMissingInstanceRetryError(error))
148
- throw error;
149
- // A placement node can finish cleanup before its stale native result
150
- // reaches this process. Refresh authority and select again under the
151
- // same end-to-end deadline; the old envelope was not admitted.
152
- this.options.resolver()?.invalidate?.(spotId);
153
- await waitForSpotRouteRefresh(Math.min(10, deadline.requireRemaining()), deadline.signal);
154
- }
137
+ this.reportInstanceRequestError(spotId, request, error, existing.routerChannelId, existing.targetNodeRid, existing.stableType, addressedInstanceErrorReason(error));
138
+ throw error;
155
139
  }
156
140
  }
157
141
  catch (error) {
@@ -170,6 +154,7 @@ class ZLinkHostSpotAddressTransport {
170
154
  async requestToExistingSpot(spotId, request, call, existing, deadline) {
171
155
  this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request, spotId, request, existing.routerChannelId, existing.stableType, existing.targetNodeRid);
172
156
  const reply = await (0, abort_1.awaitWithAbort)(this.options.routed.requestToSpot(existing, request, {
157
+ instanceSpot: call.instanceSpot,
173
158
  timeoutMs: deadline.requireRemaining(),
174
159
  signal: deadline.signal,
175
160
  metadata: call.metadata
@@ -201,17 +186,7 @@ class ZLinkHostSpotAddressTransport {
201
186
  const table = this.options.completions(selected.meshName);
202
187
  if (table === undefined)
203
188
  throw new Error(`MeshNode '${selected.meshName}' completion table is not started.`);
204
- let completionPromise;
205
- try {
206
- completionPromise = table.submit(() => selected.node.requestToMissingInstanceSpot(selected.target, encoded, deadlineUnixMs, call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId), call.metadata), deadline.signal);
207
- }
208
- catch (error) {
209
- if (error instanceof contracts_1.ZLinkFrameworkException &&
210
- (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound) {
211
- PRE_ADMISSION_MISSING_INSTANCE_ERRORS.add(error);
212
- }
213
- throw error;
214
- }
189
+ const completionPromise = table.submit(() => selected.node.requestToMissingInstanceSpot(selected.target, encoded, deadlineUnixMs, call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId), call.metadata), deadline.signal);
215
190
  this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request, spotId, request, selected.meshName, selected.target.stableType, selected.target.targetNodeRid);
216
191
  const completion = await (0, abort_1.awaitWithAbort)(completionPromise, deadline.signal);
217
192
  try {
@@ -274,23 +249,6 @@ class ZLinkHostSpotAddressTransport {
274
249
  throw error;
275
250
  }
276
251
  }
277
- async recoverStaleInstanceRoute(spotId, call, deadline, error, staleRoute) {
278
- if (!call.instanceSpot ||
279
- !(error instanceof contracts_1.ZLinkFrameworkException) ||
280
- !isInstanceRouteStaleError(error)) {
281
- return { kind: 'fail' };
282
- }
283
- for (;;) {
284
- deadline.requireRemaining();
285
- const current = await this.resolveExisting(spotId, deadline.signal);
286
- if (current === undefined)
287
- return { kind: 'cold' };
288
- if (!sameSpotRouteSnapshot(current, staleRoute)) {
289
- return { kind: 'route', route: current };
290
- }
291
- await waitForSpotRouteRefresh(Math.min(10, deadline.requireRemaining()), deadline.signal);
292
- }
293
- }
294
252
  selectMissingTarget(spotId, call) {
295
253
  const configuredMeshes = this.options.meshNames();
296
254
  if (call.initialMeshName !== undefined &&
@@ -370,7 +328,7 @@ class ZLinkHostSpotAddressTransport {
370
328
  validateExisting(target, call) {
371
329
  if (!call.instanceSpot)
372
330
  return;
373
- if (target.spotKind !== contracts_2.ZLinkSpotKind.Instance ||
331
+ if (target.spotKind !== contracts_1.ZLinkSpotKind.Instance ||
374
332
  (call.instanceSpotType !== undefined && target.stableType !== call.instanceSpotType)) {
375
333
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotTypeMismatch, `Spot '${String(target.spotId)}' is not the requested Instance Spot type.`);
376
334
  }
@@ -383,23 +341,6 @@ class ZLinkHostSpotAddressTransport {
383
341
  }
384
342
  }
385
343
  exports.ZLinkHostSpotAddressTransport = ZLinkHostSpotAddressTransport;
386
- function isInstanceRouteStaleError(error) {
387
- if (!(error instanceof contracts_1.ZLinkFrameworkException))
388
- return false;
389
- const kind = (0, framework_errors_internal_1.internalFrameworkErrorKind)(error);
390
- // RequestTargetNotFound from an existing route is a pre-admission route
391
- // lookup failure. A stale owner result is terminal for this application
392
- // operation: the routed request may already have crossed the transport
393
- // boundary, so refreshing the route and resubmitting it could execute the
394
- // same operation twice. Instance cold activation is selected only when the
395
- // authority resolver itself reports that the Ready route is absent.
396
- if (kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound)
397
- return true;
398
- return false;
399
- }
400
- function isMissingInstanceRetryError(error) {
401
- return (error instanceof contracts_1.ZLinkFrameworkException && PRE_ADMISSION_MISSING_INSTANCE_ERRORS.has(error));
402
- }
403
344
  function missingInstanceRequestFailure(result, nativeErrno) {
404
345
  const canonical = (0, framework_errors_internal_1.isCanonicalWireReplyTerminal)(result, nativeErrno);
405
346
  const wireKind = canonical
@@ -422,23 +363,6 @@ function missingInstanceRequestFailure(result, nativeErrno) {
422
363
  : (wireKind ?? framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed);
423
364
  return (0, framework_errors_internal_1.createInternalFrameworkException)(kind, `Instance Spot request failed with result ${result} and errno ${nativeErrno}.`);
424
365
  }
425
- function mapSubmitResult(result) {
426
- switch (result) {
427
- case runtime_values_1.SubmitResult.Ok:
428
- return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
429
- case runtime_values_1.SubmitResult.Backpressured:
430
- case runtime_values_1.SubmitResult.NotAdmitted:
431
- return { status: submission_result_1.ZLinkSubmitStatus.Backpressured };
432
- case runtime_values_1.SubmitResult.NotFound:
433
- return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
434
- case runtime_values_1.SubmitResult.NotConnected:
435
- return { status: submission_result_1.ZLinkSubmitStatus.RouteNotConnected };
436
- case runtime_values_1.SubmitResult.Terminated:
437
- return { status: submission_result_1.ZLinkSubmitStatus.Shutdown };
438
- default:
439
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed, `Instance Spot submission failed with result ${result}.`);
440
- }
441
- }
442
366
  function missingInstancePlacementCapacity(spotId, stableType) {
443
367
  const type = stableType === undefined ? '' : ` of type '${stableType}'`;
444
368
  return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.PlacementCapacityExhausted, `No eligible Instance Spot placement target${type} is available for '${String(spotId)}'.`, true);
@@ -458,35 +382,9 @@ function isSpotRouteRefreshError(error) {
458
382
  kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale ||
459
383
  kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected);
460
384
  }
461
- function sameSpotRouteSnapshot(left, right) {
462
- return (String(left.targetNodeRid) === String(right.targetNodeRid) &&
463
- String(left.spotId) === String(right.spotId) &&
464
- left.routerChannelId === right.routerChannelId &&
465
- left.spotKind === right.spotKind &&
466
- left.stableType === right.stableType &&
467
- left.targetSpotGeneration === right.targetSpotGeneration &&
468
- left.targetNodeGeneration === right.targetNodeGeneration &&
469
- left.authorityOwnerGeneration === right.authorityOwnerGeneration &&
470
- left.targetOwnerId === right.targetOwnerId &&
471
- left.ownerLeaseGeneration === right.ownerLeaseGeneration &&
472
- left.authorityStoreVersion === right.authorityStoreVersion);
473
- }
474
- function waitForSpotRouteRefresh(delayMs, signal) {
475
- return new Promise((resolve, reject) => {
476
- const finish = () => {
477
- signal.removeEventListener('abort', abort);
478
- resolve();
479
- };
480
- const abort = () => {
481
- clearTimeout(timer);
482
- signal.removeEventListener('abort', abort);
483
- reject(signal.reason);
484
- };
485
- const timer = setTimeout(finish, delayMs);
486
- signal.addEventListener('abort', abort, { once: true });
487
- if (signal.aborted)
488
- abort();
489
- });
385
+ function isOwnerFenceRefusal(error) {
386
+ return (error instanceof contracts_1.ZLinkFrameworkException &&
387
+ (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving);
490
388
  }
491
389
  function submitResultReason(status) {
492
390
  switch (status) {
@@ -34,5 +34,5 @@ export interface ZLinkSpotNodeRuntimeOptionsFactoryOptions {
34
34
  export declare class ZLinkSpotNodeRuntimeOptionsFactory {
35
35
  private readonly options;
36
36
  constructor(options: ZLinkSpotNodeRuntimeOptionsFactoryOptions);
37
- create(): ZLinkSpotNodeRuntimeManagerOptions;
37
+ create(): Omit<ZLinkSpotNodeRuntimeManagerOptions, 'errorSink'>;
38
38
  }
@@ -8,16 +8,17 @@ class ZLinkSpotNodeRuntimeOptionsFactory {
8
8
  this.options = options;
9
9
  }
10
10
  create() {
11
+ const spotRouterChannelIdForMesh = this.options.meshRouters.spotRouterChannelIdByMesh();
11
12
  return {
12
13
  registration: this.options.registration,
13
14
  primaryMeshName: this.options.meshRouters.primaryMeshName(),
14
15
  backendAdapterFactory: this.options.backendAdapterFactory,
15
16
  context: this.options.context,
16
- channelClient: new channels_1.DefaultZLinkChannelClient(this.options.registration, this.options.channelTransport),
17
+ channelClient: new channels_1.DefaultZLinkChannelClient(this.options.registration, this.options.channelTransport, this.options.routeTransport, spotRouterChannelIdForMesh),
17
18
  fanoutClient: new channels_1.DefaultZLinkFanoutClient(this.options.registration, this.options.channelTransport),
18
19
  spotPublisherClient: new channels_1.DefaultZLinkSpotPublisherClient(this.options.registration, this.options.spotPublisherTransport),
19
20
  routedTransport: this.options.routeTransport,
20
- spotRouterChannelIdForMesh: this.options.meshRouters.spotRouterChannelIdByMesh(),
21
+ spotRouterChannelIdForMesh,
21
22
  providerResolver: this.options.providerResolver,
22
23
  dispatchErrors: this.options.dispatchErrors,
23
24
  runtimeEventPublisher: this.options.runtimeEventPublisher,
@@ -22,12 +22,9 @@ export interface ZLinkSpotRuntimeOptionsFactoryOptions {
22
22
  readonly actorManager: () => DefaultZLinkActorManager | undefined;
23
23
  readonly locationLifecycle: () => ZLinkLocationLifecycle | undefined;
24
24
  readonly releaseInstanceAuthority: (meshName: string, spotId: string, objectGeneration: bigint) => Promise<void>;
25
- readonly beginInstanceIdleClosingAuthority: (meshName: string, spotId: string) => Promise<{
26
- restoreReady(): Promise<void>;
27
- } | undefined>;
28
- readonly beginInstanceClosingAuthority: (meshName: string, spotId: string) => Promise<{
29
- restoreReady(): Promise<void>;
30
- } | undefined>;
25
+ readonly beginInstanceIdleClosingAuthority: (meshName: string, spotId: string, onCommitted: () => void) => Promise<import('../locations/spot-location-claims').ZLinkInstanceClosingAuthority | undefined>;
26
+ readonly beginInstanceClosingAuthority: (meshName: string, spotId: string, onCommitted: () => void) => Promise<import('../locations/spot-location-claims').ZLinkInstanceClosingAuthority | undefined>;
27
+ readonly beginUserClosingAuthority: (meshName: string, spotId: string, objectGeneration: bigint, onCommitted: () => void) => Promise<import('../locations/spot-location-claims').ZLinkInstanceClosingAuthority | undefined>;
31
28
  readonly createLocationSpotRouteResolver: () => ZLinkSpotRouteResolver | undefined;
32
29
  readonly boundSessionRelay: ZLinkBoundSessionRelay;
33
30
  readonly actorHandoff: ZLinkActorHandoffCoordinator;
@@ -36,7 +33,7 @@ export interface ZLinkSpotRuntimeOptionsFactoryOptions {
36
33
  readonly detachedTaskRunner: ZLinkDetachedTaskRunner;
37
34
  readonly metrics: import('../diagnostics').ZLinkRuntimeMetrics;
38
35
  readonly admission: ZLinkRuntimeAdmissionGate;
39
- readonly statefulExecutionAllowed: () => boolean;
36
+ readonly statefulExecution: NonNullable<ZLinkSpotManagerOptions['statefulExecution']>;
40
37
  }
41
38
  export declare class ZLinkSpotRuntimeOptionsFactory {
42
39
  private readonly options;
@@ -11,6 +11,7 @@ class ZLinkSpotRuntimeOptionsFactory {
11
11
  this.options = options;
12
12
  }
13
13
  create(actorTransferRuntime) {
14
+ const spotRouterChannelIdForMesh = this.options.meshRouters.spotRouterChannelIdByMesh();
14
15
  return {
15
16
  nodeRid: undefined,
16
17
  nodeRidProvider: (meshName) => this.meshNodeRoutingId(meshName),
@@ -38,25 +39,65 @@ class ZLinkSpotRuntimeOptionsFactory {
38
39
  }
39
40
  await runtime.dispatchEntryActorJoin(meshName, actor, handoffBacklog);
40
41
  },
41
- channelClient: new channels_1.DefaultZLinkChannelClient(this.options.registration, this.options.channelTransport),
42
+ executeEntryActor: (meshName, actorId, operation) => {
43
+ const runtime = this.options.spotNodeRuntime();
44
+ if (runtime === undefined) {
45
+ throw new configuration_1.ZLinkConfigurationException('Entry Spot Actor completion requires the MeshNode runtime.');
46
+ }
47
+ return runtime.executeEntryActor(meshName, actorId, operation);
48
+ },
49
+ channelClient: new channels_1.DefaultZLinkChannelClient(this.options.registration, this.options.channelTransport, this.options.routeTransport, spotRouterChannelIdForMesh),
42
50
  fanoutClient: new channels_1.DefaultZLinkFanoutClient(this.options.registration, this.options.channelTransport),
43
51
  spotPublisherClient: new channels_1.DefaultZLinkSpotPublisherClient(this.options.registration, this.options.spotPublisherTransport),
44
52
  routedTransport: this.options.routeTransport,
45
53
  addressTransport: this.options.addressTransport,
46
- spotRouterChannelIdForMesh: this.options.meshRouters.spotRouterChannelIdByMesh(),
47
- channelMeshNameForChannel: (channelName) => {
48
- const matches = [...this.options.registration.spotNodes.entries()]
49
- .filter(([, node]) => Object.prototype.hasOwnProperty.call(node.meshChannels ?? {}, channelName))
50
- .map(([meshName]) => meshName);
51
- return matches.length === 1 ? matches[0] : undefined;
52
- },
54
+ spotRouterChannelIdForMesh,
53
55
  messageSerializers: this.options.registration.messageSerializers,
54
56
  runtimeEventPublisher: this.options.runtimeEventPublisher,
55
57
  detachedTaskRunner: this.options.detachedTaskRunner,
56
58
  locationLifecycle: this.options.locationLifecycle(),
57
59
  releaseInstanceAuthority: (meshName, spotId, objectGeneration) => this.options.releaseInstanceAuthority(meshName, String(spotId), objectGeneration),
58
- beginInstanceIdleClosingAuthority: (meshName, spotId) => this.options.beginInstanceIdleClosingAuthority(meshName, String(spotId)),
59
- beginInstanceClosingAuthority: (meshName, spotId) => this.options.beginInstanceClosingAuthority(meshName, String(spotId)),
60
+ beginInstanceIdleClosingAuthority: (meshName, spotId, onCommitted) => this.options.beginInstanceIdleClosingAuthority(meshName, String(spotId), onCommitted),
61
+ beginInstanceClosingAuthority: async (meshName, spotId, onCommitted, objectGeneration) => {
62
+ const authority = await this.options.beginInstanceClosingAuthority(meshName, String(spotId), onCommitted);
63
+ if (authority === undefined)
64
+ return undefined;
65
+ // A Close without Reincarnate ends this incarnation. The Instance authority
66
+ // release also forgets the node's Ready projection, so a request on a cached
67
+ // Ready route is refused instead of rematerializing the closed generation.
68
+ const release = () => this.options.releaseInstanceAuthority(meshName, String(spotId), objectGeneration);
69
+ if (authority.reincarnate === undefined)
70
+ return { release };
71
+ return {
72
+ release,
73
+ reincarnate: async (initialize) => {
74
+ const current = await authority.reincarnate(initialize);
75
+ const node = this.options.spotNodeRuntime()?.meshNode(meshName);
76
+ const route = {
77
+ targetSpotId: String(spotId),
78
+ targetNodeRid: String(current.allocation.descriptor.rid),
79
+ targetNodeGeneration: current.allocation.descriptorLifecycleGeneration,
80
+ objectGeneration: current.objectGeneration,
81
+ authorityOwnerGeneration: current.authorityOwnerGeneration,
82
+ ownerId: current.ownerId,
83
+ leaseGeneration: current.ownerLeaseGeneration,
84
+ storeVersion: current.storeVersion.value
85
+ };
86
+ node?.restoreSpotAuthority?.(String(spotId), 'instance_spot', current.stableType, current.objectGeneration, current.authorityOwnerGeneration);
87
+ node?.registerInstanceIntent?.(current.stableType, route);
88
+ node?.rememberSpotRoute?.({
89
+ spot: { spotId: String(spotId), generation: current.objectGeneration },
90
+ targetNodeRid: route.targetNodeRid,
91
+ targetNodeGeneration: route.targetNodeGeneration,
92
+ authorityOwnerGeneration: route.authorityOwnerGeneration,
93
+ ownerLeaseGeneration: route.leaseGeneration,
94
+ storeVersion: route.storeVersion
95
+ });
96
+ return current;
97
+ }
98
+ };
99
+ },
100
+ beginUserClosingAuthority: (meshName, spotId, objectGeneration, onCommitted) => this.options.beginUserClosingAuthority(meshName, String(spotId), objectGeneration, onCommitted),
60
101
  instanceSpotApplicationTargetProvider: (meshName, spotId) => this.options
61
102
  .spotNodeRuntime()
62
103
  ?.meshNode(meshName)
@@ -85,12 +126,6 @@ class ZLinkSpotRuntimeOptionsFactory {
85
126
  }
86
127
  };
87
128
  },
88
- createReceived: () => {
89
- const runtime = this.options.spotNodeRuntime();
90
- if (runtime === undefined)
91
- throw new Error('Spot backend runtime is not initialized.');
92
- return runtime.createReceived();
93
- },
94
129
  createTopicMessage: () => {
95
130
  const runtime = this.options.spotNodeRuntime();
96
131
  if (runtime === undefined)
@@ -142,16 +177,13 @@ class ZLinkSpotRuntimeOptionsFactory {
142
177
  return (registration?.options?.relocationCoordinationMode ??
143
178
  contracts_1.ZLinkSpotRelocationCoordinationMode.FrameworkManaged);
144
179
  },
145
- actorBindingGenerationObserver: (actorId, generation) => this.options
146
- .actorManager()
147
- ?.getState(actorId)
148
- ?.setBoundSessionBindingGeneration(generation),
149
180
  actorTransferRuntime,
150
181
  boundSessionRuntime: this.options.boundSessionRelay.boundSessions,
151
182
  actorHandoffRuntime: this.options.actorHandoff,
152
183
  metrics: this.options.metrics,
153
184
  admission: this.options.admission,
154
- statefulExecutionAllowed: this.options.statefulExecutionAllowed,
185
+ statefulExecution: this.options.statefulExecution,
186
+ closeErrorSink: this.options.runtimeOrPreStartErrorSink,
155
187
  dispatchErrors: this.options.dispatchErrorReporter(this.options.runtimeOrPreStartErrorSink)
156
188
  };
157
189
  }
@@ -78,7 +78,7 @@ class ZLinkStatefulAuthorityRouteRuntime {
78
78
  const expectedSpotRoute = previousRoute?.spotRoute ?? null;
79
79
  const expectedInstanceRoute = previousRoute?.kind === 'instance_spot' ? previousRoute.instanceRoute : null;
80
80
  sink.rememberSpotRoute(route.spotRoute, expectedSpotRoute);
81
- if (route.kind === 'instance_spot') {
81
+ if (route.kind === 'instance_spot' && !route.closing) {
82
82
  const status = sink.status();
83
83
  if ((0, routing_id_1.routingIdsEqual)(status.routingId, route.instanceRoute.targetNodeRid) &&
84
84
  status.lifecycleGeneration === route.instanceRoute.targetNodeGeneration) {
@@ -346,7 +346,9 @@ function pendingInstanceActivation(snapshot) {
346
346
  }
347
347
  function authorityRoute(snapshot) {
348
348
  const allocation = snapshot.allocation;
349
- const decoded = (0, service_authority_payload_codec_1.decodeServiceReadySpotAuthority)((0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(snapshot.payload));
349
+ const payload = (0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(snapshot.payload);
350
+ const ready = (0, service_authority_payload_codec_1.decodeServiceReadySpotAuthority)(payload);
351
+ const decoded = ready ?? (0, service_authority_payload_codec_1.decodeServiceClosingSpotAuthority)(payload);
350
352
  if (allocation.state !== 'active' ||
351
353
  allocation.objectKind === 'actor' ||
352
354
  allocation.descriptor.meshName.length === 0 ||
@@ -372,6 +374,7 @@ function authorityRoute(snapshot) {
372
374
  };
373
375
  return {
374
376
  kind: allocation.objectKind,
377
+ closing: ready === undefined,
375
378
  stableType: allocation.stableType,
376
379
  meshName: allocation.descriptor.meshName,
377
380
  spotRoute,
@@ -397,6 +400,7 @@ function sameAppliedRoute(left, right) {
397
400
  if (right === undefined)
398
401
  return false;
399
402
  return (left.kind === right.kind &&
403
+ left.closing === right.closing &&
400
404
  left.stableType === right.stableType &&
401
405
  left.meshName === right.meshName &&
402
406
  left.instanceRoute.targetNodeRid === right.instanceRoute.targetNodeRid &&
@@ -1,9 +1,9 @@
1
- import type { RoutingId, SpotRef, ZLinkSpotCreateResult } from '../../contracts';
1
+ import { type RoutingId, type SpotRef, type ZLinkSpotCreateResult } from '../../contracts';
2
+ import type { ServiceUserSpotOperationResult } from '../foundation/service-stateful-runtime';
3
+ import type { ServiceDirectSpotRouteFence, ServiceUserSpotCloseRecord, ServiceUserSpotCreateRecord } from '../foundation/service-stateful-wire-codec';
2
4
  import type { ZLinkAuthoritySnapshot, ZLinkLocationOwnerToken } from '../locations/internal-location-contracts';
3
5
  import type { ZLinkAuthorityStore, ZLinkObjectCreationStore } from '../locations/internal-store-contracts';
4
6
  import type { ZLinkLocalSpotCreateResult } from '../spots/spot-manager-internal-contracts';
5
- import type { ServiceUserSpotOperationResult } from '../foundation/service-stateful-runtime';
6
- import type { ServiceUserSpotCloseRecord, ServiceUserSpotCreateRecord, ServiceDirectSpotRouteFence } from '../foundation/service-stateful-wire-codec';
7
7
  export interface ZLinkUserSpotCreationCoordinatorOptions {
8
8
  readonly store: ZLinkObjectCreationStore & ZLinkAuthorityStore;
9
9
  readonly target: (request: Pick<ZLinkUserSpotCreationRequest, 'meshName' | 'stableType'>, signal?: AbortSignal, excludedNodeRids?: ReadonlySet<string>) => Promise<{
@@ -53,15 +53,23 @@ export declare class ZLinkUserSpotCreationCoordinator {
53
53
  readonly nodeRid: RoutingId;
54
54
  readonly isLocal: boolean;
55
55
  }, authority: ZLinkAuthoritySnapshot, signal: AbortSignal) => Promise<ZLinkLocalSpotCreateResult>, discard?: (signal?: AbortSignal) => Promise<void>): Promise<ZLinkUserSpotCreationResult>;
56
- close(spot: SpotRef, closeOwner: (current: SpotRef, snapshot: ZLinkAuthoritySnapshot) => Promise<boolean>, signal?: AbortSignal, ownerPresent?: (current: SpotRef) => boolean, ownerCanClose?: (current: SpotRef) => boolean): Promise<boolean>;
56
+ close(spot: SpotRef, closeOwner: (current: SpotRef, beginAuthority: (onCommitted: () => void) => Promise<{
57
+ release(): Promise<void>;
58
+ }>) => Promise<boolean>, signal?: AbortSignal): Promise<boolean>;
59
+ /** Commits Closing for the owner's own incarnation when its context requests Close. */
60
+ beginOwnerClose(spot: SpotRef, onCommitted: () => void): Promise<{
61
+ release(): Promise<void>;
62
+ } | undefined>;
57
63
  resolveCloseTarget(spot: SpotRef, signal?: AbortSignal): Promise<ZLinkUserSpotCloseTarget | undefined>;
58
64
  handleRemoteCreate(record: ServiceUserSpotCreateRecord, materialize: (requestPayload: Uint8Array, authority: ZLinkAuthoritySnapshot, signal: AbortSignal) => Promise<ZLinkLocalSpotCreateResult>, discard?: (signal?: AbortSignal) => Promise<void>, signal?: AbortSignal): Promise<ZLinkUserSpotCreationResult>;
59
65
  private handleLocalCreate;
60
66
  private materializeRemoteCreate;
61
- handleRemoteClose(record: ServiceUserSpotCloseRecord, closeOwner: (spot: SpotRef, signal?: AbortSignal) => Promise<boolean>, signal?: AbortSignal): Promise<boolean>;
67
+ handleRemoteClose(record: ServiceUserSpotCloseRecord, closeOwner: (spot: SpotRef, beginAuthority: (onCommitted: () => void) => Promise<{
68
+ release(): Promise<void>;
69
+ }>, signal?: AbortSignal) => Promise<boolean>, signal?: AbortSignal, canResume?: (spot: SpotRef) => boolean): Promise<boolean>;
70
+ private commitCloseAuthority;
62
71
  forgetReadyRoute(spotId: RoutingId, snapshot: ZLinkAuthoritySnapshot): void;
63
72
  private beginClosing;
64
- private restoreReady;
65
73
  private awaitReady;
66
74
  private remoteCreate;
67
75
  }