@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
@@ -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 ||