@zlink-systems/framework 0.25.0 → 0.27.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 (557) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
  3. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  4. package/dist/contracts/Common/CoreTypes.js +7 -0
  5. package/dist/contracts/Common/index.d.ts +1 -1
  6. package/dist/contracts/Common/index.js +0 -1
  7. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  8. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  9. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  10. package/dist/contracts/Configuration/Registration.js +58 -36
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  14. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  15. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  16. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  17. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  18. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  19. package/dist/contracts/Handlers/JsonContract.js +10 -4
  20. package/dist/contracts/Locations/Authority.d.ts +1 -1
  21. package/dist/contracts/Locations/Authority.js +3 -2
  22. package/dist/contracts/Locations/Options.js +1 -1
  23. package/dist/contracts/Locations/Stores.d.ts +12 -0
  24. package/dist/contracts/Locations/Stores.js +9 -0
  25. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
  26. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  27. package/dist/internal.d.ts +5 -0
  28. package/dist/internal.js +16 -1
  29. package/dist/nest-integration.d.ts +4 -2
  30. package/dist/nest-integration.js +14 -4
  31. package/dist/runtime/abort.d.ts +1 -0
  32. package/dist/runtime/abort.js +8 -5
  33. package/dist/runtime/activation-admission.d.ts +28 -0
  34. package/dist/runtime/activation-admission.js +57 -0
  35. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  36. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  37. package/dist/runtime/actors/actor-client.d.ts +2 -2
  38. package/dist/runtime/actors/actor-client.js +42 -143
  39. package/dist/runtime/actors/actor-context.d.ts +3 -5
  40. package/dist/runtime/actors/actor-context.js +19 -17
  41. package/dist/runtime/actors/actor-handoff.d.ts +13 -7
  42. package/dist/runtime/actors/actor-handoff.js +36 -25
  43. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  44. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  45. package/dist/runtime/actors/actor-local-native-join.js +85 -123
  46. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  47. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  48. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  49. package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
  50. package/dist/runtime/actors/actor-remote-joiner.js +11 -17
  51. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  52. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  53. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  54. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  55. package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
  56. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  57. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  58. package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
  59. package/dist/runtime/actors/bound-session-wire.js +2 -7
  60. package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
  61. package/dist/runtime/actors/deferred-join-completion.js +21 -0
  62. package/dist/runtime/actors/index.d.ts +10 -8
  63. package/dist/runtime/actors/index.js +101 -73
  64. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  65. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  66. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  67. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  68. package/dist/runtime/admission.d.ts +7 -1
  69. package/dist/runtime/admission.js +11 -1
  70. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  71. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  72. package/dist/runtime/backend/contracts/index.d.ts +8 -33
  73. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
  74. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  75. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  76. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
  77. package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
  78. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
  79. package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
  80. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  81. package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
  82. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  83. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
  84. package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
  85. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
  86. package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
  87. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  88. package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
  89. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  90. package/dist/runtime/backend/runtime-values.js +2 -0
  91. package/dist/runtime/channels/channel-clients.d.ts +20 -9
  92. package/dist/runtime/channels/channel-clients.js +68 -60
  93. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  94. package/dist/runtime/channels/channel-envelope.js +47 -29
  95. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  96. package/dist/runtime/channels/channel-outbound-operations.js +9 -18
  97. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  98. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  99. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  100. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  101. package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
  102. package/dist/runtime/channels/channel-runtime-manager.js +4 -12
  103. package/dist/runtime/channels/channel-socket-options.js +3 -2
  104. package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
  105. package/dist/runtime/channels/channel-socket-registry.js +296 -235
  106. package/dist/runtime/channels/channel-transports.d.ts +11 -20
  107. package/dist/runtime/channels/channel-transports.js +68 -47
  108. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  109. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  110. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  111. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  112. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  113. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  114. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  115. package/dist/runtime/channels/fanout-location-runtime.js +133 -81
  116. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  117. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  118. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  119. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  120. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  121. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  122. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  123. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  124. package/dist/runtime/diagnostics/flow-context.js +16 -2
  125. package/dist/runtime/diagnostics/index.d.ts +4 -2
  126. package/dist/runtime/diagnostics/index.js +14 -4
  127. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  128. package/dist/runtime/diagnostics/message-flow.js +10 -19
  129. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  130. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  131. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  132. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  133. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  134. package/dist/runtime/disposal.d.ts +5 -0
  135. package/dist/runtime/disposal.js +22 -0
  136. package/dist/runtime/execution/index.d.ts +22 -9
  137. package/dist/runtime/execution/index.js +107 -37
  138. package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
  139. package/dist/runtime/execution/serial-execution-queue.js +99 -26
  140. package/dist/runtime/execution/state-lane.d.ts +8 -1
  141. package/dist/runtime/execution/state-lane.js +118 -3
  142. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  143. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  144. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  145. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  146. package/dist/runtime/foundation/listener-records.d.ts +11 -0
  147. package/dist/runtime/foundation/listener-records.js +20 -0
  148. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  149. package/dist/runtime/foundation/operation-identity.js +9 -5
  150. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  151. package/dist/runtime/foundation/operation-registry.js +34 -44
  152. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
  153. package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
  154. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  155. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  156. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
  157. package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
  158. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  159. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  160. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  161. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  162. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  163. package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
  164. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  165. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  166. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  167. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
  168. package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
  169. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
  170. package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
  171. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  172. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  173. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  174. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
  175. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  176. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  177. package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
  178. package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
  179. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
  180. package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
  181. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
  182. package/dist/runtime/foundation/service-topology-registry.js +22 -61
  183. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  184. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  185. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  186. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  187. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  188. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  189. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  190. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  191. package/dist/runtime/framework-errors-internal.js +343 -122
  192. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  193. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  194. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  195. package/dist/runtime/host/actor-packet-relay.js +48 -91
  196. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  197. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  198. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  199. package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
  200. package/dist/runtime/host/actor-transfer-runtime.js +210 -256
  201. package/dist/runtime/host/application-job-queue.js +16 -33
  202. package/dist/runtime/host/bound-session-relay.js +1 -1
  203. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  204. package/dist/runtime/host/index.d.ts +19 -14
  205. package/dist/runtime/host/index.js +234 -175
  206. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  207. package/dist/runtime/host/instance-activation-authority.js +17 -45
  208. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  209. package/dist/runtime/host/location-runtime-owner.js +2 -2
  210. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  211. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  212. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  213. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  214. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  215. package/dist/runtime/host/remote-bound-session-relay.js +11 -23
  216. package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
  217. package/dist/runtime/host/route-mesh-runtime.js +178 -257
  218. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  219. package/dist/runtime/host/runtime-shutdown.js +18 -21
  220. package/dist/runtime/host/service-relocation-control.js +6 -1
  221. package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
  222. package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
  223. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  224. package/dist/runtime/host/spot-address-transport.js +34 -136
  225. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  226. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  227. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
  228. package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
  229. package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
  230. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
  231. package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
  232. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  233. package/dist/runtime/locations/authority-key-codec.js +4 -3
  234. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  235. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  236. package/dist/runtime/locations/creation-operation-id.js +6 -4
  237. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  238. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  239. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  240. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  241. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  242. package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
  243. package/dist/runtime/locations/key-codec.js +3 -2
  244. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  245. package/dist/runtime/locations/lease-tracker.js +7 -11
  246. package/dist/runtime/locations/lifecycle.d.ts +5 -10
  247. package/dist/runtime/locations/lifecycle.js +4 -33
  248. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  249. package/dist/runtime/locations/location-store-failure.js +7 -0
  250. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  251. package/dist/runtime/locations/location-store-pages.js +13 -0
  252. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  253. package/dist/runtime/locations/location-store-repository.js +303 -332
  254. package/dist/runtime/locations/relocation-blob.js +18 -5
  255. package/dist/runtime/locations/resolvers.d.ts +5 -5
  256. package/dist/runtime/locations/resolvers.js +44 -30
  257. package/dist/runtime/locations/runtime.d.ts +5 -4
  258. package/dist/runtime/locations/runtime.js +123 -92
  259. package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
  260. package/dist/runtime/locations/spot-location-claims.js +40 -23
  261. package/dist/runtime/messaging/payload-codec.js +26 -20
  262. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  263. package/dist/runtime/messaging/submission-result.js +48 -0
  264. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
  265. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
  266. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
  267. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
  268. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
  269. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
  270. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
  271. package/dist/runtime/spots/index.d.ts +29 -29
  272. package/dist/runtime/spots/index.js +441 -313
  273. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
  274. package/dist/runtime/spots/spot-activation-registry.js +27 -60
  275. package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
  276. package/dist/runtime/spots/spot-activation-state.js +4 -17
  277. package/dist/runtime/spots/spot-activation.d.ts +10 -9
  278. package/dist/runtime/spots/spot-activation.js +103 -81
  279. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  280. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  281. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  282. package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
  283. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
  284. package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
  285. package/dist/runtime/spots/spot-actor-membership.js +44 -53
  286. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  287. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  288. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  289. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  290. package/dist/runtime/spots/spot-context.d.ts +2 -2
  291. package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
  292. package/dist/runtime/spots/spot-entry-activation.js +9 -21
  293. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  294. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  295. package/dist/runtime/spots/spot-manager-public.js +6 -5
  296. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  297. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
  298. package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
  299. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  300. package/dist/runtime/spots/spot-outbound.js +10 -37
  301. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  302. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  303. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  304. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  305. package/dist/runtime/spots/spot-route-replies.js +3 -1
  306. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
  307. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
  308. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
  309. package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
  310. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  311. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  312. package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
  313. package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
  314. package/dist/runtime/spots/spot-serial-executor.js +9 -2
  315. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
  316. package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
  317. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  318. package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
  319. package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
  320. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
  321. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  322. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  323. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  324. package/dist/runtime/streams/bound-session-service.js +12 -19
  325. package/dist/runtime/streams/index.d.ts +15 -14
  326. package/dist/runtime/streams/index.js +38 -39
  327. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  328. package/dist/runtime/streams/managed-stream.js +17 -8
  329. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  330. package/dist/runtime/streams/protocol.d.ts +6 -33
  331. package/dist/runtime/streams/protocol.js +38 -110
  332. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  333. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  334. package/dist/runtime/streams/session-calls.d.ts +1 -1
  335. package/dist/runtime/streams/session-calls.js +5 -4
  336. package/dist/runtime/streams/session-context.d.ts +6 -6
  337. package/dist/runtime/streams/session-context.js +22 -4
  338. package/dist/runtime/streams/session-requests.js +2 -1
  339. package/dist/runtime/streams/session-serial-executor.js +2 -2
  340. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  341. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  342. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  343. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  344. package/dist/runtime/workers/index.d.ts +2 -2
  345. package/dist/runtime/workers/index.js +5 -4
  346. package/package.json +3 -3
  347. package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
  348. package/src/contracts/Common/CoreTypes.ts +7 -0
  349. package/src/contracts/Common/index.ts +1 -1
  350. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  351. package/src/contracts/Configuration/Registration.ts +92 -48
  352. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  353. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  354. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  355. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  356. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  357. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  358. package/src/contracts/Handlers/JsonContract.ts +14 -4
  359. package/src/contracts/Locations/Authority.ts +7 -3
  360. package/src/contracts/Locations/Options.ts +1 -1
  361. package/src/contracts/Locations/Stores.ts +14 -0
  362. package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
  363. package/src/contracts/Spots/Contracts.ts +1 -1
  364. package/src/internal.ts +15 -0
  365. package/src/nest-integration.ts +28 -10
  366. package/src/runtime/abort.ts +6 -5
  367. package/src/runtime/activation-admission.ts +72 -0
  368. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  369. package/src/runtime/actors/actor-client.ts +77 -204
  370. package/src/runtime/actors/actor-context.ts +45 -39
  371. package/src/runtime/actors/actor-handoff.ts +55 -45
  372. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  373. package/src/runtime/actors/actor-local-native-join.ts +174 -215
  374. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  375. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  376. package/src/runtime/actors/actor-remote-joiner.ts +15 -36
  377. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  378. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  379. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  380. package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
  381. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  382. package/src/runtime/actors/actor-source-transfer.ts +5 -18
  383. package/src/runtime/actors/bound-session-wire.ts +2 -8
  384. package/src/runtime/actors/deferred-join-completion.ts +44 -0
  385. package/src/runtime/actors/index.ts +122 -88
  386. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  387. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  388. package/src/runtime/admission.ts +13 -2
  389. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  390. package/src/runtime/backend/contracts/index.ts +15 -42
  391. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
  392. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  393. package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
  394. package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
  395. package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
  396. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  397. package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
  398. package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
  399. package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
  400. package/src/runtime/backend/raw-binding-port.ts +14 -1
  401. package/src/runtime/backend/runtime-values.ts +4 -1
  402. package/src/runtime/channels/channel-clients.ts +132 -96
  403. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  404. package/src/runtime/channels/channel-envelope.ts +58 -29
  405. package/src/runtime/channels/channel-outbound-operations.ts +10 -31
  406. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  407. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  408. package/src/runtime/channels/channel-runtime-manager.ts +8 -15
  409. package/src/runtime/channels/channel-socket-options.ts +8 -2
  410. package/src/runtime/channels/channel-socket-registry.ts +369 -262
  411. package/src/runtime/channels/channel-transports.ts +161 -115
  412. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  413. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  414. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  415. package/src/runtime/channels/fanout-location-runtime.ts +175 -106
  416. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  417. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  418. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  419. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  420. package/src/runtime/diagnostics/flow-context.ts +16 -2
  421. package/src/runtime/diagnostics/index.ts +27 -17
  422. package/src/runtime/diagnostics/message-flow.ts +15 -25
  423. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  424. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  425. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  426. package/src/runtime/disposal.ts +19 -0
  427. package/src/runtime/execution/index.ts +116 -38
  428. package/src/runtime/execution/serial-execution-queue.ts +179 -34
  429. package/src/runtime/execution/state-lane.ts +142 -4
  430. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  431. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  432. package/src/runtime/foundation/listener-records.ts +21 -0
  433. package/src/runtime/foundation/operation-identity.ts +11 -5
  434. package/src/runtime/foundation/operation-registry.ts +33 -50
  435. package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
  436. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  437. package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
  438. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  439. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  440. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  441. package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
  442. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  443. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  444. package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
  445. package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
  446. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  447. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  448. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
  449. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  450. package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
  451. package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
  452. package/src/runtime/foundation/service-topology-registry.ts +30 -79
  453. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  454. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  455. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  456. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  457. package/src/runtime/framework-errors-internal.ts +380 -134
  458. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  459. package/src/runtime/host/actor-packet-relay.ts +57 -147
  460. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  461. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  462. package/src/runtime/host/actor-transfer-runtime.ts +266 -418
  463. package/src/runtime/host/application-job-queue.ts +28 -34
  464. package/src/runtime/host/bound-session-relay.ts +1 -2
  465. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  466. package/src/runtime/host/index.ts +408 -312
  467. package/src/runtime/host/instance-activation-authority.ts +89 -109
  468. package/src/runtime/host/location-runtime-owner.ts +4 -2
  469. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  470. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  471. package/src/runtime/host/remote-bound-session-relay.ts +12 -44
  472. package/src/runtime/host/route-mesh-runtime.ts +236 -275
  473. package/src/runtime/host/runtime-shutdown.ts +17 -21
  474. package/src/runtime/host/service-relocation-control.ts +14 -1
  475. package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
  476. package/src/runtime/host/spot-address-transport.ts +73 -195
  477. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  478. package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
  479. package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
  480. package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
  481. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  482. package/src/runtime/locations/authority-key-codec.ts +7 -3
  483. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  484. package/src/runtime/locations/creation-operation-id.ts +6 -3
  485. package/src/runtime/locations/domain-store-contract.ts +12 -3
  486. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  487. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  488. package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
  489. package/src/runtime/locations/key-codec.ts +3 -2
  490. package/src/runtime/locations/lease-tracker.ts +8 -14
  491. package/src/runtime/locations/lifecycle.ts +16 -45
  492. package/src/runtime/locations/location-store-failure.ts +4 -0
  493. package/src/runtime/locations/location-store-pages.ts +18 -0
  494. package/src/runtime/locations/location-store-repository.ts +450 -478
  495. package/src/runtime/locations/relocation-blob.ts +17 -6
  496. package/src/runtime/locations/resolvers.ts +90 -58
  497. package/src/runtime/locations/runtime.ts +220 -110
  498. package/src/runtime/locations/spot-location-claims.ts +54 -26
  499. package/src/runtime/messaging/payload-codec.ts +35 -24
  500. package/src/runtime/messaging/submission-result.ts +57 -1
  501. package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
  502. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
  503. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
  504. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
  505. package/src/runtime/spots/index.ts +687 -437
  506. package/src/runtime/spots/spot-activation-registry.ts +42 -71
  507. package/src/runtime/spots/spot-activation-state.ts +4 -16
  508. package/src/runtime/spots/spot-activation.ts +167 -115
  509. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  510. package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
  511. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
  512. package/src/runtime/spots/spot-actor-membership.ts +107 -75
  513. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  514. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  515. package/src/runtime/spots/spot-context.ts +3 -3
  516. package/src/runtime/spots/spot-entry-activation.ts +13 -33
  517. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  518. package/src/runtime/spots/spot-manager-public.ts +29 -21
  519. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  520. package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
  521. package/src/runtime/spots/spot-outbound.ts +47 -68
  522. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  523. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  524. package/src/runtime/spots/spot-route-replies.ts +6 -4
  525. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
  526. package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
  527. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  528. package/src/runtime/spots/spot-runtime-ports.ts +10 -43
  529. package/src/runtime/spots/spot-serial-executor.ts +10 -2
  530. package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
  531. package/src/runtime/spots/spot-timer.ts +3 -2
  532. package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
  533. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
  534. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  535. package/src/runtime/streams/bound-session-service.ts +23 -37
  536. package/src/runtime/streams/index.ts +102 -88
  537. package/src/runtime/streams/managed-stream.ts +29 -10
  538. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  539. package/src/runtime/streams/protocol.ts +34 -88
  540. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  541. package/src/runtime/streams/session-calls.ts +6 -5
  542. package/src/runtime/streams/session-context.ts +54 -10
  543. package/src/runtime/streams/session-requests.ts +2 -1
  544. package/src/runtime/streams/session-serial-executor.ts +2 -2
  545. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  546. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  547. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  548. package/src/runtime/workers/index.ts +13 -12
  549. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
  550. package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
  551. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  552. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  553. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  554. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  555. package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
  556. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  557. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,3 +1,4 @@
