@zlink-systems/framework 0.10.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 (1121) hide show
  1. package/LICENSE +105 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/contracts/Actors/ZLinkActor.d.ts +7 -0
  4. package/dist/contracts/Actors/ZLinkActor.js +2 -0
  5. package/dist/contracts/Actors/ZLinkActorClient.d.ts +15 -0
  6. package/dist/contracts/Actors/ZLinkActorClient.js +2 -0
  7. package/dist/contracts/Actors/ZLinkActorContext.d.ts +14 -0
  8. package/dist/contracts/Actors/ZLinkActorContext.js +2 -0
  9. package/dist/contracts/Actors/ZLinkActorFactory.d.ts +34 -0
  10. package/dist/contracts/Actors/ZLinkActorFactory.js +2 -0
  11. package/dist/contracts/Actors/ZLinkActorManager.d.ts +34 -0
  12. package/dist/contracts/Actors/ZLinkActorManager.js +2 -0
  13. package/dist/contracts/Actors/index.d.ts +5 -0
  14. package/dist/contracts/Actors/index.js +21 -0
  15. package/dist/contracts/Channels/Calls.d.ts +28 -0
  16. package/dist/contracts/Channels/Calls.js +2 -0
  17. package/dist/contracts/Channels/IZLinkChannelClient.d.ts +5 -0
  18. package/dist/contracts/Channels/IZLinkChannelClient.js +2 -0
  19. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +11 -0
  20. package/dist/contracts/Channels/IZLinkFanoutClient.js +2 -0
  21. package/dist/contracts/Channels/RouteCalls.d.ts +11 -0
  22. package/dist/contracts/Channels/RouteCalls.js +2 -0
  23. package/dist/contracts/Channels/index.d.ts +4 -0
  24. package/dist/contracts/Channels/index.js +20 -0
  25. package/dist/contracts/Codecs/IZLinkCodecRegistryBuilder.d.ts +14 -0
  26. package/dist/contracts/Codecs/IZLinkCodecRegistryBuilder.js +2 -0
  27. package/dist/contracts/Codecs/ZLinkMessageSerializer.d.ts +5 -0
  28. package/dist/contracts/Codecs/ZLinkMessageSerializer.js +2 -0
  29. package/dist/contracts/Codecs/index.d.ts +2 -0
  30. package/dist/contracts/Codecs/index.js +18 -0
  31. package/dist/contracts/Common/ActorRef.d.ts +7 -0
  32. package/dist/contracts/Common/ActorRef.js +2 -0
  33. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  34. package/dist/contracts/Common/CoreTypes.js +2 -0
  35. package/dist/contracts/Common/Message.d.ts +9 -0
  36. package/dist/contracts/Common/Message.js +2 -0
  37. package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +12 -0
  38. package/dist/contracts/Common/ZLinkEncodedPayload.js +41 -0
  39. package/dist/contracts/Common/ZLinkMessage.d.ts +25 -0
  40. package/dist/contracts/Common/ZLinkMessage.js +127 -0
  41. package/dist/contracts/Common/ZLinkMessageMetadata.d.ts +10 -0
  42. package/dist/contracts/Common/ZLinkMessageMetadata.js +49 -0
  43. package/dist/contracts/Common/ZLinkProviderResolver.d.ts +5 -0
  44. package/dist/contracts/Common/ZLinkProviderResolver.js +2 -0
  45. package/dist/contracts/Common/encoded-payload-storage.d.ts +3 -0
  46. package/dist/contracts/Common/encoded-payload-storage.js +18 -0
  47. package/dist/contracts/Common/index.d.ts +5 -0
  48. package/dist/contracts/Common/index.js +24 -0
  49. package/dist/contracts/Configuration/Builders.d.ts +153 -0
  50. package/dist/contracts/Configuration/Builders.js +2 -0
  51. package/dist/contracts/Configuration/CodecContentType.d.ts +2 -0
  52. package/dist/contracts/Configuration/CodecContentType.js +68 -0
  53. package/dist/contracts/Configuration/CodecSerializerSelection.d.ts +9 -0
  54. package/dist/contracts/Configuration/CodecSerializerSelection.js +15 -0
  55. package/dist/contracts/Configuration/Configs.d.ts +23 -0
  56. package/dist/contracts/Configuration/Configs.js +2 -0
  57. package/dist/contracts/Configuration/ConfigurationException.d.ts +3 -0
  58. package/dist/contracts/Configuration/ConfigurationException.js +10 -0
  59. package/dist/contracts/Configuration/Connections.d.ts +5 -0
  60. package/dist/contracts/Configuration/Connections.js +2 -0
  61. package/dist/contracts/Configuration/DiagnosticsValidation.d.ts +3 -0
  62. package/dist/contracts/Configuration/DiagnosticsValidation.js +23 -0
  63. package/dist/contracts/Configuration/EndpointNotation.d.ts +77 -0
  64. package/dist/contracts/Configuration/EndpointNotation.js +218 -0
  65. package/dist/contracts/Configuration/InternalDefaults.d.ts +7 -0
  66. package/dist/contracts/Configuration/InternalDefaults.js +47 -0
  67. package/dist/contracts/Configuration/ObjectRoles.d.ts +38 -0
  68. package/dist/contracts/Configuration/ObjectRoles.js +13 -0
  69. package/dist/contracts/Configuration/Registration.d.ts +11 -0
  70. package/dist/contracts/Configuration/Registration.js +162 -0
  71. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +14 -0
  72. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +61 -0
  73. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +61 -0
  74. package/dist/contracts/Configuration/RegistrationBuilders.js +1181 -0
  75. package/dist/contracts/Configuration/RegistrationCodecRegistry.d.ts +19 -0
  76. package/dist/contracts/Configuration/RegistrationCodecRegistry.js +79 -0
  77. package/dist/contracts/Configuration/RegistrationNormalizers.d.ts +23 -0
  78. package/dist/contracts/Configuration/RegistrationNormalizers.js +319 -0
  79. package/dist/contracts/Configuration/RegistrationTypes.d.ts +414 -0
  80. package/dist/contracts/Configuration/RegistrationTypes.js +2 -0
  81. package/dist/contracts/Configuration/RegistrationValidators.d.ts +2 -0
  82. package/dist/contracts/Configuration/RegistrationValidators.js +461 -0
  83. package/dist/contracts/Configuration/RouteChannelInternalState.d.ts +10 -0
  84. package/dist/contracts/Configuration/RouteChannelInternalState.js +39 -0
  85. package/dist/contracts/Configuration/RuntimeEndpointConnections.d.ts +9 -0
  86. package/dist/contracts/Configuration/RuntimeEndpointConnections.js +80 -0
  87. package/dist/contracts/Configuration/SendTimeoutValidation.d.ts +2 -0
  88. package/dist/contracts/Configuration/SendTimeoutValidation.js +16 -0
  89. package/dist/contracts/Configuration/TimerRegistrationValidator.d.ts +2 -0
  90. package/dist/contracts/Configuration/TimerRegistrationValidator.js +24 -0
  91. package/dist/contracts/Configuration/index.d.ts +5 -0
  92. package/dist/contracts/Configuration/index.js +18 -0
  93. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +181 -0
  94. package/dist/contracts/Dispatch/ZLinkDispatchOptions.js +89 -0
  95. package/dist/contracts/Dispatch/ZLinkFlowOrigin.d.ts +1 -0
  96. package/dist/contracts/Dispatch/ZLinkFlowOrigin.js +2 -0
  97. package/dist/contracts/Dispatch/index.d.ts +2 -0
  98. package/dist/contracts/Dispatch/index.js +18 -0
  99. package/dist/contracts/Errors/ZLinkFrameworkException.d.ts +20 -0
  100. package/dist/contracts/Errors/ZLinkFrameworkException.js +29 -0
  101. package/dist/contracts/Errors/index.d.ts +1 -0
  102. package/dist/contracts/Errors/index.js +6 -0
  103. package/dist/contracts/Eventing/Metrics.d.ts +29 -0
  104. package/dist/contracts/Eventing/Metrics.js +4 -0
  105. package/dist/contracts/Eventing/index.d.ts +1 -0
  106. package/dist/contracts/Eventing/index.js +17 -0
  107. package/dist/contracts/Handlers/Attributes.d.ts +24 -0
  108. package/dist/contracts/Handlers/Attributes.js +84 -0
  109. package/dist/contracts/Handlers/Contexts.d.ts +18 -0
  110. package/dist/contracts/Handlers/Contexts.js +2 -0
  111. package/dist/contracts/Handlers/IZLinkChannelHandlers.d.ts +43 -0
  112. package/dist/contracts/Handlers/IZLinkChannelHandlers.js +2 -0
  113. package/dist/contracts/Handlers/IZLinkHandlerFilter.d.ts +15 -0
  114. package/dist/contracts/Handlers/IZLinkHandlerFilter.js +11 -0
  115. package/dist/contracts/Handlers/JsonContract.d.ts +46 -0
  116. package/dist/contracts/Handlers/JsonContract.js +137 -0
  117. package/dist/contracts/Handlers/ZLinkHandlerFilterNext.d.ts +1 -0
  118. package/dist/contracts/Handlers/ZLinkHandlerFilterNext.js +2 -0
  119. package/dist/contracts/Handlers/index.d.ts +5 -0
  120. package/dist/contracts/Handlers/index.js +33 -0
  121. package/dist/contracts/Locations/ActorTransfer.d.ts +41 -0
  122. package/dist/contracts/Locations/ActorTransfer.js +2 -0
  123. package/dist/contracts/Locations/Authority.d.ts +296 -0
  124. package/dist/contracts/Locations/Authority.js +17 -0
  125. package/dist/contracts/Locations/Diagnostics.d.ts +42 -0
  126. package/dist/contracts/Locations/Diagnostics.js +12 -0
  127. package/dist/contracts/Locations/Keys.d.ts +86 -0
  128. package/dist/contracts/Locations/Keys.js +2 -0
  129. package/dist/contracts/Locations/Models.d.ts +7 -0
  130. package/dist/contracts/Locations/Models.js +23 -0
  131. package/dist/contracts/Locations/Options.d.ts +23 -0
  132. package/dist/contracts/Locations/Options.js +20 -0
  133. package/dist/contracts/Locations/Readiness.d.ts +5 -0
  134. package/dist/contracts/Locations/Readiness.js +2 -0
  135. package/dist/contracts/Locations/RelocationStore.d.ts +38 -0
  136. package/dist/contracts/Locations/RelocationStore.js +2 -0
  137. package/dist/contracts/Locations/Resolvers.d.ts +4 -0
  138. package/dist/contracts/Locations/Resolvers.js +2 -0
  139. package/dist/contracts/Locations/Rows.d.ts +152 -0
  140. package/dist/contracts/Locations/Rows.js +19 -0
  141. package/dist/contracts/Locations/RuntimeQuery.d.ts +25 -0
  142. package/dist/contracts/Locations/RuntimeQuery.js +2 -0
  143. package/dist/contracts/Locations/Stores.d.ts +88 -0
  144. package/dist/contracts/Locations/Stores.js +2 -0
  145. package/dist/contracts/Locations/Values.d.ts +27 -0
  146. package/dist/contracts/Locations/Values.js +36 -0
  147. package/dist/contracts/Locations/Watch.d.ts +14 -0
  148. package/dist/contracts/Locations/Watch.js +12 -0
  149. package/dist/contracts/Locations/Writes.d.ts +48 -0
  150. package/dist/contracts/Locations/Writes.js +15 -0
  151. package/dist/contracts/Locations/index.d.ts +12 -0
  152. package/dist/contracts/Locations/index.js +30 -0
  153. package/dist/contracts/RouteMesh/Contracts.d.ts +102 -0
  154. package/dist/contracts/RouteMesh/Contracts.js +39 -0
  155. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +165 -0
  156. package/dist/contracts/RouteMesh/RuntimeTopology.js +38 -0
  157. package/dist/contracts/RouteMesh/index.d.ts +2 -0
  158. package/dist/contracts/RouteMesh/index.js +18 -0
  159. package/dist/contracts/Spots/Builders.d.ts +10 -0
  160. package/dist/contracts/Spots/Builders.js +2 -0
  161. package/dist/contracts/Spots/Contracts.d.ts +110 -0
  162. package/dist/contracts/Spots/Contracts.js +9 -0
  163. package/dist/contracts/Spots/SpotKind.d.ts +8 -0
  164. package/dist/contracts/Spots/SpotKind.js +28 -0
  165. package/dist/contracts/Spots/ZLinkSpot.d.ts +62 -0
  166. package/dist/contracts/Spots/ZLinkSpot.js +15 -0
  167. package/dist/contracts/Spots/index.d.ts +3 -0
  168. package/dist/contracts/Spots/index.js +19 -0
  169. package/dist/contracts/Streams/BoundSessionContracts.d.ts +8 -0
  170. package/dist/contracts/Streams/BoundSessionContracts.js +2 -0
  171. package/dist/contracts/Streams/IZLinkSession.d.ts +44 -0
  172. package/dist/contracts/Streams/IZLinkSession.js +2 -0
  173. package/dist/contracts/Streams/IZLinkSessionActor.d.ts +15 -0
  174. package/dist/contracts/Streams/IZLinkSessionActor.js +2 -0
  175. package/dist/contracts/Streams/IZLinkSessionPacketHandler.d.ts +9 -0
  176. package/dist/contracts/Streams/IZLinkSessionPacketHandler.js +2 -0
  177. package/dist/contracts/Streams/IZLinkStream.d.ts +9 -0
  178. package/dist/contracts/Streams/IZLinkStream.js +2 -0
  179. package/dist/contracts/Streams/ZLinkMessageMetadata.d.ts +1 -0
  180. package/dist/contracts/Streams/ZLinkMessageMetadata.js +2 -0
  181. package/dist/contracts/Streams/ZLinkStreamCompression.d.ts +8 -0
  182. package/dist/contracts/Streams/ZLinkStreamCompression.js +2 -0
  183. package/dist/contracts/Streams/ZLinkStreamError.d.ts +8 -0
  184. package/dist/contracts/Streams/ZLinkStreamError.js +8 -0
  185. package/dist/contracts/Streams/index.d.ts +8 -0
  186. package/dist/contracts/Streams/index.js +24 -0
  187. package/dist/contracts/Timers/IZLinkTimer.d.ts +5 -0
  188. package/dist/contracts/Timers/IZLinkTimer.js +2 -0
  189. package/dist/contracts/Timers/ZLinkTimerOptions.d.ts +10 -0
  190. package/dist/contracts/Timers/ZLinkTimerOptions.js +9 -0
  191. package/dist/contracts/Timers/ZLinkTimerTick.d.ts +12 -0
  192. package/dist/contracts/Timers/ZLinkTimerTick.js +2 -0
  193. package/dist/contracts/Timers/index.d.ts +3 -0
  194. package/dist/contracts/Timers/index.js +19 -0
  195. package/dist/contracts/index.d.ts +25 -0
  196. package/dist/contracts/index.js +45 -0
  197. package/dist/index.d.ts +1 -0
  198. package/dist/index.js +17 -0
  199. package/dist/internal.d.ts +26 -0
  200. package/dist/internal.js +48 -0
  201. package/dist/location-store-integration.d.ts +5 -0
  202. package/dist/location-store-integration.js +31 -0
  203. package/dist/nest-integration.d.ts +49 -0
  204. package/dist/nest-integration.js +143 -0
  205. package/dist/runtime/abort.d.ts +13 -0
  206. package/dist/runtime/abort.js +71 -0
  207. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +33 -0
  208. package/dist/runtime/actors/actor-authority-payload-codec.js +366 -0
  209. package/dist/runtime/actors/actor-authority-publication.d.ts +28 -0
  210. package/dist/runtime/actors/actor-authority-publication.js +207 -0
  211. package/dist/runtime/actors/actor-client.d.ts +36 -0
  212. package/dist/runtime/actors/actor-client.js +612 -0
  213. package/dist/runtime/actors/actor-context.d.ts +26 -0
  214. package/dist/runtime/actors/actor-context.js +433 -0
  215. package/dist/runtime/actors/actor-creation.d.ts +19 -0
  216. package/dist/runtime/actors/actor-creation.js +158 -0
  217. package/dist/runtime/actors/actor-execution-context.d.ts +6 -0
  218. package/dist/runtime/actors/actor-execution-context.js +27 -0
  219. package/dist/runtime/actors/actor-handoff.d.ts +191 -0
  220. package/dist/runtime/actors/actor-handoff.js +1252 -0
  221. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +11 -0
  222. package/dist/runtime/actors/actor-join-deferred-scope.js +144 -0
  223. package/dist/runtime/actors/actor-join-relocation.d.ts +38 -0
  224. package/dist/runtime/actors/actor-join-relocation.js +2 -0
  225. package/dist/runtime/actors/actor-lifecycle-snapshot.d.ts +21 -0
  226. package/dist/runtime/actors/actor-lifecycle-snapshot.js +58 -0
  227. package/dist/runtime/actors/actor-local-native-join.d.ts +27 -0
  228. package/dist/runtime/actors/actor-local-native-join.js +409 -0
  229. package/dist/runtime/actors/actor-mailbox.d.ts +10 -0
  230. package/dist/runtime/actors/actor-mailbox.js +53 -0
  231. package/dist/runtime/actors/actor-message-follow-context.d.ts +46 -0
  232. package/dist/runtime/actors/actor-message-follow-context.js +257 -0
  233. package/dist/runtime/actors/actor-native-lookup.d.ts +4 -0
  234. package/dist/runtime/actors/actor-native-lookup.js +30 -0
  235. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +73 -0
  236. package/dist/runtime/actors/actor-packet-relay-wire.js +144 -0
  237. package/dist/runtime/actors/actor-remote-joiner.d.ts +37 -0
  238. package/dist/runtime/actors/actor-remote-joiner.js +122 -0
  239. package/dist/runtime/actors/actor-remote-wire.d.ts +73 -0
  240. package/dist/runtime/actors/actor-remote-wire.js +84 -0
  241. package/dist/runtime/actors/actor-retry-delay.d.ts +5 -0
  242. package/dist/runtime/actors/actor-retry-delay.js +40 -0
  243. package/dist/runtime/actors/actor-routed-join-transport.d.ts +33 -0
  244. package/dist/runtime/actors/actor-routed-join-transport.js +2 -0
  245. package/dist/runtime/actors/actor-routed-json-request.d.ts +11 -0
  246. package/dist/runtime/actors/actor-routed-json-request.js +39 -0
  247. package/dist/runtime/actors/actor-runtime-contracts.d.ts +63 -0
  248. package/dist/runtime/actors/actor-runtime-contracts.js +2 -0
  249. package/dist/runtime/actors/actor-runtime-state.d.ts +152 -0
  250. package/dist/runtime/actors/actor-runtime-state.js +545 -0
  251. package/dist/runtime/actors/actor-source-transfer.d.ts +27 -0
  252. package/dist/runtime/actors/actor-source-transfer.js +2 -0
  253. package/dist/runtime/actors/actor-transfer-registry.d.ts +18 -0
  254. package/dist/runtime/actors/actor-transfer-registry.js +71 -0
  255. package/dist/runtime/actors/actor-transport-delivery-gate.d.ts +6 -0
  256. package/dist/runtime/actors/actor-transport-delivery-gate.js +4 -0
  257. package/dist/runtime/actors/bound-session-wire.d.ts +81 -0
  258. package/dist/runtime/actors/bound-session-wire.js +184 -0
  259. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +47 -0
  260. package/dist/runtime/actors/deferred-join-accepted-journal.js +962 -0
  261. package/dist/runtime/actors/index.d.ts +79 -0
  262. package/dist/runtime/actors/index.js +639 -0
  263. package/dist/runtime/actors/post-commit-actor-binder.d.ts +18 -0
  264. package/dist/runtime/actors/post-commit-actor-binder.js +68 -0
  265. package/dist/runtime/actors/post-commit-actor-location.d.ts +19 -0
  266. package/dist/runtime/actors/post-commit-actor-location.js +72 -0
  267. package/dist/runtime/actors/spot-actor-dispatch.d.ts +59 -0
  268. package/dist/runtime/actors/spot-actor-dispatch.js +179 -0
  269. package/dist/runtime/actors/transferred-actor-rollback.d.ts +16 -0
  270. package/dist/runtime/actors/transferred-actor-rollback.js +91 -0
  271. package/dist/runtime/admission.d.ts +20 -0
  272. package/dist/runtime/admission.js +166 -0
  273. package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +57 -0
  274. package/dist/runtime/application-jobs/application-ingress-record-owner.js +185 -0
  275. package/dist/runtime/application-jobs/application-job-queue-handler-start-gate.d.ts +8 -0
  276. package/dist/runtime/application-jobs/application-job-queue-handler-start-gate.js +8 -0
  277. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +17 -0
  278. package/dist/runtime/application-jobs/application-job-queue-scope.js +57 -0
  279. package/dist/runtime/application-jobs/contracts.d.ts +19 -0
  280. package/dist/runtime/application-jobs/contracts.js +2 -0
  281. package/dist/runtime/application-jobs/receive-flow-controller.d.ts +32 -0
  282. package/dist/runtime/application-jobs/receive-flow-controller.js +165 -0
  283. package/dist/runtime/backend/contracts/index.d.ts +487 -0
  284. package/dist/runtime/backend/contracts/index.js +29 -0
  285. package/dist/runtime/backend/index.d.ts +9 -0
  286. package/dist/runtime/backend/index.js +25 -0
  287. package/dist/runtime/backend/mesh-actor-session-node-adapter.d.ts +3 -0
  288. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +51 -0
  289. package/dist/runtime/backend/mesh-completion-table.d.ts +34 -0
  290. package/dist/runtime/backend/mesh-completion-table.js +124 -0
  291. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +48 -0
  292. package/dist/runtime/backend/mesh-dispatch-pump.js +322 -0
  293. package/dist/runtime/backend/mesh-record-dispatcher.d.ts +19 -0
  294. package/dist/runtime/backend/mesh-record-dispatcher.js +53 -0
  295. package/dist/runtime/backend/node/index.d.ts +4 -0
  296. package/dist/runtime/backend/node/index.js +22 -0
  297. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +12 -0
  298. package/dist/runtime/backend/node/node-backend-adapter-factory.js +161 -0
  299. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +52 -0
  300. package/dist/runtime/backend/node/node-backend-adapter-support.js +203 -0
  301. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +13 -0
  302. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +52 -0
  303. package/dist/runtime/backend/node/node-mesh-backend-adapter.d.ts +11 -0
  304. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +23 -0
  305. package/dist/runtime/backend/node/node-monitor-backend-adapter.d.ts +6 -0
  306. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +38 -0
  307. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +8 -0
  308. package/dist/runtime/backend/node/node-raw-binding-port.js +411 -0
  309. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +266 -0
  310. package/dist/runtime/backend/node/node-raw-mesh-backend.js +1707 -0
  311. package/dist/runtime/backend/node/node-socket-backend-adapter.d.ts +9 -0
  312. package/dist/runtime/backend/node/node-socket-backend-adapter.js +286 -0
  313. package/dist/runtime/backend/node-backend-adapter.d.ts +9 -0
  314. package/dist/runtime/backend/node-backend-adapter.js +12 -0
  315. package/dist/runtime/backend/raw-binding-port.d.ts +58 -0
  316. package/dist/runtime/backend/raw-binding-port.js +2 -0
  317. package/dist/runtime/backend/runtime-message.d.ts +14 -0
  318. package/dist/runtime/backend/runtime-message.js +44 -0
  319. package/dist/runtime/backend/runtime-values.d.ts +78 -0
  320. package/dist/runtime/backend/runtime-values.js +66 -0
  321. package/dist/runtime/channels/channel-autoconnect.d.ts +14 -0
  322. package/dist/runtime/channels/channel-autoconnect.js +23 -0
  323. package/dist/runtime/channels/channel-clients.d.ts +50 -0
  324. package/dist/runtime/channels/channel-clients.js +329 -0
  325. package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +76 -0
  326. package/dist/runtime/channels/channel-dispatch-pipeline.js +237 -0
  327. package/dist/runtime/channels/channel-dispatch-services.d.ts +52 -0
  328. package/dist/runtime/channels/channel-dispatch-services.js +132 -0
  329. package/dist/runtime/channels/channel-dispatchers.d.ts +125 -0
  330. package/dist/runtime/channels/channel-dispatchers.js +575 -0
  331. package/dist/runtime/channels/channel-envelope-inspection.d.ts +25 -0
  332. package/dist/runtime/channels/channel-envelope-inspection.js +96 -0
  333. package/dist/runtime/channels/channel-envelope.d.ts +73 -0
  334. package/dist/runtime/channels/channel-envelope.js +546 -0
  335. package/dist/runtime/channels/channel-framework-packets.d.ts +2 -0
  336. package/dist/runtime/channels/channel-framework-packets.js +6 -0
  337. package/dist/runtime/channels/channel-multipart.d.ts +16 -0
  338. package/dist/runtime/channels/channel-multipart.js +31 -0
  339. package/dist/runtime/channels/channel-outbound-operations.d.ts +33 -0
  340. package/dist/runtime/channels/channel-outbound-operations.js +343 -0
  341. package/dist/runtime/channels/channel-receive-loops.d.ts +151 -0
  342. package/dist/runtime/channels/channel-receive-loops.js +728 -0
  343. package/dist/runtime/channels/channel-receive-task-tracker.d.ts +14 -0
  344. package/dist/runtime/channels/channel-receive-task-tracker.js +37 -0
  345. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +77 -0
  346. package/dist/runtime/channels/channel-runtime-lifecycle.js +630 -0
  347. package/dist/runtime/channels/channel-runtime-manager.d.ts +84 -0
  348. package/dist/runtime/channels/channel-runtime-manager.js +193 -0
  349. package/dist/runtime/channels/channel-socket-options.d.ts +18 -0
  350. package/dist/runtime/channels/channel-socket-options.js +119 -0
  351. package/dist/runtime/channels/channel-socket-registry.d.ts +157 -0
  352. package/dist/runtime/channels/channel-socket-registry.js +1428 -0
  353. package/dist/runtime/channels/channel-transports.d.ts +126 -0
  354. package/dist/runtime/channels/channel-transports.js +448 -0
  355. package/dist/runtime/channels/client-server-location-runtime.d.ts +41 -0
  356. package/dist/runtime/channels/client-server-location-runtime.js +465 -0
  357. package/dist/runtime/channels/client-server-service-wire.d.ts +48 -0
  358. package/dist/runtime/channels/client-server-service-wire.js +306 -0
  359. package/dist/runtime/channels/dispatch-error-reporter.d.ts +22 -0
  360. package/dist/runtime/channels/dispatch-error-reporter.js +133 -0
  361. package/dist/runtime/channels/fanout-location-runtime.d.ts +38 -0
  362. package/dist/runtime/channels/fanout-location-runtime.js +356 -0
  363. package/dist/runtime/channels/fanout-service-wire.d.ts +12 -0
  364. package/dist/runtime/channels/fanout-service-wire.js +29 -0
  365. package/dist/runtime/channels/handler-filter-scope.d.ts +8 -0
  366. package/dist/runtime/channels/handler-filter-scope.js +11 -0
  367. package/dist/runtime/channels/index.d.ts +9 -0
  368. package/dist/runtime/channels/index.js +30 -0
  369. package/dist/runtime/channels/local-spot-route-transport.d.ts +9 -0
  370. package/dist/runtime/channels/local-spot-route-transport.js +40 -0
  371. package/dist/runtime/channels/route-disconnected-error.d.ts +3 -0
  372. package/dist/runtime/channels/route-disconnected-error.js +10 -0
  373. package/dist/runtime/channels/route-member-snapshot.d.ts +10 -0
  374. package/dist/runtime/channels/route-member-snapshot.js +55 -0
  375. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +12 -0
  376. package/dist/runtime/channels/router-socket-spot-route-transport.js +43 -0
  377. package/dist/runtime/channels/source-spot-router.d.ts +10 -0
  378. package/dist/runtime/channels/source-spot-router.js +46 -0
  379. package/dist/runtime/channels/spot-direct-envelope.d.ts +5 -0
  380. package/dist/runtime/channels/spot-direct-envelope.js +29 -0
  381. package/dist/runtime/channels/spot-node-route-transport.d.ts +13 -0
  382. package/dist/runtime/channels/spot-node-route-transport.js +60 -0
  383. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +14 -0
  384. package/dist/runtime/channels/spot-route-bridge-transport.js +58 -0
  385. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +50 -0
  386. package/dist/runtime/channels/spot-route-dispatch-strategy.js +128 -0
  387. package/dist/runtime/channels/spot-route-target-resolver.d.ts +16 -0
  388. package/dist/runtime/channels/spot-route-target-resolver.js +92 -0
  389. package/dist/runtime/codecs/index.d.ts +14 -0
  390. package/dist/runtime/codecs/index.js +44 -0
  391. package/dist/runtime/configuration/index.d.ts +1 -0
  392. package/dist/runtime/configuration/index.js +17 -0
  393. package/dist/runtime/diagnostics/dispatch-error-port.d.ts +8 -0
  394. package/dist/runtime/diagnostics/dispatch-error-port.js +2 -0
  395. package/dist/runtime/diagnostics/flow-context.d.ts +21 -0
  396. package/dist/runtime/diagnostics/flow-context.js +68 -0
  397. package/dist/runtime/diagnostics/index.d.ts +82 -0
  398. package/dist/runtime/diagnostics/index.js +335 -0
  399. package/dist/runtime/diagnostics/internal-event-contracts.d.ts +139 -0
  400. package/dist/runtime/diagnostics/internal-event-contracts.js +68 -0
  401. package/dist/runtime/diagnostics/message-flow.d.ts +55 -0
  402. package/dist/runtime/diagnostics/message-flow.js +420 -0
  403. package/dist/runtime/diagnostics/runtime-metrics.d.ts +123 -0
  404. package/dist/runtime/diagnostics/runtime-metrics.js +454 -0
  405. package/dist/runtime/diagnostics/runtime-observation-queue.d.ts +58 -0
  406. package/dist/runtime/diagnostics/runtime-observation-queue.js +324 -0
  407. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +33 -0
  408. package/dist/runtime/diagnostics/topology-runtime-projections.js +255 -0
  409. package/dist/runtime/execution/index.d.ts +114 -0
  410. package/dist/runtime/execution/index.js +363 -0
  411. package/dist/runtime/execution/serial-execution-queue.d.ts +94 -0
  412. package/dist/runtime/execution/serial-execution-queue.js +411 -0
  413. package/dist/runtime/execution/serial-work-size.d.ts +4 -0
  414. package/dist/runtime/execution/serial-work-size.js +28 -0
  415. package/dist/runtime/execution/state-lane.d.ts +28 -0
  416. package/dist/runtime/execution/state-lane.js +105 -0
  417. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +72 -0
  418. package/dist/runtime/foundation/actor-join-recovery-codec.js +333 -0
  419. package/dist/runtime/foundation/event-loop-resources.d.ts +37 -0
  420. package/dist/runtime/foundation/event-loop-resources.js +163 -0
  421. package/dist/runtime/foundation/index.d.ts +18 -0
  422. package/dist/runtime/foundation/index.js +34 -0
  423. package/dist/runtime/foundation/message-follow-suppression-registry.d.ts +38 -0
  424. package/dist/runtime/foundation/message-follow-suppression-registry.js +89 -0
  425. package/dist/runtime/foundation/operation-identity.d.ts +12 -0
  426. package/dist/runtime/foundation/operation-identity.js +33 -0
  427. package/dist/runtime/foundation/operation-registry.d.ts +42 -0
  428. package/dist/runtime/foundation/operation-registry.js +146 -0
  429. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +143 -0
  430. package/dist/runtime/foundation/raw-service-mesh-runtime.js +1349 -0
  431. package/dist/runtime/foundation/route-mesh-connection-policy.d.ts +3 -0
  432. package/dist/runtime/foundation/route-mesh-connection-policy.js +13 -0
  433. package/dist/runtime/foundation/runtime-state-projections.d.ts +13 -0
  434. package/dist/runtime/foundation/runtime-state-projections.js +44 -0
  435. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +56 -0
  436. package/dist/runtime/foundation/service-authority-payload-codec.js +411 -0
  437. package/dist/runtime/foundation/service-discovery-registry.d.ts +42 -0
  438. package/dist/runtime/foundation/service-discovery-registry.js +175 -0
  439. package/dist/runtime/foundation/service-instance-activation-recovery-codec.d.ts +19 -0
  440. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +287 -0
  441. package/dist/runtime/foundation/service-liveness-registry.d.ts +28 -0
  442. package/dist/runtime/foundation/service-liveness-registry.js +109 -0
  443. package/dist/runtime/foundation/service-mailbox.d.ts +60 -0
  444. package/dist/runtime/foundation/service-mailbox.js +283 -0
  445. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +45 -0
  446. package/dist/runtime/foundation/service-maintenance-runtime.js +198 -0
  447. package/dist/runtime/foundation/service-metadata-codec.d.ts +2 -0
  448. package/dist/runtime/foundation/service-metadata-codec.js +69 -0
  449. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +35 -0
  450. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +139 -0
  451. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +19 -0
  452. package/dist/runtime/foundation/service-relocation-coordinator.js +16 -0
  453. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +71 -0
  454. package/dist/runtime/foundation/service-relocation-object-owner.js +242 -0
  455. package/dist/runtime/foundation/service-relocation-runtime.d.ts +143 -0
  456. package/dist/runtime/foundation/service-relocation-runtime.js +1080 -0
  457. package/dist/runtime/foundation/service-runtime-contracts.d.ts +332 -0
  458. package/dist/runtime/foundation/service-runtime-contracts.js +66 -0
  459. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +23 -0
  460. package/dist/runtime/foundation/service-session-binding-ingress-port.js +11 -0
  461. package/dist/runtime/foundation/service-stateful-registry.d.ts +142 -0
  462. package/dist/runtime/foundation/service-stateful-registry.js +465 -0
  463. package/dist/runtime/foundation/service-stateful-runtime.d.ts +393 -0
  464. package/dist/runtime/foundation/service-stateful-runtime.js +3898 -0
  465. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +597 -0
  466. package/dist/runtime/foundation/service-stateful-wire-codec.js +2006 -0
  467. package/dist/runtime/foundation/service-topology-registry.d.ts +68 -0
  468. package/dist/runtime/foundation/service-topology-registry.js +393 -0
  469. package/dist/runtime/foundation/service-weighted-selection.d.ts +14 -0
  470. package/dist/runtime/foundation/service-weighted-selection.js +128 -0
  471. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +10 -0
  472. package/dist/runtime/foundation/service-wire-binary-primitives.js +53 -0
  473. package/dist/runtime/foundation/service-wire-codec.d.ts +22 -0
  474. package/dist/runtime/foundation/service-wire-codec.js +67 -0
  475. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +110 -0
  476. package/dist/runtime/foundation/service-wire-constants.generated.js +132 -0
  477. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +102 -0
  478. package/dist/runtime/foundation/service-wire-m6a-codec.js +568 -0
  479. package/dist/runtime/framework-errors-internal.d.ts +95 -0
  480. package/dist/runtime/framework-errors-internal.js +301 -0
  481. package/dist/runtime/handlers/handler-instance-scope.d.ts +11 -0
  482. package/dist/runtime/handlers/handler-instance-scope.js +284 -0
  483. package/dist/runtime/handlers/index.d.ts +13 -0
  484. package/dist/runtime/handlers/index.js +57 -0
  485. package/dist/runtime/host/actor-packet-relay.d.ts +60 -0
  486. package/dist/runtime/host/actor-packet-relay.js +664 -0
  487. package/dist/runtime/host/actor-placement-coordinator.d.ts +32 -0
  488. package/dist/runtime/host/actor-placement-coordinator.js +386 -0
  489. package/dist/runtime/host/actor-runtime-options-factory.d.ts +65 -0
  490. package/dist/runtime/host/actor-runtime-options-factory.js +160 -0
  491. package/dist/runtime/host/actor-transfer-authority-runtime.d.ts +26 -0
  492. package/dist/runtime/host/actor-transfer-authority-runtime.js +138 -0
  493. package/dist/runtime/host/actor-transfer-runtime.d.ts +149 -0
  494. package/dist/runtime/host/actor-transfer-runtime.js +1245 -0
  495. package/dist/runtime/host/application-job-queue.d.ts +99 -0
  496. package/dist/runtime/host/application-job-queue.js +409 -0
  497. package/dist/runtime/host/bound-session-relay.d.ts +41 -0
  498. package/dist/runtime/host/bound-session-relay.js +52 -0
  499. package/dist/runtime/host/bounded-replay-map.d.ts +12 -0
  500. package/dist/runtime/host/bounded-replay-map.js +42 -0
  501. package/dist/runtime/host/channel-runtime-options-factory.d.ts +22 -0
  502. package/dist/runtime/host/channel-runtime-options-factory.js +76 -0
  503. package/dist/runtime/host/entry-actor-runtime.d.ts +30 -0
  504. package/dist/runtime/host/entry-actor-runtime.js +80 -0
  505. package/dist/runtime/host/host-capacity-status.d.ts +11 -0
  506. package/dist/runtime/host/host-capacity-status.js +85 -0
  507. package/dist/runtime/host/index.d.ts +188 -0
  508. package/dist/runtime/host/index.js +2552 -0
  509. package/dist/runtime/host/instance-activation-authority.d.ts +33 -0
  510. package/dist/runtime/host/instance-activation-authority.js +496 -0
  511. package/dist/runtime/host/location-runtime-owner.d.ts +48 -0
  512. package/dist/runtime/host/location-runtime-owner.js +227 -0
  513. package/dist/runtime/host/mesh-router-resolver.d.ts +16 -0
  514. package/dist/runtime/host/mesh-router-resolver.js +108 -0
  515. package/dist/runtime/host/relocation-direct-transfer.d.ts +81 -0
  516. package/dist/runtime/host/relocation-direct-transfer.js +240 -0
  517. package/dist/runtime/host/relocation-integrity-fault-gate.d.ts +6 -0
  518. package/dist/runtime/host/relocation-integrity-fault-gate.js +5 -0
  519. package/dist/runtime/host/relocation-state-adapter.d.ts +8 -0
  520. package/dist/runtime/host/relocation-state-adapter.js +13 -0
  521. package/dist/runtime/host/remote-actor-join-receiver.d.ts +47 -0
  522. package/dist/runtime/host/remote-actor-join-receiver.js +161 -0
  523. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +29 -0
  524. package/dist/runtime/host/remote-actor-packet-target-store.js +185 -0
  525. package/dist/runtime/host/remote-bound-session-relay.d.ts +58 -0
  526. package/dist/runtime/host/remote-bound-session-relay.js +540 -0
  527. package/dist/runtime/host/route-mesh-runtime-options.d.ts +9 -0
  528. package/dist/runtime/host/route-mesh-runtime-options.js +41 -0
  529. package/dist/runtime/host/route-mesh-runtime.d.ts +76 -0
  530. package/dist/runtime/host/route-mesh-runtime.js +746 -0
  531. package/dist/runtime/host/runtime-shutdown.d.ts +33 -0
  532. package/dist/runtime/host/runtime-shutdown.js +68 -0
  533. package/dist/runtime/host/service-relocation-control.d.ts +7 -0
  534. package/dist/runtime/host/service-relocation-control.js +24 -0
  535. package/dist/runtime/host/service-relocation-host-runtime.d.ts +241 -0
  536. package/dist/runtime/host/service-relocation-host-runtime.js +4113 -0
  537. package/dist/runtime/host/spot-address-transport.d.ts +47 -0
  538. package/dist/runtime/host/spot-address-transport.js +601 -0
  539. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +38 -0
  540. package/dist/runtime/host/spot-node-runtime-options-factory.js +36 -0
  541. package/dist/runtime/host/spot-runtime-options-factory.d.ts +48 -0
  542. package/dist/runtime/host/spot-runtime-options-factory.js +169 -0
  543. package/dist/runtime/host/stateful-authority-route-runtime.d.ts +34 -0
  544. package/dist/runtime/host/stateful-authority-route-runtime.js +440 -0
  545. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +69 -0
  546. package/dist/runtime/host/user-spot-creation-coordinator.js +759 -0
  547. package/dist/runtime/locations/actor-location-claims.d.ts +43 -0
  548. package/dist/runtime/locations/actor-location-claims.js +319 -0
  549. package/dist/runtime/locations/actor-session-route-claims.d.ts +10 -0
  550. package/dist/runtime/locations/actor-session-route-claims.js +51 -0
  551. package/dist/runtime/locations/aggregate-inventory-store.d.ts +18 -0
  552. package/dist/runtime/locations/aggregate-inventory-store.js +399 -0
  553. package/dist/runtime/locations/authority-key-codec.d.ts +6 -0
  554. package/dist/runtime/locations/authority-key-codec.js +78 -0
  555. package/dist/runtime/locations/auto-connect-loop.d.ts +37 -0
  556. package/dist/runtime/locations/auto-connect-loop.js +112 -0
  557. package/dist/runtime/locations/auto-connect-planner.d.ts +9 -0
  558. package/dist/runtime/locations/auto-connect-planner.js +137 -0
  559. package/dist/runtime/locations/auto-connect-reconciler.d.ts +57 -0
  560. package/dist/runtime/locations/auto-connect-reconciler.js +358 -0
  561. package/dist/runtime/locations/auto-connect-types.d.ts +42 -0
  562. package/dist/runtime/locations/auto-connect-types.js +2 -0
  563. package/dist/runtime/locations/auto-connect.d.ts +4 -0
  564. package/dist/runtime/locations/auto-connect.js +20 -0
  565. package/dist/runtime/locations/canonical-codec.d.ts +7 -0
  566. package/dist/runtime/locations/canonical-codec.js +48 -0
  567. package/dist/runtime/locations/domain-store-contract.d.ts +34 -0
  568. package/dist/runtime/locations/domain-store-contract.js +2 -0
  569. package/dist/runtime/locations/in-memory-authority-store.d.ts +51 -0
  570. package/dist/runtime/locations/in-memory-authority-store.js +895 -0
  571. package/dist/runtime/locations/in-memory-location-store.d.ts +78 -0
  572. package/dist/runtime/locations/in-memory-location-store.js +1008 -0
  573. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +19 -0
  574. package/dist/runtime/locations/in-memory-provider-location-store.js +183 -0
  575. package/dist/runtime/locations/index.d.ts +11 -0
  576. package/dist/runtime/locations/index.js +27 -0
  577. package/dist/runtime/locations/internal-location-contracts.d.ts +7 -0
  578. package/dist/runtime/locations/internal-location-contracts.js +21 -0
  579. package/dist/runtime/locations/internal-store-contracts.d.ts +35 -0
  580. package/dist/runtime/locations/internal-store-contracts.js +2 -0
  581. package/dist/runtime/locations/key-codec.d.ts +13 -0
  582. package/dist/runtime/locations/key-codec.js +41 -0
  583. package/dist/runtime/locations/lease-tracker.d.ts +36 -0
  584. package/dist/runtime/locations/lease-tracker.js +155 -0
  585. package/dist/runtime/locations/lifecycle-runtime.d.ts +19 -0
  586. package/dist/runtime/locations/lifecycle-runtime.js +2 -0
  587. package/dist/runtime/locations/lifecycle.d.ts +40 -0
  588. package/dist/runtime/locations/lifecycle.js +120 -0
  589. package/dist/runtime/locations/location-store-repository.d.ts +72 -0
  590. package/dist/runtime/locations/location-store-repository.js +3198 -0
  591. package/dist/runtime/locations/relocation-blob.d.ts +7 -0
  592. package/dist/runtime/locations/relocation-blob.js +24 -0
  593. package/dist/runtime/locations/resolvers.d.ts +145 -0
  594. package/dist/runtime/locations/resolvers.js +693 -0
  595. package/dist/runtime/locations/runtime.d.ts +144 -0
  596. package/dist/runtime/locations/runtime.js +792 -0
  597. package/dist/runtime/locations/spot-location-claims.d.ts +36 -0
  598. package/dist/runtime/locations/spot-location-claims.js +305 -0
  599. package/dist/runtime/messaging/creation-payload-codec.d.ts +4 -0
  600. package/dist/runtime/messaging/creation-payload-codec.js +40 -0
  601. package/dist/runtime/messaging/framework-json-v1.d.ts +7 -0
  602. package/dist/runtime/messaging/framework-json-v1.js +296 -0
  603. package/dist/runtime/messaging/index.d.ts +1 -0
  604. package/dist/runtime/messaging/index.js +2 -0
  605. package/dist/runtime/messaging/packet-name.d.ts +4 -0
  606. package/dist/runtime/messaging/packet-name.js +79 -0
  607. package/dist/runtime/messaging/payload-codec.d.ts +25 -0
  608. package/dist/runtime/messaging/payload-codec.js +255 -0
  609. package/dist/runtime/messaging/submission-result.d.ts +15 -0
  610. package/dist/runtime/messaging/submission-result.js +37 -0
  611. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +395 -0
  612. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +645 -0
  613. package/dist/runtime/routing-id.d.ts +8 -0
  614. package/dist/runtime/routing-id.js +112 -0
  615. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +124 -0
  616. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +269 -0
  617. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +33 -0
  618. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +94 -0
  619. package/dist/runtime/spots/index.d.ts +247 -0
  620. package/dist/runtime/spots/index.js +2090 -0
  621. package/dist/runtime/spots/spot-activation-registry.d.ts +47 -0
  622. package/dist/runtime/spots/spot-activation-registry.js +272 -0
  623. package/dist/runtime/spots/spot-activation-state.d.ts +104 -0
  624. package/dist/runtime/spots/spot-activation-state.js +288 -0
  625. package/dist/runtime/spots/spot-activation.d.ts +89 -0
  626. package/dist/runtime/spots/spot-activation.js +601 -0
  627. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +20 -0
  628. package/dist/runtime/spots/spot-actor-admission-coordinator.js +194 -0
  629. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +83 -0
  630. package/dist/runtime/spots/spot-actor-join-dispatch.js +185 -0
  631. package/dist/runtime/spots/spot-actor-lifecycle-drain.d.ts +22 -0
  632. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +51 -0
  633. package/dist/runtime/spots/spot-actor-membership.d.ts +39 -0
  634. package/dist/runtime/spots/spot-actor-membership.js +179 -0
  635. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +91 -0
  636. package/dist/runtime/spots/spot-actor-packet-dispatch.js +315 -0
  637. package/dist/runtime/spots/spot-actor-packet-drain.d.ts +40 -0
  638. package/dist/runtime/spots/spot-actor-packet-drain.js +235 -0
  639. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +18 -0
  640. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +110 -0
  641. package/dist/runtime/spots/spot-closing.d.ts +2 -0
  642. package/dist/runtime/spots/spot-closing.js +30 -0
  643. package/dist/runtime/spots/spot-context.d.ts +46 -0
  644. package/dist/runtime/spots/spot-context.js +113 -0
  645. package/dist/runtime/spots/spot-entry-activation.d.ts +107 -0
  646. package/dist/runtime/spots/spot-entry-activation.js +342 -0
  647. package/dist/runtime/spots/spot-handle.d.ts +28 -0
  648. package/dist/runtime/spots/spot-handle.js +38 -0
  649. package/dist/runtime/spots/spot-handler-registry.d.ts +52 -0
  650. package/dist/runtime/spots/spot-handler-registry.js +155 -0
  651. package/dist/runtime/spots/spot-lifecycle-metrics.d.ts +8 -0
  652. package/dist/runtime/spots/spot-lifecycle-metrics.js +16 -0
  653. package/dist/runtime/spots/spot-location-claim.d.ts +25 -0
  654. package/dist/runtime/spots/spot-location-claim.js +55 -0
  655. package/dist/runtime/spots/spot-manager-internal-contracts.d.ts +10 -0
  656. package/dist/runtime/spots/spot-manager-internal-contracts.js +2 -0
  657. package/dist/runtime/spots/spot-manager-public.d.ts +32 -0
  658. package/dist/runtime/spots/spot-manager-public.js +219 -0
  659. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +26 -0
  660. package/dist/runtime/spots/spot-native-actor-join-admission.js +105 -0
  661. package/dist/runtime/spots/spot-native-flags.d.ts +2 -0
  662. package/dist/runtime/spots/spot-native-flags.js +5 -0
  663. package/dist/runtime/spots/spot-node-autoconnect.d.ts +23 -0
  664. package/dist/runtime/spots/spot-node-autoconnect.js +246 -0
  665. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +137 -0
  666. package/dist/runtime/spots/spot-node-runtime-manager.js +1111 -0
  667. package/dist/runtime/spots/spot-outbound.d.ts +78 -0
  668. package/dist/runtime/spots/spot-outbound.js +460 -0
  669. package/dist/runtime/spots/spot-provider.d.ts +4 -0
  670. package/dist/runtime/spots/spot-provider.js +28 -0
  671. package/dist/runtime/spots/spot-publisher-transport.d.ts +14 -0
  672. package/dist/runtime/spots/spot-publisher-transport.js +28 -0
  673. package/dist/runtime/spots/spot-remote-codec.d.ts +50 -0
  674. package/dist/runtime/spots/spot-remote-codec.js +190 -0
  675. package/dist/runtime/spots/spot-remote-route-codec.d.ts +47 -0
  676. package/dist/runtime/spots/spot-remote-route-codec.js +168 -0
  677. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +25 -0
  678. package/dist/runtime/spots/spot-route-packet-dispatch.js +238 -0
  679. package/dist/runtime/spots/spot-route-replies.d.ts +17 -0
  680. package/dist/runtime/spots/spot-route-replies.js +76 -0
  681. package/dist/runtime/spots/spot-route-reply-wire.d.ts +10 -0
  682. package/dist/runtime/spots/spot-route-reply-wire.js +6 -0
  683. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +36 -0
  684. package/dist/runtime/spots/spot-routed-actor-admission.js +240 -0
  685. package/dist/runtime/spots/spot-routed-bound-session-dispatch.d.ts +19 -0
  686. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +46 -0
  687. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +54 -0
  688. package/dist/runtime/spots/spot-routed-frame-dispatch.js +162 -0
  689. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +43 -0
  690. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +152 -0
  691. package/dist/runtime/spots/spot-routing-internal.d.ts +28 -0
  692. package/dist/runtime/spots/spot-routing-internal.js +2 -0
  693. package/dist/runtime/spots/spot-runtime-ports.d.ts +64 -0
  694. package/dist/runtime/spots/spot-runtime-ports.js +2 -0
  695. package/dist/runtime/spots/spot-serial-executor.d.ts +38 -0
  696. package/dist/runtime/spots/spot-serial-executor.js +133 -0
  697. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +54 -0
  698. package/dist/runtime/spots/spot-serial-turn-executor.js +219 -0
  699. package/dist/runtime/spots/spot-subscription-dispatch.d.ts +32 -0
  700. package/dist/runtime/spots/spot-subscription-dispatch.js +194 -0
  701. package/dist/runtime/spots/spot-timer.d.ts +110 -0
  702. package/dist/runtime/spots/spot-timer.js +419 -0
  703. package/dist/runtime/streams/actor-session-binding-registry.d.ts +193 -0
  704. package/dist/runtime/streams/actor-session-binding-registry.js +1127 -0
  705. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +20 -0
  706. package/dist/runtime/streams/actor-session-binding-runtime-owner.js +19 -0
  707. package/dist/runtime/streams/actor-session-lifecycle-coordinator.d.ts +4 -0
  708. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +24 -0
  709. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +29 -0
  710. package/dist/runtime/streams/bound-actor-relay-sender.js +181 -0
  711. package/dist/runtime/streams/bound-session-response-target.d.ts +25 -0
  712. package/dist/runtime/streams/bound-session-response-target.js +54 -0
  713. package/dist/runtime/streams/bound-session-service.d.ts +48 -0
  714. package/dist/runtime/streams/bound-session-service.js +201 -0
  715. package/dist/runtime/streams/index.d.ts +152 -0
  716. package/dist/runtime/streams/index.js +338 -0
  717. package/dist/runtime/streams/managed-stream.d.ts +53 -0
  718. package/dist/runtime/streams/managed-stream.js +329 -0
  719. package/dist/runtime/streams/native-fallback-bound-session.d.ts +24 -0
  720. package/dist/runtime/streams/native-fallback-bound-session.js +201 -0
  721. package/dist/runtime/streams/protocol.d.ts +67 -0
  722. package/dist/runtime/streams/protocol.js +244 -0
  723. package/dist/runtime/streams/session-actor-coordinator.d.ts +56 -0
  724. package/dist/runtime/streams/session-actor-coordinator.js +371 -0
  725. package/dist/runtime/streams/session-calls.d.ts +59 -0
  726. package/dist/runtime/streams/session-calls.js +123 -0
  727. package/dist/runtime/streams/session-context.d.ts +108 -0
  728. package/dist/runtime/streams/session-context.js +377 -0
  729. package/dist/runtime/streams/session-local-actors.d.ts +10 -0
  730. package/dist/runtime/streams/session-local-actors.js +26 -0
  731. package/dist/runtime/streams/session-provider.d.ts +4 -0
  732. package/dist/runtime/streams/session-provider.js +30 -0
  733. package/dist/runtime/streams/session-requests.d.ts +25 -0
  734. package/dist/runtime/streams/session-requests.js +100 -0
  735. package/dist/runtime/streams/session-serial-executor.d.ts +12 -0
  736. package/dist/runtime/streams/session-serial-executor.js +58 -0
  737. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +62 -0
  738. package/dist/runtime/streams/stream-binding-runtime-ports.js +2 -0
  739. package/dist/runtime/streams/stream-frame-factory.d.ts +44 -0
  740. package/dist/runtime/streams/stream-frame-factory.js +149 -0
  741. package/dist/runtime/streams/stream-message-utils.d.ts +5 -0
  742. package/dist/runtime/streams/stream-message-utils.js +74 -0
  743. package/dist/runtime/streams/stream-session-runtime.d.ts +166 -0
  744. package/dist/runtime/streams/stream-session-runtime.js +1144 -0
  745. package/dist/runtime/workers/index.d.ts +38 -0
  746. package/dist/runtime/workers/index.js +474 -0
  747. package/package.json +19 -0
  748. package/src/contracts/Actors/ZLinkActor.ts +8 -0
  749. package/src/contracts/Actors/ZLinkActorClient.ts +18 -0
  750. package/src/contracts/Actors/ZLinkActorContext.ts +15 -0
  751. package/src/contracts/Actors/ZLinkActorFactory.ts +41 -0
  752. package/src/contracts/Actors/ZLinkActorManager.ts +31 -0
  753. package/src/contracts/Actors/index.ts +5 -0
  754. package/src/contracts/Channels/Calls.ts +33 -0
  755. package/src/contracts/Channels/IZLinkChannelClient.ts +6 -0
  756. package/src/contracts/Channels/IZLinkFanoutClient.ts +13 -0
  757. package/src/contracts/Channels/RouteCalls.ts +13 -0
  758. package/src/contracts/Channels/index.ts +4 -0
  759. package/src/contracts/Codecs/IZLinkCodecRegistryBuilder.ts +22 -0
  760. package/src/contracts/Codecs/ZLinkMessageSerializer.ts +6 -0
  761. package/src/contracts/Codecs/index.ts +2 -0
  762. package/src/contracts/Common/ActorRef.ts +8 -0
  763. package/src/contracts/Common/CoreTypes.ts +6 -0
  764. package/src/contracts/Common/Message.ts +9 -0
  765. package/src/contracts/Common/ZLinkEncodedPayload.ts +47 -0
  766. package/src/contracts/Common/ZLinkMessage.ts +135 -0
  767. package/src/contracts/Common/ZLinkMessageMetadata.ts +77 -0
  768. package/src/contracts/Common/ZLinkProviderResolver.ts +6 -0
  769. package/src/contracts/Common/encoded-payload-storage.ts +16 -0
  770. package/src/contracts/Common/index.ts +5 -0
  771. package/src/contracts/Configuration/Builders.ts +200 -0
  772. package/src/contracts/Configuration/CodecContentType.ts +68 -0
  773. package/src/contracts/Configuration/CodecSerializerSelection.ts +28 -0
  774. package/src/contracts/Configuration/Configs.ts +27 -0
  775. package/src/contracts/Configuration/ConfigurationException.ts +6 -0
  776. package/src/contracts/Configuration/Connections.ts +5 -0
  777. package/src/contracts/Configuration/DiagnosticsValidation.ts +25 -0
  778. package/src/contracts/Configuration/EndpointNotation.ts +232 -0
  779. package/src/contracts/Configuration/InternalDefaults.ts +13 -0
  780. package/src/contracts/Configuration/ObjectRoles.ts +47 -0
  781. package/src/contracts/Configuration/Registration.ts +191 -0
  782. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +76 -0
  783. package/src/contracts/Configuration/RegistrationBuilders.ts +1705 -0
  784. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +118 -0
  785. package/src/contracts/Configuration/RegistrationNormalizers.ts +404 -0
  786. package/src/contracts/Configuration/RegistrationTypes.ts +499 -0
  787. package/src/contracts/Configuration/RegistrationValidators.ts +698 -0
  788. package/src/contracts/Configuration/RouteChannelInternalState.ts +50 -0
  789. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +91 -0
  790. package/src/contracts/Configuration/SendTimeoutValidation.ts +15 -0
  791. package/src/contracts/Configuration/TimerRegistrationValidator.ts +37 -0
  792. package/src/contracts/Configuration/index.ts +35 -0
  793. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +222 -0
  794. package/src/contracts/Dispatch/ZLinkFlowOrigin.ts +1 -0
  795. package/src/contracts/Dispatch/index.ts +2 -0
  796. package/src/contracts/Errors/ZLinkFrameworkException.ts +27 -0
  797. package/src/contracts/Errors/index.ts +4 -0
  798. package/src/contracts/Eventing/Metrics.ts +27 -0
  799. package/src/contracts/Eventing/index.ts +1 -0
  800. package/src/contracts/Handlers/Attributes.ts +111 -0
  801. package/src/contracts/Handlers/Contexts.ts +21 -0
  802. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +69 -0
  803. package/src/contracts/Handlers/IZLinkHandlerFilter.ts +22 -0
  804. package/src/contracts/Handlers/JsonContract.ts +172 -0
  805. package/src/contracts/Handlers/ZLinkHandlerFilterNext.ts +1 -0
  806. package/src/contracts/Handlers/index.ts +17 -0
  807. package/src/contracts/Locations/ActorTransfer.ts +84 -0
  808. package/src/contracts/Locations/Authority.ts +308 -0
  809. package/src/contracts/Locations/Diagnostics.ts +48 -0
  810. package/src/contracts/Locations/Keys.ts +93 -0
  811. package/src/contracts/Locations/Models.ts +7 -0
  812. package/src/contracts/Locations/Options.ts +42 -0
  813. package/src/contracts/Locations/Readiness.ts +11 -0
  814. package/src/contracts/Locations/RelocationStore.ts +51 -0
  815. package/src/contracts/Locations/Resolvers.ts +8 -0
  816. package/src/contracts/Locations/Rows.ts +164 -0
  817. package/src/contracts/Locations/RuntimeQuery.ts +56 -0
  818. package/src/contracts/Locations/Stores.ts +92 -0
  819. package/src/contracts/Locations/Values.ts +32 -0
  820. package/src/contracts/Locations/Watch.ts +16 -0
  821. package/src/contracts/Locations/Writes.ts +56 -0
  822. package/src/contracts/Locations/index.ts +48 -0
  823. package/src/contracts/RouteMesh/Contracts.ts +145 -0
  824. package/src/contracts/RouteMesh/RuntimeTopology.ts +201 -0
  825. package/src/contracts/RouteMesh/index.ts +2 -0
  826. package/src/contracts/Spots/Builders.ts +11 -0
  827. package/src/contracts/Spots/Contracts.ts +150 -0
  828. package/src/contracts/Spots/SpotKind.ts +24 -0
  829. package/src/contracts/Spots/ZLinkSpot.ts +88 -0
  830. package/src/contracts/Spots/index.ts +3 -0
  831. package/src/contracts/Streams/BoundSessionContracts.ts +9 -0
  832. package/src/contracts/Streams/IZLinkSession.ts +52 -0
  833. package/src/contracts/Streams/IZLinkSessionActor.ts +17 -0
  834. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +11 -0
  835. package/src/contracts/Streams/IZLinkStream.ts +10 -0
  836. package/src/contracts/Streams/ZLinkMessageMetadata.ts +1 -0
  837. package/src/contracts/Streams/ZLinkStreamCompression.ts +9 -0
  838. package/src/contracts/Streams/ZLinkStreamError.ts +9 -0
  839. package/src/contracts/Streams/index.ts +8 -0
  840. package/src/contracts/Timers/IZLinkTimer.ts +5 -0
  841. package/src/contracts/Timers/ZLinkTimerOptions.ts +11 -0
  842. package/src/contracts/Timers/ZLinkTimerTick.ts +12 -0
  843. package/src/contracts/Timers/index.ts +3 -0
  844. package/src/contracts/index.ts +71 -0
  845. package/src/index.ts +1 -0
  846. package/src/internal.ts +29 -0
  847. package/src/location-store-integration.ts +51 -0
  848. package/src/nest-integration.ts +251 -0
  849. package/src/runtime/abort.ts +70 -0
  850. package/src/runtime/actors/actor-authority-payload-codec.ts +454 -0
  851. package/src/runtime/actors/actor-authority-publication.ts +277 -0
  852. package/src/runtime/actors/actor-client.ts +1018 -0
  853. package/src/runtime/actors/actor-context.ts +583 -0
  854. package/src/runtime/actors/actor-creation.ts +254 -0
  855. package/src/runtime/actors/actor-execution-context.ts +38 -0
  856. package/src/runtime/actors/actor-handoff.ts +1911 -0
  857. package/src/runtime/actors/actor-join-deferred-scope.ts +183 -0
  858. package/src/runtime/actors/actor-join-relocation.ts +39 -0
  859. package/src/runtime/actors/actor-lifecycle-snapshot.ts +90 -0
  860. package/src/runtime/actors/actor-local-native-join.ts +725 -0
  861. package/src/runtime/actors/actor-mailbox.ts +92 -0
  862. package/src/runtime/actors/actor-message-follow-context.ts +347 -0
  863. package/src/runtime/actors/actor-native-lookup.ts +38 -0
  864. package/src/runtime/actors/actor-packet-relay-wire.ts +223 -0
  865. package/src/runtime/actors/actor-remote-joiner.ts +238 -0
  866. package/src/runtime/actors/actor-remote-wire.ts +169 -0
  867. package/src/runtime/actors/actor-retry-delay.ts +37 -0
  868. package/src/runtime/actors/actor-routed-join-transport.ts +58 -0
  869. package/src/runtime/actors/actor-routed-json-request.ts +44 -0
  870. package/src/runtime/actors/actor-runtime-contracts.ts +126 -0
  871. package/src/runtime/actors/actor-runtime-state.ts +805 -0
  872. package/src/runtime/actors/actor-source-transfer.ts +62 -0
  873. package/src/runtime/actors/actor-transfer-registry.ts +112 -0
  874. package/src/runtime/actors/actor-transport-delivery-gate.ts +17 -0
  875. package/src/runtime/actors/bound-session-wire.ts +257 -0
  876. package/src/runtime/actors/deferred-join-accepted-journal.ts +1319 -0
  877. package/src/runtime/actors/index.ts +972 -0
  878. package/src/runtime/actors/post-commit-actor-binder.ts +70 -0
  879. package/src/runtime/actors/post-commit-actor-location.ts +114 -0
  880. package/src/runtime/actors/spot-actor-dispatch.ts +362 -0
  881. package/src/runtime/actors/transferred-actor-rollback.ts +123 -0
  882. package/src/runtime/admission.ts +192 -0
  883. package/src/runtime/application-jobs/application-ingress-record-owner.ts +216 -0
  884. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +10 -0
  885. package/src/runtime/application-jobs/application-job-queue-scope.ts +64 -0
  886. package/src/runtime/application-jobs/contracts.ts +26 -0
  887. package/src/runtime/application-jobs/receive-flow-controller.ts +188 -0
  888. package/src/runtime/backend/contracts/index.ts +765 -0
  889. package/src/runtime/backend/index.ts +9 -0
  890. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +73 -0
  891. package/src/runtime/backend/mesh-completion-table.ts +165 -0
  892. package/src/runtime/backend/mesh-dispatch-pump.ts +363 -0
  893. package/src/runtime/backend/mesh-record-dispatcher.ts +65 -0
  894. package/src/runtime/backend/node/index.ts +4 -0
  895. package/src/runtime/backend/node/node-backend-adapter-factory.ts +204 -0
  896. package/src/runtime/backend/node/node-backend-adapter-support.ts +257 -0
  897. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +133 -0
  898. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +44 -0
  899. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +39 -0
  900. package/src/runtime/backend/node/node-raw-binding-port.contract.ts +21 -0
  901. package/src/runtime/backend/node/node-raw-binding-port.ts +518 -0
  902. package/src/runtime/backend/node/node-raw-mesh-backend.ts +2669 -0
  903. package/src/runtime/backend/node/node-socket-backend-adapter.ts +372 -0
  904. package/src/runtime/backend/node-backend-adapter.ts +19 -0
  905. package/src/runtime/backend/raw-binding-port.ts +69 -0
  906. package/src/runtime/backend/runtime-message.ts +51 -0
  907. package/src/runtime/backend/runtime-values.ts +107 -0
  908. package/src/runtime/channels/channel-autoconnect.ts +46 -0
  909. package/src/runtime/channels/channel-clients.ts +527 -0
  910. package/src/runtime/channels/channel-dispatch-pipeline.ts +408 -0
  911. package/src/runtime/channels/channel-dispatch-services.ts +234 -0
  912. package/src/runtime/channels/channel-dispatchers.ts +790 -0
  913. package/src/runtime/channels/channel-envelope-inspection.ts +125 -0
  914. package/src/runtime/channels/channel-envelope.ts +743 -0
  915. package/src/runtime/channels/channel-framework-packets.ts +8 -0
  916. package/src/runtime/channels/channel-multipart.ts +61 -0
  917. package/src/runtime/channels/channel-outbound-operations.ts +584 -0
  918. package/src/runtime/channels/channel-receive-loops.ts +901 -0
  919. package/src/runtime/channels/channel-receive-task-tracker.ts +39 -0
  920. package/src/runtime/channels/channel-runtime-lifecycle.ts +969 -0
  921. package/src/runtime/channels/channel-runtime-manager.ts +444 -0
  922. package/src/runtime/channels/channel-socket-options.ts +153 -0
  923. package/src/runtime/channels/channel-socket-registry.ts +1837 -0
  924. package/src/runtime/channels/channel-transports.ts +1154 -0
  925. package/src/runtime/channels/client-server-location-runtime.ts +576 -0
  926. package/src/runtime/channels/client-server-service-wire.ts +390 -0
  927. package/src/runtime/channels/dispatch-error-reporter.ts +165 -0
  928. package/src/runtime/channels/fanout-location-runtime.ts +459 -0
  929. package/src/runtime/channels/fanout-service-wire.ts +43 -0
  930. package/src/runtime/channels/handler-filter-scope.ts +29 -0
  931. package/src/runtime/channels/index.ts +45 -0
  932. package/src/runtime/channels/local-spot-route-transport.ts +59 -0
  933. package/src/runtime/channels/route-disconnected-error.ts +6 -0
  934. package/src/runtime/channels/route-member-snapshot.ts +55 -0
  935. package/src/runtime/channels/router-socket-spot-route-transport.ts +77 -0
  936. package/src/runtime/channels/source-spot-router.ts +89 -0
  937. package/src/runtime/channels/spot-direct-envelope.ts +44 -0
  938. package/src/runtime/channels/spot-node-route-transport.ts +92 -0
  939. package/src/runtime/channels/spot-route-bridge-transport.ts +75 -0
  940. package/src/runtime/channels/spot-route-dispatch-strategy.ts +329 -0
  941. package/src/runtime/channels/spot-route-target-resolver.ts +101 -0
  942. package/src/runtime/codecs/index.ts +69 -0
  943. package/src/runtime/configuration/index.ts +1 -0
  944. package/src/runtime/diagnostics/dispatch-error-port.ts +8 -0
  945. package/src/runtime/diagnostics/flow-context.ts +84 -0
  946. package/src/runtime/diagnostics/index.ts +441 -0
  947. package/src/runtime/diagnostics/internal-event-contracts.ts +135 -0
  948. package/src/runtime/diagnostics/message-flow.ts +560 -0
  949. package/src/runtime/diagnostics/runtime-metrics.ts +601 -0
  950. package/src/runtime/diagnostics/runtime-observation-queue.ts +362 -0
  951. package/src/runtime/diagnostics/topology-runtime-projections.ts +298 -0
  952. package/src/runtime/execution/index.ts +466 -0
  953. package/src/runtime/execution/serial-execution-queue.ts +534 -0
  954. package/src/runtime/execution/serial-work-size.ts +31 -0
  955. package/src/runtime/execution/state-lane.ts +116 -0
  956. package/src/runtime/foundation/actor-join-recovery-codec.ts +465 -0
  957. package/src/runtime/foundation/event-loop-resources.ts +162 -0
  958. package/src/runtime/foundation/index.ts +18 -0
  959. package/src/runtime/foundation/message-follow-suppression-registry.ts +130 -0
  960. package/src/runtime/foundation/operation-identity.ts +49 -0
  961. package/src/runtime/foundation/operation-registry.ts +162 -0
  962. package/src/runtime/foundation/raw-service-mesh-runtime.ts +1771 -0
  963. package/src/runtime/foundation/route-mesh-connection-policy.ts +28 -0
  964. package/src/runtime/foundation/runtime-state-projections.ts +68 -0
  965. package/src/runtime/foundation/service-authority-payload-codec.ts +566 -0
  966. package/src/runtime/foundation/service-discovery-registry.ts +263 -0
  967. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +329 -0
  968. package/src/runtime/foundation/service-liveness-registry.ts +144 -0
  969. package/src/runtime/foundation/service-mailbox.ts +369 -0
  970. package/src/runtime/foundation/service-maintenance-runtime.ts +242 -0
  971. package/src/runtime/foundation/service-metadata-codec.ts +75 -0
  972. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +218 -0
  973. package/src/runtime/foundation/service-relocation-coordinator.ts +37 -0
  974. package/src/runtime/foundation/service-relocation-object-owner.ts +428 -0
  975. package/src/runtime/foundation/service-relocation-runtime.ts +1407 -0
  976. package/src/runtime/foundation/service-runtime-contracts.ts +423 -0
  977. package/src/runtime/foundation/service-session-binding-ingress-port.ts +45 -0
  978. package/src/runtime/foundation/service-stateful-registry.ts +664 -0
  979. package/src/runtime/foundation/service-stateful-runtime.ts +5753 -0
  980. package/src/runtime/foundation/service-stateful-wire-codec.ts +3008 -0
  981. package/src/runtime/foundation/service-topology-registry.ts +599 -0
  982. package/src/runtime/foundation/service-weighted-selection.ts +166 -0
  983. package/src/runtime/foundation/service-wire-binary-primitives.ts +80 -0
  984. package/src/runtime/foundation/service-wire-codec.ts +91 -0
  985. package/src/runtime/foundation/service-wire-constants.generated.ts +131 -0
  986. package/src/runtime/foundation/service-wire-m6a-codec.ts +647 -0
  987. package/src/runtime/framework-errors-internal.ts +338 -0
  988. package/src/runtime/handlers/handler-instance-scope.ts +372 -0
  989. package/src/runtime/handlers/index.ts +93 -0
  990. package/src/runtime/host/actor-packet-relay.ts +1070 -0
  991. package/src/runtime/host/actor-placement-coordinator.ts +573 -0
  992. package/src/runtime/host/actor-runtime-options-factory.ts +282 -0
  993. package/src/runtime/host/actor-transfer-authority-runtime.ts +225 -0
  994. package/src/runtime/host/actor-transfer-runtime.ts +1958 -0
  995. package/src/runtime/host/application-job-queue.ts +518 -0
  996. package/src/runtime/host/bound-session-relay.ts +94 -0
  997. package/src/runtime/host/bounded-replay-map.ts +42 -0
  998. package/src/runtime/host/channel-runtime-options-factory.ts +104 -0
  999. package/src/runtime/host/entry-actor-runtime.ts +115 -0
  1000. package/src/runtime/host/host-capacity-status.ts +103 -0
  1001. package/src/runtime/host/index.ts +3492 -0
  1002. package/src/runtime/host/instance-activation-authority.ts +658 -0
  1003. package/src/runtime/host/location-runtime-owner.ts +313 -0
  1004. package/src/runtime/host/mesh-router-resolver.ts +114 -0
  1005. package/src/runtime/host/relocation-direct-transfer.ts +273 -0
  1006. package/src/runtime/host/relocation-integrity-fault-gate.ts +8 -0
  1007. package/src/runtime/host/relocation-state-adapter.ts +24 -0
  1008. package/src/runtime/host/remote-actor-join-receiver.ts +264 -0
  1009. package/src/runtime/host/remote-actor-packet-target-store.ts +244 -0
  1010. package/src/runtime/host/remote-bound-session-relay.ts +900 -0
  1011. package/src/runtime/host/route-mesh-runtime-options.ts +46 -0
  1012. package/src/runtime/host/route-mesh-runtime.ts +891 -0
  1013. package/src/runtime/host/runtime-shutdown.ts +101 -0
  1014. package/src/runtime/host/service-relocation-control.ts +28 -0
  1015. package/src/runtime/host/service-relocation-host-runtime.ts +5817 -0
  1016. package/src/runtime/host/spot-address-transport.ts +997 -0
  1017. package/src/runtime/host/spot-node-runtime-options-factory.ts +82 -0
  1018. package/src/runtime/host/spot-runtime-options-factory.ts +286 -0
  1019. package/src/runtime/host/stateful-authority-route-runtime.ts +662 -0
  1020. package/src/runtime/host/user-spot-creation-coordinator.ts +1176 -0
  1021. package/src/runtime/locations/actor-location-claims.ts +426 -0
  1022. package/src/runtime/locations/actor-session-route-claims.ts +64 -0
  1023. package/src/runtime/locations/aggregate-inventory-store.ts +581 -0
  1024. package/src/runtime/locations/authority-key-codec.ts +80 -0
  1025. package/src/runtime/locations/auto-connect-loop.ts +131 -0
  1026. package/src/runtime/locations/auto-connect-planner.ts +178 -0
  1027. package/src/runtime/locations/auto-connect-reconciler.ts +425 -0
  1028. package/src/runtime/locations/auto-connect-types.ts +62 -0
  1029. package/src/runtime/locations/auto-connect.ts +4 -0
  1030. package/src/runtime/locations/canonical-codec.ts +54 -0
  1031. package/src/runtime/locations/domain-store-contract.ts +149 -0
  1032. package/src/runtime/locations/in-memory-authority-store.ts +1172 -0
  1033. package/src/runtime/locations/in-memory-location-store.ts +1467 -0
  1034. package/src/runtime/locations/in-memory-provider-location-store.ts +213 -0
  1035. package/src/runtime/locations/index.ts +11 -0
  1036. package/src/runtime/locations/internal-location-contracts.ts +22 -0
  1037. package/src/runtime/locations/internal-store-contracts.ts +90 -0
  1038. package/src/runtime/locations/key-codec.ts +61 -0
  1039. package/src/runtime/locations/lease-tracker.ts +221 -0
  1040. package/src/runtime/locations/lifecycle-runtime.ts +44 -0
  1041. package/src/runtime/locations/lifecycle.ts +272 -0
  1042. package/src/runtime/locations/location-store-repository.ts +4211 -0
  1043. package/src/runtime/locations/relocation-blob.ts +36 -0
  1044. package/src/runtime/locations/resolvers.ts +1054 -0
  1045. package/src/runtime/locations/runtime.ts +1126 -0
  1046. package/src/runtime/locations/spot-location-claims.ts +435 -0
  1047. package/src/runtime/messaging/creation-payload-codec.ts +59 -0
  1048. package/src/runtime/messaging/framework-json-v1.ts +307 -0
  1049. package/src/runtime/messaging/index.ts +1 -0
  1050. package/src/runtime/messaging/packet-name.ts +94 -0
  1051. package/src/runtime/messaging/payload-codec.ts +418 -0
  1052. package/src/runtime/messaging/submission-result.ts +61 -0
  1053. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +189 -0
  1054. package/src/runtime/routing-id.ts +125 -0
  1055. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +418 -0
  1056. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +147 -0
  1057. package/src/runtime/spots/index.ts +3303 -0
  1058. package/src/runtime/spots/spot-activation-registry.ts +335 -0
  1059. package/src/runtime/spots/spot-activation-state.ts +414 -0
  1060. package/src/runtime/spots/spot-activation.ts +1027 -0
  1061. package/src/runtime/spots/spot-actor-admission-coordinator.ts +354 -0
  1062. package/src/runtime/spots/spot-actor-join-dispatch.ts +303 -0
  1063. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +79 -0
  1064. package/src/runtime/spots/spot-actor-membership.ts +266 -0
  1065. package/src/runtime/spots/spot-actor-packet-dispatch.ts +593 -0
  1066. package/src/runtime/spots/spot-actor-packet-drain.ts +328 -0
  1067. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +162 -0
  1068. package/src/runtime/spots/spot-closing.ts +34 -0
  1069. package/src/runtime/spots/spot-context.ts +259 -0
  1070. package/src/runtime/spots/spot-entry-activation.ts +551 -0
  1071. package/src/runtime/spots/spot-handle.ts +101 -0
  1072. package/src/runtime/spots/spot-handler-registry.ts +273 -0
  1073. package/src/runtime/spots/spot-lifecycle-metrics.ts +15 -0
  1074. package/src/runtime/spots/spot-location-claim.ts +86 -0
  1075. package/src/runtime/spots/spot-manager-internal-contracts.ts +11 -0
  1076. package/src/runtime/spots/spot-manager-public.ts +361 -0
  1077. package/src/runtime/spots/spot-native-actor-join-admission.ts +151 -0
  1078. package/src/runtime/spots/spot-native-flags.ts +4 -0
  1079. package/src/runtime/spots/spot-node-autoconnect.ts +325 -0
  1080. package/src/runtime/spots/spot-node-runtime-manager.ts +1573 -0
  1081. package/src/runtime/spots/spot-outbound.ts +761 -0
  1082. package/src/runtime/spots/spot-provider.ts +36 -0
  1083. package/src/runtime/spots/spot-publisher-transport.ts +69 -0
  1084. package/src/runtime/spots/spot-remote-codec.ts +308 -0
  1085. package/src/runtime/spots/spot-remote-route-codec.ts +284 -0
  1086. package/src/runtime/spots/spot-route-packet-dispatch.ts +359 -0
  1087. package/src/runtime/spots/spot-route-replies.ts +126 -0
  1088. package/src/runtime/spots/spot-route-reply-wire.ts +15 -0
  1089. package/src/runtime/spots/spot-routed-actor-admission.ts +351 -0
  1090. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +132 -0
  1091. package/src/runtime/spots/spot-routed-frame-dispatch.ts +250 -0
  1092. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +254 -0
  1093. package/src/runtime/spots/spot-routing-internal.ts +33 -0
  1094. package/src/runtime/spots/spot-runtime-ports.ts +196 -0
  1095. package/src/runtime/spots/spot-serial-executor.ts +170 -0
  1096. package/src/runtime/spots/spot-serial-turn-executor.ts +319 -0
  1097. package/src/runtime/spots/spot-subscription-dispatch.ts +252 -0
  1098. package/src/runtime/spots/spot-timer.ts +609 -0
  1099. package/src/runtime/streams/actor-session-binding-registry.ts +1691 -0
  1100. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +78 -0
  1101. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +20 -0
  1102. package/src/runtime/streams/bound-actor-relay-sender.ts +275 -0
  1103. package/src/runtime/streams/bound-session-response-target.ts +91 -0
  1104. package/src/runtime/streams/bound-session-service.ts +500 -0
  1105. package/src/runtime/streams/index.ts +706 -0
  1106. package/src/runtime/streams/managed-stream.ts +509 -0
  1107. package/src/runtime/streams/native-fallback-bound-session.ts +321 -0
  1108. package/src/runtime/streams/protocol.ts +291 -0
  1109. package/src/runtime/streams/session-actor-coordinator.ts +605 -0
  1110. package/src/runtime/streams/session-calls.ts +221 -0
  1111. package/src/runtime/streams/session-context.ts +609 -0
  1112. package/src/runtime/streams/session-local-actors.ts +30 -0
  1113. package/src/runtime/streams/session-provider.ts +50 -0
  1114. package/src/runtime/streams/session-requests.ts +109 -0
  1115. package/src/runtime/streams/session-serial-executor.ts +97 -0
  1116. package/src/runtime/streams/stream-binding-runtime-ports.ts +106 -0
  1117. package/src/runtime/streams/stream-frame-factory.ts +255 -0
  1118. package/src/runtime/streams/stream-message-utils.ts +89 -0
  1119. package/src/runtime/streams/stream-session-runtime.ts +1420 -0
  1120. package/src/runtime/workers/index.ts +580 -0
  1121. package/tsconfig.json +17 -0
