@zlink-systems/framework 0.29.1 → 0.30.1

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 (322) 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/ZLinkMessageMetadata.js +11 -5
  6. package/dist/contracts/Configuration/Builders.d.ts +1 -2
  7. package/dist/contracts/Configuration/Configs.d.ts +0 -5
  8. package/dist/contracts/Configuration/RegistrationBuilders.js +6 -4
  9. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -6
  10. package/dist/contracts/Configuration/RegistrationValidators.js +4 -4
  11. package/dist/contracts/Configuration/index.d.ts +1 -1
  12. package/dist/contracts/Handlers/Attributes.d.ts +5 -13
  13. package/dist/contracts/Handlers/Attributes.js +7 -11
  14. package/dist/contracts/Handlers/JsonContract.d.ts +2 -46
  15. package/dist/contracts/Handlers/JsonContract.js +4 -153
  16. package/dist/contracts/Spots/Contracts.d.ts +2 -1
  17. package/dist/internal.d.ts +1 -0
  18. package/dist/internal.js +3 -1
  19. package/dist/nest-integration.d.ts +1 -1
  20. package/dist/nest-integration.js +2 -1
  21. package/dist/runtime/actors/actor-client.d.ts +1 -1
  22. package/dist/runtime/actors/actor-client.js +14 -12
  23. package/dist/runtime/actors/actor-handoff.d.ts +3 -2
  24. package/dist/runtime/actors/actor-handoff.js +15 -7
  25. package/dist/runtime/actors/actor-join-relocation.d.ts +1 -0
  26. package/dist/runtime/actors/actor-local-native-join.js +9 -12
  27. package/dist/runtime/actors/actor-remote-wire.js +15 -0
  28. package/dist/runtime/actors/actor-routed-join-transport.d.ts +6 -2
  29. package/dist/runtime/actors/actor-routed-json-request.d.ts +2 -0
  30. package/dist/runtime/actors/index.d.ts +2 -1
  31. package/dist/runtime/actors/index.js +18 -6
  32. package/dist/runtime/actors/spot-actor-dispatch.js +2 -2
  33. package/dist/runtime/admission.d.ts +1 -1
  34. package/dist/runtime/admission.js +15 -5
  35. package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +9 -9
  36. package/dist/runtime/application-jobs/application-ingress-record-owner.js +45 -23
  37. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +5 -2
  38. package/dist/runtime/application-jobs/application-job-queue-scope.js +41 -21
  39. package/dist/runtime/application-jobs/contracts.d.ts +15 -2
  40. package/dist/runtime/backend/contracts/index.d.ts +27 -27
  41. package/dist/runtime/backend/mesh-completion-table.d.ts +15 -5
  42. package/dist/runtime/backend/mesh-completion-table.js +160 -50
  43. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +3 -0
  44. package/dist/runtime/backend/mesh-dispatch-pump.js +53 -36
  45. package/dist/runtime/backend/node/node-backend-adapter-factory.js +6 -1
  46. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -3
  47. package/dist/runtime/backend/node/node-backend-adapter-support.js +33 -31
  48. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  49. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +5 -2
  50. package/dist/runtime/backend/node/node-mesh-backend-adapter.d.ts +1 -9
  51. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +1 -1
  52. package/dist/runtime/backend/node/node-raw-binding-port.js +50 -25
  53. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +22 -16
  54. package/dist/runtime/backend/node/node-raw-mesh-backend.js +133 -149
  55. package/dist/runtime/backend/node/node-socket-backend-adapter.js +15 -10
  56. package/dist/runtime/backend/raw-binding-port.d.ts +10 -3
  57. package/dist/runtime/backend/runtime-message.d.ts +1 -0
  58. package/dist/runtime/backend/runtime-message.js +5 -0
  59. package/dist/runtime/backend/runtime-values.d.ts +1 -0
  60. package/dist/runtime/backend/runtime-values.js +2 -1
  61. package/dist/runtime/channels/channel-clients.d.ts +1 -0
  62. package/dist/runtime/channels/channel-clients.js +58 -21
  63. package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +3 -2
  64. package/dist/runtime/channels/channel-dispatch-pipeline.js +20 -11
  65. package/dist/runtime/channels/channel-dispatch-services.d.ts +1 -0
  66. package/dist/runtime/channels/channel-dispatch-services.js +45 -0
  67. package/dist/runtime/channels/channel-dispatchers.d.ts +1 -1
  68. package/dist/runtime/channels/channel-dispatchers.js +27 -26
  69. package/dist/runtime/channels/channel-envelope-inspection.d.ts +1 -2
  70. package/dist/runtime/channels/channel-envelope-inspection.js +1 -16
  71. package/dist/runtime/channels/channel-envelope.d.ts +1 -0
  72. package/dist/runtime/channels/channel-envelope.js +83 -8
  73. package/dist/runtime/channels/channel-outbound-operations.d.ts +2 -2
  74. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  75. package/dist/runtime/channels/channel-receive-loops.js +3 -3
  76. package/dist/runtime/channels/channel-runtime-lifecycle.js +2 -1
  77. package/dist/runtime/channels/channel-runtime-manager.d.ts +6 -6
  78. package/dist/runtime/channels/channel-runtime-manager.js +12 -12
  79. package/dist/runtime/channels/channel-socket-registry.d.ts +10 -3
  80. package/dist/runtime/channels/channel-socket-registry.js +59 -82
  81. package/dist/runtime/channels/channel-transports.d.ts +18 -15
  82. package/dist/runtime/channels/channel-transports.js +48 -31
  83. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  84. package/dist/runtime/channels/local-spot-route-transport.js +2 -1
  85. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +2 -2
  86. package/dist/runtime/channels/router-socket-spot-route-transport.js +4 -4
  87. package/dist/runtime/channels/source-spot-router.d.ts +2 -2
  88. package/dist/runtime/channels/source-spot-router.js +4 -4
  89. package/dist/runtime/channels/spot-node-route-transport.d.ts +2 -2
  90. package/dist/runtime/channels/spot-node-route-transport.js +4 -4
  91. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +2 -2
  92. package/dist/runtime/channels/spot-route-bridge-transport.js +4 -4
  93. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +5 -4
  94. package/dist/runtime/channels/spot-route-dispatch-strategy.js +18 -18
  95. package/dist/runtime/diagnostics/message-flow.d.ts +1 -0
  96. package/dist/runtime/diagnostics/message-flow.js +3 -3
  97. package/dist/runtime/execution/serial-execution-queue.d.ts +1 -0
  98. package/dist/runtime/execution/serial-execution-queue.js +1 -0
  99. package/dist/runtime/foundation/actor-join-recovery-codec.js +2 -2
  100. package/dist/runtime/foundation/durable-service-request.d.ts +14 -0
  101. package/dist/runtime/foundation/durable-service-request.js +98 -0
  102. package/dist/runtime/foundation/operation-identity.d.ts +1 -0
  103. package/dist/runtime/foundation/operation-identity.js +5 -1
  104. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +37 -6
  105. package/dist/runtime/foundation/raw-service-mesh-runtime.js +473 -220
  106. package/dist/runtime/foundation/service-liveness-registry.d.ts +20 -8
  107. package/dist/runtime/foundation/service-liveness-registry.js +57 -44
  108. package/dist/runtime/foundation/service-mailbox.d.ts +3 -0
  109. package/dist/runtime/foundation/service-mailbox.js +2 -1
  110. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +1 -0
  111. package/dist/runtime/foundation/service-relocation-object-owner.js +1 -0
  112. package/dist/runtime/foundation/service-relocation-runtime.d.ts +2 -0
  113. package/dist/runtime/foundation/service-relocation-runtime.js +13 -1
  114. package/dist/runtime/foundation/service-runtime-contracts.d.ts +2 -0
  115. package/dist/runtime/foundation/service-stateful-runtime.d.ts +10 -9
  116. package/dist/runtime/foundation/service-stateful-runtime.js +78 -126
  117. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +5 -7
  118. package/dist/runtime/foundation/service-stateful-wire-codec.js +43 -61
  119. package/dist/runtime/foundation/service-topology-registry.d.ts +16 -4
  120. package/dist/runtime/foundation/service-topology-registry.js +69 -30
  121. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +3 -3
  122. package/dist/runtime/foundation/service-wire-m6a-codec.js +36 -38
  123. package/dist/runtime/handlers/handler-instance-scope.d.ts +8 -0
  124. package/dist/runtime/handlers/handler-instance-scope.js +54 -11
  125. package/dist/runtime/host/actor-packet-relay.js +7 -7
  126. package/dist/runtime/host/actor-runtime-options-factory.js +2 -2
  127. package/dist/runtime/host/application-job-queue.d.ts +28 -9
  128. package/dist/runtime/host/application-job-queue.js +214 -50
  129. package/dist/runtime/host/entry-actor-runtime.d.ts +1 -0
  130. package/dist/runtime/host/entry-actor-runtime.js +4 -1
  131. package/dist/runtime/host/index.d.ts +7 -1
  132. package/dist/runtime/host/index.js +154 -126
  133. package/dist/runtime/host/instance-activation-authority.d.ts +2 -1
  134. package/dist/runtime/host/instance-activation-authority.js +89 -25
  135. package/dist/runtime/host/remote-bound-session-relay.js +2 -18
  136. package/dist/runtime/host/route-mesh-runtime.js +1 -1
  137. package/dist/runtime/host/service-relocation-control.d.ts +1 -0
  138. package/dist/runtime/host/service-relocation-control.js +10 -4
  139. package/dist/runtime/host/service-relocation-host-runtime.d.ts +6 -8
  140. package/dist/runtime/host/service-relocation-host-runtime.js +215 -243
  141. package/dist/runtime/host/spot-address-transport.d.ts +1 -0
  142. package/dist/runtime/host/spot-address-transport.js +28 -14
  143. package/dist/runtime/host/spot-runtime-options-factory.js +3 -2
  144. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +1 -0
  145. package/dist/runtime/host/user-spot-creation-coordinator.js +1 -0
  146. package/dist/runtime/locations/actor-location-claims.d.ts +2 -2
  147. package/dist/runtime/locations/actor-location-claims.js +34 -19
  148. package/dist/runtime/locations/domain-store-contract.d.ts +2 -2
  149. package/dist/runtime/locations/in-memory-authority-store.d.ts +4 -2
  150. package/dist/runtime/locations/in-memory-authority-store.js +80 -8
  151. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  152. package/dist/runtime/locations/in-memory-location-store.js +19 -3
  153. package/dist/runtime/locations/internal-location-contracts.d.ts +3 -0
  154. package/dist/runtime/locations/lifecycle.d.ts +1 -2
  155. package/dist/runtime/locations/lifecycle.js +2 -5
  156. package/dist/runtime/locations/location-store-repository.d.ts +3 -2
  157. package/dist/runtime/locations/location-store-repository.js +165 -22
  158. package/dist/runtime/locations/resolvers.d.ts +2 -1
  159. package/dist/runtime/locations/resolvers.js +10 -1
  160. package/dist/runtime/locations/runtime.d.ts +1 -1
  161. package/dist/runtime/locations/runtime.js +24 -23
  162. package/dist/runtime/messaging/framework-json-v1.d.ts +4 -6
  163. package/dist/runtime/messaging/framework-json-v1.js +38 -294
  164. package/dist/runtime/messaging/packet-name.d.ts +1 -1
  165. package/dist/runtime/messaging/packet-name.js +8 -24
  166. package/dist/runtime/messaging/request-result.d.ts +2 -0
  167. package/dist/runtime/messaging/request-result.js +54 -0
  168. package/dist/runtime/messaging/submission-result.d.ts +2 -1
  169. package/dist/runtime/messaging/submission-result.js +7 -4
  170. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +15 -0
  171. package/dist/runtime/protocol/service_wire_codec.generated.js +144 -0
  172. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +9 -0
  173. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +14 -1
  174. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +9 -2
  175. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +33 -19
  176. package/dist/runtime/spots/index.d.ts +7 -3
  177. package/dist/runtime/spots/index.js +23 -16
  178. package/dist/runtime/spots/spot-activation.d.ts +3 -1
  179. package/dist/runtime/spots/spot-activation.js +21 -12
  180. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +2 -1
  181. package/dist/runtime/spots/spot-actor-admission-coordinator.js +11 -10
  182. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +4 -1
  183. package/dist/runtime/spots/spot-actor-packet-dispatch.js +7 -5
  184. package/dist/runtime/spots/spot-actor-packet-drain.js +2 -0
  185. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -0
  186. package/dist/runtime/spots/spot-entry-activation.js +9 -3
  187. package/dist/runtime/spots/spot-handler-registry.d.ts +3 -1
  188. package/dist/runtime/spots/spot-handler-registry.js +18 -8
  189. package/dist/runtime/spots/spot-node-autoconnect.js +4 -3
  190. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +2 -1
  191. package/dist/runtime/spots/spot-node-runtime-manager.js +4 -11
  192. package/dist/runtime/spots/spot-outbound.d.ts +3 -0
  193. package/dist/runtime/spots/spot-outbound.js +24 -15
  194. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +1 -0
  195. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +1 -1
  196. package/dist/runtime/spots/spot-routing-internal.d.ts +6 -0
  197. package/dist/runtime/spots/spot-runtime-ports.d.ts +3 -1
  198. package/dist/runtime/spots/spot-subscription-dispatch.js +0 -3
  199. package/dist/runtime/spots/spot-timer.js +1 -0
  200. package/dist/runtime/streams/stream-session-runtime.d.ts +1 -1
  201. package/dist/runtime/streams/stream-session-runtime.js +14 -28
  202. package/package.json +3 -3
  203. package/src/contracts/Actors/ZLinkActorClient.ts +2 -1
  204. package/src/contracts/Channels/Calls.ts +2 -1
  205. package/src/contracts/Common/ZLinkMessageMetadata.ts +13 -8
  206. package/src/contracts/Configuration/Builders.ts +1 -2
  207. package/src/contracts/Configuration/Configs.ts +0 -6
  208. package/src/contracts/Configuration/RegistrationBuilders.ts +8 -12
  209. package/src/contracts/Configuration/RegistrationTypes.ts +1 -6
  210. package/src/contracts/Configuration/RegistrationValidators.ts +9 -10
  211. package/src/contracts/Configuration/index.ts +1 -6
  212. package/src/contracts/Handlers/Attributes.ts +14 -21
  213. package/src/contracts/Handlers/JsonContract.ts +8 -216
  214. package/src/contracts/Spots/Contracts.ts +2 -1
  215. package/src/internal.ts +1 -0
  216. package/src/nest-integration.ts +1 -0
  217. package/src/runtime/actors/actor-client.ts +40 -16
  218. package/src/runtime/actors/actor-handoff.ts +22 -8
  219. package/src/runtime/actors/actor-join-relocation.ts +1 -0
  220. package/src/runtime/actors/actor-local-native-join.ts +17 -26
  221. package/src/runtime/actors/actor-remote-wire.ts +17 -0
  222. package/src/runtime/actors/actor-routed-join-transport.ts +14 -4
  223. package/src/runtime/actors/actor-routed-json-request.ts +10 -2
  224. package/src/runtime/actors/index.ts +19 -5
  225. package/src/runtime/actors/spot-actor-dispatch.ts +4 -2
  226. package/src/runtime/admission.ts +18 -5
  227. package/src/runtime/application-jobs/application-ingress-record-owner.ts +53 -27
  228. package/src/runtime/application-jobs/application-job-queue-scope.ts +56 -22
  229. package/src/runtime/application-jobs/contracts.ts +28 -2
  230. package/src/runtime/backend/contracts/index.ts +63 -32
  231. package/src/runtime/backend/mesh-completion-table.ts +175 -59
  232. package/src/runtime/backend/mesh-dispatch-pump.ts +59 -32
  233. package/src/runtime/backend/node/node-backend-adapter-factory.ts +12 -5
  234. package/src/runtime/backend/node/node-backend-adapter-support.ts +42 -31
  235. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +12 -2
  236. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +3 -10
  237. package/src/runtime/backend/node/node-raw-binding-port.ts +73 -37
  238. package/src/runtime/backend/node/node-raw-mesh-backend.ts +209 -176
  239. package/src/runtime/backend/node/node-socket-backend-adapter.ts +32 -13
  240. package/src/runtime/backend/raw-binding-port.ts +18 -3
  241. package/src/runtime/backend/runtime-message.ts +6 -0
  242. package/src/runtime/backend/runtime-values.ts +1 -0
  243. package/src/runtime/channels/channel-clients.ts +90 -41
  244. package/src/runtime/channels/channel-dispatch-pipeline.ts +69 -34
  245. package/src/runtime/channels/channel-dispatch-services.ts +69 -1
  246. package/src/runtime/channels/channel-dispatchers.ts +29 -27
  247. package/src/runtime/channels/channel-envelope-inspection.ts +2 -16
  248. package/src/runtime/channels/channel-envelope.ts +133 -8
  249. package/src/runtime/channels/channel-outbound-operations.ts +22 -8
  250. package/src/runtime/channels/channel-receive-loops.ts +3 -3
  251. package/src/runtime/channels/channel-runtime-lifecycle.ts +7 -1
  252. package/src/runtime/channels/channel-runtime-manager.ts +29 -12
  253. package/src/runtime/channels/channel-socket-registry.ts +84 -130
  254. package/src/runtime/channels/channel-transports.ts +128 -60
  255. package/src/runtime/channels/local-spot-route-transport.ts +3 -1
  256. package/src/runtime/channels/router-socket-spot-route-transport.ts +13 -4
  257. package/src/runtime/channels/source-spot-router.ts +8 -4
  258. package/src/runtime/channels/spot-node-route-transport.ts +8 -4
  259. package/src/runtime/channels/spot-route-bridge-transport.ts +6 -4
  260. package/src/runtime/channels/spot-route-dispatch-strategy.ts +47 -18
  261. package/src/runtime/diagnostics/message-flow.ts +1 -1
  262. package/src/runtime/execution/serial-execution-queue.ts +2 -0
  263. package/src/runtime/foundation/actor-join-recovery-codec.ts +2 -2
  264. package/src/runtime/foundation/durable-service-request.ts +137 -0
  265. package/src/runtime/foundation/operation-identity.ts +5 -1
  266. package/src/runtime/foundation/raw-service-mesh-runtime.ts +642 -253
  267. package/src/runtime/foundation/service-liveness-registry.ts +68 -59
  268. package/src/runtime/foundation/service-mailbox.ts +7 -1
  269. package/src/runtime/foundation/service-relocation-object-owner.ts +2 -0
  270. package/src/runtime/foundation/service-relocation-runtime.ts +18 -1
  271. package/src/runtime/foundation/service-runtime-contracts.ts +7 -1
  272. package/src/runtime/foundation/service-stateful-runtime.ts +128 -160
  273. package/src/runtime/foundation/service-stateful-wire-codec.ts +55 -84
  274. package/src/runtime/foundation/service-topology-registry.ts +103 -42
  275. package/src/runtime/foundation/service-wire-m6a-codec.ts +57 -38
  276. package/src/runtime/handlers/handler-instance-scope.ts +67 -16
  277. package/src/runtime/host/actor-packet-relay.ts +7 -0
  278. package/src/runtime/host/actor-runtime-options-factory.ts +14 -2
  279. package/src/runtime/host/application-job-queue.ts +249 -48
  280. package/src/runtime/host/entry-actor-runtime.ts +5 -0
  281. package/src/runtime/host/index.ts +224 -160
  282. package/src/runtime/host/instance-activation-authority.ts +132 -27
  283. package/src/runtime/host/remote-bound-session-relay.ts +2 -23
  284. package/src/runtime/host/route-mesh-runtime.ts +1 -1
  285. package/src/runtime/host/service-relocation-control.ts +11 -5
  286. package/src/runtime/host/service-relocation-host-runtime.ts +317 -291
  287. package/src/runtime/host/spot-address-transport.ts +49 -24
  288. package/src/runtime/host/spot-runtime-options-factory.ts +4 -0
  289. package/src/runtime/host/user-spot-creation-coordinator.ts +8 -0
  290. package/src/runtime/locations/actor-location-claims.ts +52 -30
  291. package/src/runtime/locations/domain-store-contract.ts +6 -2
  292. package/src/runtime/locations/in-memory-authority-store.ts +113 -9
  293. package/src/runtime/locations/in-memory-location-store.ts +25 -3
  294. package/src/runtime/locations/internal-location-contracts.ts +4 -0
  295. package/src/runtime/locations/lifecycle.ts +8 -26
  296. package/src/runtime/locations/location-store-repository.ts +220 -15
  297. package/src/runtime/locations/resolvers.ts +25 -2
  298. package/src/runtime/locations/runtime.ts +28 -24
  299. package/src/runtime/messaging/framework-json-v1.ts +5 -325
  300. package/src/runtime/messaging/packet-name.ts +5 -25
  301. package/src/runtime/messaging/request-result.ts +58 -0
  302. package/src/runtime/messaging/submission-result.ts +7 -3
  303. package/src/runtime/protocol/service_wire_codec.generated.ts +131 -1
  304. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
  305. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +45 -23
  306. package/src/runtime/spots/index.ts +30 -2
  307. package/src/runtime/spots/spot-activation.ts +33 -10
  308. package/src/runtime/spots/spot-actor-admission-coordinator.ts +13 -0
  309. package/src/runtime/spots/spot-actor-packet-dispatch.ts +10 -0
  310. package/src/runtime/spots/spot-actor-packet-drain.ts +2 -0
  311. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +1 -0
  312. package/src/runtime/spots/spot-entry-activation.ts +12 -2
  313. package/src/runtime/spots/spot-handler-registry.ts +41 -8
  314. package/src/runtime/spots/spot-node-autoconnect.ts +6 -2
  315. package/src/runtime/spots/spot-node-runtime-manager.ts +7 -12
  316. package/src/runtime/spots/spot-outbound.ts +36 -16
  317. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +2 -1
  318. package/src/runtime/spots/spot-routing-internal.ts +14 -0
  319. package/src/runtime/spots/spot-runtime-ports.ts +3 -0
  320. package/src/runtime/spots/spot-subscription-dispatch.ts +0 -3
  321. package/src/runtime/spots/spot-timer.ts +5 -1
  322. package/src/runtime/streams/stream-session-runtime.ts +13 -30
