@zlink-systems/framework 0.26.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
  3. package/dist/contracts/Channels/Calls.d.ts +1 -1
  4. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  5. package/dist/contracts/Common/CoreTypes.js +7 -0
  6. package/dist/contracts/Common/index.d.ts +1 -1
  7. package/dist/contracts/Common/index.js +0 -1
  8. package/dist/contracts/Configuration/Builders.d.ts +0 -1
  9. package/dist/contracts/Configuration/Configs.d.ts +0 -1
  10. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  11. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  12. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  13. package/dist/contracts/Configuration/Registration.js +58 -36
  14. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  15. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  16. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  17. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  18. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
  19. package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
  20. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  21. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  22. package/dist/contracts/Handlers/JsonContract.js +10 -4
  23. package/dist/contracts/Locations/Authority.d.ts +1 -1
  24. package/dist/contracts/Locations/Authority.js +3 -2
  25. package/dist/contracts/Locations/Options.js +1 -1
  26. package/dist/contracts/Locations/Stores.d.ts +12 -0
  27. package/dist/contracts/Locations/Stores.js +9 -0
  28. package/dist/contracts/Spots/Contracts.d.ts +2 -2
  29. package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
  30. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
  31. package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
  32. package/dist/internal.d.ts +4 -0
  33. package/dist/internal.js +15 -1
  34. package/dist/nest-integration.d.ts +4 -2
  35. package/dist/nest-integration.js +14 -4
  36. package/dist/runtime/abort.d.ts +1 -0
  37. package/dist/runtime/abort.js +8 -5
  38. package/dist/runtime/activation-admission.d.ts +1 -2
  39. package/dist/runtime/activation-admission.js +2 -6
  40. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  41. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  42. package/dist/runtime/actors/actor-client.d.ts +2 -2
  43. package/dist/runtime/actors/actor-client.js +49 -153
  44. package/dist/runtime/actors/actor-context.d.ts +3 -5
  45. package/dist/runtime/actors/actor-context.js +13 -11
  46. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  47. package/dist/runtime/actors/actor-handoff.js +8 -8
  48. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  49. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  50. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  51. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  52. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  53. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  54. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  55. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  56. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  57. package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
  58. package/dist/runtime/actors/actor-request-deadline.js +6 -0
  59. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  60. package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
  61. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  62. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  63. package/dist/runtime/actors/bound-session-wire.js +2 -7
  64. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  65. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  66. package/dist/runtime/actors/index.d.ts +9 -7
  67. package/dist/runtime/actors/index.js +87 -69
  68. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  69. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  70. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  71. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  72. package/dist/runtime/admission.d.ts +2 -0
  73. package/dist/runtime/admission.js +7 -1
  74. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  75. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  76. package/dist/runtime/backend/contracts/index.d.ts +7 -27
  77. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  78. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  79. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  80. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
  81. package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
  82. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  83. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
  84. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  85. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  86. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  87. package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
  88. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  89. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  90. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  91. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  92. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  93. package/dist/runtime/backend/runtime-values.js +2 -0
  94. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  95. package/dist/runtime/channels/channel-clients.js +73 -59
  96. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  97. package/dist/runtime/channels/channel-envelope.d.ts +1 -1
  98. package/dist/runtime/channels/channel-envelope.js +51 -39
  99. package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
  100. package/dist/runtime/channels/channel-outbound-operations.js +25 -42
  101. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  102. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  103. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  104. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  105. package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
  106. package/dist/runtime/channels/channel-runtime-manager.js +13 -10
  107. package/dist/runtime/channels/channel-socket-options.js +3 -12
  108. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  109. package/dist/runtime/channels/channel-socket-registry.js +240 -177
  110. package/dist/runtime/channels/channel-transports.d.ts +21 -31
  111. package/dist/runtime/channels/channel-transports.js +80 -62
  112. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  113. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  114. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  115. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  116. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  117. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  118. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  119. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  120. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  121. package/dist/runtime/channels/local-spot-route-transport.js +1 -3
  122. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
  123. package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
  124. package/dist/runtime/channels/source-spot-router.d.ts +1 -1
  125. package/dist/runtime/channels/source-spot-router.js +2 -4
  126. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  127. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  128. package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
  129. package/dist/runtime/channels/spot-node-route-transport.js +5 -5
  130. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
  131. package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
  132. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
  133. package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
  134. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  135. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  136. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  137. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  138. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  139. package/dist/runtime/diagnostics/flow-context.js +16 -2
  140. package/dist/runtime/diagnostics/index.d.ts +4 -2
  141. package/dist/runtime/diagnostics/index.js +14 -4
  142. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  143. package/dist/runtime/diagnostics/message-flow.js +10 -19
  144. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  145. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  146. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  147. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  148. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  149. package/dist/runtime/disposal.d.ts +5 -0
  150. package/dist/runtime/disposal.js +22 -0
  151. package/dist/runtime/execution/index.d.ts +12 -9
  152. package/dist/runtime/execution/index.js +58 -14
  153. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  154. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  155. package/dist/runtime/execution/state-lane.d.ts +8 -1
  156. package/dist/runtime/execution/state-lane.js +118 -3
  157. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  158. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  159. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  160. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  161. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  162. package/dist/runtime/foundation/operation-identity.js +9 -5
  163. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  164. package/dist/runtime/foundation/operation-registry.js +34 -44
  165. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  166. package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
  167. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  168. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  169. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  170. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  171. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  172. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  173. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  174. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  175. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  176. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  177. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  178. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  179. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  180. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  181. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  182. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  183. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  184. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  185. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  186. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  187. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  188. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  189. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  190. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  191. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  192. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  193. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  194. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  195. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  196. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  197. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  198. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  199. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  200. package/dist/runtime/framework-errors-internal.js +343 -122
  201. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  202. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  203. package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
  204. package/dist/runtime/host/actor-packet-relay.js +54 -99
  205. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  206. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  207. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  208. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  209. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  210. package/dist/runtime/host/application-job-queue.js +16 -33
  211. package/dist/runtime/host/bound-session-relay.js +1 -1
  212. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  213. package/dist/runtime/host/index.d.ts +14 -13
  214. package/dist/runtime/host/index.js +190 -171
  215. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  216. package/dist/runtime/host/instance-activation-authority.js +17 -45
  217. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  218. package/dist/runtime/host/location-runtime-owner.js +2 -2
  219. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  220. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  221. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  222. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  223. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  224. package/dist/runtime/host/remote-bound-session-relay.js +15 -28
  225. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  226. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  227. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  228. package/dist/runtime/host/runtime-shutdown.js +18 -21
  229. package/dist/runtime/host/service-relocation-control.js +6 -1
  230. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  231. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  232. package/dist/runtime/host/spot-address-transport.d.ts +3 -12
  233. package/dist/runtime/host/spot-address-transport.js +78 -220
  234. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  235. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  236. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  237. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  238. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  239. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  240. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  241. package/dist/runtime/locations/authority-key-codec.js +4 -3
  242. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  243. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  244. package/dist/runtime/locations/creation-operation-id.js +6 -4
  245. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  246. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  247. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  248. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  249. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  250. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  251. package/dist/runtime/locations/key-codec.js +3 -2
  252. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  253. package/dist/runtime/locations/lease-tracker.js +7 -11
  254. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  255. package/dist/runtime/locations/lifecycle.js +2 -31
  256. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  257. package/dist/runtime/locations/location-store-failure.js +7 -0
  258. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  259. package/dist/runtime/locations/location-store-pages.js +13 -0
  260. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  261. package/dist/runtime/locations/location-store-repository.js +309 -336
  262. package/dist/runtime/locations/relocation-blob.js +18 -5
  263. package/dist/runtime/locations/resolvers.d.ts +5 -5
  264. package/dist/runtime/locations/resolvers.js +37 -28
  265. package/dist/runtime/locations/runtime.d.ts +5 -4
  266. package/dist/runtime/locations/runtime.js +123 -92
  267. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  268. package/dist/runtime/locations/spot-location-claims.js +42 -1
  269. package/dist/runtime/messaging/payload-codec.js +26 -20
  270. package/dist/runtime/messaging/request-deadline.d.ts +3 -0
  271. package/dist/runtime/messaging/request-deadline.js +39 -0
  272. package/dist/runtime/messaging/submission-result.d.ts +4 -0
  273. package/dist/runtime/messaging/submission-result.js +56 -1
  274. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  275. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  276. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  277. package/dist/runtime/spots/index.d.ts +14 -20
  278. package/dist/runtime/spots/index.js +302 -176
  279. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  280. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  281. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  282. package/dist/runtime/spots/spot-activation-state.js +2 -2
  283. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  284. package/dist/runtime/spots/spot-activation.js +49 -32
  285. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  286. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  287. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  288. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  289. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  290. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  291. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  292. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  293. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  294. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  295. package/dist/runtime/spots/spot-context.d.ts +2 -2
  296. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  297. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  298. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  299. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  300. package/dist/runtime/spots/spot-manager-public.js +5 -4
  301. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  302. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  303. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  304. package/dist/runtime/spots/spot-outbound.d.ts +7 -8
  305. package/dist/runtime/spots/spot-outbound.js +21 -23
  306. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  307. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  308. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  309. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  310. package/dist/runtime/spots/spot-route-replies.js +3 -1
  311. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  312. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  313. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  314. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  315. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  316. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  317. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  318. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  319. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  320. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  321. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  322. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  323. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  324. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  325. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
  326. package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
  327. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  328. package/dist/runtime/streams/bound-session-service.js +12 -2
  329. package/dist/runtime/streams/index.d.ts +16 -17
  330. package/dist/runtime/streams/index.js +22 -23
  331. package/dist/runtime/streams/managed-stream.d.ts +5 -2
  332. package/dist/runtime/streams/managed-stream.js +20 -13
  333. package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
  334. package/dist/runtime/streams/protocol.d.ts +6 -33
  335. package/dist/runtime/streams/protocol.js +38 -110
  336. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  337. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  338. package/dist/runtime/streams/session-calls.d.ts +6 -8
  339. package/dist/runtime/streams/session-calls.js +6 -22
  340. package/dist/runtime/streams/session-context.d.ts +10 -10
  341. package/dist/runtime/streams/session-context.js +25 -10
  342. package/dist/runtime/streams/session-requests.js +2 -1
  343. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  344. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  345. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  346. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  347. package/dist/runtime/workers/index.d.ts +2 -2
  348. package/dist/runtime/workers/index.js +5 -4
  349. package/package.json +3 -3
  350. package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
  351. package/src/contracts/Channels/Calls.ts +1 -1
  352. package/src/contracts/Common/CoreTypes.ts +7 -0
  353. package/src/contracts/Common/index.ts +1 -1
  354. package/src/contracts/Configuration/Builders.ts +0 -1
  355. package/src/contracts/Configuration/Configs.ts +0 -1
  356. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  357. package/src/contracts/Configuration/Registration.ts +92 -48
  358. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  359. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
  360. package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
  361. package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
  362. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  363. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  364. package/src/contracts/Handlers/JsonContract.ts +14 -4
  365. package/src/contracts/Locations/Authority.ts +7 -3
  366. package/src/contracts/Locations/Options.ts +1 -1
  367. package/src/contracts/Locations/Stores.ts +14 -0
  368. package/src/contracts/Spots/Contracts.ts +2 -2
  369. package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
  370. package/src/contracts/Streams/IZLinkSession.ts +2 -3
  371. package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
  372. package/src/internal.ts +14 -0
  373. package/src/nest-integration.ts +28 -10
  374. package/src/runtime/abort.ts +6 -5
  375. package/src/runtime/activation-admission.ts +2 -8
  376. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  377. package/src/runtime/actors/actor-client.ts +85 -218
  378. package/src/runtime/actors/actor-context.ts +39 -33
  379. package/src/runtime/actors/actor-handoff.ts +24 -22
  380. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  381. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  382. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  383. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  384. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  385. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  386. package/src/runtime/actors/actor-request-deadline.ts +4 -0
  387. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  388. package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
  389. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  390. package/src/runtime/actors/bound-session-wire.ts +2 -8
  391. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  392. package/src/runtime/actors/index.ts +100 -79
  393. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  394. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  395. package/src/runtime/admission.ts +8 -1
  396. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  397. package/src/runtime/backend/contracts/index.ts +14 -37
  398. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  399. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  400. package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
  401. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
  402. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  403. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  404. package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
  405. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  406. package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
  407. package/src/runtime/backend/raw-binding-port.ts +1 -1
  408. package/src/runtime/backend/runtime-values.ts +4 -1
  409. package/src/runtime/channels/channel-clients.ts +139 -102
  410. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  411. package/src/runtime/channels/channel-envelope.ts +74 -57
  412. package/src/runtime/channels/channel-outbound-operations.ts +40 -55
  413. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  414. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  415. package/src/runtime/channels/channel-runtime-manager.ts +12 -30
  416. package/src/runtime/channels/channel-socket-options.ts +8 -15
  417. package/src/runtime/channels/channel-socket-registry.ts +291 -196
  418. package/src/runtime/channels/channel-transports.ts +168 -145
  419. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  420. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  421. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  422. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  423. package/src/runtime/channels/local-spot-route-transport.ts +1 -5
  424. package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
  425. package/src/runtime/channels/source-spot-router.ts +2 -9
  426. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  427. package/src/runtime/channels/spot-node-route-transport.ts +7 -9
  428. package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
  429. package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
  430. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  431. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  432. package/src/runtime/diagnostics/flow-context.ts +16 -2
  433. package/src/runtime/diagnostics/index.ts +27 -17
  434. package/src/runtime/diagnostics/message-flow.ts +15 -25
  435. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  436. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  437. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  438. package/src/runtime/disposal.ts +19 -0
  439. package/src/runtime/execution/index.ts +60 -20
  440. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  441. package/src/runtime/execution/state-lane.ts +142 -4
  442. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  443. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  444. package/src/runtime/foundation/operation-identity.ts +11 -5
  445. package/src/runtime/foundation/operation-registry.ts +33 -50
  446. package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
  447. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  448. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  449. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  450. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  451. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  452. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  453. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  454. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  455. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  456. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  457. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  458. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  459. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  460. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  461. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  462. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  463. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  464. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  465. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  466. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  467. package/src/runtime/framework-errors-internal.ts +380 -134
  468. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  469. package/src/runtime/host/actor-packet-relay.ts +63 -160
  470. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  471. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  472. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  473. package/src/runtime/host/application-job-queue.ts +28 -34
  474. package/src/runtime/host/bound-session-relay.ts +1 -2
  475. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  476. package/src/runtime/host/index.ts +327 -320
  477. package/src/runtime/host/instance-activation-authority.ts +89 -109
  478. package/src/runtime/host/location-runtime-owner.ts +4 -2
  479. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  480. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  481. package/src/runtime/host/remote-bound-session-relay.ts +16 -57
  482. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  483. package/src/runtime/host/runtime-shutdown.ts +17 -21
  484. package/src/runtime/host/service-relocation-control.ts +14 -1
  485. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  486. package/src/runtime/host/spot-address-transport.ts +175 -356
  487. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  488. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  489. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  490. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  491. package/src/runtime/locations/authority-key-codec.ts +7 -3
  492. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  493. package/src/runtime/locations/creation-operation-id.ts +6 -3
  494. package/src/runtime/locations/domain-store-contract.ts +12 -3
  495. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  496. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  497. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  498. package/src/runtime/locations/key-codec.ts +3 -2
  499. package/src/runtime/locations/lease-tracker.ts +8 -14
  500. package/src/runtime/locations/lifecycle.ts +13 -43
  501. package/src/runtime/locations/location-store-failure.ts +4 -0
  502. package/src/runtime/locations/location-store-pages.ts +18 -0
  503. package/src/runtime/locations/location-store-repository.ts +457 -482
  504. package/src/runtime/locations/relocation-blob.ts +17 -6
  505. package/src/runtime/locations/resolvers.ts +75 -49
  506. package/src/runtime/locations/runtime.ts +220 -110
  507. package/src/runtime/locations/spot-location-claims.ts +58 -1
  508. package/src/runtime/messaging/payload-codec.ts +35 -24
  509. package/src/runtime/messaging/request-deadline.ts +58 -0
  510. package/src/runtime/messaging/submission-result.ts +72 -2
  511. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  512. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  513. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  514. package/src/runtime/spots/index.ts +433 -229
  515. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  516. package/src/runtime/spots/spot-activation-state.ts +2 -2
  517. package/src/runtime/spots/spot-activation.ts +67 -37
  518. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  519. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  520. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  521. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  522. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  523. package/src/runtime/spots/spot-context.ts +3 -3
  524. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  525. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  526. package/src/runtime/spots/spot-manager-public.ts +21 -17
  527. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  528. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  529. package/src/runtime/spots/spot-outbound.ts +59 -47
  530. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  531. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  532. package/src/runtime/spots/spot-route-replies.ts +6 -4
  533. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  534. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  535. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  536. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  537. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  538. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  539. package/src/runtime/spots/spot-timer.ts +3 -2
  540. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  541. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  542. package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
  543. package/src/runtime/streams/bound-session-service.ts +22 -2
  544. package/src/runtime/streams/index.ts +78 -68
  545. package/src/runtime/streams/managed-stream.ts +32 -23
  546. package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
  547. package/src/runtime/streams/protocol.ts +34 -88
  548. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  549. package/src/runtime/streams/session-calls.ts +11 -36
  550. package/src/runtime/streams/session-context.ts +60 -25
  551. package/src/runtime/streams/session-requests.ts +2 -1
  552. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  553. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  554. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  555. package/src/runtime/workers/index.ts +13 -12
  556. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  557. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  558. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  559. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  560. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  561. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,11 +1,10 @@
