@zlink-systems/framework 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  3. package/dist/contracts/Common/CoreTypes.js +7 -0
  4. package/dist/contracts/Common/index.d.ts +1 -1
  5. package/dist/contracts/Common/index.js +0 -1
  6. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  7. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  8. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  9. package/dist/contracts/Configuration/Registration.js +58 -36
  10. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  12. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  16. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  17. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  18. package/dist/contracts/Handlers/JsonContract.js +10 -4
  19. package/dist/contracts/Locations/Authority.d.ts +1 -1
  20. package/dist/contracts/Locations/Authority.js +3 -2
  21. package/dist/contracts/Locations/Options.js +1 -1
  22. package/dist/contracts/Locations/Stores.d.ts +12 -0
  23. package/dist/contracts/Locations/Stores.js +9 -0
  24. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  25. package/dist/internal.d.ts +4 -0
  26. package/dist/internal.js +15 -1
  27. package/dist/nest-integration.d.ts +4 -2
  28. package/dist/nest-integration.js +14 -4
  29. package/dist/runtime/abort.d.ts +1 -0
  30. package/dist/runtime/abort.js +8 -5
  31. package/dist/runtime/activation-admission.d.ts +1 -2
  32. package/dist/runtime/activation-admission.js +2 -6
  33. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  34. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  35. package/dist/runtime/actors/actor-client.d.ts +2 -2
  36. package/dist/runtime/actors/actor-client.js +42 -143
  37. package/dist/runtime/actors/actor-context.d.ts +3 -5
  38. package/dist/runtime/actors/actor-context.js +13 -11
  39. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  40. package/dist/runtime/actors/actor-handoff.js +8 -8
  41. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  42. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  43. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  44. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  45. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  46. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  47. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  48. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  49. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  50. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  51. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  52. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  53. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  54. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  55. package/dist/runtime/actors/bound-session-wire.js +2 -7
  56. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  57. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  58. package/dist/runtime/actors/index.d.ts +9 -7
  59. package/dist/runtime/actors/index.js +87 -69
  60. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  61. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  62. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  63. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  64. package/dist/runtime/admission.d.ts +2 -0
  65. package/dist/runtime/admission.js +7 -1
  66. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  67. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  68. package/dist/runtime/backend/contracts/index.d.ts +6 -23
  69. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  70. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  71. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  72. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
  73. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
  74. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  75. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  76. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  77. package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
  78. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  79. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  80. package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
  81. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  82. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  83. package/dist/runtime/backend/runtime-values.js +2 -0
  84. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  85. package/dist/runtime/channels/channel-clients.js +68 -52
  86. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  87. package/dist/runtime/channels/channel-envelope.js +47 -29
  88. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  89. package/dist/runtime/channels/channel-outbound-operations.js +9 -10
  90. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  91. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  94. package/dist/runtime/channels/channel-runtime-manager.js +5 -2
  95. package/dist/runtime/channels/channel-socket-options.js +3 -2
  96. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  97. package/dist/runtime/channels/channel-socket-registry.js +248 -174
  98. package/dist/runtime/channels/channel-transports.d.ts +11 -17
  99. package/dist/runtime/channels/channel-transports.js +68 -47
  100. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  101. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  102. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  103. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  104. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  105. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  106. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  107. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  108. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  109. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  110. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  111. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  112. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  113. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  114. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  115. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  116. package/dist/runtime/diagnostics/flow-context.js +16 -2
  117. package/dist/runtime/diagnostics/index.d.ts +4 -2
  118. package/dist/runtime/diagnostics/index.js +14 -4
  119. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  120. package/dist/runtime/diagnostics/message-flow.js +10 -19
  121. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  122. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  123. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  124. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  125. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  126. package/dist/runtime/disposal.d.ts +5 -0
  127. package/dist/runtime/disposal.js +22 -0
  128. package/dist/runtime/execution/index.d.ts +12 -9
  129. package/dist/runtime/execution/index.js +58 -14
  130. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  131. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  132. package/dist/runtime/execution/state-lane.d.ts +8 -1
  133. package/dist/runtime/execution/state-lane.js +118 -3
  134. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  135. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  136. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  137. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  138. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  139. package/dist/runtime/foundation/operation-identity.js +9 -5
  140. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  141. package/dist/runtime/foundation/operation-registry.js +34 -44
  142. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  143. package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
  144. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  145. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  146. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  147. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  148. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  149. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  150. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  151. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  152. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  153. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  154. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  155. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  156. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  157. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  158. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  159. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  160. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  161. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  162. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  163. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  164. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  165. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  166. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  167. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  168. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  169. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  170. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  171. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  172. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  173. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  174. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  175. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  176. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  177. package/dist/runtime/framework-errors-internal.js +343 -122
  178. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  179. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  180. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  181. package/dist/runtime/host/actor-packet-relay.js +48 -91
  182. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  183. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  184. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  185. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  186. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  187. package/dist/runtime/host/application-job-queue.js +16 -33
  188. package/dist/runtime/host/bound-session-relay.js +1 -1
  189. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  190. package/dist/runtime/host/index.d.ts +14 -13
  191. package/dist/runtime/host/index.js +190 -157
  192. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  193. package/dist/runtime/host/instance-activation-authority.js +17 -45
  194. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  195. package/dist/runtime/host/location-runtime-owner.js +2 -2
  196. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  197. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  198. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  199. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  200. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  201. package/dist/runtime/host/remote-bound-session-relay.js +7 -20
  202. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  203. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  204. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  205. package/dist/runtime/host/runtime-shutdown.js +18 -21
  206. package/dist/runtime/host/service-relocation-control.js +6 -1
  207. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  208. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  209. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  210. package/dist/runtime/host/spot-address-transport.js +34 -136
  211. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  212. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  213. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  214. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  215. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  216. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  217. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  218. package/dist/runtime/locations/authority-key-codec.js +4 -3
  219. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  220. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  221. package/dist/runtime/locations/creation-operation-id.js +6 -4
  222. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  223. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  224. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  225. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  226. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  227. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  228. package/dist/runtime/locations/key-codec.js +3 -2
  229. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  230. package/dist/runtime/locations/lease-tracker.js +7 -11
  231. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  232. package/dist/runtime/locations/lifecycle.js +2 -31
  233. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  234. package/dist/runtime/locations/location-store-failure.js +7 -0
  235. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  236. package/dist/runtime/locations/location-store-pages.js +13 -0
  237. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  238. package/dist/runtime/locations/location-store-repository.js +303 -332
  239. package/dist/runtime/locations/relocation-blob.js +18 -5
  240. package/dist/runtime/locations/resolvers.d.ts +5 -5
  241. package/dist/runtime/locations/resolvers.js +37 -28
  242. package/dist/runtime/locations/runtime.d.ts +5 -4
  243. package/dist/runtime/locations/runtime.js +123 -92
  244. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  245. package/dist/runtime/locations/spot-location-claims.js +42 -1
  246. package/dist/runtime/messaging/payload-codec.js +26 -20
  247. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  248. package/dist/runtime/messaging/submission-result.js +48 -0
  249. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  250. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  251. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  252. package/dist/runtime/spots/index.d.ts +14 -20
  253. package/dist/runtime/spots/index.js +302 -176
  254. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  255. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  256. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  257. package/dist/runtime/spots/spot-activation-state.js +2 -2
  258. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  259. package/dist/runtime/spots/spot-activation.js +49 -32
  260. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  261. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  262. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  263. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  264. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  265. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  266. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  267. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  268. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  269. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  270. package/dist/runtime/spots/spot-context.d.ts +2 -2
  271. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  272. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  273. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  274. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  275. package/dist/runtime/spots/spot-manager-public.js +5 -4
  276. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  277. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  278. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  279. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  280. package/dist/runtime/spots/spot-outbound.js +9 -8
  281. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  282. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  283. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  284. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  285. package/dist/runtime/spots/spot-route-replies.js +3 -1
  286. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  287. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  288. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  289. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  290. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  291. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  292. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  293. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  294. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  295. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  296. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  297. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  298. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  299. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  300. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  301. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  302. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  303. package/dist/runtime/streams/bound-session-service.js +11 -1
  304. package/dist/runtime/streams/index.d.ts +14 -15
  305. package/dist/runtime/streams/index.js +20 -21
  306. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  307. package/dist/runtime/streams/managed-stream.js +17 -8
  308. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  309. package/dist/runtime/streams/protocol.d.ts +6 -33
  310. package/dist/runtime/streams/protocol.js +38 -110
  311. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  312. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  313. package/dist/runtime/streams/session-calls.d.ts +1 -1
  314. package/dist/runtime/streams/session-calls.js +5 -4
  315. package/dist/runtime/streams/session-context.d.ts +6 -6
  316. package/dist/runtime/streams/session-context.js +22 -4
  317. package/dist/runtime/streams/session-requests.js +2 -1
  318. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  319. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  320. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  321. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  322. package/dist/runtime/workers/index.d.ts +2 -2
  323. package/dist/runtime/workers/index.js +5 -4
  324. package/package.json +3 -3
  325. package/src/contracts/Common/CoreTypes.ts +7 -0
  326. package/src/contracts/Common/index.ts +1 -1
  327. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  328. package/src/contracts/Configuration/Registration.ts +92 -48
  329. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  330. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  331. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  332. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  333. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  334. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  335. package/src/contracts/Handlers/JsonContract.ts +14 -4
  336. package/src/contracts/Locations/Authority.ts +7 -3
  337. package/src/contracts/Locations/Options.ts +1 -1
  338. package/src/contracts/Locations/Stores.ts +14 -0
  339. package/src/contracts/Spots/Contracts.ts +1 -1
  340. package/src/internal.ts +14 -0
  341. package/src/nest-integration.ts +28 -10
  342. package/src/runtime/abort.ts +6 -5
  343. package/src/runtime/activation-admission.ts +2 -8
  344. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  345. package/src/runtime/actors/actor-client.ts +77 -204
  346. package/src/runtime/actors/actor-context.ts +39 -33
  347. package/src/runtime/actors/actor-handoff.ts +24 -22
  348. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  349. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  350. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  351. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  352. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  353. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  354. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  355. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  356. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  357. package/src/runtime/actors/bound-session-wire.ts +2 -8
  358. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  359. package/src/runtime/actors/index.ts +100 -79
  360. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  361. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  362. package/src/runtime/admission.ts +8 -1
  363. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  364. package/src/runtime/backend/contracts/index.ts +13 -29
  365. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  366. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  367. package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
  368. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  369. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  370. package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
  371. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  372. package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
  373. package/src/runtime/backend/raw-binding-port.ts +1 -1
  374. package/src/runtime/backend/runtime-values.ts +4 -1
  375. package/src/runtime/channels/channel-clients.ts +132 -85
  376. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  377. package/src/runtime/channels/channel-envelope.ts +58 -29
  378. package/src/runtime/channels/channel-outbound-operations.ts +10 -23
  379. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  380. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  381. package/src/runtime/channels/channel-runtime-manager.ts +6 -2
  382. package/src/runtime/channels/channel-socket-options.ts +8 -2
  383. package/src/runtime/channels/channel-socket-registry.ts +301 -192
  384. package/src/runtime/channels/channel-transports.ts +161 -112
  385. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  386. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  387. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  388. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  389. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  390. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  391. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  392. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  393. package/src/runtime/diagnostics/flow-context.ts +16 -2
  394. package/src/runtime/diagnostics/index.ts +27 -17
  395. package/src/runtime/diagnostics/message-flow.ts +15 -25
  396. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  397. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  398. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  399. package/src/runtime/disposal.ts +19 -0
  400. package/src/runtime/execution/index.ts +60 -20
  401. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  402. package/src/runtime/execution/state-lane.ts +142 -4
  403. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  404. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  405. package/src/runtime/foundation/operation-identity.ts +11 -5
  406. package/src/runtime/foundation/operation-registry.ts +33 -50
  407. package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
  408. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  409. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  410. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  411. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  412. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  413. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  414. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  415. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  416. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  417. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  418. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  419. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  420. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  421. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  422. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  423. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  424. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  425. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  426. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  427. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  428. package/src/runtime/framework-errors-internal.ts +380 -134
  429. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  430. package/src/runtime/host/actor-packet-relay.ts +57 -147
  431. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  432. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  433. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  434. package/src/runtime/host/application-job-queue.ts +28 -34
  435. package/src/runtime/host/bound-session-relay.ts +1 -2
  436. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  437. package/src/runtime/host/index.ts +327 -296
  438. package/src/runtime/host/instance-activation-authority.ts +89 -109
  439. package/src/runtime/host/location-runtime-owner.ts +4 -2
  440. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  441. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  442. package/src/runtime/host/remote-bound-session-relay.ts +8 -41
  443. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  444. package/src/runtime/host/runtime-shutdown.ts +17 -21
  445. package/src/runtime/host/service-relocation-control.ts +14 -1
  446. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  447. package/src/runtime/host/spot-address-transport.ts +73 -195
  448. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  449. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  450. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  451. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  452. package/src/runtime/locations/authority-key-codec.ts +7 -3
  453. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  454. package/src/runtime/locations/creation-operation-id.ts +6 -3
  455. package/src/runtime/locations/domain-store-contract.ts +12 -3
  456. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  457. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  458. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  459. package/src/runtime/locations/key-codec.ts +3 -2
  460. package/src/runtime/locations/lease-tracker.ts +8 -14
  461. package/src/runtime/locations/lifecycle.ts +13 -43
  462. package/src/runtime/locations/location-store-failure.ts +4 -0
  463. package/src/runtime/locations/location-store-pages.ts +18 -0
  464. package/src/runtime/locations/location-store-repository.ts +450 -478
  465. package/src/runtime/locations/relocation-blob.ts +17 -6
  466. package/src/runtime/locations/resolvers.ts +75 -49
  467. package/src/runtime/locations/runtime.ts +220 -110
  468. package/src/runtime/locations/spot-location-claims.ts +58 -1
  469. package/src/runtime/messaging/payload-codec.ts +35 -24
  470. package/src/runtime/messaging/submission-result.ts +57 -1
  471. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  472. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  473. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  474. package/src/runtime/spots/index.ts +433 -229
  475. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  476. package/src/runtime/spots/spot-activation-state.ts +2 -2
  477. package/src/runtime/spots/spot-activation.ts +67 -37
  478. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  479. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  480. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  481. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  482. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  483. package/src/runtime/spots/spot-context.ts +3 -3
  484. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  485. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  486. package/src/runtime/spots/spot-manager-public.ts +21 -17
  487. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  488. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  489. package/src/runtime/spots/spot-outbound.ts +45 -23
  490. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  491. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  492. package/src/runtime/spots/spot-route-replies.ts +6 -4
  493. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  494. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  495. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  496. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  497. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  498. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  499. package/src/runtime/spots/spot-timer.ts +3 -2
  500. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  501. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  502. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  503. package/src/runtime/streams/bound-session-service.ts +21 -1
  504. package/src/runtime/streams/index.ts +76 -64
  505. package/src/runtime/streams/managed-stream.ts +29 -10
  506. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  507. package/src/runtime/streams/protocol.ts +34 -88
  508. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  509. package/src/runtime/streams/session-calls.ts +6 -5
  510. package/src/runtime/streams/session-context.ts +54 -10
  511. package/src/runtime/streams/session-requests.ts +2 -1
  512. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  513. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  514. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  515. package/src/runtime/workers/index.ts +13 -12
  516. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  517. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  518. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  519. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  520. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  521. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,12 +1,15 @@
