@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,1707 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZLinkNodeRawMeshBackend = void 0;
4
+ exports.genericOperationFailure = genericOperationFailure;
5
+ const node_crypto_1 = require("node:crypto");
6
+ const node_socket_backend_adapter_1 = require("./node-socket-backend-adapter");
7
+ const contracts_1 = require("../../../contracts");
8
+ const framework_errors_internal_1 = require("../../framework-errors-internal");
9
+ const zlink_1 = require("@zlink-systems/zlink");
10
+ const runtime_values_1 = require("../runtime-values");
11
+ const service_runtime_contracts_1 = require("../../foundation/service-runtime-contracts");
12
+ const operation_registry_1 = require("../../foundation/operation-registry");
13
+ const raw_service_mesh_runtime_1 = require("../../foundation/raw-service-mesh-runtime");
14
+ const service_wire_m6a_codec_1 = require("../../foundation/service-wire-m6a-codec");
15
+ const service_wire_constants_generated_1 = require("../../foundation/service-wire-constants.generated");
16
+ const service_stateful_runtime_1 = require("../../foundation/service-stateful-runtime");
17
+ const service_session_binding_ingress_port_1 = require("../../foundation/service-session-binding-ingress-port");
18
+ const service_metadata_codec_1 = require("../../foundation/service-metadata-codec");
19
+ const EndpointNotation_1 = require("../../../contracts/Configuration/EndpointNotation");
20
+ const ConfigurationException_1 = require("../../../contracts/Configuration/ConfigurationException");
21
+ const MULTIPART_PACKET_NAME = service_wire_constants_generated_1.SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME;
22
+ const MULTIPART_CONTENT_TYPE = service_wire_constants_generated_1.SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE;
23
+ const FATAL_UTF8 = new TextDecoder('utf-8', { fatal: true });
24
+ const MAX_DRAIN_RECORDS = 64;
25
+ // A timer is only a no-data backoff. Once the binding has reported readable
26
+ // work, continue from the next event-loop turn so a full socket does not wait
27
+ // for an arbitrary timer cadence between batches.
28
+ const MESH_BACKEND_IDLE_POLL_INTERVAL_MS = 1;
29
+ const MESH_RECEIVE_BATCH_BYTE_LIMIT = 4 * 1024 * 1024;
30
+ const MESH_RECEIVE_BATCH_TIME_LIMIT_MS = 2;
31
+ /**
32
+ * Conservative Actor Join admission cap for relocation state chunks (spec 15
33
+ * §4.2): a stable lower bound safe on any deployment, never lowered on
34
+ * recompute. Matches the source's own conservative chunk floor.
35
+ */
36
+ const ACTOR_JOIN_ADVERTISED_RECEIVE_CHUNK_LIMIT_BYTES = 32 * 1024;
37
+ class ZLinkMeshReceiveBatchBudget {
38
+ peerMessages = new Map();
39
+ peerBytes = new Map();
40
+ startedAtMs = 0;
41
+ reset(nowMs) {
42
+ this.peerMessages.clear();
43
+ this.peerBytes.clear();
44
+ this.startedAtMs = nowMs;
45
+ }
46
+ record(peer, byteCount, nowMs) {
47
+ const messages = (this.peerMessages.get(peer) ?? 0) + 1;
48
+ const bytes = (this.peerBytes.get(peer) ?? 0) + byteCount;
49
+ this.peerMessages.set(peer, messages);
50
+ this.peerBytes.set(peer, bytes);
51
+ return messages >= MAX_DRAIN_RECORDS
52
+ || bytes >= MESH_RECEIVE_BATCH_BYTE_LIMIT
53
+ || nowMs - this.startedAtMs >= MESH_RECEIVE_BATCH_TIME_LIMIT_MS;
54
+ }
55
+ }
56
+ /**
57
+ * M6A MeshNode backend. Stateful Spot/Actor entry points stay explicit until
58
+ * their owning M6B runtime is connected; topology and node/channel dispatch do
59
+ * not depend on those entry points.
60
+ */
61
+ class ZLinkNodeRawMeshBackend {
62
+ meshName;
63
+ bindingPort;
64
+ applicationJobQueue;
65
+ applicationJobReceiveFlowFailureSink;
66
+ peerAdmissionSealed;
67
+ nativeInstance = this;
68
+ channels = new Map();
69
+ peerIntents = new Map();
70
+ completions = [];
71
+ completionHead = 0;
72
+ completionCount = 0;
73
+ routingId;
74
+ lifecycleGeneration;
75
+ bindEndpoint;
76
+ advertiseHost;
77
+ runtime;
78
+ stateful;
79
+ readyHandler;
80
+ pollTimer;
81
+ nextPeerIntent = 1n;
82
+ closed = false;
83
+ objectRole = 'none';
84
+ placementWeight = 100;
85
+ activeCapacityLimit = 10_000;
86
+ pendingCapacityLimit = 128;
87
+ objectCapabilities = [];
88
+ maintenanceWave;
89
+ mailboxRecordDropped;
90
+ protocolError;
91
+ messageFollowHandler;
92
+ peerDisconnectedHandlers = new Set();
93
+ receiveBatchBudget = new ZLinkMeshReceiveBatchBudget();
94
+ observedPumpSourceRoutingId;
95
+ observedPumpByteCount = 0;
96
+ observePump = (sourceRoutingId, byteCount) => {
97
+ this.observedPumpSourceRoutingId = sourceRoutingId;
98
+ this.observedPumpByteCount = byteCount;
99
+ };
100
+ takePumpObservation() {
101
+ const sourceRoutingId = this.observedPumpSourceRoutingId;
102
+ if (sourceRoutingId === undefined)
103
+ return undefined;
104
+ return { sourceRoutingId, byteCount: this.observedPumpByteCount };
105
+ }
106
+ constructor(meshName, routingId, bindingPort, applicationJobQueue, applicationJobReceiveFlowFailureSink, peerAdmissionSealed) {
107
+ this.meshName = meshName;
108
+ this.bindingPort = bindingPort;
109
+ this.applicationJobQueue = applicationJobQueue;
110
+ this.applicationJobReceiveFlowFailureSink = applicationJobReceiveFlowFailureSink;
111
+ this.peerAdmissionSealed = peerAdmissionSealed;
112
+ if (meshName.length === 0)
113
+ throw new TypeError('MeshName must be non-empty.');
114
+ if (routingId === undefined || routingId.length === 0) {
115
+ throw new TypeError('M6A raw MeshNode requires a routing id.');
116
+ }
117
+ this.routingId = routingId;
118
+ this.lifecycleGeneration = createLifecycleGeneration();
119
+ }
120
+ configureObjectPlacement(options) {
121
+ this.requireNotStarted();
122
+ this.objectRole = options.role;
123
+ this.placementWeight = requirePublicWeight(options.placementWeight, 'placementWeight');
124
+ this.activeCapacityLimit = requirePositivePlacementValue(options.activeCapacityLimit, 'activeCapacityLimit');
125
+ this.pendingCapacityLimit = requirePositivePlacementValue(options.pendingCapacityLimit, 'pendingCapacityLimit');
126
+ this.objectCapabilities = [...new Set(options.objectCapabilities)].sort();
127
+ this.maintenanceWave = options.maintenanceWave;
128
+ }
129
+ setMailboxRecordDroppedHandler(handler) {
130
+ this.mailboxRecordDropped = handler;
131
+ this.stateful?.setMailboxDropHandler(handler);
132
+ }
133
+ setProtocolErrorHandler(handler) {
134
+ this.protocolError = handler;
135
+ }
136
+ onPeerDisconnected(handler) {
137
+ this.peerDisconnectedHandlers.add(handler);
138
+ }
139
+ selectObjectPlacement(stableType) {
140
+ const runtime = this.requireRuntime();
141
+ const localNodeRid = runtime.topology.localDescriptor().nodeRoutingId;
142
+ const status = runtime.topology.objectPlacementStatus(stableType, candidate => candidate.nodeRoutingId === localNodeRid
143
+ || runtime.isPeerRouteReady(candidate.nodeRoutingId));
144
+ if (status !== 'available')
145
+ return { kind: status };
146
+ const descriptor = runtime.topology.selectObjectPlacement(stableType, candidate => candidate.nodeRoutingId === localNodeRid
147
+ || runtime.isPeerRouteReady(candidate.nodeRoutingId));
148
+ return descriptor === undefined
149
+ ? { kind: 'unavailable' }
150
+ : {
151
+ kind: 'selected',
152
+ target: {
153
+ targetNodeRid: descriptor.nodeRoutingId,
154
+ targetNodeGeneration: descriptor.lifecycleGeneration,
155
+ descriptorVersion: descriptor.descriptorRevision.toString()
156
+ }
157
+ };
158
+ }
159
+ instanceSpotPlacementTypes() {
160
+ return this.requireRuntime().topology.instanceSpotPlacementTypes();
161
+ }
162
+ async sendToMissingInstanceSpot(target, parts, deadlineUnixMs, sourceSpotId, metadata) {
163
+ const result = await this.requireStateful().sendToMissingInstanceSpotFrame(target, encodeMultipartApplicationFrame(parts), deadlineUnixMs, sourceSpotId, metadata === undefined ? undefined : (0, service_metadata_codec_1.encodeServiceMetadataFrame)(metadata));
164
+ return result;
165
+ }
166
+ requestToMissingInstanceSpot(target, parts, deadlineUnixMs, sourceSpotId, metadata) {
167
+ return this.observeStateful(service_runtime_contracts_1.OperationKind.InstanceSpotRequest, this.requireStateful().requestToMissingInstanceSpotFrame(target, encodeMultipartApplicationFrame(parts), deadlineUnixMs, sourceSpotId, metadata === undefined ? undefined : (0, service_metadata_codec_1.encodeServiceMetadataFrame)(metadata)));
168
+ }
169
+ setRoutingId(routingId) {
170
+ if (String(routingId) !== this.routingId) {
171
+ throw new Error('MeshNode routing id is immutable after construction.');
172
+ }
173
+ }
174
+ setBind(endpoint) {
175
+ this.requireNotStarted();
176
+ if (endpoint.length === 0)
177
+ throw new TypeError('MeshNode bind endpoint must be non-empty.');
178
+ this.bindEndpoint = endpoint;
179
+ }
180
+ setAdvertiseHost(host) {
181
+ this.requireNotStarted();
182
+ if (host.length === 0)
183
+ throw new TypeError('MeshNode advertise host must be non-empty.');
184
+ this.advertiseHost = host;
185
+ }
186
+ start() {
187
+ if (this.runtime !== undefined)
188
+ return;
189
+ if (this.closed)
190
+ throw new Error('MeshNode is closed.');
191
+ if (this.bindEndpoint === undefined)
192
+ throw new Error('MeshNode bind endpoint is not configured.');
193
+ const descriptor = this.createDescriptor();
194
+ const runtime = new raw_service_mesh_runtime_1.RawServiceMeshRuntime({
195
+ descriptor,
196
+ resolveAdvertisedEndpoint: boundEndpoint => this.resolveAdvertisedEndpoint(boundEndpoint),
197
+ bindingPort: this.bindingPort,
198
+ applicationJobQueue: this.requireApplicationJobQueue(),
199
+ peerAdmissionSealed: this.peerAdmissionSealed,
200
+ onReceiveFlowConfigFailure: this.applicationJobReceiveFlowFailureSink,
201
+ onMailboxReady: (domain) => this.readyHandler?.(domain === 'application' ? service_runtime_contracts_1.ReadyDomain.Application : service_runtime_contracts_1.ReadyDomain.Infrastructure),
202
+ onProtocolError: (record) => this.protocolError?.({
203
+ sourceNodeRid: record.sourceRoutingId,
204
+ request: record.request,
205
+ replied: record.replied,
206
+ ...(record.command === undefined ? {} : { command: record.command })
207
+ }),
208
+ onPeerNotRequired: (nodeRoutingId, endpoint) => {
209
+ for (const [intent, peer] of this.peerIntents) {
210
+ if ((peer.nodeRoutingId === undefined
211
+ || peer.nodeRoutingId === nodeRoutingId)
212
+ && peer.endpoint === endpoint) {
213
+ this.peerIntents.delete(intent);
214
+ }
215
+ }
216
+ },
217
+ onPeerDisconnected: (nodeRoutingId, endpoint) => {
218
+ for (const [intentId, peer] of this.peerIntents) {
219
+ if (peer.endpoint === endpoint
220
+ && (peer.nodeRoutingId === undefined || peer.nodeRoutingId === nodeRoutingId)) {
221
+ this.peerIntents.delete(intentId);
222
+ }
223
+ }
224
+ for (const handler of this.peerDisconnectedHandlers)
225
+ handler(endpoint);
226
+ }
227
+ });
228
+ runtime.start();
229
+ this.stateful = new service_stateful_runtime_1.ServiceStatefulRuntime(runtime, descriptor.nodeRoutingId, descriptor.lifecycleGeneration);
230
+ if (this.mailboxRecordDropped !== undefined) {
231
+ this.stateful.setMailboxDropHandler(this.mailboxRecordDropped);
232
+ }
233
+ this.stateful.setMessageFollowHandler((record) => this.messageFollowHandler?.(record));
234
+ this.runtime = runtime;
235
+ this.schedulePoll();
236
+ }
237
+ setMessageFollowHandler(handler) {
238
+ this.messageFollowHandler = handler;
239
+ }
240
+ async sendMessageFollowNotification(targetNodeRid, record) {
241
+ return await this.requireStateful().sendMessageFollowNotification(targetNodeRid, record);
242
+ }
243
+ shutdown(_timeoutMs) {
244
+ this.close();
245
+ return zlink_1.RequestResult.Ok;
246
+ }
247
+ async publishDraining() {
248
+ for (const name of this.channels.keys())
249
+ this.channels.set(name, 0);
250
+ await this.requireRuntime().updateLocalDescriptor({ state: 'draining' });
251
+ }
252
+ close() {
253
+ if (this.closed)
254
+ return;
255
+ this.closed = true;
256
+ if (this.pollTimer !== undefined)
257
+ clearTimeout(this.pollTimer);
258
+ this.pollTimer = undefined;
259
+ this.stateful?.close();
260
+ this.stateful = undefined;
261
+ this.runtime?.close();
262
+ this.runtime = undefined;
263
+ this.clearCompletions();
264
+ }
265
+ addChannelName(name) {
266
+ this.requireNotStarted();
267
+ if (name.length === 0)
268
+ throw new TypeError('ChannelName must be non-empty.');
269
+ this.channels.set(name, this.channels.get(name) ?? 100);
270
+ }
271
+ async setChannelWeight(name, weight) {
272
+ if (!this.channels.has(name))
273
+ throw new Error(`Channel '${name}' is not registered.`);
274
+ const validated = requirePublicWeight(weight, 'Channel weight');
275
+ if (this.channels.get(name) === validated)
276
+ return;
277
+ this.channels.set(name, validated);
278
+ if (this.runtime !== undefined) {
279
+ await this.runtime.updateLocalDescriptor({
280
+ channelName: name,
281
+ channelWeight: validated
282
+ });
283
+ }
284
+ }
285
+ async setPlacementWeight(weight) {
286
+ const validated = requirePublicWeight(weight, 'Placement weight');
287
+ if (this.placementWeight === validated)
288
+ return;
289
+ this.placementWeight = validated;
290
+ if (this.runtime !== undefined) {
291
+ await this.runtime.updateLocalDescriptor({ placementWeight: validated });
292
+ }
293
+ }
294
+ async connectPeer(options) {
295
+ const runtime = this.requireRuntime();
296
+ const nodeRoutingId = options.expectedRid === undefined
297
+ ? undefined
298
+ : String(options.expectedRid);
299
+ if (nodeRoutingId === undefined) {
300
+ runtime.connectPeerEndpoint(options.endpoint);
301
+ }
302
+ else {
303
+ runtime.connectPeerByRoutingId(options.endpoint, nodeRoutingId, options.expectedSecurityIdentity
304
+ ?? runtime.topology.localDescriptor().securityIdentity, options.expectedLifecycleGeneration);
305
+ }
306
+ const intent = this.nextPeerIntent++;
307
+ this.peerIntents.set(intent, {
308
+ endpoint: options.endpoint,
309
+ ...(nodeRoutingId === undefined ? {} : {
310
+ nodeRoutingId,
311
+ lifecycleGeneration: options.expectedLifecycleGeneration
312
+ })
313
+ });
314
+ if (nodeRoutingId !== undefined)
315
+ await runtime.announcePeer(nodeRoutingId);
316
+ return intent;
317
+ }
318
+ expectPeer(peer) {
319
+ this.requireRuntime().expectPeerByRoutingId(peer.endpoint, peer.nodeRoutingId, peer.securityIdentity, peer.lifecycleGeneration);
320
+ }
321
+ removePeerConnection(intentId) {
322
+ const intent = this.peerIntents.get(intentId);
323
+ if (intent === undefined)
324
+ return;
325
+ this.peerIntents.delete(intentId);
326
+ if (intent.nodeRoutingId === undefined) {
327
+ this.runtime?.disconnectPeerEndpoint(intent.endpoint);
328
+ }
329
+ else {
330
+ this.runtime?.disconnectPeer(intent.endpoint, intent.nodeRoutingId, intent.lifecycleGeneration);
331
+ }
332
+ }
333
+ disconnectPeer(peerRid, lifecycleGeneration) {
334
+ const nodeRoutingId = String(peerRid);
335
+ const admitted = this.runtime?.topology.peer(nodeRoutingId);
336
+ if (admitted !== undefined
337
+ && admitted.descriptor.lifecycleGeneration !== lifecycleGeneration) {
338
+ return;
339
+ }
340
+ const admittedEndpoint = admitted?.descriptor.advertisedEndpoint;
341
+ const found = [...this.peerIntents.entries()]
342
+ .find(([, intent]) => (intent.nodeRoutingId === nodeRoutingId
343
+ && (intent.lifecycleGeneration === undefined
344
+ || intent.lifecycleGeneration === lifecycleGeneration))
345
+ || (intent.nodeRoutingId === undefined
346
+ && admittedEndpoint !== undefined
347
+ && intent.endpoint === admittedEndpoint));
348
+ if (found === undefined) {
349
+ if (admitted !== undefined) {
350
+ this.runtime?.disconnectPeer(admitted.descriptor.advertisedEndpoint, nodeRoutingId, lifecycleGeneration);
351
+ }
352
+ return;
353
+ }
354
+ this.removePeerConnection(found[0]);
355
+ }
356
+ replaceDiscoveredNotRequiredPeers(peers) {
357
+ const local = this.requireRuntime().topology.localDescriptor();
358
+ this.requireRuntime().replaceDiscoveredNotRequired(peers.map(peer => ({
359
+ ...local,
360
+ nodeRoutingId: peer.nodeRoutingId,
361
+ lifecycleGeneration: peer.lifecycleGeneration,
362
+ descriptorRevision: peer.descriptorRevision,
363
+ advertisedEndpoint: peer.endpoint,
364
+ channels: [],
365
+ objectRole: 'client'
366
+ })));
367
+ }
368
+ isObjectClientNodeDirectTarget(targetRid) {
369
+ return this.requireRuntime().isObjectClientNodeDirectTarget(String(targetRid));
370
+ }
371
+ isPeerRouteReady(targetRid, lifecycleGeneration) {
372
+ return this.requireRuntime().isPeerRouteReady(String(targetRid), lifecycleGeneration);
373
+ }
374
+ async sendToNode(targetRid, parts) {
375
+ return await this.requireRuntime().sendToNode(String(targetRid), encodeMultipart(parts)) ? zlink_1.SubmitResult.Ok : zlink_1.SubmitResult.NotConnected;
376
+ }
377
+ async sendInfrastructureControl(targetRid, record) {
378
+ return await this.requireRuntime().sendService(String(targetRid), (Array.isArray(record) ? record : [record]).map(value => Buffer.from(value))) ? zlink_1.SubmitResult.Ok : zlink_1.SubmitResult.NotConnected;
379
+ }
380
+ async sendInfrastructureControlFrames(targetRid, frames) {
381
+ return await this.requireRuntime().sendService(String(targetRid), frames.map(frame => Buffer.from(frame))) ? zlink_1.SubmitResult.Ok : zlink_1.SubmitResult.NotConnected;
382
+ }
383
+ async requestInfrastructureControlFrames(targetRid, frames, options) {
384
+ return await this.requireRuntime().requestService(String(targetRid), frames.map(frame => Buffer.from(frame)), options?.timeoutMs ?? 30_000);
385
+ }
386
+ requestToNode(targetRid, parts, options) {
387
+ const pending = this.requireRuntime().requestToNode(String(targetRid), encodeMultipart(parts), options?.timeoutMs ?? 30_000);
388
+ return this.observeCompletion(pending.id, service_runtime_contracts_1.OperationKind.NodeRequest, pending.promise);
389
+ }
390
+ async sendToChannel(channelName, parts) {
391
+ return await this.requireRuntime().sendToChannel(channelName, encodeMultipart(parts)) ? zlink_1.SubmitResult.Ok : zlink_1.SubmitResult.NotConnected;
392
+ }
393
+ requestToChannel(channelName, parts, options) {
394
+ const pending = this.requireRuntime().requestToChannel(channelName, encodeMultipart(parts), options?.timeoutMs ?? 30_000);
395
+ if (pending === undefined) {
396
+ return this.enqueueImmediateFailure(service_runtime_contracts_1.OperationKind.ChannelRequest, zlink_1.RequestResult.NotFound);
397
+ }
398
+ return this.observeCompletion(pending.id, service_runtime_contracts_1.OperationKind.ChannelRequest, pending.promise);
399
+ }
400
+ status() {
401
+ const descriptor = this.runtime?.topology.localDescriptor() ?? this.createDescriptor();
402
+ const peers = this.runtime?.topology.peers() ?? [];
403
+ return {
404
+ state: stateCode(descriptor.state),
405
+ routingId: descriptor.nodeRoutingId,
406
+ meshName: descriptor.meshName,
407
+ localEndpoint: descriptor.advertisedEndpoint,
408
+ lifecycleGeneration: descriptor.lifecycleGeneration,
409
+ descriptorRevision: descriptor.descriptorRevision,
410
+ channelCount: descriptor.channels.length,
411
+ configuredPeerCount: this.peerIntents.size,
412
+ admittedPeerCount: peers.length,
413
+ drainingPeerCount: peers.filter(peer => peer.descriptor.state === 'draining').length,
414
+ pendingApplicationMessages: BigInt(this.runtime?.mailbox.pendingMessages('application') ?? 0),
415
+ pendingInfrastructureMessages: BigInt((this.runtime?.mailbox.pendingMessages('infrastructure') ?? 0) + this.completionCount),
416
+ pendingBytes: BigInt((this.runtime?.mailbox.pendingBytes('application') ?? 0)
417
+ + (this.runtime?.mailbox.pendingBytes('infrastructure') ?? 0)),
418
+ lastError: 0,
419
+ lastChangedMs: BigInt(Math.trunc(performance.now()))
420
+ };
421
+ }
422
+ peers() {
423
+ const intents = [...this.peerIntents.entries()].map(([id, intent]) => ({
424
+ id,
425
+ ...intent
426
+ }));
427
+ const findIntent = (nodeRoutingId, endpoint) => intents.find(intent => intent.nodeRoutingId === nodeRoutingId
428
+ || (intent.nodeRoutingId === undefined
429
+ && intent.endpoint === endpoint));
430
+ const admitted = (this.runtime?.topology.peers() ?? []).map(peer => ({
431
+ connectionIntentId: findIntent(peer.descriptor.nodeRoutingId, peer.descriptor.advertisedEndpoint)?.id ?? 0n,
432
+ source: 1,
433
+ state: this.runtime?.isPeerRouteReady(peer.descriptor.nodeRoutingId) === false
434
+ ? 1
435
+ : peerStateCode(peer.descriptor.state),
436
+ routingId: peer.descriptor.nodeRoutingId,
437
+ lifecycleGeneration: peer.descriptor.lifecycleGeneration,
438
+ descriptorRevision: peer.descriptor.descriptorRevision,
439
+ endpoint: peer.descriptor.advertisedEndpoint,
440
+ channelCount: peer.descriptor.channels.length,
441
+ lastError: 0,
442
+ lastChangedMs: BigInt(Math.trunc(performance.now()))
443
+ }));
444
+ const notRequired = (this.runtime?.topology.notRequiredPeers() ?? []).map(descriptor => ({
445
+ connectionIntentId: findIntent(descriptor.nodeRoutingId, descriptor.advertisedEndpoint)?.id ?? 0n,
446
+ source: 1,
447
+ state: 6,
448
+ routingId: descriptor.nodeRoutingId,
449
+ lifecycleGeneration: descriptor.lifecycleGeneration,
450
+ descriptorRevision: descriptor.descriptorRevision,
451
+ endpoint: descriptor.advertisedEndpoint,
452
+ channelCount: 0,
453
+ lastError: 0,
454
+ lastChangedMs: BigInt(Math.trunc(performance.now()))
455
+ }));
456
+ const projected = new Set([
457
+ ...admitted.map(peer => peer.connectionIntentId),
458
+ ...notRequired.map(peer => peer.connectionIntentId)
459
+ ]);
460
+ const disconnected = intents
461
+ .filter(intent => intent.nodeRoutingId !== undefined
462
+ && !projected.has(intent.id))
463
+ .map(intent => {
464
+ const descriptor = this.runtime?.topology.knownDescriptor(intent.nodeRoutingId);
465
+ return {
466
+ connectionIntentId: intent.id,
467
+ source: 1,
468
+ // A new manual intent is Connecting until its first descriptor is
469
+ // observed. A previously admitted required peer is NotConnected.
470
+ state: descriptor === undefined ? 1 : 0,
471
+ routingId: intent.nodeRoutingId,
472
+ lifecycleGeneration: descriptor?.lifecycleGeneration ?? 0n,
473
+ descriptorRevision: descriptor?.descriptorRevision ?? 0n,
474
+ endpoint: descriptor?.advertisedEndpoint ?? intent.endpoint,
475
+ channelCount: descriptor?.channels.length ?? 0,
476
+ lastError: 0,
477
+ lastChangedMs: BigInt(Math.trunc(performance.now()))
478
+ };
479
+ });
480
+ return [...admitted, ...notRequired, ...disconnected]
481
+ .sort((left, right) => String(left.routingId).localeCompare(String(right.routingId)));
482
+ }
483
+ peerChannels(peerRid, lifecycleGeneration) {
484
+ const descriptor = this.runtime?.topology.knownDescriptor(String(peerRid));
485
+ if (descriptor === undefined || descriptor.lifecycleGeneration !== lifecycleGeneration) {
486
+ return { names: [], weights: [] };
487
+ }
488
+ return {
489
+ names: descriptor.channels.map(channel => channel.name),
490
+ weights: descriptor.channels.map(channel => channel.weight)
491
+ };
492
+ }
493
+ createPublisher() {
494
+ let publisherClosed = false;
495
+ const publish = async (channelName, topic, parts) => {
496
+ if (publisherClosed)
497
+ throw new Error('Mesh publisher is closed.');
498
+ await this.requireStateful().publishLogicalMulticast(channelName, topic, encodeMultipart(parts));
499
+ };
500
+ return {
501
+ publish,
502
+ publishAsync: async (channelName, topic, parts, _options, signal) => {
503
+ signal?.throwIfAborted();
504
+ await publish(channelName, topic, parts);
505
+ },
506
+ close: () => {
507
+ publisherClosed = true;
508
+ }
509
+ };
510
+ }
511
+ setReadyHandler(handler) {
512
+ this.readyHandler = handler;
513
+ this.notifyReady();
514
+ }
515
+ createReadyBatch(capacity) {
516
+ return new RawReadyBatch(capacity);
517
+ }
518
+ createReceiveBatch(messageCapacity, partCapacity) {
519
+ return new RawReceiveBatch(messageCapacity, partCapacity);
520
+ }
521
+ drainReady(domains, batch) {
522
+ const target = requireRawReadyBatch(batch);
523
+ if ((domains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0) {
524
+ this.drainCompletions(target);
525
+ this.drainMailbox('infrastructure', target);
526
+ }
527
+ if ((domains & service_runtime_contracts_1.ReadyDomain.Application) !== 0) {
528
+ this.drainMailbox('application', target);
529
+ }
530
+ const runtime = this.runtime;
531
+ const infrastructureResidue = (domains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0
532
+ && (this.completionCount > 0
533
+ || (runtime?.mailbox.pendingMessages('infrastructure') ?? 0) > 0);
534
+ const applicationResidue = (domains & service_runtime_contracts_1.ReadyDomain.Application) !== 0
535
+ && (runtime?.mailbox.pendingMessages('application') ?? 0) > 0;
536
+ return {
537
+ ok: true,
538
+ // Residue is scoped to the requested lane. The pump drains lanes in
539
+ // separate turns and must not wait on another lane before returning.
540
+ hasResidue: infrastructureResidue || applicationResidue,
541
+ records: target.records
542
+ };
543
+ }
544
+ createSpot() {
545
+ return new RawServiceSpot(this, this.requireStateful().createSpot());
546
+ }
547
+ entrySpot() {
548
+ return new RawServiceSpot(this, this.requireStateful().entrySpot());
549
+ }
550
+ getOrCreateSpot(routingId) {
551
+ const stateful = this.requireStateful();
552
+ const rid = String(routingId);
553
+ const existing = stateful.registry.spot(rid);
554
+ const state = existing ?? stateful.createSpot(rid);
555
+ return { spot: new RawServiceSpot(this, state), created: existing === undefined };
556
+ }
557
+ instanceSpotApplicationTarget(spotId) {
558
+ return this.requireStateful().instanceSpotApplicationTarget(spotId);
559
+ }
560
+ waitForInstanceApplicationQuiescence(spotId, signal) {
561
+ return this.requireStateful().waitForInstanceApplicationQuiescence(spotId, signal);
562
+ }
563
+ restoreUserSpotAuthority(spotId, stableType, generation, authorityOwnerGeneration) {
564
+ return new RawServiceSpot(this, this.requireStateful().restoreUserSpotAuthority(spotId, stableType, generation, authorityOwnerGeneration));
565
+ }
566
+ restoreSpotAuthority(spotId, objectKind, stableType, generation, authorityOwnerGeneration) {
567
+ return new RawServiceSpot(this, this.requireStateful().restoreSpotAuthority(spotId, objectKind, stableType, generation, authorityOwnerGeneration));
568
+ }
569
+ createActor(actorId) {
570
+ return this.requireStateful().createActor(actorId).ref;
571
+ }
572
+ restoreActorAuthority(actorId, stableType, generation, authorityOwnerGeneration, spotId, spotGeneration, membershipEpoch) {
573
+ return this.requireStateful().restoreActorAuthority(actorId, stableType, generation, authorityOwnerGeneration, spotId, spotGeneration, membershipEpoch).ref;
574
+ }
575
+ discardRelocatedActor(actor) {
576
+ this.requireStateful().discardRelocatedActor({
577
+ nodeRid: String(actor.nodeRid),
578
+ actorId: actor.actorId,
579
+ generation: actor.generation
580
+ });
581
+ }
582
+ restoreActorSessionBinding(actor, sessionNodeRid, sessionRid, bindingGeneration) {
583
+ this.requireStateful().restoreActorSessionBinding({
584
+ nodeRid: String(actor.nodeRid),
585
+ actorId: actor.actorId,
586
+ generation: actor.generation
587
+ }, String(sessionNodeRid), String(sessionRid), bindingGeneration);
588
+ }
589
+ registerInstanceIntent(instanceType, route, expectedCurrentRoute) {
590
+ this.requireStateful().registerInstanceIntent(instanceType, route, expectedCurrentRoute);
591
+ }
592
+ registerAsyncInstanceActivationAuthority(authority) {
593
+ this.requireStateful().registerAsyncInstanceActivationAuthority(authority);
594
+ }
595
+ registerInstanceApplicationLifecycle(lifecycle) {
596
+ this.requireStateful().registerInstanceApplicationLifecycle(lifecycle);
597
+ }
598
+ registerUserSpotOperationHandler(handler) {
599
+ this.requireStateful().registerUserSpotOperationHandler(handler);
600
+ }
601
+ requestUserSpotCreate(targetNodeRid, request, timeoutMs) {
602
+ return this.requireStateful().requestUserSpotCreate(targetNodeRid, request, timeoutMs);
603
+ }
604
+ requestUserSpotClose(targetNodeRid, request, timeoutMs) {
605
+ return this.requireStateful().requestUserSpotClose(targetNodeRid, request, timeoutMs);
606
+ }
607
+ requestActorCreate(targetNodeRid, request, timeoutMs) {
608
+ return this.requireStateful().requestActorCreate(targetNodeRid, request, timeoutMs);
609
+ }
610
+ recoverInstanceActivation(envelope, route, expectedCurrentRoute) {
611
+ return this.requireStateful().recoverInstanceActivation(envelope, route, expectedCurrentRoute);
612
+ }
613
+ recoverPendingInstanceActivation(envelope, pending, expectedCurrentRoute) {
614
+ return this.requireStateful().recoverPendingInstanceActivation(envelope, pending, expectedCurrentRoute);
615
+ }
616
+ completeRecoveredInstanceActivation(target, route, expectedCurrentRoute) {
617
+ return this.requireStateful().completeRecoveredInstanceActivation(target, route, expectedCurrentRoute);
618
+ }
619
+ forgetInstanceIntent(spotId, objectGeneration, authorityOwnerGeneration, storeVersion) {
620
+ this.requireStateful().forgetInstanceIntent(spotId, objectGeneration, authorityOwnerGeneration, storeVersion);
621
+ }
622
+ rememberSpotRoute(route, expectedCurrentRoute) {
623
+ this.requireStateful().rememberSpotRoute(route, expectedCurrentRoute);
624
+ }
625
+ entrySpotRouteFence(targetNodeRid, targetSpotId) {
626
+ const generation = this.peerGeneration(targetNodeRid);
627
+ return {
628
+ spot: { spotId: targetSpotId, generation },
629
+ targetNodeRid,
630
+ targetNodeGeneration: generation,
631
+ authorityOwnerGeneration: generation,
632
+ ownerLeaseGeneration: generation,
633
+ storeVersion: entrySpotFenceVersion(generation)
634
+ };
635
+ }
636
+ sealSpotMessageFollowIngress(source) {
637
+ return this.requireStateful().sealSpotMessageFollowIngress(source);
638
+ }
639
+ abortSpotMessageFollowIngress(seal) {
640
+ return this.requireStateful().abortSpotMessageFollowIngress(seal);
641
+ }
642
+ commitSpotMessageFollowIngress(seal, target, durationMs) {
643
+ return this.requireStateful().commitSpotMessageFollowIngress(seal, target, durationMs);
644
+ }
645
+ forgetSpotRoute(spot, authorityOwnerGeneration, storeVersion) {
646
+ this.requireStateful().forgetSpotRoute(spot, authorityOwnerGeneration, storeVersion);
647
+ }
648
+ async sendToInstanceSpot(route, parts, sourceSpotId, metadata) {
649
+ const result = await this.requireStateful().sendToInstanceSpot(route, encodeMultipart(parts), sourceSpotId, metadata === undefined ? undefined : (0, service_metadata_codec_1.encodeServiceMetadataFrame)(metadata));
650
+ return result;
651
+ }
652
+ requestInstanceSpot(route, parts, timeoutMs = 30_000, sourceSpotId, metadata) {
653
+ return this.observeStateful(service_runtime_contracts_1.OperationKind.InstanceSpotRequest, this.requireStateful().requestToInstanceSpot(route, encodeMultipart(parts), timeoutMs, sourceSpotId, metadata === undefined ? undefined : (0, service_metadata_codec_1.encodeServiceMetadataFrame)(metadata)));
654
+ }
655
+ actorLookup(actorId) {
656
+ const actor = this.requireStateful().actor(actorId);
657
+ if (actor === undefined) {
658
+ throw Object.assign(new Error(`Actor '${actorId}' was not found.`), { nativeErrno: 2 });
659
+ }
660
+ return {
661
+ actor: actor.ref,
662
+ spotId: actor.spot.spotId,
663
+ spotGeneration: actor.spot.generation,
664
+ membershipEpoch: actor.membershipEpoch
665
+ };
666
+ }
667
+ lookupRemoteActor(targetNodeRid, actorId, timeoutMs = 30_000) {
668
+ return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorLookup, this.requireStateful().lookupRemoteActor(String(targetNodeRid), actorId, timeoutMs));
669
+ }
670
+ destroyActor(actor, timeoutMs = 30_000) {
671
+ return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorDestroy, this.requireStateful().destroyActor(actor, timeoutMs));
672
+ }
673
+ joinActorSpot(actor, targetNodeRid, targetSpotId, targetSpotGeneration, request, timeoutMs = 30_000) {
674
+ return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorJoin, this.requireStateful().joinActor(actor, String(targetNodeRid), { spotId: String(targetSpotId), generation: targetSpotGeneration }, targetSpotGeneration, request, timeoutMs));
675
+ }
676
+ joinActorSpotCanonical(actor, targetNodeRid, targetSpotId, targetSpotGeneration, request, actorFence, local, timeoutMs = 30_000) {
677
+ return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorJoin, this.requireStateful().joinActorCanonical(actor, String(targetNodeRid), { spotId: String(targetSpotId), generation: targetSpotGeneration }, targetSpotGeneration, request, actorFence, local, timeoutMs));
678
+ }
679
+ joinActorEntrySpot(actor, targetNodeRid, request, timeoutMs = 30_000) {
680
+ const target = String(targetNodeRid);
681
+ return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorJoin, this.requireStateful().joinActorEntrySpot(actor, target, request, timeoutMs));
682
+ }
683
+ joinActorEntrySpotCanonical(actor, targetNodeRid, request, actorFence, local, timeoutMs = 30_000) {
684
+ const target = String(targetNodeRid);
685
+ return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorJoin, this.requireStateful().joinActorEntrySpotCanonical(actor, target, request, actorFence, local, timeoutMs));
686
+ }
687
+ async sendToActor(actor, parts) {
688
+ return this.requireStateful().sendToActor(actor, this.peerGeneration(String(actor.nodeRid)), actor.generation, encodeMultipart(parts));
689
+ }
690
+ requestToActor(actor, parts, options) {
691
+ return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorRequest, this.requireStateful().requestToActor(actor, this.peerGeneration(String(actor.nodeRid)), actor.generation, encodeMultipart(parts), options?.timeoutMs ?? 30_000));
692
+ }
693
+ async actorSendToActor(source, target, parts) {
694
+ return await this.requireStateful().sendToActor(target, this.peerGeneration(String(target.nodeRid)), target.generation, encodeMultipart(parts), source);
695
+ }
696
+ actorRequestToActor(source, target, parts, options) {
697
+ return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorRequest, this.requireStateful().requestToActor(target, this.peerGeneration(String(target.nodeRid)), target.generation, encodeMultipart(parts), options?.timeoutMs ?? 30_000, source));
698
+ }
699
+ async sendActorBoundSession(actor, expectedBindingGeneration, parts, _flags, actorFence) {
700
+ return await this.requireStateful().sendBoundSession(actor, expectedBindingGeneration, encodeMultipart(parts), actorFence);
701
+ }
702
+ closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs = 30_000) {
703
+ const binding = this.requireStateful().registry.binding(actor);
704
+ if (binding === undefined) {
705
+ return this.enqueueImmediateFailure(service_runtime_contracts_1.OperationKind.StreamUnbind, zlink_1.RequestResult.NotFound);
706
+ }
707
+ return this.observeStateful(service_runtime_contracts_1.OperationKind.StreamUnbind, this.requireStateful().unbindSession(binding.sessionRid, actor, expectedBindingGeneration, timeoutMs));
708
+ }
709
+ leaveActor(actor, expectedMembershipEpoch, timeoutMs = 30_000) {
710
+ return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorLeave, this.requireStateful().leaveActor(actor, expectedMembershipEpoch, timeoutMs));
711
+ }
712
+ createStreamSessionService(stream) {
713
+ return new RawStreamSessionService(this.requireStateful(), stream, (kind, pending) => this.observeStateful(kind, pending));
714
+ }
715
+ async sendFromSpot(source, target, parts) {
716
+ return await this.requireStateful().sendToSpot(source.ref.spotId, target, encodeMultipart(parts));
717
+ }
718
+ requestFromSpot(source, target, parts, timeoutMs) {
719
+ return this.observeStateful(service_runtime_contracts_1.OperationKind.SpotRequest, this.requireStateful().requestToSpot(source.ref.spotId, target, encodeMultipart(parts), timeoutMs));
720
+ }
721
+ closeSpot(state) {
722
+ return this.requireStateful().registry.closeSpot(state.ref);
723
+ }
724
+ async publishFromSpot(state, channelName, topic, parts) {
725
+ await this.requireStateful().publishLogicalMulticast(channelName, topic, encodeMultipart(parts), state.ref.spotId);
726
+ }
727
+ setSpotSubscription(state, channelName, topicFilter) {
728
+ this.requireStateful().setSubscription(state, channelName, topicFilter);
729
+ }
730
+ unsetSpotSubscription(state, channelName, topicFilter) {
731
+ this.requireStateful().unsetSubscription(state, channelName, topicFilter);
732
+ }
733
+ clearSpotSubscriptions(state) {
734
+ this.requireStateful().clearSubscriptions(state.ref.spotId);
735
+ }
736
+ createDescriptor() {
737
+ const channels = [...this.channels]
738
+ .map(([name, weight]) => ({ name, weight }))
739
+ .sort((left, right) => left.name.localeCompare(right.name));
740
+ return {
741
+ meshName: this.meshName,
742
+ nodeRoutingId: this.routingId,
743
+ lifecycleGeneration: this.lifecycleGeneration,
744
+ descriptorRevision: 1n,
745
+ advertisedEndpoint: this.bindEndpoint ?? 'inproc://not-started',
746
+ channels,
747
+ state: 'preparing',
748
+ // Plaintext RouteMesh peers use the shared default admission identity.
749
+ securityIdentity: 'default',
750
+ applicationVersion: 0n,
751
+ ...(this.maintenanceWave === undefined ? {} : { maintenanceWave: this.maintenanceWave }),
752
+ protocolCapabilities: [
753
+ service_wire_constants_generated_1.SERVICE_WIRE_REQUIRED_CAPABILITY,
754
+ ...this.objectCapabilities
755
+ ].sort(),
756
+ objectRole: this.objectRole,
757
+ placementWeight: this.placementWeight,
758
+ activeCapacityLimit: this.activeCapacityLimit,
759
+ pendingCapacityLimit: this.pendingCapacityLimit,
760
+ activeCapacityUsed: 0,
761
+ pendingCapacityUsed: 0
762
+ };
763
+ }
764
+ resolveAdvertisedEndpoint(boundEndpoint) {
765
+ const result = (0, EndpointNotation_1.buildAdvertisedEndpoint)(boundEndpoint, this.advertiseHost, 'tcp');
766
+ if (result === undefined) {
767
+ throw new ConfigurationException_1.ZLinkConfigurationException(`RouteMesh advertise host requires a TCP endpoint, received '${boundEndpoint}'.`);
768
+ }
769
+ return result;
770
+ }
771
+ schedulePoll(delayMs = MESH_BACKEND_IDLE_POLL_INTERVAL_MS) {
772
+ if (this.closed || this.pollTimer !== undefined)
773
+ return;
774
+ this.pollTimer = setTimeout(async () => {
775
+ this.pollTimer = undefined;
776
+ try {
777
+ const received = await this.poll();
778
+ // A zero-delay timer yields to I/O and other ready work first without
779
+ // inserting the idle polling interval between readable batches.
780
+ delayMs = received ? 0 : MESH_BACKEND_IDLE_POLL_INTERVAL_MS;
781
+ }
782
+ finally {
783
+ if (!this.closed)
784
+ this.schedulePoll(delayMs);
785
+ }
786
+ }, delayMs);
787
+ }
788
+ async poll() {
789
+ const runtime = this.runtime;
790
+ if (runtime === undefined)
791
+ return false;
792
+ let received = false;
793
+ await runtime.drainMonitorEvents();
794
+ this.receiveBatchBudget.reset(performance.now());
795
+ for (;;) {
796
+ this.observedPumpSourceRoutingId = undefined;
797
+ const result = await runtime.pumpOne(performance.now(), this.observePump);
798
+ if (result === 'noData')
799
+ break;
800
+ received = true;
801
+ if (result === 'application')
802
+ this.readyHandler?.(service_runtime_contracts_1.ReadyDomain.Application);
803
+ const observation = this.takePumpObservation();
804
+ // Core ROUTER advances its fair-queue cursor after each complete
805
+ // multipart message, so the next poll resumes from the following pipe.
806
+ if (observation !== undefined
807
+ && this.receiveBatchBudget.record(observation.sourceRoutingId, observation.byteCount, performance.now()))
808
+ break;
809
+ }
810
+ await runtime.announceExpectedPeers();
811
+ await runtime.tickLiveness();
812
+ this.notifyReady();
813
+ return received;
814
+ }
815
+ notifyReady() {
816
+ const runtime = this.runtime;
817
+ let domains = service_runtime_contracts_1.ReadyDomain.None;
818
+ if (this.completionCount > 0 || (runtime?.mailbox.pendingMessages('infrastructure') ?? 0) > 0) {
819
+ domains |= service_runtime_contracts_1.ReadyDomain.Infrastructure;
820
+ }
821
+ if ((runtime?.mailbox.pendingMessages('application') ?? 0) > 0) {
822
+ domains |= service_runtime_contracts_1.ReadyDomain.Application;
823
+ }
824
+ if (domains !== service_runtime_contracts_1.ReadyDomain.None)
825
+ this.readyHandler?.(domains);
826
+ }
827
+ observeCompletion(low, operationKind, promise) {
828
+ const id = { high: 1n, low };
829
+ void promise.then(result => this.enqueueCompletion(id, operationKind, result), error => this.enqueueCompletion(id, operationKind, genericOperationFailure(error)));
830
+ return id;
831
+ }
832
+ observeStateful(operationKind, pending) {
833
+ const id = { high: 2n, low: pending.id };
834
+ void pending.promise.then(result => this.enqueueCompletion(id, operationKind, result), error => this.enqueueCompletion(id, operationKind, statefulOperationFailure(error)));
835
+ return id;
836
+ }
837
+ enqueueImmediateFailure(operationKind, terminalResult) {
838
+ const low = this.nextPeerIntent++;
839
+ const id = { high: 1n, low };
840
+ this.enqueueCompletion(id, operationKind, { terminalResult, failureCode: 0 });
841
+ return id;
842
+ }
843
+ enqueueCompletion(operationId, operationKind, result) {
844
+ if (this.closed)
845
+ return;
846
+ this.completions.push({ operationId, operationKind, result });
847
+ this.completionCount += 1;
848
+ this.readyHandler?.(service_runtime_contracts_1.ReadyDomain.Infrastructure);
849
+ }
850
+ drainCompletions(batch) {
851
+ while (!batch.full && this.completionCount > 0) {
852
+ const completion = this.takeCompletion();
853
+ if (completion === undefined)
854
+ continue;
855
+ batch.push({
856
+ ownerKind: service_runtime_contracts_1.ReadyOwnerKind.Node,
857
+ domain: service_runtime_contracts_1.ReadyDomain.Infrastructure,
858
+ spotId: null,
859
+ actor: null,
860
+ terminalCompletion: true
861
+ }, new CompletionClaim(completion));
862
+ }
863
+ }
864
+ takeCompletion() {
865
+ const completion = this.completions[this.completionHead];
866
+ if (completion === undefined)
867
+ return undefined;
868
+ this.completions[this.completionHead] = undefined;
869
+ this.completionHead += 1;
870
+ this.completionCount -= 1;
871
+ if (this.completionCount === 0) {
872
+ this.clearCompletions();
873
+ }
874
+ else if (this.completionHead >= 1024
875
+ && this.completionHead * 2 >= this.completions.length) {
876
+ this.completions.splice(0, this.completionHead);
877
+ this.completionHead = 0;
878
+ }
879
+ return completion;
880
+ }
881
+ clearCompletions() {
882
+ this.completions.length = 0;
883
+ this.completionHead = 0;
884
+ this.completionCount = 0;
885
+ }
886
+ drainMailbox(domain, batch) {
887
+ const runtime = this.runtime;
888
+ if (runtime === undefined)
889
+ return;
890
+ while (!batch.full) {
891
+ const claim = runtime.mailbox.tryClaim(domain, MAX_DRAIN_RECORDS, Number.MAX_SAFE_INTEGER);
892
+ if (claim === undefined)
893
+ break;
894
+ const owner = readyOwner(claim.owner, this.routingId, this.stateful, domain);
895
+ batch.push(owner, new MailboxClaim(runtime, claim, () => {
896
+ // A receive batch may intentionally consume fewer records than the
897
+ // mailbox claim. Releasing the claim re-queues the remainder, so
898
+ // expose that newly ready work to the dispatch pump.
899
+ if (runtime.mailbox.pendingMessages(domain) > 0) {
900
+ this.readyHandler?.(domain === 'infrastructure' ? service_runtime_contracts_1.ReadyDomain.Infrastructure : service_runtime_contracts_1.ReadyDomain.Application);
901
+ }
902
+ }));
903
+ }
904
+ }
905
+ requireRuntime() {
906
+ if (this.runtime === undefined)
907
+ throw new Error('MeshNode is not started.');
908
+ return this.runtime;
909
+ }
910
+ requireApplicationJobQueue() {
911
+ if (this.applicationJobQueue === undefined) {
912
+ throw new Error('Raw MeshNode requires the host Application Job Queue.');
913
+ }
914
+ return this.applicationJobQueue;
915
+ }
916
+ requireStateful() {
917
+ if (this.stateful === undefined)
918
+ throw new Error('Stateful MeshNode is not started.');
919
+ return this.stateful;
920
+ }
921
+ peerGeneration(nodeRid) {
922
+ if (nodeRid === this.routingId) {
923
+ return this.requireRuntime().topology.localDescriptor().lifecycleGeneration;
924
+ }
925
+ return this.requireRuntime().topology.peer(nodeRid)?.descriptor.lifecycleGeneration ?? 1n;
926
+ }
927
+ requireNotStarted() {
928
+ if (this.runtime !== undefined)
929
+ throw new Error('MeshNode is already started.');
930
+ if (this.closed)
931
+ throw new Error('MeshNode is closed.');
932
+ }
933
+ }
934
+ exports.ZLinkNodeRawMeshBackend = ZLinkNodeRawMeshBackend;
935
+ class RawServiceSpot {
936
+ backend;
937
+ state;
938
+ routingId;
939
+ lifecycleGeneration;
940
+ subscriptions = new Set();
941
+ closed = false;
942
+ constructor(backend, state) {
943
+ this.backend = backend;
944
+ this.state = state;
945
+ this.routingId = state.ref.spotId;
946
+ this.lifecycleGeneration = state.ref.generation;
947
+ }
948
+ status() {
949
+ return {
950
+ routingId: this.routingId,
951
+ lifecycleGeneration: this.lifecycleGeneration
952
+ };
953
+ }
954
+ async sendToChannel(channelName, parts, options) {
955
+ this.requireOpen();
956
+ void options;
957
+ return this.backend.sendToChannel(channelName, parts);
958
+ }
959
+ requestToChannel(channelName, parts, options) {
960
+ this.requireOpen();
961
+ return this.backend.requestToChannel(channelName, parts, options);
962
+ }
963
+ async sendToSpot(targetNodeRid, targetSpotId, targetSpotGeneration, parts, options) {
964
+ this.requireOpen();
965
+ const routeFence = requireDirectSpotRouteFence(options?.routeFence, String(targetNodeRid), String(targetSpotId), targetSpotGeneration, options?.entrySpot === true
966
+ ? this.backend.entrySpotRouteFence(String(targetNodeRid), String(targetSpotId))
967
+ : undefined);
968
+ return this.backend.sendFromSpot(this.state, routeFence, parts);
969
+ }
970
+ requestToSpot(targetNodeRid, targetSpotId, targetSpotGeneration, parts, options) {
971
+ this.requireOpen();
972
+ const routeFence = requireDirectSpotRouteFence(options?.routeFence, String(targetNodeRid), String(targetSpotId), targetSpotGeneration, options?.entrySpot === true
973
+ ? this.backend.entrySpotRouteFence(String(targetNodeRid), String(targetSpotId))
974
+ : undefined);
975
+ return this.backend.requestFromSpot(this.state, routeFence, parts, options?.timeoutMs ?? 30_000);
976
+ }
977
+ async publish(channelName, topic, parts, options) {
978
+ this.requireOpen();
979
+ void options;
980
+ await this.backend.publishFromSpot(this.state, channelName, topic, parts);
981
+ }
982
+ setSubscription(channelName, topicFilter, kind = 0) {
983
+ this.requireOpen();
984
+ if (kind !== 0)
985
+ throw new RangeError('Only the default logical multicast subscription kind is supported.');
986
+ this.backend.setSpotSubscription(this.state, channelName, topicFilter);
987
+ this.subscriptions.add(`${channelName}\0${topicFilter}\0${kind}`);
988
+ }
989
+ unsetSubscription(channelName, topicFilter, kind = 0) {
990
+ this.requireOpen();
991
+ if (kind !== 0)
992
+ throw new RangeError('Only the default logical multicast subscription kind is supported.');
993
+ this.backend.unsetSpotSubscription(this.state, channelName, topicFilter);
994
+ this.subscriptions.delete(`${channelName}\0${topicFilter}\0${kind}`);
995
+ }
996
+ close() {
997
+ if (this.closed)
998
+ return;
999
+ if (this.state.kind !== 'entry' && !this.backend.closeSpot(this.state)) {
1000
+ throw new Error(`Spot '${this.routingId}' still has Actor members.`);
1001
+ }
1002
+ this.backend.clearSpotSubscriptions(this.state);
1003
+ this.closed = true;
1004
+ this.subscriptions.clear();
1005
+ }
1006
+ async dispose() {
1007
+ this.close();
1008
+ }
1009
+ requireOpen() {
1010
+ if (this.closed)
1011
+ throw new Error(`Spot '${this.routingId}' is closed.`);
1012
+ }
1013
+ }
1014
+ function requireDirectSpotRouteFence(route, targetNodeRid, targetSpotId, targetSpotGeneration, entryRoute) {
1015
+ if (route === undefined && entryRoute !== undefined) {
1016
+ return entryRoute;
1017
+ }
1018
+ if (route === undefined
1019
+ || route.targetNodeRid !== targetNodeRid
1020
+ || route.spot.spotId !== targetSpotId
1021
+ || route.spot.generation !== targetSpotGeneration) {
1022
+ throw new TypeError('Direct Spot submission requires the exact resolved authority fence.');
1023
+ }
1024
+ return route;
1025
+ }
1026
+ function entrySpotFenceVersion(generation) {
1027
+ return `entry:${generation}`;
1028
+ }
1029
+ class RawStreamSessionService {
1030
+ stateful;
1031
+ stream;
1032
+ observe;
1033
+ state = 1;
1034
+ closed = false;
1035
+ sessionTargets = new Map();
1036
+ constructor(stateful, stream, observe) {
1037
+ this.stateful = stateful;
1038
+ this.stream = stream;
1039
+ this.observe = observe;
1040
+ }
1041
+ start() {
1042
+ if (this.closed)
1043
+ throw new Error('STREAM session service is closed.');
1044
+ this.state = 2;
1045
+ }
1046
+ shutdown(_timeoutMs) {
1047
+ this.close();
1048
+ return zlink_1.RequestResult.Ok;
1049
+ }
1050
+ close() {
1051
+ if (this.closed)
1052
+ return;
1053
+ this.closed = true;
1054
+ this.state = 5;
1055
+ this.sessionTargets.clear();
1056
+ }
1057
+ status() {
1058
+ const bindings = this.stateful.allSessionBindings();
1059
+ return {
1060
+ state: this.state,
1061
+ lifecycleGeneration: 1n,
1062
+ sessionCount: BigInt(new Set(bindings.map(value => value.sessionRid)).size),
1063
+ bindingCount: BigInt(bindings.length),
1064
+ pendingMessageCount: 0n,
1065
+ pendingByteCount: 0n,
1066
+ lastError: 0
1067
+ };
1068
+ }
1069
+ lookupActor(targetNodeRid, actorId, timeoutMs = 30_000) {
1070
+ this.requireStarted();
1071
+ return this.observe(service_runtime_contracts_1.OperationKind.ActorLookup, this.stateful.lookupRemoteActor(String(targetNodeRid), actorId, timeoutMs));
1072
+ }
1073
+ bindActor(sessionRid, actor, timeoutMs = 30_000, onBindingReplaced, actorAuthority) {
1074
+ this.requireStarted();
1075
+ const sessionKey = String(sessionRid);
1076
+ this.sessionTargets.set(sessionKey, sessionRid);
1077
+ return this.observe(service_runtime_contracts_1.OperationKind.StreamBind, this.stateful.bindSession(sessionKey, actor, timeoutMs, (targetSessionRid, payloadFrame) => this.deliver(targetSessionRid, payloadFrame), onBindingReplaced, (0, service_session_binding_ingress_port_1.serviceSessionBindingIngressPortIfRegistered)(this), actorAuthority));
1078
+ }
1079
+ unbindActor(sessionRid, actor, expectedBindingGeneration, timeoutMs = 30_000) {
1080
+ this.requireStarted();
1081
+ return this.observe(service_runtime_contracts_1.OperationKind.StreamUnbind, this.stateful.unbindSession(String(sessionRid), actor, expectedBindingGeneration, timeoutMs));
1082
+ }
1083
+ bindings(sessionRid) {
1084
+ return this.stateful.sessionBindings(String(sessionRid));
1085
+ }
1086
+ async sendToActor(sessionRid, actor, parts) {
1087
+ this.requireStarted();
1088
+ return await this.stateful.sendSessionToActor(String(sessionRid), actor, encodeMultipart(parts));
1089
+ }
1090
+ async deliver(sessionRid, payload) {
1091
+ const target = this.sessionTargets.get(sessionRid);
1092
+ if (target === undefined)
1093
+ return false;
1094
+ const operation = this.stream.send(target);
1095
+ const parts = decodeMultipartBuffers((0, service_wire_m6a_codec_1.decodeApplicationPayloadView)(payload).payload);
1096
+ if (parts.length === 0)
1097
+ return false;
1098
+ let submit = operation.message(parts[0]);
1099
+ for (let index = 1; index < parts.length; index++) {
1100
+ submit = submit.message(parts[index]);
1101
+ }
1102
+ try {
1103
+ await submit.submit();
1104
+ return true;
1105
+ }
1106
+ catch (error) {
1107
+ if (!(error instanceof zlink_1.SubmitError))
1108
+ throw error;
1109
+ switch (error.result) {
1110
+ case zlink_1.SubmitResult.NotConnected:
1111
+ case zlink_1.SubmitResult.NotFound:
1112
+ case zlink_1.SubmitResult.Terminated:
1113
+ // Let the socket monitor drive the existing STREAM close/unbind
1114
+ // lifecycle instead of maintaining a second session-close state.
1115
+ (0, node_socket_backend_adapter_1.disconnectStreamPeer)(this.stream, target);
1116
+ throw new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, { cause: error });
1117
+ case zlink_1.SubmitResult.Backpressured:
1118
+ case zlink_1.SubmitResult.NotAdmitted:
1119
+ throw new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, { cause: error });
1120
+ default:
1121
+ throw error;
1122
+ }
1123
+ }
1124
+ }
1125
+ requireStarted() {
1126
+ if (this.state !== 2 || this.closed) {
1127
+ throw new Error('STREAM session service is not started.');
1128
+ }
1129
+ }
1130
+ }
1131
+ class RawReadyBatch {
1132
+ capacity;
1133
+ records = [];
1134
+ claims = [];
1135
+ constructor(capacity) {
1136
+ this.capacity = capacity;
1137
+ if (!Number.isInteger(capacity) || capacity < 1)
1138
+ throw new RangeError('Ready capacity must be positive.');
1139
+ }
1140
+ get full() {
1141
+ return this.records.length >= this.capacity;
1142
+ }
1143
+ push(record, claim) {
1144
+ if (this.full)
1145
+ throw new Error('Ready batch is full.');
1146
+ this.records.push(record);
1147
+ this.claims.push(claim);
1148
+ }
1149
+ takeClaim(index) {
1150
+ if (index < 0 || index >= this.claims.length) {
1151
+ throw new RangeError('Ready claim index is invalid.');
1152
+ }
1153
+ return this.claims[index];
1154
+ }
1155
+ reset() {
1156
+ this.records.length = 0;
1157
+ this.claims.length = 0;
1158
+ }
1159
+ close() {
1160
+ this.reset();
1161
+ }
1162
+ }
1163
+ class RawReceiveBatch {
1164
+ messageCapacity;
1165
+ partCapacity;
1166
+ constructor(messageCapacity, partCapacity) {
1167
+ this.messageCapacity = messageCapacity;
1168
+ this.partCapacity = partCapacity;
1169
+ if ([messageCapacity, partCapacity].some(value => !Number.isInteger(value) || value < 1)) {
1170
+ throw new RangeError('Receive batch capacities must be positive.');
1171
+ }
1172
+ }
1173
+ reset() { }
1174
+ close() { }
1175
+ }
1176
+ class MailboxClaim {
1177
+ runtime;
1178
+ claim;
1179
+ onRelease;
1180
+ consumed = false;
1181
+ released = false;
1182
+ remaining = [];
1183
+ constructor(runtime, claim, onRelease) {
1184
+ this.runtime = runtime;
1185
+ this.claim = claim;
1186
+ this.onRelease = onRelease;
1187
+ }
1188
+ recvBatch(batch) {
1189
+ if (this.consumed)
1190
+ return { ok: false, records: [] };
1191
+ this.consumed = true;
1192
+ const capacity = batch;
1193
+ const records = [];
1194
+ let parts = 0;
1195
+ for (let index = 0; index < this.claim.records.length; index += 1) {
1196
+ const record = this.claim.records[index];
1197
+ let decoded;
1198
+ try {
1199
+ decoded = decodeMultipartRecord(this.runtime, record);
1200
+ }
1201
+ catch (error) {
1202
+ record.applicationJob?.close();
1203
+ if (error instanceof service_wire_m6a_codec_1.ServiceWireProtocolError) {
1204
+ this.runtime.mailbox.releaseClaimedPayload(record);
1205
+ continue;
1206
+ }
1207
+ this.runtime.mailbox.releaseClaimedPayload(record);
1208
+ this.remaining = this.claim.records.slice(index + 1);
1209
+ throw error;
1210
+ }
1211
+ const nextParts = decoded.parts.length;
1212
+ if (records.length >= capacity.messageCapacity
1213
+ || parts + nextParts > capacity.partCapacity) {
1214
+ for (const part of decoded.parts)
1215
+ part.close();
1216
+ this.remaining = this.claim.records.slice(index);
1217
+ break;
1218
+ }
1219
+ parts += nextParts;
1220
+ records.push(decoded);
1221
+ this.runtime.mailbox.releaseClaimedPayload(record);
1222
+ }
1223
+ return { ok: records.length > 0, records };
1224
+ }
1225
+ release() {
1226
+ if (this.released)
1227
+ return;
1228
+ this.released = true;
1229
+ this.runtime.mailbox.release(this.claim, this.remaining);
1230
+ this.onRelease?.();
1231
+ }
1232
+ }
1233
+ class CompletionClaim {
1234
+ completion;
1235
+ consumed = false;
1236
+ constructor(completion) {
1237
+ this.completion = completion;
1238
+ }
1239
+ recvBatch() {
1240
+ if (this.consumed)
1241
+ return { ok: false, records: [] };
1242
+ this.consumed = true;
1243
+ const payload = this.completion.result.payload;
1244
+ return {
1245
+ ok: true,
1246
+ records: [{
1247
+ kind: service_runtime_contracts_1.ReceiveKind.Completion,
1248
+ domain: service_runtime_contracts_1.ReadyDomain.Infrastructure,
1249
+ sourceNodeRid: null,
1250
+ sourceSpotId: null,
1251
+ sourceBindingGeneration: 0n,
1252
+ sourceActor: null,
1253
+ operationId: this.completion.operationId,
1254
+ operationKind: this.completion.operationKind,
1255
+ channelName: null,
1256
+ topic: null,
1257
+ applicationMetadata: null,
1258
+ kindData: 'kindData' in this.completion.result
1259
+ ? this.completion.result.kindData ?? null
1260
+ : null,
1261
+ terminalResult: this.completion.result.terminalResult,
1262
+ failureErrno: this.completion.result.failureCode,
1263
+ parts: payload === undefined
1264
+ ? []
1265
+ : payload.contentType === MULTIPART_CONTENT_TYPE
1266
+ ? decodeMultipart(payload.payload)
1267
+ : [zlink_1.Message.from(payload.payload)],
1268
+ reply: () => zlink_1.SubmitResult.InvalidState,
1269
+ replyActorJoin: () => zlink_1.SubmitResult.NotSupported
1270
+ }]
1271
+ };
1272
+ }
1273
+ release() { }
1274
+ }
1275
+ function decodeMultipartRecord(runtime, record) {
1276
+ const stateful = (0, service_stateful_runtime_1.statefulMailboxData)(record);
1277
+ if (stateful !== undefined) {
1278
+ return decodeStatefulRecord(record, stateful);
1279
+ }
1280
+ // RawServiceMeshRuntime admits the frozen relocation/session controls as
1281
+ // bare service-wire frames on the infrastructure mailbox. They are
1282
+ // node-owned infrastructure work, not an M6A application envelope, so do
1283
+ // not try to read `parts[1]` as an application payload frame here. The
1284
+ // host's relocation dispatcher decodes the canonical frame directly from
1285
+ // `parts[0]` and any trailing frames (e.g. a Prepare's bound-session
1286
+ // journal sideband, spec 28 §4.4) as its own node-internal ZLNI frames.
1287
+ // Application dispatch (Channel*/NodeSend/NodeRequest 16-19 envelopes)
1288
+ // always arrives on the application mailbox domain, so gating on
1289
+ // `record.domain` here — rather than solely on part count — keeps a
1290
+ // multi-frame infrastructure control (Prepare + sideband) from being
1291
+ // misread as a 2-frame application envelope and dropped as invalid_frame.
1292
+ if (record.parts.length === 1 || record.domain === 'infrastructure') {
1293
+ const request = record.requestSequence !== undefined
1294
+ && record.sourceRoutingId !== undefined;
1295
+ return {
1296
+ kind: request ? service_runtime_contracts_1.ReceiveKind.NodeRequest : service_runtime_contracts_1.ReceiveKind.NodeSend,
1297
+ domain: readyDomain(record.domain),
1298
+ sourceNodeRid: record.sourceRoutingId ?? null,
1299
+ sourceSpotId: null,
1300
+ sourceBindingGeneration: 0n,
1301
+ sourceActor: null,
1302
+ operationId: { high: 0n, low: record.requestSequence ?? 0n },
1303
+ operationKind: request ? service_runtime_contracts_1.OperationKind.NodeRequest : 0,
1304
+ channelName: null,
1305
+ topic: null,
1306
+ applicationMetadata: null,
1307
+ packetName: undefined,
1308
+ contentType: undefined,
1309
+ kindData: null,
1310
+ terminalResult: 0,
1311
+ failureErrno: 0,
1312
+ ...receiveIngressLifecycle(record),
1313
+ parts: record.parts.map(part => zlink_1.Message.from(part)),
1314
+ reply(parts) {
1315
+ if (!request)
1316
+ return zlink_1.SubmitResult.InvalidState;
1317
+ const values = Array.isArray(parts) ? parts : [parts];
1318
+ if (values.length === 0)
1319
+ return zlink_1.SubmitResult.InvalidState;
1320
+ runtime.replyService({
1321
+ sourceRoutingId: record.sourceRoutingId,
1322
+ ...(record.sourceRoute === undefined ? {} : { sourceRoute: record.sourceRoute }),
1323
+ requestSequence: record.requestSequence,
1324
+ ...(record.reply === undefined ? {} : { reply: record.reply })
1325
+ }, values.map(value => Buffer.from(messageBytesView(value))));
1326
+ return zlink_1.SubmitResult.Ok;
1327
+ },
1328
+ replyActorJoin: () => zlink_1.SubmitResult.NotSupported
1329
+ };
1330
+ }
1331
+ const header = record.parts[0];
1332
+ const command = header[3];
1333
+ const payloadFrame = record.parts[1];
1334
+ const application = decodeApplicationEnvelope(payloadFrame);
1335
+ const channelName = record.owner.startsWith('channel:') ? record.owner.slice('channel:'.length) : null;
1336
+ const operationId = record.correlation === undefined
1337
+ ? { high: 0n, low: 0n }
1338
+ : { high: 1n, low: record.correlation };
1339
+ const kind = command === 16
1340
+ ? service_runtime_contracts_1.ReceiveKind.NodeSend
1341
+ : command === 17
1342
+ ? service_runtime_contracts_1.ReceiveKind.NodeRequest
1343
+ : command === 18
1344
+ ? service_runtime_contracts_1.ReceiveKind.ChannelSend
1345
+ : service_runtime_contracts_1.ReceiveKind.ChannelRequest;
1346
+ const operationKind = kind === service_runtime_contracts_1.ReceiveKind.NodeRequest
1347
+ ? service_runtime_contracts_1.OperationKind.NodeRequest
1348
+ : kind === service_runtime_contracts_1.ReceiveKind.ChannelRequest
1349
+ ? service_runtime_contracts_1.OperationKind.ChannelRequest
1350
+ : 0;
1351
+ const ingressLifecycle = receiveIngressLifecycle(record);
1352
+ return {
1353
+ kind,
1354
+ domain: readyDomain(record.domain),
1355
+ sourceNodeRid: record.sourceRoutingId ?? null,
1356
+ sourceSpotId: null,
1357
+ sourceBindingGeneration: 0n,
1358
+ sourceActor: null,
1359
+ operationId,
1360
+ operationKind,
1361
+ channelName,
1362
+ topic: null,
1363
+ applicationMetadata: null,
1364
+ packetName: application.packetName,
1365
+ contentType: application.contentType,
1366
+ kindData: null,
1367
+ terminalResult: 0,
1368
+ failureErrno: 0,
1369
+ ...ingressLifecycle,
1370
+ parts: decodeMultipart(application.payload),
1371
+ reply(parts) {
1372
+ if (record.correlation === undefined)
1373
+ return zlink_1.SubmitResult.InvalidState;
1374
+ runtime.reply(record, encodeMultipart(parts));
1375
+ return zlink_1.SubmitResult.Ok;
1376
+ },
1377
+ replyActorJoin: () => zlink_1.SubmitResult.NotSupported
1378
+ };
1379
+ }
1380
+ function decodeStatefulRecord(record, stateful) {
1381
+ const payloadFrame = record.parts.length < 2 ? undefined : record.parts[1];
1382
+ const canonicalActorJoin = stateful.kindData?.kind === 'actorControl'
1383
+ && stateful.kindData.canonicalActorJoin !== undefined;
1384
+ const canonicalActorJoinPayload = stateful.operationKind === service_runtime_contracts_1.OperationKind.ActorJoin
1385
+ && stateful.canonicalApplicationPayload !== undefined;
1386
+ const application = canonicalActorJoinPayload
1387
+ ? stateful.canonicalApplicationPayload
1388
+ : (payloadFrame === undefined ? undefined : decodeApplicationEnvelope(payloadFrame));
1389
+ const operationId = record.correlation === undefined
1390
+ ? { high: 0n, low: 0n }
1391
+ : { high: 2n, low: record.correlation };
1392
+ const ingressLifecycle = receiveIngressLifecycle(record);
1393
+ return {
1394
+ kind: stateful.receiveKind,
1395
+ domain: readyDomain(record.domain),
1396
+ sourceNodeRid: record.sourceRoutingId ?? null,
1397
+ sourceSpotId: stateful.sourceSpotId ?? null,
1398
+ sourceBindingGeneration: stateful.sourceBindingGeneration ?? 0n,
1399
+ sourceActor: stateful.sourceActor ?? null,
1400
+ operationId,
1401
+ operationKind: stateful.operationKind,
1402
+ channelName: stateful.channelName ?? null,
1403
+ topic: stateful.topic ?? null,
1404
+ applicationMetadata: stateful.applicationMetadata ?? null,
1405
+ ...(application === undefined
1406
+ ? {}
1407
+ : {
1408
+ packetName: application.packetName,
1409
+ contentType: application.contentType
1410
+ }),
1411
+ kindData: stateful.kindData ?? null,
1412
+ terminalResult: 0,
1413
+ failureErrno: 0,
1414
+ ...ingressLifecycle,
1415
+ parts: application === undefined
1416
+ ? []
1417
+ : canonicalActorJoinPayload
1418
+ ? [zlink_1.Message.from(application.payload)]
1419
+ : decodeMultipart(application.payload),
1420
+ ...(stateful.isPending === undefined ? {} : { isPending: stateful.isPending }),
1421
+ ...(stateful.deadlineUnixMs === undefined ? {} : { deadlineUnixMs: stateful.deadlineUnixMs }),
1422
+ ...(stateful.messageFollowOrigin === undefined
1423
+ ? {}
1424
+ : { messageFollowOrigin: stateful.messageFollowOrigin }),
1425
+ ...(stateful.onTerminalCompletion === undefined
1426
+ ? {}
1427
+ : { onTerminalCompletion: stateful.onTerminalCompletion }),
1428
+ reply(parts) {
1429
+ if (stateful.reply === undefined)
1430
+ return zlink_1.SubmitResult.InvalidState;
1431
+ return stateful.reply(zlink_1.RequestResult.Ok, 0, encodeMultipart(parts)) ? zlink_1.SubmitResult.Ok : zlink_1.SubmitResult.InvalidState;
1432
+ },
1433
+ replyActorJoin(joinResult, parts, _flags, _replyContentType) {
1434
+ if (stateful.reply === undefined || stateful.targetSpot === undefined) {
1435
+ return zlink_1.SubmitResult.InvalidState;
1436
+ }
1437
+ const membershipEpoch = stateful.kindData?.kind === 'actorControl'
1438
+ ? stateful.kindData.currentMembershipEpoch
1439
+ : undefined;
1440
+ if (joinResult === 0 && membershipEpoch === undefined) {
1441
+ return zlink_1.SubmitResult.InvalidState;
1442
+ }
1443
+ const replyParts = Array.isArray(parts) ? parts : [parts];
1444
+ if (canonicalActorJoin && replyParts.length > 1) {
1445
+ return zlink_1.SubmitResult.InvalidState;
1446
+ }
1447
+ const replyPayload = replyParts.length === 0
1448
+ ? undefined
1449
+ : encodeMultipart(replyParts);
1450
+ const accepted = stateful.reply(zlink_1.RequestResult.Ok, 0, replyPayload, {
1451
+ kind: 'actorJoin',
1452
+ joinResult: joinResult === 0 ? 0 : 1,
1453
+ spot: stateful.targetSpot,
1454
+ ...(membershipEpoch === undefined ? {} : { membershipEpoch }),
1455
+ // Spec 15 §4.2: the accepted admission reply carries the target's
1456
+ // valid receive chunk cap for this join's relocation state chunks —
1457
+ // a conservative, recompute-stable bound (never lowered).
1458
+ ...(joinResult === 0
1459
+ ? { receiveChunkLimitBytes: ACTOR_JOIN_ADVERTISED_RECEIVE_CHUNK_LIMIT_BYTES }
1460
+ : {})
1461
+ });
1462
+ return accepted ? zlink_1.SubmitResult.Ok : zlink_1.SubmitResult.InvalidState;
1463
+ },
1464
+ replyFailure(terminalResult, failureCode) {
1465
+ if (stateful.reply === undefined)
1466
+ return zlink_1.SubmitResult.InvalidState;
1467
+ return stateful.reply(terminalResult, failureCode)
1468
+ ? zlink_1.SubmitResult.Ok
1469
+ : zlink_1.SubmitResult.InvalidState;
1470
+ }
1471
+ };
1472
+ }
1473
+ function receiveIngressLifecycle(record) {
1474
+ const applicationJob = record.applicationJob;
1475
+ return applicationJob === undefined
1476
+ ? {}
1477
+ : {
1478
+ applicationJobPermit: applicationJob,
1479
+ releaseRetainedIngress: () => applicationJob.close()
1480
+ };
1481
+ }
1482
+ function readyOwner(owner, nodeRid, stateful, domain) {
1483
+ if (owner.startsWith('spot:')) {
1484
+ return {
1485
+ ownerKind: service_runtime_contracts_1.ReadyOwnerKind.Spot,
1486
+ domain: readyDomain(domain),
1487
+ ordinaryIngressPreAdmitted: domain === 'application',
1488
+ spotId: owner.slice('spot:'.length),
1489
+ actor: null
1490
+ };
1491
+ }
1492
+ if (owner.startsWith('actor:')) {
1493
+ const separator = owner.indexOf('\0', 'actor:'.length);
1494
+ const actorId = separator < 0
1495
+ ? owner.slice('actor:'.length)
1496
+ : owner.slice('actor:'.length, separator);
1497
+ const generation = separator < 0 ? 0n : BigInt(owner.slice(separator + 1));
1498
+ const current = stateful?.actor(actorId);
1499
+ return {
1500
+ ownerKind: service_runtime_contracts_1.ReadyOwnerKind.Actor,
1501
+ domain: readyDomain(domain),
1502
+ ordinaryIngressPreAdmitted: domain === 'application',
1503
+ spotId: current?.spot.spotId ?? null,
1504
+ actor: current?.ref ?? {
1505
+ nodeRid,
1506
+ actorId,
1507
+ generation
1508
+ }
1509
+ };
1510
+ }
1511
+ return {
1512
+ ownerKind: service_runtime_contracts_1.ReadyOwnerKind.Node,
1513
+ domain: readyDomain(domain),
1514
+ ordinaryIngressPreAdmitted: domain === 'application',
1515
+ spotId: null,
1516
+ actor: null
1517
+ };
1518
+ }
1519
+ function readyDomain(domain) {
1520
+ return domain === 'infrastructure'
1521
+ ? service_runtime_contracts_1.ReadyDomain.Infrastructure
1522
+ : service_runtime_contracts_1.ReadyDomain.Application;
1523
+ }
1524
+ /**
1525
+ * Classifies a generic node/channel request rejection into a completion
1526
+ * terminal. Spec 32-framework-error-model:91-92 — a reply that could not be
1527
+ * decoded (ServiceWireProtocolError from the reply parser) is a protocol
1528
+ * failure, not connection loss; only genuine transport rejections collapse to
1529
+ * NotConnected.
1530
+ */
1531
+ function genericOperationFailure(error) {
1532
+ // requestProtocolError(16): the schema terminal-failure-integrity rule
1533
+ // forbids a typed terminal (104) with failure none, so the synthesized
1534
+ // decode-failure pair is 104+16; genuine transport loss stays 109+0.
1535
+ return error instanceof service_wire_m6a_codec_1.ServiceWireProtocolError
1536
+ ? { terminalResult: zlink_1.RequestResult.ProtocolError, failureCode: 16 }
1537
+ : { terminalResult: zlink_1.RequestResult.NotConnected, failureCode: 0 };
1538
+ }
1539
+ function statefulOperationFailure(error) {
1540
+ if (error instanceof contracts_1.ZLinkFrameworkException) {
1541
+ return (0, framework_errors_internal_1.internalFrameworkWireReply)(error);
1542
+ }
1543
+ if (error instanceof operation_registry_1.OperationTimeoutError) {
1544
+ return { terminalResult: zlink_1.RequestResult.TimedOut, failureCode: 0 };
1545
+ }
1546
+ if ((0, runtime_values_1.isZLinkBackendResultError)(error)) {
1547
+ return {
1548
+ terminalResult: error.result,
1549
+ failureCode: error.nativeErrno ?? 0
1550
+ };
1551
+ }
1552
+ if (error instanceof operation_registry_1.OperationCancelledError) {
1553
+ return { terminalResult: zlink_1.RequestResult.NotConnected, failureCode: 0 };
1554
+ }
1555
+ return { terminalResult: zlink_1.RequestResult.InternalError, failureCode: 17 };
1556
+ }
1557
+ function encodeMultipart(parts) {
1558
+ const values = Array.isArray(parts) ? parts : [parts];
1559
+ if (values.length === 0)
1560
+ throw new TypeError('Multipart payload must contain at least one part.');
1561
+ // messageBytesView aliases the caller's buffer; the parts are consumed
1562
+ // synchronously by the copy loop below and never retained.
1563
+ const bytes = values.map(messageBytesView);
1564
+ let size = 4;
1565
+ for (const part of bytes)
1566
+ size += 4 + part.byteLength;
1567
+ const payload = Buffer.alloc(size);
1568
+ payload.writeUInt32BE(bytes.length, 0);
1569
+ let offset = 4;
1570
+ for (const part of bytes) {
1571
+ payload.writeUInt32BE(part.byteLength, offset);
1572
+ offset += 4;
1573
+ payload.set(part, offset);
1574
+ offset += part.byteLength;
1575
+ }
1576
+ return {
1577
+ packetName: MULTIPART_PACKET_NAME,
1578
+ contentType: MULTIPART_CONTENT_TYPE,
1579
+ payload
1580
+ };
1581
+ }
1582
+ function encodeMultipartApplicationFrame(parts) {
1583
+ const values = Array.isArray(parts) ? parts : [parts];
1584
+ if (values.length === 0)
1585
+ throw new TypeError('Multipart payload must contain at least one part.');
1586
+ return (0, service_wire_m6a_codec_1.encodeMultipartApplicationPayload)(values.map(messageBytesView), MULTIPART_PACKET_NAME, MULTIPART_CONTENT_TYPE);
1587
+ }
1588
+ function decodeApplicationEnvelope(frame) {
1589
+ const bytes = Buffer.from(frame.buffer, frame.byteOffset, frame.byteLength);
1590
+ if (bytes.length < 11 || bytes[0] !== 1) {
1591
+ throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Invalid application envelope.');
1592
+ }
1593
+ const bodyLength = bytes.readUInt32BE(1);
1594
+ if (bodyLength !== bytes.length - 5) {
1595
+ throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Invalid application envelope length.');
1596
+ }
1597
+ let offset = 5;
1598
+ const packetLength = bytes[offset++];
1599
+ if (packetLength === 0 || bytes.length - offset < packetLength + 1) {
1600
+ throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Invalid application envelope packet name.');
1601
+ }
1602
+ let packetName;
1603
+ try {
1604
+ packetName = FATAL_UTF8.decode(bytes.subarray(offset, offset + packetLength));
1605
+ }
1606
+ catch {
1607
+ throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Invalid application envelope packet name.');
1608
+ }
1609
+ offset += packetLength;
1610
+ const contentLength = bytes[offset++];
1611
+ if (contentLength === 0 || bytes.length - offset < contentLength + 4) {
1612
+ throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Invalid application envelope content type.');
1613
+ }
1614
+ let contentType;
1615
+ try {
1616
+ contentType = FATAL_UTF8.decode(bytes.subarray(offset, offset + contentLength));
1617
+ }
1618
+ catch {
1619
+ throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Invalid application envelope content type.');
1620
+ }
1621
+ offset += contentLength;
1622
+ const payloadLength = bytes.readUInt32BE(offset);
1623
+ offset += 4;
1624
+ if (packetName !== MULTIPART_PACKET_NAME
1625
+ || contentType !== MULTIPART_CONTENT_TYPE
1626
+ || payloadLength !== bytes.length - offset) {
1627
+ throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Unexpected M6A application payload.');
1628
+ }
1629
+ return { packetName, contentType, payload: bytes.subarray(offset) };
1630
+ }
1631
+ function decodeMultipart(payload) {
1632
+ const buffers = decodeMultipartBuffers(payload);
1633
+ return buffers.map(part => zlink_1.Message.from(part));
1634
+ }
1635
+ function decodeMultipartBuffers(payload) {
1636
+ const bytes = Buffer.from(payload.buffer, payload.byteOffset, payload.byteLength);
1637
+ if (bytes.length < 4)
1638
+ throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Truncated multipart payload.');
1639
+ const count = bytes.readUInt32BE(0);
1640
+ if (count === 0 || count > Math.floor((bytes.length - 4) / 4)) {
1641
+ throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Invalid multipart part count.');
1642
+ }
1643
+ const result = new Array(count);
1644
+ let offset = 4;
1645
+ for (let index = 0; index < count; index++) {
1646
+ if (bytes.length - offset < 4) {
1647
+ throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Truncated multipart part length.');
1648
+ }
1649
+ const length = bytes.readUInt32BE(offset);
1650
+ offset += 4;
1651
+ if (bytes.length - offset < length) {
1652
+ throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Truncated multipart part.');
1653
+ }
1654
+ result[index] = bytes.subarray(offset, offset + length);
1655
+ offset += length;
1656
+ }
1657
+ if (offset !== bytes.length) {
1658
+ throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Multipart payload has trailing bytes.');
1659
+ }
1660
+ return result;
1661
+ }
1662
+ function messageBytesView(value) {
1663
+ if (typeof value === 'object' && 'data' in value) {
1664
+ return value.data();
1665
+ }
1666
+ if (typeof value === 'string')
1667
+ return Buffer.from(value);
1668
+ return value;
1669
+ }
1670
+ function requireRawReadyBatch(batch) {
1671
+ if (!(batch instanceof RawReadyBatch))
1672
+ throw new TypeError('Ready batch belongs to another backend.');
1673
+ return batch;
1674
+ }
1675
+ function stateCode(state) {
1676
+ return ['preparing', 'serving', 'retiring', 'draining', 'stopped', 'error'].indexOf(state) + 1;
1677
+ }
1678
+ function peerStateCode(state) {
1679
+ switch (state) {
1680
+ case 'preparing': return 2;
1681
+ case 'serving':
1682
+ case 'retiring': return 3;
1683
+ case 'draining': return 4;
1684
+ case 'stopped':
1685
+ case 'error': return 5;
1686
+ }
1687
+ }
1688
+ function createLifecycleGeneration() {
1689
+ // Node's public Spot context exposes this lifecycle token as a number. Keep
1690
+ // the opaque equality token within the exact range that surface can carry;
1691
+ // lifecycle ordering is never inferred from its numeric value.
1692
+ const generation = (0, node_crypto_1.randomBytes)(8).readBigUInt64BE()
1693
+ & BigInt(Number.MAX_SAFE_INTEGER);
1694
+ return generation === 0n ? 1n : generation;
1695
+ }
1696
+ function requirePositivePlacementValue(value, name) {
1697
+ if (!Number.isSafeInteger(value) || value <= 0 || value > 0x7fff_ffff) {
1698
+ throw new RangeError(`${name} must be an integer in 1..2147483647.`);
1699
+ }
1700
+ return value;
1701
+ }
1702
+ function requirePublicWeight(value, name) {
1703
+ if (!Number.isInteger(value) || value < 0 || value > 10_000) {
1704
+ throw new RangeError(`${name} must be an integer in 0..10000.`);
1705
+ }
1706
+ return value;
1707
+ }