@zlink-systems/framework 0.26.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
  3. package/dist/contracts/Channels/Calls.d.ts +1 -1
  4. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  5. package/dist/contracts/Common/CoreTypes.js +7 -0
  6. package/dist/contracts/Common/index.d.ts +1 -1
  7. package/dist/contracts/Common/index.js +0 -1
  8. package/dist/contracts/Configuration/Builders.d.ts +0 -1
  9. package/dist/contracts/Configuration/Configs.d.ts +0 -1
  10. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  11. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  12. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  13. package/dist/contracts/Configuration/Registration.js +58 -36
  14. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  15. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  16. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  17. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  18. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
  19. package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
  20. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  21. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  22. package/dist/contracts/Handlers/JsonContract.js +10 -4
  23. package/dist/contracts/Locations/Authority.d.ts +1 -1
  24. package/dist/contracts/Locations/Authority.js +3 -2
  25. package/dist/contracts/Locations/Options.js +1 -1
  26. package/dist/contracts/Locations/Stores.d.ts +12 -0
  27. package/dist/contracts/Locations/Stores.js +9 -0
  28. package/dist/contracts/Spots/Contracts.d.ts +2 -2
  29. package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
  30. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
  31. package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
  32. package/dist/internal.d.ts +4 -0
  33. package/dist/internal.js +15 -1
  34. package/dist/nest-integration.d.ts +4 -2
  35. package/dist/nest-integration.js +14 -4
  36. package/dist/runtime/abort.d.ts +1 -0
  37. package/dist/runtime/abort.js +8 -5
  38. package/dist/runtime/activation-admission.d.ts +1 -2
  39. package/dist/runtime/activation-admission.js +2 -6
  40. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  41. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  42. package/dist/runtime/actors/actor-client.d.ts +2 -2
  43. package/dist/runtime/actors/actor-client.js +49 -153
  44. package/dist/runtime/actors/actor-context.d.ts +3 -5
  45. package/dist/runtime/actors/actor-context.js +13 -11
  46. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  47. package/dist/runtime/actors/actor-handoff.js +8 -8
  48. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  49. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  50. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  51. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  52. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  53. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  54. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  55. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  56. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  57. package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
  58. package/dist/runtime/actors/actor-request-deadline.js +6 -0
  59. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  60. package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
  61. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  62. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  63. package/dist/runtime/actors/bound-session-wire.js +2 -7
  64. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  65. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  66. package/dist/runtime/actors/index.d.ts +9 -7
  67. package/dist/runtime/actors/index.js +87 -69
  68. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  69. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  70. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  71. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  72. package/dist/runtime/admission.d.ts +2 -0
  73. package/dist/runtime/admission.js +7 -1
  74. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  75. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  76. package/dist/runtime/backend/contracts/index.d.ts +7 -27
  77. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  78. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  79. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  80. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
  81. package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
  82. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  83. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
  84. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  85. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  86. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  87. package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
  88. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  89. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  90. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  91. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  92. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  93. package/dist/runtime/backend/runtime-values.js +2 -0
  94. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  95. package/dist/runtime/channels/channel-clients.js +73 -59
  96. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  97. package/dist/runtime/channels/channel-envelope.d.ts +1 -1
  98. package/dist/runtime/channels/channel-envelope.js +51 -39
  99. package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
  100. package/dist/runtime/channels/channel-outbound-operations.js +25 -42
  101. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  102. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  103. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  104. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  105. package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
  106. package/dist/runtime/channels/channel-runtime-manager.js +13 -10
  107. package/dist/runtime/channels/channel-socket-options.js +3 -12
  108. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  109. package/dist/runtime/channels/channel-socket-registry.js +240 -177
  110. package/dist/runtime/channels/channel-transports.d.ts +21 -31
  111. package/dist/runtime/channels/channel-transports.js +80 -62
  112. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  113. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  114. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  115. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  116. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  117. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  118. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  119. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  120. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  121. package/dist/runtime/channels/local-spot-route-transport.js +1 -3
  122. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
  123. package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
  124. package/dist/runtime/channels/source-spot-router.d.ts +1 -1
  125. package/dist/runtime/channels/source-spot-router.js +2 -4
  126. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  127. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  128. package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
  129. package/dist/runtime/channels/spot-node-route-transport.js +5 -5
  130. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
  131. package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
  132. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
  133. package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
  134. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  135. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  136. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  137. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  138. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  139. package/dist/runtime/diagnostics/flow-context.js +16 -2
  140. package/dist/runtime/diagnostics/index.d.ts +4 -2
  141. package/dist/runtime/diagnostics/index.js +14 -4
  142. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  143. package/dist/runtime/diagnostics/message-flow.js +10 -19
  144. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  145. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  146. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  147. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  148. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  149. package/dist/runtime/disposal.d.ts +5 -0
  150. package/dist/runtime/disposal.js +22 -0
  151. package/dist/runtime/execution/index.d.ts +12 -9
  152. package/dist/runtime/execution/index.js +58 -14
  153. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  154. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  155. package/dist/runtime/execution/state-lane.d.ts +8 -1
  156. package/dist/runtime/execution/state-lane.js +118 -3
  157. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  158. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  159. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  160. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  161. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  162. package/dist/runtime/foundation/operation-identity.js +9 -5
  163. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  164. package/dist/runtime/foundation/operation-registry.js +34 -44
  165. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  166. package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
  167. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  168. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  169. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  170. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  171. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  172. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  173. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  174. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  175. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  176. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  177. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  178. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  179. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  180. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  181. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  182. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  183. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  184. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  185. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  186. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  187. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  188. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  189. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  190. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  191. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  192. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  193. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  194. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  195. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  196. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  197. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  198. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  199. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  200. package/dist/runtime/framework-errors-internal.js +343 -122
  201. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  202. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  203. package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
  204. package/dist/runtime/host/actor-packet-relay.js +54 -99
  205. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  206. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  207. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  208. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  209. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  210. package/dist/runtime/host/application-job-queue.js +16 -33
  211. package/dist/runtime/host/bound-session-relay.js +1 -1
  212. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  213. package/dist/runtime/host/index.d.ts +14 -13
  214. package/dist/runtime/host/index.js +190 -171
  215. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  216. package/dist/runtime/host/instance-activation-authority.js +17 -45
  217. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  218. package/dist/runtime/host/location-runtime-owner.js +2 -2
  219. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  220. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  221. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  222. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  223. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  224. package/dist/runtime/host/remote-bound-session-relay.js +15 -28
  225. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  226. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  227. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  228. package/dist/runtime/host/runtime-shutdown.js +18 -21
  229. package/dist/runtime/host/service-relocation-control.js +6 -1
  230. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  231. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  232. package/dist/runtime/host/spot-address-transport.d.ts +3 -12
  233. package/dist/runtime/host/spot-address-transport.js +78 -220
  234. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  235. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  236. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  237. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  238. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  239. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  240. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  241. package/dist/runtime/locations/authority-key-codec.js +4 -3
  242. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  243. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  244. package/dist/runtime/locations/creation-operation-id.js +6 -4
  245. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  246. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  247. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  248. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  249. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  250. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  251. package/dist/runtime/locations/key-codec.js +3 -2
  252. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  253. package/dist/runtime/locations/lease-tracker.js +7 -11
  254. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  255. package/dist/runtime/locations/lifecycle.js +2 -31
  256. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  257. package/dist/runtime/locations/location-store-failure.js +7 -0
  258. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  259. package/dist/runtime/locations/location-store-pages.js +13 -0
  260. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  261. package/dist/runtime/locations/location-store-repository.js +309 -336
  262. package/dist/runtime/locations/relocation-blob.js +18 -5
  263. package/dist/runtime/locations/resolvers.d.ts +5 -5
  264. package/dist/runtime/locations/resolvers.js +37 -28
  265. package/dist/runtime/locations/runtime.d.ts +5 -4
  266. package/dist/runtime/locations/runtime.js +123 -92
  267. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  268. package/dist/runtime/locations/spot-location-claims.js +42 -1
  269. package/dist/runtime/messaging/payload-codec.js +26 -20
  270. package/dist/runtime/messaging/request-deadline.d.ts +3 -0
  271. package/dist/runtime/messaging/request-deadline.js +39 -0
  272. package/dist/runtime/messaging/submission-result.d.ts +4 -0
  273. package/dist/runtime/messaging/submission-result.js +56 -1
  274. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  275. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  276. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  277. package/dist/runtime/spots/index.d.ts +14 -20
  278. package/dist/runtime/spots/index.js +302 -176
  279. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  280. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  281. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  282. package/dist/runtime/spots/spot-activation-state.js +2 -2
  283. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  284. package/dist/runtime/spots/spot-activation.js +49 -32
  285. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  286. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  287. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  288. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  289. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  290. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  291. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  292. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  293. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  294. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  295. package/dist/runtime/spots/spot-context.d.ts +2 -2
  296. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  297. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  298. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  299. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  300. package/dist/runtime/spots/spot-manager-public.js +5 -4
  301. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  302. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  303. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  304. package/dist/runtime/spots/spot-outbound.d.ts +7 -8
  305. package/dist/runtime/spots/spot-outbound.js +21 -23
  306. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  307. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  308. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  309. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  310. package/dist/runtime/spots/spot-route-replies.js +3 -1
  311. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  312. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  313. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  314. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  315. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  316. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  317. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  318. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  319. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  320. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  321. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  322. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  323. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  324. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  325. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
  326. package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
  327. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  328. package/dist/runtime/streams/bound-session-service.js +12 -2
  329. package/dist/runtime/streams/index.d.ts +16 -17
  330. package/dist/runtime/streams/index.js +22 -23
  331. package/dist/runtime/streams/managed-stream.d.ts +5 -2
  332. package/dist/runtime/streams/managed-stream.js +20 -13
  333. package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
  334. package/dist/runtime/streams/protocol.d.ts +6 -33
  335. package/dist/runtime/streams/protocol.js +38 -110
  336. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  337. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  338. package/dist/runtime/streams/session-calls.d.ts +6 -8
  339. package/dist/runtime/streams/session-calls.js +6 -22
  340. package/dist/runtime/streams/session-context.d.ts +10 -10
  341. package/dist/runtime/streams/session-context.js +25 -10
  342. package/dist/runtime/streams/session-requests.js +2 -1
  343. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  344. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  345. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  346. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  347. package/dist/runtime/workers/index.d.ts +2 -2
  348. package/dist/runtime/workers/index.js +5 -4
  349. package/package.json +3 -3
  350. package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
  351. package/src/contracts/Channels/Calls.ts +1 -1
  352. package/src/contracts/Common/CoreTypes.ts +7 -0
  353. package/src/contracts/Common/index.ts +1 -1
  354. package/src/contracts/Configuration/Builders.ts +0 -1
  355. package/src/contracts/Configuration/Configs.ts +0 -1
  356. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  357. package/src/contracts/Configuration/Registration.ts +92 -48
  358. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  359. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
  360. package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
  361. package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
  362. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  363. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  364. package/src/contracts/Handlers/JsonContract.ts +14 -4
  365. package/src/contracts/Locations/Authority.ts +7 -3
  366. package/src/contracts/Locations/Options.ts +1 -1
  367. package/src/contracts/Locations/Stores.ts +14 -0
  368. package/src/contracts/Spots/Contracts.ts +2 -2
  369. package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
  370. package/src/contracts/Streams/IZLinkSession.ts +2 -3
  371. package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
  372. package/src/internal.ts +14 -0
  373. package/src/nest-integration.ts +28 -10
  374. package/src/runtime/abort.ts +6 -5
  375. package/src/runtime/activation-admission.ts +2 -8
  376. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  377. package/src/runtime/actors/actor-client.ts +85 -218
  378. package/src/runtime/actors/actor-context.ts +39 -33
  379. package/src/runtime/actors/actor-handoff.ts +24 -22
  380. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  381. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  382. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  383. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  384. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  385. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  386. package/src/runtime/actors/actor-request-deadline.ts +4 -0
  387. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  388. package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
  389. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  390. package/src/runtime/actors/bound-session-wire.ts +2 -8
  391. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  392. package/src/runtime/actors/index.ts +100 -79
  393. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  394. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  395. package/src/runtime/admission.ts +8 -1
  396. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  397. package/src/runtime/backend/contracts/index.ts +14 -37
  398. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  399. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  400. package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
  401. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
  402. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  403. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  404. package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
  405. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  406. package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
  407. package/src/runtime/backend/raw-binding-port.ts +1 -1
  408. package/src/runtime/backend/runtime-values.ts +4 -1
  409. package/src/runtime/channels/channel-clients.ts +139 -102
  410. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  411. package/src/runtime/channels/channel-envelope.ts +74 -57
  412. package/src/runtime/channels/channel-outbound-operations.ts +40 -55
  413. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  414. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  415. package/src/runtime/channels/channel-runtime-manager.ts +12 -30
  416. package/src/runtime/channels/channel-socket-options.ts +8 -15
  417. package/src/runtime/channels/channel-socket-registry.ts +291 -196
  418. package/src/runtime/channels/channel-transports.ts +168 -145
  419. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  420. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  421. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  422. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  423. package/src/runtime/channels/local-spot-route-transport.ts +1 -5
  424. package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
  425. package/src/runtime/channels/source-spot-router.ts +2 -9
  426. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  427. package/src/runtime/channels/spot-node-route-transport.ts +7 -9
  428. package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
  429. package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
  430. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  431. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  432. package/src/runtime/diagnostics/flow-context.ts +16 -2
  433. package/src/runtime/diagnostics/index.ts +27 -17
  434. package/src/runtime/diagnostics/message-flow.ts +15 -25
  435. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  436. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  437. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  438. package/src/runtime/disposal.ts +19 -0
  439. package/src/runtime/execution/index.ts +60 -20
  440. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  441. package/src/runtime/execution/state-lane.ts +142 -4
  442. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  443. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  444. package/src/runtime/foundation/operation-identity.ts +11 -5
  445. package/src/runtime/foundation/operation-registry.ts +33 -50
  446. package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
  447. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  448. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  449. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  450. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  451. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  452. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  453. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  454. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  455. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  456. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  457. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  458. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  459. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  460. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  461. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  462. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  463. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  464. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  465. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  466. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  467. package/src/runtime/framework-errors-internal.ts +380 -134
  468. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  469. package/src/runtime/host/actor-packet-relay.ts +63 -160
  470. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  471. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  472. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  473. package/src/runtime/host/application-job-queue.ts +28 -34
  474. package/src/runtime/host/bound-session-relay.ts +1 -2
  475. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  476. package/src/runtime/host/index.ts +327 -320
  477. package/src/runtime/host/instance-activation-authority.ts +89 -109
  478. package/src/runtime/host/location-runtime-owner.ts +4 -2
  479. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  480. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  481. package/src/runtime/host/remote-bound-session-relay.ts +16 -57
  482. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  483. package/src/runtime/host/runtime-shutdown.ts +17 -21
  484. package/src/runtime/host/service-relocation-control.ts +14 -1
  485. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  486. package/src/runtime/host/spot-address-transport.ts +175 -356
  487. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  488. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  489. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  490. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  491. package/src/runtime/locations/authority-key-codec.ts +7 -3
  492. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  493. package/src/runtime/locations/creation-operation-id.ts +6 -3
  494. package/src/runtime/locations/domain-store-contract.ts +12 -3
  495. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  496. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  497. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  498. package/src/runtime/locations/key-codec.ts +3 -2
  499. package/src/runtime/locations/lease-tracker.ts +8 -14
  500. package/src/runtime/locations/lifecycle.ts +13 -43
  501. package/src/runtime/locations/location-store-failure.ts +4 -0
  502. package/src/runtime/locations/location-store-pages.ts +18 -0
  503. package/src/runtime/locations/location-store-repository.ts +457 -482
  504. package/src/runtime/locations/relocation-blob.ts +17 -6
  505. package/src/runtime/locations/resolvers.ts +75 -49
  506. package/src/runtime/locations/runtime.ts +220 -110
  507. package/src/runtime/locations/spot-location-claims.ts +58 -1
  508. package/src/runtime/messaging/payload-codec.ts +35 -24
  509. package/src/runtime/messaging/request-deadline.ts +58 -0
  510. package/src/runtime/messaging/submission-result.ts +72 -2
  511. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  512. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  513. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  514. package/src/runtime/spots/index.ts +433 -229
  515. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  516. package/src/runtime/spots/spot-activation-state.ts +2 -2
  517. package/src/runtime/spots/spot-activation.ts +67 -37
  518. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  519. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  520. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  521. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  522. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  523. package/src/runtime/spots/spot-context.ts +3 -3
  524. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  525. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  526. package/src/runtime/spots/spot-manager-public.ts +21 -17
  527. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  528. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  529. package/src/runtime/spots/spot-outbound.ts +59 -47
  530. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  531. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  532. package/src/runtime/spots/spot-route-replies.ts +6 -4
  533. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  534. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  535. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  536. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  537. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  538. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  539. package/src/runtime/spots/spot-timer.ts +3 -2
  540. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  541. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  542. package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
  543. package/src/runtime/streams/bound-session-service.ts +22 -2
  544. package/src/runtime/streams/index.ts +78 -68
  545. package/src/runtime/streams/managed-stream.ts +32 -23
  546. package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
  547. package/src/runtime/streams/protocol.ts +34 -88
  548. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  549. package/src/runtime/streams/session-calls.ts +11 -36
  550. package/src/runtime/streams/session-context.ts +60 -25
  551. package/src/runtime/streams/session-requests.ts +2 -1
  552. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  553. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  554. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  555. package/src/runtime/workers/index.ts +13 -12
  556. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  557. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  558. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  559. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  560. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  561. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,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 {
@@ -15,12 +15,6 @@ export interface ZLinkHostSpotAddressTransportOptions {
15
15
  readonly completions: (meshName: string) => ZLinkMeshCompletionTable | undefined;
16
16
  readonly codecs?: ZLinkChannelEnvelopeCodecRegistry;
17
17
  readonly defaultRequestTimeoutMs: number;
18
- /** Internal one-way deadline policy; public calls do not expose this option. */
19
- readonly defaultSendTimeoutMs?: number;
20
- /** Resolves the send timeout for a configured Spot Mesh. */
21
- readonly sendTimeoutMsForMesh?: (meshName: string) => number;
22
- /** Resolves the send timeout for a resolved Spot route channel. */
23
- readonly sendTimeoutMsForRouteChannel?: (routeChannelId: string) => number;
24
18
  readonly dispatchErrors?: ZLinkDispatchErrorReporter;
25
19
  }
26
20
  export declare function hasObjectClientCapability(role: 'none' | 'client' | 'server' | undefined): boolean;
@@ -28,7 +22,7 @@ export declare function hasObjectClientCapability(role: 'none' | 'client' | 'ser
28
22
  export declare class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport {
29
23
  private readonly options;
30
24
  constructor(options: ZLinkHostSpotAddressTransportOptions);
31
- sendToSpotAddress(spotId: RoutingId, message: unknown, call: ZLinkSpotAddressCallOptions): Promise<ZLinkSubmitResult>;
25
+ sendToSpotAddress(spotId: RoutingId, message: unknown, call: Omit<ZLinkSpotAddressCallOptions, 'timeoutMs' | 'signal'>): Promise<ZLinkSubmitResult>;
32
26
  private sendToSpotAddressScoped;
33
27
  requestToSpotAddress<TReply = unknown>(spotId: RoutingId, request: unknown, call: ZLinkSpotAddressCallOptions): Promise<TReply>;
34
28
  private requestToSpotAddressScoped;
@@ -37,10 +31,7 @@ export declare class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTr
37
31
  private reportInstanceRequestError;
38
32
  private traceInstanceAddress;
39
33
  private resolveExisting;
40
- private recoverStaleInstanceRoute;
41
34
  private selectMissingTarget;
42
- private sendTimeoutMsForMesh;
43
- private sendTimeoutMsForRouteChannel;
44
35
  private validateExisting;
45
36
  private encode;
46
37
  private encodeAtDeadline;
@@ -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;
@@ -34,78 +29,60 @@ class ZLinkHostSpotAddressTransport {
34
29
  return (0, flow_context_1.runWithOutboundFlow)(this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true, () => this.sendToSpotAddressScoped(spotId, message, call));
35
30
  }
36
31
  async sendToSpotAddressScoped(spotId, message, call) {
37
- const timeoutMs = initialSendTimeoutMs(this.options, call);
38
- const deadline = createSpotAddressDeadline(timeoutMs, call.signal);
39
- try {
40
- const existing = await this.resolveExisting(spotId, deadline.signal);
41
- deadline.requireRemaining();
42
- if (existing !== undefined) {
43
- this.validateExisting(existing, call);
44
- deadline.setOwnerTimeout(this.sendTimeoutMsForRouteChannel(existing.routerChannelId));
45
- try {
46
- const result = await (0, abort_1.awaitWithAbort)(this.options.routed.sendToSpot(existing, message, {
47
- timeoutMs: deadline.requireRemaining(),
48
- signal: deadline.signal,
49
- metadata: call.metadata
50
- }), deadline.signal);
51
- if (result.status === submission_result_1.ZLinkSubmitStatus.Submitted) {
52
- this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, existing.routerChannelId, existing.stableType, existing.targetNodeRid);
53
- }
54
- else {
55
- this.traceInstanceAddress(submitResultFlowOutcome(result.status), ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, existing.routerChannelId, existing.stableType, existing.targetNodeRid, submitResultReason(result.status));
56
- }
57
- if (result.status === submission_result_1.ZLinkSubmitStatus.TargetNotFound ||
58
- result.status === submission_result_1.ZLinkSubmitStatus.RouteNotConnected) {
59
- this.options.resolver()?.invalidate?.(spotId);
60
- }
61
- return result;
32
+ const activationDeadlineUnixMs = BigInt(Math.round(Date.now() + this.options.defaultRequestTimeoutMs));
33
+ const existing = await this.resolveExisting(spotId);
34
+ if (existing !== undefined) {
35
+ this.validateExisting(existing, call);
36
+ try {
37
+ const result = await this.options.routed.sendToSpot(existing, message, {
38
+ instanceSpot: call.instanceSpot,
39
+ metadata: call.metadata
40
+ });
41
+ if (result.status === submission_result_1.ZLinkSubmitStatus.Submitted) {
42
+ this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, existing.routerChannelId, existing.stableType, existing.targetNodeRid);
62
43
  }
63
- catch (error) {
64
- if (isSpotRouteRefreshError(error)) {
65
- this.options.resolver()?.invalidate?.(spotId);
66
- }
67
- const reason = addressedInstanceErrorReason(error);
68
- this.traceInstanceAddress(reason === ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Backpressure
69
- ? ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Backpressured
70
- : ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, existing.routerChannelId, existing.stableType, existing.targetNodeRid, reason);
71
- throw error;
44
+ else {
45
+ this.traceInstanceAddress(submitResultFlowOutcome(result.status), ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, existing.routerChannelId, existing.stableType, existing.targetNodeRid, submitResultReason(result.status));
72
46
  }
47
+ if (result.status === submission_result_1.ZLinkSubmitStatus.TargetNotFound ||
48
+ result.status === submission_result_1.ZLinkSubmitStatus.RouteNotConnected) {
49
+ this.options.resolver()?.invalidate?.(spotId);
50
+ }
51
+ return result;
73
52
  }
74
- if (!call.instanceSpot) {
75
- return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
76
- }
77
- const selected = this.selectMissingTarget(spotId, call);
78
- if (selected.kind === 'unsupported') {
79
- this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, call.initialMeshName, call.instanceSpotType, undefined, ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.StaleTarget);
80
- return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
81
- }
82
- if (selected.kind === 'capacity') {
83
- const error = missingInstancePlacementCapacity(spotId, call.instanceSpotType);
84
- this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Backpressured, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, call.initialMeshName, call.instanceSpotType, undefined, ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Backpressure);
53
+ catch (error) {
54
+ if (isSpotRouteRefreshError(error)) {
55
+ this.options.resolver()?.invalidate?.(spotId);
56
+ }
57
+ const reason = addressedInstanceErrorReason(error);
58
+ this.traceInstanceAddress(reason === ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Backpressure
59
+ ? ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Backpressured
60
+ : ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, existing.routerChannelId, existing.stableType, existing.targetNodeRid, reason);
85
61
  throw error;
86
62
  }
87
- if (selected.kind === 'unavailable') {
88
- this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, call.initialMeshName, call.instanceSpotType, undefined, ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.StaleTarget);
89
- return { status: submission_result_1.ZLinkSubmitStatus.RouteNotConnected };
90
- }
91
- deadline.setOwnerTimeout(this.sendTimeoutMsForMesh(selected.meshName));
92
- const encoded = this.encode(3 /* ZLinkChannelMessageKind.Command */, selected.meshName, message);
93
- 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));
95
- 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
- ? undefined
97
- : submitResultReason(mapped.status));
98
- return mapped;
99
63
  }
100
- catch (error) {
101
- if (deadline.expired()) {
102
- return { status: submission_result_1.ZLinkSubmitStatus.TimedOut };
103
- }
64
+ if (!call.instanceSpot) {
65
+ return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
66
+ }
67
+ const selected = this.selectMissingTarget(spotId, call);
68
+ if (selected.kind === 'unsupported') {
69
+ this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, call.initialMeshName, call.instanceSpotType, undefined, ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.StaleTarget);
70
+ return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
71
+ }
72
+ if (selected.kind === 'capacity') {
73
+ const error = missingInstancePlacementCapacity(spotId, call.instanceSpotType);
74
+ this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Backpressured, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, call.initialMeshName, call.instanceSpotType, undefined, ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Backpressure);
104
75
  throw error;
105
76
  }