1
1
  import { createHash, timingSafeEqual } from 'node:crypto';
2
2
  import type { ZLinkLocationStore, ZLinkStoreKey, ZLinkStoreReadResult } from '../../contracts';
3
+ import { SHA256_DIGEST_BYTES } from '../foundation/actor-join-recovery-codec';
4
+ import { PROVIDER_STORAGE_NAMESPACE_PREFIX, storeKey } from './in-memory-provider-location-store';
3
5
  import type {
4
6
  ZLinkAggregateFence,
5
7
  ZLinkAggregatePrepareRequest
6
8
  } from './internal-location-contracts';
7
- import { storeKey } from './in-memory-provider-location-store';
8
9
 
9
- const PREFIX = 'zlink:v11:aggregate-inventory:';
10
+ const INVENTORY_PAGE_KIND = 'aggregate-inventory-page-v1';
11
+ const INVENTORY_ROOT_KIND = 'aggregate-inventory-root-v1';
12
+ const PREFIX = `${PROVIDER_STORAGE_NAMESPACE_PREFIX}aggregate-inventory:`;
10
13
  const MAX_PAGE_ENTRIES = 1_024;
11
14
  const MAX_PAGE_BYTES = 1_024 * 1_024;
12
15
  const MAX_TREE_LEVELS = 32;
