@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
@@ -4,7 +4,9 @@ exports.ZLinkNodeRawBindingPort = void 0;
4
4
  const zlink_1 = require("@zlink-systems/zlink");
5
5
  const node_backend_adapter_support_1 = require("./node-backend-adapter-support");
6
6
  const node_socket_backend_adapter_1 = require("./node-socket-backend-adapter");
7
+ const runtime_values_1 = require("../runtime-values");
7
8
  const node_event_loop_poller_1 = require("./node-event-loop-poller");
9
+ const runtime_message_1 = require("../runtime-message");
8
10
  class ZLinkNodeRawBindingPort {
9
11
  sharedContext;
10
12
  routerReceiveTimeoutMs;
@@ -174,13 +176,41 @@ class NodeRawSocketPort {
174
176
  }
175
177
  class NodeRawRouterPort extends NodeRawSocketPort {
176
178
  nextIncomingRequestSequence = 1n;
179
+ routingIds = new Map();
180
+ nextRequestSequence = () => {
181
+ const current = this.nextIncomingRequestSequence;
182
+ this.nextIncomingRequestSequence =
183
+ current === BigInt(Number.MAX_SAFE_INTEGER) ? 1n : current + 1n;
184
+ return current;
185
+ };
186
+ replyParts = (targetRid, replyToken, parts) => {
187
+ // The receive record keeps the binding RoutingId it was delivered with,
188
+ // so the reply addresses that route without rebuilding the identity.
189
+ appendReplyParts(this.socket.reply(targetRid, replyToken), parts).submit();
190
+ };
191
+ preparedRoutingId(routingId) {
192
+ if (typeof routingId !== 'string')
193
+ return bindingRoutingId(routingId);
194
+ let prepared = this.routingIds.get(routingId);
195
+ if (prepared === undefined)
196
+ this.routingIds.set(routingId, (prepared = bindingRoutingId(routingId)));
197
+ return prepared;
198
+ }
199
+ close() {
200
+ try {
201
+ super.close();
202
+ }
203
+ finally {
204
+ this.routingIds.clear();
205
+ }
206
+ }
177
207
  setReceiveFlowState(state) {
178
208
  this.requireOpen();
179
209
  this.socket.setReceiveFlowState(state === 'paused' ? zlink_1.ReceiveFlowState.PAUSED : zlink_1.ReceiveFlowState.RUNNING);
180
210
  }
181
211
  disconnectRid(routingId) {
182
212
  this.requireOpen();
183
- this.socket.disconnectRid(bindingRoutingId(routingId));
213
+ (0, node_socket_backend_adapter_1.disconnectSocketPeer)(this.socket, this.preparedRoutingId(routingId));
184
214
  }
185
215
  constructor(socket, receiveTimeoutMs) {
186
216
  super(socket, true);
@@ -197,42 +227,36 @@ class NodeRawRouterPort extends NodeRawSocketPort {
197
227
  }
198
228
  setRoutingId(routingId) {
199
229
  this.requireOpen();
200
- this.socket.setRoutingId(bindingRoutingId(routingId));
230
+ this.socket.setRoutingId(this.preparedRoutingId(routingId));
201
231
  }
202
232
  connectToRoutingId(routingId, endpoint) {
203
233
  this.requireOpen();
204
- this.socket.options.setConnectRoutingId(bindingRoutingId(routingId));
234
+ this.socket.options.setConnectRoutingId(this.preparedRoutingId(routingId));
205
235
  this.connect(endpoint);
206
236
  }
207
237
  send(targetRid, parts) {
208
238
  this.requireOpen();
209
239
  requireParts(parts);
210
- return (0, node_backend_adapter_support_1.submitBindingAsyncSend)(this.socket.send(bindingRoutingId(targetRid)), parts);
240
+ return (0, node_backend_adapter_support_1.submitBindingAsyncSend)(this.socket.send(this.preparedRoutingId(targetRid)), parts);
211
241
  }
212
242
  submitSend(targetRid, parts) {
213
243
  this.requireOpen();
214
244
  requireParts(parts);
215
- return (0, node_backend_adapter_support_1.submitBindingSend)(this.socket.send(bindingRoutingId(targetRid)), parts);
245
+ return (0, node_backend_adapter_support_1.submitBindingSend)(this.socket.send(this.preparedRoutingId(targetRid)), parts);
216
246
  }
217
- async request(targetRid, parts, timeoutMs, recordReceived) {
218
- this.requireOpen();
219
- const deadlineMs = performance.now() + timeoutMs;
247
+ request(targetRid, parts, timeoutMs, recordReceived, onAdmitted) {
220
248
  let submission;
249
+ const deadlineMs = performance.now() + timeoutMs;
221
250
  try {
222
- submission = appendRequestParts(this.socket.request(bindingRoutingId(targetRid)), parts)
251
+ this.requireOpen();
252
+ submission = appendRequestParts(this.socket.request(this.preparedRoutingId(targetRid)), parts)
223
253
  .timeout(timeoutMs)
224
254
  .submit();
225
255
  }
226
256
  catch (error) {
227
- throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'submit');
228
- }
229
- try {
230
- const replies = await (0, node_backend_adapter_support_1.bindingRequestReply)(submission, deadlineMs, recordReceived);
231
- return copyAndClose(replies);
232
- }
233
- catch (error) {
234
- throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'completion');
257
+ return Promise.reject((0, node_backend_adapter_support_1.translateBindingResultError)(error, 'submit'));
235
258
  }
259
+ return requestReply(submission, deadlineMs, recordReceived, onAdmitted);
236
260
  }
237
261
  routesSnapshot() {
238
262
  this.requireOpen();
@@ -243,14 +267,7 @@ class NodeRawRouterPort extends NodeRawSocketPort {
243
267
  }
244
268
  receive(dontWait = false) {
245
269
  this.requireOpen();
246
- return receiveRecord(this.socket, dontWait, () => {
247
- const current = this.nextIncomingRequestSequence;
248
- this.nextIncomingRequestSequence =
249
- current === BigInt(Number.MAX_SAFE_INTEGER) ? 1n : current + 1n;
250
- return current;
251
- }, (targetRid, replyToken, parts) => {
252
- appendReplyParts(this.socket.reply(bindingRoutingId(targetRid), replyToken), parts).submit();
253
- });
270
+ return receiveRecord(this.socket, dontWait, this.nextRequestSequence, this.replyParts);
254
271
  }
255
272
  }
256
273
  class NodeRawDealerPort extends NodeRawSocketPort {
@@ -266,23 +283,17 @@ class NodeRawDealerPort extends NodeRawSocketPort {
266
283
  requireParts(parts);
267
284
  return (0, node_backend_adapter_support_1.submitBindingAsyncSend)(this.socket.send(), parts);
268
285
  }
269
- async request(parts, timeoutMs) {
270
- this.requireOpen();
271
- const deadlineMs = performance.now() + timeoutMs;
286
+ request(parts, timeoutMs, onAdmitted) {
272
287
  let submission;
288
+ const deadlineMs = performance.now() + timeoutMs;
273
289
  try {
290
+ this.requireOpen();
274
291
  submission = appendRequestParts(this.socket.request(), parts).timeout(timeoutMs).submit();
275
292
  }
276
293
  catch (error) {
277
- throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'submit');
278
- }
279
- try {
280
- const replies = await (0, node_backend_adapter_support_1.bindingRequestReply)(submission, deadlineMs);
281
- return copyAndClose(replies);
282
- }
283
- catch (error) {
284
- throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'completion');
294
+ return Promise.reject((0, node_backend_adapter_support_1.translateBindingResultError)(error, 'submit'));
285
295
  }
296
+ return requestReply(submission, deadlineMs, undefined, onAdmitted);
286
297
  }
287
298
  receive(dontWait = false) {
288
299
  this.requireOpen();
@@ -343,56 +354,97 @@ function requireParts(parts) {
343
354
  throw new TypeError('Raw multipart operation requires at least one part.');
344
355
  return parts;
345
356
  }
357
+ const EMPTY_SOURCE_ROUTE = Buffer.alloc(0);
358
+ /**
359
+ * One received binding record. The payload Buffers are the binding's own
360
+ * `data()` storage, retained under the runtime payload policy instead of a
361
+ * second Framework copy; closing the record releases the binding handles.
362
+ */
363
+ class NodeRawReceivedRecord {
364
+ received;
365
+ sourceRid;
366
+ sourceRoute;
367
+ routeGeneration;
368
+ requestSeq;
369
+ reply;
370
+ parts;
371
+ closed = false;
372
+ constructor(received, nextRequestSequence, reply) {
373
+ this.received = received;
374
+ const routingId = received.routingId;
375
+ this.sourceRid = routingId?.toString() ?? '';
376
+ this.sourceRoute = routingId?.toBytes() ?? EMPTY_SOURCE_ROUTE;
377
+ this.routeGeneration = received.routeGeneration;
378
+ const replyToken = received.replyToken;
379
+ if (replyToken !== null) {
380
+ this.requestSeq = nextRequestSequence?.();
381
+ if (reply === undefined) {
382
+ const operation = received.reply();
383
+ this.reply = (parts) => appendReplyParts(operation, parts).submit();
384
+ }
385
+ else {
386
+ const target = routingId ?? bindingRoutingId(EMPTY_SOURCE_ROUTE);
387
+ this.reply = (parts) => reply(target, replyToken, parts);
388
+ }
389
+ }
390
+ const parts = received.parts;
391
+ const retained = new Array(parts.length);
392
+ for (let index = 0; index < parts.length; index++)
393
+ retained[index] = runtime_message_1.ZLinkBufferMessage.retainPayload(parts[index]);
394
+ this.parts = retained;
395
+ }
396
+ close() {
397
+ if (this.closed)
398
+ return;
399
+ this.closed = true;
400
+ this.received.close();
401
+ }
402
+ }
346
403
  function receiveRecord(socket, dontWait, nextRequestSequence, reply) {
347
404
  const received = new zlink_1.Received();
348
405
  if (!socket.recv(received, dontWait ? zlink_1.RecvFlags.DontWait : zlink_1.RecvFlags.None)) {
349
406
  received.close();
350
407
  return undefined;
351
408
  }
352
- let closed = false;
353
409
  try {
354
- const sourceRid = received.routingId?.toString() ?? '';
355
- const sourceRoute = received.routingId?.toBytes() ?? Buffer.alloc(0);
356
- const requestSeq = received.replyToken === null ? undefined : nextRequestSequence?.();
357
- const replyToken = received.replyToken;
358
- const receivedReply = replyToken === null
359
- ? undefined
360
- : reply === undefined
361
- ? received.reply()
362
- : (parts) => reply(sourceRoute, replyToken, parts);
363
- return {
364
- sourceRid,
365
- sourceRoute,
366
- routeGeneration: received.routeGeneration,
367
- ...(requestSeq === undefined ? {} : { requestSeq }),
368
- ...(receivedReply === undefined
369
- ? {}
370
- : {
371
- reply: (parts) => {
372
- if (typeof receivedReply === 'function') {
373
- receivedReply(parts);
374
- return;
375
- }
376
- appendReplyParts(receivedReply, parts).submit();
377
- }
378
- }),
379
- parts: received.parts.map((part) => part.toBytes()),
380
- close: () => {
381
- if (closed)
382
- return;
383
- closed = true;
384
- received.close();
385
- }
386
- };
410
+ return new NodeRawReceivedRecord(received, nextRequestSequence, reply);
387
411
  }
388
412
  catch (error) {
389
413
  received.close();
390
414
  throw error;
391
415
  }
392
416
  }
393
- function copyAndClose(messages) {
417
+ /**
418
+ * Continues once on the binding reply. Admission that completed at submit is
419
+ * confirmed in this turn; a backpressured submission keeps the admission
420
+ * wait that bounds it by the request deadline.
421
+ */
422
+ function requestReply(submission, deadlineMs, recordReceived, onAdmitted) {
423
+ if (submission.result === runtime_values_1.SubmitResult.Backpressured) {
424
+ return (0, node_backend_adapter_support_1.bindingRequestReply)(submission, deadlineMs, recordReceived, onAdmitted).then(retainAndClose, rejectCompletion);
425
+ }
426
+ try {
427
+ onAdmitted?.();
428
+ }
429
+ catch (error) {
430
+ return Promise.reject((0, node_backend_adapter_support_1.translateBindingResultError)(error, 'completion'));
431
+ }
432
+ return submission.reply.then((replies) => {
433
+ try {
434
+ recordReceived?.();
435
+ return retainAndClose(replies);
436
+ }
437
+ catch (error) {
438
+ throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'completion');
439
+ }
440
+ }, rejectCompletion);
441
+ }
442
+ function rejectCompletion(error) {
443
+ throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'completion');
444
+ }
445
+ function retainAndClose(messages) {
394
446
  try {
395
- return messages.map((message) => message.toBytes());
447
+ return messages.map((message) => runtime_message_1.ZLinkBufferMessage.retainPayload(message));
396
448
  }
397
449
  finally {
398
450
  for (const message of messages)
@@ -7,7 +7,7 @@ import { type RawServiceRequestResult } from '../../foundation/raw-service-mesh-
7
7
  import type { ServiceInstanceActivationRecoveryEnvelope } from '../../foundation/service-instance-activation-recovery-codec';
8
8
  import { type MeshOperationId, type MeshPeerEntry, type MeshPublisher, type ReadyBatch, type ReadyRecord, type ReceiveBatch, type ServiceSpot, type StreamSessionService, MeshNodeRuntimeState } from '../../foundation/service-runtime-contracts';
9
9
  import type { ServiceActorRef, ServiceSpotState } from '../../foundation/service-stateful-registry';
10
- import { type ServiceAsyncInstanceActivationAuthority, type ServiceInstanceApplicationLifecycle, type ServicePendingInstanceActivation, type ServiceSpotMessageFollowSeal, type ServiceUserSpotOperationHandler, type ServiceUserSpotOperationResult } from '../../foundation/service-stateful-runtime';
10
+ import { type ServiceAsyncInstanceActivationAuthority, type ServiceInstanceApplicationLifecycle, type ServicePendingInstanceActivation, type ServiceSessionOwnerDescriptors, type ServiceSpotMessageFollowSeal, type ServiceUserSpotOperationHandler, type ServiceUserSpotOperationResult } from '../../foundation/service-stateful-runtime';
11
11
  import type { ServiceActorCreateRecord, ServiceDirectSpotRouteFence, ServiceInstanceActivationTarget, ServiceInstanceColdActivationTarget, ServiceInstanceRouteFence, ServiceSpotRouteFence, ServiceUserSpotCloseRecord, ServiceUserSpotCreateRecord } from '../../foundation/service-stateful-wire-codec';
12
12
  import type { ServiceNodeDescriptor } from '../../foundation/service-topology-registry';
13
13
  import { type ServiceApplicationPayload } from '../../foundation/service-wire-m6a-codec';
@@ -30,7 +30,7 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
30
30
  private readonly channels;
31
31
  private readonly peerIntents;
32
32
  private completionHandler?;
33
- private readonly routingId;
33
+ readonly routingId: string;
34
34
  private readonly lifecycleGeneration;
35
35
  private bindEndpoint?;
36
36
  private advertiseHost?;
@@ -38,7 +38,8 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
38
38
  private stateful?;
39
39
  private readyHandler?;
40
40
  private maintenanceTimer?;
41
- private pumping;
41
+ private maintenanceDueMs;
42
+ private pumpTask?;
42
43
  private readable;
43
44
  private readonly onReadable;
44
45
  private readonly onMaintenance;
@@ -55,6 +56,8 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
55
56
  private protocolError?;
56
57
  private messageFollowHandler?;
57
58
  private dispatchErrors?;
59
+ private sessionOwnerDescriptors?;
60
+ private requestSourceAcceptance?;
58
61
  private readonly peerDisconnectedHandlers;
59
62
  constructor(meshName: string, routingId: string | undefined, bindingPort: ZLinkRawBindingPort, applicationJobQueue?: ApplicationJobQueuePort | undefined, applicationJobReceiveFlowFailureSink?: ((error: unknown) => void) | undefined, peerAdmissionSealed?: (() => boolean) | undefined, infrastructureTaskRunner?: import("../../spots/spot-actor-join-dispatch").ZLinkDetachedTaskRunner | undefined);
60
63
  configureObjectPlacement(options: {
@@ -70,6 +73,7 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
70
73
  readonly owner: string;
71
74
  }) => void): void;
72
75
  setDispatchErrorReporter(reporter: ZLinkDispatchErrorReporter): void;
76
+ setSessionOwnerDescriptors(source: ServiceSessionOwnerDescriptors): void;
73
77
  setProtocolErrorHandler(handler: (record: {
74
78
  readonly sourceNodeRid: string;
75
79
  readonly request: boolean;
@@ -80,16 +84,17 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
80
84
  selectObjectPlacement(stableType: string): ZLinkBackendObjectPlacement;
81
85
  instanceSpotPlacementTypes(): readonly string[];
82
86
  sendToMissingInstanceSpot(target: ServiceInstanceColdActivationTarget, parts: MessageLike | readonly MessageLike[], deadlineUnixMs: bigint, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>): Promise<SubmitResult>;
83
- requestToMissingInstanceSpot(target: ServiceInstanceColdActivationTarget, parts: MessageLike | readonly MessageLike[], deadlineUnixMs: bigint, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>): MeshOperationId;
87
+ requestToMissingInstanceSpot(target: ServiceInstanceColdActivationTarget, parts: MessageLike | readonly MessageLike[], deadlineUnixMs: bigint, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, onAdmitted?: () => void): MeshOperationId;
84
88
  setRoutingId(routingId: unknown): void;
85
89
  setBind(endpoint: string): void;
86
90
  setAdvertiseHost(host: string): void;
87
91
  start(): void;
88
92
  setMessageFollowHandler(handler: (record: import('../../foundation/service-stateful-wire-codec').ServiceMessageFollowRecord) => void): void;
89
93
  sendMessageFollowNotification(targetNodeRid: string, record: Omit<import('../../foundation/service-stateful-wire-codec').ServiceMessageFollowRecord, 'kind'>): Promise<boolean>;
90
- shutdown(_timeoutMs: number): RequestResultValue;
94
+ shutdown(_timeoutMs: number): Promise<RequestResultValue>;
95
+ cancelPendingOperations(reason: unknown): void;
91
96
  publishDraining(): Promise<void>;
92
- close(): void;
97
+ close(): Promise<void>;
93
98
  addChannelName(name: string): void;
94
99
  setChannelWeight(name: string, weight: number): Promise<void>;
95
100
  setPlacementWeight(weight: number): Promise<void>;
@@ -99,6 +104,7 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
99
104
  readonly expectedSecurityIdentity?: string;
100
105
  readonly expectedLifecycleGeneration?: bigint;
101
106
  }): Promise<bigint>;
107
+ setRequestSourceAcceptance(acceptance: import('../contracts').ZLinkBackendRequestSourceAcceptance): void;
102
108
  expectPeer(peer: {
103
109
  readonly nodeRoutingId: string;
104
110
  readonly endpoint: string;
@@ -114,19 +120,26 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
114
120
  readonly endpoint: string;
115
121
  }[]): void;
116
122
  isObjectClientNodeDirectTarget(targetRid: unknown): boolean;
123
+ waitForPeerRoute(targetRid: unknown, lifecycleGeneration: bigint, deadlineUnixMs: bigint, signal?: AbortSignal): Promise<void>;
124
+ observePeerRoute(targetRid: unknown): import("../../foundation/durable-service-request").PeerRouteObservation;
125
+ hasPeerRouteOrConnectionIntent(targetRid: unknown, endpoint: string): boolean;
117
126
  isPeerRouteReady(targetRid: unknown, lifecycleGeneration?: bigint): boolean;
118
- sendToNode(targetRid: unknown, parts: MessageLike | readonly MessageLike[]): Promise<SubmitResultValue>;
127
+ sendToNode(targetRid: unknown, parts: MessageLike | readonly MessageLike[]): SubmitResultValue | Promise<SubmitResultValue>;
119
128
  sendInfrastructureControl(targetRid: unknown, record: Uint8Array | readonly Uint8Array[]): Promise<SubmitResultValue>;
120
129
  sendInfrastructureControlFrames(targetRid: unknown, frames: readonly Uint8Array[]): Promise<SubmitResultValue>;
121
130
  requestInfrastructureControlFrames(targetRid: unknown, frames: readonly Uint8Array[], options?: {
122
131
  readonly timeoutMs?: number;
132
+ readonly signal?: AbortSignal;
133
+ readonly onSubmitted?: (signal: AbortSignal) => Promise<void>;
123
134
  }): Promise<readonly Uint8Array[]>;
124
135
  requestToNode(targetRid: unknown, parts: MessageLike | readonly MessageLike[], options?: {
125
136
  readonly timeoutMs?: number;
137
+ readonly onAdmitted?: () => void;
126
138
  }): MeshOperationId;
127
139
  sendToChannel(channelName: string, parts: MessageLike | readonly MessageLike[]): Promise<SubmitResultValue>;
128
140
  requestToChannel(channelName: string, parts: MessageLike | readonly MessageLike[], options?: {
129
141
  readonly timeoutMs?: number;
142
+ readonly onAdmitted?: () => void;
130
143
  }): MeshOperationId;
131
144
  status(): {
132
145
  state: MeshNodeRuntimeState;
@@ -193,10 +206,10 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
193
206
  entrySpotRouteFence(targetNodeRid: string, targetSpotId: string): ServiceDirectSpotRouteFence;
194
207
  sealSpotMessageFollowIngress(source: ServiceDirectSpotRouteFence): ServiceSpotMessageFollowSeal | undefined;
195
208
  abortSpotMessageFollowIngress(seal: ServiceSpotMessageFollowSeal): boolean;
196
- commitSpotMessageFollowIngress(seal: ServiceSpotMessageFollowSeal, target: ServiceDirectSpotRouteFence, durationMs: number): Promise<boolean>;
209
+ commitSpotMessageFollowIngress(seal: ServiceSpotMessageFollowSeal, target: ServiceDirectSpotRouteFence | null, durationMs: number): Promise<boolean>;
197
210
  forgetSpotRoute(spot: ServiceSpotRouteFence['spot'], authorityOwnerGeneration: bigint, storeVersion?: string): void;
198
211
  sendToInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean): Promise<SubmitResult>;
199
- requestInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs?: number, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean): MeshOperationId;
212
+ requestInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs?: number, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean, onAdmitted?: () => void): MeshOperationId;
200
213
  actorLookup(actorId: string): {
201
214
  actor: ServiceActorRef;
202
215
  spotId: string;
@@ -223,20 +236,30 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
223
236
  readonly phase: 'admission';
224
237
  readonly transferId: string;
225
238
  }, timeoutMs?: number): MeshOperationId;
226
- sendToActor(actor: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[]): Promise<SubmitResultValue>;
239
+ sendToActor(actor: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[], options?: {
240
+ readonly flags?: number;
241
+ readonly routeFence?: import('../../foundation/service-stateful-wire-codec').ServiceActorRouteFence;
242
+ }): Promise<SubmitResultValue>;
227
243
  requestToActor(actor: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[], options?: {
228
244
  readonly timeoutMs?: number;
245
+ readonly onAdmitted?: () => void;
246
+ readonly routeFence?: import('../../foundation/service-stateful-wire-codec').ServiceActorRouteFence;
229
247
  }): MeshOperationId;
248
+ acceptRelocatedActorTerminal(operation: {
249
+ readonly high: bigint;
250
+ readonly low: bigint;
251
+ }, replyRouteId: bigint, result: import('../../foundation/service-stateful-runtime').ServiceStatefulResult): 'terminalReceived' | 'alreadyTerminal' | undefined;
230
252
  actorSendToActor(source: ZLinkBackendActorRef, target: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[]): Promise<SubmitResultValue>;
231
253
  actorRequestToActor(source: ZLinkBackendActorRef, target: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[], options?: {
232
254
  readonly timeoutMs?: number;
255
+ readonly onAdmitted?: () => void;
233
256
  }): MeshOperationId;
234
257
  sendActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, parts: MessageLike | readonly MessageLike[], _flags?: number): Promise<SubmitResultValue>;