106
- finally {
107
- deadline.close();
77
+ if (selected.kind === 'unavailable') {
78
+ this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, call.initialMeshName, call.instanceSpotType, undefined, ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.StaleTarget);
79
+ return { status: submission_result_1.ZLinkSubmitStatus.RouteNotConnected };
108
80
  }
81
+ const encoded = this.encode(3 /* ZLinkChannelMessageKind.Command */, selected.meshName, message);
82
+ const sourceSpotId = call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId);
83
+ const mapped = (0, submission_result_1.classifySubmitResult)(await selected.node.sendToMissingInstanceSpot(selected.target, encoded, activationDeadlineUnixMs, sourceSpotId, call.metadata), 'Instance Spot submission');
84
+ 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 ? undefined : submitResultReason(mapped.status));
85
+ return mapped;
109
86
  }
110
87
  requestToSpotAddress(spotId, request, call) {
111
88
  return (0, flow_context_1.runWithOutboundFlow)(this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true, () => this.requestToSpotAddressScoped(spotId, request, call));
@@ -114,44 +91,32 @@ class ZLinkHostSpotAddressTransport {
114
91
  const timeoutMs = call.timeoutMs ?? this.options.defaultRequestTimeoutMs;
115
92
  const deadline = createSpotAddressDeadline(timeoutMs, call.signal);
116
93
  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
- }
94
+ const existing = await this.resolveExisting(spotId, deadline.signal);
95
+ deadline.requireRemaining();
96
+ if (existing === undefined) {
97
+ return await this.requestToMissingInstance(spotId, request, call, deadline);
98
+ }
99
+ this.validateExisting(existing, call);
100
+ try {
101
+ return await this.requestToExistingSpot(spotId, request, call, existing, deadline);
102
+ }
103
+ catch (error) {
104
+ if (isSpotRouteRefreshError(error)) {
105
+ this.options.resolver()?.invalidate?.(spotId);
142
106
  }
143
- try {
107
+ // Failover policy §4.4: SpotMoving is the owner's Ready owner-fence
108
+ // refusal, made before admission. With Instance intent, one authority
109
+ // read under the same deadline decides: Missing means Close released
110
+ // the incarnation, so the request activates a new one. Any other
111
+ // answer, and any message the owner admitted, keeps this terminal.
112
+ if (call.instanceSpot &&
113
+ isOwnerFenceRefusal(error) &&
114
+ (await this.resolveExisting(spotId, deadline.signal)) === undefined) {
115
+ deadline.requireRemaining();
144
116
  return await this.requestToMissingInstance(spotId, request, call, deadline);
145
117
  }
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
- }
118
+ this.reportInstanceRequestError(spotId, request, error, existing.routerChannelId, existing.targetNodeRid, existing.stableType, addressedInstanceErrorReason(error));
119
+ throw error;
155
120
  }
156
121
  }