@@ -30,7 +33,7 @@ interface InventoryReference {
30
33
  }
31
34
 
32
35
  interface InventoryPage {
33
- readonly kind: 'aggregate-inventory-page-v1';
36
+ readonly kind: typeof INVENTORY_PAGE_KIND;
34
37
  readonly level: number;
35
38
  readonly index: number;
36
39
  readonly startIndex: number;
@@ -40,7 +43,7 @@ interface InventoryPage {
40
43
  }
41
44
 
42
45
  interface InventoryRoot {
43
- readonly kind: 'aggregate-inventory-root-v1';
46
+ readonly kind: typeof INVENTORY_ROOT_KIND;
44
47
  readonly totalCount: number;
45
48
  readonly digest: string;
46
49
  readonly declaredDigest: string;
@@ -209,8 +212,8 @@ function buildTree(request: ZLinkAggregatePrepareRequest): InventoryTree {
209
212
  if (request.participants.length < 1) {
210
213
  throw new RangeError('Aggregate inventory requires at least one participant.');
211
214
  }
212
- if (request.inventoryDigest.byteLength !== 32) {
213
- throw new TypeError('Aggregate inventory digest must contain 32 bytes.');
215
+ if (request.inventoryDigest.byteLength !== SHA256_DIGEST_BYTES) {
216
+ throw new TypeError(`Aggregate inventory digest must contain ${SHA256_DIGEST_BYTES} bytes.`);
214
217
  }
215
218
  const entries = request.participants.map((participant, index): InventoryEntry => ({
216
219
  index,
@@ -240,7 +243,7 @@ function buildTree(request: ZLinkAggregatePrepareRequest): InventoryTree {
240
243
  ) {
241
244
  level++;
242
245
  if (level >= MAX_TREE_LEVELS) {
243
- throw new RangeError('Aggregate inventory tree exceeds 32 levels.');
246
+ throw new RangeError(`Aggregate inventory tree exceeds ${MAX_TREE_LEVELS} levels.`);
244
247
  }
245
248
  references = packIndexPages(level, references, pages);
246
249
  }
@@ -269,7 +272,7 @@ function packLeafPages(
269
272
  let bytes: Uint8Array;
270
273
  do {
271
274
  page = {
272
- kind: 'aggregate-inventory-page-v1',
275
+ kind: INVENTORY_PAGE_KIND,
273
276
  level: 0,
274
277
  index: references.length,
275
278
  startIndex: offset,
@@ -304,7 +307,7 @@ function packIndexPages(
304
307
  do {
305
308
  const selected = children.slice(offset, offset + count);
306
309
  page = {
307
- kind: 'aggregate-inventory-page-v1',
310
+ kind: INVENTORY_PAGE_KIND,
308
311
  level,
309
312
  index: references.length,
310
313
  startIndex: selected[0]!.startIndex,
@@ -339,7 +342,7 @@ function rootCandidate(
339
342
  if (page.level <= topLevel) pageCountsByLevel[page.level]!++;
340
343
  }
341
344
  return {
342
- kind: 'aggregate-inventory-root-v1',
345
+ kind: INVENTORY_ROOT_KIND,
343
346
  totalCount,
344
347
  digest,
345
348
  declaredDigest,
@@ -456,7 +459,7 @@ function decodeRoot(bytes: Uint8Array): InventoryRoot {
456
459
  value === null ||
457
460
  typeof value !== 'object' ||
458
461
  !('kind' in value) ||
459
- value.kind !== 'aggregate-inventory-root-v1'
462
+ value.kind !== INVENTORY_ROOT_KIND
460
463
  ) {
461
464
  throw new Error('Invalid inventory root.');
462
465
  }
@@ -469,7 +472,7 @@ function decodePage(bytes: Uint8Array): InventoryPage {
469
472
  value === null ||
470
473
  typeof value !== 'object' ||
471
474
  !('kind' in value) ||
472
- value.kind !== 'aggregate-inventory-page-v1' ||
475
+ value.kind !== INVENTORY_PAGE_KIND ||
473
476
  !('entries' in value) ||
474
477
  !Array.isArray(value.entries) ||
475
478
  !('children' in value) ||
@@ -524,7 +527,7 @@ function isSha256(value: unknown): value is string {
524
527
  function sameHash(expected: string, actual: Uint8Array): boolean {
525
528
  return (
526
529
  isSha256(expected) &&
527
- actual.byteLength === 32 &&
530
+ actual.byteLength === SHA256_DIGEST_BYTES &&
528
531
  timingSafeEqual(Buffer.from(expected, 'hex'), Buffer.from(actual))
529
532
  );
530
533
  }
@@ -1,3 +1,4 @@
1
+ import { ZLINK_MAX_IDENTITY_TEXT_BYTES } from '../../contracts/Common/CoreTypes';
1
2
  import type {
2
3
  ZLinkAuthorityKey,
3
4
  ZLinkPlacementObjectKind
@@ -8,8 +9,10 @@ export function encodeAuthorityKey(
8
9
  globalId: string
9
10
  ): ZLinkAuthorityKey {
10
11
  const bytes = Buffer.from(globalId);
11
- if (bytes.byteLength < 1 || bytes.byteLength > 255) {
12
- throw new RangeError('Authority identity must contain 1..255 UTF-8 bytes.');
12
+ if (bytes.byteLength < 1 || bytes.byteLength > ZLINK_MAX_IDENTITY_TEXT_BYTES) {
13
+ throw new RangeError(
14
+ `Authority identity must contain 1..${ZLINK_MAX_IDENTITY_TEXT_BYTES} UTF-8 bytes.`
15
+ );
13
16
  }
14
17
  const discriminator = kind === 'actor' ? 'a' : 's';
15
18
  return {
@@ -27,7 +30,8 @@ export function decodeAuthorityKey(key: ZLinkAuthorityKey): {
27
30
  const match = /^zla1:([as]):([1-9][0-9]{0,2}):(.*)$/.exec(key.value);
28
31
  if (match === null) throw new TypeError('Authority key is not canonical.');
29
32
  const declaredLength = Number(match[2]);
30
- if (declaredLength > 255) throw new TypeError('Authority key identity exceeds the byte limit.');
33
+ if (declaredLength > ZLINK_MAX_IDENTITY_TEXT_BYTES)
34
+ throw new TypeError('Authority key identity exceeds the byte limit.');
31
35
  const encoded = match[3]!;
32
36
  const bytes: number[] = [];
33
37
  for (let index = 0; index < encoded.length;) {
@@ -13,6 +13,8 @@ import { ZLinkLocationKeyCodec } from './key-codec';
13
13
  import { normalizeEndpoint } from '../../contracts/Configuration/EndpointNotation';
14
14
  import { ZLinkAutoConnectPlanner } from './auto-connect-planner';
15
15
  import { ZLinkStateLane } from '../execution/state-lane';
16
+ import { ConnectError } from '@zlink-systems/zlink';
17
+ import type { ZLinkDispatchErrorSink } from '../diagnostics/dispatch-error-port';
16
18
  import type {
17
19
  IZLinkAutoConnectExecutor,
18
20
  IZLinkAutoConnectPeerPublisher,
@@ -33,6 +35,7 @@ export interface ZLinkAutoConnectReconcilerOptions {
33
35
  readonly events?: ZLinkAutoConnectEventSink;
34
36
  readonly options?: ZLinkLocationOptionOverrides;
35
37
  readonly monotonicNowMs?: () => number;
38
+ readonly errorSink: ZLinkDispatchErrorSink;
36
39
  }
37
40
 
38
41
  export class ZLinkAutoConnectReconciler {
@@ -46,6 +49,7 @@ export class ZLinkAutoConnectReconciler {
46
49
  private readonly events?: ZLinkAutoConnectEventSink;
47
50
  private readonly options: Required<ZLinkLocationOptionOverrides>;
48
51
  private readonly monotonicNowMs: () => number;
52
+ private readonly errorSink: ZLinkDispatchErrorSink;
49
53
  private readonly active = new Map<string, ZLinkAutoConnectTarget>();
50
54
  private readonly pendingDisconnects = new Map<string, ZLinkAutoConnectTarget>();
51
55
  private readonly failedEndpoints = new Set<string>();
@@ -73,6 +77,7 @@ export class ZLinkAutoConnectReconciler {
73
77
  this.events = options.events;
74
78
  this.options = { ...zlinkRuntimeDefaultLocationOptions, ...options.options };
75
79
  this.monotonicNowMs = options.monotonicNowMs ?? (() => performance.now());
80
+ this.errorSink = options.errorSink;
76
81
  this.executor.onDisconnected?.((endpoint) => this.recordDisconnectedEndpoint(endpoint));
77
82
  }
78
83
 
@@ -155,13 +160,6 @@ export class ZLinkAutoConnectReconciler {
155
160
  await this.lane.run(() => {
156
161
  this.storeFailedValue = false;
157
162
  this.storeFailureStartedAtMs = undefined;
158
- // After a store restart, owners may need one full lease interval to
159
- // reclaim their token and republish a descriptor. Do not interpret the
160
- // incomplete post-restart scan as a definitive removal.
161
- // Keep the existing transport set through one lease interval while
162
- // owners reclaim their tokens and republish descriptors. This deferral
163
- // applies only after a Store operation failed; a successful empty scan
164
- // is authoritative and must remove stale peers promptly.
165
163
  this.recoveryDeferUntilMs = this.monotonicNowMs() + this.options.ownerLeaseTtlMs;
166
164
  });
167
165
  }
@@ -175,7 +173,6 @@ export class ZLinkAutoConnectReconciler {
175
173
  );
176
174
  });
177
175
  const candidates = ZLinkAutoConnectPlanner.computeCandidates(this.local, rows);
178
- const nowMs = this.monotonicNowMs();
179
176
  this.executor.expectPeers?.([...candidates.values()]);
180
177
  this.executor.replaceNotRequired?.(
181
178
  ZLinkAutoConnectPlanner.computeNotRequired(this.local, rows)
@@ -196,6 +193,18 @@ export class ZLinkAutoConnectReconciler {
196
193
  for (const [key, target] of existingTargets) {
197
194
  if (activeKeys.has(key)) desired.set(key, target);
198
195
  }
196
+ const deferringMissingTargets =
197
+ this.monotonicNowMs() < (await this.lane.run(() => this.recoveryDeferUntilMs));
198
+ let staleCandidates = candidates;
199
+ if (deferringMissingTargets) {
200
+ const retainedCandidates = new Map(candidates);
201
+ const lastDesired = await this.lane.run(() => [...this.lastDesired]);
202
+ for (const [key, target] of lastDesired) {
203
+ if (!desired.has(key)) desired.set(key, target);
204
+ if (!retainedCandidates.has(key)) retainedCandidates.set(key, target);
205
+ }
206
+ staleCandidates = retainedCandidates;
207
+ }
199
208
  await this.lane.run(() => {
200
209
  this.lastDesired = new Map(desired);
201
210
  });
@@ -226,14 +235,13 @@ export class ZLinkAutoConnectReconciler {
226
235
  await this.lane.run(() => {
227
236
  this.pendingDisconnects.delete(key);
228
237
  });
229
- const connected = await this.executor.connect(target);
230
- if (connected) {
238
+ await this.connectTarget(target, async () => {
231
239
  connectedEndpoints.push(target.endpoint);
232
240
  await this.lane.run(() => {
233
241
  this.active.set(key, target);
234
242
  this.failedEndpoints.delete(target.endpoint);
235
243
  });
236
- }
244
+ });
237
245
  continue;
238
246
  }
239
247
 
@@ -252,27 +260,17 @@ export class ZLinkAutoConnectReconciler {
252
260
  await this.lane.run(() => {
253
261
  this.pendingDisconnects.delete(key);
254
262
  });
255
- const connected = await this.executor.connect(target);
256
- if (connected) {
263
+ await this.connectTarget(target, async () => {
257
264
  connectedEndpoints.push(target.endpoint);
258
265
  await this.lane.run(() => {
259
266
  this.active.set(key, target);
260
267
  this.failedEndpoints.delete(target.endpoint);
261
268
  });
262
- }
269
+ });
263
270
  }
264
271
  }
265
272
 
266
- if (nowMs < (await this.lane.run(() => this.recoveryDeferUntilMs))) {
267
- this.publishDesiredSetChange(connectedEndpoints, disconnectedEndpoints);
268
- return;
269
- }
270
-
271
- // A store restart can expose an incomplete descriptor set while peers are
272
- // reclaiming their owner leases. Preserve existing transport connections
273
- // during that recovery window; stale-peer cleanup is safe after the
274
- // deferred reconciliation has completed.
275
- this.executor.disconnectStalePeers?.([...candidates.values()]);
273
+ this.executor.disconnectStalePeers?.([...staleCandidates.values()]);
276
274
 
277
275
  const activeTargets = await this.lane.run(() => [...this.active]);
278
276
  for (const [key, target] of activeTargets) {
@@ -409,10 +407,25 @@ export class ZLinkAutoConnectReconciler {
409
407
  const retryTargets = await this.lane.run(() => this.beginStoreFailureCore());
410
408
  if (retryTargets === undefined) return;
411
409
  for (const [key, target] of retryTargets) {
412
- if (await this.executor.connect(target)) {
410
+ await this.connectTarget(target, async () => {
413
411
  await this.lane.run(() => this.completeStoreFailureConnectCore(key, target));
414
- }
412
+ });
413
+ }
414
+ }
415
+
416
+ private async connectTarget(
417
+ target: ZLinkAutoConnectTarget,
418
+ accept: () => Promise<void>
419
+ ): Promise<void> {
420
+ let accepted: boolean;
421
+ try {
422
+ accepted = await this.executor.connect(target);
423
+ } catch (error) {
424
+ if (!(error instanceof ConnectError)) throw error;
425
+ this.errorSink.reportRuntimeTaskException('auto-connect', error);
426
+ return;
415
427
  }
428
+ if (accepted) await accept();
416
429
  }
417
430
 
418
431
  private beginStoreFailureCore():
@@ -1,12 +1,15 @@
1
+ import { UINT64_BYTES } from '@zlink-systems/stream-wire';
2
+ import { OPERATION_IDENTITY_BYTES } from '../foundation/operation-identity';
1
3
  import { randomBytes } from 'node:crypto';
2
4
 
3
- export function randomOperationId(entropy: Uint8Array = randomBytes(16)): {
5
+ export function randomOperationId(entropy: Uint8Array = randomBytes(OPERATION_IDENTITY_BYTES)): {
4
6
  readonly high: bigint;
5
7
  readonly low: bigint;
6
8
  } {
7
- if (entropy.byteLength !== 16) throw new RangeError('Operation ID entropy must be 16 bytes.');
9
+ if (entropy.byteLength !== OPERATION_IDENTITY_BYTES)
10
+ throw new RangeError(`Operation ID entropy must be ${OPERATION_IDENTITY_BYTES} bytes.`);
8
11
  const bytes = Buffer.from(entropy);
9
12
  const high = bytes.readBigUInt64BE(0);
10
- const low = bytes.readBigUInt64BE(8);
13
+ const low = bytes.readBigUInt64BE(UINT64_BYTES);
11
14
  return high === 0n && low === 0n ? { high, low: 1n } : { high, low };
12
15
  }
@@ -128,14 +128,23 @@ export interface ZLinkDomainLocationStore {
128
128
  ): Promise<ZLinkCreationTerminalReadResult>;
129
129
  reserve(
130
130
  request: ZLinkObjectReserveRequest,
131
- signal?: AbortSignal
131
+ signal?: AbortSignal,
132
+ deadlineUnixMs?: bigint
132
133
  ): Promise<ZLinkObjectReserveResult>;
133
- commit(request: ZLinkObjectCommitRequest, signal?: AbortSignal): Promise<ZLinkObjectCommitResult>;
134
+ commit(
135
+ request: ZLinkObjectCommitRequest,
136
+ signal?: AbortSignal,
137
+ deadlineUnixMs?: bigint
138
+ ): Promise<ZLinkObjectCommitResult>;
134
139
  completeCreation(
135
140
  request: ZLinkObjectCreationCompleteRequest,
136
141
  signal?: AbortSignal
137
142
  ): Promise<ZLinkObjectCreationCompleteResult>;
138
- abort(request: ZLinkObjectAbortRequest, signal?: AbortSignal): Promise<ZLinkObjectAbortResult>;
143
+ abort(
144
+ request: ZLinkObjectAbortRequest,
145
+ signal?: AbortSignal,
146
+ deadlineUnixMs?: bigint
147
+ ): Promise<ZLinkObjectAbortResult>;
139
148
 
140
149
  prepareAggregate(
141
150
  request: ZLinkAggregatePrepareRequest,
@@ -1,4 +1,13 @@
1
+ import {
2
+ AUTHORITY_ENVELOPE_MAX_BYTES,
3
+ CREATION_INTENT_MAX_BYTES,
4
+ CREATION_TERMINAL_ENVELOPE_MAX_BYTES
5
+ } from '../../contracts/Configuration/InternalDefaults';
6
+ import { UINT64_MAX } from '@zlink-systems/stream-wire';
7
+ import { ZLINK_MAX_ROUTING_ID_BYTES } from '../../contracts/Common/CoreTypes';
8
+ import { ZLINK_PROVIDER_MAX_PAGE_SIZE } from '../../contracts/Locations/Stores';
1
9
  import { randomUUID } from 'node:crypto';
10
+ import { SHA256_DIGEST_BYTES } from '../foundation/actor-join-recovery-codec';
2
11
  import type {
3
12
  ZLinkAggregateAbortResult,
4
13
  ZLinkAggregateCommitResult,
@@ -34,9 +43,9 @@ import { encodeAuthorityKey } from './authority-key-codec';
34
43
  import { creationTerminalPreimage } from './opaque-record-key';
35
44
 
36
45
  const MAX_GENERATION = 0x7fff_ffff_ffff_ffffn;
37
- const MAX_PAYLOAD_BYTES = 1024 * 1024;
46
+
38
47
  const CREATION_TERMINAL_RETENTION_MS = 5 * 60 * 1000;
39
- const MAX_U64 = 0xffff_ffff_ffff_ffffn;
48
+ const MAX_U64 = UINT64_MAX;
40
49
 
41
50
  export interface ZLinkInMemoryAuthorityValidation {
42
51
  isTargetLive(
@@ -190,10 +199,22 @@ export class ZLinkInMemoryAuthorityStore {
190
199
  if (!this.isOwnerLive(row.snapshot)) {
191
200
  return { kind: 'conflict', current: this.read(keyValue) };
192
201
  }
202
+ if (
203
+ mutation.generationTransition === 'reincarnate' &&
204
+ (this.objectGeneration >= MAX_GENERATION || this.ownerGeneration >= MAX_GENERATION)
205
+ ) {
206
+ return { kind: 'generationExhausted' };
207
+ }
193
208
  const nextVersion = this.tryNextStoreVersion();
194
209
  if (nextVersion === undefined) return { kind: 'generationExhausted' };
195
210
  row.snapshot = {
196
211
  ...row.snapshot,
212
+ ...(mutation.generationTransition === 'reincarnate'
213
+ ? {
214
+ objectGeneration: ++this.objectGeneration,
215
+ authorityOwnerGeneration: ++this.ownerGeneration
216
+ }
217
+ : {}),
197
218
  storeVersion: version(nextVersion),
198
219
  payload: Buffer.from(mutation.payload)
199
220
  };
@@ -208,8 +229,8 @@ export class ZLinkInMemoryAuthorityStore {
208
229
  signal?: AbortSignal
209
230
  ): Promise<ZLinkAuthorityScanResult> {
210
231
  signal?.throwIfAborted();
211
- if (!Number.isInteger(limit) || limit < 1 || limit > 1000) {
212
- throw new RangeError('Authority scan limit must be in 1..1000.');
232
+ if (!Number.isInteger(limit) || limit < 1 || limit > ZLINK_PROVIDER_MAX_PAGE_SIZE) {
233
+ throw new RangeError(`Authority scan limit must be in 1..${ZLINK_PROVIDER_MAX_PAGE_SIZE}.`);
213
234
  }
214
235
  const decoded =
215
236
  cursor === undefined
@@ -814,7 +835,7 @@ function validateAuthorityMutation(mutation: ZLinkAuthorityMutation): void {
814
835
  }
815
836
  const generationTransition = (mutation as { readonly generationTransition?: unknown })
816
837
  .generationTransition;
817
- if (generationTransition !== 'preserve') {
838
+ if (generationTransition !== 'preserve' && generationTransition !== 'reincarnate') {
818
839
  throw new TypeError('Authority owner transitions require an aggregate CAS.');
819
840
  }
820
841
  }
@@ -826,9 +847,9 @@ function validateReserve(request: ZLinkObjectReserveRequest): void {
826
847
  validatePayload(request.creatingPayload);
827
848
  validateCapacityVector(request.capacity);
828
849
  if (
829
- request.intent.requestSha256.byteLength !== 32 ||
850
+ request.intent.requestSha256.byteLength !== SHA256_DIGEST_BYTES ||
830
851
  request.intent.requestEncodedSize < 0n ||
831
- request.intent.requestEncodedSize > BigInt(MAX_PAYLOAD_BYTES)
852
+ request.intent.requestEncodedSize > BigInt(CREATION_INTENT_MAX_BYTES)
832
853
  ) {
833
854
  throw new TypeError('Object creation content receipt is invalid.');
834
855
  }
@@ -837,9 +858,13 @@ function validateReserve(request: ZLinkObjectReserveRequest): void {
837
858
  function validateCreationOperation(operation: ZLinkCreationOperationIdentity): void {
838
859
  const sourceRid = String(operation.sourceNodeRid);
839
860
  const sourceRidBytes = Buffer.byteLength(sourceRid, 'utf8');
840
- if (sourceRidBytes < 1 || sourceRidBytes > 255 || sourceRid.includes('\0')) {
861
+ if (
862
+ sourceRidBytes < 1 ||
863
+ sourceRidBytes > ZLINK_MAX_ROUTING_ID_BYTES ||
864
+ sourceRid.includes('\0')
865
+ ) {
841
866
  throw new TypeError(
842
- 'Creation terminal source node RID must contain 1..255 UTF-8 bytes without NUL.'
867
+ `Creation terminal source node RID must contain 1..${ZLINK_MAX_ROUTING_ID_BYTES} UTF-8 bytes without NUL.`
843
868
  );
844
869
  }
845
870
  if (
@@ -861,8 +886,10 @@ function validateTerminalForMutation(
861
886
  ): ZLinkCreationTerminalRecord | undefined {
862
887
  if (publication === undefined) return undefined;
863
888
  validateCreationOperation(publication.operation);
864
- if (publication.terminalEnvelope.byteLength > MAX_PAYLOAD_BYTES) {
865
- throw new RangeError('Creation terminal envelope must not exceed 1 MiB.');
889
+ if (publication.terminalEnvelope.byteLength > CREATION_TERMINAL_ENVELOPE_MAX_BYTES) {
890
+ throw new RangeError(
891
+ `Creation terminal envelope must not exceed ${CREATION_TERMINAL_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`
892
+ );
866
893
  }
867
894
  const deadlineMs = publication.operationDeadline.getTime();
868
895
  const expiresAtMs = deadlineMs + CREATION_TERMINAL_RETENTION_MS;
@@ -915,8 +942,8 @@ function validateAggregateRequest(request: ZLinkAggregatePrepareRequest): void {
915
942
  if (request.aggregateGeneration < 1n || request.participants.length < 1) {
916
943
  throw new RangeError('Aggregate generation and participant count are invalid.');
917
944
  }
918
- if (request.inventoryDigest.byteLength !== 32) {
919
- throw new TypeError('Aggregate inventory digest must contain 32 bytes.');
945
+ if (request.inventoryDigest.byteLength !== SHA256_DIGEST_BYTES) {
946
+ throw new TypeError(`Aggregate inventory digest must contain ${SHA256_DIGEST_BYTES} bytes.`);
920
947
  }
921
948
  validateCapacityVector(request.capacity);
922
949
  const keys = request.participants.map((participant) => participant.authorityKey.value);
@@ -927,8 +954,10 @@ function validateAggregateRequest(request: ZLinkAggregatePrepareRequest): void {
927
954
  }
928
955
 
929
956
  function validatePayload(payload: Uint8Array): void {
930
- if (payload.byteLength > MAX_PAYLOAD_BYTES) {
931
- throw new RangeError('Authority payload exceeds 1 MiB.');
957
+ if (payload.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES) {
958
+ throw new RangeError(
959
+ `Authority payload exceeds ${AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`
960
+ );
932
961
  }
933
962
  }
934
963
 
@@ -1,11 +1,33 @@
1
1
  import type { RoutingId } from '../../contracts/Common';
2
+ import { ZLINK_MAX_IDENTITY_TEXT_BYTES } from '../../contracts/Common/CoreTypes';
3
+ import {
4
+ isValidPublicWeight,
5
+ ZLINK_MAX_PUBLIC_WEIGHT
6
+ } from '../../contracts/Configuration/RegistrationBuilderPolicy';
7
+ import type {
8
+ ZLinkActorTransferPrepareRequest,
9
+ ZLinkActorTransferRecord,
10
+ ZLinkActorTransferState,
11
+ ZLinkActorTransferWriteResult
12
+ } from '../../contracts/Locations/ActorTransfer';
13
+ import {
14
+ matchesActorLocation,
15
+ matchesPeerLocation,
16
+ matchesRouteLocation,
17
+ matchesSpotLocation
18
+ } from '../../location-store-integration';
19
+ import { encodeAuthorityKey } from './authority-key-codec';
20
+ import type { ZLinkDomainLocationStore } from './domain-store-contract';
21
+ import { ZLinkInMemoryAuthorityStore } from './in-memory-authority-store';
2
22
  import {
3
- ZLinkLocationKind,
4
23
  ZLinkFrameworkRuntimeState,
24
+ ZLinkLocationKind,
5
25
  ZLinkLocationWriteIntent,
6
26
  ZLinkLocationWriteStatus,
7
27
  ZLinkObjectRole,
8
28
  type ZLinkActorLocation,
29
+ type ZLinkActorLocationFilter,
30
+ type ZLinkActorLocationKey,
9
31
  type ZLinkAggregateAbortResult,
10
32
  type ZLinkAggregateCommitResult,
11
33
  type ZLinkAggregateFence,
@@ -18,22 +40,18 @@ import {
18
40
  type ZLinkAuthorityScanCursor,
19
41
  type ZLinkAuthorityScanResult,
20
42
  type ZLinkAuthorityStoreVersion,
21
- type ZLinkActorLocationFilter,
22
- type ZLinkActorLocationKey,
43
+ type ZLinkClientServerServerDescriptor,
44
+ type ZLinkClientServerServerDescriptorKey,
45
+ type ZLinkCreationOperationIdentity,
46
+ type ZLinkCreationTerminalReadResult,
47
+ type ZLinkFanoutPublisherDescriptor,
48
+ type ZLinkFanoutPublisherDescriptorKey,
23
49
  type ZLinkLocationChangeStampScope,
24
50
  type ZLinkLocationOwnerToken,
25
51
  type ZLinkLocationPage,
26
52
  type ZLinkLocationWriteResult,
27
53
  type ZLinkMeshNodeDescriptor,
28
54
  type ZLinkMeshNodeDescriptorKey,
29
- type ZLinkClientServerServerDescriptor,
30
- type ZLinkClientServerServerDescriptorKey,
31
- type ZLinkFanoutPublisherDescriptor,
32
- type ZLinkFanoutPublisherDescriptorKey,
33
- type ZLinkOwnerLeaseClaimResult,
34
- type ZLinkOwnerLeaseReadResult,
35
- type ZLinkOwnerLeaseReleaseResult,
36
- type ZLinkOwnerLeaseRenewResult,
37
55
  type ZLinkObjectAbortRequest,
38
56
  type ZLinkObjectAbortResult,
39
57
  type ZLinkObjectCommitRequest,
@@ -42,8 +60,10 @@ import {
42
60
  type ZLinkObjectCreationCompleteResult,
43
61
  type ZLinkObjectReserveRequest,
44
62
  type ZLinkObjectReserveResult,
45
- type ZLinkCreationOperationIdentity,
46
- type ZLinkCreationTerminalReadResult,
63
+ type ZLinkOwnerLeaseClaimResult,
64
+ type ZLinkOwnerLeaseReadResult,
65
+ type ZLinkOwnerLeaseReleaseResult,
66
+ type ZLinkOwnerLeaseRenewResult,
47
67
  type ZLinkPageRequest,
48
68
  type ZLinkPeerLocation,
49
69
  type ZLinkPeerLocationFilter,
@@ -55,23 +75,11 @@ import {
55
75
  type ZLinkSpotLocationFilter,
56
76
  type ZLinkSpotLocationKey
57
77
  } from './internal-location-contracts';
58
- import type {
59
- ZLinkActorTransferPrepareRequest,
60
- ZLinkActorTransferRecord,
61
- ZLinkActorTransferState,
62
- ZLinkActorTransferWriteResult
63
- } from '../../contracts/Locations/ActorTransfer';
64
78
  import type { ZLinkFanoutLocationStore } from './internal-store-contracts';
65
- import type { ZLinkDomainLocationStore } from './domain-store-contract';
66
- import { ZLinkInMemoryAuthorityStore } from './in-memory-authority-store';
67
- import { encodeAuthorityKey } from './authority-key-codec';
68
79
  import { ZLinkLocationKeyCodec } from './key-codec';
69
- import {
70
- matchesActorLocation,
71
- matchesPeerLocation,
72
- matchesRouteLocation,
73
- matchesSpotLocation
74
- } from '../../location-store-integration';
80
+ const MAX_LOCATION_GENERATION = 0x7fff_ffff_ffff_ffffn;
81
+
82
+ const MAX_DESCRIPTOR_OBJECT_CAPABILITIES = 1024;
75
83
 
76
84
  export class ZLinkInMemoryLocationStore
77
85
  implements ZLinkDomainLocationStore, ZLinkFanoutLocationStore
@@ -955,7 +963,7 @@ export class ZLinkInMemoryLocationStore
955
963
  if (current !== undefined && current.leaseExpiresAt.getTime() > storeNow.getTime()) {
956
964
  return { kind: 'conflict' };
957
965
  }
958
- if (this.ownerLeaseGeneration >= 0x7fff_ffff_ffff_ffffn) {
966
+ if (this.ownerLeaseGeneration >= MAX_LOCATION_GENERATION) {
959
967
  return { kind: 'generationExhausted' };
960
968
  }
961
969
  const token = { ownerId, leaseGeneration: ++this.ownerLeaseGeneration };
@@ -1282,12 +1290,14 @@ function validateMeshNodeDescriptor(descriptor: ZLinkMeshNodeDescriptor): void {
1282
1290
  }
1283
1291
  if (descriptor.objectRole === ZLinkObjectRole.Server) {
1284
1292
  if (descriptor.entrySpotId !== undefined && !validDescriptorText(descriptor.entrySpotId)) {
1285
- throw new TypeError('MeshNode Entry Spot ID must contain 1..255 UTF-8 bytes.');
1293
+ throw new TypeError(
1294
+ `MeshNode Entry Spot ID must contain 1..${ZLINK_MAX_IDENTITY_TEXT_BYTES} UTF-8 bytes.`
1295
+ );
1286
1296
  }
1287
1297
  } else if (descriptor.entrySpotId !== undefined) {
1288
1298
  throw new TypeError('Only Object Server descriptors may publish an Entry Spot ID.');
1289
1299
  }
1290
- const maxGeneration = 0x7fff_ffff_ffff_ffffn;
1300
+ const maxGeneration = MAX_LOCATION_GENERATION;
1291
1301
  if (
1292
1302
  descriptor.lifecycleGeneration < 1n ||
1293
1303
  descriptor.lifecycleGeneration > maxGeneration ||
@@ -1320,9 +1330,8 @@ function validateMeshNodeDescriptor(descriptor: ZLinkMeshNodeDescriptor): void {
1320
1330
  !Number.isSafeInteger(descriptor.activationConcurrency.limit) ||
1321
1331
  descriptor.activationConcurrency.limit < 1 ||
1322
1332
  descriptor.activationConcurrency.active > descriptor.activationConcurrency.limit ||
1323
- descriptor.placementWeight < 0 ||
1324
- descriptor.placementWeight > 10_000 ||
1325
- descriptor.objectCapabilities.length > 1024 ||
1333
+ !isValidPublicWeight(descriptor.placementWeight) ||
1334
+ descriptor.objectCapabilities.length > MAX_DESCRIPTOR_OBJECT_CAPABILITIES ||
1326
1335
  (descriptor.objectRole !== ZLinkObjectRole.Server && descriptor.objectCapabilities.length !== 0)
1327
1336
  ) {
1328
1337
  throw new RangeError('MeshNode object capacity is invalid.');
@@ -1350,7 +1359,7 @@ function validateMeshNodeDescriptor(descriptor: ZLinkMeshNodeDescriptor): void {
1350
1359
 
1351
1360
  function validDescriptorText(value: string): boolean {
1352
1361
  const size = Buffer.byteLength(value, 'utf8');
1353
- return size >= 1 && size <= 255 && !value.includes('\0');
1362
+ return size >= 1 && size <= ZLINK_MAX_IDENTITY_TEXT_BYTES && !value.includes('\0');
1354
1363
  }
1355
1364
 
1356
1365
  function meshNodeImmutableFingerprint(descriptor: ZLinkMeshNodeDescriptor): string {
@@ -1436,7 +1445,7 @@ function validateClientServerDescriptor(descriptor: ZLinkClientServerServerDescr
1436
1445
  ) {
1437
1446
  throw new TypeError('ClientServer descriptor identity and endpoint are required.');
1438
1447
  }
1439
- const maxGeneration = 0x7fff_ffff_ffff_ffffn;
1448
+ const maxGeneration = MAX_LOCATION_GENERATION;
1440
1449
  if (
1441
1450
  descriptor.lifecycleGeneration < 1n ||
1442
1451
  descriptor.lifecycleGeneration > maxGeneration ||
@@ -1447,8 +1456,10 @@ function validateClientServerDescriptor(descriptor: ZLinkClientServerServerDescr
1447
1456
  ) {
1448
1457
  throw new RangeError('ClientServer descriptor generations are invalid.');
1449
1458
  }
1450
- if (!Number.isInteger(descriptor.weight) || descriptor.weight < 0 || descriptor.weight > 10_000) {
1451
- throw new RangeError('ClientServer descriptor weight must be an integer in 0..10000.');
1459
+ if (!isValidPublicWeight(descriptor.weight)) {
1460
+ throw new RangeError(
1461
+ `ClientServer descriptor weight must be an integer in 0..${ZLINK_MAX_PUBLIC_WEIGHT}.`
1462
+ );
1452
1463
  }
1453
1464
  }
1454
1465
 
@@ -1483,7 +1494,7 @@ function validateFanoutPublisherDescriptor(descriptor: ZLinkFanoutPublisherDescr
1483
1494
  ) {
1484
1495
  throw new TypeError('Fanout publisher descriptor identity and endpoint are required.');
1485
1496
  }
1486
- const maxGeneration = 0x7fff_ffff_ffff_ffffn;
1497
+ const maxGeneration = MAX_LOCATION_GENERATION;
1487
1498
  if (
1488
1499
  descriptor.lifecycleGeneration < 1n ||
1489
1500
  descriptor.lifecycleGeneration > maxGeneration ||