@zlink-systems/framework 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  3. package/dist/contracts/Common/CoreTypes.js +7 -0
  4. package/dist/contracts/Common/index.d.ts +1 -1
  5. package/dist/contracts/Common/index.js +0 -1
  6. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  7. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  8. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  9. package/dist/contracts/Configuration/Registration.js +58 -36
  10. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  12. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  16. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  17. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  18. package/dist/contracts/Handlers/JsonContract.js +10 -4
  19. package/dist/contracts/Locations/Authority.d.ts +1 -1
  20. package/dist/contracts/Locations/Authority.js +3 -2
  21. package/dist/contracts/Locations/Options.js +1 -1
  22. package/dist/contracts/Locations/Stores.d.ts +12 -0
  23. package/dist/contracts/Locations/Stores.js +9 -0
  24. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  25. package/dist/internal.d.ts +4 -0
  26. package/dist/internal.js +15 -1
  27. package/dist/nest-integration.d.ts +4 -2
  28. package/dist/nest-integration.js +14 -4
  29. package/dist/runtime/abort.d.ts +1 -0
  30. package/dist/runtime/abort.js +8 -5
  31. package/dist/runtime/activation-admission.d.ts +1 -2
  32. package/dist/runtime/activation-admission.js +2 -6
  33. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  34. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  35. package/dist/runtime/actors/actor-client.d.ts +2 -2
  36. package/dist/runtime/actors/actor-client.js +42 -143
  37. package/dist/runtime/actors/actor-context.d.ts +3 -5
  38. package/dist/runtime/actors/actor-context.js +13 -11
  39. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  40. package/dist/runtime/actors/actor-handoff.js +8 -8
  41. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  42. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  43. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  44. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  45. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  46. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  47. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  48. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  49. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  50. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  51. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  52. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  53. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  54. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  55. package/dist/runtime/actors/bound-session-wire.js +2 -7
  56. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  57. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  58. package/dist/runtime/actors/index.d.ts +9 -7
  59. package/dist/runtime/actors/index.js +87 -69
  60. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  61. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  62. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  63. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  64. package/dist/runtime/admission.d.ts +2 -0
  65. package/dist/runtime/admission.js +7 -1
  66. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  67. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  68. package/dist/runtime/backend/contracts/index.d.ts +6 -23
  69. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  70. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  71. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  72. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
  73. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
  74. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  75. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  76. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  77. package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
  78. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  79. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  80. package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
  81. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  82. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  83. package/dist/runtime/backend/runtime-values.js +2 -0
  84. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  85. package/dist/runtime/channels/channel-clients.js +68 -52
  86. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  87. package/dist/runtime/channels/channel-envelope.js +47 -29
  88. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  89. package/dist/runtime/channels/channel-outbound-operations.js +9 -10
  90. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  91. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  94. package/dist/runtime/channels/channel-runtime-manager.js +5 -2
  95. package/dist/runtime/channels/channel-socket-options.js +3 -2
  96. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  97. package/dist/runtime/channels/channel-socket-registry.js +248 -174
  98. package/dist/runtime/channels/channel-transports.d.ts +11 -17
  99. package/dist/runtime/channels/channel-transports.js +68 -47
  100. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  101. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  102. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  103. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  104. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  105. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  106. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  107. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  108. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  109. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  110. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  111. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  112. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  113. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  114. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  115. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  116. package/dist/runtime/diagnostics/flow-context.js +16 -2
  117. package/dist/runtime/diagnostics/index.d.ts +4 -2
  118. package/dist/runtime/diagnostics/index.js +14 -4
  119. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  120. package/dist/runtime/diagnostics/message-flow.js +10 -19
  121. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  122. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  123. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  124. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  125. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  126. package/dist/runtime/disposal.d.ts +5 -0
  127. package/dist/runtime/disposal.js +22 -0
  128. package/dist/runtime/execution/index.d.ts +12 -9
  129. package/dist/runtime/execution/index.js +58 -14
  130. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  131. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  132. package/dist/runtime/execution/state-lane.d.ts +8 -1
  133. package/dist/runtime/execution/state-lane.js +118 -3
  134. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  135. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  136. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  137. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  138. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  139. package/dist/runtime/foundation/operation-identity.js +9 -5
  140. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  141. package/dist/runtime/foundation/operation-registry.js +34 -44
  142. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  143. package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
  144. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  145. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  146. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  147. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  148. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  149. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  150. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  151. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  152. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  153. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  154. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  155. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  156. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  157. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  158. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  159. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  160. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  161. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  162. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  163. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  164. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  165. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  166. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  167. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  168. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  169. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  170. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  171. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  172. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  173. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  174. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  175. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  176. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  177. package/dist/runtime/framework-errors-internal.js +343 -122
  178. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  179. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  180. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  181. package/dist/runtime/host/actor-packet-relay.js +48 -91
  182. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  183. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  184. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  185. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  186. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  187. package/dist/runtime/host/application-job-queue.js +16 -33
  188. package/dist/runtime/host/bound-session-relay.js +1 -1
  189. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  190. package/dist/runtime/host/index.d.ts +14 -13
  191. package/dist/runtime/host/index.js +190 -157
  192. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  193. package/dist/runtime/host/instance-activation-authority.js +17 -45
  194. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  195. package/dist/runtime/host/location-runtime-owner.js +2 -2
  196. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  197. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  198. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  199. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  200. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  201. package/dist/runtime/host/remote-bound-session-relay.js +7 -20
  202. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  203. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  204. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  205. package/dist/runtime/host/runtime-shutdown.js +18 -21
  206. package/dist/runtime/host/service-relocation-control.js +6 -1
  207. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  208. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  209. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  210. package/dist/runtime/host/spot-address-transport.js +34 -136
  211. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  212. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  213. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  214. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  215. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  216. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  217. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  218. package/dist/runtime/locations/authority-key-codec.js +4 -3
  219. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  220. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  221. package/dist/runtime/locations/creation-operation-id.js +6 -4
  222. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  223. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  224. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  225. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  226. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  227. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  228. package/dist/runtime/locations/key-codec.js +3 -2
  229. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  230. package/dist/runtime/locations/lease-tracker.js +7 -11
  231. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  232. package/dist/runtime/locations/lifecycle.js +2 -31
  233. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  234. package/dist/runtime/locations/location-store-failure.js +7 -0
  235. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  236. package/dist/runtime/locations/location-store-pages.js +13 -0
  237. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  238. package/dist/runtime/locations/location-store-repository.js +303 -332
  239. package/dist/runtime/locations/relocation-blob.js +18 -5
  240. package/dist/runtime/locations/resolvers.d.ts +5 -5
  241. package/dist/runtime/locations/resolvers.js +37 -28
  242. package/dist/runtime/locations/runtime.d.ts +5 -4
  243. package/dist/runtime/locations/runtime.js +123 -92
  244. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  245. package/dist/runtime/locations/spot-location-claims.js +42 -1
  246. package/dist/runtime/messaging/payload-codec.js +26 -20
  247. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  248. package/dist/runtime/messaging/submission-result.js +48 -0
  249. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  250. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  251. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  252. package/dist/runtime/spots/index.d.ts +14 -20
  253. package/dist/runtime/spots/index.js +302 -176
  254. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  255. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  256. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  257. package/dist/runtime/spots/spot-activation-state.js +2 -2
  258. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  259. package/dist/runtime/spots/spot-activation.js +49 -32
  260. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  261. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  262. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  263. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  264. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  265. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  266. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  267. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  268. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  269. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  270. package/dist/runtime/spots/spot-context.d.ts +2 -2
  271. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  272. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  273. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  274. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  275. package/dist/runtime/spots/spot-manager-public.js +5 -4
  276. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  277. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  278. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  279. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  280. package/dist/runtime/spots/spot-outbound.js +9 -8
  281. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  282. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  283. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  284. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  285. package/dist/runtime/spots/spot-route-replies.js +3 -1
  286. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  287. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  288. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  289. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  290. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  291. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  292. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  293. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  294. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  295. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  296. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  297. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  298. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  299. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  300. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  301. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  302. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  303. package/dist/runtime/streams/bound-session-service.js +11 -1
  304. package/dist/runtime/streams/index.d.ts +14 -15
  305. package/dist/runtime/streams/index.js +20 -21
  306. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  307. package/dist/runtime/streams/managed-stream.js +17 -8
  308. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  309. package/dist/runtime/streams/protocol.d.ts +6 -33
  310. package/dist/runtime/streams/protocol.js +38 -110
  311. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  312. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  313. package/dist/runtime/streams/session-calls.d.ts +1 -1
  314. package/dist/runtime/streams/session-calls.js +5 -4
  315. package/dist/runtime/streams/session-context.d.ts +6 -6
  316. package/dist/runtime/streams/session-context.js +22 -4
  317. package/dist/runtime/streams/session-requests.js +2 -1
  318. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  319. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  320. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  321. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  322. package/dist/runtime/workers/index.d.ts +2 -2
  323. package/dist/runtime/workers/index.js +5 -4
  324. package/package.json +3 -3
  325. package/src/contracts/Common/CoreTypes.ts +7 -0
  326. package/src/contracts/Common/index.ts +1 -1
  327. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  328. package/src/contracts/Configuration/Registration.ts +92 -48
  329. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  330. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  331. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  332. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  333. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  334. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  335. package/src/contracts/Handlers/JsonContract.ts +14 -4
  336. package/src/contracts/Locations/Authority.ts +7 -3
  337. package/src/contracts/Locations/Options.ts +1 -1
  338. package/src/contracts/Locations/Stores.ts +14 -0
  339. package/src/contracts/Spots/Contracts.ts +1 -1
  340. package/src/internal.ts +14 -0
  341. package/src/nest-integration.ts +28 -10
  342. package/src/runtime/abort.ts +6 -5
  343. package/src/runtime/activation-admission.ts +2 -8
  344. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  345. package/src/runtime/actors/actor-client.ts +77 -204
  346. package/src/runtime/actors/actor-context.ts +39 -33
  347. package/src/runtime/actors/actor-handoff.ts +24 -22
  348. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  349. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  350. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  351. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  352. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  353. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  354. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  355. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  356. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  357. package/src/runtime/actors/bound-session-wire.ts +2 -8
  358. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  359. package/src/runtime/actors/index.ts +100 -79
  360. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  361. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  362. package/src/runtime/admission.ts +8 -1
  363. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  364. package/src/runtime/backend/contracts/index.ts +13 -29
  365. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  366. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  367. package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
  368. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  369. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  370. package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
  371. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  372. package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
  373. package/src/runtime/backend/raw-binding-port.ts +1 -1
  374. package/src/runtime/backend/runtime-values.ts +4 -1
  375. package/src/runtime/channels/channel-clients.ts +132 -85
  376. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  377. package/src/runtime/channels/channel-envelope.ts +58 -29
  378. package/src/runtime/channels/channel-outbound-operations.ts +10 -23
  379. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  380. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  381. package/src/runtime/channels/channel-runtime-manager.ts +6 -2
  382. package/src/runtime/channels/channel-socket-options.ts +8 -2
  383. package/src/runtime/channels/channel-socket-registry.ts +301 -192
  384. package/src/runtime/channels/channel-transports.ts +161 -112
  385. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  386. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  387. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  388. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  389. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  390. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  391. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  392. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  393. package/src/runtime/diagnostics/flow-context.ts +16 -2
  394. package/src/runtime/diagnostics/index.ts +27 -17
  395. package/src/runtime/diagnostics/message-flow.ts +15 -25
  396. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  397. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  398. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  399. package/src/runtime/disposal.ts +19 -0
  400. package/src/runtime/execution/index.ts +60 -20
  401. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  402. package/src/runtime/execution/state-lane.ts +142 -4
  403. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  404. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  405. package/src/runtime/foundation/operation-identity.ts +11 -5
  406. package/src/runtime/foundation/operation-registry.ts +33 -50
  407. package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
  408. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  409. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  410. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  411. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  412. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  413. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  414. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  415. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  416. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  417. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  418. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  419. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  420. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  421. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  422. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  423. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  424. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  425. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  426. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  427. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  428. package/src/runtime/framework-errors-internal.ts +380 -134
  429. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  430. package/src/runtime/host/actor-packet-relay.ts +57 -147
  431. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  432. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  433. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  434. package/src/runtime/host/application-job-queue.ts +28 -34
  435. package/src/runtime/host/bound-session-relay.ts +1 -2
  436. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  437. package/src/runtime/host/index.ts +327 -296
  438. package/src/runtime/host/instance-activation-authority.ts +89 -109
  439. package/src/runtime/host/location-runtime-owner.ts +4 -2
  440. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  441. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  442. package/src/runtime/host/remote-bound-session-relay.ts +8 -41
  443. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  444. package/src/runtime/host/runtime-shutdown.ts +17 -21
  445. package/src/runtime/host/service-relocation-control.ts +14 -1
  446. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  447. package/src/runtime/host/spot-address-transport.ts +73 -195
  448. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  449. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  450. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  451. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  452. package/src/runtime/locations/authority-key-codec.ts +7 -3
  453. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  454. package/src/runtime/locations/creation-operation-id.ts +6 -3
  455. package/src/runtime/locations/domain-store-contract.ts +12 -3
  456. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  457. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  458. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  459. package/src/runtime/locations/key-codec.ts +3 -2
  460. package/src/runtime/locations/lease-tracker.ts +8 -14
  461. package/src/runtime/locations/lifecycle.ts +13 -43
  462. package/src/runtime/locations/location-store-failure.ts +4 -0
  463. package/src/runtime/locations/location-store-pages.ts +18 -0
  464. package/src/runtime/locations/location-store-repository.ts +450 -478
  465. package/src/runtime/locations/relocation-blob.ts +17 -6
  466. package/src/runtime/locations/resolvers.ts +75 -49
  467. package/src/runtime/locations/runtime.ts +220 -110
  468. package/src/runtime/locations/spot-location-claims.ts +58 -1
  469. package/src/runtime/messaging/payload-codec.ts +35 -24
  470. package/src/runtime/messaging/submission-result.ts +57 -1
  471. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  472. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  473. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  474. package/src/runtime/spots/index.ts +433 -229
  475. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  476. package/src/runtime/spots/spot-activation-state.ts +2 -2
  477. package/src/runtime/spots/spot-activation.ts +67 -37
  478. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  479. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  480. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  481. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  482. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  483. package/src/runtime/spots/spot-context.ts +3 -3
  484. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  485. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  486. package/src/runtime/spots/spot-manager-public.ts +21 -17
  487. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  488. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  489. package/src/runtime/spots/spot-outbound.ts +45 -23
  490. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  491. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  492. package/src/runtime/spots/spot-route-replies.ts +6 -4
  493. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  494. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  495. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  496. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  497. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  498. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  499. package/src/runtime/spots/spot-timer.ts +3 -2
  500. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  501. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  502. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  503. package/src/runtime/streams/bound-session-service.ts +21 -1
  504. package/src/runtime/streams/index.ts +76 -64
  505. package/src/runtime/streams/managed-stream.ts +29 -10
  506. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  507. package/src/runtime/streams/protocol.ts +34 -88
  508. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  509. package/src/runtime/streams/session-calls.ts +6 -5
  510. package/src/runtime/streams/session-context.ts +54 -10
  511. package/src/runtime/streams/session-requests.ts +2 -1
  512. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  513. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  514. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  515. package/src/runtime/workers/index.ts +13 -12
  516. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  517. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  518. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  519. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  520. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  521. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -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,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<{
@@ -3,11 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkUserSpotCreationCoordinator = void 0;
4
4
  exports.encodeLocationCreationContent = encodeLocationCreationContent;
5
5
  exports.decodeLocationCreationContent = decodeLocationCreationContent;
6
- const framework_errors_internal_1 = require("../framework-errors-internal");
7
6
  const node_crypto_1 = require("node:crypto");
8
7
  const contracts_1 = require("../../contracts");
9
8
  const service_authority_payload_codec_1 = require("../foundation/service-authority-payload-codec");
9
+ const framework_errors_internal_1 = require("../framework-errors-internal");
10
10
  const authority_key_codec_1 = require("../locations/authority-key-codec");
11
+ const DEFAULT_USER_SPOT_CLEANUP_TIMEOUT_MS = 1_000;
12
+ const DEFAULT_USER_SPOT_POLL_INTERVAL_MS = 10;
11
13
  /**
12
14
  * Makes generic Location Store reservation the only visibility barrier for a
13
15
  * User Spot. Only the reservation winner invokes application lifecycle code.
@@ -20,9 +22,10 @@ class ZLinkUserSpotCreationCoordinator {
20
22
  this.options = options;
21
23
  }
22
24
  async getOrCreate(request, materialize, discard) {
23
- const deadline = createDeadline(request.timeoutMs, request.signal);
24
- const deadlineMs = performance.now() + request.timeoutMs;
25
25
  const deadlineUnixMs = Date.now() + request.timeoutMs;
26
+ const remainingMs = Math.max(0, deadlineUnixMs - Date.now());
27
+ const deadline = createDeadline(remainingMs, request.signal);
28
+ const deadlineMs = performance.now() + remainingMs;
26
29
  const signal = deadline.signal;
27
30
  signal.throwIfAborted();
28
31
  const sha256 = (0, node_crypto_1.createHash)('sha256').update(request.requestPayload).digest();
@@ -85,7 +88,7 @@ class ZLinkUserSpotCreationCoordinator {
85
88
  count: 1
86
89
  }
87
90
  }
88
- }, signal);
91
+ }, signal, BigInt(deadlineUnixMs));
89
92
  }
90
93
  catch (error) {
91
94
  deadline.close();
@@ -323,7 +326,7 @@ class ZLinkUserSpotCreationCoordinator {
323
326
  leaseGeneration: current.ownerLeaseGeneration
324
327
  }
325
328
  }
326
- }, signal);
329
+ }, signal, record.deadlineUnixMs);
327
330
  await discard?.(signal);
328
331
  return {
329
332
  result: { spot, state: local.state, reply: local.reply },
@@ -355,7 +358,7 @@ class ZLinkUserSpotCreationCoordinator {
355
358
  ownerNodeRid: String(current.allocation.descriptor.rid),
356
359
  ownerNodeGeneration: current.allocation.descriptorLifecycleGeneration
357
360
  })
358
- }, signal);
361
+ }, signal, record.deadlineUnixMs);
359
362
  }
360
363
  catch (error) {
361
364
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed, 'User Spot Ready commit Store operation failed.', false, error);
@@ -376,7 +379,7 @@ class ZLinkUserSpotCreationCoordinator {
376
379
  }
377
380
  catch (error) {
378
381
  local?.publication?.abort();
379
- const cleanupDeadline = createDeadline(this.options.cleanupTimeoutMs ?? 1_000);
382
+ const cleanupDeadline = createDeadline(this.options.cleanupTimeoutMs ?? DEFAULT_USER_SPOT_CLEANUP_TIMEOUT_MS);
380
383
  const cleanupSignal = cleanupDeadline.signal;
381
384
  const cleanup = await Promise.allSettled([
382
385
  waitForAbort(this.options.store.abort({
@@ -474,7 +477,7 @@ class ZLinkUserSpotCreationCoordinator {
474
477
  if (current.kind === 'snapshot' && current.allocation.state === 'active') {
475
478
  return spotRef(current, request);
476
479
  }
477
- await wait(this.options.pollIntervalMs ?? 10, signal);
480
+ await wait(this.options.pollIntervalMs ?? DEFAULT_USER_SPOT_POLL_INTERVAL_MS, signal);
478
481
  }
479
482
  }
480
483
  async remoteCreate(request, snapshot, targetNodeRid, targetNodeGeneration, deadlineUnixMs, deadlineMs) {
@@ -2,8 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkAggregateInventoryStore = void 0;
4
4
  const node_crypto_1 = require("node:crypto");
5
+ const actor_join_recovery_codec_1 = require("../foundation/actor-join-recovery-codec");
5
6
  const in_memory_provider_location_store_1 = require("./in-memory-provider-location-store");
6
- const PREFIX = 'zlink:v11:aggregate-inventory:';
7
+ const INVENTORY_PAGE_KIND = 'aggregate-inventory-page-v1';
8
+ const INVENTORY_ROOT_KIND = 'aggregate-inventory-root-v1';
9
+ const PREFIX = `${in_memory_provider_location_store_1.PROVIDER_STORAGE_NAMESPACE_PREFIX}aggregate-inventory:`;
7
10
  const MAX_PAGE_ENTRIES = 1_024;
8
11
  const MAX_PAGE_BYTES = 1_024 * 1_024;
9
12
  const MAX_TREE_LEVELS = 32;
@@ -135,8 +138,8 @@ function buildTree(request) {
135
138
  if (request.participants.length < 1) {
136
139
  throw new RangeError('Aggregate inventory requires at least one participant.');
137
140
  }
138
- if (request.inventoryDigest.byteLength !== 32) {
139
- throw new TypeError('Aggregate inventory digest must contain 32 bytes.');
141
+ if (request.inventoryDigest.byteLength !== actor_join_recovery_codec_1.SHA256_DIGEST_BYTES) {
142
+ throw new TypeError(`Aggregate inventory digest must contain ${actor_join_recovery_codec_1.SHA256_DIGEST_BYTES} bytes.`);
140
143
  }
141
144
  const entries = request.participants.map((participant, index) => ({
142
145
  index,
@@ -162,7 +165,7 @@ function buildTree(request) {
162
165
  MAX_PAGE_BYTES) {
163
166
  level++;
164
167
  if (level >= MAX_TREE_LEVELS) {
165
- throw new RangeError('Aggregate inventory tree exceeds 32 levels.');
168
+ throw new RangeError(`Aggregate inventory tree exceeds ${MAX_TREE_LEVELS} levels.`);
166
169
  }
167
170
  references = packIndexPages(level, references, pages);
168
171
  }
@@ -180,7 +183,7 @@ function packLeafPages(entries, pages) {
180
183
  let bytes;
181
184
  do {
182
185
  page = {
183
- kind: 'aggregate-inventory-page-v1',
186
+ kind: INVENTORY_PAGE_KIND,
184
187
  level: 0,
185
188
  index: references.length,
186
189
  startIndex: offset,
@@ -211,7 +214,7 @@ function packIndexPages(level, children, pages) {
211
214
  do {
212
215
  const selected = children.slice(offset, offset + count);
213
216
  page = {
214
- kind: 'aggregate-inventory-page-v1',
217
+ kind: INVENTORY_PAGE_KIND,
215
218
  level,
216
219
  index: references.length,
217
220
  startIndex: selected[0].startIndex,
@@ -240,7 +243,7 @@ function rootCandidate(totalCount, topLevel, topPages, pages, digest, declaredDi
240
243
  pageCountsByLevel[page.level]++;
241
244
  }
242
245
  return {
243
- kind: 'aggregate-inventory-root-v1',
246
+ kind: INVENTORY_ROOT_KIND,
244
247
  totalCount,
245
248
  digest,
246
249
  declaredDigest,
@@ -325,7 +328,7 @@ function decodeRoot(bytes) {
325
328
  if (value === null ||
326
329
  typeof value !== 'object' ||
327
330
  !('kind' in value) ||
328
- value.kind !== 'aggregate-inventory-root-v1') {
331
+ value.kind !== INVENTORY_ROOT_KIND) {
329
332
  throw new Error('Invalid inventory root.');
330
333
  }
331
334
  return value;
@@ -335,7 +338,7 @@ function decodePage(bytes) {
335
338
  if (value === null ||
336
339
  typeof value !== 'object' ||
337
340
  !('kind' in value) ||
338
- value.kind !== 'aggregate-inventory-page-v1' ||
341
+ value.kind !== INVENTORY_PAGE_KIND ||
339
342
  !('entries' in value) ||
340
343
  !Array.isArray(value.entries) ||
341
344
  !('children' in value) ||
@@ -379,7 +382,7 @@ function isSha256(value) {
379
382
  }
380
383
  function sameHash(expected, actual) {
381
384
  return (isSha256(expected) &&
382
- actual.byteLength === 32 &&
385
+ actual.byteLength === actor_join_recovery_codec_1.SHA256_DIGEST_BYTES &&
383
386
  (0, node_crypto_1.timingSafeEqual)(Buffer.from(expected, 'hex'), Buffer.from(actual)));
384
387
  }
385
388
  function dataLost(fence, reason) {
@@ -2,10 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.encodeAuthorityKey = encodeAuthorityKey;
4
4
  exports.decodeAuthorityKey = decodeAuthorityKey;
5
+ const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
5
6
  function encodeAuthorityKey(kind, globalId) {
6
7
  const bytes = Buffer.from(globalId);
7
- if (bytes.byteLength < 1 || bytes.byteLength > 255) {
8
- throw new RangeError('Authority identity must contain 1..255 UTF-8 bytes.');
8
+ if (bytes.byteLength < 1 || bytes.byteLength > CoreTypes_1.ZLINK_MAX_IDENTITY_TEXT_BYTES) {
9
+ throw new RangeError(`Authority identity must contain 1..${CoreTypes_1.ZLINK_MAX_IDENTITY_TEXT_BYTES} UTF-8 bytes.`);
9
10
  }
10
11
  const discriminator = kind === 'actor' ? 'a' : 's';
11
12
  return {
@@ -20,7 +21,7 @@ function decodeAuthorityKey(key) {
20
21
  if (match === null)
21
22
  throw new TypeError('Authority key is not canonical.');
22
23
  const declaredLength = Number(match[2]);
23
- if (declaredLength > 255)
24
+ if (declaredLength > CoreTypes_1.ZLINK_MAX_IDENTITY_TEXT_BYTES)
24
25
  throw new TypeError('Authority key identity exceeds the byte limit.');
25
26
  const encoded = match[3];
26
27
  const bytes = [];