@zlink-systems/framework 0.25.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
  3. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  4. package/dist/contracts/Common/CoreTypes.js +7 -0
  5. package/dist/contracts/Common/index.d.ts +1 -1
  6. package/dist/contracts/Common/index.js +0 -1
  7. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  8. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  9. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  10. package/dist/contracts/Configuration/Registration.js +58 -36
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  14. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  15. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  16. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  17. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  18. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  19. package/dist/contracts/Handlers/JsonContract.js +10 -4
  20. package/dist/contracts/Locations/Authority.d.ts +1 -1
  21. package/dist/contracts/Locations/Authority.js +3 -2
  22. package/dist/contracts/Locations/Options.js +1 -1
  23. package/dist/contracts/Locations/Stores.d.ts +12 -0
  24. package/dist/contracts/Locations/Stores.js +9 -0
  25. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
  26. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  27. package/dist/internal.d.ts +5 -0
  28. package/dist/internal.js +16 -1
  29. package/dist/nest-integration.d.ts +4 -2
  30. package/dist/nest-integration.js +14 -4
  31. package/dist/runtime/abort.d.ts +1 -0
  32. package/dist/runtime/abort.js +8 -5
  33. package/dist/runtime/activation-admission.d.ts +28 -0
  34. package/dist/runtime/activation-admission.js +57 -0
  35. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  36. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  37. package/dist/runtime/actors/actor-client.d.ts +2 -2
  38. package/dist/runtime/actors/actor-client.js +42 -143
  39. package/dist/runtime/actors/actor-context.d.ts +3 -5
  40. package/dist/runtime/actors/actor-context.js +19 -17
  41. package/dist/runtime/actors/actor-handoff.d.ts +13 -7
  42. package/dist/runtime/actors/actor-handoff.js +36 -25
  43. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  44. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  45. package/dist/runtime/actors/actor-local-native-join.js +85 -123
  46. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  47. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  48. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  49. package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
  50. package/dist/runtime/actors/actor-remote-joiner.js +11 -17
  51. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  52. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  53. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  54. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  55. package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
  56. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  57. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  58. package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
  59. package/dist/runtime/actors/bound-session-wire.js +2 -7
  60. package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
  61. package/dist/runtime/actors/deferred-join-completion.js +21 -0
  62. package/dist/runtime/actors/index.d.ts +10 -8
  63. package/dist/runtime/actors/index.js +101 -73
  64. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  65. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  66. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  67. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  68. package/dist/runtime/admission.d.ts +7 -1
  69. package/dist/runtime/admission.js +11 -1
  70. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  71. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  72. package/dist/runtime/backend/contracts/index.d.ts +8 -33
  73. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
  74. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  75. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  76. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
  77. package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
  78. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
  79. package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
  80. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  81. package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
  82. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  83. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
  84. package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
  85. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
  86. package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
  87. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  88. package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
  89. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  90. package/dist/runtime/backend/runtime-values.js +2 -0
  91. package/dist/runtime/channels/channel-clients.d.ts +20 -9
  92. package/dist/runtime/channels/channel-clients.js +68 -60
  93. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  94. package/dist/runtime/channels/channel-envelope.js +47 -29
  95. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  96. package/dist/runtime/channels/channel-outbound-operations.js +9 -18
  97. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  98. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  99. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  100. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  101. package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
  102. package/dist/runtime/channels/channel-runtime-manager.js +4 -12
  103. package/dist/runtime/channels/channel-socket-options.js +3 -2
  104. package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
  105. package/dist/runtime/channels/channel-socket-registry.js +296 -235
  106. package/dist/runtime/channels/channel-transports.d.ts +11 -20
  107. package/dist/runtime/channels/channel-transports.js +68 -47
  108. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  109. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  110. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  111. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  112. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  113. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  114. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  115. package/dist/runtime/channels/fanout-location-runtime.js +133 -81
  116. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  117. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  118. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  119. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  120. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  121. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  122. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  123. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  124. package/dist/runtime/diagnostics/flow-context.js +16 -2
  125. package/dist/runtime/diagnostics/index.d.ts +4 -2
  126. package/dist/runtime/diagnostics/index.js +14 -4
  127. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  128. package/dist/runtime/diagnostics/message-flow.js +10 -19
  129. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  130. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  131. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  132. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  133. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  134. package/dist/runtime/disposal.d.ts +5 -0
  135. package/dist/runtime/disposal.js +22 -0
  136. package/dist/runtime/execution/index.d.ts +22 -9
  137. package/dist/runtime/execution/index.js +107 -37
  138. package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
  139. package/dist/runtime/execution/serial-execution-queue.js +99 -26
  140. package/dist/runtime/execution/state-lane.d.ts +8 -1
  141. package/dist/runtime/execution/state-lane.js +118 -3
  142. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  143. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  144. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  145. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  146. package/dist/runtime/foundation/listener-records.d.ts +11 -0
  147. package/dist/runtime/foundation/listener-records.js +20 -0
  148. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  149. package/dist/runtime/foundation/operation-identity.js +9 -5
  150. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  151. package/dist/runtime/foundation/operation-registry.js +34 -44
  152. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
  153. package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
  154. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  155. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  156. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
  157. package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
  158. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  159. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  160. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  161. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  162. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  163. package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
  164. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  165. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  166. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  167. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
  168. package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
  169. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
  170. package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
  171. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  172. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  173. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  174. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
  175. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  176. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  177. package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
  178. package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
  179. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
  180. package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
  181. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
  182. package/dist/runtime/foundation/service-topology-registry.js +22 -61
  183. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  184. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  185. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  186. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  187. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  188. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  189. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  190. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  191. package/dist/runtime/framework-errors-internal.js +343 -122
  192. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  193. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  194. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  195. package/dist/runtime/host/actor-packet-relay.js +48 -91
  196. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  197. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  198. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  199. package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
  200. package/dist/runtime/host/actor-transfer-runtime.js +210 -256
  201. package/dist/runtime/host/application-job-queue.js +16 -33
  202. package/dist/runtime/host/bound-session-relay.js +1 -1
  203. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  204. package/dist/runtime/host/index.d.ts +19 -14
  205. package/dist/runtime/host/index.js +234 -175
  206. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  207. package/dist/runtime/host/instance-activation-authority.js +17 -45
  208. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  209. package/dist/runtime/host/location-runtime-owner.js +2 -2
  210. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  211. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  212. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  213. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  214. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  215. package/dist/runtime/host/remote-bound-session-relay.js +11 -23
  216. package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
  217. package/dist/runtime/host/route-mesh-runtime.js +178 -257
  218. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  219. package/dist/runtime/host/runtime-shutdown.js +18 -21
  220. package/dist/runtime/host/service-relocation-control.js +6 -1
  221. package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
  222. package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
  223. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  224. package/dist/runtime/host/spot-address-transport.js +34 -136
  225. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  226. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  227. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
  228. package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
  229. package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
  230. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
  231. package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
  232. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  233. package/dist/runtime/locations/authority-key-codec.js +4 -3
  234. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  235. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  236. package/dist/runtime/locations/creation-operation-id.js +6 -4
  237. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  238. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  239. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  240. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  241. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  242. package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
  243. package/dist/runtime/locations/key-codec.js +3 -2
  244. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  245. package/dist/runtime/locations/lease-tracker.js +7 -11
  246. package/dist/runtime/locations/lifecycle.d.ts +5 -10
  247. package/dist/runtime/locations/lifecycle.js +4 -33
  248. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  249. package/dist/runtime/locations/location-store-failure.js +7 -0
  250. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  251. package/dist/runtime/locations/location-store-pages.js +13 -0
  252. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  253. package/dist/runtime/locations/location-store-repository.js +303 -332
  254. package/dist/runtime/locations/relocation-blob.js +18 -5
  255. package/dist/runtime/locations/resolvers.d.ts +5 -5
  256. package/dist/runtime/locations/resolvers.js +44 -30
  257. package/dist/runtime/locations/runtime.d.ts +5 -4
  258. package/dist/runtime/locations/runtime.js +123 -92
  259. package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
  260. package/dist/runtime/locations/spot-location-claims.js +40 -23
  261. package/dist/runtime/messaging/payload-codec.js +26 -20
  262. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  263. package/dist/runtime/messaging/submission-result.js +48 -0
  264. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
  265. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
  266. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
  267. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
  268. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
  269. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
  270. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
  271. package/dist/runtime/spots/index.d.ts +29 -29
  272. package/dist/runtime/spots/index.js +441 -313
  273. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
  274. package/dist/runtime/spots/spot-activation-registry.js +27 -60
  275. package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
  276. package/dist/runtime/spots/spot-activation-state.js +4 -17
  277. package/dist/runtime/spots/spot-activation.d.ts +10 -9
  278. package/dist/runtime/spots/spot-activation.js +103 -81
  279. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  280. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  281. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  282. package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
  283. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
  284. package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
  285. package/dist/runtime/spots/spot-actor-membership.js +44 -53
  286. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  287. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  288. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  289. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  290. package/dist/runtime/spots/spot-context.d.ts +2 -2
  291. package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
  292. package/dist/runtime/spots/spot-entry-activation.js +9 -21
  293. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  294. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  295. package/dist/runtime/spots/spot-manager-public.js +6 -5
  296. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  297. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
  298. package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
  299. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  300. package/dist/runtime/spots/spot-outbound.js +10 -37
  301. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  302. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  303. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  304. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  305. package/dist/runtime/spots/spot-route-replies.js +3 -1
  306. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
  307. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
  308. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
  309. package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
  310. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  311. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  312. package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
  313. package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
  314. package/dist/runtime/spots/spot-serial-executor.js +9 -2
  315. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
  316. package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
  317. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  318. package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
  319. package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
  320. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
  321. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  322. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  323. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  324. package/dist/runtime/streams/bound-session-service.js +12 -19
  325. package/dist/runtime/streams/index.d.ts +15 -14
  326. package/dist/runtime/streams/index.js +38 -39
  327. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  328. package/dist/runtime/streams/managed-stream.js +17 -8
  329. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  330. package/dist/runtime/streams/protocol.d.ts +6 -33
  331. package/dist/runtime/streams/protocol.js +38 -110
  332. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  333. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  334. package/dist/runtime/streams/session-calls.d.ts +1 -1
  335. package/dist/runtime/streams/session-calls.js +5 -4
  336. package/dist/runtime/streams/session-context.d.ts +6 -6
  337. package/dist/runtime/streams/session-context.js +22 -4
  338. package/dist/runtime/streams/session-requests.js +2 -1
  339. package/dist/runtime/streams/session-serial-executor.js +2 -2
  340. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  341. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  342. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  343. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  344. package/dist/runtime/workers/index.d.ts +2 -2
  345. package/dist/runtime/workers/index.js +5 -4
  346. package/package.json +3 -3
  347. package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
  348. package/src/contracts/Common/CoreTypes.ts +7 -0
  349. package/src/contracts/Common/index.ts +1 -1
  350. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  351. package/src/contracts/Configuration/Registration.ts +92 -48
  352. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  353. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  354. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  355. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  356. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  357. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  358. package/src/contracts/Handlers/JsonContract.ts +14 -4
  359. package/src/contracts/Locations/Authority.ts +7 -3
  360. package/src/contracts/Locations/Options.ts +1 -1
  361. package/src/contracts/Locations/Stores.ts +14 -0
  362. package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
  363. package/src/contracts/Spots/Contracts.ts +1 -1
  364. package/src/internal.ts +15 -0
  365. package/src/nest-integration.ts +28 -10
  366. package/src/runtime/abort.ts +6 -5
  367. package/src/runtime/activation-admission.ts +72 -0
  368. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  369. package/src/runtime/actors/actor-client.ts +77 -204
  370. package/src/runtime/actors/actor-context.ts +45 -39
  371. package/src/runtime/actors/actor-handoff.ts +55 -45
  372. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  373. package/src/runtime/actors/actor-local-native-join.ts +174 -215
  374. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  375. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  376. package/src/runtime/actors/actor-remote-joiner.ts +15 -36
  377. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  378. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  379. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  380. package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
  381. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  382. package/src/runtime/actors/actor-source-transfer.ts +5 -18
  383. package/src/runtime/actors/bound-session-wire.ts +2 -8
  384. package/src/runtime/actors/deferred-join-completion.ts +44 -0
  385. package/src/runtime/actors/index.ts +122 -88
  386. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  387. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  388. package/src/runtime/admission.ts +13 -2
  389. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  390. package/src/runtime/backend/contracts/index.ts +15 -42
  391. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
  392. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  393. package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
  394. package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
  395. package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
  396. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  397. package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
  398. package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
  399. package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
  400. package/src/runtime/backend/raw-binding-port.ts +14 -1
  401. package/src/runtime/backend/runtime-values.ts +4 -1
  402. package/src/runtime/channels/channel-clients.ts +132 -96
  403. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  404. package/src/runtime/channels/channel-envelope.ts +58 -29
  405. package/src/runtime/channels/channel-outbound-operations.ts +10 -31
  406. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  407. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  408. package/src/runtime/channels/channel-runtime-manager.ts +8 -15
  409. package/src/runtime/channels/channel-socket-options.ts +8 -2
  410. package/src/runtime/channels/channel-socket-registry.ts +369 -262
  411. package/src/runtime/channels/channel-transports.ts +161 -115
  412. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  413. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  414. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  415. package/src/runtime/channels/fanout-location-runtime.ts +175 -106
  416. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  417. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  418. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  419. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  420. package/src/runtime/diagnostics/flow-context.ts +16 -2
  421. package/src/runtime/diagnostics/index.ts +27 -17
  422. package/src/runtime/diagnostics/message-flow.ts +15 -25
  423. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  424. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  425. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  426. package/src/runtime/disposal.ts +19 -0
  427. package/src/runtime/execution/index.ts +116 -38
  428. package/src/runtime/execution/serial-execution-queue.ts +179 -34
  429. package/src/runtime/execution/state-lane.ts +142 -4
  430. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  431. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  432. package/src/runtime/foundation/listener-records.ts +21 -0
  433. package/src/runtime/foundation/operation-identity.ts +11 -5
  434. package/src/runtime/foundation/operation-registry.ts +33 -50
  435. package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
  436. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  437. package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
  438. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  439. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  440. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  441. package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
  442. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  443. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  444. package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
  445. package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
  446. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  447. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  448. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
  449. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  450. package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
  451. package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
  452. package/src/runtime/foundation/service-topology-registry.ts +30 -79
  453. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  454. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  455. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  456. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  457. package/src/runtime/framework-errors-internal.ts +380 -134
  458. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  459. package/src/runtime/host/actor-packet-relay.ts +57 -147
  460. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  461. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  462. package/src/runtime/host/actor-transfer-runtime.ts +266 -418
  463. package/src/runtime/host/application-job-queue.ts +28 -34
  464. package/src/runtime/host/bound-session-relay.ts +1 -2
  465. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  466. package/src/runtime/host/index.ts +408 -312
  467. package/src/runtime/host/instance-activation-authority.ts +89 -109
  468. package/src/runtime/host/location-runtime-owner.ts +4 -2
  469. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  470. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  471. package/src/runtime/host/remote-bound-session-relay.ts +12 -44
  472. package/src/runtime/host/route-mesh-runtime.ts +236 -275
  473. package/src/runtime/host/runtime-shutdown.ts +17 -21
  474. package/src/runtime/host/service-relocation-control.ts +14 -1
  475. package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
  476. package/src/runtime/host/spot-address-transport.ts +73 -195
  477. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  478. package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
  479. package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
  480. package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
  481. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  482. package/src/runtime/locations/authority-key-codec.ts +7 -3
  483. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  484. package/src/runtime/locations/creation-operation-id.ts +6 -3
  485. package/src/runtime/locations/domain-store-contract.ts +12 -3
  486. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  487. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  488. package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
  489. package/src/runtime/locations/key-codec.ts +3 -2
  490. package/src/runtime/locations/lease-tracker.ts +8 -14
  491. package/src/runtime/locations/lifecycle.ts +16 -45
  492. package/src/runtime/locations/location-store-failure.ts +4 -0
  493. package/src/runtime/locations/location-store-pages.ts +18 -0
  494. package/src/runtime/locations/location-store-repository.ts +450 -478
  495. package/src/runtime/locations/relocation-blob.ts +17 -6
  496. package/src/runtime/locations/resolvers.ts +90 -58
  497. package/src/runtime/locations/runtime.ts +220 -110
  498. package/src/runtime/locations/spot-location-claims.ts +54 -26
  499. package/src/runtime/messaging/payload-codec.ts +35 -24
  500. package/src/runtime/messaging/submission-result.ts +57 -1
  501. package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
  502. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
  503. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
  504. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
  505. package/src/runtime/spots/index.ts +687 -437
  506. package/src/runtime/spots/spot-activation-registry.ts +42 -71
  507. package/src/runtime/spots/spot-activation-state.ts +4 -16
  508. package/src/runtime/spots/spot-activation.ts +167 -115
  509. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  510. package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
  511. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
  512. package/src/runtime/spots/spot-actor-membership.ts +107 -75
  513. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  514. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  515. package/src/runtime/spots/spot-context.ts +3 -3
  516. package/src/runtime/spots/spot-entry-activation.ts +13 -33
  517. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  518. package/src/runtime/spots/spot-manager-public.ts +29 -21
  519. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  520. package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
  521. package/src/runtime/spots/spot-outbound.ts +47 -68
  522. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  523. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  524. package/src/runtime/spots/spot-route-replies.ts +6 -4
  525. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
  526. package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
  527. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  528. package/src/runtime/spots/spot-runtime-ports.ts +10 -43
  529. package/src/runtime/spots/spot-serial-executor.ts +10 -2
  530. package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
  531. package/src/runtime/spots/spot-timer.ts +3 -2
  532. package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
  533. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
  534. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  535. package/src/runtime/streams/bound-session-service.ts +23 -37
  536. package/src/runtime/streams/index.ts +102 -88
  537. package/src/runtime/streams/managed-stream.ts +29 -10
  538. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  539. package/src/runtime/streams/protocol.ts +34 -88
  540. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  541. package/src/runtime/streams/session-calls.ts +6 -5
  542. package/src/runtime/streams/session-context.ts +54 -10
  543. package/src/runtime/streams/session-requests.ts +2 -1
  544. package/src/runtime/streams/session-serial-executor.ts +2 -2
  545. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  546. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  547. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  548. package/src/runtime/workers/index.ts +13 -12
  549. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
  550. package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
  551. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  552. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  553. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  554. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  555. package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
  556. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  557. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,4 +1,6 @@
