@zlink-systems/framework 0.30.0 → 0.30.2

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 (456) hide show
  1. package/LICENSE +150 -68
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/contracts/Actors/ZLinkActorClient.d.ts +2 -1
  4. package/dist/contracts/Channels/Calls.d.ts +2 -1
  5. package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +6 -0
  6. package/dist/contracts/Common/ZLinkEncodedPayload.js +18 -3
  7. package/dist/contracts/Common/ZLinkMessageMetadata.js +11 -5
  8. package/dist/contracts/Common/encoded-payload-storage.d.ts +1 -1
  9. package/dist/contracts/Common/encoded-payload-storage.js +5 -2
  10. package/dist/contracts/Configuration/Builders.d.ts +1 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +2 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +5 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +2 -2
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +2 -2
  16. package/dist/contracts/Handlers/Attributes.d.ts +5 -13
  17. package/dist/contracts/Handlers/Attributes.js +7 -11
  18. package/dist/contracts/Handlers/JsonContract.d.ts +2 -46
  19. package/dist/contracts/Handlers/JsonContract.js +4 -153
  20. package/dist/contracts/Locations/Rows.d.ts +2 -0
  21. package/dist/contracts/Spots/Contracts.d.ts +6 -1
  22. package/dist/contracts/Spots/ZLinkSpot.d.ts +3 -3
  23. package/dist/nest-integration.d.ts +1 -1
  24. package/dist/nest-integration.js +2 -1
  25. package/dist/runtime/abort.d.ts +5 -0
  26. package/dist/runtime/abort.js +10 -0
  27. package/dist/runtime/actors/actor-authority-publication.js +3 -2
  28. package/dist/runtime/actors/actor-client.d.ts +1 -2
  29. package/dist/runtime/actors/actor-client.js +52 -57
  30. package/dist/runtime/actors/actor-context.d.ts +2 -0
  31. package/dist/runtime/actors/actor-context.js +46 -9
  32. package/dist/runtime/actors/actor-handoff.d.ts +8 -4
  33. package/dist/runtime/actors/actor-handoff.js +219 -92
  34. package/dist/runtime/actors/actor-join-relocation.d.ts +3 -0
  35. package/dist/runtime/actors/actor-local-native-join.js +13 -12
  36. package/dist/runtime/actors/actor-mailbox.js +27 -1
  37. package/dist/runtime/actors/actor-remote-joiner.js +3 -1
  38. package/dist/runtime/actors/actor-remote-wire.js +15 -0
  39. package/dist/runtime/actors/actor-reply.d.ts +4 -0
  40. package/dist/runtime/actors/actor-reply.js +29 -0
  41. package/dist/runtime/actors/actor-routed-join-transport.d.ts +6 -2
  42. package/dist/runtime/actors/actor-routed-json-request.d.ts +2 -0
  43. package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -0
  44. package/dist/runtime/actors/actor-runtime-state.js +2 -20
  45. package/dist/runtime/actors/actor-source-transfer.d.ts +1 -17
  46. package/dist/runtime/actors/index.d.ts +8 -3
  47. package/dist/runtime/actors/index.js +55 -27
  48. package/dist/runtime/actors/session-disconnected-wire.d.ts +8 -0
  49. package/dist/runtime/actors/session-disconnected-wire.js +48 -0
  50. package/dist/runtime/actors/spot-actor-dispatch.js +2 -2
  51. package/dist/runtime/admission.d.ts +9 -1
  52. package/dist/runtime/admission.js +56 -23
  53. package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +6 -8
  54. package/dist/runtime/application-jobs/application-ingress-record-owner.js +39 -22
  55. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +15 -1
  56. package/dist/runtime/application-jobs/application-job-queue-scope.js +61 -20
  57. package/dist/runtime/application-jobs/contracts.d.ts +12 -1
  58. package/dist/runtime/backend/contracts/index.d.ts +37 -12
  59. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +2 -2
  60. package/dist/runtime/backend/mesh-completion-table.d.ts +9 -1
  61. package/dist/runtime/backend/mesh-completion-table.js +154 -49
  62. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +28 -1
  63. package/dist/runtime/backend/mesh-dispatch-pump.js +208 -101
  64. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +2 -2
  65. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -9
  66. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  67. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +5 -2
  68. package/dist/runtime/backend/node/node-raw-binding-port.js +124 -72
  69. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +46 -13
  70. package/dist/runtime/backend/node/node-raw-mesh-backend.js +181 -164
  71. package/dist/runtime/backend/node/node-socket-backend-adapter.d.ts +1 -1
  72. package/dist/runtime/backend/node/node-socket-backend-adapter.js +11 -11
  73. package/dist/runtime/backend/raw-binding-port.d.ts +2 -2
  74. package/dist/runtime/backend/runtime-message.d.ts +1 -0
  75. package/dist/runtime/backend/runtime-message.js +5 -0
  76. package/dist/runtime/backend/runtime-values.d.ts +1 -0
  77. package/dist/runtime/backend/runtime-values.js +2 -1
  78. package/dist/runtime/channels/channel-clients.d.ts +2 -0
  79. package/dist/runtime/channels/channel-clients.js +75 -23
  80. package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +25 -5
  81. package/dist/runtime/channels/channel-dispatch-pipeline.js +111 -56
  82. package/dist/runtime/channels/channel-dispatch-services.d.ts +1 -0
  83. package/dist/runtime/channels/channel-dispatch-services.js +45 -0
  84. package/dist/runtime/channels/channel-dispatchers.d.ts +4 -3
  85. package/dist/runtime/channels/channel-dispatchers.js +62 -54
  86. package/dist/runtime/channels/channel-envelope-inspection.d.ts +1 -2
  87. package/dist/runtime/channels/channel-envelope-inspection.js +1 -16
  88. package/dist/runtime/channels/channel-envelope.d.ts +2 -0
  89. package/dist/runtime/channels/channel-envelope.js +146 -28
  90. package/dist/runtime/channels/channel-outbound-operations.d.ts +2 -2
  91. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +4 -3
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +19 -24
  94. package/dist/runtime/channels/channel-runtime-manager.d.ts +9 -8
  95. package/dist/runtime/channels/channel-runtime-manager.js +16 -16
  96. package/dist/runtime/channels/channel-transports.d.ts +18 -16
  97. package/dist/runtime/channels/channel-transports.js +77 -58
  98. package/dist/runtime/channels/client-server-location-runtime.js +5 -4
  99. package/dist/runtime/channels/dispatch-error-reporter.d.ts +2 -1
  100. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  101. package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
  102. package/dist/runtime/channels/fanout-location-runtime.js +3 -3
  103. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  104. package/dist/runtime/channels/local-spot-route-transport.js +2 -1
  105. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +2 -2
  106. package/dist/runtime/channels/router-socket-spot-route-transport.js +4 -4
  107. package/dist/runtime/channels/source-spot-router.d.ts +2 -2
  108. package/dist/runtime/channels/source-spot-router.js +4 -4
  109. package/dist/runtime/channels/spot-node-route-transport.d.ts +2 -2
  110. package/dist/runtime/channels/spot-node-route-transport.js +4 -4
  111. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +2 -2
  112. package/dist/runtime/channels/spot-route-bridge-transport.js +4 -4
  113. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +5 -4
  114. package/dist/runtime/channels/spot-route-dispatch-strategy.js +18 -18
  115. package/dist/runtime/diagnostics/flow-context.js +19 -7
  116. package/dist/runtime/diagnostics/index.js +4 -9
  117. package/dist/runtime/diagnostics/message-flow.d.ts +8 -0
  118. package/dist/runtime/diagnostics/message-flow.js +35 -5
  119. package/dist/runtime/diagnostics/runtime-metrics.d.ts +2 -2
  120. package/dist/runtime/diagnostics/runtime-metrics.js +10 -8
  121. package/dist/runtime/execution/index.d.ts +4 -2
  122. package/dist/runtime/execution/index.js +33 -10
  123. package/dist/runtime/execution/serial-execution-queue.d.ts +5 -0
  124. package/dist/runtime/execution/serial-execution-queue.js +22 -2
  125. package/dist/runtime/execution/state-lane.d.ts +2 -0
  126. package/dist/runtime/execution/state-lane.js +5 -0
  127. package/dist/runtime/foundation/actor-join-recovery-codec.js +2 -2
  128. package/dist/runtime/foundation/durable-service-request.d.ts +14 -0
  129. package/dist/runtime/foundation/durable-service-request.js +98 -0
  130. package/dist/runtime/foundation/operation-identity.d.ts +1 -0
  131. package/dist/runtime/foundation/operation-identity.js +5 -1
  132. package/dist/runtime/foundation/operation-registry.d.ts +25 -1
  133. package/dist/runtime/foundation/operation-registry.js +86 -18
  134. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +61 -8
  135. package/dist/runtime/foundation/raw-service-mesh-runtime.js +486 -266
  136. package/dist/runtime/foundation/service-liveness-registry.d.ts +12 -1
  137. package/dist/runtime/foundation/service-liveness-registry.js +38 -0
  138. package/dist/runtime/foundation/service-mailbox.d.ts +7 -0
  139. package/dist/runtime/foundation/service-maintenance-runtime.js +1 -6
  140. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +3 -3
  141. package/dist/runtime/foundation/service-relocation-object-owner.js +48 -34
  142. package/dist/runtime/foundation/service-relocation-runtime.d.ts +2 -0
  143. package/dist/runtime/foundation/service-relocation-runtime.js +20 -4
  144. package/dist/runtime/foundation/service-runtime-contracts.d.ts +10 -1
  145. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +2 -1
  146. package/dist/runtime/foundation/service-stateful-registry.d.ts +5 -4
  147. package/dist/runtime/foundation/service-stateful-registry.js +24 -26
  148. package/dist/runtime/foundation/service-stateful-runtime.d.ts +75 -9
  149. package/dist/runtime/foundation/service-stateful-runtime.js +486 -218
  150. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +14 -6
  151. package/dist/runtime/foundation/service-stateful-wire-codec.js +48 -27
  152. package/dist/runtime/foundation/service-topology-registry.d.ts +12 -2
  153. package/dist/runtime/foundation/service-topology-registry.js +61 -27
  154. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +6 -1
  155. package/dist/runtime/foundation/service-wire-binary-primitives.js +27 -11
  156. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  157. package/dist/runtime/foundation/service-wire-constants.generated.js +1 -0
  158. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +13 -3
  159. package/dist/runtime/foundation/service-wire-m6a-codec.js +189 -78
  160. package/dist/runtime/handlers/handler-instance-scope.d.ts +8 -0
  161. package/dist/runtime/handlers/handler-instance-scope.js +54 -11
  162. package/dist/runtime/host/actor-packet-relay.d.ts +6 -4
  163. package/dist/runtime/host/actor-packet-relay.js +59 -72
  164. package/dist/runtime/host/actor-placement-coordinator.js +25 -8
  165. package/dist/runtime/host/actor-runtime-options-factory.js +2 -2
  166. package/dist/runtime/host/actor-transfer-runtime.d.ts +7 -31
  167. package/dist/runtime/host/actor-transfer-runtime.js +85 -331
  168. package/dist/runtime/host/application-job-queue.d.ts +40 -7
  169. package/dist/runtime/host/application-job-queue.js +137 -42
  170. package/dist/runtime/host/entry-actor-runtime.d.ts +1 -0
  171. package/dist/runtime/host/entry-actor-runtime.js +3 -0
  172. package/dist/runtime/host/index.d.ts +12 -2
  173. package/dist/runtime/host/index.js +300 -202
  174. package/dist/runtime/host/location-runtime-owner.js +2 -6
  175. package/dist/runtime/host/mesh-router-resolver.d.ts +4 -0
  176. package/dist/runtime/host/mesh-router-resolver.js +14 -6
  177. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -4
  178. package/dist/runtime/host/remote-bound-session-relay.js +73 -208
  179. package/dist/runtime/host/route-mesh-runtime.d.ts +2 -2
  180. package/dist/runtime/host/route-mesh-runtime.js +6 -4
  181. package/dist/runtime/host/runtime-shutdown.d.ts +1 -0
  182. package/dist/runtime/host/runtime-shutdown.js +3 -2
  183. package/dist/runtime/host/service-relocation-control.d.ts +1 -0
  184. package/dist/runtime/host/service-relocation-control.js +10 -4
  185. package/dist/runtime/host/service-relocation-host-runtime.d.ts +22 -14
  186. package/dist/runtime/host/service-relocation-host-runtime.js +754 -599
  187. package/dist/runtime/host/spot-address-transport.js +3 -2
  188. package/dist/runtime/host/spot-runtime-options-factory.js +16 -7
  189. package/dist/runtime/host/user-spot-creation-coordinator.js +33 -84
  190. package/dist/runtime/locations/actor-location-claims.d.ts +2 -2
  191. package/dist/runtime/locations/actor-location-claims.js +34 -19
  192. package/dist/runtime/locations/auto-connect-loop.d.ts +2 -0
  193. package/dist/runtime/locations/auto-connect-loop.js +22 -14
  194. package/dist/runtime/locations/auto-connect-reconciler.js +0 -6
  195. package/dist/runtime/locations/auto-connect-types.d.ts +0 -1
  196. package/dist/runtime/locations/descriptor-publication.d.ts +4 -0
  197. package/dist/runtime/locations/descriptor-publication.js +11 -0
  198. package/dist/runtime/locations/domain-store-contract.d.ts +1 -0
  199. package/dist/runtime/locations/in-memory-authority-store.d.ts +7 -1
  200. package/dist/runtime/locations/in-memory-authority-store.js +56 -19
  201. package/dist/runtime/locations/in-memory-location-store.js +1 -10
  202. package/dist/runtime/locations/index.d.ts +1 -0
  203. package/dist/runtime/locations/index.js +1 -0
  204. package/dist/runtime/locations/lease-tracker.js +1 -6
  205. package/dist/runtime/locations/lifecycle.d.ts +1 -2
  206. package/dist/runtime/locations/lifecycle.js +2 -5
  207. package/dist/runtime/locations/location-store-repository.d.ts +51 -1
  208. package/dist/runtime/locations/location-store-repository.js +363 -139
  209. package/dist/runtime/locations/relocation-blob.d.ts +18 -1
  210. package/dist/runtime/locations/relocation-blob.js +52 -1
  211. package/dist/runtime/locations/request-source-resolver.d.ts +37 -0
  212. package/dist/runtime/locations/request-source-resolver.js +80 -0
  213. package/dist/runtime/locations/resolvers.js +1 -1
  214. package/dist/runtime/locations/runtime.d.ts +7 -3
  215. package/dist/runtime/locations/runtime.js +61 -53
  216. package/dist/runtime/messaging/framework-json-v1.d.ts +4 -6
  217. package/dist/runtime/messaging/framework-json-v1.js +38 -294
  218. package/dist/runtime/messaging/packet-name.d.ts +1 -1
  219. package/dist/runtime/messaging/packet-name.js +8 -24
  220. package/dist/runtime/messaging/payload-codec.d.ts +7 -1
  221. package/dist/runtime/messaging/payload-codec.js +7 -6
  222. package/dist/runtime/messaging/request-result.d.ts +2 -0
  223. package/dist/runtime/messaging/request-result.js +57 -0
  224. package/dist/runtime/messaging/submission-result.d.ts +1 -0
  225. package/dist/runtime/messaging/submission-result.js +5 -2
  226. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +34 -1
  227. package/dist/runtime/protocol/service_wire_codec.generated.js +229 -0
  228. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +16 -1
  229. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +37 -8
  230. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +7 -2
  231. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +36 -21
  232. package/dist/runtime/spots/index.d.ts +21 -11
  233. package/dist/runtime/spots/index.js +243 -178
  234. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -2
  235. package/dist/runtime/spots/spot-activation-registry.js +21 -11
  236. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  237. package/dist/runtime/spots/spot-activation-state.js +7 -7
  238. package/dist/runtime/spots/spot-activation.d.ts +7 -3
  239. package/dist/runtime/spots/spot-activation.js +140 -52
  240. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -0
  241. package/dist/runtime/spots/spot-actor-admission-coordinator.js +13 -22
  242. package/dist/runtime/spots/spot-actor-membership.d.ts +0 -1
  243. package/dist/runtime/spots/spot-actor-membership.js +0 -8
  244. package/dist/runtime/spots/spot-actor-packet-dispatch.js +33 -8
  245. package/dist/runtime/spots/spot-actor-packet-drain.js +5 -33
  246. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -0
  247. package/dist/runtime/spots/spot-entry-activation.js +20 -11
  248. package/dist/runtime/spots/spot-handler-registry.d.ts +7 -4
  249. package/dist/runtime/spots/spot-handler-registry.js +24 -10
  250. package/dist/runtime/spots/spot-manager-internal-contracts.d.ts +2 -2
  251. package/dist/runtime/spots/spot-manager-public.js +2 -2
  252. package/dist/runtime/spots/spot-node-autoconnect.d.ts +2 -1
  253. package/dist/runtime/spots/spot-node-autoconnect.js +22 -42
  254. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -2
  255. package/dist/runtime/spots/spot-node-runtime-manager.js +115 -50
  256. package/dist/runtime/spots/spot-outbound.d.ts +3 -0
  257. package/dist/runtime/spots/spot-outbound.js +27 -18
  258. package/dist/runtime/spots/spot-remote-codec.js +5 -1
  259. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +1 -0
  260. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +1 -1
  261. package/dist/runtime/spots/spot-runtime-ports.d.ts +1 -1
  262. package/dist/runtime/spots/spot-serial-executor.d.ts +10 -0
  263. package/dist/runtime/spots/spot-serial-executor.js +61 -8
  264. package/dist/runtime/spots/spot-serial-turn-executor.js +19 -2
  265. package/dist/runtime/spots/spot-subscription-dispatch.js +1 -4
  266. package/dist/runtime/spots/spot-timer.d.ts +57 -5
  267. package/dist/runtime/spots/spot-timer.js +288 -103
  268. package/dist/runtime/streams/actor-session-binding-registry.d.ts +42 -11
  269. package/dist/runtime/streams/actor-session-binding-registry.js +165 -48
  270. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +8 -4
  271. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -1
  272. package/dist/runtime/streams/bound-actor-relay-sender.js +15 -8
  273. package/dist/runtime/streams/bound-session-service.d.ts +1 -1
  274. package/dist/runtime/streams/bound-session-service.js +6 -11
  275. package/dist/runtime/streams/index.d.ts +3 -2
  276. package/dist/runtime/streams/index.js +6 -4
  277. package/dist/runtime/streams/managed-stream.js +3 -2
  278. package/dist/runtime/streams/native-fallback-bound-session.js +8 -73
  279. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -8
  280. package/dist/runtime/streams/session-actor-coordinator.js +15 -32
  281. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +3 -10
  282. package/dist/runtime/streams/stream-session-runtime.d.ts +1 -1
  283. package/dist/runtime/streams/stream-session-runtime.js +14 -31
  284. package/dist/runtime/workers/index.js +1 -1
  285. package/package.json +3 -3
  286. package/src/contracts/Actors/ZLinkActorClient.ts +2 -1
  287. package/src/contracts/Channels/Calls.ts +2 -1
  288. package/src/contracts/Common/ZLinkEncodedPayload.ts +24 -4
  289. package/src/contracts/Common/ZLinkMessageMetadata.ts +13 -8
  290. package/src/contracts/Common/encoded-payload-storage.ts +6 -3
  291. package/src/contracts/Configuration/Builders.ts +4 -1
  292. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +7 -2
  293. package/src/contracts/Configuration/RegistrationBuilders.ts +6 -2
  294. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  295. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -1
  296. package/src/contracts/Handlers/Attributes.ts +14 -21
  297. package/src/contracts/Handlers/JsonContract.ts +8 -216
  298. package/src/contracts/Locations/Rows.ts +2 -0
  299. package/src/contracts/Spots/Contracts.ts +10 -1
  300. package/src/contracts/Spots/ZLinkSpot.ts +3 -3
  301. package/src/nest-integration.ts +1 -0
  302. package/src/runtime/abort.ts +12 -0
  303. package/src/runtime/actors/actor-authority-publication.ts +3 -2
  304. package/src/runtime/actors/actor-client.ts +100 -85
  305. package/src/runtime/actors/actor-context.ts +49 -9
  306. package/src/runtime/actors/actor-handoff.ts +291 -110
  307. package/src/runtime/actors/actor-join-relocation.ts +3 -0
  308. package/src/runtime/actors/actor-local-native-join.ts +21 -26
  309. package/src/runtime/actors/actor-mailbox.ts +40 -2
  310. package/src/runtime/actors/actor-remote-joiner.ts +6 -1
  311. package/src/runtime/actors/actor-remote-wire.ts +17 -0
  312. package/src/runtime/actors/actor-reply.ts +42 -0
  313. package/src/runtime/actors/actor-routed-join-transport.ts +14 -4
  314. package/src/runtime/actors/actor-routed-json-request.ts +10 -2
  315. package/src/runtime/actors/actor-runtime-contracts.ts +2 -0
  316. package/src/runtime/actors/actor-runtime-state.ts +2 -20
  317. package/src/runtime/actors/actor-source-transfer.ts +1 -34
  318. package/src/runtime/actors/index.ts +60 -32
  319. package/src/runtime/actors/session-disconnected-wire.ts +66 -0
  320. package/src/runtime/actors/spot-actor-dispatch.ts +4 -2
  321. package/src/runtime/admission.ts +69 -21
  322. package/src/runtime/application-jobs/application-ingress-record-owner.ts +41 -25
  323. package/src/runtime/application-jobs/application-job-queue-scope.ts +83 -22
  324. package/src/runtime/application-jobs/contracts.ts +16 -1
  325. package/src/runtime/backend/contracts/index.ts +92 -18
  326. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +5 -3
  327. package/src/runtime/backend/mesh-completion-table.ts +160 -57
  328. package/src/runtime/backend/mesh-dispatch-pump.ts +237 -108
  329. package/src/runtime/backend/node/node-backend-adapter-support.ts +17 -8
  330. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +12 -2
  331. package/src/runtime/backend/node/node-raw-binding-port.ts +148 -85
  332. package/src/runtime/backend/node/node-raw-mesh-backend.ts +315 -201
  333. package/src/runtime/backend/node/node-socket-backend-adapter.ts +26 -11
  334. package/src/runtime/backend/raw-binding-port.ts +7 -2
  335. package/src/runtime/backend/runtime-message.ts +6 -0
  336. package/src/runtime/backend/runtime-values.ts +1 -0
  337. package/src/runtime/channels/channel-clients.ts +132 -58
  338. package/src/runtime/channels/channel-dispatch-pipeline.ts +198 -114
  339. package/src/runtime/channels/channel-dispatch-services.ts +69 -1
  340. package/src/runtime/channels/channel-dispatchers.ts +136 -90
  341. package/src/runtime/channels/channel-envelope-inspection.ts +2 -16
  342. package/src/runtime/channels/channel-envelope.ts +225 -31
  343. package/src/runtime/channels/channel-outbound-operations.ts +22 -8
  344. package/src/runtime/channels/channel-runtime-lifecycle.ts +13 -13
  345. package/src/runtime/channels/channel-runtime-manager.ts +41 -17
  346. package/src/runtime/channels/channel-transports.ts +171 -112
  347. package/src/runtime/channels/client-server-location-runtime.ts +11 -10
  348. package/src/runtime/channels/dispatch-error-reporter.ts +4 -2
  349. package/src/runtime/channels/fanout-location-runtime.ts +17 -9
  350. package/src/runtime/channels/local-spot-route-transport.ts +3 -1
  351. package/src/runtime/channels/router-socket-spot-route-transport.ts +13 -4
  352. package/src/runtime/channels/source-spot-router.ts +8 -4
  353. package/src/runtime/channels/spot-node-route-transport.ts +8 -4
  354. package/src/runtime/channels/spot-route-bridge-transport.ts +6 -4
  355. package/src/runtime/channels/spot-route-dispatch-strategy.ts +47 -18
  356. package/src/runtime/diagnostics/flow-context.ts +20 -7
  357. package/src/runtime/diagnostics/index.ts +1 -7
  358. package/src/runtime/diagnostics/message-flow.ts +47 -9
  359. package/src/runtime/diagnostics/runtime-metrics.ts +12 -10
  360. package/src/runtime/execution/index.ts +40 -14
  361. package/src/runtime/execution/serial-execution-queue.ts +33 -4
  362. package/src/runtime/execution/state-lane.ts +7 -0
  363. package/src/runtime/foundation/actor-join-recovery-codec.ts +2 -2
  364. package/src/runtime/foundation/durable-service-request.ts +137 -0
  365. package/src/runtime/foundation/operation-identity.ts +5 -1
  366. package/src/runtime/foundation/operation-registry.ts +98 -20
  367. package/src/runtime/foundation/raw-service-mesh-runtime.ts +704 -336
  368. package/src/runtime/foundation/service-liveness-registry.ts +39 -0
  369. package/src/runtime/foundation/service-mailbox.ts +8 -0
  370. package/src/runtime/foundation/service-maintenance-runtime.ts +1 -8
  371. package/src/runtime/foundation/service-relocation-object-owner.ts +55 -36
  372. package/src/runtime/foundation/service-relocation-runtime.ts +25 -4
  373. package/src/runtime/foundation/service-runtime-contracts.ts +19 -2
  374. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -1
  375. package/src/runtime/foundation/service-stateful-registry.ts +38 -35
  376. package/src/runtime/foundation/service-stateful-runtime.ts +732 -275
  377. package/src/runtime/foundation/service-stateful-wire-codec.ts +49 -16
  378. package/src/runtime/foundation/service-topology-registry.ts +91 -36
  379. package/src/runtime/foundation/service-wire-binary-primitives.ts +35 -12
  380. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  381. package/src/runtime/foundation/service-wire-m6a-codec.ts +231 -76
  382. package/src/runtime/handlers/handler-instance-scope.ts +67 -16
  383. package/src/runtime/host/actor-packet-relay.ts +113 -94
  384. package/src/runtime/host/actor-placement-coordinator.ts +31 -8
  385. package/src/runtime/host/actor-runtime-options-factory.ts +13 -2
  386. package/src/runtime/host/actor-transfer-runtime.ts +104 -430
  387. package/src/runtime/host/application-job-queue.ts +160 -41
  388. package/src/runtime/host/entry-actor-runtime.ts +4 -0
  389. package/src/runtime/host/index.ts +473 -271
  390. package/src/runtime/host/location-runtime-owner.ts +2 -6
  391. package/src/runtime/host/mesh-router-resolver.ts +13 -5
  392. package/src/runtime/host/remote-bound-session-relay.ts +88 -271
  393. package/src/runtime/host/route-mesh-runtime.ts +12 -6
  394. package/src/runtime/host/runtime-shutdown.ts +15 -4
  395. package/src/runtime/host/service-relocation-control.ts +11 -5
  396. package/src/runtime/host/service-relocation-host-runtime.ts +1092 -759
  397. package/src/runtime/host/spot-address-transport.ts +4 -2
  398. package/src/runtime/host/spot-runtime-options-factory.ts +20 -7
  399. package/src/runtime/host/user-spot-creation-coordinator.ts +41 -100
  400. package/src/runtime/locations/actor-location-claims.ts +52 -30
  401. package/src/runtime/locations/auto-connect-loop.ts +22 -14
  402. package/src/runtime/locations/auto-connect-reconciler.ts +0 -6
  403. package/src/runtime/locations/auto-connect-types.ts +0 -1
  404. package/src/runtime/locations/descriptor-publication.ts +7 -0
  405. package/src/runtime/locations/domain-store-contract.ts +5 -0
  406. package/src/runtime/locations/in-memory-authority-store.ts +85 -23
  407. package/src/runtime/locations/in-memory-location-store.ts +1 -12
  408. package/src/runtime/locations/index.ts +1 -0
  409. package/src/runtime/locations/lease-tracker.ts +2 -9
  410. package/src/runtime/locations/lifecycle.ts +8 -26
  411. package/src/runtime/locations/location-store-repository.ts +628 -152
  412. package/src/runtime/locations/relocation-blob.ts +75 -1
  413. package/src/runtime/locations/request-source-resolver.ts +138 -0
  414. package/src/runtime/locations/resolvers.ts +2 -2
  415. package/src/runtime/locations/runtime.ts +98 -64
  416. package/src/runtime/messaging/framework-json-v1.ts +5 -325
  417. package/src/runtime/messaging/packet-name.ts +5 -25
  418. package/src/runtime/messaging/payload-codec.ts +8 -11
  419. package/src/runtime/messaging/request-result.ts +62 -0
  420. package/src/runtime/messaging/submission-result.ts +5 -1
  421. package/src/runtime/protocol/service_wire_codec.generated.ts +218 -5
  422. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +16 -13
  423. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +46 -25
  424. package/src/runtime/spots/index.ts +389 -283
  425. package/src/runtime/spots/spot-activation-registry.ts +25 -13
  426. package/src/runtime/spots/spot-activation-state.ts +12 -19
  427. package/src/runtime/spots/spot-activation.ts +198 -96
  428. package/src/runtime/spots/spot-actor-admission-coordinator.ts +25 -55
  429. package/src/runtime/spots/spot-actor-membership.ts +0 -15
  430. package/src/runtime/spots/spot-actor-packet-dispatch.ts +56 -11
  431. package/src/runtime/spots/spot-actor-packet-drain.ts +9 -52
  432. package/src/runtime/spots/spot-entry-activation.ts +33 -21
  433. package/src/runtime/spots/spot-handler-registry.ts +56 -12
  434. package/src/runtime/spots/spot-manager-internal-contracts.ts +2 -2
  435. package/src/runtime/spots/spot-manager-public.ts +2 -2
  436. package/src/runtime/spots/spot-node-autoconnect.ts +28 -47
  437. package/src/runtime/spots/spot-node-runtime-manager.ts +197 -67
  438. package/src/runtime/spots/spot-outbound.ts +39 -19
  439. package/src/runtime/spots/spot-remote-codec.ts +9 -2
  440. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +2 -1
  441. package/src/runtime/spots/spot-runtime-ports.ts +1 -1
  442. package/src/runtime/spots/spot-serial-executor.ts +97 -25
  443. package/src/runtime/spots/spot-serial-turn-executor.ts +22 -3
  444. package/src/runtime/spots/spot-subscription-dispatch.ts +1 -4
  445. package/src/runtime/spots/spot-timer.ts +418 -158
  446. package/src/runtime/streams/actor-session-binding-registry.ts +236 -64
  447. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +16 -8
  448. package/src/runtime/streams/bound-actor-relay-sender.ts +23 -9
  449. package/src/runtime/streams/bound-session-service.ts +7 -10
  450. package/src/runtime/streams/index.ts +12 -6
  451. package/src/runtime/streams/managed-stream.ts +4 -2
  452. package/src/runtime/streams/native-fallback-bound-session.ts +14 -103
  453. package/src/runtime/streams/session-actor-coordinator.ts +39 -88
  454. package/src/runtime/streams/stream-binding-runtime-ports.ts +3 -9
  455. package/src/runtime/streams/stream-session-runtime.ts +13 -34
  456. package/src/runtime/workers/index.ts +1 -1
