@zlink-systems/framework 0.30.1 → 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 (340) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +6 -0
  3. package/dist/contracts/Common/ZLinkEncodedPayload.js +18 -3
  4. package/dist/contracts/Common/encoded-payload-storage.d.ts +1 -1
  5. package/dist/contracts/Common/encoded-payload-storage.js +5 -2
  6. package/dist/contracts/Configuration/Builders.d.ts +1 -1
  7. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +2 -1
  8. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +5 -1
  9. package/dist/contracts/Configuration/RegistrationBuilders.js +2 -2
  10. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  11. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +2 -2
  12. package/dist/contracts/Locations/Rows.d.ts +2 -0
  13. package/dist/contracts/Spots/Contracts.d.ts +4 -0
  14. package/dist/contracts/Spots/ZLinkSpot.d.ts +3 -3
  15. package/dist/runtime/abort.d.ts +5 -0
  16. package/dist/runtime/abort.js +10 -0
  17. package/dist/runtime/actors/actor-authority-publication.js +3 -2
  18. package/dist/runtime/actors/actor-client.d.ts +0 -1
  19. package/dist/runtime/actors/actor-client.js +38 -45
  20. package/dist/runtime/actors/actor-context.d.ts +2 -0
  21. package/dist/runtime/actors/actor-context.js +46 -9
  22. package/dist/runtime/actors/actor-handoff.d.ts +7 -3
  23. package/dist/runtime/actors/actor-handoff.js +212 -88
  24. package/dist/runtime/actors/actor-join-relocation.d.ts +2 -0
  25. package/dist/runtime/actors/actor-local-native-join.js +4 -0
  26. package/dist/runtime/actors/actor-mailbox.js +27 -1
  27. package/dist/runtime/actors/actor-remote-joiner.js +3 -1
  28. package/dist/runtime/actors/actor-reply.d.ts +4 -0
  29. package/dist/runtime/actors/actor-reply.js +29 -0
  30. package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -0
  31. package/dist/runtime/actors/actor-runtime-state.js +2 -20
  32. package/dist/runtime/actors/actor-source-transfer.d.ts +1 -17
  33. package/dist/runtime/actors/index.d.ts +6 -2
  34. package/dist/runtime/actors/index.js +37 -21
  35. package/dist/runtime/actors/session-disconnected-wire.d.ts +8 -0
  36. package/dist/runtime/actors/session-disconnected-wire.js +48 -0
  37. package/dist/runtime/admission.d.ts +9 -1
  38. package/dist/runtime/admission.js +55 -32
  39. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +13 -0
  40. package/dist/runtime/application-jobs/application-job-queue-scope.js +27 -1
  41. package/dist/runtime/application-jobs/contracts.d.ts +2 -0
  42. package/dist/runtime/backend/contracts/index.d.ts +19 -3
  43. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +2 -2
  44. package/dist/runtime/backend/mesh-completion-table.js +5 -0
  45. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +26 -2
  46. package/dist/runtime/backend/mesh-dispatch-pump.js +193 -107
  47. package/dist/runtime/backend/node/node-raw-binding-port.js +90 -58
  48. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +33 -8
  49. package/dist/runtime/backend/node/node-raw-mesh-backend.js +142 -143
  50. package/dist/runtime/backend/node/node-socket-backend-adapter.d.ts +1 -1
  51. package/dist/runtime/backend/node/node-socket-backend-adapter.js +5 -5
  52. package/dist/runtime/channels/channel-clients.d.ts +1 -0
  53. package/dist/runtime/channels/channel-clients.js +20 -5
  54. package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +22 -3
  55. package/dist/runtime/channels/channel-dispatch-pipeline.js +103 -57
  56. package/dist/runtime/channels/channel-dispatchers.d.ts +3 -2
  57. package/dist/runtime/channels/channel-dispatchers.js +44 -37
  58. package/dist/runtime/channels/channel-envelope.d.ts +1 -0
  59. package/dist/runtime/channels/channel-envelope.js +74 -31
  60. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +4 -3
  61. package/dist/runtime/channels/channel-runtime-lifecycle.js +19 -24
  62. package/dist/runtime/channels/channel-runtime-manager.d.ts +3 -2
  63. package/dist/runtime/channels/channel-runtime-manager.js +4 -4
  64. package/dist/runtime/channels/channel-transports.d.ts +0 -1
  65. package/dist/runtime/channels/channel-transports.js +35 -33
  66. package/dist/runtime/channels/client-server-location-runtime.js +5 -4
  67. package/dist/runtime/channels/dispatch-error-reporter.d.ts +2 -1
  68. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  69. package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
  70. package/dist/runtime/channels/fanout-location-runtime.js +3 -3
  71. package/dist/runtime/diagnostics/flow-context.js +19 -7
  72. package/dist/runtime/diagnostics/index.js +4 -9
  73. package/dist/runtime/diagnostics/message-flow.d.ts +8 -0
  74. package/dist/runtime/diagnostics/message-flow.js +35 -5
  75. package/dist/runtime/diagnostics/runtime-metrics.d.ts +2 -2
  76. package/dist/runtime/diagnostics/runtime-metrics.js +10 -8
  77. package/dist/runtime/execution/index.d.ts +4 -2
  78. package/dist/runtime/execution/index.js +33 -10
  79. package/dist/runtime/execution/serial-execution-queue.d.ts +4 -0
  80. package/dist/runtime/execution/serial-execution-queue.js +21 -2
  81. package/dist/runtime/execution/state-lane.d.ts +2 -0
  82. package/dist/runtime/execution/state-lane.js +5 -0
  83. package/dist/runtime/foundation/operation-registry.d.ts +25 -1
  84. package/dist/runtime/foundation/operation-registry.js +86 -18
  85. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +39 -3
  86. package/dist/runtime/foundation/raw-service-mesh-runtime.js +151 -55
  87. package/dist/runtime/foundation/service-liveness-registry.d.ts +12 -1
  88. package/dist/runtime/foundation/service-liveness-registry.js +38 -0
  89. package/dist/runtime/foundation/service-mailbox.d.ts +7 -0
  90. package/dist/runtime/foundation/service-maintenance-runtime.js +1 -6
  91. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +2 -3
  92. package/dist/runtime/foundation/service-relocation-object-owner.js +48 -35
  93. package/dist/runtime/foundation/service-relocation-runtime.js +7 -3
  94. package/dist/runtime/foundation/service-runtime-contracts.d.ts +8 -1
  95. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +2 -1
  96. package/dist/runtime/foundation/service-stateful-registry.d.ts +5 -4
  97. package/dist/runtime/foundation/service-stateful-registry.js +24 -26
  98. package/dist/runtime/foundation/service-stateful-runtime.d.ts +72 -6
  99. package/dist/runtime/foundation/service-stateful-runtime.js +444 -117
  100. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +14 -1
  101. package/dist/runtime/foundation/service-stateful-wire-codec.js +48 -27
  102. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +6 -1
  103. package/dist/runtime/foundation/service-wire-binary-primitives.js +27 -11
  104. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  105. package/dist/runtime/foundation/service-wire-constants.generated.js +1 -0
  106. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +10 -0
  107. package/dist/runtime/foundation/service-wire-m6a-codec.js +166 -53
  108. package/dist/runtime/host/actor-packet-relay.d.ts +6 -4
  109. package/dist/runtime/host/actor-packet-relay.js +59 -72
  110. package/dist/runtime/host/actor-placement-coordinator.js +25 -8
  111. package/dist/runtime/host/actor-transfer-runtime.d.ts +7 -31
  112. package/dist/runtime/host/actor-transfer-runtime.js +85 -331
  113. package/dist/runtime/host/application-job-queue.d.ts +24 -3
  114. package/dist/runtime/host/application-job-queue.js +28 -41
  115. package/dist/runtime/host/index.d.ts +5 -1
  116. package/dist/runtime/host/index.js +171 -97
  117. package/dist/runtime/host/location-runtime-owner.js +2 -6
  118. package/dist/runtime/host/mesh-router-resolver.d.ts +4 -0
  119. package/dist/runtime/host/mesh-router-resolver.js +14 -6
  120. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -4
  121. package/dist/runtime/host/remote-bound-session-relay.js +71 -190
  122. package/dist/runtime/host/route-mesh-runtime.d.ts +2 -2
  123. package/dist/runtime/host/route-mesh-runtime.js +5 -3
  124. package/dist/runtime/host/runtime-shutdown.d.ts +1 -0
  125. package/dist/runtime/host/runtime-shutdown.js +3 -2
  126. package/dist/runtime/host/service-relocation-host-runtime.d.ts +17 -7
  127. package/dist/runtime/host/service-relocation-host-runtime.js +550 -367
  128. package/dist/runtime/host/spot-runtime-options-factory.js +15 -7
  129. package/dist/runtime/host/user-spot-creation-coordinator.js +33 -84
  130. package/dist/runtime/locations/auto-connect-loop.d.ts +2 -0
  131. package/dist/runtime/locations/auto-connect-loop.js +22 -14
  132. package/dist/runtime/locations/auto-connect-reconciler.js +0 -6
  133. package/dist/runtime/locations/auto-connect-types.d.ts +0 -1
  134. package/dist/runtime/locations/descriptor-publication.d.ts +4 -0
  135. package/dist/runtime/locations/descriptor-publication.js +11 -0
  136. package/dist/runtime/locations/domain-store-contract.d.ts +1 -0
  137. package/dist/runtime/locations/in-memory-authority-store.d.ts +7 -1
  138. package/dist/runtime/locations/in-memory-authority-store.js +56 -19
  139. package/dist/runtime/locations/in-memory-location-store.js +1 -10
  140. package/dist/runtime/locations/index.d.ts +1 -0
  141. package/dist/runtime/locations/index.js +1 -0
  142. package/dist/runtime/locations/lease-tracker.js +1 -6
  143. package/dist/runtime/locations/location-store-repository.d.ts +51 -1
  144. package/dist/runtime/locations/location-store-repository.js +363 -139
  145. package/dist/runtime/locations/relocation-blob.d.ts +18 -1
  146. package/dist/runtime/locations/relocation-blob.js +52 -1
  147. package/dist/runtime/locations/request-source-resolver.d.ts +37 -0
  148. package/dist/runtime/locations/request-source-resolver.js +80 -0
  149. package/dist/runtime/locations/resolvers.js +1 -1
  150. package/dist/runtime/locations/runtime.d.ts +6 -2
  151. package/dist/runtime/locations/runtime.js +37 -30
  152. package/dist/runtime/messaging/payload-codec.d.ts +7 -1
  153. package/dist/runtime/messaging/payload-codec.js +7 -6
  154. package/dist/runtime/messaging/request-result.js +29 -26
  155. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +19 -1
  156. package/dist/runtime/protocol/service_wire_codec.generated.js +85 -0
  157. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +7 -1
  158. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +23 -7
  159. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +3 -2
  160. package/dist/runtime/spots/index.d.ts +18 -11
  161. package/dist/runtime/spots/index.js +234 -176
  162. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -2
  163. package/dist/runtime/spots/spot-activation-registry.js +21 -11
  164. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  165. package/dist/runtime/spots/spot-activation-state.js +7 -7
  166. package/dist/runtime/spots/spot-activation.d.ts +6 -3
  167. package/dist/runtime/spots/spot-activation.js +123 -44
  168. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -0
  169. package/dist/runtime/spots/spot-actor-admission-coordinator.js +13 -22
  170. package/dist/runtime/spots/spot-actor-membership.d.ts +0 -1
  171. package/dist/runtime/spots/spot-actor-membership.js +0 -8
  172. package/dist/runtime/spots/spot-actor-packet-dispatch.js +33 -8
  173. package/dist/runtime/spots/spot-actor-packet-drain.js +5 -33
  174. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -0
  175. package/dist/runtime/spots/spot-entry-activation.js +14 -9
  176. package/dist/runtime/spots/spot-handler-registry.d.ts +4 -3
  177. package/dist/runtime/spots/spot-handler-registry.js +6 -2
  178. package/dist/runtime/spots/spot-manager-internal-contracts.d.ts +2 -2
  179. package/dist/runtime/spots/spot-manager-public.js +2 -2
  180. package/dist/runtime/spots/spot-node-autoconnect.d.ts +2 -1
  181. package/dist/runtime/spots/spot-node-autoconnect.js +18 -39
  182. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -2
  183. package/dist/runtime/spots/spot-node-runtime-manager.js +115 -50
  184. package/dist/runtime/spots/spot-outbound.js +3 -3
  185. package/dist/runtime/spots/spot-remote-codec.js +5 -1
  186. package/dist/runtime/spots/spot-runtime-ports.d.ts +0 -1
  187. package/dist/runtime/spots/spot-serial-executor.d.ts +10 -0
  188. package/dist/runtime/spots/spot-serial-executor.js +61 -8
  189. package/dist/runtime/spots/spot-serial-turn-executor.js +19 -2
  190. package/dist/runtime/spots/spot-subscription-dispatch.js +1 -1
  191. package/dist/runtime/spots/spot-timer.d.ts +57 -5
  192. package/dist/runtime/spots/spot-timer.js +287 -103
  193. package/dist/runtime/streams/actor-session-binding-registry.d.ts +42 -11
  194. package/dist/runtime/streams/actor-session-binding-registry.js +165 -48
  195. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +8 -4
  196. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -1
  197. package/dist/runtime/streams/bound-actor-relay-sender.js +15 -8
  198. package/dist/runtime/streams/bound-session-service.d.ts +1 -1
  199. package/dist/runtime/streams/bound-session-service.js +6 -11
  200. package/dist/runtime/streams/index.d.ts +3 -2
  201. package/dist/runtime/streams/index.js +6 -4
  202. package/dist/runtime/streams/managed-stream.js +3 -2
  203. package/dist/runtime/streams/native-fallback-bound-session.js +8 -73
  204. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -8
  205. package/dist/runtime/streams/session-actor-coordinator.js +15 -32
  206. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +3 -10
  207. package/dist/runtime/streams/stream-session-runtime.js +1 -4
  208. package/dist/runtime/workers/index.js +1 -1
  209. package/package.json +3 -3
  210. package/src/contracts/Common/ZLinkEncodedPayload.ts +24 -4
  211. package/src/contracts/Common/encoded-payload-storage.ts +6 -3
  212. package/src/contracts/Configuration/Builders.ts +4 -1
  213. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +7 -2
  214. package/src/contracts/Configuration/RegistrationBuilders.ts +6 -2
  215. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  216. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -1
  217. package/src/contracts/Locations/Rows.ts +2 -0
  218. package/src/contracts/Spots/Contracts.ts +8 -0
  219. package/src/contracts/Spots/ZLinkSpot.ts +3 -3
  220. package/src/runtime/abort.ts +12 -0
  221. package/src/runtime/actors/actor-authority-publication.ts +3 -2
  222. package/src/runtime/actors/actor-client.ts +61 -70
  223. package/src/runtime/actors/actor-context.ts +49 -9
  224. package/src/runtime/actors/actor-handoff.ts +282 -106
  225. package/src/runtime/actors/actor-join-relocation.ts +2 -0
  226. package/src/runtime/actors/actor-local-native-join.ts +4 -0
  227. package/src/runtime/actors/actor-mailbox.ts +40 -2
  228. package/src/runtime/actors/actor-remote-joiner.ts +6 -1
  229. package/src/runtime/actors/actor-reply.ts +42 -0
  230. package/src/runtime/actors/actor-runtime-contracts.ts +2 -0
  231. package/src/runtime/actors/actor-runtime-state.ts +2 -20
  232. package/src/runtime/actors/actor-source-transfer.ts +1 -34
  233. package/src/runtime/actors/index.ts +41 -27
  234. package/src/runtime/actors/session-disconnected-wire.ts +66 -0
  235. package/src/runtime/admission.ts +69 -34
  236. package/src/runtime/application-jobs/application-job-queue-scope.ts +33 -1
  237. package/src/runtime/application-jobs/contracts.ts +2 -0
  238. package/src/runtime/backend/contracts/index.ts +39 -4
  239. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +5 -3
  240. package/src/runtime/backend/mesh-completion-table.ts +4 -0
  241. package/src/runtime/backend/mesh-dispatch-pump.ts +223 -124
  242. package/src/runtime/backend/node/node-raw-binding-port.ts +106 -70
  243. package/src/runtime/backend/node/node-raw-mesh-backend.ts +221 -170
  244. package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -5
  245. package/src/runtime/channels/channel-clients.ts +49 -24
  246. package/src/runtime/channels/channel-dispatch-pipeline.ts +173 -124
  247. package/src/runtime/channels/channel-dispatchers.ts +116 -72
  248. package/src/runtime/channels/channel-envelope.ts +105 -36
  249. package/src/runtime/channels/channel-runtime-lifecycle.ts +13 -13
  250. package/src/runtime/channels/channel-runtime-manager.ts +12 -5
  251. package/src/runtime/channels/channel-transports.ts +49 -58
  252. package/src/runtime/channels/client-server-location-runtime.ts +11 -10
  253. package/src/runtime/channels/dispatch-error-reporter.ts +4 -2
  254. package/src/runtime/channels/fanout-location-runtime.ts +17 -9
  255. package/src/runtime/diagnostics/flow-context.ts +20 -7
  256. package/src/runtime/diagnostics/index.ts +1 -7
  257. package/src/runtime/diagnostics/message-flow.ts +47 -9
  258. package/src/runtime/diagnostics/runtime-metrics.ts +12 -10
  259. package/src/runtime/execution/index.ts +40 -14
  260. package/src/runtime/execution/serial-execution-queue.ts +31 -4
  261. package/src/runtime/execution/state-lane.ts +7 -0
  262. package/src/runtime/foundation/operation-registry.ts +98 -20
  263. package/src/runtime/foundation/raw-service-mesh-runtime.ts +244 -67
  264. package/src/runtime/foundation/service-liveness-registry.ts +39 -0
  265. package/src/runtime/foundation/service-mailbox.ts +8 -0
  266. package/src/runtime/foundation/service-maintenance-runtime.ts +1 -8
  267. package/src/runtime/foundation/service-relocation-object-owner.ts +54 -37
  268. package/src/runtime/foundation/service-relocation-runtime.ts +7 -3
  269. package/src/runtime/foundation/service-runtime-contracts.ts +12 -1
  270. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -1
  271. package/src/runtime/foundation/service-stateful-registry.ts +38 -35
  272. package/src/runtime/foundation/service-stateful-runtime.ts +667 -152
  273. package/src/runtime/foundation/service-stateful-wire-codec.ts +49 -11
  274. package/src/runtime/foundation/service-wire-binary-primitives.ts +35 -12
  275. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  276. package/src/runtime/foundation/service-wire-m6a-codec.ts +187 -51
  277. package/src/runtime/host/actor-packet-relay.ts +113 -94
  278. package/src/runtime/host/actor-placement-coordinator.ts +31 -8
  279. package/src/runtime/host/actor-transfer-runtime.ts +104 -430
  280. package/src/runtime/host/application-job-queue.ts +29 -44
  281. package/src/runtime/host/index.ts +286 -129
  282. package/src/runtime/host/location-runtime-owner.ts +2 -6
  283. package/src/runtime/host/mesh-router-resolver.ts +13 -5
  284. package/src/runtime/host/remote-bound-session-relay.ts +86 -248
  285. package/src/runtime/host/route-mesh-runtime.ts +11 -5
  286. package/src/runtime/host/runtime-shutdown.ts +15 -4
  287. package/src/runtime/host/service-relocation-host-runtime.ts +784 -475
  288. package/src/runtime/host/spot-runtime-options-factory.ts +18 -7
  289. package/src/runtime/host/user-spot-creation-coordinator.ts +41 -100
  290. package/src/runtime/locations/auto-connect-loop.ts +22 -14
  291. package/src/runtime/locations/auto-connect-reconciler.ts +0 -6
  292. package/src/runtime/locations/auto-connect-types.ts +0 -1
  293. package/src/runtime/locations/descriptor-publication.ts +7 -0
  294. package/src/runtime/locations/domain-store-contract.ts +5 -0
  295. package/src/runtime/locations/in-memory-authority-store.ts +85 -23
  296. package/src/runtime/locations/in-memory-location-store.ts +1 -12
  297. package/src/runtime/locations/index.ts +1 -0
  298. package/src/runtime/locations/lease-tracker.ts +2 -9
  299. package/src/runtime/locations/location-store-repository.ts +628 -152
  300. package/src/runtime/locations/relocation-blob.ts +75 -1
  301. package/src/runtime/locations/request-source-resolver.ts +138 -0
  302. package/src/runtime/locations/resolvers.ts +2 -2
  303. package/src/runtime/locations/runtime.ts +70 -40
  304. package/src/runtime/messaging/payload-codec.ts +8 -11
  305. package/src/runtime/messaging/request-result.ts +33 -29
  306. package/src/runtime/protocol/service_wire_codec.generated.ts +87 -4
  307. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +13 -10
  308. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +3 -2
  309. package/src/runtime/spots/index.ts +375 -281
  310. package/src/runtime/spots/spot-activation-registry.ts +25 -13
  311. package/src/runtime/spots/spot-activation-state.ts +12 -19
  312. package/src/runtime/spots/spot-activation.ts +170 -86
  313. package/src/runtime/spots/spot-actor-admission-coordinator.ts +25 -55
  314. package/src/runtime/spots/spot-actor-membership.ts +0 -15
  315. package/src/runtime/spots/spot-actor-packet-dispatch.ts +56 -11
  316. package/src/runtime/spots/spot-actor-packet-drain.ts +9 -52
  317. package/src/runtime/spots/spot-entry-activation.ts +24 -19
  318. package/src/runtime/spots/spot-handler-registry.ts +15 -4
  319. package/src/runtime/spots/spot-manager-internal-contracts.ts +2 -2
  320. package/src/runtime/spots/spot-manager-public.ts +2 -2
  321. package/src/runtime/spots/spot-node-autoconnect.ts +22 -45
  322. package/src/runtime/spots/spot-node-runtime-manager.ts +197 -67
  323. package/src/runtime/spots/spot-outbound.ts +3 -3
  324. package/src/runtime/spots/spot-remote-codec.ts +9 -2
  325. package/src/runtime/spots/spot-runtime-ports.ts +0 -1
  326. package/src/runtime/spots/spot-serial-executor.ts +97 -25
  327. package/src/runtime/spots/spot-serial-turn-executor.ts +22 -3
  328. package/src/runtime/spots/spot-subscription-dispatch.ts +1 -1
  329. package/src/runtime/spots/spot-timer.ts +413 -157
  330. package/src/runtime/streams/actor-session-binding-registry.ts +236 -64
  331. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +16 -8
  332. package/src/runtime/streams/bound-actor-relay-sender.ts +23 -9
  333. package/src/runtime/streams/bound-session-service.ts +7 -10
  334. package/src/runtime/streams/index.ts +12 -6
  335. package/src/runtime/streams/managed-stream.ts +4 -2
  336. package/src/runtime/streams/native-fallback-bound-session.ts +14 -103
  337. package/src/runtime/streams/session-actor-coordinator.ts +39 -88
  338. package/src/runtime/streams/stream-binding-runtime-ports.ts +3 -9
  339. package/src/runtime/streams/stream-session-runtime.ts +1 -5
  340. package/src/runtime/workers/index.ts +1 -1
