@zlink-systems/framework 0.26.0 → 0.28.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 (561) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
  3. package/dist/contracts/Channels/Calls.d.ts +1 -1
  4. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  5. package/dist/contracts/Common/CoreTypes.js +7 -0
  6. package/dist/contracts/Common/index.d.ts +1 -1
  7. package/dist/contracts/Common/index.js +0 -1
  8. package/dist/contracts/Configuration/Builders.d.ts +0 -1
  9. package/dist/contracts/Configuration/Configs.d.ts +0 -1
  10. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  11. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  12. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  13. package/dist/contracts/Configuration/Registration.js +58 -36
  14. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  15. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  16. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  17. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  18. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
  19. package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
  20. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  21. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  22. package/dist/contracts/Handlers/JsonContract.js +10 -4
  23. package/dist/contracts/Locations/Authority.d.ts +1 -1
  24. package/dist/contracts/Locations/Authority.js +3 -2
  25. package/dist/contracts/Locations/Options.js +1 -1
  26. package/dist/contracts/Locations/Stores.d.ts +12 -0
  27. package/dist/contracts/Locations/Stores.js +9 -0
  28. package/dist/contracts/Spots/Contracts.d.ts +2 -2
  29. package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
  30. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
  31. package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
  32. package/dist/internal.d.ts +4 -0
  33. package/dist/internal.js +15 -1
  34. package/dist/nest-integration.d.ts +4 -2
  35. package/dist/nest-integration.js +14 -4
  36. package/dist/runtime/abort.d.ts +1 -0
  37. package/dist/runtime/abort.js +8 -5
  38. package/dist/runtime/activation-admission.d.ts +1 -2
  39. package/dist/runtime/activation-admission.js +2 -6
  40. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  41. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  42. package/dist/runtime/actors/actor-client.d.ts +2 -2
  43. package/dist/runtime/actors/actor-client.js +49 -153
  44. package/dist/runtime/actors/actor-context.d.ts +3 -5
  45. package/dist/runtime/actors/actor-context.js +13 -11
  46. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  47. package/dist/runtime/actors/actor-handoff.js +8 -8
  48. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  49. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  50. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  51. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  52. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  53. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  54. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  55. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  56. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  57. package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
  58. package/dist/runtime/actors/actor-request-deadline.js +6 -0
  59. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  60. package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
  61. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  62. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  63. package/dist/runtime/actors/bound-session-wire.js +2 -7
  64. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  65. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  66. package/dist/runtime/actors/index.d.ts +9 -7
  67. package/dist/runtime/actors/index.js +87 -69
  68. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  69. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  70. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  71. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  72. package/dist/runtime/admission.d.ts +2 -0
  73. package/dist/runtime/admission.js +7 -1
  74. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  75. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  76. package/dist/runtime/backend/contracts/index.d.ts +7 -27
  77. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  78. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  79. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  80. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
  81. package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
  82. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  83. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
  84. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  85. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  86. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  87. package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
  88. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  89. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  90. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  91. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  92. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  93. package/dist/runtime/backend/runtime-values.js +2 -0
  94. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  95. package/dist/runtime/channels/channel-clients.js +73 -59
  96. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  97. package/dist/runtime/channels/channel-envelope.d.ts +1 -1
  98. package/dist/runtime/channels/channel-envelope.js +51 -39
  99. package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
  100. package/dist/runtime/channels/channel-outbound-operations.js +25 -42
  101. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  102. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  103. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  104. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  105. package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
  106. package/dist/runtime/channels/channel-runtime-manager.js +13 -10
  107. package/dist/runtime/channels/channel-socket-options.js +3 -12
  108. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  109. package/dist/runtime/channels/channel-socket-registry.js +240 -177
  110. package/dist/runtime/channels/channel-transports.d.ts +21 -31
  111. package/dist/runtime/channels/channel-transports.js +80 -62
  112. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  113. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  114. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  115. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  116. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  117. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  118. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  119. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  120. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  121. package/dist/runtime/channels/local-spot-route-transport.js +1 -3
  122. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
  123. package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
  124. package/dist/runtime/channels/source-spot-router.d.ts +1 -1
  125. package/dist/runtime/channels/source-spot-router.js +2 -4
  126. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  127. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  128. package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
  129. package/dist/runtime/channels/spot-node-route-transport.js +5 -5
  130. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
  131. package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
  132. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
  133. package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
  134. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  135. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  136. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  137. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  138. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  139. package/dist/runtime/diagnostics/flow-context.js +16 -2
  140. package/dist/runtime/diagnostics/index.d.ts +4 -2
  141. package/dist/runtime/diagnostics/index.js +14 -4
  142. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  143. package/dist/runtime/diagnostics/message-flow.js +10 -19
  144. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  145. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  146. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  147. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  148. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  149. package/dist/runtime/disposal.d.ts +5 -0
  150. package/dist/runtime/disposal.js +22 -0
  151. package/dist/runtime/execution/index.d.ts +12 -9
  152. package/dist/runtime/execution/index.js +58 -14
  153. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  154. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  155. package/dist/runtime/execution/state-lane.d.ts +8 -1
  156. package/dist/runtime/execution/state-lane.js +118 -3
  157. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  158. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  159. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  160. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  161. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  162. package/dist/runtime/foundation/operation-identity.js +9 -5
  163. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  164. package/dist/runtime/foundation/operation-registry.js +34 -44
  165. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  166. package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
  167. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  168. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  169. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  170. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  171. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  172. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  173. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  174. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  175. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  176. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  177. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  178. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  179. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  180. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  181. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  182. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  183. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  184. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  185. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  186. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  187. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  188. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  189. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  190. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  191. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  192. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  193. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  194. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  195. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  196. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  197. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  198. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  199. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  200. package/dist/runtime/framework-errors-internal.js +343 -122
  201. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  202. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  203. package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
  204. package/dist/runtime/host/actor-packet-relay.js +54 -99
  205. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  206. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  207. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  208. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  209. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  210. package/dist/runtime/host/application-job-queue.js +16 -33
  211. package/dist/runtime/host/bound-session-relay.js +1 -1
  212. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  213. package/dist/runtime/host/index.d.ts +14 -13
  214. package/dist/runtime/host/index.js +190 -171
  215. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  216. package/dist/runtime/host/instance-activation-authority.js +17 -45
  217. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  218. package/dist/runtime/host/location-runtime-owner.js +2 -2
  219. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  220. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  221. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  222. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  223. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  224. package/dist/runtime/host/remote-bound-session-relay.js +15 -28
  225. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  226. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  227. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  228. package/dist/runtime/host/runtime-shutdown.js +18 -21
  229. package/dist/runtime/host/service-relocation-control.js +6 -1
  230. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  231. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  232. package/dist/runtime/host/spot-address-transport.d.ts +3 -12
  233. package/dist/runtime/host/spot-address-transport.js +78 -220
  234. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  235. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  236. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  237. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  238. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  239. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  240. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  241. package/dist/runtime/locations/authority-key-codec.js +4 -3
  242. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  243. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  244. package/dist/runtime/locations/creation-operation-id.js +6 -4
  245. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  246. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  247. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  248. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  249. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  250. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  251. package/dist/runtime/locations/key-codec.js +3 -2
  252. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  253. package/dist/runtime/locations/lease-tracker.js +7 -11
  254. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  255. package/dist/runtime/locations/lifecycle.js +2 -31
  256. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  257. package/dist/runtime/locations/location-store-failure.js +7 -0
  258. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  259. package/dist/runtime/locations/location-store-pages.js +13 -0
  260. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  261. package/dist/runtime/locations/location-store-repository.js +309 -336
  262. package/dist/runtime/locations/relocation-blob.js +18 -5
  263. package/dist/runtime/locations/resolvers.d.ts +5 -5
  264. package/dist/runtime/locations/resolvers.js +37 -28
  265. package/dist/runtime/locations/runtime.d.ts +5 -4
  266. package/dist/runtime/locations/runtime.js +123 -92
  267. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  268. package/dist/runtime/locations/spot-location-claims.js +42 -1
  269. package/dist/runtime/messaging/payload-codec.js +26 -20
  270. package/dist/runtime/messaging/request-deadline.d.ts +3 -0
  271. package/dist/runtime/messaging/request-deadline.js +39 -0
  272. package/dist/runtime/messaging/submission-result.d.ts +4 -0
  273. package/dist/runtime/messaging/submission-result.js +56 -1
  274. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  275. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  276. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  277. package/dist/runtime/spots/index.d.ts +14 -20
  278. package/dist/runtime/spots/index.js +302 -176
  279. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  280. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  281. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  282. package/dist/runtime/spots/spot-activation-state.js +2 -2
  283. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  284. package/dist/runtime/spots/spot-activation.js +49 -32
  285. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  286. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  287. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  288. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  289. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  290. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  291. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  292. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  293. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  294. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  295. package/dist/runtime/spots/spot-context.d.ts +2 -2
  296. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  297. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  298. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  299. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  300. package/dist/runtime/spots/spot-manager-public.js +5 -4
  301. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  302. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  303. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  304. package/dist/runtime/spots/spot-outbound.d.ts +7 -8
  305. package/dist/runtime/spots/spot-outbound.js +21 -23
  306. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  307. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  308. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  309. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  310. package/dist/runtime/spots/spot-route-replies.js +3 -1
  311. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  312. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  313. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  314. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  315. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  316. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  317. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  318. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  319. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  320. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  321. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  322. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  323. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  324. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  325. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
  326. package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
  327. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  328. package/dist/runtime/streams/bound-session-service.js +12 -2
  329. package/dist/runtime/streams/index.d.ts +16 -17
  330. package/dist/runtime/streams/index.js +22 -23
  331. package/dist/runtime/streams/managed-stream.d.ts +5 -2
  332. package/dist/runtime/streams/managed-stream.js +20 -13
  333. package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
  334. package/dist/runtime/streams/protocol.d.ts +6 -33
  335. package/dist/runtime/streams/protocol.js +38 -110
  336. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  337. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  338. package/dist/runtime/streams/session-calls.d.ts +6 -8
  339. package/dist/runtime/streams/session-calls.js +6 -22
  340. package/dist/runtime/streams/session-context.d.ts +10 -10
  341. package/dist/runtime/streams/session-context.js +25 -10
  342. package/dist/runtime/streams/session-requests.js +2 -1
  343. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  344. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  345. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  346. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  347. package/dist/runtime/workers/index.d.ts +2 -2
  348. package/dist/runtime/workers/index.js +5 -4
  349. package/package.json +3 -3
  350. package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
  351. package/src/contracts/Channels/Calls.ts +1 -1
  352. package/src/contracts/Common/CoreTypes.ts +7 -0
  353. package/src/contracts/Common/index.ts +1 -1
  354. package/src/contracts/Configuration/Builders.ts +0 -1
  355. package/src/contracts/Configuration/Configs.ts +0 -1
  356. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  357. package/src/contracts/Configuration/Registration.ts +92 -48
  358. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  359. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
  360. package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
  361. package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
  362. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  363. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  364. package/src/contracts/Handlers/JsonContract.ts +14 -4
  365. package/src/contracts/Locations/Authority.ts +7 -3
  366. package/src/contracts/Locations/Options.ts +1 -1
  367. package/src/contracts/Locations/Stores.ts +14 -0
  368. package/src/contracts/Spots/Contracts.ts +2 -2
  369. package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
  370. package/src/contracts/Streams/IZLinkSession.ts +2 -3
  371. package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
  372. package/src/internal.ts +14 -0
  373. package/src/nest-integration.ts +28 -10
  374. package/src/runtime/abort.ts +6 -5
  375. package/src/runtime/activation-admission.ts +2 -8
  376. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  377. package/src/runtime/actors/actor-client.ts +85 -218
  378. package/src/runtime/actors/actor-context.ts +39 -33
  379. package/src/runtime/actors/actor-handoff.ts +24 -22
  380. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  381. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  382. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  383. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  384. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  385. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  386. package/src/runtime/actors/actor-request-deadline.ts +4 -0
  387. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  388. package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
  389. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  390. package/src/runtime/actors/bound-session-wire.ts +2 -8
  391. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  392. package/src/runtime/actors/index.ts +100 -79
  393. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  394. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  395. package/src/runtime/admission.ts +8 -1
  396. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  397. package/src/runtime/backend/contracts/index.ts +14 -37
  398. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  399. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  400. package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
  401. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
  402. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  403. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  404. package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
  405. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  406. package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
  407. package/src/runtime/backend/raw-binding-port.ts +1 -1
  408. package/src/runtime/backend/runtime-values.ts +4 -1
  409. package/src/runtime/channels/channel-clients.ts +139 -102
  410. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  411. package/src/runtime/channels/channel-envelope.ts +74 -57
  412. package/src/runtime/channels/channel-outbound-operations.ts +40 -55
  413. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  414. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  415. package/src/runtime/channels/channel-runtime-manager.ts +12 -30
  416. package/src/runtime/channels/channel-socket-options.ts +8 -15
  417. package/src/runtime/channels/channel-socket-registry.ts +291 -196
  418. package/src/runtime/channels/channel-transports.ts +168 -145
  419. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  420. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  421. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  422. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  423. package/src/runtime/channels/local-spot-route-transport.ts +1 -5
  424. package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
  425. package/src/runtime/channels/source-spot-router.ts +2 -9
  426. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  427. package/src/runtime/channels/spot-node-route-transport.ts +7 -9
  428. package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
  429. package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
  430. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  431. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  432. package/src/runtime/diagnostics/flow-context.ts +16 -2
  433. package/src/runtime/diagnostics/index.ts +27 -17
  434. package/src/runtime/diagnostics/message-flow.ts +15 -25
  435. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  436. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  437. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  438. package/src/runtime/disposal.ts +19 -0
  439. package/src/runtime/execution/index.ts +60 -20
  440. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  441. package/src/runtime/execution/state-lane.ts +142 -4
  442. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  443. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  444. package/src/runtime/foundation/operation-identity.ts +11 -5
  445. package/src/runtime/foundation/operation-registry.ts +33 -50
  446. package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
  447. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  448. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  449. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  450. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  451. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  452. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  453. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  454. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  455. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  456. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  457. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  458. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  459. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  460. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  461. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  462. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  463. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  464. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  465. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  466. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  467. package/src/runtime/framework-errors-internal.ts +380 -134
  468. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  469. package/src/runtime/host/actor-packet-relay.ts +63 -160
  470. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  471. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  472. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  473. package/src/runtime/host/application-job-queue.ts +28 -34
  474. package/src/runtime/host/bound-session-relay.ts +1 -2
  475. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  476. package/src/runtime/host/index.ts +327 -320
  477. package/src/runtime/host/instance-activation-authority.ts +89 -109
  478. package/src/runtime/host/location-runtime-owner.ts +4 -2
  479. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  480. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  481. package/src/runtime/host/remote-bound-session-relay.ts +16 -57
  482. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  483. package/src/runtime/host/runtime-shutdown.ts +17 -21
  484. package/src/runtime/host/service-relocation-control.ts +14 -1
  485. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  486. package/src/runtime/host/spot-address-transport.ts +175 -356
  487. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  488. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  489. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  490. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  491. package/src/runtime/locations/authority-key-codec.ts +7 -3
  492. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  493. package/src/runtime/locations/creation-operation-id.ts +6 -3
  494. package/src/runtime/locations/domain-store-contract.ts +12 -3
  495. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  496. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  497. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  498. package/src/runtime/locations/key-codec.ts +3 -2
  499. package/src/runtime/locations/lease-tracker.ts +8 -14
  500. package/src/runtime/locations/lifecycle.ts +13 -43
  501. package/src/runtime/locations/location-store-failure.ts +4 -0
  502. package/src/runtime/locations/location-store-pages.ts +18 -0
  503. package/src/runtime/locations/location-store-repository.ts +457 -482
  504. package/src/runtime/locations/relocation-blob.ts +17 -6
  505. package/src/runtime/locations/resolvers.ts +75 -49
  506. package/src/runtime/locations/runtime.ts +220 -110
  507. package/src/runtime/locations/spot-location-claims.ts +58 -1
  508. package/src/runtime/messaging/payload-codec.ts +35 -24
  509. package/src/runtime/messaging/request-deadline.ts +58 -0
  510. package/src/runtime/messaging/submission-result.ts +72 -2
  511. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  512. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  513. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  514. package/src/runtime/spots/index.ts +433 -229
  515. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  516. package/src/runtime/spots/spot-activation-state.ts +2 -2
  517. package/src/runtime/spots/spot-activation.ts +67 -37
  518. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  519. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  520. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  521. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  522. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  523. package/src/runtime/spots/spot-context.ts +3 -3
  524. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  525. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  526. package/src/runtime/spots/spot-manager-public.ts +21 -17
  527. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  528. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  529. package/src/runtime/spots/spot-outbound.ts +59 -47
  530. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  531. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  532. package/src/runtime/spots/spot-route-replies.ts +6 -4
  533. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  534. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  535. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  536. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  537. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  538. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  539. package/src/runtime/spots/spot-timer.ts +3 -2
  540. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  541. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  542. package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
  543. package/src/runtime/streams/bound-session-service.ts +22 -2
  544. package/src/runtime/streams/index.ts +78 -68
  545. package/src/runtime/streams/managed-stream.ts +32 -23
  546. package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
  547. package/src/runtime/streams/protocol.ts +34 -88
  548. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  549. package/src/runtime/streams/session-calls.ts +11 -36
  550. package/src/runtime/streams/session-context.ts +60 -25
  551. package/src/runtime/streams/session-requests.ts +2 -1
  552. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  553. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  554. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  555. package/src/runtime/workers/index.ts +13 -12
  556. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  557. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  558. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  559. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  560. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  561. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -51,7 +51,8 @@ export interface ZLinkSpotNodeRuntimeOptionsFactoryOptions {
51
51
  export class ZLinkSpotNodeRuntimeOptionsFactory {
52
52
  constructor(private readonly options: ZLinkSpotNodeRuntimeOptionsFactoryOptions) {}
53
53
 
54
- create(): ZLinkSpotNodeRuntimeManagerOptions {
54
+ create(): Omit<ZLinkSpotNodeRuntimeManagerOptions, 'errorSink'> {
55
+ const spotRouterChannelIdForMesh = this.options.meshRouters.spotRouterChannelIdByMesh();
55
56
  return {
56
57
  registration: this.options.registration,
57
58
  primaryMeshName: this.options.meshRouters.primaryMeshName(),
@@ -59,7 +60,9 @@ export class ZLinkSpotNodeRuntimeOptionsFactory {
59
60
  context: this.options.context,
60
61
  channelClient: new DefaultZLinkChannelClient(
61
62
  this.options.registration,
62
- this.options.channelTransport
63
+ this.options.channelTransport,
64
+ this.options.routeTransport,
65
+ spotRouterChannelIdForMesh
63
66
  ),
64
67
  fanoutClient: new DefaultZLinkFanoutClient(
65
68
  this.options.registration,
@@ -70,7 +73,7 @@ export class ZLinkSpotNodeRuntimeOptionsFactory {
70
73
  this.options.spotPublisherTransport
71
74
  ),
72
75
  routedTransport: this.options.routeTransport,
73
- spotRouterChannelIdForMesh: this.options.meshRouters.spotRouterChannelIdByMesh(),
76
+ spotRouterChannelIdForMesh,
74
77
  providerResolver: this.options.providerResolver,
75
78
  dispatchErrors: this.options.dispatchErrors,
76
79
  runtimeEventPublisher: this.options.runtimeEventPublisher,
@@ -51,18 +51,24 @@ export interface ZLinkSpotRuntimeOptionsFactoryOptions {
51
51
  meshName: string,
52
52
  spotId: string,
53
53
  onCommitted: () => void
54
- ) => Promise<{ release(): Promise<void> } | undefined>;
54
+ ) => Promise<
55
+ import('../locations/spot-location-claims').ZLinkInstanceClosingAuthority | undefined
56
+ >;
55
57
  readonly beginInstanceClosingAuthority: (
56
58
  meshName: string,
57
59
  spotId: string,
58
60
  onCommitted: () => void
59
- ) => Promise<{ release(): Promise<void> } | undefined>;
61
+ ) => Promise<
62
+ import('../locations/spot-location-claims').ZLinkInstanceClosingAuthority | undefined
63
+ >;
60
64
  readonly beginUserClosingAuthority: (
61
65
  meshName: string,
62
66
  spotId: string,
63
67
  objectGeneration: bigint,
64
68
  onCommitted: () => void
65
- ) => Promise<{ release(): Promise<void> } | undefined>;
69
+ ) => Promise<
70
+ import('../locations/spot-location-claims').ZLinkInstanceClosingAuthority | undefined
71
+ >;
66
72
  readonly createLocationSpotRouteResolver: () => ZLinkSpotRouteResolver | undefined;
67
73
  readonly boundSessionRelay: ZLinkBoundSessionRelay;
68
74
  readonly actorHandoff: ZLinkActorHandoffCoordinator;
@@ -71,13 +77,14 @@ export interface ZLinkSpotRuntimeOptionsFactoryOptions {
71
77
  readonly detachedTaskRunner: ZLinkDetachedTaskRunner;
72
78
  readonly metrics: import('../diagnostics').ZLinkRuntimeMetrics;
73
79
  readonly admission: ZLinkRuntimeAdmissionGate;
74
- readonly statefulExecutionAllowed: () => boolean;
80
+ readonly statefulExecution: NonNullable<ZLinkSpotManagerOptions['statefulExecution']>;
75
81
  }
76
82
 
77
83
  export class ZLinkSpotRuntimeOptionsFactory {
78
84
  constructor(private readonly options: ZLinkSpotRuntimeOptionsFactoryOptions) {}
79
85
 
80
86
  create(actorTransferRuntime: ZLinkActorTransferRuntime): Partial<ZLinkSpotManagerOptions> {
87
+ const spotRouterChannelIdForMesh = this.options.meshRouters.spotRouterChannelIdByMesh();
81
88
  return {
82
89
  nodeRid: undefined,
83
90
  nodeRidProvider: (meshName) => this.meshNodeRoutingId(meshName),
@@ -128,9 +135,20 @@ export class ZLinkSpotRuntimeOptionsFactory {
128
135
  }
129
136
  await runtime.dispatchEntryActorJoin(meshName, actor, handoffBacklog);
130
137
  },
138
+ executeEntryActor: (meshName, actorId, operation) => {
139
+ const runtime = this.options.spotNodeRuntime();
140
+ if (runtime === undefined) {
141
+ throw new ZLinkConfigurationException(
142
+ 'Entry Spot Actor completion requires the MeshNode runtime.'
143
+ );
144
+ }
145
+ return runtime.executeEntryActor(meshName, actorId, operation);
146
+ },
131
147
  channelClient: new DefaultZLinkChannelClient(
132
148
  this.options.registration,
133
- this.options.channelTransport
149
+ this.options.channelTransport,
150
+ this.options.routeTransport,
151
+ spotRouterChannelIdForMesh
134
152
  ),
135
153
  fanoutClient: new DefaultZLinkFanoutClient(
136
154
  this.options.registration,
@@ -142,15 +160,7 @@ export class ZLinkSpotRuntimeOptionsFactory {
142
160
  ),
143
161
  routedTransport: this.options.routeTransport,
144
162
  addressTransport: this.options.addressTransport,
145
- spotRouterChannelIdForMesh: this.options.meshRouters.spotRouterChannelIdByMesh(),
146
- channelMeshNameForChannel: (channelName) => {
147
- const matches = [...this.options.registration.spotNodes.entries()]
148
- .filter(([, node]) =>
149
- Object.prototype.hasOwnProperty.call(node.meshChannels ?? {}, channelName)
150
- )
151
- .map(([meshName]) => meshName);
152
- return matches.length === 1 ? matches[0] : undefined;
153
- },
163
+ spotRouterChannelIdForMesh,
154
164
  messageSerializers: this.options.registration.messageSerializers,
155
165
  runtimeEventPublisher: this.options.runtimeEventPublisher,
156
166
  detachedTaskRunner: this.options.detachedTaskRunner,
@@ -159,8 +169,54 @@ export class ZLinkSpotRuntimeOptionsFactory {
159
169
  this.options.releaseInstanceAuthority(meshName, String(spotId), objectGeneration),
160
170
  beginInstanceIdleClosingAuthority: (meshName, spotId, onCommitted) =>
161
171
  this.options.beginInstanceIdleClosingAuthority(meshName, String(spotId), onCommitted),
162
- beginInstanceClosingAuthority: (meshName, spotId, onCommitted) =>
163
- this.options.beginInstanceClosingAuthority(meshName, String(spotId), onCommitted),
172
+ beginInstanceClosingAuthority: async (meshName, spotId, onCommitted, objectGeneration) => {
173
+ const authority = await this.options.beginInstanceClosingAuthority(
174
+ meshName,
175
+ String(spotId),
176
+ onCommitted
177
+ );
178
+ if (authority === undefined) return undefined;
179
+ // A Close without Reincarnate ends this incarnation. The Instance authority
180
+ // release also forgets the node's Ready projection, so a request on a cached
181
+ // Ready route is refused instead of rematerializing the closed generation.
182
+ const release = () =>
183
+ this.options.releaseInstanceAuthority(meshName, String(spotId), objectGeneration);
184
+ if (authority.reincarnate === undefined) return { release };
185
+ return {
186
+ release,
187
+ reincarnate: async (initialize) => {
188
+ const current = await authority.reincarnate!(initialize);
189
+ const node = this.options.spotNodeRuntime()?.meshNode(meshName);
190
+ const route = {
191
+ targetSpotId: String(spotId),
192
+ targetNodeRid: String(current.allocation.descriptor.rid),
193
+ targetNodeGeneration: current.allocation.descriptorLifecycleGeneration,
194
+ objectGeneration: current.objectGeneration,
195
+ authorityOwnerGeneration: current.authorityOwnerGeneration,
196
+ ownerId: current.ownerId,
197
+ leaseGeneration: current.ownerLeaseGeneration,
198
+ storeVersion: current.storeVersion.value
199
+ };
200
+ node?.restoreSpotAuthority?.(
201
+ String(spotId),
202
+ 'instance_spot',
203
+ current.stableType,
204
+ current.objectGeneration,
205
+ current.authorityOwnerGeneration
206
+ );
207
+ node?.registerInstanceIntent?.(current.stableType, route);
208
+ node?.rememberSpotRoute?.({
209
+ spot: { spotId: String(spotId), generation: current.objectGeneration },
210
+ targetNodeRid: route.targetNodeRid,
211
+ targetNodeGeneration: route.targetNodeGeneration,
212
+ authorityOwnerGeneration: route.authorityOwnerGeneration,
213
+ ownerLeaseGeneration: route.leaseGeneration,
214
+ storeVersion: route.storeVersion
215
+ });
216
+ return current;
217
+ }
218
+ };
219
+ },
164
220
  beginUserClosingAuthority: (meshName, spotId, objectGeneration, onCommitted) =>
165
221
  this.options.beginUserClosingAuthority(
166
222
  meshName,
@@ -274,17 +330,12 @@ export class ZLinkSpotRuntimeOptionsFactory {
274
330
  ZLinkSpotRelocationCoordinationMode.FrameworkManaged
275
331
  );
276
332
  },
277
- actorBindingGenerationObserver: (actorId, generation) =>
278
- this.options
279
- .actorManager()
280
- ?.getState(actorId)
281
- ?.setBoundSessionBindingGeneration(generation),
282
333
  actorTransferRuntime,
283
334
  boundSessionRuntime: this.options.boundSessionRelay.boundSessions,
284
335
  actorHandoffRuntime: this.options.actorHandoff,
285
336
  metrics: this.options.metrics,
286
337
  admission: this.options.admission,
287
- statefulExecutionAllowed: this.options.statefulExecutionAllowed,
338
+ statefulExecution: this.options.statefulExecution,
288
339
  closeErrorSink: this.options.runtimeOrPreStartErrorSink,
289
340
  dispatchErrors: this.options.dispatchErrorReporter(this.options.runtimeOrPreStartErrorSink)
290
341
  };
@@ -1,10 +1,29 @@
1
+ import { createHash } from 'node:crypto';
2
+ import {
3
+ type RoutingId,
4
+ type SpotRef,
5
+ type ZLinkSpotCreateResult,
6
+ ZLinkFrameworkException,
7
+ ZLinkSpotCreateState
8
+ } from '../../contracts';
9
+
10
+ import {
11
+ decodeServiceClosingSpotAuthority,
12
+ decodeServiceReadySpotAuthority,
13
+ encodeServiceUserSpotAuthorityPayload
14
+ } from '../foundation/service-authority-payload-codec';
15
+ import type { ServiceUserSpotOperationResult } from '../foundation/service-stateful-runtime';
16
+ import type {
17
+ ServiceDirectSpotRouteFence,
18
+ ServiceUserSpotCloseRecord,
19
+ ServiceUserSpotCreateRecord
20
+ } from '../foundation/service-stateful-wire-codec';
1
21
  import {
2
22
  ZLinkFrameworkInternalErrorKind,
3
23
  createInternalFrameworkException,
4
24
  wireReplyFailureException
5
25
  } from '../framework-errors-internal';
6
- import { createHash } from 'node:crypto';
7
- import type { RoutingId, SpotRef, ZLinkSpotCreateResult } from '../../contracts';
26
+ import { encodeAuthorityKey } from '../locations/authority-key-codec';
8
27
  import type {
9
28
  ZLinkAuthoritySnapshot,
10
29
  ZLinkLocationOwnerToken,
@@ -14,20 +33,9 @@ import type {
14
33
  ZLinkAuthorityStore,
15
34
  ZLinkObjectCreationStore
16
35
  } from '../locations/internal-store-contracts';
17
- import { ZLinkFrameworkException, ZLinkSpotCreateState } from '../../contracts';
18
- import {
19
- decodeServiceReadySpotAuthority,
20
- decodeServiceClosingSpotAuthority,
21
- encodeServiceUserSpotAuthorityPayload
22
- } from '../foundation/service-authority-payload-codec';
23
- import { encodeAuthorityKey } from '../locations/authority-key-codec';
24
36
  import type { ZLinkLocalSpotCreateResult } from '../spots/spot-manager-internal-contracts';
25
- import type { ServiceUserSpotOperationResult } from '../foundation/service-stateful-runtime';
26
- import type {
27
- ServiceUserSpotCloseRecord,
28
- ServiceUserSpotCreateRecord,
29
- ServiceDirectSpotRouteFence
30
- } from '../foundation/service-stateful-wire-codec';
37
+ const DEFAULT_USER_SPOT_CLEANUP_TIMEOUT_MS = 1_000;
38
+ const DEFAULT_USER_SPOT_POLL_INTERVAL_MS = 10;
31
39
 
32
40
  export interface ZLinkUserSpotCreationCoordinatorOptions {
33
41
  readonly store: ZLinkObjectCreationStore & ZLinkAuthorityStore;
@@ -109,9 +117,10 @@ export class ZLinkUserSpotCreationCoordinator {
109
117
  ) => Promise<ZLinkLocalSpotCreateResult>,
110
118
  discard?: (signal?: AbortSignal) => Promise<void>
111
119
  ): Promise<ZLinkUserSpotCreationResult> {
112
- const deadline = createDeadline(request.timeoutMs, request.signal);
113
- const deadlineMs = performance.now() + request.timeoutMs;
114
120
  const deadlineUnixMs = Date.now() + request.timeoutMs;
121
+ const remainingMs = Math.max(0, deadlineUnixMs - Date.now());
122
+ const deadline = createDeadline(remainingMs, request.signal);
123
+ const deadlineMs = performance.now() + remainingMs;
115
124
  const signal = deadline.signal;
116
125
  signal.throwIfAborted();
117
126
  const sha256 = createHash('sha256').update(request.requestPayload).digest();
@@ -187,7 +196,8 @@ export class ZLinkUserSpotCreationCoordinator {
187
196
  }
188
197
  }
189
198
  },
190
- signal
199
+ signal,
200
+ BigInt(deadlineUnixMs)
191
201
  );
192
202
  } catch (error) {
193
203
  deadline.close();
@@ -530,7 +540,8 @@ export class ZLinkUserSpotCreationCoordinator {
530
540
  }
531
541
  }
532
542
  },
533
- signal
543
+ signal,
544
+ record.deadlineUnixMs
534
545
  );
535
546
  await discard?.(signal);
536
547
  return {
@@ -565,7 +576,8 @@ export class ZLinkUserSpotCreationCoordinator {
565
576
  ownerNodeGeneration: current.allocation.descriptorLifecycleGeneration
566
577
  })
567
578
  },
568
- signal
579
+ signal,
580
+ record.deadlineUnixMs
569
581
  );
570
582
  } catch (error) {
571
583
  throw createInternalFrameworkException(
@@ -596,7 +608,9 @@ export class ZLinkUserSpotCreationCoordinator {
596
608
  };
597
609
  } catch (error) {
598
610
  local?.publication?.abort();
599
- const cleanupDeadline = createDeadline(this.options.cleanupTimeoutMs ?? 1_000);
611
+ const cleanupDeadline = createDeadline(
612
+ this.options.cleanupTimeoutMs ?? DEFAULT_USER_SPOT_CLEANUP_TIMEOUT_MS
613
+ );
600
614
  const cleanupSignal = cleanupDeadline.signal;
601
615
  const cleanup = await Promise.allSettled([
602
616
  waitForAbort(
@@ -760,7 +774,7 @@ export class ZLinkUserSpotCreationCoordinator {
760
774
  if (current.kind === 'snapshot' && current.allocation.state === 'active') {
761
775
  return spotRef(current, request);
762
776
  }
763
- await wait(this.options.pollIntervalMs ?? 10, signal);
777
+ await wait(this.options.pollIntervalMs ?? DEFAULT_USER_SPOT_POLL_INTERVAL_MS, signal);
764
778
  }
765
779
  }
766
780
 
@@ -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,