@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,13 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkInMemoryAuthorityStore = void 0;
4
+ const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
5
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
6
+ const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
7
+ const Stores_1 = require("../../contracts/Locations/Stores");
4
8
  const node_crypto_1 = require("node:crypto");
9
+ const actor_join_recovery_codec_1 = require("../foundation/actor-join-recovery-codec");
5
10
  const authority_key_codec_1 = require("./authority-key-codec");
6
11
  const opaque_record_key_1 = require("./opaque-record-key");
7
12
  const MAX_GENERATION = 0x7fffffffffffffffn;
8
- const MAX_PAYLOAD_BYTES = 1024 * 1024;
9
13
  const CREATION_TERMINAL_RETENTION_MS = 5 * 60 * 1000;
10
- const MAX_U64 = 0xffffffffffffffffn;
14
+ const MAX_U64 = stream_wire_1.UINT64_MAX;
11
15
  /**
12
16
  * In-memory reference provider for the provider-owned authority state machine.
13
17
  * Opaque payload bytes are copied but never parsed.
@@ -101,11 +105,21 @@ class ZLinkInMemoryAuthorityStore {
101
105
  if (!this.isOwnerLive(row.snapshot)) {
102
106
  return { kind: 'conflict', current: this.read(keyValue) };
103
107
  }
108
+ if (mutation.generationTransition === 'reincarnate' &&
109
+ (this.objectGeneration >= MAX_GENERATION || this.ownerGeneration >= MAX_GENERATION)) {
110
+ return { kind: 'generationExhausted' };
111
+ }
104
112
  const nextVersion = this.tryNextStoreVersion();
105
113
  if (nextVersion === undefined)
106
114
  return { kind: 'generationExhausted' };
107
115
  row.snapshot = {
108
116
  ...row.snapshot,
117
+ ...(mutation.generationTransition === 'reincarnate'
118
+ ? {
119
+ objectGeneration: ++this.objectGeneration,
120
+ authorityOwnerGeneration: ++this.ownerGeneration
121
+ }
122
+ : {}),
109
123
  storeVersion: version(nextVersion),
110
124
  payload: Buffer.from(mutation.payload)
111
125
  };
@@ -114,8 +128,8 @@ class ZLinkInMemoryAuthorityStore {
114
128
  }
115
129
  async listAuthorities(prefix, cursor, limit, signal) {
116
130
  signal?.throwIfAborted();
117
- if (!Number.isInteger(limit) || limit < 1 || limit > 1000) {
118
- throw new RangeError('Authority scan limit must be in 1..1000.');
131
+ if (!Number.isInteger(limit) || limit < 1 || limit > Stores_1.ZLINK_PROVIDER_MAX_PAGE_SIZE) {
132
+ throw new RangeError(`Authority scan limit must be in 1..${Stores_1.ZLINK_PROVIDER_MAX_PAGE_SIZE}.`);
119
133
  }
120
134
  const decoded = cursor === undefined
121
135
  ? { revision: this.scanRevision, offset: 0, prefix }
@@ -611,7 +625,7 @@ function validateAuthorityMutation(mutation) {
611
625
  }
612
626
  const generationTransition = mutation
613
627
  .generationTransition;
614
- if (generationTransition !== 'preserve') {
628
+ if (generationTransition !== 'preserve' && generationTransition !== 'reincarnate') {
615
629
  throw new TypeError('Authority owner transitions require an aggregate CAS.');
616
630
  }
617
631
  }
@@ -621,17 +635,19 @@ function validateReserve(request) {
621
635
  requireText(request.intent.requestContentReference, 'creation content reference');
622
636
  validatePayload(request.creatingPayload);
623
637
  validateCapacityVector(request.capacity);
624
- if (request.intent.requestSha256.byteLength !== 32 ||
638
+ if (request.intent.requestSha256.byteLength !== actor_join_recovery_codec_1.SHA256_DIGEST_BYTES ||
625
639
  request.intent.requestEncodedSize < 0n ||
626
- request.intent.requestEncodedSize > BigInt(MAX_PAYLOAD_BYTES)) {
640
+ request.intent.requestEncodedSize > BigInt(InternalDefaults_1.CREATION_INTENT_MAX_BYTES)) {
627
641
  throw new TypeError('Object creation content receipt is invalid.');
628
642
  }
629
643
  }
630
644
  function validateCreationOperation(operation) {
631
645
  const sourceRid = String(operation.sourceNodeRid);
632
646
  const sourceRidBytes = Buffer.byteLength(sourceRid, 'utf8');
633
- if (sourceRidBytes < 1 || sourceRidBytes > 255 || sourceRid.includes('\0')) {
634
- throw new TypeError('Creation terminal source node RID must contain 1..255 UTF-8 bytes without NUL.');
647
+ if (sourceRidBytes < 1 ||
648
+ sourceRidBytes > CoreTypes_1.ZLINK_MAX_ROUTING_ID_BYTES ||
649
+ sourceRid.includes('\0')) {
650
+ throw new TypeError(`Creation terminal source node RID must contain 1..${CoreTypes_1.ZLINK_MAX_ROUTING_ID_BYTES} UTF-8 bytes without NUL.`);
635
651
  }
636
652
  if (operation.sourceNodeGeneration < 1n ||
637
653
  operation.sourceNodeGeneration > MAX_U64 ||
@@ -647,8 +663,8 @@ function validateTerminalForMutation(publication, storeNow) {
647
663
  if (publication === undefined)
648
664
  return undefined;
649
665
  validateCreationOperation(publication.operation);
650
- if (publication.terminalEnvelope.byteLength > MAX_PAYLOAD_BYTES) {
651
- throw new RangeError('Creation terminal envelope must not exceed 1 MiB.');
666
+ if (publication.terminalEnvelope.byteLength > InternalDefaults_1.CREATION_TERMINAL_ENVELOPE_MAX_BYTES) {
667
+ throw new RangeError(`Creation terminal envelope must not exceed ${InternalDefaults_1.CREATION_TERMINAL_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
652
668
  }
653
669
  const deadlineMs = publication.operationDeadline.getTime();
654
670
  const expiresAtMs = deadlineMs + CREATION_TERMINAL_RETENTION_MS;
@@ -691,8 +707,8 @@ function validateAggregateRequest(request) {
691
707
  if (request.aggregateGeneration < 1n || request.participants.length < 1) {
692
708
  throw new RangeError('Aggregate generation and participant count are invalid.');
693
709
  }
694
- if (request.inventoryDigest.byteLength !== 32) {
695
- throw new TypeError('Aggregate inventory digest must contain 32 bytes.');
710
+ if (request.inventoryDigest.byteLength !== actor_join_recovery_codec_1.SHA256_DIGEST_BYTES) {
711
+ throw new TypeError(`Aggregate inventory digest must contain ${actor_join_recovery_codec_1.SHA256_DIGEST_BYTES} bytes.`);
696
712
  }
697
713
  validateCapacityVector(request.capacity);
698
714
  const keys = request.participants.map((participant) => participant.authorityKey.value);
@@ -702,8 +718,8 @@ function validateAggregateRequest(request) {
702
718
  }
703
719
  }
704
720
  function validatePayload(payload) {
705
- if (payload.byteLength > MAX_PAYLOAD_BYTES) {
706
- throw new RangeError('Authority payload exceeds 1 MiB.');
721
+ if (payload.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
722
+ throw new RangeError(`Authority payload exceeds ${InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
707
723
  }
708
724
  }
709
725
  function validateCapacityVector(value) {
@@ -1,7 +1,7 @@
1
- import { ZLinkLocationWriteIntent, ZLinkLocationWriteStatus, type ZLinkActorLocation, type ZLinkAggregateAbortResult, type ZLinkAggregateCommitResult, type ZLinkAggregateFence, type ZLinkAggregatePrepareRequest, type ZLinkAggregatePrepareResult, type ZLinkAuthorityCompareExchangeResult, type ZLinkAuthorityKey, type ZLinkAuthorityMutation, type ZLinkAuthorityReadResult, type ZLinkAuthorityScanCursor, type ZLinkAuthorityScanResult, type ZLinkAuthorityStoreVersion, type ZLinkActorLocationFilter, type ZLinkActorLocationKey, type ZLinkLocationChangeStampScope, type ZLinkLocationOwnerToken, type ZLinkLocationPage, type ZLinkLocationWriteResult, type ZLinkMeshNodeDescriptor, type ZLinkMeshNodeDescriptorKey, type ZLinkClientServerServerDescriptor, type ZLinkClientServerServerDescriptorKey, type ZLinkFanoutPublisherDescriptor, type ZLinkFanoutPublisherDescriptorKey, type ZLinkOwnerLeaseClaimResult, type ZLinkOwnerLeaseReadResult, type ZLinkOwnerLeaseReleaseResult, type ZLinkOwnerLeaseRenewResult, type ZLinkObjectAbortRequest, type ZLinkObjectAbortResult, type ZLinkObjectCommitRequest, type ZLinkObjectCommitResult, type ZLinkObjectCreationCompleteRequest, type ZLinkObjectCreationCompleteResult, type ZLinkObjectReserveRequest, type ZLinkObjectReserveResult, type ZLinkCreationOperationIdentity, type ZLinkCreationTerminalReadResult, type ZLinkPageRequest, type ZLinkPeerLocation, type ZLinkPeerLocationFilter, type ZLinkPeerLocationKey, type ZLinkRouteLocation, type ZLinkRouteLocationFilter, type ZLinkRouteLocationKey, type ZLinkSpotLocation, type ZLinkSpotLocationFilter, type ZLinkSpotLocationKey } from './internal-location-contracts';
2
1
  import type { ZLinkActorTransferPrepareRequest, ZLinkActorTransferRecord, ZLinkActorTransferWriteResult } from '../../contracts/Locations/ActorTransfer';
3
- import type { ZLinkFanoutLocationStore } from './internal-store-contracts';
4
2
  import type { ZLinkDomainLocationStore } from './domain-store-contract';
3
+ import { ZLinkLocationWriteIntent, ZLinkLocationWriteStatus, type ZLinkActorLocation, type ZLinkActorLocationFilter, type ZLinkActorLocationKey, type ZLinkAggregateAbortResult, type ZLinkAggregateCommitResult, type ZLinkAggregateFence, type ZLinkAggregatePrepareRequest, type ZLinkAggregatePrepareResult, type ZLinkAuthorityCompareExchangeResult, type ZLinkAuthorityKey, type ZLinkAuthorityMutation, type ZLinkAuthorityReadResult, type ZLinkAuthorityScanCursor, type ZLinkAuthorityScanResult, type ZLinkAuthorityStoreVersion, type ZLinkClientServerServerDescriptor, type ZLinkClientServerServerDescriptorKey, type ZLinkCreationOperationIdentity, type ZLinkCreationTerminalReadResult, type ZLinkFanoutPublisherDescriptor, type ZLinkFanoutPublisherDescriptorKey, type ZLinkLocationChangeStampScope, type ZLinkLocationOwnerToken, type ZLinkLocationPage, type ZLinkLocationWriteResult, type ZLinkMeshNodeDescriptor, type ZLinkMeshNodeDescriptorKey, type ZLinkObjectAbortRequest, type ZLinkObjectAbortResult, type ZLinkObjectCommitRequest, type ZLinkObjectCommitResult, type ZLinkObjectCreationCompleteRequest, type ZLinkObjectCreationCompleteResult, type ZLinkObjectReserveRequest, type ZLinkObjectReserveResult, type ZLinkOwnerLeaseClaimResult, type ZLinkOwnerLeaseReadResult, type ZLinkOwnerLeaseReleaseResult, type ZLinkOwnerLeaseRenewResult, type ZLinkPageRequest, type ZLinkPeerLocation, type ZLinkPeerLocationFilter, type ZLinkPeerLocationKey, type ZLinkRouteLocation, type ZLinkRouteLocationFilter, type ZLinkRouteLocationKey, type ZLinkSpotLocation, type ZLinkSpotLocationFilter, type ZLinkSpotLocationKey } from './internal-location-contracts';
4
+ import type { ZLinkFanoutLocationStore } from './internal-store-contracts';
5
5
  export declare class ZLinkInMemoryLocationStore implements ZLinkDomainLocationStore, ZLinkFanoutLocationStore {
6
6
  private readonly now;
7
7
  private readonly leases;
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkInMemoryLocationStore = void 0;
4
- const internal_location_contracts_1 = require("./internal-location-contracts");
5
- const in_memory_authority_store_1 = require("./in-memory-authority-store");
4
+ const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
5
+ const RegistrationBuilderPolicy_1 = require("../../contracts/Configuration/RegistrationBuilderPolicy");
6
+ const location_store_integration_1 = require("../../location-store-integration");
6
7
  const authority_key_codec_1 = require("./authority-key-codec");
8
+ const in_memory_authority_store_1 = require("./in-memory-authority-store");
9
+ const internal_location_contracts_1 = require("./internal-location-contracts");
7
10
  const key_codec_1 = require("./key-codec");
8
- const location_store_integration_1 = require("../../location-store-integration");
11
+ const MAX_LOCATION_GENERATION = 0x7fffffffffffffffn;
12
+ const MAX_DESCRIPTOR_OBJECT_CAPABILITIES = 1024;
9
13
  class ZLinkInMemoryLocationStore {
10
14
  now;
11
15
  leases = new Map();
@@ -526,7 +530,7 @@ class ZLinkInMemoryLocationStore {
526
530
  if (current !== undefined && current.leaseExpiresAt.getTime() > storeNow.getTime()) {
527
531
  return { kind: 'conflict' };
528
532
  }
529
- if (this.ownerLeaseGeneration >= 0x7fffffffffffffffn) {
533
+ if (this.ownerLeaseGeneration >= MAX_LOCATION_GENERATION) {
530
534
  return { kind: 'generationExhausted' };
531
535
  }
532
536
  const token = { ownerId, leaseGeneration: ++this.ownerLeaseGeneration };
@@ -743,13 +747,13 @@ function validateMeshNodeDescriptor(descriptor) {
743
747
  }
744
748
  if (descriptor.objectRole === internal_location_contracts_1.ZLinkObjectRole.Server) {
745
749
  if (descriptor.entrySpotId !== undefined && !validDescriptorText(descriptor.entrySpotId)) {
746
- throw new TypeError('MeshNode Entry Spot ID must contain 1..255 UTF-8 bytes.');
750
+ throw new TypeError(`MeshNode Entry Spot ID must contain 1..${CoreTypes_1.ZLINK_MAX_IDENTITY_TEXT_BYTES} UTF-8 bytes.`);
747
751
  }
748
752
  }
749
753
  else if (descriptor.entrySpotId !== undefined) {
750
754
  throw new TypeError('Only Object Server descriptors may publish an Entry Spot ID.');
751
755
  }
752
- const maxGeneration = 0x7fffffffffffffffn;
756
+ const maxGeneration = MAX_LOCATION_GENERATION;
753
757
  if (descriptor.lifecycleGeneration < 1n ||
754
758
  descriptor.lifecycleGeneration > maxGeneration ||
755
759
  descriptor.descriptorRevision < 1n ||
@@ -777,9 +781,8 @@ function validateMeshNodeDescriptor(descriptor) {
777
781
  !Number.isSafeInteger(descriptor.activationConcurrency.limit) ||
778
782
  descriptor.activationConcurrency.limit < 1 ||
779
783
  descriptor.activationConcurrency.active > descriptor.activationConcurrency.limit ||
780
- descriptor.placementWeight < 0 ||
781
- descriptor.placementWeight > 10_000 ||
782
- descriptor.objectCapabilities.length > 1024 ||
784
+ !(0, RegistrationBuilderPolicy_1.isValidPublicWeight)(descriptor.placementWeight) ||
785
+ descriptor.objectCapabilities.length > MAX_DESCRIPTOR_OBJECT_CAPABILITIES ||
783
786
  (descriptor.objectRole !== internal_location_contracts_1.ZLinkObjectRole.Server && descriptor.objectCapabilities.length !== 0)) {
784
787
  throw new RangeError('MeshNode object capacity is invalid.');
785
788
  }
@@ -804,7 +807,7 @@ function validateMeshNodeDescriptor(descriptor) {
804
807
  }
805
808
  function validDescriptorText(value) {
806
809
  const size = Buffer.byteLength(value, 'utf8');
807
- return size >= 1 && size <= 255 && !value.includes('\0');
810
+ return size >= 1 && size <= CoreTypes_1.ZLINK_MAX_IDENTITY_TEXT_BYTES && !value.includes('\0');
808
811
  }
809
812
  function meshNodeImmutableFingerprint(descriptor) {
810
813
  const capabilities = [...descriptor.objectCapabilities].sort((left, right) => {
@@ -867,7 +870,7 @@ function validateClientServerDescriptor(descriptor) {
867
870
  !validDescriptorText(descriptor.ownerId)) {
868
871
  throw new TypeError('ClientServer descriptor identity and endpoint are required.');
869
872
  }
870
- const maxGeneration = 0x7fffffffffffffffn;
873
+ const maxGeneration = MAX_LOCATION_GENERATION;
871
874
  if (descriptor.lifecycleGeneration < 1n ||
872
875
  descriptor.lifecycleGeneration > maxGeneration ||
873
876
  descriptor.descriptorRevision < 1n ||
@@ -876,8 +879,8 @@ function validateClientServerDescriptor(descriptor) {
876
879
  descriptor.leaseGeneration > maxGeneration) {
877
880
  throw new RangeError('ClientServer descriptor generations are invalid.');
878
881
  }
879
- if (!Number.isInteger(descriptor.weight) || descriptor.weight < 0 || descriptor.weight > 10_000) {
880
- throw new RangeError('ClientServer descriptor weight must be an integer in 0..10000.');
882
+ if (!(0, RegistrationBuilderPolicy_1.isValidPublicWeight)(descriptor.weight)) {
883
+ throw new RangeError(`ClientServer descriptor weight must be an integer in 0..${RegistrationBuilderPolicy_1.ZLINK_MAX_PUBLIC_WEIGHT}.`);
881
884
  }
882
885
  }
883
886
  function clientServerImmutableFingerprint(descriptor) {
@@ -907,7 +910,7 @@ function validateFanoutPublisherDescriptor(descriptor) {
907
910
  !validDescriptorText(descriptor.ownerId)) {
908
911
  throw new TypeError('Fanout publisher descriptor identity and endpoint are required.');
909
912
  }
910
- const maxGeneration = 0x7fffffffffffffffn;
913
+ const maxGeneration = MAX_LOCATION_GENERATION;
911
914
  if (descriptor.lifecycleGeneration < 1n ||
912
915
  descriptor.lifecycleGeneration > maxGeneration ||
913
916
  descriptor.descriptorRevision < 1n ||
@@ -1,4 +1,5 @@
1
1
  import type { ZLinkLocationStore, ZLinkStoreKey, ZLinkStoreReadResult, ZLinkStoreScanRequest, ZLinkStoreScanResult, ZLinkStoreVersion, ZLinkStoreWriteRequest, ZLinkStoreWriteResult } from '../../contracts';
2
+ export declare const PROVIDER_STORAGE_NAMESPACE_PREFIX = "zlink:v11:";
2
3
  /**
3
4
  * Framework-owned primitive Store used by the explicit in-memory option.
4
5
  * Domain records are encoded by ZLinkLocationStoreRepository.
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZLinkInMemoryProviderLocationStore = void 0;
3
+ exports.ZLinkInMemoryProviderLocationStore = exports.PROVIDER_STORAGE_NAMESPACE_PREFIX = void 0;
4
4
  exports.storeKey = storeKey;
5
5
  exports.storeVersion = storeVersion;
6
+ const Stores_1 = require("../../contracts/Locations/Stores");
7
+ exports.PROVIDER_STORAGE_NAMESPACE_PREFIX = 'zlink:v11:';
6
8
  /**
7
9
  * Framework-owned primitive Store used by the explicit in-memory option.
8
10
  * Domain records are encoded by ZLinkLocationStoreRepository.
@@ -42,6 +44,12 @@ class ZLinkInMemoryProviderLocationStore {
42
44
  if (current !== undefined)
43
45
  return { kind: 'conflict', storeNow };
44
46
  }
47
+ else if (condition.kind === 'value') {
48
+ if (current === undefined ||
49
+ !Buffer.from(current.bytes).equals(Buffer.from(condition.expected))) {
50
+ return { kind: 'conflict', storeNow };
51
+ }
52
+ }
45
53
  else if (current?.version.value !== condition.expected.value) {
46
54
  return { kind: 'conflict', storeNow };
47
55
  }
@@ -52,11 +60,9 @@ class ZLinkInMemoryProviderLocationStore {
52
60
  this.values.delete(mutation.key.value);
53
61
  continue;
54
62
  }
55
- requireValue(mutation.bytes, mutation.retentionMs);
63
+ const retentionMs = mutation.retentionMs === undefined ? undefined : Math.ceil(mutation.retentionMs);
56
64
  const version = storeVersion((++this.nextVersion).toString());
57
- const expiresAt = mutation.retentionMs === undefined
58
- ? undefined
59
- : new Date(storeNow.getTime() + mutation.retentionMs);
65
+ const expiresAt = retentionMs === undefined ? undefined : new Date(storeNow.getTime() + retentionMs);
60
66
  this.values.set(mutation.key.value, {
61
67
  bytes: mutation.bytes.slice(),
62
68
  version,
@@ -86,13 +92,26 @@ class ZLinkInMemoryProviderLocationStore {
86
92
  this.scans.set(snapshotId, snapshot);
87
93
  }
88
94
  else {
89
- [snapshotId, offset] = parseCursor(request.cursor);
95
+ const cursor = parseCursor(request.cursor);
96
+ snapshotId = cursor?.[0] ?? '';
97
+ offset = cursor?.[1] ?? 0;
90
98
  snapshot = this.scans.get(snapshotId);
91
- if (snapshot === undefined)
99
+ if (snapshot === undefined || offset > snapshot.items.length)
92
100
  return { kind: 'expired' };
93
101
  }
94
- const selected = snapshot.items.slice(offset, offset + request.limit);
95
- const nextOffset = offset + selected.length;
102
+ let nextOffset = offset;
103
+ let encodedBytes = 0;
104
+ while (nextOffset < snapshot.items.length && nextOffset - offset < request.limit) {
105
+ const item = snapshot.items[nextOffset];
106
+ const itemBytes = Buffer.byteLength(item.key.value, 'utf8') +
107
+ Buffer.byteLength(item.value.version.value, 'utf8') +
108
+ item.value.bytes.byteLength;
109
+ if (encodedBytes + itemBytes > Stores_1.ZLINK_PROVIDER_MAX_ENCODED_PAGE_BYTES)
110
+ break;
111
+ encodedBytes += itemBytes;
112
+ nextOffset += 1;
113
+ }
114
+ const selected = snapshot.items.slice(offset, nextOffset);
96
115
  const nextCursor = nextOffset < snapshot.items.length ? scanCursor(`${snapshotId}:${nextOffset}`) : undefined;
97
116
  if (nextCursor === undefined)
98
117
  this.scans.delete(snapshotId);
@@ -135,9 +154,10 @@ function scanCursor(value) {
135
154
  function parseCursor(cursor) {
136
155
  const separator = cursor.value.indexOf(':');
137
156
  const snapshotId = cursor.value.slice(0, separator);
138
- const offset = Number(cursor.value.slice(separator + 1));
139
- if (separator < 1 || !Number.isSafeInteger(offset) || offset < 0) {
140
- throw new RangeError('Location Store scan cursor is invalid.');
157
+ const encodedOffset = cursor.value.slice(separator + 1);
158
+ const offset = Number(encodedOffset);
159
+ if (separator < 1 || !/^(0|[1-9][0-9]*)$/.test(encodedOffset) || !Number.isSafeInteger(offset)) {
160
+ return undefined;
141
161
  }
142
162
  return [snapshotId, offset];
143
163
  }
@@ -147,35 +167,67 @@ function requireWriteRequest(request) {
147
167
  const keys = [...new Set([...conditionKeys, ...mutationKeys])];
148
168
  if (new Set(conditionKeys).size !== conditionKeys.length ||
149
169
  new Set(mutationKeys).size !== mutationKeys.length ||
150
- keys.length > 2_048) {
151
- throw new RangeError('Location Store write keys must be unique and bounded to 2,048.');
170
+ keys.length > Stores_1.ZLINK_PROVIDER_MAX_WRITE_KEYS) {
171
+ throw new RangeError(`Location Store write keys must be unique and bounded to ${Stores_1.ZLINK_PROVIDER_MAX_WRITE_KEYS.toLocaleString('en-US')}.`);
152
172
  }
153
173
  for (const key of keys)
154
174
  requireKey(key);
155
- const encodedSize = request.mutations.reduce((sum, mutation) => sum + (mutation.kind === 'put' ? mutation.bytes.byteLength : 0), 0);
156
- if (encodedSize > 4 * 1024 * 1024) {
157
- throw new RangeError('Location Store write exceeds 4 MiB.');
175
+ const encodedSize = request.conditions.reduce((sum, condition) => {
176
+ const keyBytes = Buffer.byteLength(condition.key.value, 'utf8');
177
+ if (condition.kind === 'missing')
178
+ return sum + keyBytes;
179
+ if (condition.kind === 'value') {
180
+ requireValue(condition.expected, undefined);
181
+ return sum + keyBytes + condition.expected.byteLength;
182
+ }
183
+ const versionBytes = Buffer.byteLength(condition.expected.value, 'utf8');
184
+ if (versionBytes < 1 || versionBytes > Stores_1.ZLINK_PROVIDER_MAX_VERSION_BYTES) {
185
+ throw new RangeError(`Location Store version must contain 1..${Stores_1.ZLINK_PROVIDER_MAX_VERSION_BYTES.toLocaleString('en-US')} UTF-8 bytes.`);
186
+ }
187
+ return sum + keyBytes + versionBytes;
188
+ }, 0) +
189
+ request.mutations.reduce((sum, mutation) => {
190
+ const keyBytes = Buffer.byteLength(mutation.key.value, 'utf8');
191
+ if (mutation.kind !== 'put')
192
+ return sum + keyBytes;
193
+ requireValue(mutation.bytes, mutation.retentionMs);
194
+ return sum + keyBytes + mutation.bytes.byteLength;
195
+ }, 0);
196
+ if (encodedSize > Stores_1.ZLINK_PROVIDER_MAX_WRITE_BYTES) {
197
+ throw new RangeError(`Location Store write exceeds ${Stores_1.ZLINK_PROVIDER_MAX_WRITE_BYTES / (1024 * 1024)} MiB.`);
158
198
  }
159
199
  }
160
200
  function requireScanRequest(request) {
161
- if (Buffer.byteLength(request.prefix, 'utf8') > 1_024) {
162
- throw new RangeError('Location Store scan prefix exceeds 1,024 UTF-8 bytes.');
201
+ if (request.cursor !== undefined) {
202
+ const bytes = Buffer.byteLength(request.cursor.value, 'utf8');
203
+ if (bytes < 1 || bytes > Stores_1.ZLINK_PROVIDER_MAX_SCAN_CURSOR_BYTES) {
204
+ throw new RangeError(`Location Store cursor must contain 1..${Stores_1.ZLINK_PROVIDER_MAX_SCAN_CURSOR_BYTES.toLocaleString('en-US')} UTF-8 bytes.`);
205
+ }
206
+ }
207
+ if (Buffer.byteLength(request.prefix, 'utf8') > Stores_1.ZLINK_PROVIDER_MAX_KEY_BYTES) {
208
+ throw new RangeError(`Location Store scan prefix exceeds ${Stores_1.ZLINK_PROVIDER_MAX_KEY_BYTES.toLocaleString('en-US')} UTF-8 bytes.`);
163
209
  }
164
- if (!Number.isSafeInteger(request.limit) || request.limit < 1 || request.limit > 1_000) {
165
- throw new RangeError('Location Store scan limit must be in 1..1000.');
210
+ if (!Number.isSafeInteger(request.limit) ||
211
+ request.limit < 1 ||
212
+ request.limit > Stores_1.ZLINK_PROVIDER_MAX_PAGE_SIZE) {
213
+ throw new RangeError(`Location Store scan limit must be in 1..${Stores_1.ZLINK_PROVIDER_MAX_PAGE_SIZE}.`);
166
214
  }
167
215
  }
168
216
  function requireValue(bytes, retentionMs) {
169
- if (bytes.byteLength > 1024 * 1024) {
170
- throw new RangeError('Location Store value exceeds 1 MiB.');
217
+ if (bytes.byteLength > Stores_1.ZLINK_PROVIDER_MAX_VALUE_BYTES) {
218
+ throw new RangeError(`Location Store value exceeds ${Stores_1.ZLINK_PROVIDER_MAX_VALUE_BYTES / (1024 * 1024)} MiB.`);
171
219
  }
172
- if (retentionMs !== undefined && (!Number.isSafeInteger(retentionMs) || retentionMs < 1)) {
173
- throw new RangeError('Location Store retention must be a positive safe integer.');
220
+ if (retentionMs !== undefined &&
221
+ (!Number.isFinite(retentionMs) ||
222
+ retentionMs <= 0 ||
223
+ !Number.isSafeInteger(Math.ceil(retentionMs)))) {
224
+ throw new RangeError('Location Store retention must round to a positive safe integer.');
174
225
  }
226
+ return retentionMs === undefined ? undefined : Math.ceil(retentionMs);
175
227
  }
176
228
  function requireKey(value) {
177
229
  const bytes = Buffer.byteLength(value, 'utf8');
178
- if (bytes < 1 || bytes > 1_024) {
179
- throw new RangeError('Location Store key must contain 1..1,024 UTF-8 bytes.');
230
+ if (bytes < 1 || bytes > Stores_1.ZLINK_PROVIDER_MAX_KEY_BYTES) {
231
+ throw new RangeError(`Location Store key must contain 1..${Stores_1.ZLINK_PROVIDER_MAX_KEY_BYTES.toLocaleString('en-US')} UTF-8 bytes.`);
180
232
  }
181
233
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkLocationKeyCodec = void 0;
4
+ const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
4
5
  const canonical_codec_1 = require("./canonical-codec");
5
6
  const routing_id_1 = require("../routing-id");
6
7
  // Framework bookkeeping codec for in-memory row maps and generation guards.
@@ -31,8 +32,8 @@ function encodeSegments(...segments) {
31
32
  }
32
33
  function requireSpotId(value) {
33
34
  const bytes = Buffer.byteLength(value, 'utf8');
34
- if (bytes < 1 || bytes > 255) {
35
- throw new TypeError('SpotId must contain 1..255 UTF-8 bytes.');
35
+ if (bytes < 1 || bytes > CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES) {
36
+ throw new TypeError(`SpotId must contain 1..${CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes.`);
36
37
  }
37
38
  return value;
38
39
  }
@@ -19,6 +19,7 @@ export declare class ZLinkOwnerLeaseTracker {
19
19
  isOwnerLive(ownerId: string, signal?: AbortSignal): Promise<boolean>;
20
20
  remainingLeaseMs(ownerId: string, signal?: AbortSignal): Promise<number>;
21
21
  remainingOwnerTokenLeaseMs(owner: ZLinkLocationOwnerToken, signal?: AbortSignal): Promise<number>;
22
+ isOwnerTokenLive(owner: ZLinkLocationOwnerToken, signal?: AbortSignal): Promise<boolean>;
22
23
  getLiveOwnerSetVersion(signal?: AbortSignal): Promise<number>;
23
24
  private getSnapshot;
24
25
  private prepareSnapshotRefresh;
@@ -28,9 +29,6 @@ export declare class ZLinkOwnerLeaseTracker {
28
29
  private isLive;
29
30
  }
30
31
  export declare class ZLinkLiveRowFilter {
31
- private readonly leaseTracker;
32
- constructor(leaseTracker: ZLinkOwnerLeaseTracker);
33
- filter<TRow>(rows: readonly TRow[], ownerIdOf: (row: TRow) => string, signal?: AbortSignal, include?: (row: TRow) => boolean): Promise<TRow[]>;
34
- resolve<TRow>(row: TRow | undefined, ownerIdOf: (row: TRow) => string, signal?: AbortSignal, include?: (row: TRow) => boolean): Promise<TRow | undefined>;
35
- private isLive;
32
+ filter<TRow>(rows: readonly TRow[], isLive: (row: TRow, signal?: AbortSignal) => Promise<boolean>, signal?: AbortSignal, include?: (row: TRow) => boolean): Promise<TRow[]>;
33
+ resolve<TRow>(row: TRow | undefined, isLive: (row: TRow, signal?: AbortSignal) => Promise<boolean>, signal?: AbortSignal, include?: (row: TRow) => boolean): Promise<TRow | undefined>;
36
34
  }
@@ -40,6 +40,9 @@ class ZLinkOwnerLeaseTracker {
40
40
  snapshot.result.storeNow.getTime() -
41
41
  (this.monotonicNowMs() - snapshot.fetchedAtMs));
42
42
  }
43
+ async isOwnerTokenLive(owner, signal) {
44
+ return (await this.remainingOwnerTokenLeaseMs(owner, signal)) > 0;
45
+ }
43
46
  async getLiveOwnerSetVersion(signal) {
44
47
  const owners = await this.lane.run(() => [...this.snapshots.keys()]);
45
48
  const refreshed = await Promise.all(owners.map((ownerId) => this.getSnapshot(ownerId, signal)));
@@ -128,27 +131,20 @@ class ZLinkOwnerLeaseTracker {
128
131
  }
129
132
  exports.ZLinkOwnerLeaseTracker = ZLinkOwnerLeaseTracker;
130
133
  class ZLinkLiveRowFilter {
131
- leaseTracker;
132
- constructor(leaseTracker) {
133
- this.leaseTracker = leaseTracker;
134
- }
135
- async filter(rows, ownerIdOf, signal, include) {
134
+ async filter(rows, isLive, signal, include) {
136
135
  const live = [];
137
136
  for (const row of rows) {
138
- if ((include === undefined || include(row)) && (await this.isLive(row, ownerIdOf, signal))) {
137
+ if ((include === undefined || include(row)) && (await isLive(row, signal))) {
139
138
  live.push(row);
140
139
  }
141
140
  }
142
141
  return live;
143
142
  }
144
- async resolve(row, ownerIdOf, signal, include) {
143
+ async resolve(row, isLive, signal, include) {
145
144
  if (row === undefined || (include !== undefined && !include(row))) {
146
145
  return undefined;
147
146
  }
148
- return (await this.isLive(row, ownerIdOf, signal)) ? row : undefined;
149
- }
150
- async isLive(row, ownerIdOf, signal) {
151
- return await this.leaseTracker.isOwnerLive(ownerIdOf(row), signal);
147
+ return (await isLive(row, signal)) ? row : undefined;
152
148
  }
153
149
  }
154
150
  exports.ZLinkLiveRowFilter = ZLinkLiveRowFilter;
@@ -1,20 +1,17 @@
1
1
  import type { ActorRef, RoutingId } from '../../contracts/Common';
2
- import type { ZLinkActorLocation, ZLinkLocationWriteStatus } from './internal-location-contracts';
3
- import type { ZLinkActorLocationStore, ZLinkSpotLocationStore } from './internal-store-contracts';
4
2
  import { ZLinkSpotKind } from '../../contracts/Spots';
5
3
  import { type ZLinkActorClaimActivation, type ZLinkActorClaimResult } from './actor-location-claims';
6
- export { ZLinkActorClaimStatus, type ZLinkActorClaimActivation, type ZLinkActorClaimResult } from './actor-location-claims';
7
- import type { ZLinkInstanceClosingAuthority, ZLinkTrackedInstanceAuthority } from './spot-location-claims';
8
- import type { ZLinkAuthorityStore } from './internal-store-contracts';
4
+ import type { ZLinkActorLocation, ZLinkLocationWriteStatus } from './internal-location-contracts';
5
+ import type { ZLinkActorLocationStore, ZLinkAuthorityStore, ZLinkSpotLocationStore } from './internal-store-contracts';
9
6
  import type { IZLinkLocationLifecycleRuntime } from './lifecycle-runtime';
7
+ import { type ZLinkInstanceClosingAuthority, type ZLinkTrackedInstanceAuthority } from './spot-location-claims';
8
+ export { ZLinkActorClaimStatus, type ZLinkActorClaimActivation, type ZLinkActorClaimResult } from './actor-location-claims';
10
9
  export type { IZLinkLocationLifecycleRuntime, ZLinkOwnershipLostEvent } from './lifecycle-runtime';
11
10
  export declare class ZLinkLocationLifecycle {
12
11
  private readonly runtime;
13
12
  private readonly actorClaims;
14
- private readonly actorCleanupTasks;
15
13
  private readonly spotClaims;
16
14
  private readonly actorSessionRoutes;
17
- private disposed;
18
15
  private readonly ownershipLostHandler;
19
16
  constructor(runtime: IZLinkLocationLifecycleRuntime, actorStore: ZLinkActorLocationStore, entryMeshName?: string, authorityStore?: ZLinkAuthorityStore, spotStore?: ZLinkSpotLocationStore, invalidateSpotRoute?: (spotId: RoutingId) => void);
20
17
  dispose(): void;
@@ -25,13 +22,11 @@ export declare class ZLinkLocationLifecycle {
25
22
  notifyActorJoinedSpot(actorType: string, actorId: string, spotMeshName: string, spotId: RoutingId, spotGeneration: bigint, membershipEpoch: bigint, ownerNodeGeneration: bigint): Promise<void>;
26
23
  notifyActorLeftSpot(actorType: string, actorId: string, entrySpotId: RoutingId, entrySpotGeneration: bigint, membershipEpoch: bigint, ownerNodeGeneration: bigint): Promise<void>;
27
24
  releaseActor(actorType: string, actorId: string, actorRef?: ActorRef): Promise<void>;
28
- releaseActorEventually(actorType: string, actorId: string): Promise<void>;
29
25
  ownsActor(actorType: string, actorId: string): boolean;
30
26
  actorLocationSnapshot(actorId: string): ZLinkActorLocation | undefined;
31
- private retryActorRelease;
32
27
  claimSpot(meshName: string, spotId: RoutingId, spotType: string, nodeRid: RoutingId, spotKind: ZLinkSpotKind, spotGeneration: bigint, ownerNodeGeneration: bigint, deactivate?: () => Promise<void>): Promise<ZLinkLocationWriteStatus>;
33
28
  releaseSpot(meshName: string, spotId: RoutingId, expectedObjectGeneration?: bigint): Promise<void>;
34
- beginInstanceSpotClosing(meshName: string, spotId: RoutingId): Promise<ZLinkInstanceClosingAuthority | undefined>;
29
+ beginInstanceSpotClosing(meshName: string, spotId: RoutingId, onCommitted: () => void): Promise<ZLinkInstanceClosingAuthority | undefined>;
35
30
  trackInstanceSpot(input: ZLinkTrackedInstanceAuthority): void;
36
31
  reclaimOwnerRows(): Promise<void>;
37
32
  bindActorSessionRoute(sessionRid: RoutingId, actorId: string, ownerNodeRid: RoutingId): Promise<void>;
@@ -2,17 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkLocationLifecycle = exports.ZLinkActorClaimStatus = void 0;
4
4
  const actor_location_claims_1 = require("./actor-location-claims");
5
- var actor_location_claims_2 = require("./actor-location-claims");
6
- Object.defineProperty(exports, "ZLinkActorClaimStatus", { enumerable: true, get: function () { return actor_location_claims_2.ZLinkActorClaimStatus; } });
7
5
  const actor_session_route_claims_1 = require("./actor-session-route-claims");
8
6
  const spot_location_claims_1 = require("./spot-location-claims");
7
+ var actor_location_claims_2 = require("./actor-location-claims");
8
+ Object.defineProperty(exports, "ZLinkActorClaimStatus", { enumerable: true, get: function () { return actor_location_claims_2.ZLinkActorClaimStatus; } });
9
9
  class ZLinkLocationLifecycle {
10
10
  runtime;
11
11
  actorClaims;
12
- actorCleanupTasks = new Map();
13
12
  spotClaims;
14
13
  actorSessionRoutes;
15
- disposed = false;
16
14
  ownershipLostHandler = (event) => this.onOwnershipLost(event);
17
15
  constructor(runtime, actorStore, entryMeshName = '', authorityStore, spotStore, invalidateSpotRoute) {
18
16
  this.runtime = runtime;
@@ -22,7 +20,6 @@ class ZLinkLocationLifecycle {
22
20
  this.runtime.addOwnershipLostHandler(this.ownershipLostHandler);
23
21
  }
24
22
  dispose() {
25
- this.disposed = true;
26
23
  this.runtime.removeOwnershipLostHandler(this.ownershipLostHandler);
27
24
  }
28
25
  async executeActorClaimThenActivate(actorType, actorId, nodeRid, deactivate, activate) {
@@ -46,43 +43,20 @@ class ZLinkLocationLifecycle {
46
43
  async releaseActor(actorType, actorId, actorRef) {
47
44
  await this.actorClaims.release(actorType, actorId, actorRef);
48
45
  }
49
- releaseActorEventually(actorType, actorId) {
50
- const existing = this.actorCleanupTasks.get(actorId);
51
- if (existing !== undefined) {
52
- return existing;
53
- }
54
- const cleanup = this.retryActorRelease(actorType, actorId).finally(() => this.actorCleanupTasks.delete(actorId));
55
- this.actorCleanupTasks.set(actorId, cleanup);
56
- return cleanup;
57
- }
58
46
  ownsActor(actorType, actorId) {
59
47
  return this.actorClaims.owns(actorType, actorId);
60
48
  }
61
49
  actorLocationSnapshot(actorId) {
62
50
  return this.actorClaims.snapshot(actorId);
63
51
  }
64
- async retryActorRelease(actorType, actorId) {
65
- let retryDelayMs = 50;
66
- while (!this.disposed) {
67
- try {
68
- await this.actorClaims.release(actorType, actorId);
69
- return;
70
- }
71
- catch {
72
- await waitForRetry(retryDelayMs);
73
- retryDelayMs = Math.min(retryDelayMs * 2, 1_000);
74
- }
75
- }
76
- return;
77
- }
78
52
  async claimSpot(meshName, spotId, spotType, nodeRid, spotKind, spotGeneration, ownerNodeGeneration, deactivate) {
79
53
  return await this.spotClaims.claim(meshName, spotId, spotType, nodeRid, spotKind, spotGeneration, ownerNodeGeneration, deactivate);
80
54
  }
81
55
  async releaseSpot(meshName, spotId, expectedObjectGeneration) {
82
56
  await this.spotClaims.release(meshName, spotId, expectedObjectGeneration);
83
57
  }
84
- async beginInstanceSpotClosing(meshName, spotId) {
85
- return await this.spotClaims.beginInstanceClosing(meshName, spotId);
58
+ async beginInstanceSpotClosing(meshName, spotId, onCommitted) {
59
+ return await this.spotClaims.beginInstanceClosing(meshName, spotId, onCommitted);
86
60
  }
87
61
  trackInstanceSpot(input) {
88
62
  this.spotClaims.trackInstanceAuthority(input);
@@ -114,6 +88,3 @@ function inferSpotStore(actorStore) {
114
88
  }
115
89
  return undefined;
116
90
  }
117
- function waitForRetry(delayMs) {
118
- return new Promise((resolve) => setTimeout(resolve, delayMs));
119
- }
@@ -0,0 +1,2 @@
1
+ /** Location Store §6: caller validation is terminal; provider failures may lose a result. */
2
+ export declare function isIndeterminateLocationStoreFailure(error: unknown, signal?: AbortSignal): boolean;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isIndeterminateLocationStoreFailure = isIndeterminateLocationStoreFailure;
4
+ /** Location Store §6: caller validation is terminal; provider failures may lose a result. */
5
+ function isIndeterminateLocationStoreFailure(error, signal) {
6
+ return !(error instanceof TypeError || error instanceof RangeError) && signal?.aborted !== true;
7
+ }
@@ -0,0 +1,3 @@
1
+ import type { ZLinkMeshNodeDescriptor } from '../../contracts/Locations/Models';
2
+ import type { ZLinkMeshNodeLocationStore } from './internal-store-contracts';
3
+ export declare function listAllMeshNodeDescriptors(store: ZLinkMeshNodeLocationStore, meshName: string, signal?: AbortSignal, pageSize?: number): Promise<readonly ZLinkMeshNodeDescriptor[]>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listAllMeshNodeDescriptors = listAllMeshNodeDescriptors;
4
+ async function listAllMeshNodeDescriptors(store, meshName, signal, pageSize) {
5
+ const rows = [];
6
+ let continuationToken;
7
+ do {
8
+ const result = await store.listMeshNodes(meshName, { pageSize, continuationToken }, signal);
9
+ rows.push(...result.items);
10
+ continuationToken = result.continuationToken;
11
+ } while (continuationToken !== undefined);
12
+ return rows;
13
+ }