235
258
  closeActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, timeoutMs?: number): MeshOperationId;
236
259
  leaveActor(actor: ZLinkBackendActorRef, expectedMembershipEpoch: bigint, timeoutMs?: number): MeshOperationId;
237
260
  createStreamSessionService(stream: unknown): StreamSessionService;
238
261
  sendFromSpot(source: ServiceSpotState, target: ServiceDirectSpotRouteFence, parts: MessageLike | readonly MessageLike[]): Promise<SubmitResultValue>;
239
- requestFromSpot(source: ServiceSpotState, target: ServiceDirectSpotRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs: number): MeshOperationId;
262
+ requestFromSpot(source: ServiceSpotState, target: ServiceDirectSpotRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs: number, onAdmitted?: () => void): MeshOperationId;
240
263
  closeSpot(state: ServiceSpotState): boolean;
241
264
  publishFromSpot(state: ServiceSpotState, channelName: string, topic: string, parts: MessageLike | readonly MessageLike[]): Promise<void>;
242
265
  setSpotSubscription(state: ServiceSpotState, channelName: string, topicFilter: string): void;
@@ -244,13 +267,23 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
244
267
  clearSpotSubscriptions(state: ServiceSpotState): void;
245
268
  private createDescriptor;
246
269
  private resolveAdvertisedEndpoint;
270
+ /**
271
+ * Arms the one maintenance timer for the nearest management deadline
272
+ * (spec 08 §4.2): request expiry, liveness, or a pending peer handshake.
273
+ * An earlier deadline re-arms it; a later one keeps the armed time.
274
+ */
247
275
  private scheduleMaintenance;
248
276
  private pump;
249
- private isClosed;
277
+ private runPump;
250
278
  private notifyReady;
279
+ /**
280
+ * The raw registry takes a remote request's terminal and hands it here,
281
+ * where the Framework completion owner receives it in the same turn.
282
+ */
283
+ private readonly requestObserver;
284
+ private observedOperation;
251
285
  private observeCompletion;
252
286
  private observeStateful;
253
- private observeImmediateFailure;
254
287
  private deliverCompletion;
255
288
  private drainMailbox;
256
289
  private requireRuntime;