@@ -4,6 +4,7 @@ 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");
8
9
  const runtime_message_1 = require("../runtime-message");
9
10
  class ZLinkNodeRawBindingPort {
@@ -183,7 +184,9 @@ class NodeRawRouterPort extends NodeRawSocketPort {
183
184
  return current;
184
185
  };
185
186
  replyParts = (targetRid, replyToken, parts) => {
186
- appendReplyParts(this.socket.reply(this.preparedRoutingId(targetRid), replyToken), parts).submit();
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();
187
190
  };
188
191
  preparedRoutingId(routingId) {
189
192
  if (typeof routingId !== 'string')
@@ -207,7 +210,7 @@ class NodeRawRouterPort extends NodeRawSocketPort {
207
210
  }
208
211
  disconnectRid(routingId) {
209
212
  this.requireOpen();
210
- this.socket.disconnectRid(this.preparedRoutingId(routingId));
213
+ (0, node_socket_backend_adapter_1.disconnectSocketPeer)(this.socket, this.preparedRoutingId(routingId));
211
214
  }
212
215
  constructor(socket, receiveTimeoutMs) {
213
216
  super(socket, true);
@@ -241,25 +244,19 @@ class NodeRawRouterPort extends NodeRawSocketPort {
241
244
  requireParts(parts);
242
245
  return (0, node_backend_adapter_support_1.submitBindingSend)(this.socket.send(this.preparedRoutingId(targetRid)), parts);
243
246
  }
244
- async request(targetRid, parts, timeoutMs, recordReceived, onAdmitted) {
245
- this.requireOpen();
246
- const deadlineMs = performance.now() + timeoutMs;
247
+ request(targetRid, parts, timeoutMs, recordReceived, onAdmitted) {
247
248
  let submission;
249
+ const deadlineMs = performance.now() + timeoutMs;
248
250
  try {
251
+ this.requireOpen();
249
252
  submission = appendRequestParts(this.socket.request(this.preparedRoutingId(targetRid)), parts)
250
253
  .timeout(timeoutMs)
251
254
  .submit();
252
255
  }
253
256
  catch (error) {
254
- throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'submit');
255
- }
256
- try {
257
- const replies = await (0, node_backend_adapter_support_1.bindingRequestReply)(submission, deadlineMs, recordReceived, onAdmitted);
258
- return retainAndClose(replies);
259
- }
260
- catch (error) {
261
- throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'completion');
257
+ return Promise.reject((0, node_backend_adapter_support_1.translateBindingResultError)(error, 'submit'));
262
258
  }
259
+ return requestReply(submission, deadlineMs, recordReceived, onAdmitted);
263
260
  }
264
261
  routesSnapshot() {
265
262
  this.requireOpen();
@@ -286,23 +283,17 @@ class NodeRawDealerPort extends NodeRawSocketPort {
286
283
  requireParts(parts);
287
284
  return (0, node_backend_adapter_support_1.submitBindingAsyncSend)(this.socket.send(), parts);
288
285
  }
289
- async request(parts, timeoutMs, onAdmitted) {
290
- this.requireOpen();
291
- const deadlineMs = performance.now() + timeoutMs;
286
+ request(parts, timeoutMs, onAdmitted) {
292
287
  let submission;
288
+ const deadlineMs = performance.now() + timeoutMs;
293
289
  try {
290
+ this.requireOpen();
294
291
  submission = appendRequestParts(this.socket.request(), parts).timeout(timeoutMs).submit();
295
292
  }
296
293
  catch (error) {
297
- throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'submit');
298
- }
299
- try {
300
- const replies = await (0, node_backend_adapter_support_1.bindingRequestReply)(submission, deadlineMs, undefined, onAdmitted);
301
- return retainAndClose(replies);
302
- }
303
- catch (error) {
304
- throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'completion');
294
+ return Promise.reject((0, node_backend_adapter_support_1.translateBindingResultError)(error, 'submit'));
305
295
  }
296
+ return requestReply(submission, deadlineMs, undefined, onAdmitted);
306
297
  }
307
298
  receive(dontWait = false) {
308
299
  this.requireOpen();
@@ -363,53 +354,94 @@ function requireParts(parts) {
363
354
  throw new TypeError('Raw multipart operation requires at least one part.');
364
355
  return parts;
365
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
+ }
366
403
  function receiveRecord(socket, dontWait, nextRequestSequence, reply) {
367
404
  const received = new zlink_1.Received();
368
405
  if (!socket.recv(received, dontWait ? zlink_1.RecvFlags.DontWait : zlink_1.RecvFlags.None)) {
369
406
  received.close();
370
407
  return undefined;
371
408
  }
372
- let closed = false;
373
409
  try {
374
- const sourceRid = received.routingId?.toString() ?? '';
375
- const sourceRoute = received.routingId?.toBytes() ?? Buffer.alloc(0);
376
- const requestSeq = received.replyToken === null ? undefined : nextRequestSequence?.();
377
- const replyToken = received.replyToken;
378
- const receivedReply = replyToken === null
379
- ? undefined
380
- : reply === undefined
381
- ? received.reply()
382
- : (parts) => reply(sourceRoute, replyToken, parts);
383
- return {
384
- sourceRid,
385
- sourceRoute,
386
- routeGeneration: received.routeGeneration,
387
- ...(requestSeq === undefined ? {} : { requestSeq }),
388
- ...(receivedReply === undefined
389
- ? {}
390
- : {
391
- reply: (parts) => {
392
- if (typeof receivedReply === 'function') {
393
- receivedReply(parts);
394
- return;
395
- }
396
- appendReplyParts(receivedReply, parts).submit();
397
- }
398
- }),
399
- parts: received.parts.map((part) => part.toBytes()),
400
- close: () => {
401
- if (closed)
402
- return;
403
- closed = true;
404
- received.close();
405
- }
406
- };
410
+ return new NodeRawReceivedRecord(received, nextRequestSequence, reply);
407
411
  }
408
412
  catch (error) {
409
413
  received.close();
410
414
  throw error;
411
415
  }
412
416
  }
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
+ }
413
445
  function retainAndClose(messages) {
414
446
  try {
415
447
  return messages.map((message) => runtime_message_1.ZLinkBufferMessage.retainPayload(message));
@@ -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';
@@ -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;
@@ -87,9 +91,10 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
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,6 +120,7 @@ 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>;
117
124
  observePeerRoute(targetRid: unknown): import("../../foundation/durable-service-request").PeerRouteObservation;
118
125
  hasPeerRouteOrConnectionIntent(targetRid: unknown, endpoint: string): boolean;
119
126
  isPeerRouteReady(targetRid: unknown, lifecycleGeneration?: bigint): boolean;
@@ -199,7 +206,7 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
199
206
  entrySpotRouteFence(targetNodeRid: string, targetSpotId: string): ServiceDirectSpotRouteFence;
200
207
  sealSpotMessageFollowIngress(source: ServiceDirectSpotRouteFence): ServiceSpotMessageFollowSeal | undefined;
201
208
  abortSpotMessageFollowIngress(seal: ServiceSpotMessageFollowSeal): boolean;
202
- commitSpotMessageFollowIngress(seal: ServiceSpotMessageFollowSeal, target: ServiceDirectSpotRouteFence, durationMs: number): Promise<boolean>;
209
+ commitSpotMessageFollowIngress(seal: ServiceSpotMessageFollowSeal, target: ServiceDirectSpotRouteFence | null, durationMs: number): Promise<boolean>;
203
210
  forgetSpotRoute(spot: ServiceSpotRouteFence['spot'], authorityOwnerGeneration: bigint, storeVersion?: string): void;
204
211
  sendToInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean): Promise<SubmitResult>;
205
212
  requestInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs?: number, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean, onAdmitted?: () => void): MeshOperationId;
@@ -229,11 +236,19 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
229
236
  readonly phase: 'admission';
230
237
  readonly transferId: string;
231
238
  }, timeoutMs?: number): MeshOperationId;
232
- 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>;
233
243
  requestToActor(actor: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[], options?: {
234
244
  readonly timeoutMs?: number;
235
245
  readonly onAdmitted?: () => void;
246
+ readonly routeFence?: import('../../foundation/service-stateful-wire-codec').ServiceActorRouteFence;
236
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;
237
252
  actorSendToActor(source: ZLinkBackendActorRef, target: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[]): Promise<SubmitResultValue>;
238
253
  actorRequestToActor(source: ZLinkBackendActorRef, target: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[], options?: {
239
254
  readonly timeoutMs?: number;
@@ -252,13 +267,23 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
252
267
  clearSpotSubscriptions(state: ServiceSpotState): void;
253
268
  private createDescriptor;
254
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
+ */
255
275
  private scheduleMaintenance;
256
276
  private pump;
257
- private isClosed;
277
+ private runPump;
258
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;
259
285
  private observeCompletion;
260
286
  private observeStateful;
261
- private observeImmediateFailure;
262
287
  private deliverCompletion;
263
288
  private drainMailbox;
264
289
  private requireRuntime;