@@ -1,6 +1,6 @@
1
1
  export interface ServiceProbe {
2
2
  readonly nodeRoutingId: string;
3
- readonly connectionId: string;
3
+ readonly connectionId: string | bigint;
4
4
  readonly probeId: bigint;
5
5
  }
6
6
  export interface ServiceLivenessTick {
@@ -9,6 +9,19 @@ export interface ServiceLivenessTick {
9
9
  }
10
10
  export declare const DEFAULT_SERVICE_PROBE_INTERVAL_MS = 5000;
11
11
  export declare const DEFAULT_SERVICE_PEER_TIMEOUT_MS = 15000;
12
+ export declare class ServiceLivenessConnection {
13
+ readonly connectionId: string | bigint;
14
+ private readonly probeIntervalMs;
15
+ private readonly peerTimeoutMs;
16
+ deadlineMs: number;
17
+ nextProbeMs: number;
18
+ outstandingProbe?: bigint;
19
+ constructor(connectionId: string | bigint, nowMs: number, probeIntervalMs?: number, peerTimeoutMs?: number);
20
+ readonly recordReceived: (nowMs?: number) => void;
21
+ isExpired(nowMs: number): boolean;
22
+ tryGetProbe(nowMs: number, allocateProbeId: () => bigint): bigint | undefined;
23
+ acknowledge(probeId: bigint, nowMs: number): boolean;
24
+ }
12
25
  /** Uses monotonic milliseconds and never treats application traffic as a probe ACK. */
13
26
  export declare class ServiceLivenessRegistry {
14
27
  private readonly probeIntervalMs;
@@ -16,13 +29,12 @@ export declare class ServiceLivenessRegistry {
16
29
  private readonly peers;
17
30
  private nextProbeId;
18
31
  constructor(probeIntervalMs?: number, peerTimeoutMs?: number);
19
- admit(nodeRoutingId: string, connectionId: string, nowMs: number): void;
20
- requestProbe(nodeRoutingId: string, connectionId: string, nowMs: number): boolean;
21
- disconnect(nodeRoutingId: string, connectionId: string): boolean;
22
- acknowledge(nodeRoutingId: string, connectionId: string, probeId: bigint, nowMs: number): boolean;
23
- acknowledgeProbe(nodeRoutingId: string, connectionId: string, probeId: bigint): ServiceProbe | undefined;
32
+ admit(nodeRoutingId: string, connectionId: string | bigint, nowMs: number): ServiceLivenessConnection;
33
+ recordReceived(connection: ServiceLivenessConnection, nowMs: number): void;
34
+ disconnect(nodeRoutingId: string, connectionId: string | bigint): boolean;
35
+ acknowledge(nodeRoutingId: string, connectionId: string | bigint, probeId: bigint, nowMs: number): boolean;
36
+ acknowledgeProbe(nodeRoutingId: string, connectionId: string | bigint, probeId: bigint): ServiceProbe | undefined;
24
37
  tick(nowMs: number): ServiceLivenessTick;
25
38
  get size(): number;
26
- isReady(nodeRoutingId: string, connectionId: string): boolean;
27
- private allocateProbeId;
39
+ private readonly allocateProbeId;
28
40
  }
@@ -1,9 +1,47 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ServiceLivenessRegistry = exports.DEFAULT_SERVICE_PEER_TIMEOUT_MS = exports.DEFAULT_SERVICE_PROBE_INTERVAL_MS = void 0;
3
+ exports.ServiceLivenessRegistry = exports.ServiceLivenessConnection = exports.DEFAULT_SERVICE_PEER_TIMEOUT_MS = exports.DEFAULT_SERVICE_PROBE_INTERVAL_MS = void 0;
4
4
  const stream_wire_1 = require("@zlink-systems/stream-wire");
5
5
  exports.DEFAULT_SERVICE_PROBE_INTERVAL_MS = 5_000;
6
6
  exports.DEFAULT_SERVICE_PEER_TIMEOUT_MS = 15_000;
7
+ class ServiceLivenessConnection {
8
+ connectionId;
9
+ probeIntervalMs;
10
+ peerTimeoutMs;
11
+ deadlineMs;
12
+ nextProbeMs;
13
+ outstandingProbe;
14
+ constructor(connectionId, nowMs, probeIntervalMs = exports.DEFAULT_SERVICE_PROBE_INTERVAL_MS, peerTimeoutMs = exports.DEFAULT_SERVICE_PEER_TIMEOUT_MS) {
15
+ this.connectionId = connectionId;
16
+ this.probeIntervalMs = probeIntervalMs;
17
+ this.peerTimeoutMs = peerTimeoutMs;
18
+ this.deadlineMs = nowMs + peerTimeoutMs;
19
+ this.nextProbeMs = nowMs;
20
+ }
21
+ recordReceived = (nowMs = performance.now()) => {
22
+ this.deadlineMs = Math.max(this.deadlineMs, nowMs + this.peerTimeoutMs);
23
+ };
24
+ isExpired(nowMs) {
25
+ return nowMs >= this.deadlineMs;
26
+ }
27
+ tryGetProbe(nowMs, allocateProbeId) {
28
+ if (nowMs < this.nextProbeMs)
29
+ return undefined;
30
+ this.outstandingProbe ??= allocateProbeId();
31
+ do {
32
+ this.nextProbeMs += this.probeIntervalMs;
33
+ } while (this.nextProbeMs <= nowMs);
34
+ return this.outstandingProbe;
35
+ }
36
+ acknowledge(probeId, nowMs) {
37
+ this.recordReceived(nowMs);
38
+ if (this.outstandingProbe !== probeId)
39
+ return false;
40
+ this.outstandingProbe = undefined;
41
+ return true;
42
+ }
43
+ }
44
+ exports.ServiceLivenessConnection = ServiceLivenessConnection;
7
45
  /** Uses monotonic milliseconds and never treats application traffic as a probe ACK. */
8
46
  class ServiceLivenessRegistry {
9
47
  probeIntervalMs;
@@ -22,26 +60,19 @@ class ServiceLivenessRegistry {
22
60
  }
23
61
  admit(nodeRoutingId, connectionId, nowMs) {
24
62
  requireIdentity(nodeRoutingId, 'nodeRoutingId');
25
- requireIdentity(connectionId, 'connectionId');
63
+ if (typeof connectionId === 'string')
64
+ requireIdentity(connectionId, 'connectionId');
65
+ else if (connectionId === 0n)
66
+ throw new TypeError('connectionId must be nonzero.');
26
67
  const current = this.peers.get(nodeRoutingId);
27
68
  if (current?.connectionId === connectionId)
28
- return;
29
- this.peers.set(nodeRoutingId, {
30
- connectionId,
31
- deadlineMs: nowMs + this.peerTimeoutMs,
32
- nextProbeMs: nowMs + this.probeIntervalMs,
33
- ready: false
34
- });
69
+ return current;
70
+ const admitted = new ServiceLivenessConnection(connectionId, nowMs, this.probeIntervalMs, this.peerTimeoutMs);
71
+ this.peers.set(nodeRoutingId, admitted);
72
+ return admitted;
35
73
  }
36
- requestProbe(nodeRoutingId, connectionId, nowMs) {
37
- const current = this.peers.get(nodeRoutingId);
38
- if (current === undefined ||
39
- current.connectionId !== connectionId ||
40
- current.ready ||
41
- current.outstandingProbe !== undefined)
42
- return false;
43
- current.nextProbeMs = Math.min(current.nextProbeMs, nowMs);
44
- return true;
74
+ recordReceived(connection, nowMs) {
75
+ connection.recordReceived(nowMs);
45
76
  }
46
77
  disconnect(nodeRoutingId, connectionId) {
47
78
  const current = this.peers.get(nodeRoutingId);
@@ -52,15 +83,9 @@ class ServiceLivenessRegistry {
52
83
  }
53
84
  acknowledge(nodeRoutingId, connectionId, probeId, nowMs) {
54
85
  const current = this.peers.get(nodeRoutingId);
55
- if (current === undefined ||
56
- current.connectionId !== connectionId ||
57
- current.outstandingProbe !== probeId) {
86
+ if (current === undefined || current.connectionId !== connectionId)
58
87
  return false;
59
- }
60
- current.outstandingProbe = undefined;
61
- current.deadlineMs = nowMs + this.peerTimeoutMs;
62
- current.ready = true;
63
- return true;
88
+ return current.acknowledge(probeId, nowMs);
64
89
  }
65
90
  acknowledgeProbe(nodeRoutingId, connectionId, probeId) {
66
91
  const current = this.peers.get(nodeRoutingId);
@@ -73,22 +98,14 @@ class ServiceLivenessRegistry {
73
98
  const probes = [];
74
99
  const timedOutNodes = [];
75
100
  for (const [nodeRoutingId, peer] of this.peers) {
76
- if (peer.deadlineMs <= nowMs) {
101
+ if (peer.isExpired(nowMs)) {
77
102
  timedOutNodes.push(nodeRoutingId);
78
103
  this.peers.delete(nodeRoutingId);
79
104
  continue;
80
105
  }
81
- if (peer.nextProbeMs > nowMs)
82
- continue;
83
- peer.outstandingProbe ??= this.allocateProbeId();
84
- probes.push({
85
- nodeRoutingId,
86
- connectionId: peer.connectionId,
87
- probeId: peer.outstandingProbe
88
- });
89
- do {
90
- peer.nextProbeMs += this.probeIntervalMs;
91
- } while (peer.nextProbeMs <= nowMs);
106
+ const probeId = peer.tryGetProbe(nowMs, this.allocateProbeId);
107
+ if (probeId !== undefined)
108
+ probes.push({ nodeRoutingId, connectionId: peer.connectionId, probeId });
92
109
  }
93
110
  timedOutNodes.sort();
94
111
  return { probes, timedOutNodes };
@@ -96,16 +113,12 @@ class ServiceLivenessRegistry {
96
113
  get size() {
97
114
  return this.peers.size;
98
115
  }
99
- isReady(nodeRoutingId, connectionId) {
100
- const current = this.peers.get(nodeRoutingId);
101
- return current?.connectionId === connectionId && current.ready;
102
- }
103
- allocateProbeId() {
116
+ allocateProbeId = () => {
104
117
  const result = this.nextProbeId++;
105
118
  if (this.nextProbeId > stream_wire_1.UINT64_MAX)
106
119
  this.nextProbeId = 1n;
107
120
  return result;
108
- }
121
+ };
109
122
  }
110
123
  exports.ServiceLivenessRegistry = ServiceLivenessRegistry;
111
124
  function requireIdentity(value, field) {
@@ -1,4 +1,5 @@
1
1
  import type { ApplicationJobRecordLease } from '../application-jobs/application-ingress-record-owner';
2
+ import type { ReceiveRecord } from './service-runtime-contracts';
2
3
  export type ServiceMailboxDomain = 'application' | 'infrastructure';
3
4
  export interface ServiceMailboxRecord {
4
5
  readonly owner: string;
@@ -17,6 +18,8 @@ export interface ServiceMailboxRecord {
17
18
  readonly stateful?: unknown;
18
19
  /** Host queue permit plus its ordinary Framework-owned ingress record. */
19
20
  readonly applicationJob?: ApplicationJobRecordLease;
21
+ /** Unregistered raw-pull terminal, retained by the existing mailbox owner. */
22
+ readonly completion?: ReceiveRecord;
20
23
  }
21
24
  export interface ServiceMailboxClaim {
22
25
  readonly owner: string;
@@ -24,7 +24,8 @@ class ServiceMailbox {
24
24
  record.parts = [];
25
25
  }
26
26
  tryEnqueue(record) {
27
- if (record.owner.length === 0 || record.parts.length === 0) {
27
+ if (record.owner.length === 0 ||
28
+ (record.parts.length === 0 && record.completion === undefined)) {
28
29
  throw new TypeError('Mailbox records require an owner and retained payload.');
29
30
  }
30
31
  const target = this.domain(record.domain);
@@ -3,6 +3,7 @@ import type { ServiceRelocationRestoreOwner, ServiceRelocationStaging } from './
3
3
  import type { ServiceRelocationEnvelope, ServiceRelocationMembership, ServiceRelocationParticipant, ServiceRelocationQueuedMessage, ServiceRelocationTimer } from './service-relocation-runtime';
4
4
  export interface ServiceRelocationSealedWork {
5
5
  readonly boundSessionState: Uint8Array;
6
+ readonly sessionBinding?: ServiceRelocationParticipant['sessionBinding'];
6
7
  readonly queuedMessages: readonly ServiceRelocationQueuedMessage[];
7
8
  readonly timers: readonly ServiceRelocationTimer[];
8
9
  }
@@ -102,6 +102,7 @@ class ServiceRelocationObjectCaptureOwner {
102
102
  authorityOwnerGeneration: unit.authorityOwnerGeneration,
103
103
  applicationState: Buffer.from(await unit.captureApplicationState(signal)),
104
104
  boundSessionState: Buffer.from(work.boundSessionState),
105
+ ...(work.sessionBinding === undefined ? {} : { sessionBinding: work.sessionBinding }),
105
106
  queuedMessages: work.queuedMessages.map((message) => ({
106
107
  sequence: message.sequence,
107
108
  payload: Buffer.from(message.payload)
@@ -1,4 +1,5 @@
1
1
  import type { ZLinkPlacementObjectKind } from '../locations/internal-location-contracts';
2
+ import { type RelocationEnvelopeV1 as GeneratedRelocationEnvelopeV1 } from '../protocol/service_wire_pilot_codec.generated';
2
3
  export interface ServiceRelocationParticipant {
3
4
  /** Wire-local participant ordinal; identity is projected from Location Store. */
4
5
  readonly participantId?: bigint;
@@ -17,6 +18,7 @@ export interface ServiceRelocationParticipant {
17
18
  readonly applicationStatePresent?: boolean;
18
19
  readonly applicationState: Uint8Array;
19
20
  readonly boundSessionState: Uint8Array;
21
+ readonly sessionBinding?: GeneratedRelocationEnvelopeV1['sessionBindings'][number];
20
22
  readonly queuedMessages: readonly ServiceRelocationQueuedMessage[];
21
23
  readonly timers: readonly ServiceRelocationTimer[];
22
24
  }
@@ -480,6 +480,9 @@ function encodeServiceRelocationEnvelope(envelope, applicationVersion) {
480
480
  lastCompletedScheduledIndex: nonNegativeBigInt(timer.lastScheduledIndex, 'timer scheduled index'),
481
481
  nextScheduledAtUnixMilliseconds: nonNegativeUnixMilliseconds(timer.dueAtUnixMs, 'timer due time')
482
482
  })),
483
+ sessionBindings: participants.flatMap((participant, index) => participant.sessionBinding === undefined
484
+ ? []
485
+ : [{ ...participant.sessionBinding, participantId: BigInt(index + 1) }]),
483
486
  pendingTimerTicks: pending.map((value) => ({
484
487
  participantId: value.participantId,
485
488
  order: value.order,
@@ -510,11 +513,20 @@ function decodeServiceRelocationEnvelope(payload, aggregateGeneration) {
510
513
  if (aggregateId === undefined)
511
514
  throw new TypeError('Invalid relocation identity.');
512
515
  positiveBigInt(aggregateGeneration, 'aggregate generation');
516
+ const bindings = new Map(generated.sessionBindings.map((binding) => [binding.participantId, binding]));
517
+ for (const id of bindings.keys()) {
518
+ if (id > BigInt(generated.applicationStates.length))
519
+ throw new TypeError('Session binding participant is outside its inventory.');
520
+ }
513
521
  const participants = generated.applicationStates.map((state, index) => {
514
522
  if (state.participantId !== BigInt(index + 1)) {
515
523
  throw new TypeError('Application state participant order is invalid.');
516
524
  }
517
- return wireParticipant(state.participantId, state.hasState, Buffer.from(state.payload));
525
+ const binding = bindings.get(state.participantId);
526
+ return {
527
+ ...wireParticipant(state.participantId, state.hasState, Buffer.from(state.payload)),
528
+ ...(binding === undefined ? {} : { sessionBinding: binding })
529
+ };
518
530
  });
519
531
  const byId = new Map(participants.map((value) => [value.participantId, value]));
520
532
  for (const work of generated.savedWork) {
@@ -343,6 +343,7 @@ export interface ServiceSpot {
343
343
  flags?: number;
344
344
  timeoutMs?: number;
345
345
  applicationMetadata?: Buffer;
346
+ onAdmitted?: () => void;
346
347
  }): MeshOperationId;
347
348
  sendToSpot(targetNodeRid: unknown, targetSpotId: unknown, targetSpotGeneration: bigint, parts: MessageLike | readonly MessageLike[], options?: {
348
349
  flags?: number;
@@ -354,6 +355,7 @@ export interface ServiceSpot {
354
355
  timeoutMs?: number;
355
356
  applicationMetadata?: Buffer;
356
357
  routeFence?: ServiceDirectSpotRouteFence;
358
+ onAdmitted?: () => void;
357
359
  entrySpot?: boolean;
358
360
  }): MeshOperationId;
359
361
  publish(channelName: string, topic: string, parts: MessageLike | readonly MessageLike[], options?: {
@@ -5,7 +5,7 @@ import type { ServiceInstanceActivationRecoveryEnvelope } from './service-instan
5
5
  import type { ServiceMailboxRecord } from './service-mailbox';
6
6
  import { type ReceiveKindData, type ServiceStreamSessionBinding, type StreamSessionActorAuthorityFence } from './service-runtime-contracts';
7
7
  import { ServiceStatefulRegistry, type ServiceActorRef, type ServiceActorState, type ServiceSessionBinding, type ServiceSpotRef, type ServiceSpotState } from './service-stateful-registry';
8
- import { type ServiceActorCreateRecord, type ServiceActorRouteFence, type ServiceDirectSpotRouteFence, type ServiceInstanceActivationTarget, type ServiceInstanceRouteFence, type ServiceRetiredBoundSessionRouteFence, type ServiceStatefulReplyTail, type ServiceStatefulWireRecord, type ServiceUserSpotCloseRecord, type ServiceUserSpotCreateRecord } from './service-stateful-wire-codec';
8
+ import { type ServiceActorCreateRecord, type ServiceActorRouteFence, type ServiceDirectSpotRouteFence, type ServiceInstanceActivationTarget, type ServiceInstanceColdActivationTarget, type ServiceInstanceRouteFence, type ServiceRetiredBoundSessionRouteFence, type ServiceStatefulReplyTail, type ServiceStatefulWireRecord, type ServiceUserSpotCloseRecord, type ServiceUserSpotCreateRecord } from './service-stateful-wire-codec';
9
9
  import { type ServiceApplicationPayload } from './service-wire-m6a-codec';
10
10
  export interface ServiceSpotMessageFollowSeal {
11
11
  readonly key: string;
@@ -148,7 +148,7 @@ export interface ServiceInstanceActivationAuthority {
148
148
  * operation completes; the binding callback itself never blocks.
149
149
  */
150
150
  export interface ServiceAsyncInstanceActivationAuthority {
151
- read(target: ServiceInstanceActivationTarget): Promise<ServiceInstanceAuthorityRead>;
151
+ read(target: ServiceInstanceActivationTarget, instanceIntent?: true, activation?: ServiceInstanceActivationRecoveryEnvelope, acceptsLocal?: (route: ServiceInstanceRouteFence) => boolean): Promise<ServiceInstanceAuthorityRead>;
152
152
  reserve(activation: Omit<ServiceInstanceActivationRecoveryEnvelope, 'targetMeshName'>, signal?: AbortSignal): Promise<ServiceInstanceAuthorityReserve>;
153
153
  resume(target: ServiceInstanceActivationTarget, pending: ServicePendingInstanceActivation): Promise<ServiceInstanceActivationReservation>;
154
154
  commit(target: ServiceInstanceActivationTarget, reservation: ServiceInstanceActivationReservation, spot: ServiceSpotState, deadlineUnixMs?: bigint): Promise<{
@@ -270,7 +270,7 @@ export declare class ServiceStatefulRuntime {
270
270
  clearSubscriptions(spotId: string): void;
271
271
  publishLogicalMulticast(channelName: string, topic: string, payload: ServiceApplicationPayload, sourceSpotId?: string): Promise<void>;
272
272
  sendToSpot(sourceSpotId: string, requested: ServiceDirectSpotRouteFence, payload: ServiceApplicationPayload): Promise<number>;
273
- requestToSpot(sourceSpotId: string, requested: ServiceDirectSpotRouteFence, payload: ServiceApplicationPayload, timeoutMs: number): ServiceStatefulPendingOperation;
273
+ requestToSpot(sourceSpotId: string, requested: ServiceDirectSpotRouteFence, payload: ServiceApplicationPayload, timeoutMs: number, onAdmitted?: () => void): ServiceStatefulPendingOperation;
274
274
  sendToActor(target: ServiceActorRef, _targetNodeGeneration: bigint, _authorityOwnerGeneration: bigint, payload: ServiceApplicationPayload, sourceActor?: ServiceActorRef, boundSession?: {
275
275
  readonly sessionRid: string;
276
276
  readonly bindingGeneration: bigint;
@@ -278,13 +278,13 @@ export declare class ServiceStatefulRuntime {
278
278
  requestToActor(target: ServiceActorRef, _targetNodeGeneration: bigint, _authorityOwnerGeneration: bigint, payload: ServiceApplicationPayload, timeoutMs: number, sourceActor?: ServiceActorRef, boundSession?: {
279
279
  readonly sessionRid: string;
280
280
  readonly bindingGeneration: bigint;
281
- }): ServiceStatefulPendingOperation;
281
+ }, onAdmitted?: () => void): ServiceStatefulPendingOperation;
282
282
  sendToInstanceSpot(route: ServiceInstanceRouteFence, payload: ServiceApplicationPayload, sourceSpotId?: string, metadataFrame?: Uint8Array, instanceIntent?: boolean): Promise<number>;
283
- sendToMissingInstanceSpot(target: ServiceInstanceActivationTarget, payload: ServiceApplicationPayload, deadlineUnixMs: bigint, sourceSpotId?: string, metadataFrame?: Uint8Array): Promise<number>;
284
- sendToMissingInstanceSpotFrame(target: ServiceInstanceActivationTarget, payloadFrame: Buffer, deadlineUnixMs: bigint, sourceSpotId?: string, metadataFrame?: Uint8Array): Promise<number>;
285
- requestToInstanceSpot(route: ServiceInstanceRouteFence, payload: ServiceApplicationPayload, timeoutMs: number, sourceSpotId?: string, metadataFrame?: Uint8Array, instanceIntent?: boolean): ServiceStatefulPendingOperation;
286
- requestToMissingInstanceSpot(target: ServiceInstanceActivationTarget, payload: ServiceApplicationPayload, timeoutMs: number, sourceSpotId?: string, metadataFrame?: Uint8Array): ServiceStatefulPendingOperation;
287
- requestToMissingInstanceSpotFrame(target: ServiceInstanceActivationTarget, payloadFrame: Buffer, deadlineUnixMs: bigint, sourceSpotId?: string, metadataFrame?: Uint8Array): ServiceStatefulPendingOperation;
283
+ sendToMissingInstanceSpot(target: ServiceInstanceColdActivationTarget, payload: ServiceApplicationPayload, deadlineUnixMs: bigint, sourceSpotId?: string, metadataFrame?: Uint8Array): Promise<number>;
284
+ sendToMissingInstanceSpotFrame(target: ServiceInstanceColdActivationTarget, payloadFrame: Buffer, deadlineUnixMs: bigint, sourceSpotId?: string, metadataFrame?: Uint8Array): Promise<number>;
285
+ requestToInstanceSpot(route: ServiceInstanceRouteFence, payload: ServiceApplicationPayload, timeoutMs: number, sourceSpotId?: string, metadataFrame?: Uint8Array, instanceIntent?: boolean, onAdmitted?: () => void): ServiceStatefulPendingOperation;
286
+ requestToMissingInstanceSpot(target: ServiceInstanceColdActivationTarget, payload: ServiceApplicationPayload, timeoutMs: number, sourceSpotId?: string, metadataFrame?: Uint8Array): ServiceStatefulPendingOperation;
287
+ requestToMissingInstanceSpotFrame(target: ServiceInstanceColdActivationTarget, payloadFrame: Buffer, deadlineUnixMs: bigint, sourceSpotId?: string, metadataFrame?: Uint8Array, onAdmitted?: () => void): ServiceStatefulPendingOperation;
288
288
  lookupRemoteActor(targetNodeRid: string, actorId: string, timeoutMs: number): ServiceStatefulPendingOperation;
289
289
  destroyActor(actor: ServiceActorRef, timeoutMs: number): ServiceStatefulPendingOperation;
290
290
  joinActor(actor: ServiceActorRef, targetNodeRid: string, targetSpot: ServiceSpotRef, targetSpotGeneration: bigint, payload: ServiceApplicationPayload | undefined, timeoutMs: number): ServiceStatefulPendingOperation;
@@ -324,6 +324,7 @@ export declare class ServiceStatefulRuntime {
324
324
  private requireReadyInstanceApplicationRoute;
325
325
  private validateInstanceIngress;
326
326
  private activateMissingInstance;
327
+ private localReadyInstance;
327
328
  private activateMissingInstanceAsync;
328
329
  private runMissingInstanceActivation;
329
330
  private acceptsLocalMissingInstancePlacement;