@@ -1,4 +1,4 @@
1
- import type { ApplicationJobOrigin, ApplicationJobPermitPort, ApplicationJobQueuePort } from '../application-jobs/contracts';
1
+ import type { ApplicationJobOrigin, ApplicationJobPermitPort, ApplicationJobReceiveRotationPort, ApplicationJobQueuePort } from '../application-jobs/contracts';
2
2
  export type ApplicationJobQueueProfileValue = 'compact' | 'low_latency' | 'balanced' | 'throughput';
3
3
  export interface ApplicationJobQueueOptions {
4
4
  readonly profile?: ApplicationJobQueueProfileValue;
@@ -40,12 +40,37 @@ export declare function resolveApplicationJobQueueConfiguration(options?: Applic
40
40
  export declare class ApplicationJobQueuePermit implements ApplicationJobPermitPort {
41
41
  private readonly owner;
42
42
  readonly origin: ApplicationJobOrigin;
43
+ private readonly storage?;
44
+ detachedForHandlerTurn: boolean;
43
45
  private state;
44
- constructor(owner: ApplicationJobQueue, origin: ApplicationJobOrigin);
46
+ constructor(owner: ApplicationJobQueue, origin: ApplicationJobOrigin, storage?: ApplicationJobReceiveRotation | undefined);
47
+ reserveStorage(): boolean;
48
+ reacquire(signal: AbortSignal): Promise<ApplicationJobPermitPort>;
49
+ releaseStorage(): void;
50
+ detachForHandlerTurn(): void;
45
51
  markApplicationQueued(): void;
46
52
  releaseBeforeHandler(): void;
47
53
  releaseAfterInternalProcessing(): void;
48
- private release;
54
+ takeReleaseState(): 'reserved' | 'queued' | undefined;
55
+ }
56
+ /**
57
+ * Connection-owned storage; queue accounting remains with the host queue.
58
+ * The rotation budget is a count reserved from the queue. Only a record that
59
+ * is actually received takes a permit, from the idle storage stack, so a
60
+ * rotation that receives one record touches one permit.
61
+ */
62
+ declare class ApplicationJobReceiveRotation implements ApplicationJobReceiveRotationPort {
63
+ private readonly owner;
64
+ private readonly capacity;
65
+ private readonly origin;
66
+ private readonly idle;
67
+ private granted;
68
+ private consumed;
69
+ constructor(owner: ApplicationJobQueue, capacity: number, origin: ApplicationJobOrigin);
70
+ reserve(): void;
71
+ take(): ApplicationJobQueuePermit | undefined;
72
+ releaseUnused(): void;
73
+ returnIdle(permit: ApplicationJobQueuePermit): void;
49
74
  }
50
75
  /**
51
76
  * Host-instance owner of the ordinary-ingress queue permit lifecycle.
@@ -59,9 +84,10 @@ export declare class ApplicationJobQueue implements ApplicationJobQueuePort {
59
84
  private readonly loggerFailureReporter?;
60
85
  private localWaiters;
61
86
  private localBacklogLogged;
62
- private reservedSupplyPermits;
63
- private queuedApplicationJobs;
64
- private peakPermitsInUse;
87
+ private readonly permitCounts;
88
+ private readonly limitCount;
89
+ private readonly pauseCount;
90
+ private readonly resumeCount;
65
91
  private capacityWaitCount;
66
92
  private capacityWaitDurationSeconds;
67
93
  private metricsEpoch;
@@ -79,6 +105,9 @@ export declare class ApplicationJobQueue implements ApplicationJobQueuePort {
79
105
  private readonly receiveFlowController;
80
106
  constructor(configuration: ApplicationJobQueueConfiguration, nowMs?: () => number, handlerStartGate?: (() => boolean) | undefined, loggerFailureReporter?: ((error: unknown) => void) | undefined);
81
107
  shouldHoldPermitBeforeHandler(): boolean;
108
+ createReceiveRotation(capacity: number, origin: ApplicationJobOrigin): ApplicationJobReceiveRotationPort;
109
+ receiveRotationCapacity(capacity: number): number;
110
+ reserveReceiveRotation(count: number): void;
82
111
  registerReceiveFlowTarget(identity: object, applyState: (state: ApplicationJobQueuePressureState) => void, failureSink?: (error: unknown) => void): boolean;
83
112
  unregisterReceiveFlowTarget(identity: object): void;
84
113
  acquire(signal: AbortSignal | undefined, origin: ApplicationJobOrigin): Promise<ApplicationJobQueuePermit>;
@@ -90,9 +119,12 @@ export declare class ApplicationJobQueue implements ApplicationJobQueuePort {
90
119
  onPressureStateChange(listener: (state: ApplicationJobQueuePressureState, sequence: bigint) => void): () => void;
91
120
  recordFlowStateConfigFailure(): void;
92
121
  markQueued(): void;
93
- release(state: 'reserved' | 'queued'): void;
122
+ releasePermit(permit: ApplicationJobQueuePermit): void;
123
+ releaseUnusedReceiveRotation(count: number): void;
124
+ release(state: 'reserved' | 'queued', count?: number): void;
94
125
  private limit;
95
126
  private permitsInUse;
127
+ private reserveSupply;
96
128
  private reserve;
97
129
  private drainWaiters;
98
130
  private cancel;
@@ -104,3 +136,4 @@ export declare class ApplicationJobQueue implements ApplicationJobQueuePort {
104
136
  private cumulativePauseDurationAt;
105
137
  }
106
138
  export declare function nodeEffectiveProcessorCount(explicitExecutorMaximum?: number, runtimeConstrainedLogicalCount?: number, readSystemText?: (path: string) => string | undefined): bigint;
139
+ export {};
@@ -53,10 +53,35 @@ function resolveApplicationJobQueueConfiguration(options = {}, effectiveProcesso
53
53
  class ApplicationJobQueuePermit {
54
54
  owner;
55
55
  origin;
56
- state = 'reserved';
57
- constructor(owner, origin) {
56
+ storage;
57
+ detachedForHandlerTurn = false;
58
+ state;
59
+ constructor(owner, origin, storage) {
58
60
  this.owner = owner;
59
61
  this.origin = origin;
62
+ this.storage = storage;
63
+ this.state = storage === undefined ? 'reserved' : 'idle';
64
+ }
65
+ reserveStorage() {
66
+ if (this.state !== 'idle')
67
+ return false;
68
+ this.state = 'reserved';
69
+ this.detachedForHandlerTurn = false;
70
+ return true;
71
+ }
72
+ reacquire(signal) {
73
+ return this.owner.acquire(signal, this.origin);
74
+ }
75
+ releaseStorage() {
76
+ if (this.storage === undefined || this.state === 'idle')
77
+ return;
78
+ if (this.state !== 'released')
79
+ throw new Error('Reservation storage still owns queue capacity.');
80
+ this.state = 'idle';
81
+ this.storage.returnIdle(this);
82
+ }
83
+ detachForHandlerTurn() {
84
+ this.detachedForHandlerTurn = true;
60
85
  }
61
86
  markApplicationQueued() {
62
87
  if (this.state !== 'reserved') {
@@ -68,19 +93,64 @@ class ApplicationJobQueuePermit {
68
93
  releaseBeforeHandler() {
69
94
  if (this.owner.shouldHoldPermitBeforeHandler())
70
95
  return;
71
- this.release();
96
+ this.owner.releasePermit(this);
72
97
  }
73
98
  releaseAfterInternalProcessing() {
74
- this.release();
99
+ this.owner.releasePermit(this);
75
100
  }
76
- release() {
77
- if (this.state === 'released')
78
- return;
79
- this.owner.release(this.state);
101
+ takeReleaseState() {
102
+ if (this.state === 'released' || this.state === 'idle')
103
+ return undefined;
104
+ const state = this.state;
80
105
  this.state = 'released';
106
+ return state;
81
107
  }
82
108
  }
83
109
  exports.ApplicationJobQueuePermit = ApplicationJobQueuePermit;
110
+ /**
111
+ * Connection-owned storage; queue accounting remains with the host queue.
112
+ * The rotation budget is a count reserved from the queue. Only a record that
113
+ * is actually received takes a permit, from the idle storage stack, so a
114
+ * rotation that receives one record touches one permit.
115
+ */
116
+ class ApplicationJobReceiveRotation {
117
+ owner;
118
+ capacity;
119
+ origin;
120
+ idle = [];
121
+ granted = 0;
122
+ consumed = 0;
123
+ constructor(owner, capacity, origin) {
124
+ this.owner = owner;
125
+ this.capacity = capacity;
126
+ this.origin = origin;
127
+ }
128
+ reserve() {
129
+ this.releaseUnused();
130
+ const count = this.owner.receiveRotationCapacity(this.capacity);
131
+ if (count === 0)
132
+ return;
133
+ this.granted = count;
134
+ this.owner.reserveReceiveRotation(count);
135
+ }
136
+ take() {
137
+ if (this.consumed === this.granted)
138
+ return undefined;
139
+ this.consumed++;
140
+ const permit = this.idle.pop() ?? new ApplicationJobQueuePermit(this.owner, this.origin, this);
141
+ permit.reserveStorage();
142
+ return permit;
143
+ }
144
+ releaseUnused() {
145
+ // Unconsumed budget never became a permit; it returns as a count.
146
+ this.owner.releaseUnusedReceiveRotation(this.granted - this.consumed);
147
+ this.granted = 0;
148
+ this.consumed = 0;
149
+ }
150
+ returnIdle(permit) {
151
+ this.idle.push(permit);
152
+ }
153
+ }
84
154
  /**
85
155
  * Host-instance owner of the ordinary-ingress queue permit lifecycle.
86
156
  * It reserves capacity before receive/claim and transfers released capacity
@@ -93,9 +163,11 @@ class ApplicationJobQueue {
93
163
  loggerFailureReporter;
94
164
  localWaiters = 0;
95
165
  localBacklogLogged = false;
96
- reservedSupplyPermits = 0n;
97
- queuedApplicationJobs = 0n;
98
- peakPermitsInUse = 0n;
166
+ // The contract bounds capacity by INT32_MAX; public snapshots remain bigint.
167
+ permitCounts = new Uint32Array(3 /* QueuePermitCount.Size */);
168
+ limitCount;
169
+ pauseCount;
170
+ resumeCount;
99
171
  capacityWaitCount = 0n;
100
172
  capacityWaitDurationSeconds = 0;
101
173
  metricsEpoch = 0n;
@@ -116,11 +188,27 @@ class ApplicationJobQueue {
116
188
  this.nowMs = nowMs;
117
189
  this.handlerStartGate = handlerStartGate;
118
190
  this.loggerFailureReporter = loggerFailureReporter;
191
+ this.limitCount = Number(configuration.effectiveMaxQueuedApplicationJobs);
192
+ this.pauseCount = Number(configuration.pausePermitCount);
193
+ this.resumeCount = Number(configuration.resumePermitCount);
119
194
  this.receiveFlowController = new receive_flow_controller_1.ApplicationJobReceiveFlowController(this, (state) => state);
120
195
  }
121
196
  shouldHoldPermitBeforeHandler() {
122
197
  return this.handlerStartGate?.() === true;
123
198
  }
199
+ createReceiveRotation(capacity, origin) {
200
+ if (!Number.isSafeInteger(capacity) || capacity < 1)
201
+ throw new RangeError('Receive capacity must be positive.');
202
+ return new ApplicationJobReceiveRotation(this, capacity, origin);
203
+ }
204
+ receiveRotationCapacity(capacity) {
205
+ if (this.waiters.length !== 0)
206
+ return 0;
207
+ return Math.min(capacity, this.limitCount - this.permitsInUse());
208
+ }
209
+ reserveReceiveRotation(count) {
210
+ this.reserveSupply(count);
211
+ }
124
212
  registerReceiveFlowTarget(identity, applyState, failureSink) {
125
213
  this.unregisterReceiveFlowTarget(identity);
126
214
  const target = {
@@ -173,7 +261,7 @@ class ApplicationJobQueue {
173
261
  reject(abortReason(signal));
174
262
  return undefined;
175
263
  }
176
- if (this.waiters.length === 0 && this.permitsInUse() < this.limit()) {
264
+ if (this.waiters.length === 0 && this.permitsInUse() < this.limitCount) {
177
265
  return this.reserve(origin);
178
266
  }
179
267
  new Promise((resolve, reject) => {
@@ -204,10 +292,10 @@ class ApplicationJobQueue {
204
292
  const now = this.nowMs();
205
293
  return Object.freeze({
206
294
  ...this.configuration,
207
- reservedSupplyPermits: this.reservedSupplyPermits,
208
- queuedApplicationJobs: this.queuedApplicationJobs,
209
- permitsInUse,
210
- peakPermitsInUse: this.peakPermitsInUse,
295
+ reservedSupplyPermits: BigInt(this.permitCounts[0 /* QueuePermitCount.Reserved */]),
296
+ queuedApplicationJobs: BigInt(this.permitCounts[1 /* QueuePermitCount.Queued */]),
297
+ permitsInUse: BigInt(permitsInUse),
298
+ peakPermitsInUse: BigInt(this.permitCounts[2 /* QueuePermitCount.Peak */]),
211
299
  capacityWaiters: BigInt(this.waiters.length),
212
300
  capacityWaitCount: this.capacityWaitCount,
213
301
  capacityWaitDurationSeconds: this.capacityWaitDurationSeconds,
@@ -221,7 +309,7 @@ class ApplicationJobQueue {
221
309
  }
222
310
  resetMetrics() {
223
311
  this.metricsEpoch += 1n;
224
- this.peakPermitsInUse = this.permitsInUse();
312
+ this.permitCounts[2 /* QueuePermitCount.Peak */] = this.permitsInUse();
225
313
  this.capacityWaitCount = 0n;
226
314
  this.capacityWaitDurationSeconds = 0;
227
315
  this.runningTransitionCount = 0n;
@@ -248,25 +336,31 @@ class ApplicationJobQueue {
248
336
  this.flowStateConfigFailureCount += 1n;
249
337
  }
250
338
  markQueued() {
251
- if (this.reservedSupplyPermits === 0n) {
339
+ if (this.permitCounts[0 /* QueuePermitCount.Reserved */] === 0) {
252
340
  throw new Error('Application job queue has no reserved supply permit.');
253
341
  }
254
- this.reservedSupplyPermits -= 1n;
255
- this.queuedApplicationJobs += 1n;
342
+ this.permitCounts[0 /* QueuePermitCount.Reserved */] =
343
+ this.permitCounts[0 /* QueuePermitCount.Reserved */] - 1;
344
+ this.permitCounts[1 /* QueuePermitCount.Queued */] = this.permitCounts[1 /* QueuePermitCount.Queued */] + 1;
345
+ }
346
+ releasePermit(permit) {
347
+ const state = permit.takeReleaseState();
348
+ if (state !== undefined)
349
+ this.release(state);
350
+ }
351
+ releaseUnusedReceiveRotation(count) {
352
+ // Unconsumed budget still belongs to this receive round; no record has acquired it.
353
+ if (count === 0)
354
+ return;
355
+ this.release('reserved', count);
256
356
  }
257
- release(state) {
258
- if (state === 'reserved') {
259
- if (this.reservedSupplyPermits === 0n) {
260
- throw new Error('Application job queue reserved permit accounting underflow.');
261
- }
262
- this.reservedSupplyPermits -= 1n;
263
- }
264
- else {
265
- if (this.queuedApplicationJobs === 0n) {
266
- throw new Error('Application job queue queued permit accounting underflow.');
267
- }
268
- this.queuedApplicationJobs -= 1n;
357
+ release(state, count = 1) {
358
+ const index = state === 'reserved' ? 0 /* QueuePermitCount.Reserved */ : 1 /* QueuePermitCount.Queued */;
359
+ const available = this.permitCounts[index];
360
+ if (available < count) {
361
+ throw new Error(`Application job queue ${state} permit accounting underflow.`);
269
362
  }
363
+ this.permitCounts[index] = available - count;
270
364
  this.drainWaiters();
271
365
  this.evaluatePressure();
272
366
  }
@@ -274,19 +368,21 @@ class ApplicationJobQueue {
274
368
  return this.configuration.effectiveMaxQueuedApplicationJobs;
275
369
  }
276
370
  permitsInUse() {
277
- return this.reservedSupplyPermits + this.queuedApplicationJobs;
371
+ return (this.permitCounts[0 /* QueuePermitCount.Reserved */] + this.permitCounts[1 /* QueuePermitCount.Queued */]);
278
372
  }
279
- reserve(origin, evaluatePressure = true) {
280
- this.reservedSupplyPermits += 1n;
281
- const current = this.permitsInUse();
282
- if (current > this.peakPermitsInUse)
283
- this.peakPermitsInUse = current;
373
+ reserveSupply(count, evaluatePressure = true) {
374
+ this.permitCounts[0 /* QueuePermitCount.Reserved */] =
375
+ this.permitCounts[0 /* QueuePermitCount.Reserved */] + count;
376
+ this.permitCounts[2 /* QueuePermitCount.Peak */] = Math.max(this.permitCounts[2 /* QueuePermitCount.Peak */], this.permitsInUse());
284
377
  if (evaluatePressure)
285
378
  this.evaluatePressure();
379
+ }
380
+ reserve(origin, evaluatePressure = true) {
381
+ this.reserveSupply(1, evaluatePressure);
286
382
  return new ApplicationJobQueuePermit(this, origin);
287
383
  }
288
384
  drainWaiters() {
289
- while (this.waiters.length > 0 && this.permitsInUse() < this.limit()) {
385
+ while (this.waiters.length > 0 && this.permitsInUse() < this.limitCount) {
290
386
  const waiter = this.waiters.shift();
291
387
  if (!waiter.active)
292
388
  continue;
@@ -348,12 +444,11 @@ class ApplicationJobQueue {
348
444
  }
349
445
  }
350
446
  evaluatePressure() {
351
- const permitsInUse = this.permitsInUse();
352
447
  const next = this.pressureStateValue === 'running'
353
- ? permitsInUse >= this.configuration.pausePermitCount
448
+ ? this.permitsInUse() >= this.pauseCount
354
449
  ? 'paused'
355
450
  : 'running'
356
- : permitsInUse <= this.configuration.resumePermitCount
451
+ : this.permitsInUse() <= this.resumeCount
357
452
  ? 'running'
358
453
  : 'paused';
359
454
  if (next === this.pressureStateValue)
@@ -20,6 +20,7 @@ export declare class ZLinkEntryActorRuntimeService implements ZLinkEntryActorRun
20
20
  private readonly binder;
21
21
  constructor(options: ZLinkEntryActorRuntimeOptions);
22
22
  resolveActor(actorId: string): ZLinkActor | undefined;
23
+ releaseMembers(meshName: string): Promise<void>;
23
24
  commitActorTransaction(actor: ZLinkActor, onJoined: () => Promise<void>): Promise<void>;
24
25
  destroyActor(node: ZLinkBackendSpotNode, entryNodeRid: ActorRef['nodeRid'], actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
25
26
  routePacket(actorId: string, parts: readonly Message[], returnResponse?: boolean, remoteBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, fallbackActorRef?: ActorRef): Promise<{
@@ -16,6 +16,9 @@ class ZLinkEntryActorRuntimeService {
16
16
  resolveActor(actorId) {
17
17
  return this.options.actorManager()?.getState(actorId)?.actor;
18
18
  }
19
+ async releaseMembers(meshName) {
20
+ await this.options.actorManager()?.releaseSpotActorMembers(meshName);
21
+ }
19
22
  async commitActorTransaction(actor, onJoined) {
20
23
  const state = this.options.actorManager()?.getState(actor.context.actorId);
21
24
  const entryNode = this.options.spotNodeRuntime()?.primaryMeshNode;
@@ -30,7 +30,7 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
30
30
  private readonly lifecycleSink?;
31
31
  private executionState?;
32
32
  private runtimeState;
33
- private runtimeSequence;
33
+ private runtimeStatus?;
34
34
  private readonly runtimeObservationSource;
35
35
  private runtimeDeadline?;
36
36
  private shutdownDeadline?;
@@ -91,10 +91,12 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
91
91
  readonly routeMeshRuntime: ZLinkRouteMeshRuntime;
92
92
  readonly clientServerRuntime: ZLinkClientServerRuntime;
93
93
  readonly fanoutRuntime: ZLinkFanoutRuntime;
94
+ private readonly relocationStore?;
94
95
  private readonly routeMeshCoordinator;
95
96
  constructor(options: ZLinkFrameworkRuntimeHostOptions, internalOptions?: unknown);
96
97
  get isStarted(): boolean;
97
98
  get status(): ZLinkFrameworkRuntimeStatus;
99
+ private buildRuntimeStatus;
98
100
  private listenerRecords;
99
101
  getListenerStatus(kind: ZLinkListenerKind, name: string): ZLinkListenerStatus;
100
102
  observe(signal?: AbortSignal): AsyncIterable<ZLinkObservedStatus<ZLinkFrameworkRuntimeStatus>>;
@@ -109,6 +111,7 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
109
111
  private recordRelocationResult;
110
112
  private completeTermination;
111
113
  private setRuntimeState;
114
+ private publishCurrentRuntimeStatus;
112
115
  private publishRuntimeStatus;
113
116
  private notifyTopologyHostStateChanged;
114
117
  private stopTopologyObservers;
@@ -133,6 +136,9 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
133
136
  private stopCore;
134
137
  private installOwnerLeaseRecoveryPublication;
135
138
  private resumeOwnerLeaseOwnedWork;
139
+ private enterServing;
140
+ private publishOrStayPreparing;
141
+ private startStatefulAuthority;
136
142
  private createStatefulAuthorityRoutes;
137
143
  private requiresStatefulAuthorityRuntime;
138
144
  private installLocationBackedAuthorities;
@@ -151,7 +157,6 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
151
157
  private publishHostRelocated;
152
158
  private publishHostDraining;
153
159
  private cleanupOwnerForDrain;
154
- private forceStopMesh;
155
160
  private registerInstanceApplicationLifecycle;
156
161
  setActorManager(actorManager: DefaultZLinkActorManager): void;
157
162
  setSpotManager(spotManager: DefaultZLinkSpotManager): void;
@@ -163,7 +168,12 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
163
168
  private actorRuntimeOptionsFactory;
164
169
  private createChannelRuntimeOptions;
165
170
  private createSpotNodeRuntimeOptions;
171
+ private dispatchMeshNodeRecord;
172
+ private dispatchMeshNodePayload;
173
+ private completeFormalSourceLeave;
166
174
  private dispatchMeshRecord;
175
+ private admitMeshDispatch;
176
+ private dispatchMeshActorBinding;
167
177
  private submitLocalMeshRoute;
168
178
  private dispatchMeshSpotRecord;
169
179
  private createDispatchErrorReporter;