157
122
  catch (error) {
@@ -170,6 +135,7 @@ class ZLinkHostSpotAddressTransport {
170
135
  async requestToExistingSpot(spotId, request, call, existing, deadline) {
171
136
  this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request, spotId, request, existing.routerChannelId, existing.stableType, existing.targetNodeRid);
172
137
  const reply = await (0, abort_1.awaitWithAbort)(this.options.routed.requestToSpot(existing, request, {
138
+ instanceSpot: call.instanceSpot,
173
139
  timeoutMs: deadline.requireRemaining(),
174
140
  signal: deadline.signal,
175
141
  metadata: call.metadata
@@ -201,17 +167,7 @@ class ZLinkHostSpotAddressTransport {
201
167
  const table = this.options.completions(selected.meshName);
202
168
  if (table === undefined)
203
169
  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
- }
170
+ const completionPromise = table.submit(() => selected.node.requestToMissingInstanceSpot(selected.target, encoded, deadlineUnixMs, call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId), call.metadata), deadline.signal);
215
171
  this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request, spotId, request, selected.meshName, selected.target.stableType, selected.target.targetNodeRid);
216
172
  const completion = await (0, abort_1.awaitWithAbort)(completionPromise, deadline.signal);
217
173
  try {
@@ -274,23 +230,6 @@ class ZLinkHostSpotAddressTransport {
274
230
  throw error;
275
231
  }
276
232
  }
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
233
  selectMissingTarget(spotId, call) {
295
234
  const configuredMeshes = this.options.meshNames();
296
235
  if (call.initialMeshName !== undefined &&
@@ -357,20 +296,10 @@ class ZLinkHostSpotAddressTransport {
357
296
  return { kind: 'unsupported' };
358
297
  return { kind: 'unavailable' };
359
298
  }
360
- sendTimeoutMsForMesh(meshName) {
361
- return (this.options.sendTimeoutMsForMesh?.(meshName) ??
362
- this.options.defaultSendTimeoutMs ??
363
- this.options.defaultRequestTimeoutMs);
364
- }
365
- sendTimeoutMsForRouteChannel(routeChannelId) {
366
- return (this.options.sendTimeoutMsForRouteChannel?.(routeChannelId) ??
367
- this.options.defaultSendTimeoutMs ??
368
- this.options.defaultRequestTimeoutMs);
369
- }
370
299
  validateExisting(target, call) {
371
300
  if (!call.instanceSpot)
372
301
  return;
373
- if (target.spotKind !== contracts_2.ZLinkSpotKind.Instance ||
302
+ if (target.spotKind !== contracts_1.ZLinkSpotKind.Instance ||
374
303
  (call.instanceSpotType !== undefined && target.stableType !== call.instanceSpotType)) {
375
304
  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
305
  }
@@ -383,23 +312,6 @@ class ZLinkHostSpotAddressTransport {
383
312
  }
384
313
  }
385
314
  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
315
  function missingInstanceRequestFailure(result, nativeErrno) {
404
316
  const canonical = (0, framework_errors_internal_1.isCanonicalWireReplyTerminal)(result, nativeErrno);
405
317
  const wireKind = canonical
@@ -422,23 +334,6 @@ function missingInstanceRequestFailure(result, nativeErrno) {
422
334
  : (wireKind ?? framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed);
423
335
  return (0, framework_errors_internal_1.createInternalFrameworkException)(kind, `Instance Spot request failed with result ${result} and errno ${nativeErrno}.`);
424
336
  }
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
337
  function missingInstancePlacementCapacity(spotId, stableType) {
443
338
  const type = stableType === undefined ? '' : ` of type '${stableType}'`;
444
339
  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 +353,9 @@ function isSpotRouteRefreshError(error) {
458
353
  kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale ||
459
354
  kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected);
460
355
  }
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
- });
356
+ function isOwnerFenceRefusal(error) {
357
+ return (error instanceof contracts_1.ZLinkFrameworkException &&
358
+ (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving);
490
359
  }
491
360
  function submitResultReason(status) {
492
361
  switch (status) {
@@ -538,17 +407,10 @@ function addressedInstanceErrorReason(error) {
538
407
  }
539
408
  return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException;
540
409
  }
541
- function initialSendTimeoutMs(options, call) {
542
- return call.initialMeshName === undefined
543
- ? (options.defaultSendTimeoutMs ?? options.defaultRequestTimeoutMs)
544
- : (options.sendTimeoutMsForMesh?.(call.initialMeshName) ??
545
- options.defaultSendTimeoutMs ??
546
- options.defaultRequestTimeoutMs);
547
- }
548
410
  function createSpotAddressDeadline(timeoutMs, parent) {
549
411
  const startedAtMs = performance.now();
550
412
  const startedAtUnixMs = Date.now();
551
- let deadlineMs = startedAtMs + Math.max(0, timeoutMs);
413
+ const deadlineMs = startedAtMs + Math.max(0, timeoutMs);
552
414
  const controller = new AbortController();
553
415
  let expired = false;
554
416
  let timeout;
@@ -577,10 +439,6 @@ function createSpotAddressDeadline(timeoutMs, parent) {
577
439
  return Math.round(startedAtUnixMs + (deadlineMs - startedAtMs));
578
440
  },
579
441
  signal: controller.signal,
580
- setOwnerTimeout(ownerTimeoutMs) {
581
- deadlineMs = startedAtMs + Math.max(0, ownerTimeoutMs);
582
- arm();
583
- },
584
442
  requireRemaining() {
585
443
  const remainingMs = deadlineMs - performance.now();
586
444
  if (remainingMs <= 0) {
@@ -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,15 +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, onCommitted: () => void) => Promise<{
26
- release(): Promise<void>;
27
- } | undefined>;
28
- readonly beginInstanceClosingAuthority: (meshName: string, spotId: string, onCommitted: () => void) => Promise<{
29
- release(): Promise<void>;
30
- } | undefined>;
31
- readonly beginUserClosingAuthority: (meshName: string, spotId: string, objectGeneration: bigint, onCommitted: () => void) => Promise<{
32
- release(): Promise<void>;
33
- } | 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>;
34
28
  readonly createLocationSpotRouteResolver: () => ZLinkSpotRouteResolver | undefined;
35
29
  readonly boundSessionRelay: ZLinkBoundSessionRelay;
36
30
  readonly actorHandoff: ZLinkActorHandoffCoordinator;
@@ -39,7 +33,7 @@ export interface ZLinkSpotRuntimeOptionsFactoryOptions {
39
33
  readonly detachedTaskRunner: ZLinkDetachedTaskRunner;
40
34
  readonly metrics: import('../diagnostics').ZLinkRuntimeMetrics;
41
35
  readonly admission: ZLinkRuntimeAdmissionGate;
42
- readonly statefulExecutionAllowed: () => boolean;
36
+ readonly statefulExecution: NonNullable<ZLinkSpotManagerOptions['statefulExecution']>;
43
37
  }
44
38
  export declare class ZLinkSpotRuntimeOptionsFactory {
45
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,64 @@ 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
60
  beginInstanceIdleClosingAuthority: (meshName, spotId, onCommitted) => this.options.beginInstanceIdleClosingAuthority(meshName, String(spotId), onCommitted),
59
- beginInstanceClosingAuthority: (meshName, spotId, onCommitted) => this.options.beginInstanceClosingAuthority(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
+ },
60
100
  beginUserClosingAuthority: (meshName, spotId, objectGeneration, onCommitted) => this.options.beginUserClosingAuthority(meshName, String(spotId), objectGeneration, onCommitted),
61
101
  instanceSpotApplicationTargetProvider: (meshName, spotId) => this.options
62
102
  .spotNodeRuntime()
@@ -137,16 +177,12 @@ class ZLinkSpotRuntimeOptionsFactory {
137
177
  return (registration?.options?.relocationCoordinationMode ??
138
178
  contracts_1.ZLinkSpotRelocationCoordinationMode.FrameworkManaged);
139
179
  },
140
- actorBindingGenerationObserver: (actorId, generation) => this.options
141
- .actorManager()
142
- ?.getState(actorId)
143
- ?.setBoundSessionBindingGeneration(generation),
144
180
  actorTransferRuntime,
145
181
  boundSessionRuntime: this.options.boundSessionRelay.boundSessions,
146
182
  actorHandoffRuntime: this.options.actorHandoff,
147
183
  metrics: this.options.metrics,
148
184
  admission: this.options.admission,
149
- statefulExecutionAllowed: this.options.statefulExecutionAllowed,
185
+ statefulExecution: this.options.statefulExecution,
150
186
  closeErrorSink: this.options.runtimeOrPreStartErrorSink,
151
187
  dispatchErrors: this.options.dispatchErrorReporter(this.options.runtimeOrPreStartErrorSink)
152
188
  };
@@ -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<{