1
- import { ZLinkFrameworkRuntimeState } from '../../contracts';
1
+ import { ZLinkFrameworkRuntimeState, ZLinkTopologyState } from '../../contracts';
2
+ export declare function runtimeObservationIsTerminal(state: ZLinkFrameworkRuntimeState): boolean;
3
+ export declare function topologyObservationIsTerminal(state: ZLinkTopologyState): boolean;
2
4
  export type MaintenanceAdmissionState = 'preparing' | 'serving' | 'retiring' | 'draining' | 'stopped' | 'error';
3
5
  export type DiscoveryAvailability = 'preparing' | 'serving' | 'retiring' | 'stopped' | 'error' | 'disconnected';
4
6
  /** Derives public readiness from the public runtime state authority. */
@@ -1,11 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runtimeObservationIsTerminal = runtimeObservationIsTerminal;
4
+ exports.topologyObservationIsTerminal = topologyObservationIsTerminal;
3
5
  exports.runtimeStateIsReady = runtimeStateIsReady;
4
6
  exports.runtimeAcceptsWork = runtimeAcceptsWork;
5
7
  exports.maintenanceAdmissionState = maintenanceAdmissionState;
6
8
  exports.discoveryAvailabilityForRuntimeState = discoveryAvailabilityForRuntimeState;