1
+ import { DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS } from './bound-actor-relay-sender';
1
2
  import {
2
3
  ZLinkFrameworkInternalErrorKind,
3
4
  createInternalFrameworkException
@@ -13,6 +14,7 @@ import {
13
14
  import { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
14
15
  import { ZLinkManagedStream } from './managed-stream';
15
16
  import { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
17
+ import type { ZLinkSessionBindingConfirmationOptions } from './stream-binding-runtime-ports';
16
18
 
17
19
  export interface ZLinkSessionActorCoordinatorOptions {
18
20
  readonly actorBindTimeoutMs?: number;
@@ -31,7 +33,7 @@ export interface ZLinkSessionActorCoordinatorOptions {
31
33
  actor: ActorRef,
32
34
  sessionRid: ActorRef['nodeRid'],
33
35
  signal?: AbortSignal,
34
- options?: { readonly waitForAcknowledgement?: boolean }
36
+ options?: ZLinkSessionBindingConfirmationOptions
35
37
  ) => Promise<void>;
36
38
  readonly errorSink?: () =>
37
39
  | {
@@ -181,7 +183,13 @@ export class ZLinkSessionActorCoordinator {
181
183
  boundActorRef,
182
184
  this.actorBindingRoutingId(context),
183
185
  undefined,
184
- { waitForAcknowledgement }
186
+ {
187
+ waitForAcknowledgement,
188
+ binding:
189
+ context.stream instanceof ZLinkManagedStream
190
+ ? context.stream.actorBinding(actorRef.actorId)
191
+ : undefined
192
+ }
185
193
  );
186
194
  const reportFailure = (error: unknown) => {
187
195
  // A fire-and-forget route update retains the already-current binding;
@@ -204,7 +212,7 @@ export class ZLinkSessionActorCoordinator {
204
212
  if (context.stream instanceof ZLinkManagedStream) {
205
213
  await context.stream.unbindActor(
206
214
  actorRef.actorId,
207
- this.options.actorBindTimeoutMs ?? 2000
215
+ this.options.actorBindTimeoutMs ?? DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS
208
216
  );
209
217
  }
210
218
  } catch (cleanupError) {
@@ -354,7 +362,11 @@ export class ZLinkSessionActorCoordinator {
354
362
  true
355
363
  );
356
364
  }
357
- route.actor.updateRef(normalizedActorRef);
365
+ // A location refresh never changes the route's Session binding
366
+ // generation; the native bind owns it.
367
+ route.actor.updateRef(
368
+ withBindingGeneration(normalizedActorRef, bindingGenerationOf(route.actor.ref), undefined)
369
+ );
358
370
  if (authorityFence !== undefined) {
359
371
  await this.routes.updateAuthorityFence(normalizedActorRef.actorId, authorityFence);
360
372
  }
@@ -463,7 +475,7 @@ export class ZLinkSessionActorCoordinator {
463
475
  try {
464
476
  await context.stream.bindActor(
465
477
  actorRef,
466
- this.options.actorBindTimeoutMs ?? 2000,
478
+ this.options.actorBindTimeoutMs ?? DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS,
467
479
  signal,
468
480
  context.actorBindingReplacedHandler,
469
481
  authorityFence
@@ -1,14 +1,15 @@
1
- import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
2
1
  import type {
3
2
  ZLinkBoundSessionSendCall,
4
3
  ZLinkSessionReplyCall,
5
4
  ZLinkSessionSendCall
6
5
  } from '../../contracts';
7
- import type { ZLinkSubmitResult } from '../messaging/submission-result';
8
- import { requireOneWayCompletion } from '../messaging/submission-result';
9
6
  import type { Message } from '../../contracts/Common/Message';
7
+ import { ZLINK_MAX_SEND_TIMEOUT_MS } from '../../contracts/Configuration/SendTimeoutValidation';
10
8
  import { throwIfAborted } from '../abort';
11
9
  import { ZLinkConfigurationException } from '../configuration';
10
+ import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
11
+ import { type ZLinkSubmitResult, requireOneWayCompletion } from '../messaging/submission-result';
12
+
12
13
  import {
13
14
  ensureSingleSubmit,
14
15
  resolvePacketName,
@@ -135,9 +136,9 @@ export class DefaultZLinkSessionSendCall implements ZLinkSessionSendCall {
135
136
  }
136
137
 
137
138
  timeout(timeoutMs: number): this {
138
- if (!Number.isInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > 2_147_483_647) {
139
+ if (!Number.isInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > ZLINK_MAX_SEND_TIMEOUT_MS) {
139
140
  throw new ZLinkConfigurationException(
140
- 'STREAM session send timeout must be an integer from 1 through 2147483647 milliseconds.'
141
+ `STREAM session send timeout must be an integer from 1 through ${ZLINK_MAX_SEND_TIMEOUT_MS} milliseconds.`
141
142
  );
142
143
  }
143
144
  this.selectedTimeoutMs = timeoutMs;
@@ -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,11 +44,8 @@ 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;
@@ -652,3 +657,42 @@ function sameRetiredSession(
652
657
  left.retiredBindingGeneration === right.retiredBindingGeneration
653
658
  );
654
659
  }
660
+
661
+ if (isStructuralGuardEnabled()) {
662
+ const controlsGetter = Object.getOwnPropertyDescriptor(
663
+ DefaultZLinkSessionContext.prototype,
664
+ 'actorSlotControls'
665
+ )?.get;
666
+ if (controlsGetter !== undefined) {
667
+ Object.defineProperty(DefaultZLinkSessionContext.prototype, 'actorSlotControls', {
668
+ configurable: true,
669
+ get(this: DefaultZLinkSessionContext) {
670
+ const controls = controlsGetter.call(this) as
671
+ | {
672
+ enqueueBound(actorSlot: number, actorId: string): Promise<void>;
673
+ enqueueUnbound(actorSlot: number): Promise<void>;
674
+ }
675
+ | undefined;
676
+ if (controls === undefined) return undefined;
677
+ return {
678
+ enqueueBound: (actorSlot: number, actorId: string) =>
679
+ guardStateLaneCompletion(
680
+ trackDiagnosticCompletion(
681
+ controls.enqueueBound(actorSlot, actorId),
682
+ `binding transport bound ${actorId}`
683
+ ),
684
+ 'binding transport completion'
685
+ ),
686
+ enqueueUnbound: (actorSlot: number) =>
687
+ guardStateLaneCompletion(
688
+ trackDiagnosticCompletion(
689
+ controls.enqueueUnbound(actorSlot),
690
+ `binding transport unbound ${actorSlot}`
691
+ ),
692
+ 'binding transport completion'
693
+ )
694
+ };
695
+ }
696
+ });
697
+ }
698
+ }
@@ -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
  }
@@ -55,8 +55,8 @@ export class ZLinkSessionSerialExecutor {
55
55
  }
56
56
  const boundWork = bindApplicationJobPermit(work);
57
57
  return hasApplicationJobPermit()
58
- ? this.scheduler.submitPreAdmitted(boundWork, { lane: 'lifecycle' })
59
- : this.scheduler.submit(boundWork, { lane: 'lifecycle' });
58
+ ? this.scheduler.submitPreAdmitted(boundWork, { lane: 'application' })
59
+ : this.scheduler.submit(boundWork, { lane: 'application' });
60
60
  }
61
61
 
62
62
  private submit(
@@ -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,47 +0,0 @@
1
- import type { ActorRef, ZLinkActor, ZLinkActorJoinOperationId, ZLinkBlobReference, ZLinkMessageSerializer, ZLinkRelocationStore } from '../../contracts';
2
- import type { ZLinkAuthoritySnapshot } from '../locations/internal-location-contracts';
3
- import type { ZLinkAuthorityStore } from '../locations/internal-store-contracts';
4
- export type ZLinkDeferredJoinDeliveryCursor = 'prepared' | 'committed' | 'delivered';
5
- export interface ZLinkDeferredJoinAcceptedRoot {
6
- readonly authority: ZLinkAuthoritySnapshot;
7
- readonly reference: ZLinkBlobReference;
8
- readonly checksumCrc32c: number;
9
- readonly operationId: ZLinkActorJoinOperationId;
10
- readonly actor: ActorRef;
11
- readonly rawReply: Buffer;
12
- readonly replyContentType?: string;
13
- readonly cursor: ZLinkDeferredJoinDeliveryCursor;
14
- }
15
- export interface ZLinkDeferredJoinRootIdentity {
16
- readonly authorityKey: string;
17
- readonly objectKind: 'actor' | 'user_spot' | 'instance_spot';
18
- readonly objectGeneration: bigint;
19
- readonly aggregateId: string;
20
- readonly aggregateGeneration: bigint;
21
- }
22
- /** Identifies whether an authority slot points at a deferred Join journal root. */
23
- export declare function isDeferredJoinAcceptedRootPublication(relocation: ZLinkRelocationStore, reference: string, checksumCrc32c: number, expected: ZLinkDeferredJoinRootIdentity, signal?: AbortSignal): Promise<boolean>;
24
- /**
25
- * Keeps a cross-node Accepted Join completion under the Actor authority.
26
- * Every cursor transition writes and verifies a new immutable root before the
27
- * authority CAS. A failed callback leaves the committed root available for the
28
- * next target Actor mailbox retry.
29
- */
30
- export declare class ZLinkDeferredJoinAcceptedJournal {
31
- private readonly authority;
32
- private readonly relocation;
33
- private readonly messageSerializers?;
34
- constructor(authority: ZLinkAuthorityStore, relocation: ZLinkRelocationStore, messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer> | undefined);
35
- prepare(actorId: string, operationId: ZLinkActorJoinOperationId, actor: ActorRef, rawReply: Uint8Array, replyContentType?: string, signal?: AbortSignal, canonicalInventoryDigest?: string): Promise<ZLinkDeferredJoinAcceptedRoot>;
36
- recover(actorId: string, signal?: AbortSignal): Promise<ZLinkDeferredJoinAcceptedRoot | undefined>;
37
- markCommitted(root: ZLinkDeferredJoinAcceptedRoot, actor?: ActorRef, signal?: AbortSignal): Promise<ZLinkDeferredJoinAcceptedRoot>;
38
- markDelivered(root: ZLinkDeferredJoinAcceptedRoot, signal?: AbortSignal): Promise<ZLinkDeferredJoinAcceptedRoot>;
39
- discardPrepared(root: ZLinkDeferredJoinAcceptedRoot, signal?: AbortSignal): Promise<void>;
40
- deliver(root: ZLinkDeferredJoinAcceptedRoot, actor: ZLinkActor, actorRef: ActorRef, submitMailbox: <T>(operation: () => Promise<T>) => Promise<T>, signal?: AbortSignal): Promise<ZLinkDeferredJoinAcceptedRoot>;
41
- private releaseDelivered;
42
- private moveCursor;
43
- private readPublished;
44
- private storeRoot;
45
- private storeCanonicalRoot;
46
- private deleteBestEffort;
47
- }