@@ -0,0 +1,1126 @@
1
+ import {
2
+ zlinkRuntimeDefaultLocationOptions,
3
+ type ZLinkLocationOptionOverrides
4
+ } from '../../contracts/Locations/Options';
5
+ import { normalizeEndpoint } from '../../contracts/Configuration/EndpointNotation';
6
+ import { randomUUID } from 'node:crypto';
7
+ import type { RoutingId } from '../../contracts/Common';
8
+ import {
9
+ ZLinkLocationAutoConnectType,
10
+ ZLinkFrameworkRuntimeState,
11
+ ZLinkLocationKind,
12
+ ZLinkLocationTopologyState,
13
+ ZLinkLocationWriteIntent,
14
+ ZLinkLocationWriteStatus,
15
+ type ZLinkLocationRuntimeQuery,
16
+ type ZLinkLocationOwnerToken,
17
+ type ZLinkOwnerLeaseRenewed,
18
+ type ZLinkActorLocation,
19
+ type ZLinkActorLocationFilter,
20
+ type ZLinkActorLocationKey,
21
+ type ZLinkLocationKey,
22
+ type ZLinkLocationPage,
23
+ type ZLinkAuthorityEntry,
24
+ type ZLinkAuthorityScanCursor,
25
+ type ZLinkLocationRuntimeStatus,
26
+ type ZLinkLocationServiceSummary,
27
+ type ZLinkLocationServiceSummaryFilter,
28
+ type ZLinkMeshNodeDescriptor,
29
+ type ZLinkLocationTopologyEntry,
30
+ type ZLinkLocationTopologyFilter,
31
+ type ZLinkLocationWriteResult,
32
+ type ZLinkAuthoritySnapshot,
33
+ type ZLinkPageRequest,
34
+ type ZLinkPeerLocation,
35
+ type ZLinkPeerLocationFilter,
36
+ type ZLinkPeerLocationKey,
37
+ type ZLinkRouteLocation,
38
+ type ZLinkRouteLocationFilter,
39
+ type ZLinkRouteLocationKey,
40
+ type ZLinkSpotLocation,
41
+ type ZLinkSpotLocationFilter,
42
+ type ZLinkSpotLocationKey
43
+ } from './internal-location-contracts';
44
+ import type {
45
+ ZLinkLocationObjectEntry,
46
+ ZLinkLocationObjectFilter
47
+ } from '../../contracts/Locations/RuntimeQuery';
48
+ import { ZLinkAuthorityScanCursor as PublicAuthorityScanCursor } from '../../contracts/Locations/Authority';
49
+ import { decodeAuthorityKey, encodeAuthorityKey } from './authority-key-codec';
50
+ import type {
51
+ ZLinkActorLocationStore,
52
+ ZLinkActorLocationQueryStore,
53
+ ZLinkAuthorityStore,
54
+ ZLinkClientServerLocationStore,
55
+ ZLinkFanoutLocationStore,
56
+ ZLinkOwnerLeaseStore,
57
+ ZLinkPeerLocationStore,
58
+ ZLinkRouteLocationStore,
59
+ ZLinkSpotLocationStore,
60
+ ZLinkSpotLocationQueryStore
61
+ } from './internal-store-contracts';
62
+ import type { ZLinkDomainLocationStore } from './domain-store-contract';
63
+ import {
64
+ zlinkLocationAutoConnectTypeName,
65
+ zlinkLocationRoleName
66
+ } from './canonical-codec';
67
+ import { ZLinkLocationKeyCodec } from './key-codec';
68
+ import {
69
+ ZLinkLiveRowFilter,
70
+ ZLinkOwnerLeaseTracker
71
+ } from './lease-tracker';
72
+ import type { ZLinkOwnershipLostEvent } from './lifecycle-runtime';
73
+
74
+ export interface ZLinkLocationRuntimeStores {
75
+ readonly locationStore: ZLinkDomainLocationStore;
76
+ readonly authorityStore: ZLinkAuthorityStore;
77
+ readonly clientServerStore?: ZLinkClientServerLocationStore;
78
+ readonly fanoutStore?: ZLinkFanoutLocationStore;
79
+ readonly peerStore: ZLinkPeerLocationStore;
80
+ readonly spotStore: ZLinkSpotLocationStore;
81
+ readonly actorStore: ZLinkActorLocationStore;
82
+ readonly routeStore: ZLinkRouteLocationStore;
83
+ readonly ownerLeaseStore: ZLinkOwnerLeaseStore;
84
+ }
85
+
86
+ export interface ZLinkLocationRuntimeOptions {
87
+ readonly stores: ZLinkLocationRuntimeStores;
88
+ readonly options?: ZLinkLocationOptionOverrides;
89
+ readonly ownerId?: string;
90
+ readonly events?: ZLinkLocationEventSink;
91
+ readonly leaseTracker?: ZLinkOwnerLeaseTracker;
92
+ readonly now?: () => Date;
93
+ readonly monotonicNowMs?: () => number;
94
+ readonly setTimer?: (callback: () => void, delayMs: number) => unknown;
95
+ readonly clearTimer?: (handle: unknown) => void;
96
+ readonly metrics?: import('../diagnostics').ZLinkRuntimeMetrics;
97
+ readonly meshNames?: readonly string[];
98
+ readonly leaseScopes?: readonly {
99
+ readonly kind: 'mesh' | 'channel';
100
+ readonly name: string;
101
+ }[];
102
+ readonly rewriteAuthorityPayloadForOwner?: (
103
+ payload: Uint8Array,
104
+ owner: ZLinkLocationOwnerToken
105
+ ) => Uint8Array;
106
+ }
107
+
108
+ export interface ZLinkLocationEventSink {
109
+ peerRowUpdated(key: ZLinkLocationKey, peer: ZLinkPeerLocation): void;
110
+ peerRowRemoved(key: ZLinkLocationKey): void;
111
+ desiredSetChanged(change: {
112
+ readonly autoConnectType: ZLinkLocationAutoConnectType;
113
+ readonly meshName: string;
114
+ readonly connectedEndpoints: readonly string[];
115
+ readonly disconnectedEndpoints: readonly string[];
116
+ }): void;
117
+ spotRowUpdated(key: ZLinkSpotLocationKey, spot: ZLinkSpotLocation): void;
118
+ spotRowRemoved(key: ZLinkSpotLocationKey): void;
119
+ spotResolveMiss(key: ZLinkSpotLocationKey): void;
120
+ actorRowUpdated(key: ZLinkActorLocationKey, actor: ZLinkActorLocation): void;
121
+ actorRowRemoved(key: ZLinkActorLocationKey): void;
122
+ actorResolveMiss(key: ZLinkActorLocationKey): void;
123
+ routeRowUpdated(key: ZLinkRouteLocationKey, route: ZLinkRouteLocation): void;
124
+ routeRowRemoved(key: ZLinkRouteLocationKey): void;
125
+ routeResolveMiss(key: ZLinkRouteLocationKey): void;
126
+ }
127
+
128
+ export class ZLinkOwnerCleanupError extends Error {
129
+ constructor(cause: unknown) {
130
+ super(`Owner cleanup failed: ${errorMessage(cause)}`, { cause });
131
+ this.name = 'ZLinkOwnerCleanupError';
132
+ }
133
+ }
134
+
135
+ export class ZLinkLocationRuntime implements ZLinkLocationRuntimeQuery {
136
+ readonly ownerId: string;
137
+ private readonly options: Required<ZLinkLocationOptionOverrides>;
138
+ private readonly stores: ZLinkLocationRuntimeStores;
139
+ private readonly events?: ZLinkLocationEventSink;
140
+ private readonly setTimer: (callback: () => void, delayMs: number) => unknown;
141
+ private readonly clearTimer: (handle: unknown) => void;
142
+ private readonly monotonicNowMs: () => number;
143
+ private readonly liveRows: ZLinkLiveRowFilter;
144
+ private readonly ownershipLostHandlers = new Set<(event: ZLinkOwnershipLostEvent) => void>();
145
+ private readonly ownerLeaseRenewedHandlers = new Set<(renewal: ZLinkOwnerLeaseRenewed) => void>();
146
+ private readonly ownerLeaseRenewalFailedHandlers = new Set<() => void>();
147
+ private heartbeatTimer: unknown;
148
+ private heartbeatRenewal?: Promise<void>;
149
+ private nodeRidValue?: RoutingId;
150
+ private started = false;
151
+ private ownerCleanupComplete = true;
152
+ private readonly metrics?: import('../diagnostics').ZLinkRuntimeMetrics;
153
+ private readonly meshNames: readonly string[];
154
+ private readonly leaseScopes: readonly { readonly kind: 'mesh' | 'channel'; readonly name: string }[];
155
+ private readonly rewriteAuthorityPayloadForOwner?: ZLinkLocationRuntimeOptions['rewriteAuthorityPayloadForOwner'];
156
+ private nextLeaseRenewAtMs?: number;
157
+ private ownerToken?: ZLinkLocationOwnerToken;
158
+ private lastOwnerToken?: ZLinkLocationOwnerToken;
159
+ private ownerLeaseDeadlineMs?: number;
160
+
161
+ ownerLeaseHealthy = false;
162
+ ownerLeaseRenewedAt?: Date;
163
+ lastError?: string;
164
+
165
+ get ownerLeaseUsable(): boolean {
166
+ return this.ownerLeaseHealthy
167
+ && (this.ownerLeaseDeadlineMs === undefined
168
+ || this.monotonicNowMs() < this.ownerLeaseDeadlineMs);
169
+ }
170
+
171
+ constructor(runtimeOptions: ZLinkLocationRuntimeOptions) {
172
+ this.stores = runtimeOptions.stores;
173
+ this.options = { ...zlinkRuntimeDefaultLocationOptions, ...runtimeOptions.options };
174
+ this.ownerId = runtimeOptions.ownerId ?? randomUUID().replaceAll('-', '');
175
+ this.events = runtimeOptions.events;
176
+ this.metrics = runtimeOptions.metrics;
177
+ this.meshNames = [...new Set(runtimeOptions.meshNames ?? [])];
178
+ this.leaseScopes = runtimeOptions.leaseScopes ?? this.meshNames.map(name => ({ kind: 'mesh', name }));
179
+ this.rewriteAuthorityPayloadForOwner = runtimeOptions.rewriteAuthorityPayloadForOwner;
180
+ this.monotonicNowMs = runtimeOptions.monotonicNowMs ?? (() => performance.now());
181
+ this.setTimer = runtimeOptions.setTimer ?? ((callback, delayMs) => setTimeout(callback, delayMs));
182
+ this.clearTimer = runtimeOptions.clearTimer ?? ((handle) => clearTimeout(handle as NodeJS.Timeout));
183
+ const leaseTracker = runtimeOptions.leaseTracker ?? new ZLinkOwnerLeaseTracker({
184
+ store: this.stores.ownerLeaseStore,
185
+ options: this.options,
186
+ monotonicNowMs: this.monotonicNowMs
187
+ });
188
+ this.liveRows = new ZLinkLiveRowFilter(leaseTracker);
189
+ }
190
+
191
+ get isStarted(): boolean {
192
+ return this.started;
193
+ }
194
+
195
+ get nodeRid(): RoutingId | undefined {
196
+ return this.nodeRidValue;
197
+ }
198
+
199
+ get currentOwnerToken(): ZLinkLocationOwnerToken | undefined {
200
+ return this.ownerToken;
201
+ }
202
+
203
+ async reclaimOwnerAuthorities(signal?: AbortSignal): Promise<void> {
204
+ const owner = this.ownerToken;
205
+ if (owner === undefined) {
206
+ throw new Error('Authority recovery requires a claimed owner token.');
207
+ }
208
+ const entries = await this.readAllAuthorityEntries(signal);
209
+ const failures: unknown[] = [];
210
+ for (const entry of entries) {
211
+ const snapshot = entry.snapshot;
212
+ if (snapshot.ownerId !== owner.ownerId
213
+ || snapshot.ownerLeaseGeneration === owner.leaseGeneration) {
214
+ continue;
215
+ }
216
+ try {
217
+ const result = await this.stores.authorityStore.compareExchangeAuthority(
218
+ entry.key,
219
+ snapshot.storeVersion,
220
+ {
221
+ kind: 'rebindOwnerLease',
222
+ expectedOwner: {
223
+ ownerId: snapshot.ownerId,
224
+ leaseGeneration: snapshot.ownerLeaseGeneration
225
+ },
226
+ targetOwner: owner,
227
+ payload: Buffer.from(
228
+ this.rewriteAuthorityPayloadForOwner?.(snapshot.payload, owner)
229
+ ?? snapshot.payload
230
+ )
231
+ },
232
+ signal
233
+ );
234
+ if (result.kind === 'stored') continue;
235
+ if (result.kind === 'conflict') {
236
+ const current = result.current;
237
+ if (current.kind === 'snapshot'
238
+ && current.ownerId === owner.ownerId
239
+ && current.ownerLeaseGeneration === owner.leaseGeneration) {
240
+ continue;
241
+ }
242
+ continue;
243
+ }
244
+ failures.push(new Error(
245
+ `Authority '${entry.key.value}' recovery returned '${result.kind}'.`
246
+ ));
247
+ } catch (error) {
248
+ failures.push(error);
249
+ }
250
+ }
251
+ if (failures.length > 0) {
252
+ throw new AggregateError(failures, 'One or more authority records failed lease recovery.');
253
+ }
254
+ }
255
+
256
+ private async readAllAuthorityEntries(signal?: AbortSignal): Promise<ZLinkAuthorityEntry[]> {
257
+ for (;;) {
258
+ const entries: ZLinkAuthorityEntry[] = [];
259
+ let cursor: ZLinkAuthorityScanCursor | undefined;
260
+ let expired = false;
261
+ do {
262
+ const page = await this.stores.authorityStore.listAuthorities('', cursor, 1000, signal);
263
+ if (page.kind === 'scanExpired') {
264
+ expired = true;
265
+ break;
266
+ }
267
+ entries.push(...page.items);
268
+ cursor = page.nextCursor;
269
+ } while (cursor !== undefined);
270
+ if (!expired) return entries;
271
+ }
272
+ }
273
+
274
+ addOwnershipLostHandler(handler: (event: ZLinkOwnershipLostEvent) => void): void {
275
+ this.ownershipLostHandlers.add(handler);
276
+ }
277
+
278
+ removeOwnershipLostHandler(handler: (event: ZLinkOwnershipLostEvent) => void): void {
279
+ this.ownershipLostHandlers.delete(handler);
280
+ }
281
+
282
+ addOwnerLeaseRenewedHandler(handler: (renewal: ZLinkOwnerLeaseRenewed) => void): void {
283
+ this.ownerLeaseRenewedHandlers.add(handler);
284
+ }
285
+
286
+ removeOwnerLeaseRenewedHandler(handler: (renewal: ZLinkOwnerLeaseRenewed) => void): void {
287
+ this.ownerLeaseRenewedHandlers.delete(handler);
288
+ }
289
+
290
+ addOwnerLeaseRenewalFailedHandler(handler: () => void): void {
291
+ this.ownerLeaseRenewalFailedHandlers.add(handler);
292
+ }
293
+
294
+ removeOwnerLeaseRenewalFailedHandler(handler: () => void): void {
295
+ this.ownerLeaseRenewalFailedHandlers.delete(handler);
296
+ }
297
+
298
+ async start(nodeRid: RoutingId, signal?: AbortSignal): Promise<void> {
299
+ if (this.started) {
300
+ return;
301
+ }
302
+
303
+ this.started = true;
304
+ this.ownerCleanupComplete = false;
305
+ this.nodeRidValue = nodeRid;
306
+ const claimStartedAtMs = this.monotonicNowMs();
307
+ let claim: Awaited<ReturnType<ZLinkOwnerLeaseStore['claimOwnerLease']>>;
308
+ try {
309
+ claim = await withTimeout(
310
+ (claimSignal) => this.stores.ownerLeaseStore.claimOwnerLease(
311
+ this.ownerId,
312
+ this.options.ownerLeaseTtlMs,
313
+ claimSignal
314
+ ),
315
+ this.options.ownerLeaseRenewTimeoutMs,
316
+ signal
317
+ );
318
+ } catch (error) {
319
+ this.ownerLeaseHealthy = false;
320
+ this.ownerLeaseDeadlineMs = undefined;
321
+ if (signal?.aborted === true) throw error;
322
+ this.recordFailure(errorMessage(error), 'owner_lease_claim');
323
+ // A Location host can still serve transport work while the Store is
324
+ // unavailable. Keep the runtime in degraded mode so the heartbeat can
325
+ // claim a lease after recovery; no descriptor or stateful authority is
326
+ // published until that claim succeeds.
327
+ this.nextLeaseRenewAtMs = this.monotonicNowMs();
328
+ this.scheduleHeartbeat();
329
+ return;
330
+ }
331
+ const claimCompletedAtMs = this.monotonicNowMs();
332
+ if (claim.kind !== 'claimed') {
333
+ this.started = false;
334
+ this.ownerCleanupComplete = true;
335
+ throw new Error(`Owner lease claim failed with '${claim.kind}'.`);
336
+ }
337
+ this.ownerToken = claim.token;
338
+ this.ownerLeaseHealthy = true;
339
+ this.ownerLeaseRenewedAt = claim.storeNow;
340
+ this.setOwnerLeaseDeadline(
341
+ claimStartedAtMs,
342
+ claimCompletedAtMs,
343
+ claim.leaseExpiresAt,
344
+ claim.storeNow
345
+ );
346
+ this.nextLeaseRenewAtMs = this.monotonicNowMs() + this.options.ownerLeaseRenewIntervalMs;
347
+ this.scheduleHeartbeat();
348
+ }
349
+
350
+ async stop(signal?: AbortSignal): Promise<void> {
351
+ if (!this.started && this.ownerCleanupComplete) {
352
+ return;
353
+ }
354
+
355
+ this.started = false;
356
+ if (this.heartbeatTimer !== undefined) {
357
+ this.clearTimer(this.heartbeatTimer);
358
+ this.heartbeatTimer = undefined;
359
+ }
360
+ this.nextLeaseRenewAtMs = undefined;
361
+ this.ownerLeaseDeadlineMs = undefined;
362
+ await this.heartbeatRenewal;
363
+
364
+ await this.cleanupOwner(signal);
365
+ }
366
+
367
+ async cleanupOwner(signal?: AbortSignal): Promise<void> {
368
+ if (this.ownerCleanupComplete) {
369
+ return;
370
+ }
371
+ try {
372
+ const owner = this.ownerToken ?? this.lastOwnerToken ?? {
373
+ ownerId: this.ownerId,
374
+ leaseGeneration: 0n
375
+ };
376
+ await this.stores.locationStore.removeAllByOwner(owner, signal);
377
+ const currentLease = await this.stores.ownerLeaseStore.readOwnerLease(this.ownerId, signal);
378
+ if (currentLease.kind === 'found') {
379
+ await this.stores.ownerLeaseStore.releaseOwnerLease(currentLease.token, signal);
380
+ }
381
+ this.ownerToken = undefined;
382
+ this.lastOwnerToken = undefined;
383
+ this.ownerCleanupComplete = true;
384
+ } catch (error) {
385
+ this.recordFailure(errorMessage(error));
386
+ throw new ZLinkOwnerCleanupError(error);
387
+ }
388
+ }
389
+
390
+ async renewOwnerLeaseOnce(signal?: AbortSignal): Promise<boolean> {
391
+ if (!this.started) {
392
+ return false;
393
+ }
394
+ if (this.ownerToken === undefined) {
395
+ return await this.claimFreshOwnerLease(signal);
396
+ }
397
+
398
+ try {
399
+ const renewStartedAtMs = this.monotonicNowMs();
400
+ const result = await withTimeout(
401
+ (renewSignal) => this.stores.ownerLeaseStore.renewOwnerLease(
402
+ this.ownerToken as ZLinkLocationOwnerToken,
403
+ this.options.ownerLeaseTtlMs,
404
+ renewSignal
405
+ ),
406
+ this.options.ownerLeaseRenewTimeoutMs,
407
+ signal
408
+ );
409
+ const renewCompletedAtMs = this.monotonicNowMs();
410
+ if (result.kind !== 'renewed') {
411
+ // The provider may have been restarted with an empty store. The
412
+ // previous token can no longer be renewed, so the next heartbeat must
413
+ // perform a fresh claim rather than retrying the stale token forever.
414
+ this.lastOwnerToken = this.ownerToken;
415
+ this.ownerToken = undefined;
416
+ this.ownerLeaseHealthy = false;
417
+ this.ownerLeaseDeadlineMs = undefined;
418
+ this.recordFailure('Owner lease token is stale.');
419
+ for (const handler of this.ownerLeaseRenewalFailedHandlers) handler();
420
+ // The store has already told us that this owner token cannot be
421
+ // renewed. Claim immediately so descriptor recovery does not wait for
422
+ // another heartbeat interval.
423
+ return await this.claimFreshOwnerLease(signal);
424
+ }
425
+ this.ownerLeaseHealthy = true;
426
+ this.ownerLeaseRenewedAt = result.storeNow;
427
+ this.setOwnerLeaseDeadline(
428
+ renewStartedAtMs,
429
+ renewCompletedAtMs,
430
+ result.leaseExpiresAt,
431
+ result.storeNow
432
+ );
433
+ this.lastError = undefined;
434
+ for (const handler of this.ownerLeaseRenewedHandlers) handler(result);
435
+ return true;
436
+ } catch (error) {
437
+ if (signal?.aborted === true) throw error;
438
+ this.recordOwnerLeaseRenewFailure();
439
+ this.recordFailure(errorMessage(error), 'lease_renew');
440
+ for (const handler of this.ownerLeaseRenewalFailedHandlers) handler();
441
+ return false;
442
+ }
443
+ }
444
+
445
+ private async claimFreshOwnerLease(signal?: AbortSignal): Promise<boolean> {
446
+ try {
447
+ const claimStartedAtMs = this.monotonicNowMs();
448
+ const claim = await withTimeout(
449
+ (claimSignal) => this.stores.ownerLeaseStore.claimOwnerLease(
450
+ this.ownerId,
451
+ this.options.ownerLeaseTtlMs,
452
+ claimSignal
453
+ ),
454
+ this.options.ownerLeaseRenewTimeoutMs,
455
+ signal
456
+ );
457
+ const claimCompletedAtMs = this.monotonicNowMs();
458
+ if (claim.kind !== 'claimed') {
459
+ this.recordFailure(`Owner lease claim failed with '${claim.kind}'.`, 'owner_lease_claim');
460
+ return false;
461
+ }
462
+ if (!this.started) {
463
+ // stop() may have completed while the Store claim was in flight. Do
464
+ // not install a token into a stopped runtime or leave an orphan lease.
465
+ await this.stores.ownerLeaseStore.releaseOwnerLease(claim.token).catch(() => undefined);
466
+ return false;
467
+ }
468
+ this.lastOwnerToken = this.ownerToken;
469
+ this.ownerToken = claim.token;
470
+ this.ownerLeaseHealthy = true;
471
+ this.ownerLeaseRenewedAt = claim.storeNow;
472
+ this.setOwnerLeaseDeadline(
473
+ claimStartedAtMs,
474
+ claimCompletedAtMs,
475
+ claim.leaseExpiresAt,
476
+ claim.storeNow
477
+ );
478
+ this.lastError = undefined;
479
+ this.nextLeaseRenewAtMs = this.monotonicNowMs() + this.options.ownerLeaseRenewIntervalMs;
480
+ for (const handler of this.ownerLeaseRenewedHandlers) {
481
+ handler({
482
+ kind: 'renewed',
483
+ leaseExpiresAt: claim.leaseExpiresAt,
484
+ storeNow: claim.storeNow
485
+ });
486
+ }
487
+ return true;
488
+ } catch (error) {
489
+ if (signal?.aborted === true) throw error;
490
+ this.recordOwnerLeaseRenewFailure();
491
+ this.recordFailure(errorMessage(error), 'owner_lease_claim');
492
+ return false;
493
+ }
494
+ }
495
+
496
+ private setOwnerLeaseDeadline(
497
+ requestStartedAtMs: number,
498
+ requestCompletedAtMs: number,
499
+ leaseExpiresAt: Date,
500
+ storeNow: Date
501
+ ): void {
502
+ const roundTripMs = Math.max(0, requestCompletedAtMs - requestStartedAtMs);
503
+ const remainingTtlMs = Math.max(0, leaseExpiresAt.getTime() - storeNow.getTime());
504
+ // The Store's remaining TTL is measured at an unknown point during the
505
+ // request. Subtract the full observed round trip and the fencing margin
506
+ // so local eligibility cannot outlive the conservative pre-request bound.
507
+ this.ownerLeaseDeadlineMs = requestCompletedAtMs + Math.max(
508
+ 0,
509
+ remainingTtlMs - roundTripMs - this.options.ownerLeaseFencingMarginMs
510
+ );
511
+ }
512
+
513
+ async publishDraining(signal?: AbortSignal): Promise<boolean> {
514
+ try {
515
+ const peers = await this.stores.peerStore.listPeers({}, signal);
516
+ for (const peer of peers) {
517
+ if (peer.ownerId !== this.ownerId || peer.draining) continue;
518
+ const result = await this.stores.peerStore.updatePeer(
519
+ { ...peer, draining: true },
520
+ ZLinkLocationWriteIntent.Renew,
521
+ signal
522
+ );
523
+ if (result.status !== ZLinkLocationWriteStatus.Stored) return false;
524
+ }
525
+ return true;
526
+ } catch (error) {
527
+ this.recordFailure(errorMessage(error));
528
+ return false;
529
+ }
530
+ }
531
+
532
+ async writeMeshNode(
533
+ descriptor: Omit<
534
+ ZLinkMeshNodeDescriptor,
535
+ 'ownerId' | 'leaseGeneration' | 'updatedAt'
536
+ >,
537
+ intent: ZLinkLocationWriteIntent,
538
+ signal?: AbortSignal
539
+ ): Promise<ZLinkLocationWriteResult> {
540
+ const owner = this.ownerToken;
541
+ if (owner === undefined) {
542
+ throw new Error('MeshNode descriptor write requires a claimed owner token.');
543
+ }
544
+ const stamped: ZLinkMeshNodeDescriptor = {
545
+ ...descriptor,
546
+ ownerId: owner.ownerId,
547
+ leaseGeneration: owner.leaseGeneration,
548
+ // The canonical opaque descriptor carries the time of this write.
549
+ // It is part of the stored envelope, so it must be stamped before
550
+ // handing the descriptor to the provider rather than only on the
551
+ // in-process result after the write completes.
552
+ updatedAt: new Date()
553
+ };
554
+ let result = await this.guardWrite(() =>
555
+ this.stores.locationStore.updateMeshNode(stamped, intent, signal));
556
+ if (
557
+ intent === ZLinkLocationWriteIntent.Renew
558
+ && (result.status === ZLinkLocationWriteStatus.RejectedConflict
559
+ || result.status === ZLinkLocationWriteStatus.IgnoredStale)
560
+ ) {
561
+ // A Store restart can remove the descriptor while retaining the
562
+ // in-process owner token. Renew cannot recreate an absent row, so use
563
+ // NewClaim as a bounded fallback. If another owner has recreated the
564
+ // row, NewClaim remains rejected and the caller keeps the conflict.
565
+ result = await this.guardWrite(() =>
566
+ this.stores.locationStore.updateMeshNode(
567
+ stamped,
568
+ ZLinkLocationWriteIntent.NewClaim,
569
+ signal
570
+ ));
571
+ }
572
+ this.notifyIfStale(
573
+ result,
574
+ ZLinkLocationKind.Peer,
575
+ `${descriptor.meshName}\0${String(descriptor.rid)}`
576
+ );
577
+ return result;
578
+ }
579
+
580
+ async writePeer(
581
+ peer: ZLinkPeerLocation,
582
+ intent: ZLinkLocationWriteIntent,
583
+ signal?: AbortSignal
584
+ ): Promise<ZLinkLocationWriteResult> {
585
+ zlinkLocationAutoConnectTypeName(peer.autoConnectType);
586
+ zlinkLocationRoleName(peer.role);
587
+ // Normalize on write, not just on listPeerLocations()'s read: the row
588
+ // key is derived from this same endpoint, and a caller round-tripping a
589
+ // row it just read (e.g. to remove it) must compute the same key the
590
+ // row was stored under.
591
+ const normalizedEndpoint = normalizeEndpoint(peer.endpoint);
592
+ const stamped = { ...peer, endpoint: normalizedEndpoint, ownerId: this.ownerId };
593
+ const result = await this.guardWrite(() => this.stores.peerStore.updatePeer(stamped, intent, signal));
594
+ const key: ZLinkPeerLocationKey = {
595
+ autoConnectType: peer.autoConnectType,
596
+ meshName: peer.meshName,
597
+ role: peer.role,
598
+ nodeRid: peer.nodeRid,
599
+ endpoint: normalizedEndpoint
600
+ };
601
+ const rowKey = ZLinkLocationKeyCodec.encodePeerKey(key);
602
+ if (result.status === ZLinkLocationWriteStatus.Stored) {
603
+ this.events?.peerRowUpdated({ kind: ZLinkLocationKind.Peer, key }, { ...stamped, generation: result.generation, updatedAt: result.updatedAt });
604
+ }
605
+ this.notifyIfStale(result, ZLinkLocationKind.Peer, rowKey);
606
+ return result;
607
+ }
608
+
609
+ async writeSpot(
610
+ spot: ZLinkSpotLocation,
611
+ intent: ZLinkLocationWriteIntent,
612
+ signal?: AbortSignal
613
+ ): Promise<ZLinkLocationWriteResult> {
614
+ const owner = this.ownerToken;
615
+ if (owner === undefined) throw new Error('Spot location write requires a claimed owner token.');
616
+ const stamped = { ...spot, ownerId: owner.ownerId, leaseGeneration: owner.leaseGeneration };
617
+ const result = await this.guardWrite(() => this.stores.spotStore.updateSpot(stamped, intent, signal));
618
+ const key = { meshName: spot.meshName, spotId: spot.spotId };
619
+ if (result.status === ZLinkLocationWriteStatus.Stored) {
620
+ this.events?.spotRowUpdated(key, { ...stamped, updatedAt: result.updatedAt });
621
+ }
622
+ this.notifyIfStale(result, ZLinkLocationKind.Spot, ZLinkLocationKeyCodec.encodeSpotKey(key));
623
+ return result;
624
+ }
625
+
626
+ async writeActor(
627
+ actor: ZLinkActorLocation,
628
+ intent: ZLinkLocationWriteIntent,
629
+ signal?: AbortSignal
630
+ ): Promise<ZLinkLocationWriteResult> {
631
+ const owner = this.ownerToken;
632
+ if (owner === undefined) throw new Error('Actor location write requires a claimed owner token.');
633
+ const stamped = {
634
+ ...actor,
635
+ actorType: actor.actorType,
636
+ ownerId: owner.ownerId,
637
+ leaseGeneration: owner.leaseGeneration
638
+ };
639
+ const result = await this.guardWrite(() => this.stores.actorStore.updateActor(stamped, intent, signal));
640
+ const key = { meshName: stamped.meshName, actorId: stamped.actorId };
641
+ if (result.status === ZLinkLocationWriteStatus.Stored) {
642
+ this.events?.actorRowUpdated(key, { ...stamped, updatedAt: result.updatedAt });
643
+ }
644
+ this.notifyIfStale(result, ZLinkLocationKind.Actor, ZLinkLocationKeyCodec.encodeActorKey(key));
645
+ return result;
646
+ }
647
+
648
+ async writeRoute(
649
+ route: ZLinkRouteLocation,
650
+ intent: ZLinkLocationWriteIntent,
651
+ signal?: AbortSignal
652
+ ): Promise<ZLinkLocationWriteResult> {
653
+ const stamped = { ...route, ownerId: this.ownerId };
654
+ const result = await this.guardWrite(() => this.stores.routeStore.updateRoute(stamped, intent, signal));
655
+ const key = { routeKind: route.routeKind, routeKey: route.routeKey };
656
+ if (result.status === ZLinkLocationWriteStatus.Stored) {
657
+ this.events?.routeRowUpdated(key, { ...stamped, generation: result.generation, updatedAt: result.updatedAt });
658
+ }
659
+ this.notifyIfStale(result, ZLinkLocationKind.Route, ZLinkLocationKeyCodec.encodeRouteKey(key));
660
+ return result;
661
+ }
662
+
663
+ async removePeer(key: ZLinkPeerLocationKey, generation: bigint, signal?: AbortSignal): Promise<ZLinkLocationWriteResult> {
664
+ const result = await this.guardWrite(() =>
665
+ this.stores.peerStore.removePeer(
666
+ key, { ownerId: this.ownerId, leaseGeneration: generation }, signal));
667
+ if (result.status === ZLinkLocationWriteStatus.Stored) {
668
+ this.events?.peerRowRemoved({ kind: ZLinkLocationKind.Peer, key });
669
+ }
670
+ this.notifyIfStale(result, ZLinkLocationKind.Peer, ZLinkLocationKeyCodec.encodePeerKey(key));
671
+ return result;
672
+ }
673
+
674
+ async removeSpot(key: ZLinkSpotLocationKey, generation: bigint, signal?: AbortSignal): Promise<ZLinkLocationWriteStatus> {
675
+ const status = await this.guardStatusWrite(() =>
676
+ this.stores.spotStore.removeSpot(
677
+ key, { ownerId: this.ownerId, leaseGeneration: generation }, signal));
678
+ if (status === ZLinkLocationWriteStatus.Stored) {
679
+ this.events?.spotRowRemoved(key);
680
+ }
681
+ this.notifyIfStaleStatus(status, ZLinkLocationKind.Spot, ZLinkLocationKeyCodec.encodeSpotKey(key));
682
+ return status;
683
+ }
684
+
685
+ async removeActor(key: ZLinkActorLocationKey, generation: bigint, signal?: AbortSignal): Promise<ZLinkLocationWriteStatus> {
686
+ const status = await this.guardStatusWrite(() =>
687
+ this.stores.actorStore.removeActor(
688
+ key, { ownerId: this.ownerId, leaseGeneration: generation }, signal));
689
+ if (status === ZLinkLocationWriteStatus.Stored) {
690
+ this.events?.actorRowRemoved(key);
691
+ }
692
+ this.notifyIfStaleStatus(status, ZLinkLocationKind.Actor, ZLinkLocationKeyCodec.encodeActorKey(key));
693
+ return status;
694
+ }
695
+
696
+ async removeRoute(key: ZLinkRouteLocationKey, generation: bigint, signal?: AbortSignal): Promise<ZLinkLocationWriteResult> {
697
+ const result = await this.guardWrite(() =>
698
+ this.stores.routeStore.removeRoute(
699
+ key, { ownerId: this.ownerId, leaseGeneration: generation }, signal));
700
+ if (result.status === ZLinkLocationWriteStatus.Stored) {
701
+ this.events?.routeRowRemoved(key);
702
+ }
703
+ this.notifyIfStale(result, ZLinkLocationKind.Route, ZLinkLocationKeyCodec.encodeRouteKey(key));
704
+ return result;
705
+ }
706
+
707
+ async getStatus(): Promise<ZLinkLocationRuntimeStatus> {
708
+ return {
709
+ storeHealthy: this.lastError === undefined,
710
+ watchEnabled: false,
711
+ pollingIntervalMs: this.options.pollingIntervalMs,
712
+ lastRefreshAt: this.ownerLeaseRenewedAt,
713
+ lastError: this.lastError,
714
+ ownerLeaseHealthy: this.ownerLeaseUsable,
715
+ ownerLeaseRenewedAt: this.ownerLeaseRenewedAt
716
+ };
717
+ }
718
+
719
+ reportDiscoveryFailure(error: unknown): void {
720
+ this.recordFailure(errorMessage(error), 'read');
721
+ }
722
+
723
+ async listPeerLocations(filter: ZLinkPeerLocationFilter, signal?: AbortSignal): Promise<readonly ZLinkPeerLocation[]> {
724
+ const rows = await this.stores.peerStore.listPeers(filter, signal);
725
+ const live = await this.filterLive(rows, (row) => row.ownerId, signal);
726
+ // Location Store rows may have been written before this process adopted
727
+ // the endpoint-notation policy, or by another language/version's writer.
728
+ // Normalize on read so every comparison downstream sees the canonical
729
+ // form regardless of what the store actually holds.
730
+ return live.map((row) => ({ ...row, endpoint: normalizeEndpoint(row.endpoint) }));
731
+ }
732
+
733
+ async listLiveMeshNodes(
734
+ meshName: string,
735
+ signal?: AbortSignal
736
+ ): Promise<readonly ZLinkMeshNodeDescriptor[]> {
737
+ const rows = (await this.stores.locationStore.listMeshNodes(meshName, undefined, signal)).items;
738
+ const live = await this.filterLive(rows, (row) => row.ownerId, signal);
739
+ return live.map((row) => ({ ...row, endpoint: normalizeEndpoint(row.endpoint) }));
740
+ }
741
+
742
+ async listMeshNodeDescriptors(
743
+ meshName: string,
744
+ page?: ZLinkPageRequest,
745
+ signal?: AbortSignal
746
+ ): Promise<ZLinkLocationPage<ZLinkMeshNodeDescriptor>> {
747
+ const rows = await this.stores.locationStore.listMeshNodes(meshName, this.pageRequest(page), signal);
748
+ const live = await this.filterLive(rows.items, (row) => row.ownerId, signal);
749
+ return {
750
+ items: live.map((row) => ({ ...row, endpoint: normalizeEndpoint(row.endpoint) })),
751
+ continuationToken: rows.continuationToken
752
+ };
753
+ }
754
+
755
+ async listSpotLocations(
756
+ filter: ZLinkSpotLocationFilter,
757
+ page?: ZLinkPageRequest,
758
+ signal?: AbortSignal
759
+ ): Promise<ZLinkLocationPage<ZLinkSpotLocation>> {
760
+ const queryStore = this.stores.spotStore as ZLinkSpotLocationStore
761
+ & Partial<ZLinkSpotLocationQueryStore>;
762
+ if (queryStore.listSpots === undefined) {
763
+ throw new Error('The configured Spot location store does not provide operational list queries.');
764
+ }
765
+ const rows = await queryStore.listSpots(filter, this.pageRequest(page), signal);
766
+ return {
767
+ items: await this.filterLive(rows.items, (row) => row.ownerId, signal),
768
+ continuationToken: rows.continuationToken
769
+ };
770
+ }
771
+
772
+ async listActorLocations(
773
+ filter: ZLinkActorLocationFilter,
774
+ page?: ZLinkPageRequest,
775
+ signal?: AbortSignal
776
+ ): Promise<ZLinkLocationPage<ZLinkActorLocation>> {
777
+ const queryStore = this.stores.actorStore as ZLinkActorLocationStore
778
+ & Partial<ZLinkActorLocationQueryStore>;
779
+ if (queryStore.listActors === undefined) {
780
+ throw new Error('The configured Actor location store does not provide operational list queries.');
781
+ }
782
+ const rows = await queryStore.listActors(filter, this.pageRequest(page), signal);
783
+ return {
784
+ items: await this.filterLive(rows.items, (row) => row.ownerId, signal),
785
+ continuationToken: rows.continuationToken
786
+ };
787
+ }
788
+
789
+ async listObjectLocations(
790
+ filter: ZLinkLocationObjectFilter,
791
+ page: ZLinkPageRequest = {},
792
+ signal?: AbortSignal
793
+ ): Promise<ZLinkLocationPage<ZLinkLocationObjectEntry>> {
794
+ const normalizedPage = this.pageRequest(page);
795
+ const pageSize = normalizedPage.pageSize ?? this.options.listPageSize;
796
+ const requestedCursor = normalizedPage.continuationToken;
797
+ let cursor = requestedCursor === undefined
798
+ ? undefined
799
+ : PublicAuthorityScanCursor.from(requestedCursor);
800
+ const items: ZLinkLocationObjectEntry[] = [];
801
+ for (;;) {
802
+ // Keep the Store cursor at the public page boundary. Scanning 1000 rows
803
+ // and returning only a smaller page would discard the unreturned rows.
804
+ const result = await this.stores.authorityStore.listAuthorities('', cursor, pageSize, signal);
805
+ if (result.kind === 'scanExpired') {
806
+ throw new Error('The authority query snapshot expired.');
807
+ }
808
+ for (const entry of result.items) {
809
+ const identity = decodeAuthorityKey(entry.key);
810
+ const allocation = entry.snapshot.allocation;
811
+ if (allocation.objectKind !== filter.objectKind
812
+ || (filter.stableType !== undefined && allocation.stableType !== filter.stableType)
813
+ || (filter.meshName !== undefined && allocation.descriptor.meshName !== filter.meshName)
814
+ ) continue;
815
+ const live = await this.liveRows.resolve(
816
+ entry,
817
+ (candidate) => candidate.snapshot.ownerId,
818
+ signal
819
+ ) !== undefined;
820
+ items.push(this.objectLocationEntry(identity.globalId, entry.snapshot, live));
821
+ if (items.length >= pageSize) break;
822
+ }
823
+ const nextCursor = result.nextCursor;
824
+ if (items.length >= pageSize || nextCursor === undefined) {
825
+ return {
826
+ items,
827
+ continuationToken: nextCursor?.encoded
828
+ };
829
+ }
830
+ cursor = nextCursor;
831
+ }
832
+ }
833
+
834
+ async findActorLocation(
835
+ actorId: import('../../contracts').ActorId,
836
+ signal?: AbortSignal
837
+ ): Promise<ZLinkLocationObjectEntry | undefined> {
838
+ return await this.findObjectLocation('actor', String(actorId), signal);
839
+ }
840
+
841
+ async findSpotLocation(
842
+ spotId: import('../../contracts').SpotId,
843
+ signal?: AbortSignal
844
+ ): Promise<ZLinkLocationObjectEntry | undefined> {
845
+ const found = await this.stores.authorityStore.readAuthority(
846
+ encodeAuthorityKey('user_spot', String(spotId)),
847
+ signal
848
+ );
849
+ if (found.kind === 'missing' || found.allocation.objectKind === 'actor') return undefined;
850
+ const live = await this.liveRows.resolve(found, (snapshot) => snapshot.ownerId, signal)
851
+ !== undefined;
852
+ return this.objectLocationEntry(String(spotId), found, live);
853
+ }
854
+
855
+ private async findObjectLocation(
856
+ kind: 'actor' | 'user_spot',
857
+ globalId: string,
858
+ signal?: AbortSignal
859
+ ): Promise<ZLinkLocationObjectEntry | undefined> {
860
+ const found = await this.stores.authorityStore.readAuthority(
861
+ encodeAuthorityKey(kind, globalId),
862
+ signal
863
+ );
864
+ if (found.kind === 'missing' || found.allocation.objectKind !== kind) return undefined;
865
+ const live = await this.liveRows.resolve(found, (snapshot) => snapshot.ownerId, signal)
866
+ !== undefined;
867
+ return this.objectLocationEntry(globalId, found, live);
868
+ }
869
+
870
+ private objectLocationEntry(
871
+ globalId: string,
872
+ snapshot: ZLinkAuthoritySnapshot,
873
+ ownerLive: boolean
874
+ ): ZLinkLocationObjectEntry {
875
+ const allocation = snapshot.allocation;
876
+ return {
877
+ globalId,
878
+ objectGeneration: snapshot.objectGeneration,
879
+ meshName: allocation.descriptor.meshName,
880
+ nodeRid: allocation.descriptor.rid,
881
+ state: allocation.state === 'reserved'
882
+ ? 'creating'
883
+ : ownerLive ? 'ready' : 'unavailable',
884
+ stableType: allocation.stableType
885
+ };
886
+ }
887
+
888
+ async listRouteLocations(
889
+ filter: ZLinkRouteLocationFilter,
890
+ page?: ZLinkPageRequest,
891
+ signal?: AbortSignal
892
+ ): Promise<ZLinkLocationPage<ZLinkRouteLocation>> {
893
+ const rows = await this.stores.routeStore.listRoutes(filter, this.pageRequest(page), signal);
894
+ return {
895
+ items: await this.filterLive(rows.items, (row) => row.ownerId, signal),
896
+ continuationToken: rows.continuationToken
897
+ };
898
+ }
899
+
900
+ async listTopology(
901
+ filter: ZLinkLocationTopologyFilter,
902
+ page?: ZLinkPageRequest,
903
+ signal?: AbortSignal
904
+ ): Promise<ZLinkLocationPage<ZLinkLocationTopologyEntry>> {
905
+ const entries: ZLinkLocationTopologyEntry[] = [];
906
+ for (const meshName of this.meshNamesOf(filter.meshName)) {
907
+ for (const descriptor of await this.listAllMeshNodeDescriptors(meshName, signal)) {
908
+ const live = (await this.filterLive([descriptor], row => row.ownerId, signal)).length > 0;
909
+ const entry: ZLinkLocationTopologyEntry = {
910
+ meshName: descriptor.meshName,
911
+ nodeRid: descriptor.rid,
912
+ endpoint: descriptor.endpoint,
913
+ // Spec 13 §365는 relocate가 unit seal을 마치면 source가 draining으로
914
+ // 넘어간다고 정하고, §409는 draining node가 새 placement target이 되지
915
+ // 않는다고 정한다. Host lifecycle의 `Draining`만 보면 relocate로 빠지는
916
+ // node가 계속 accepting으로 보인다.
917
+ draining:
918
+ descriptor.state === ZLinkFrameworkRuntimeState.Draining
919
+ || descriptor.state === ZLinkFrameworkRuntimeState.Relocating
920
+ || descriptor.state === ZLinkFrameworkRuntimeState.Relocated,
921
+ state: live ? ZLinkLocationTopologyState.Ready : ZLinkLocationTopologyState.Lost,
922
+ updatedAt: descriptor.updatedAt
923
+ };
924
+ if ((filter.nodeRid === undefined || entry.nodeRid === filter.nodeRid)
925
+ && (filter.state === undefined || entry.state === filter.state)) {
926
+ entries.push(entry);
927
+ }
928
+ }
929
+ }
930
+ return this.pageInMemory(entries, page);
931
+ }
932
+
933
+ private pageRequest(page: ZLinkPageRequest | undefined): ZLinkPageRequest {
934
+ return page?.pageSize === undefined
935
+ ? { ...page, pageSize: this.options.listPageSize }
936
+ : page;
937
+ }
938
+
939
+ async listServiceSummaries(
940
+ filter: ZLinkLocationServiceSummaryFilter,
941
+ page?: ZLinkPageRequest,
942
+ signal?: AbortSignal
943
+ ): Promise<ZLinkLocationPage<ZLinkLocationServiceSummary>> {
944
+ const summaries: ZLinkLocationServiceSummary[] = [];
945
+ for (const meshName of this.meshNamesOf(filter.meshName)) {
946
+ const descriptors = await this.listAllMeshNodeDescriptors(meshName, signal);
947
+ if (descriptors.length === 0) continue;
948
+ const live = await this.filterLive(descriptors, row => row.ownerId, signal);
949
+ const liveOwners = new Set(live.map(row => row.ownerId));
950
+ summaries.push({
951
+ meshName,
952
+ totalCount: descriptors.length,
953
+ readyCount: descriptors.filter(row => liveOwners.has(row.ownerId)).length,
954
+ errorCount: 0,
955
+ stoppedCount: descriptors.filter(row => !liveOwners.has(row.ownerId)).length,
956
+ lastUpdatedAt: descriptors.reduce(
957
+ (latest, row) => row.updatedAt > latest ? row.updatedAt : latest,
958
+ descriptors[0].updatedAt
959
+ )
960
+ });
961
+ }
962
+ return this.pageInMemory(summaries, page);
963
+ }
964
+
965
+ private meshNamesOf(meshName: string | undefined): readonly string[] {
966
+ return meshName === undefined ? this.meshNames : [meshName];
967
+ }
968
+
969
+ private async listAllMeshNodeDescriptors(
970
+ meshName: string,
971
+ signal?: AbortSignal
972
+ ): Promise<readonly ZLinkMeshNodeDescriptor[]> {
973
+ const rows: ZLinkMeshNodeDescriptor[] = [];
974
+ let continuationToken: string | undefined;
975
+ do {
976
+ const result = await this.stores.locationStore.listMeshNodes(
977
+ meshName,
978
+ { pageSize: this.options.listPageSize, continuationToken },
979
+ signal
980
+ );
981
+ rows.push(...result.items);
982
+ continuationToken = result.continuationToken;
983
+ } while (continuationToken !== undefined);
984
+ return rows;
985
+ }
986
+
987
+ private pageInMemory<T>(entries: readonly T[], page: ZLinkPageRequest | undefined): ZLinkLocationPage<T> {
988
+ const normalized = this.pageRequest(page);
989
+ const parsedOffset = Number.parseInt(normalized.continuationToken ?? '0', 10);
990
+ const offset = Number.isFinite(parsedOffset) && parsedOffset >= 0 ? parsedOffset : 0;
991
+ const pageSize = normalized.pageSize ?? this.options.listPageSize;
992
+ const items = entries.slice(offset, offset + pageSize);
993
+ const nextOffset = offset + items.length;
994
+ return {
995
+ items,
996
+ continuationToken: nextOffset < entries.length ? String(nextOffset) : undefined
997
+ };
998
+ }
999
+
1000
+ private async filterLive<TRow>(
1001
+ rows: readonly TRow[],
1002
+ ownerIdOf: (row: TRow) => string,
1003
+ signal?: AbortSignal
1004
+ ): Promise<TRow[]> {
1005
+ return await this.liveRows.filter(rows, ownerIdOf, signal);
1006
+ }
1007
+
1008
+ private scheduleHeartbeat(): void {
1009
+ if (!this.started) {
1010
+ return;
1011
+ }
1012
+ const scheduledAt = this.nextLeaseRenewAtMs
1013
+ ?? this.monotonicNowMs() + this.options.ownerLeaseRenewIntervalMs;
1014
+ const delayMs = Math.max(0, scheduledAt - this.monotonicNowMs());
1015
+ this.heartbeatTimer = this.setTimer(() => {
1016
+ this.heartbeatTimer = undefined;
1017
+ const lateness = Math.max(0, this.monotonicNowMs() - scheduledAt) / 1000;
1018
+ for (const scope of this.leaseScopes) {
1019
+ this.metrics?.recordOwnerLeaseRenewLateness(lateness, scope.kind, scope.name);
1020
+ }
1021
+ this.nextLeaseRenewAtMs = scheduledAt + this.options.ownerLeaseRenewIntervalMs;
1022
+ if (this.ownerLeaseDeadlineMs !== undefined
1023
+ && this.monotonicNowMs() >= this.ownerLeaseDeadlineMs) {
1024
+ this.ownerLeaseHealthy = false;
1025
+ this.recordFailure('Owner lease expired before renewal completed.', 'lease_expired');
1026
+ for (const handler of this.ownerLeaseRenewalFailedHandlers) handler();
1027
+ }
1028
+ const renewal = this.renewOwnerLeaseOnce().then(
1029
+ () => undefined,
1030
+ () => undefined
1031
+ ).finally(() => {
1032
+ if (this.heartbeatRenewal === renewal) {
1033
+ this.heartbeatRenewal = undefined;
1034
+ }
1035
+ this.scheduleHeartbeat();
1036
+ });
1037
+ this.heartbeatRenewal = renewal;
1038
+ void renewal;
1039
+ }, delayMs);
1040
+ }
1041
+
1042
+ private async guardWrite(write: () => Promise<ZLinkLocationWriteResult>): Promise<ZLinkLocationWriteResult> {
1043
+ try {
1044
+ return await write();
1045
+ } catch (error) {
1046
+ this.recordFailure(errorMessage(error), 'compare_exchange');
1047
+ throw error;
1048
+ }
1049
+ }
1050
+
1051
+ private async guardStatusWrite(
1052
+ write: () => Promise<ZLinkLocationWriteStatus>
1053
+ ): Promise<ZLinkLocationWriteStatus> {
1054
+ try {
1055
+ return await write();
1056
+ } catch (error) {
1057
+ this.recordFailure(errorMessage(error), 'compare_exchange');
1058
+ throw error;
1059
+ }
1060
+ }
1061
+
1062
+ private notifyIfStale(result: ZLinkLocationWriteResult, kind: ZLinkLocationKind, key: string): void {
1063
+ if (result.status === ZLinkLocationWriteStatus.IgnoredStale || result.status === ZLinkLocationWriteStatus.RejectedConflict) {
1064
+ this.metrics?.recordLocationStoreError('compare_exchange');
1065
+ }
1066
+ if (result.status !== ZLinkLocationWriteStatus.IgnoredStale) {
1067
+ return;
1068
+ }
1069
+ for (const handler of this.ownershipLostHandlers) {
1070
+ handler({ kind, key });
1071
+ }
1072
+ }
1073
+
1074
+ private notifyIfStaleStatus(status: ZLinkLocationWriteStatus, kind: ZLinkLocationKind, key: string): void {
1075
+ if (status === ZLinkLocationWriteStatus.IgnoredStale || status === ZLinkLocationWriteStatus.RejectedConflict) {
1076
+ this.metrics?.recordLocationStoreError('compare_exchange');
1077
+ }
1078
+ if (status !== ZLinkLocationWriteStatus.IgnoredStale) {
1079
+ return;
1080
+ }
1081
+ for (const handler of this.ownershipLostHandlers) {
1082
+ handler({ kind, key });
1083
+ }
1084
+ }
1085
+
1086
+ private recordFailure(message: string, operation = 'read'): void {
1087
+ this.metrics?.recordLocationStoreError(operation);
1088
+ this.ownerLeaseHealthy = false;
1089
+ this.lastError = message;
1090
+ }
1091
+
1092
+ private recordOwnerLeaseRenewFailure(): void {
1093
+ for (const scope of this.leaseScopes) {
1094
+ this.metrics?.recordOwnerLeaseRenewFailure(scope.kind, scope.name);
1095
+ }
1096
+ }
1097
+ }
1098
+
1099
+ async function withTimeout<T>(
1100
+ action: (signal: AbortSignal) => Promise<T>,
1101
+ timeoutMs: number,
1102
+ signal?: AbortSignal
1103
+ ): Promise<T> {
1104
+ const timeoutController = new AbortController();
1105
+ const operationSignal = signal === undefined
1106
+ ? timeoutController.signal
1107
+ : AbortSignal.any([signal, timeoutController.signal]);
1108
+ let timeout: ReturnType<typeof setTimeout> | undefined;
1109
+ const deadline = new Promise<never>((_resolve, reject) => {
1110
+ timeout = setTimeout(() => {
1111
+ const error = new Error(`Owner lease renewal exceeded ${timeoutMs}ms.`);
1112
+ timeoutController.abort(error);
1113
+ reject(error);
1114
+ }, timeoutMs);
1115
+ timeout.unref();
1116
+ });
1117
+ try {
1118
+ return await Promise.race([action(operationSignal), deadline]);
1119
+ } finally {
1120
+ if (timeout !== undefined) clearTimeout(timeout);
1121
+ }
1122
+ }
1123
+
1124
+ function errorMessage(error: unknown): string {
1125
+ return error instanceof Error ? error.message : String(error);
1126
+ }