7
9
  exports.topologyRuntimeIsReady = topologyRuntimeIsReady;
8
10
  const contracts_1 = require("../../contracts");
11
+ function runtimeObservationIsTerminal(state) {
12
+ return state === contracts_1.ZLinkFrameworkRuntimeState.Stopped;
13
+ }
14
+ function topologyObservationIsTerminal(state) {
15
+ return state === contracts_1.ZLinkTopologyState.Stopped || state === contracts_1.ZLinkTopologyState.Failed;
16
+ }
9
17
  /** Derives public readiness from the public runtime state authority. */
10
18
  function runtimeStateIsReady(state) {
11
19
  return state === contracts_1.ZLinkFrameworkRuntimeState.Serving;
@@ -47,6 +47,7 @@ export declare function replaceServiceAuthorityRelocationState(payload: Uint8Arr
47
47
  export declare function encodeServiceUserSpotAuthorityPayload(value: ServiceUserSpotAuthorityPayload): Buffer;
48
48
  export declare function encodeServiceInstanceAuthorityPayload(value: ServiceInstanceAuthorityPayload): Buffer;
49
49
  export declare function decodeServiceReadySpotAuthority(payload: Uint8Array): ServiceReadySpotAuthority | undefined;
50
+ export declare function decodeServiceClosingSpotAuthority(payload: Uint8Array): ServiceReadySpotAuthority | undefined;
50
51
  export declare function decodeServiceInstanceAuthorityPayload(payload: Uint8Array): ServiceDecodedInstanceAuthority | undefined;
51
52
  export declare function rewriteServiceAuthorityOwner(payload: Uint8Array, owner: ZLinkLocationOwnerToken): Buffer | undefined;
52
53
  export declare function rewriteServiceAuthorityRoute(payload: Uint8Array, owner: ZLinkLocationOwnerToken, target: {
@@ -4,10 +4,19 @@ exports.replaceServiceAuthorityRelocationState = replaceServiceAuthorityRelocati
4
4
  exports.encodeServiceUserSpotAuthorityPayload = encodeServiceUserSpotAuthorityPayload;
5
5
  exports.encodeServiceInstanceAuthorityPayload = encodeServiceInstanceAuthorityPayload;
6
6
  exports.decodeServiceReadySpotAuthority = decodeServiceReadySpotAuthority;
7
+ exports.decodeServiceClosingSpotAuthority = decodeServiceClosingSpotAuthority;
7
8
  exports.decodeServiceInstanceAuthorityPayload = decodeServiceInstanceAuthorityPayload;
8
9
  exports.rewriteServiceAuthorityOwner = rewriteServiceAuthorityOwner;
9
10
  exports.rewriteServiceAuthorityRoute = rewriteServiceAuthorityRoute;
11
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
12
+ const contracts_1 = require("../../contracts");
13
+ const actor_join_recovery_codec_1 = require("./actor-join-recovery-codec");
10
14
  const service_relocation_runtime_1 = require("./service-relocation-runtime");
15
+ const service_wire_binary_primitives_1 = require("./service-wire-binary-primitives");
16
+ const SPOT_AUTHORITY_OBJECT_KIND = 2;
17
+ const USER_SPOT_WIRE_KIND = (0, contracts_1.zlinkSpotKindToWire)(contracts_1.ZLinkSpotKind.User);
18
+ const INSTANCE_SPOT_WIRE_KIND = (0, contracts_1.zlinkSpotKindToWire)(contracts_1.ZLinkSpotKind.Instance);
19
+ const AUTHORITY_TEXT16_MAX_BYTES = 0xffff;
11
20
  const AUTHORITY_MAGIC = Buffer.from([0x5a, 0x4c, 0x41, 0x55]);
12
21
  const AUTHORITY_FORMAT_VERSION = 1;
13
22
  const AUTHORITY_FLAGS = 0;
@@ -84,6 +93,13 @@ function decodeServiceReadySpotAuthority(payload) {
84
93
  const decoded = decodeSpotAuthority(payload);
85
94
  return decoded?.state === 'ready' && decoded.operationKind === 0 ? decoded : undefined;
86
95
  }
96
+ function decodeServiceClosingSpotAuthority(payload) {
97
+ const decoded = decodeSpotAuthority(payload);
98
+ return decoded?.operationKind === 3 &&
99
+ (decoded.kind === 'user_spot' || decoded.state === 'closing')
100
+ ? decoded
101
+ : undefined;
102
+ }
87
103
  function decodeServiceInstanceAuthorityPayload(payload) {
88
104
  const decoded = decodeSpotAuthority(payload);
89
105
  if (decoded?.kind !== 'instance_spot' ||
@@ -163,7 +179,7 @@ function decodeSpotAuthority(payload) {
163
179
  const operationKind = body.u8();
164
180
  const objectKind = body.u8();
165
181
  const object = body.takeReader(body.u16());
166
- if (objectKind !== 2)
182
+ if (objectKind !== SPOT_AUTHORITY_OBJECT_KIND)
167
183
  return undefined;
168
184
  const spotKind = object.u8();
169
185
  const spot = object.takeReader(object.u16());
@@ -173,13 +189,13 @@ function decodeSpotAuthority(payload) {
173
189
  let state;
174
190
  let stableType;
175
191
  let spotId;
176
- if (spotKind === 2) {
192
+ if (spotKind === USER_SPOT_WIRE_KIND) {
177
193
  kind = 'user_spot';
178
194
  spotId = spot.rid();
179
195
  stableType = spot.text8();
180
196
  state = spot.u8();
181
197
  }
182
- else if (spotKind === 3) {
198
+ else if (spotKind === INSTANCE_SPOT_WIRE_KIND) {
183
199
  kind = 'instance_spot';
184
200
  state = spot.u8();
185
201
  const instance = spot.takeReader(spot.u16());
@@ -271,21 +287,23 @@ function rid(value, name) {
271
287
  }
272
288
  function text16(value, name) {
273
289
  const bytes = Buffer.from(value);
274
- if (bytes.byteLength < 1 || bytes.byteLength > 0xffff || bytes.includes(0)) {
275
- throw new RangeError(`${name} must contain 1..65535 UTF-8 bytes without NUL.`);
290
+ if (bytes.byteLength < 1 || bytes.byteLength > AUTHORITY_TEXT16_MAX_BYTES || bytes.includes(0)) {
291
+ throw new RangeError(`${name} must contain 1..${AUTHORITY_TEXT16_MAX_BYTES} UTF-8 bytes without NUL.`);
276
292
  }
277
293
  return concat(u16(bytes.byteLength), bytes);
278
294
  }
279
295
  function sha256(value) {
280
- if (value.byteLength !== 32) {
281
- throw new RangeError('activationRecovery.sha256 must contain exactly 32 bytes.');
296
+ if (value.byteLength !== actor_join_recovery_codec_1.SHA256_DIGEST_BYTES) {
297
+ throw new RangeError(`activationRecovery.sha256 must contain exactly ${actor_join_recovery_codec_1.SHA256_DIGEST_BYTES} bytes.`);
282
298
  }
283
- return concat(Buffer.of(32), value);
299
+ return concat(Buffer.of(actor_join_recovery_codec_1.SHA256_DIGEST_BYTES), value);
284
300
  }
285
301
  function sized8(value, name) {
286
302
  const bytes = Buffer.from(value);
287
- if (bytes.byteLength < 1 || bytes.byteLength > 255 || bytes.includes(0)) {
288
- throw new RangeError(`${name} must contain 1..255 UTF-8 bytes without NUL.`);
303
+ if (bytes.byteLength < 1 ||
304
+ bytes.byteLength > service_wire_binary_primitives_1.SERVICE_WIRE_TEXT8_MAX_BYTES ||
305
+ bytes.includes(0)) {
306
+ throw new RangeError(`${name} must contain 1..${service_wire_binary_primitives_1.SERVICE_WIRE_TEXT8_MAX_BYTES} UTF-8 bytes without NUL.`);
289
307
  }
290
308
  return concat(Buffer.of(bytes.byteLength), bytes);
291
309
  }
@@ -306,7 +324,7 @@ function boundedU32(value, name) {
306
324
  return u32(value);
307
325
  }
308
326
  function u64(value, name) {
309
- if (value <= 0n || value > 0xffffffffffffffffn) {
327
+ if (value <= 0n || value > stream_wire_1.UINT64_MAX) {
310
328
  throw new RangeError(`${name} must be a non-zero u64.`);
311
329
  }
312
330
  const result = Buffer.alloc(8);
@@ -314,7 +332,7 @@ function u64(value, name) {
314
332
  return result;
315
333
  }
316
334
  function ordinalU64(value, name) {
317
- if (value < 0n || value > 0xffffffffffffffffn) {
335
+ if (value < 0n || value > stream_wire_1.UINT64_MAX) {
318
336
  throw new RangeError(`${name} must be a u64.`);
319
337
  }
320
338
  const result = Buffer.alloc(8);
@@ -23,6 +23,9 @@ export interface SelectedClientServer {
23
23
  }
24
24
  /** Dedicated discovery state; fanout publishers never reuse RouteMesh peer rows. */
25
25
  export declare class ServiceDiscoveryRegistry {
26
+ private readonly clientServerChanged;
27
+ onClientServerChanged(listener: (error?: Error) => void): () => void;
28
+ dispose(error: Error): void;
26
29
  private readonly clientServers;
27
30
  private readonly fanoutPublishers;
28
31
  private readonly clientServerSelections;
@@ -32,6 +35,7 @@ export declare class ServiceDiscoveryRegistry {
32
35
  selectClientServer(channelName: string): ClientServerDescriptor | undefined;
33
36
  selectClientServerConnection(channelName: string): SelectedClientServer | undefined;
34
37
  private selectClientServerConnectionCore;
38
+ hasReadyClientServer(channelName: string): boolean;
35
39
  clientServerDescriptors(channelName: string): readonly ClientServerDescriptor[];
36
40
  admitFanoutPublisher(descriptor: FanoutPublisherDescriptor, connectionId: string): boolean;
37
41
  removeFanoutPublisher(channelName: string, publisherRoutingId: string, connectionId: string): boolean;
@@ -1,8 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceDiscoveryRegistry = void 0;
4
+ const RegistrationBuilderPolicy_1 = require("../../contracts/Configuration/RegistrationBuilderPolicy");
5
+ const service_weighted_selection_1 = require("./service-weighted-selection");
4
6
  /** Dedicated discovery state; fanout publishers never reuse RouteMesh peer rows. */
5
7
  class ServiceDiscoveryRegistry {
8
+ clientServerChanged = new Set();
9
+ onClientServerChanged(listener) {
10
+ this.clientServerChanged.add(listener);
11
+ return () => {
12
+ this.clientServerChanged.delete(listener);
13
+ };
14
+ }
15
+ dispose(error) {
16
+ for (const listener of this.clientServerChanged)
17
+ listener(error);
18
+ this.clientServerChanged.clear();
19
+ }
6
20
  clientServers = new Map();
7
21
  fanoutPublishers = new Map();
8
22
  clientServerSelections = new Map();
@@ -56,6 +70,10 @@ class ServiceDiscoveryRegistry {
56
70
  }
57
71
  return selection.select();
58
72
  }
73
+ hasReadyClientServer(channelName) {
74
+ return [...this.clientServers.values()].some(({ descriptor }) => descriptor.channelName === channelName &&
75
+ (descriptor.state === 'serving' || descriptor.state === 'retiring'));
76
+ }
59
77
  clientServerDescriptors(channelName) {
60
78
  return [...this.clientServers.values()]
61
79
  .map((value) => value.descriptor)
@@ -94,6 +112,8 @@ class ServiceDiscoveryRegistry {
94
112
  if (this.clientServerSelections.has(channelName)) {
95
113
  this.clientServerSelections.get(channelName).rebuild();
96
114
  }
115
+ for (const listener of this.clientServerChanged)
116
+ listener();
97
117
  }
98
118
  clientServerCandidates(channelName) {
99
119
  return [...this.clientServers.values()]
@@ -150,8 +170,8 @@ function validateClientServer(descriptor) {
150
170
  requireText(descriptor.securityIdentity, 'securityIdentity');
151
171
  requireText(descriptor.advertisedEndpoint, 'advertisedEndpoint');
152
172
  validateRevision(descriptor.lifecycleGeneration, descriptor.descriptorRevision);
153
- if (!Number.isInteger(descriptor.weight) || descriptor.weight < 0 || descriptor.weight > 10_000) {
154
- throw new RangeError('ClientServer weight must be an integer in 0..10000.');
173
+ if (!(0, RegistrationBuilderPolicy_1.isValidPublicWeight)(descriptor.weight)) {
174
+ throw new RangeError(`ClientServer weight must be an integer in 0..${RegistrationBuilderPolicy_1.ZLINK_MAX_PUBLIC_WEIGHT}.`);
155
175
  }
156
176
  if (!Number.isSafeInteger(descriptor.effectiveMaxMessageBytes) ||
157
177
  descriptor.effectiveMaxMessageBytes < 1) {
@@ -174,4 +194,3 @@ function requireText(value, field) {
174
194
  throw new TypeError(`${field} must be non-empty text without NUL.`);
175
195
  }
176
196
  }
177
- const service_weighted_selection_1 = require("./service-weighted-selection");
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.encodeInstanceActivationRecoveryEnvelope = encodeInstanceActivationRecoveryEnvelope;
4
4
  exports.decodeInstanceActivationRecoveryEnvelope = decodeInstanceActivationRecoveryEnvelope;
5
+ const service_wire_binary_primitives_1 = require("./service-wire-binary-primitives");
6
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
5
7
  const service_relocation_runtime_1 = require("./service-relocation-runtime");
6
8
  const service_wire_m6a_codec_1 = require("./service-wire-m6a-codec");
7
9
  const service_metadata_codec_1 = require("./service-metadata-codec");
@@ -175,8 +177,10 @@ function requireOperation(value) {
175
177
  }
176
178
  function textBytes(value, name) {
177
179
  const bytes = Buffer.from(value, 'utf8');
178
- if (bytes.byteLength < 1 || bytes.byteLength > 255 || bytes.includes(0)) {
179
- throw new RangeError(`${name} must contain 1..255 UTF-8 bytes without NUL.`);
180
+ if (bytes.byteLength < 1 ||
181
+ bytes.byteLength > service_wire_binary_primitives_1.SERVICE_WIRE_TEXT8_MAX_BYTES ||
182
+ bytes.includes(0)) {
183
+ throw new RangeError(`${name} must contain 1..${service_wire_binary_primitives_1.SERVICE_WIRE_TEXT8_MAX_BYTES} UTF-8 bytes without NUL.`);
180
184
  }
181
185
  return bytes;
182
186
  }
@@ -189,12 +193,12 @@ function writeText8(target, offset, value) {
189
193
  return offset + 1 + value.byteLength;
190
194
  }
191
195
  function validatePositiveU64(value, name) {
192
- if (value <= 0n || value > 0xffffffffffffffffn) {
196
+ if (value <= 0n || value > stream_wire_1.UINT64_MAX) {
193
197
  throw new RangeError(`${name} is out of range.`);
194
198
  }
195
199
  }
196
200
  function validateU64(value, name) {
197
- if (value < 0n || value > 0xffffffffffffffffn) {
201
+ if (value < 0n || value > stream_wire_1.UINT64_MAX) {
198
202
  throw new RangeError(`${name} is out of range.`);
199
203
  }
200
204
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceLivenessRegistry = exports.DEFAULT_SERVICE_PEER_TIMEOUT_MS = exports.DEFAULT_SERVICE_PROBE_INTERVAL_MS = void 0;
4
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
4
5
  exports.DEFAULT_SERVICE_PROBE_INTERVAL_MS = 5_000;
5
6
  exports.DEFAULT_SERVICE_PEER_TIMEOUT_MS = 15_000;
6
7
  /** Uses monotonic milliseconds and never treats application traffic as a probe ACK. */
@@ -101,7 +102,7 @@ class ServiceLivenessRegistry {
101
102
  }
102
103
  allocateProbeId() {
103
104
  const result = this.nextProbeId++;
104
- if (this.nextProbeId > 0xffffffffffffffffn)
105
+ if (this.nextProbeId > stream_wire_1.UINT64_MAX)
105
106
  this.nextProbeId = 1n;
106
107
  return result;
107
108
  }
@@ -42,4 +42,3 @@ export declare class ServiceMaintenanceRuntime {
42
42
  private publishCore;
43
43
  private notify;
44
44
  }
45
- export declare function classifyRelocationRecovery(publishedReference: boolean, payloadPresent: boolean, checksumMatches: boolean, inventoryMatches: boolean): 'resume' | 'orphan' | 'relocationDataLost';
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceMaintenanceRuntime = void 0;
4
- exports.classifyRelocationRecovery = classifyRelocationRecovery;
5
4
  const node_async_hooks_1 = require("node:async_hooks");
6
5
  const state_lane_1 = require("../execution/state-lane");
7
6
  const detachedStateLaneResource = new node_async_hooks_1.AsyncResource('zlink:service-maintenance-runtime');
@@ -110,13 +109,28 @@ class ServiceMaintenanceRuntime {
110
109
  }
111
110
  async runUnits(signal, stopStartingSignal) {
112
111
  const pending = new Set();
112
+ // A unit failure is recorded before its promise leaves `pending`, so no
113
+ // failure is lost. Every started unit runs to its own terminal before the
114
+ // first failure is reported: the host result follows the settled
115
+ // authority of each unit (spec 30 §13).
116
+ const failures = [];
117
+ const reportFailure = async () => {
118
+ if (failures.length === 0)
119
+ return;
120
+ await Promise.allSettled(pending);
121
+ throw failures[0];
122
+ };
113
123
  for (;;) {
124
+ await reportFailure();
114
125
  const queued = await this.lane.run(() => this.units.length > 0);
115
- if (!queued && pending.size === 0)
126
+ if (!queued && pending.size === 0) {
127
+ await reportFailure();
116
128
  return;
129
+ }
117
130
  signal.throwIfAborted();
118
131
  if (stopStartingSignal?.aborted === true) {
119
132
  await Promise.allSettled(pending);
133
+ await reportFailure();
120
134
  stopStartingSignal.throwIfAborted();
121
135
  }
122
136
  let admitted = false;
@@ -142,7 +156,12 @@ class ServiceMaintenanceRuntime {
142
156
  continue;
143
157
  admitted = true;
144
158
  let running;
145
- running = startOutsideStateLane(() => unit.relocate(signal).finally(async () => {
159
+ running = startOutsideStateLane(() => unit
160
+ .relocate(signal)
161
+ .catch((error) => {
162
+ failures.push(error);
163
+ })
164
+ .finally(async () => {
146
165
  const publication = await this.lane.run(() => {
147
166
  this.activeOutbound--;
148
167
  pending.delete(running);
@@ -154,6 +173,7 @@ class ServiceMaintenanceRuntime {
154
173
  this.notify(claim.publication);
155
174
  }
156
175
  if (pending.size === 0) {
176
+ await reportFailure();
157
177
  if (!admitted)
158
178
  throw new Error('No relocation unit is ready to start.');
159
179
  }
@@ -189,8 +209,3 @@ exports.ServiceMaintenanceRuntime = ServiceMaintenanceRuntime;
189
209
  function startOutsideStateLane(work) {
190
210
  return detachedStateLaneResource.runInAsyncScope(work);
191
211
  }
192
- function classifyRelocationRecovery(publishedReference, payloadPresent, checksumMatches, inventoryMatches) {
193
- if (!publishedReference)
194
- return payloadPresent ? 'orphan' : 'resume';
195
- return payloadPresent && checksumMatches && inventoryMatches ? 'resume' : 'relocationDataLost';
196
- }
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.encodeServiceMetadataFrame = encodeServiceMetadataFrame;
4
4
  exports.validateServiceMetadataFrame = validateServiceMetadataFrame;
5
- const MAX_METADATA_BYTES = 1024;
5
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
6
6
  const FATAL_UTF8 = new TextDecoder('utf-8', { fatal: true });
7
7
  function encodeServiceMetadataFrame(entries) {
8
8
  if (entries.size > 0xff) {
@@ -19,8 +19,8 @@ function encodeServiceMetadataFrame(entries) {
19
19
  return validateServiceMetadataFrame(Buffer.concat(encoded));
20
20
  }
21
21
  function validateServiceMetadataFrame(frame) {
22
- if (frame.byteLength > MAX_METADATA_BYTES) {
23
- throw new RangeError('Application metadata frame exceeds 1024 bytes.');
22
+ if (frame.byteLength > stream_wire_1.ZLINK_STREAM_MAX_METADATA_BYTES) {
23
+ throw new RangeError(`Application metadata frame exceeds ${stream_wire_1.ZLINK_STREAM_MAX_METADATA_BYTES} bytes.`);
24
24
  }
25
25
  const bytes = Buffer.from(frame);
26
26
  let offset = 0;
@@ -20,16 +20,13 @@ export interface ServicePreparedRelocationAggregate {
20
20
  readonly fence: ZLinkAggregateFence;
21
21
  readonly plan: ServiceRelocationAggregatePlan;
22
22
  }
23
- type AggregateStore = Pick<ZLinkObjectCreationStore, 'prepareAggregate' | 'commitAggregate' | 'abortAggregate'> & Pick<ZLinkAuthorityStore, 'readAuthority'>;
24
- /** Commits every owner and membership row through one Location Store fence. */
23
+ type AggregateStore = Pick<ZLinkObjectCreationStore, 'prepareAggregate' | 'abortAggregate'> & Pick<ZLinkAuthorityStore, 'readAuthority'>;
24
+ /** Prepares and aborts relocation through one Location Store fence. */
25
25
  export declare class ServiceRelocationAggregateCommitter {
26
26
  private readonly store;
27
27
  constructor(store: AggregateStore);
28
28
  prepare(plan: ServiceRelocationAggregatePlan, signal?: AbortSignal): Promise<ServicePreparedRelocationAggregate>;
29
29
  private authorityStoreVersionsUnchanged;
30
- commit(prepared: ServicePreparedRelocationAggregate, signal?: AbortSignal): Promise<ReadonlyMap<string, ZLinkAuthoritySnapshot>>;
31
30
  abort(prepared: ServicePreparedRelocationAggregate, signal?: AbortSignal): Promise<void>;
32
- private commitFence;
33
- private readCommittedParticipants;
34
31
  }
35
32
  export {};
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceRelocationAggregateCommitter = void 0;
4
4
  const service_relocation_runtime_1 = require("./service-relocation-runtime");
5
5
  const MAX_PREPARE_CONFLICT_ATTEMPTS = 8;
6
- /** Commits every owner and membership row through one Location Store fence. */
6
+ /** Prepares and aborts relocation through one Location Store fence. */
7
7
  class ServiceRelocationAggregateCommitter {
8
8
  store;
9
9
  constructor(store) {
@@ -52,59 +52,12 @@ class ServiceRelocationAggregateCommitter {
52
52
  }
53
53
  return true;
54
54
  }
55
- async commit(prepared, signal) {
56
- try {
57
- await this.commitFence(prepared.fence, signal);
58
- }
59
- catch (firstError) {
60
- // A lost commit response is reconciled by repeating the exact durable fence.
61
- try {
62
- await this.commitFence(prepared.fence, signal);
63
- }
64
- catch {
65
- throw firstError;
66
- }
67
- }
68
- return await this.readCommittedParticipants(prepared.plan, signal);
69
- }
70
55
  async abort(prepared, signal) {
71
56
  const result = await this.store.abortAggregate(prepared.fence, signal);
72
57
  if (result.kind !== 'aborted' && result.kind !== 'alreadyAborted') {
73
58
  throw new Error(`Location Store rejected relocation aggregate abort: ${result.kind}.`);
74
59
  }
75
60
  }
76
- async commitFence(fence, signal) {
77
- const result = await this.store.commitAggregate(fence, signal);
78
- if (result.kind !== 'committed' && result.kind !== 'alreadyCommitted') {
79
- throw new Error(`Location Store rejected relocation aggregate commit: ${result.kind}.`);
80
- }
81
- }
82
- async readCommittedParticipants(plan, signal) {
83
- const committed = new Map();
84
- for (const participant of plan.participants) {
85
- const current = await this.store.readAuthority(participant.key, signal);
86
- if (current.kind !== 'snapshot' ||
87
- current.objectGeneration !== participant.expected.objectGeneration ||
88
- current.storeVersion.value === participant.expected.storeVersion.value ||
89
- !Buffer.from(current.payload).equals(Buffer.from(participant.authorityPayload))) {
90
- throw new Error('Committed relocation aggregate does not match its exact participant plan.');
91
- }
92
- if (participant.ownerTransition === 'newOwner') {
93
- if (current.ownerId !== plan.targetOwner.ownerId ||
94
- current.ownerLeaseGeneration !== plan.targetOwner.leaseGeneration ||
95
- current.authorityOwnerGeneration <= participant.expected.authorityOwnerGeneration) {
96
- throw new Error('Committed relocation participant has a different owner fence.');
97
- }
98
- }
99
- else if (current.ownerId !== participant.expected.ownerId ||
100
- current.ownerLeaseGeneration !== participant.expected.ownerLeaseGeneration ||
101
- current.authorityOwnerGeneration !== participant.expected.authorityOwnerGeneration) {
102
- throw new Error('Preserved relocation participant changed its owner fence.');
103
- }
104
- committed.set(participant.key.value, current);
105
- }
106
- return committed;
107
- }
108
61
  }
109
62
  exports.ServiceRelocationAggregateCommitter = ServiceRelocationAggregateCommitter;
110
63
  function validateAndEncodeParticipants(plan) {
@@ -17,3 +17,12 @@ export declare class ServiceRelocationPostCommitError extends Error {
17
17
  readonly cause: unknown;
18
18
  constructor(authority: ZLinkAuthoritySnapshot, staging: ServiceRelocationStaging, cause: unknown);
19
19
  }
20
+ /**
21
+ * A relocation whose settled authority leaves the host in `Error` with
22
+ * `Blocked/RelocationFailed` (spec 30 §13): the source owner lease ended
23
+ * before its Preserve fence succeeded, or units settled on both the source
24
+ * and the target.
25
+ */
26
+ export declare class ServiceRelocationAuthorityError extends Error {
27
+ constructor(message: string, options?: ErrorOptions);
28
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ServiceRelocationPostCommitError = void 0;
3
+ exports.ServiceRelocationAuthorityError = exports.ServiceRelocationPostCommitError = void 0;
4
4
  class ServiceRelocationPostCommitError extends Error {
5
5
  authority;
6
6
  staging;
@@ -14,3 +14,16 @@ class ServiceRelocationPostCommitError extends Error {
14
14
  }
15
15
  }
16
16
  exports.ServiceRelocationPostCommitError = ServiceRelocationPostCommitError;
17
+ /**
18
+ * A relocation whose settled authority leaves the host in `Error` with
19
+ * `Blocked/RelocationFailed` (spec 30 §13): the source owner lease ended
20
+ * before its Preserve fence succeeded, or units settled on both the source
21
+ * and the target.
22
+ */
23
+ class ServiceRelocationAuthorityError extends Error {
24
+ constructor(message, options) {
25
+ super(message, options);
26
+ this.name = 'ServiceRelocationAuthorityError';
27
+ }
28
+ }
29
+ exports.ServiceRelocationAuthorityError = ServiceRelocationAuthorityError;
@@ -16,6 +16,8 @@ export interface ServiceRelocationCaptureUnit {
16
16
  captureApplicationState(signal?: AbortSignal): Promise<Uint8Array>;
17
17
  commitSeal(): Promise<void> | void;
18
18
  abortSeal(): Promise<void> | void;
19
+ /** Expired-owner terminal: pending requests fail once and dispatch stays closed. */
20
+ discardSeal?(reason: unknown): Promise<void> | void;
19
21
  }
20
22
  export declare class ServiceCapturedObjectRelocation {
21
23
  readonly envelope: ServiceRelocationEnvelope;
@@ -24,6 +26,12 @@ export declare class ServiceCapturedObjectRelocation {
24
26
  constructor(envelope: ServiceRelocationEnvelope, units: readonly ServiceRelocationCaptureUnit[]);
25
27
  commitSource(): Promise<void>;
26
28
  abortSource(): Promise<void>;
29
+ /**
30
+ * The source owner lease ended before the authority settled (spec 28 §4.4):
31
+ * the source neither resumes nor commits. Retained work is dropped and
32
+ * every pending request without a terminal fails once with `reason`.
33
+ */
34
+ discardSource(reason: unknown): Promise<void>;
27
35
  }
28
36
  /** Captures the two valid relocation units: User Spot aggregate or one Actor. */
29
37
  export declare class ServiceRelocationObjectCaptureOwner {
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceRelocationObjectRestoreOwner = exports.ServiceRelocationObjectCaptureOwner = exports.ServiceCapturedObjectRelocation = void 0;
4
+ const DEFAULT_RELOCATION_CALLBACK_CONCURRENCY = 8;
4
5
  class ServiceCapturedObjectRelocation {
5
6
  envelope;
6
7
  units;
@@ -12,8 +13,8 @@ class ServiceCapturedObjectRelocation {
12
13
  async commitSource() {
13
14
  if (this.terminal === 'committed')
14
15
  return;
15
- if (this.terminal === 'aborted') {
16
- throw new Error('Relocation source capture was already aborted.');
16
+ if (this.terminal !== 'open') {
17
+ throw new Error(`Relocation source capture was already ${this.terminal}.`);
17
18
  }
18
19
  for (const unit of this.units)
19
20
  await unit.commitSeal();
@@ -22,8 +23,8 @@ class ServiceCapturedObjectRelocation {
22
23
  async abortSource() {
23
24
  if (this.terminal === 'aborted')
24
25
  return;
25
- if (this.terminal === 'committed') {
26
- throw new Error('Committed relocation source capture cannot be aborted.');
26
+ if (this.terminal !== 'open') {
27
+ throw new Error(`A ${this.terminal} relocation source capture cannot be aborted.`);
27
28
  }
28
29
  const failures = [];
29
30
  for (const unit of [...this.units].reverse()) {
@@ -39,12 +40,24 @@ class ServiceCapturedObjectRelocation {
39
40
  throw new AggregateError(failures, 'Relocation source rollback was incomplete.');
40
41
  }
41
42
  }
43
+ /**
44
+ * The source owner lease ended before the authority settled (spec 28 §4.4):
45
+ * the source neither resumes nor commits. Retained work is dropped and
46
+ * every pending request without a terminal fails once with `reason`.
47
+ */
48
+ async discardSource(reason) {
49
+ if (this.terminal !== 'open')
50
+ return;
51
+ this.terminal = 'discarded';
52
+ for (const unit of this.units)
53
+ await unit.discardSeal?.(reason);
54
+ }
42
55
  }
43
56
  exports.ServiceCapturedObjectRelocation = ServiceCapturedObjectRelocation;
44
57
  /** Captures the two valid relocation units: User Spot aggregate or one Actor. */
45
58
  class ServiceRelocationObjectCaptureOwner {
46
59
  maxConcurrentCallbacks;
47
- constructor(maxConcurrentCallbacks = 8) {
60
+ constructor(maxConcurrentCallbacks = DEFAULT_RELOCATION_CALLBACK_CONCURRENCY) {
48
61
  this.maxConcurrentCallbacks = maxConcurrentCallbacks;
49
62
  requireCallbackConcurrency(maxConcurrentCallbacks);
50
63
  }
@@ -115,7 +128,7 @@ class ServiceRelocationObjectRestoreOwner {
115
128
  target;
116
129
  authorityKey;
117
130
  maxConcurrentCallbacks;
118
- constructor(target, authorityKey, maxConcurrentCallbacks = 8) {
131
+ constructor(target, authorityKey, maxConcurrentCallbacks = DEFAULT_RELOCATION_CALLBACK_CONCURRENCY) {
119
132
  this.target = target;
120
133
  this.authorityKey = authorityKey;
121
134
  this.maxConcurrentCallbacks = maxConcurrentCallbacks;