1
- import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
2
1
  import type {
3
2
  ActorRef,
4
3
  RoutingId,
5
4
  Type,
6
- ZLinkMessage,
7
5
  ZLinkActor,
8
6
  ZLinkBoundSession,
7
+ ZLinkMessage,
9
8
  ZLinkSessionActor,
10
9
  ZLinkSessionActors,
11
10
  ZLinkSessionClient,
@@ -17,18 +16,27 @@ import type {
17
16
  ZLinkSessionSendCall,
18
17
  ZLinkStream
19
18
  } from '../../contracts';
20
- import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
21
- import type { ZLinkSubmitResult } from '../messaging/submission-result';
22
- import { requireOneWayCompletion } from '../messaging/submission-result';
23
19
  import type { Message } from '../../contracts/Common/Message';
20
+ import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
24
21
  import { readZLinkDecoratorMetadata } from '../../contracts/Handlers/Attributes';
25
22
  import { throwIfAborted } from '../abort';
23
+ import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
26
24
  import { ZLinkConfigurationException } from '../configuration';
25
+ import {
26
+ guardStateLaneCompletion,
27
+ isStructuralGuardEnabled,
28
+ trackDiagnosticCompletion
29
+ } from '../execution/state-lane';
30
+ import type { ServiceActorRef } from '../foundation/service-stateful-registry';
31
+ import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
32
+ import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
33
+ import { type ZLinkSubmitResult, requireOneWayCompletion } from '../messaging/submission-result';
34
+
27
35
  import {
28
36
  messageToBytes,
29
- type ZLinkStreamFrameHeader,
30
37
  ZLinkStreamHeaderFlags,
31
38
  ZLinkStreamMessageKind,
39
+ type ZLinkStreamFrameHeader,
32
40
  type ZLinkStreamReplyMessageKind
33
41
  } from './protocol';
34
42
  import {
@@ -36,15 +44,12 @@ import {
36
44
  DefaultZLinkSessionReplyCall,
37
45
  DefaultZLinkSessionSendCall
38
46
  } from './session-calls';
39
- import { ZLinkSessionRequestTracker, type ZLinkPendingSessionRequest } from './session-requests';
40
47
  import { ZLinkSessionLocalActorBindings } from './session-local-actors';
41
- import type { ServiceActorRef } from '../foundation/service-stateful-registry';
42
- import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
43
- import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
48
+ import { ZLinkSessionRequestTracker, type ZLinkPendingSessionRequest } from './session-requests';
44
49
 
45
50
  export interface ZLinkSessionContextStream extends ZLinkStream {
46
51
  writeRaw(payload: Message, flags?: number): boolean;
47
- submitRaw(payload: Message, signal?: AbortSignal, timeoutMs?: number): Promise<ZLinkSubmitResult>;
52
+ submitRaw(payload: Message): Promise<ZLinkSubmitResult>;
48
53
  enqueueActorBound?(actorSlot: number, actorId: string): Promise<void>;
49
54
  enqueueActorUnbound?(actorSlot: number): Promise<void>;
50
55
  }
@@ -83,7 +88,6 @@ interface ZLinkSessionContextRuntime {
83
88
  relay(
84
89
  actor: DefaultZLinkSessionActor,
85
90
  payload: ZLinkMessage,
86
- signal?: AbortSignal,
87
91
  dispatchHeader?: ZLinkStreamFrameHeader
88
92
  ): Promise<ZLinkSubmitResult>;
89
93
  notifyDisconnected(actor: DefaultZLinkSessionActor, signal?: AbortSignal): Promise<void>;
@@ -533,30 +537,22 @@ export class DefaultZLinkSessionActor implements ZLinkSessionActor {
533
537
  this.currentRef = ref;
534
538
  }
535
539
 
536
- async relay(payload: ZLinkMessage, signal?: AbortSignal): Promise<void>;
537
- async relay(
538
- dispatch: ZLinkSessionDispatchContext,
539
- payload: ZLinkMessage,
540
- signal?: AbortSignal
541
- ): Promise<void>;
540
+ async relay(payload: ZLinkMessage): Promise<void>;
541
+ async relay(dispatch: ZLinkSessionDispatchContext, payload: ZLinkMessage): Promise<void>;
542
542
  async relay(
543
543
  dispatchOrPayload: ZLinkSessionDispatchContext | ZLinkMessage,
544
- payloadOrSignal?: ZLinkMessage | AbortSignal,
545
- signal?: AbortSignal
544
+ selectedPayload?: ZLinkMessage
546
545
  ): Promise<void> {
547
546
  const dispatch = isSessionDispatchContext(dispatchOrPayload) ? dispatchOrPayload : undefined;
548
547
  let payload: ZLinkMessage;
549
- let relaySignal: AbortSignal | undefined;
550
548
  let header: ZLinkStreamFrameHeader | undefined;
551
549
  if (dispatch === undefined) {
552
550
  payload = dispatchOrPayload as ZLinkMessage;
553
- relaySignal = payloadOrSignal as AbortSignal | undefined;
554
551
  } else {
555
- payload = payloadOrSignal as ZLinkMessage;
556
- relaySignal = signal;
552
+ payload = selectedPayload as ZLinkMessage;
557
553
  header = sessionDispatchHeader(dispatch);
558
554
  }
559
- const result = await this.runtime.relay(this, payload, relaySignal, header);
555
+ const result = await this.runtime.relay(this, payload, header);
560
556
  requireOneWayCompletion(
561
557
  result,
562
558
  'Session Actor relay',
@@ -652,3 +648,42 @@ function sameRetiredSession(
652
648
  left.retiredBindingGeneration === right.retiredBindingGeneration
653
649
  );
654
650
  }
651
+
652
+ if (isStructuralGuardEnabled()) {
653
+ const controlsGetter = Object.getOwnPropertyDescriptor(
654
+ DefaultZLinkSessionContext.prototype,
655
+ 'actorSlotControls'
656
+ )?.get;
657
+ if (controlsGetter !== undefined) {
658
+ Object.defineProperty(DefaultZLinkSessionContext.prototype, 'actorSlotControls', {
659
+ configurable: true,
660
+ get(this: DefaultZLinkSessionContext) {
661
+ const controls = controlsGetter.call(this) as
662
+ | {
663
+ enqueueBound(actorSlot: number, actorId: string): Promise<void>;
664
+ enqueueUnbound(actorSlot: number): Promise<void>;
665
+ }
666
+ | undefined;
667
+ if (controls === undefined) return undefined;
668
+ return {
669
+ enqueueBound: (actorSlot: number, actorId: string) =>
670
+ guardStateLaneCompletion(
671
+ trackDiagnosticCompletion(
672
+ controls.enqueueBound(actorSlot, actorId),
673
+ `binding transport bound ${actorId}`
674
+ ),
675
+ 'binding transport completion'
676
+ ),
677
+ enqueueUnbound: (actorSlot: number) =>
678
+ guardStateLaneCompletion(
679
+ trackDiagnosticCompletion(
680
+ controls.enqueueUnbound(actorSlot),
681
+ `binding transport unbound ${actorSlot}`
682
+ ),
683
+ 'binding transport completion'
684
+ )
685
+ };
686
+ }
687
+ });
688
+ }
689
+ }
@@ -1,3 +1,4 @@
1
+ import { UINT64_MAX } from '@zlink-systems/stream-wire';
1
2
  import type { Message } from '../../contracts/Common/Message';
2
3
  import { copyMessage } from './stream-message-utils';
3
4
 
@@ -102,7 +103,7 @@ export class ZLinkSessionRequestTracker {
102
103
 
103
104
  private next(): bigint {
104
105
  do {
105
- this.nextRequestSeq = (this.nextRequestSeq + 1n) & 0xffffffffffffffffn;
106
+ this.nextRequestSeq = (this.nextRequestSeq + 1n) & UINT64_MAX;
106
107
  } while (this.nextRequestSeq === 0n);
107
108
  return this.nextRequestSeq;
108
109
  }
@@ -3,6 +3,7 @@ import type { ZLinkBackendActorSessionNode } from '../backend';
3
3
  import type { ZLinkSubmitResult } from '../messaging/submission-result';
4
4
  import type { DefaultZLinkSessionActor } from './session-context';
5
5
  import type { ZLinkBoundSessionResponseTarget } from './bound-session-response-target';
6
+ import type { ServiceStreamSessionBinding } from '../foundation/service-runtime-contracts';
6
7
 
7
8
  export interface ZLinkStreamActorLookupPort {
8
9
  find(actorId: string): Promise<DefaultZLinkSessionActor | undefined>;
@@ -74,8 +75,28 @@ export interface ZLinkBoundSessionResponsePort {
74
75
  ): Promise<boolean>;
75
76
  }
76
77
 
78
+ /**
79
+ * Session–Actor binding §5: the Session owner's registry snapshot travels with
80
+ * the bind confirmation so a same-node Actor owner installs the same identity a
81
+ * remote command 38 would carry.
82
+ */
83
+ export interface ZLinkSessionBindingConfirmationOptions {
84
+ readonly waitForAcknowledgement?: boolean;
85
+ readonly binding?: ServiceStreamSessionBinding;
86
+ }
87
+
88
+ /** The exact Session binding identity a relocation validated (§8.1). */
89
+ export interface ZLinkSessionBindingIdentity {
90
+ readonly sessionRid: string;
91
+ readonly bindingGeneration: bigint;
92
+ }
93
+
77
94
  export interface ZLinkRemoteBoundSessionPort extends ZLinkStreamActorLifecyclePort {
78
- disconnectBoundSession(actorId: string, signal?: AbortSignal): Promise<void>;
95
+ closeSessionBinding(
96
+ actorId: string,
97
+ expected: ZLinkSessionBindingIdentity,
98
+ signal?: AbortSignal
99
+ ): Promise<void>;
79
100
  sendLocalBoundSession(
80
101
  actorId: string,
81
102
  message: unknown,
@@ -1,4 +1,5 @@
1
1
  import type { ZLinkStreamCompressionCodec, ZLinkStreamCompressionOptions } from '../../contracts';
2
+ import { defaultMaxDecompressedPayloadSize } from '@zlink-systems/stream-wire';
2
3
  import type { Message } from '../../contracts/Common/Message';
3
4
  import { ZLinkBufferMessage as ZLinkBindingMessage } from '../backend/runtime-message';
4
5
  import { currentOrCreateFlow } from '../diagnostics/flow-context';
@@ -18,8 +19,6 @@ import {
18
19
  type ZLinkStreamReplyMessageKind
19
20
  } from './protocol';
20
21
 
21
- const DEFAULT_MAX_DECOMPRESSED_STREAM_PAYLOAD_SIZE = 64 * 1024;
22
-
23
22
  export interface ZLinkStreamFramePayloadCodec {
24
23
  encode(
25
24
  payload: unknown,
@@ -245,7 +244,7 @@ function compressStreamPayload(
245
244
  export function decompressStreamPayload(
246
245
  payload: Uint8Array,
247
246
  codec: ZLinkStreamCompressionCodec | undefined,
248
- maxDecompressedSize = DEFAULT_MAX_DECOMPRESSED_STREAM_PAYLOAD_SIZE
247
+ maxDecompressedSize = defaultMaxDecompressedPayloadSize
249
248
  ): Uint8Array {
250
249
  if (codec === undefined) {
251
250
  throw new Error('Compression codec is not configured.');
@@ -1,61 +1,66 @@
1
- import {
2
- ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException
4
- } from '../framework-errors-internal';
5
- import type { ZLinkMessageSerializer, RoutingId, ZLinkSession } from '../../contracts';
1
+ import type { RoutingId, ZLinkMessageSerializer, ZLinkSession } from '../../contracts';
2
+ import type { Message } from '../../contracts/Common/Message';
6
3
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
7
- import { ZLinkSocketNativeEventType } from '../diagnostics/internal-event-contracts';
4
+ import { DEFAULT_SESSION_REPLACEMENT_CALLBACK_TIMEOUT_MS } from '../../contracts/Configuration/Registration';
8
5
  import {
9
- ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome,
10
6
  ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
11
7
  ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
12
8
  ZLinkDispatchErrorSurface,
13
- ZLinkDispatchMessageKind
9
+ ZLinkDispatchMessageKind,
10
+ ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome
14
11
  } from '../../contracts/Dispatch/ZLinkDispatchOptions';
15
- import type { Message } from '../../contracts/Common/Message';
16
12
  import { throwIfAborted } from '../abort';
17
- import { ZLinkDispatchErrorReporter, ZLinkRouteDisconnectedError } from '../channels';
18
- import { boundSessionErrorPayload } from './bound-session-response-target';
19
- import { flowIfEnabled } from '../diagnostics';
20
- import type { ZLinkRuntimeMetrics } from '../diagnostics';
21
- import { wrapFrameworkPayloadMessage } from '../messaging/payload-codec';
13
+ import { type ZLinkApplicationWorkClaim, shouldCompactBackingArray } from '../admission';
14
+
15
+ import {
16
+ releaseApplicationJobPermitBeforeHandler,
17
+ runWithApplicationJobPermit
18
+ } from '../application-jobs/application-job-queue-scope';
19
+ import type {
20
+ ApplicationJobPermitPort,
21
+ ApplicationJobQueuePort
22
+ } from '../application-jobs/contracts';
22
23
  import type {
24
+ ZLinkBackendReadablePoller,
23
25
  ZLinkBackendSocketMonitor,
24
26
  ZLinkBackendSocketMonitorEvent,
25
- ZLinkBackendReadablePoller,
26
27
  ZLinkBackendStreamPacket,
27
28
  ZLinkBackendStreamSocket
28
29
  } from '../backend/contracts';
29
30
  import type { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
31
+ import { ZLinkDispatchErrorReporter, ZLinkRouteDisconnectedError } from '../channels';
32
+ import { type ZLinkRuntimeMetrics, flowIfEnabled } from '../diagnostics';
33
+
34
+ import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
35
+ import { ZLinkSocketNativeEventType } from '../diagnostics/internal-event-contracts';
36
+ import { METRIC_NAMES } from '../diagnostics/runtime-metrics';
30
37
  import type { StreamSessionService } from '../foundation/service-runtime-contracts';
38
+ import type { ServiceActorRef } from '../foundation/service-stateful-registry';
39
+ import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
40
+ import {
41
+ createInternalFrameworkException,
42
+ ZLinkFrameworkInternalErrorKind
43
+ } from '../framework-errors-internal';
44
+ import { wrapFrameworkPayloadMessage } from '../messaging/payload-codec';
45
+ import { boundSessionErrorPayload } from './bound-session-response-target';
46
+ import {
47
+ streamSessionIdFromRoutingId,
48
+ ZLinkManagedStream,
49
+ type ZLinkNativeSessionRoute
50
+ } from './managed-stream';
31
51
  import {
32
52
  decodeStreamHeader,
33
53
  messageToBytes,
34
54
  streamCodecContentType,
35
- type ZLinkStreamFrameHeader,
36
55
  ZLINK_STREAM_HEARTBEAT_PING,
37
56
  ZLINK_STREAM_HEARTBEAT_PONG,
38
57
  ZLinkStreamCloseReasonCode,
39
- ZLinkStreamMessageKind
58
+ ZLinkStreamMessageKind,
59
+ type ZLinkStreamFrameHeader
40
60
  } from './protocol';
41
- import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
42
- import {
43
- streamSessionIdFromRoutingId,
44
- ZLinkManagedStream,
45
- type ZLinkNativeSessionRoute
46
- } from './managed-stream';
47
61
  import { createSessionDispatchContext, DefaultZLinkSessionContext } from './session-context';
48
62
  import { ZLinkSessionSerialExecutor } from './session-serial-executor';
49
- import type { ZLinkApplicationWorkClaim } from '../admission';
50
63
  import { ownedMessage } from './stream-message-utils';
51
- import type { ServiceActorRef } from '../foundation/service-stateful-registry';
52
- import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
53
- import type {
54
- ApplicationJobPermitPort,
55
- ApplicationJobQueuePort
56
- } from '../application-jobs/contracts';
57
- import { runWithApplicationJobPermit } from '../application-jobs/application-job-queue-scope';
58
- import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
59
64
 
60
65
  const ZLINK_SEND_DONT_WAIT = 1;
61
66
  const ZLINK_RECV_DONT_WAIT = 1;
@@ -63,7 +68,6 @@ const ZLINK_STREAM_HEARTBEAT_INTERVAL_MS = 1_000;
63
68
  const ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS = 5_000;
64
69
  const ZLINK_STREAM_APPLICATION_IDLE_TIMEOUT_MS = 30_000;
65
70
  const ZLINK_STREAM_RECEIVE_FRAME_BATCH_LIMIT = 64;
66
- const ZLINK_STREAM_ACTOR_BINDING_REPLACEMENT_CALLBACK_TIMEOUT_MS = 30_000;
67
71
  const ZLINK_STREAM_ACTOR_BINDING_REPLACEMENT_CLOSE_DELAY_MS = 100;
68
72
  const ZLINK_STREAM_MONITOR_IDLE_MIN_DELAY_MS = 1;
69
73
  const ZLINK_STREAM_MONITOR_IDLE_MAX_DELAY_MS = 20;
@@ -162,7 +166,7 @@ export class ZLinkStreamSessionRuntime {
162
166
  private metricsClosed = false;
163
167
  private readonly livenessClock: ZLinkStreamLivenessClock;
164
168
  private lastApplicationActivityAt = 0;
165
- private awaitingPongSince: number | undefined;
169
+ private lastInboundFrameAt = 0;
166
170
  private livenessTimer: unknown;
167
171
 
168
172
  constructor(
@@ -243,6 +247,7 @@ export class ZLinkStreamSessionRuntime {
243
247
  terminalOwner?: ZLinkRetainedStreamOwner,
244
248
  applicationJobPermit?: ApplicationJobPermitPort
245
249
  ): void {
250
+ this.lastInboundFrameAt = Math.max(this.lastInboundFrameAt, this.livenessClock.now());
246
251
  let terminalReleased = false;
247
252
  const releaseTerminal = (): void => {
248
253
  if (terminalReleased) return;
@@ -389,7 +394,7 @@ export class ZLinkStreamSessionRuntime {
389
394
  }
390
395
  forcedClose = true;
391
396
  void this.close().catch((error) => this.options.onError?.(error));
392
- }, this.options.replacementCallbackTimeoutMs ?? ZLINK_STREAM_ACTOR_BINDING_REPLACEMENT_CALLBACK_TIMEOUT_MS);
397
+ }, this.options.replacementCallbackTimeoutMs ?? DEFAULT_SESSION_REPLACEMENT_CALLBACK_TIMEOUT_MS);
393
398
 
394
399
  const callback = session.onActorBindingReplaced;
395
400
  if (callback === undefined) {
@@ -453,10 +458,12 @@ export class ZLinkStreamSessionRuntime {
453
458
  return;
454
459
  }
455
460
  this.connected = true;
456
- this.lastApplicationActivityAt = this.livenessClock.now();
461
+ const connectedAt = this.livenessClock.now();
462
+ this.lastApplicationActivityAt = connectedAt;
463
+ this.lastInboundFrameAt = Math.max(this.lastInboundFrameAt, connectedAt);
457
464
  this.scheduleLivenessCheck();
458
- this.options.metrics?.change('zlink.stream.connections.active', 1, { transport: 'tcp' });
459
- this.options.metrics?.count('zlink.stream.connections.opened', 1, { transport: 'tcp' });
465
+ this.options.metrics?.change(METRIC_NAMES.StreamConnectionsActive, 1, { transport: 'tcp' });
466
+ this.options.metrics?.count(METRIC_NAMES.StreamConnectionsOpened, 1, { transport: 'tcp' });
460
467
  const session = await this.requireSession();
461
468
  await session.onConnected?.(this.context);
462
469
  }
@@ -650,7 +657,6 @@ export class ZLinkStreamSessionRuntime {
650
657
  return;
651
658
  }
652
659
  if (header.name === ZLINK_STREAM_HEARTBEAT_PONG) {
653
- this.awaitingPongSince = undefined;
654
660
  return;
655
661
  }
656
662
  if (header.name === ZLINK_STREAM_HEARTBEAT_PING) {
@@ -691,10 +697,7 @@ export class ZLinkStreamSessionRuntime {
691
697
  );
692
698
  return;
693
699
  }
694
- if (
695
- this.awaitingPongSince !== undefined &&
696
- now - this.awaitingPongSince >= ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS
697
- ) {
700
+ if (now - this.lastInboundFrameAt >= ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS) {
698
701
  await this.closeForLiveness(
699
702
  ZLinkStreamCloseReasonCode.HeartbeatTimeout,
700
703
  'heartbeat_timeout',
@@ -703,7 +706,6 @@ export class ZLinkStreamSessionRuntime {
703
706
  return;
704
707
  }
705
708
  await this.stream.writeControl(ZLINK_STREAM_HEARTBEAT_PING);
706
- this.awaitingPongSince ??= now;
707
709
  this.scheduleLivenessCheck();
708
710
  }
709
711
 
@@ -829,8 +831,8 @@ export class ZLinkStreamSessionRuntime {
829
831
  private async cleanup(): Promise<void> {
830
832
  if (this.connected && !this.metricsClosed) {
831
833
  this.metricsClosed = true;
832
- this.options.metrics?.change('zlink.stream.connections.active', -1, { transport: 'tcp' });
833
- this.options.metrics?.count('zlink.stream.connections.closed', 1, {
834
+ this.options.metrics?.change(METRIC_NAMES.StreamConnectionsActive, -1, { transport: 'tcp' });
835
+ this.options.metrics?.count(METRIC_NAMES.StreamConnectionsClosed, 1, {
834
836
  transport: 'tcp',
835
837
  close_reason: normalizeStreamCloseReason(this.closeReason)
836
838
  });
@@ -956,7 +958,6 @@ export class ZLinkStreamSessionNodeRuntime {
956
958
  private readonly unaddressedMonitorSessions: Array<string | undefined> = [];
957
959
  private unaddressedMonitorSessionHead = 0;
958
960
  private unaddressedMonitorSessionCount = 0;
959
- private readonly disconnectedEndpoints = new Set<string>();
960
961
  private pendingEndpointlessDisconnect:
961
962
  | {
962
963
  readonly session: ZLinkStreamSessionRuntime;
@@ -1238,18 +1239,12 @@ export class ZLinkStreamSessionNodeRuntime {
1238
1239
  }
1239
1240
  switch (event.nativeEvent) {
1240
1241
  case ZLinkSocketNativeEventType.ConnectionReady:
1242
+ if (!event.readyEdge) return;
1241
1243
  this.activityVersion += 1;
1242
- {
1243
- const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
1244
- if (this.disconnectedEndpoints.delete(endpointKey)) {
1245
- return;
1246
- }
1247
- }
1248
1244
  if (event.routingId === undefined) {
1249
1245
  const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
1250
1246
  const unaddressed = this.firstUnaddressedSession();
1251
1247
  if (unaddressed !== undefined) {
1252
- this.disconnectedEndpoints.delete(endpointKey);
1253
1248
  unaddressed.enqueueConnected(event.localAddr, event.remoteAddr);
1254
1249
  this.enqueueUnaddressedMonitorSession(unaddressed.stream.sessionId);
1255
1250
  return;
@@ -1272,7 +1267,6 @@ export class ZLinkStreamSessionNodeRuntime {
1272
1267
  case ZLinkSocketNativeEventType.Disconnected:
1273
1268
  {
1274
1269
  const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
1275
- this.disconnectedEndpoints.add(endpointKey);
1276
1270
  this.removePendingConnectionMetadata(endpointKey);
1277
1271
  const session = this.resolveMonitorSession(event);
1278
1272
  const error = new Error(`Stream disconnected: ${event.nativeEvent}/${event.value}`);
@@ -1350,8 +1344,10 @@ export class ZLinkStreamSessionNodeRuntime {
1350
1344
  this.pendingConnectionMetadata.length = 0;
1351
1345
  this.pendingConnectionMetadataHead = 0;
1352
1346
  } else if (
1353
- this.pendingConnectionMetadataHead >= 1024 &&
1354
- this.pendingConnectionMetadataHead * 2 >= this.pendingConnectionMetadata.length
1347
+ shouldCompactBackingArray(
1348
+ this.pendingConnectionMetadataHead,
1349
+ this.pendingConnectionMetadata.length
1350
+ )
1355
1351
  ) {
1356
1352
  this.pendingConnectionMetadata.splice(0, this.pendingConnectionMetadataHead);
1357
1353
  this.pendingConnectionMetadataHead = 0;
@@ -1379,8 +1375,10 @@ export class ZLinkStreamSessionNodeRuntime {
1379
1375
  this.unaddressedMonitorSessions.length = 0;
1380
1376
  this.unaddressedMonitorSessionHead = 0;
1381
1377
  } else if (
1382
- this.unaddressedMonitorSessionHead >= 1024 &&
1383
- this.unaddressedMonitorSessionHead * 2 >= this.unaddressedMonitorSessions.length
1378
+ shouldCompactBackingArray(
1379
+ this.unaddressedMonitorSessionHead,
1380
+ this.unaddressedMonitorSessions.length
1381
+ )
1384
1382
  ) {
1385
1383
  this.unaddressedMonitorSessions.splice(0, this.unaddressedMonitorSessionHead);
1386
1384
  this.unaddressedMonitorSessionHead = 0;
@@ -1,23 +1,24 @@
1
- import {
2
- ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException
4
- } from '../framework-errors-internal';
5
1
  import { Worker } from 'node:worker_threads';
6
- import type { ZLinkWorkerCall } from '../../contracts';
7
- import { ZLinkFrameworkException } from '../../contracts';
8
- import type { ZLinkWorkerOptions } from '../configuration';
9
- import { ZLinkConfigurationException } from '../configuration';
2
+ import { type ZLinkWorkerCall, ZLinkFrameworkException } from '../../contracts';
3
+
10
4
  import {
11
- defaultWorkerMaxThreads,
12
5
  DEFAULT_WORKER_IDLE_TIMEOUT_MS,
13
- DEFAULT_WORKER_MIN_THREADS
6
+ DEFAULT_WORKER_MIN_THREADS,
7
+ defaultWorkerMaxThreads
14
8
  } from '../../contracts/Configuration/InternalDefaults';
15
9
  import { createAbortError } from '../abort';
10
+ import { shouldCompactBackingArray } from '../admission';
11
+ import { type ZLinkWorkerOptions, ZLinkConfigurationException } from '../configuration';
12
+
16
13
  import {
17
14
  captureZLinkSpotSerialTurn,
18
15
  requireZLinkYieldTurn,
19
16
  type ZLinkSpotSerialTurn
20
17
  } from '../execution';
18
+ import {
19
+ ZLinkFrameworkInternalErrorKind,
20
+ createInternalFrameworkException
21
+ } from '../framework-errors-internal';
21
22
 
22
23
  export type ZLinkCpuWorkerWork<T> = (signal: AbortSignal) => T;
23
24
  export type ZLinkIoWorkerWork<T> = (signal: AbortSignal) => Promise<T>;
@@ -332,7 +333,7 @@ class ZLinkCpuWorkerPool {
332
333
  if (this.queueCount === 0) {
333
334
  this.queue.length = 0;
334
335
  this.queueHead = 0;
335
- } else if (this.queueHead >= 1024 && this.queueHead * 2 >= this.queue.length) {
336
+ } else if (shouldCompactBackingArray(this.queueHead, this.queue.length)) {
336
337
  this.queue.splice(0, this.queueHead);
337
338
  this.queueHead = 0;
338
339
  }
@@ -351,7 +352,7 @@ class ZLinkCpuWorkerPool {
351
352
  while (this.queueHead < this.queue.length && this.queue[this.queueHead] === undefined) {
352
353
  this.queueHead += 1;
353
354
  }
354
- if (this.queueHead >= 1024 && this.queueHead * 2 >= this.queue.length) {
355
+ if (shouldCompactBackingArray(this.queueHead, this.queue.length)) {
355
356
  this.queue.splice(0, this.queueHead);
356
357
  this.queueHead = 0;
357
358
  }
@@ -1,19 +0,0 @@
1
- import type { RoutingId } from '../../contracts';
2
- import type { ZLinkLocationLifecycle } from '../locations';
3
- export interface ZLinkPostCommitActorLocationOptions {
4
- readonly lifecycle: ZLinkLocationLifecycle;
5
- readonly reportError?: (error: unknown) => void;
6
- readonly signal?: AbortSignal;
7
- }
8
- export declare class ZLinkPostCommitActorLocation {
9
- private readonly options;
10
- private readonly lane;
11
- private readonly queues;
12
- private readonly tasks;
13
- constructor(options: ZLinkPostCommitActorLocationOptions);
14
- joinedEventually(actorType: string, actorId: string, meshName: string, spotId: RoutingId, spotGeneration: bigint, membershipEpoch: bigint, ownerNodeGeneration: bigint): void;
15
- leftEventually(actorType: string, actorId: string, entrySpotId: RoutingId, entrySpotGeneration: bigint, membershipEpoch: bigint, ownerNodeGeneration: bigint): void;
16
- private enqueue;
17
- private run;
18
- private completeCore;
19
- }
@@ -1,72 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZLinkPostCommitActorLocation = void 0;
4
- const state_lane_1 = require("../execution/state-lane");
5
- const actor_retry_delay_1 = require("./actor-retry-delay");
6
- class ZLinkPostCommitActorLocation {
7
- options;
8
- lane = new state_lane_1.ZLinkStateLane();
9
- queues = new Map();
10
- tasks = new Map();
11
- constructor(options) {
12
- this.options = options;
13
- }
14
- joinedEventually(actorType, actorId, meshName, spotId, spotGeneration, membershipEpoch, ownerNodeGeneration) {
15
- this.enqueue(actorId, () => this.options.lifecycle.notifyActorJoinedSpot(actorType, actorId, meshName, spotId, spotGeneration, membershipEpoch, ownerNodeGeneration));
16
- }
17
- leftEventually(actorType, actorId, entrySpotId, entrySpotGeneration, membershipEpoch, ownerNodeGeneration) {
18
- this.enqueue(actorId, () => this.options.lifecycle.notifyActorLeftSpot(actorType, actorId, entrySpotId, entrySpotGeneration, membershipEpoch, ownerNodeGeneration));
19
- }
20
- enqueue(actorId, operation) {
21
- const queue = this.queues.get(actorId) ?? { operations: [], head: 0, count: 0 };
22
- queue.operations.push(operation);
23
- queue.count += 1;
24
- this.queues.set(actorId, queue);
25
- if (this.tasks.has(actorId)) {
26
- return;
27
- }
28
- let task;
29
- task = this.run(actorId).finally(async () => await this.lane.run(() => {
30
- if (this.tasks.get(actorId) === task) {
31
- this.tasks.delete(actorId);
32
- }
33
- }));
34
- this.tasks.set(actorId, task);
35
- }
36
- async run(actorId) {
37
- const retryDelay = new actor_retry_delay_1.ZLinkActorRetryDelay();
38
- while (this.options.signal?.aborted !== true) {
39
- const queue = this.queues.get(actorId);
40
- const operation = queue?.operations[queue.head];
41
- if (queue === undefined || operation === undefined) {
42
- this.queues.delete(actorId);
43
- return;
44
- }
45
- try {
46
- await operation();
47
- await this.lane.run(() => this.completeCore(queue));
48
- retryDelay.reset();
49
- }
50
- catch (error) {
51
- this.options.reportError?.(error);
52
- if (!(await retryDelay.wait(this.options.signal))) {
53
- return;
54
- }
55
- }
56
- }
57
- }
58
- completeCore(queue) {
59
- queue.operations[queue.head] = undefined;
60
- queue.head += 1;
61
- queue.count -= 1;
62
- if (queue.count === 0) {
63
- queue.operations.length = 0;
64
- queue.head = 0;
65
- }
66
- else if (queue.head >= 1024 && queue.head * 2 >= queue.operations.length) {
67
- queue.operations.splice(0, queue.head);
68
- queue.head = 0;
69
- }
70
- }
71
- }
72
- exports.ZLinkPostCommitActorLocation = ZLinkPostCommitActorLocation;
@@ -1,26 +0,0 @@
1
- import type { ZLinkActor, ZLinkMessage, ZLinkMessageSerializer, ZLinkSpotActorJoinResult } from '../../contracts';
2
- import type { ZLinkBackendActorJoinRequest, ZLinkBackendSpot } from '../backend/contracts';
3
- import type { ZLinkDispatchErrorReporter } from '../channels';
4
- import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
5
- interface ZLinkNativeActorJoinAdmissionTarget {
6
- onActorJoin?(actorId: string, request: ZLinkMessage): Promise<ZLinkSpotActorJoinResult>;
7
- onJoinedActor?(actor: ZLinkActor): Promise<void>;
8
- }
9
- interface ZLinkSpotNativeActorJoinAdmissionOptions {
10
- readonly nativeSpot: ZLinkBackendSpot;
11
- readonly serial: ZLinkSpotSerialTurnExecutor;
12
- readonly resolveActor: (actorId: string) => ZLinkActor | undefined;
13
- readonly getTarget: () => ZLinkNativeActorJoinAdmissionTarget;
14
- readonly defaultAccept: boolean;
15
- readonly commitAcceptedActor?: (actor: ZLinkActor) => Promise<void>;
16
- readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
17
- readonly dispatchErrors?: ZLinkDispatchErrorReporter;
18
- }
19
- export declare class ZLinkSpotNativeActorJoinAdmission {
20
- private readonly options;
21
- constructor(options: ZLinkSpotNativeActorJoinAdmissionOptions);
22
- admit(request: ZLinkBackendActorJoinRequest, rejectClosing?: boolean): Promise<void>;
23
- private decodeNativeActorJoinRequest;
24
- private reportHandlerException;
25
- }
26
- export {};