@zlink-systems/framework 0.26.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 (521) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  3. package/dist/contracts/Common/CoreTypes.js +7 -0
  4. package/dist/contracts/Common/index.d.ts +1 -1
  5. package/dist/contracts/Common/index.js +0 -1
  6. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  7. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  8. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  9. package/dist/contracts/Configuration/Registration.js +58 -36
  10. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  12. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  16. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  17. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  18. package/dist/contracts/Handlers/JsonContract.js +10 -4
  19. package/dist/contracts/Locations/Authority.d.ts +1 -1
  20. package/dist/contracts/Locations/Authority.js +3 -2
  21. package/dist/contracts/Locations/Options.js +1 -1
  22. package/dist/contracts/Locations/Stores.d.ts +12 -0
  23. package/dist/contracts/Locations/Stores.js +9 -0
  24. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  25. package/dist/internal.d.ts +4 -0
  26. package/dist/internal.js +15 -1
  27. package/dist/nest-integration.d.ts +4 -2
  28. package/dist/nest-integration.js +14 -4
  29. package/dist/runtime/abort.d.ts +1 -0
  30. package/dist/runtime/abort.js +8 -5
  31. package/dist/runtime/activation-admission.d.ts +1 -2
  32. package/dist/runtime/activation-admission.js +2 -6
  33. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  34. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  35. package/dist/runtime/actors/actor-client.d.ts +2 -2
  36. package/dist/runtime/actors/actor-client.js +42 -143
  37. package/dist/runtime/actors/actor-context.d.ts +3 -5
  38. package/dist/runtime/actors/actor-context.js +13 -11
  39. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  40. package/dist/runtime/actors/actor-handoff.js +8 -8
  41. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  42. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  43. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  44. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  45. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  46. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  47. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  48. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  49. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  50. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  51. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  52. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  53. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  54. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  55. package/dist/runtime/actors/bound-session-wire.js +2 -7
  56. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  57. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  58. package/dist/runtime/actors/index.d.ts +9 -7
  59. package/dist/runtime/actors/index.js +87 -69
  60. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  61. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  62. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  63. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  64. package/dist/runtime/admission.d.ts +2 -0
  65. package/dist/runtime/admission.js +7 -1
  66. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  67. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  68. package/dist/runtime/backend/contracts/index.d.ts +6 -23
  69. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  70. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  71. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  72. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
  73. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
  74. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  75. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  76. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  77. package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
  78. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  79. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  80. package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
  81. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  82. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  83. package/dist/runtime/backend/runtime-values.js +2 -0
  84. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  85. package/dist/runtime/channels/channel-clients.js +68 -52
  86. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  87. package/dist/runtime/channels/channel-envelope.js +47 -29
  88. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  89. package/dist/runtime/channels/channel-outbound-operations.js +9 -10
  90. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  91. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  94. package/dist/runtime/channels/channel-runtime-manager.js +5 -2
  95. package/dist/runtime/channels/channel-socket-options.js +3 -2
  96. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  97. package/dist/runtime/channels/channel-socket-registry.js +248 -174
  98. package/dist/runtime/channels/channel-transports.d.ts +11 -17
  99. package/dist/runtime/channels/channel-transports.js +68 -47
  100. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  101. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  102. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  103. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  104. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  105. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  106. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  107. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  108. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  109. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  110. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  111. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  112. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  113. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  114. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  115. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  116. package/dist/runtime/diagnostics/flow-context.js +16 -2
  117. package/dist/runtime/diagnostics/index.d.ts +4 -2
  118. package/dist/runtime/diagnostics/index.js +14 -4
  119. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  120. package/dist/runtime/diagnostics/message-flow.js +10 -19
  121. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  122. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  123. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  124. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  125. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  126. package/dist/runtime/disposal.d.ts +5 -0
  127. package/dist/runtime/disposal.js +22 -0
  128. package/dist/runtime/execution/index.d.ts +12 -9
  129. package/dist/runtime/execution/index.js +58 -14
  130. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  131. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  132. package/dist/runtime/execution/state-lane.d.ts +8 -1
  133. package/dist/runtime/execution/state-lane.js +118 -3
  134. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  135. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  136. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  137. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  138. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  139. package/dist/runtime/foundation/operation-identity.js +9 -5
  140. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  141. package/dist/runtime/foundation/operation-registry.js +34 -44
  142. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  143. package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
  144. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  145. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  146. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  147. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  148. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  149. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  150. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  151. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  152. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  153. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  154. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  155. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  156. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  157. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  158. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  159. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  160. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  161. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  162. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  163. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  164. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  165. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  166. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  167. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  168. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  169. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  170. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  171. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  172. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  173. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  174. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  175. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  176. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  177. package/dist/runtime/framework-errors-internal.js +343 -122
  178. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  179. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  180. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  181. package/dist/runtime/host/actor-packet-relay.js +48 -91
  182. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  183. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  184. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  185. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  186. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  187. package/dist/runtime/host/application-job-queue.js +16 -33
  188. package/dist/runtime/host/bound-session-relay.js +1 -1
  189. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  190. package/dist/runtime/host/index.d.ts +14 -13
  191. package/dist/runtime/host/index.js +190 -157
  192. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  193. package/dist/runtime/host/instance-activation-authority.js +17 -45
  194. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  195. package/dist/runtime/host/location-runtime-owner.js +2 -2
  196. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  197. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  198. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  199. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  200. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  201. package/dist/runtime/host/remote-bound-session-relay.js +7 -20
  202. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  203. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  204. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  205. package/dist/runtime/host/runtime-shutdown.js +18 -21
  206. package/dist/runtime/host/service-relocation-control.js +6 -1
  207. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  208. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  209. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  210. package/dist/runtime/host/spot-address-transport.js +34 -136
  211. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  212. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  213. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  214. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  215. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  216. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  217. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  218. package/dist/runtime/locations/authority-key-codec.js +4 -3
  219. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  220. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  221. package/dist/runtime/locations/creation-operation-id.js +6 -4
  222. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  223. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  224. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  225. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  226. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  227. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  228. package/dist/runtime/locations/key-codec.js +3 -2
  229. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  230. package/dist/runtime/locations/lease-tracker.js +7 -11
  231. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  232. package/dist/runtime/locations/lifecycle.js +2 -31
  233. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  234. package/dist/runtime/locations/location-store-failure.js +7 -0
  235. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  236. package/dist/runtime/locations/location-store-pages.js +13 -0
  237. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  238. package/dist/runtime/locations/location-store-repository.js +303 -332
  239. package/dist/runtime/locations/relocation-blob.js +18 -5
  240. package/dist/runtime/locations/resolvers.d.ts +5 -5
  241. package/dist/runtime/locations/resolvers.js +37 -28
  242. package/dist/runtime/locations/runtime.d.ts +5 -4
  243. package/dist/runtime/locations/runtime.js +123 -92
  244. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  245. package/dist/runtime/locations/spot-location-claims.js +42 -1
  246. package/dist/runtime/messaging/payload-codec.js +26 -20
  247. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  248. package/dist/runtime/messaging/submission-result.js +48 -0
  249. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  250. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  251. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  252. package/dist/runtime/spots/index.d.ts +14 -20
  253. package/dist/runtime/spots/index.js +302 -176
  254. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  255. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  256. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  257. package/dist/runtime/spots/spot-activation-state.js +2 -2
  258. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  259. package/dist/runtime/spots/spot-activation.js +49 -32
  260. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  261. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  262. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  263. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  264. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  265. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  266. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  267. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  268. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  269. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  270. package/dist/runtime/spots/spot-context.d.ts +2 -2
  271. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  272. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  273. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  274. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  275. package/dist/runtime/spots/spot-manager-public.js +5 -4
  276. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  277. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  278. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  279. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  280. package/dist/runtime/spots/spot-outbound.js +9 -8
  281. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  282. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  283. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  284. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  285. package/dist/runtime/spots/spot-route-replies.js +3 -1
  286. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  287. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  288. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  289. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  290. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  291. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  292. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  293. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  294. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  295. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  296. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  297. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  298. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  299. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  300. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  301. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  302. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  303. package/dist/runtime/streams/bound-session-service.js +11 -1
  304. package/dist/runtime/streams/index.d.ts +14 -15
  305. package/dist/runtime/streams/index.js +20 -21
  306. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  307. package/dist/runtime/streams/managed-stream.js +17 -8
  308. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  309. package/dist/runtime/streams/protocol.d.ts +6 -33
  310. package/dist/runtime/streams/protocol.js +38 -110
  311. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  312. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  313. package/dist/runtime/streams/session-calls.d.ts +1 -1
  314. package/dist/runtime/streams/session-calls.js +5 -4
  315. package/dist/runtime/streams/session-context.d.ts +6 -6
  316. package/dist/runtime/streams/session-context.js +22 -4
  317. package/dist/runtime/streams/session-requests.js +2 -1
  318. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  319. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  320. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  321. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  322. package/dist/runtime/workers/index.d.ts +2 -2
  323. package/dist/runtime/workers/index.js +5 -4
  324. package/package.json +3 -3
  325. package/src/contracts/Common/CoreTypes.ts +7 -0
  326. package/src/contracts/Common/index.ts +1 -1
  327. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  328. package/src/contracts/Configuration/Registration.ts +92 -48
  329. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  330. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  331. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  332. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  333. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  334. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  335. package/src/contracts/Handlers/JsonContract.ts +14 -4
  336. package/src/contracts/Locations/Authority.ts +7 -3
  337. package/src/contracts/Locations/Options.ts +1 -1
  338. package/src/contracts/Locations/Stores.ts +14 -0
  339. package/src/contracts/Spots/Contracts.ts +1 -1
  340. package/src/internal.ts +14 -0
  341. package/src/nest-integration.ts +28 -10
  342. package/src/runtime/abort.ts +6 -5
  343. package/src/runtime/activation-admission.ts +2 -8
  344. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  345. package/src/runtime/actors/actor-client.ts +77 -204
  346. package/src/runtime/actors/actor-context.ts +39 -33
  347. package/src/runtime/actors/actor-handoff.ts +24 -22
  348. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  349. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  350. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  351. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  352. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  353. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  354. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  355. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  356. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  357. package/src/runtime/actors/bound-session-wire.ts +2 -8
  358. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  359. package/src/runtime/actors/index.ts +100 -79
  360. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  361. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  362. package/src/runtime/admission.ts +8 -1
  363. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  364. package/src/runtime/backend/contracts/index.ts +13 -29
  365. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  366. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  367. package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
  368. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  369. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  370. package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
  371. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  372. package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
  373. package/src/runtime/backend/raw-binding-port.ts +1 -1
  374. package/src/runtime/backend/runtime-values.ts +4 -1
  375. package/src/runtime/channels/channel-clients.ts +132 -85
  376. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  377. package/src/runtime/channels/channel-envelope.ts +58 -29
  378. package/src/runtime/channels/channel-outbound-operations.ts +10 -23
  379. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  380. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  381. package/src/runtime/channels/channel-runtime-manager.ts +6 -2
  382. package/src/runtime/channels/channel-socket-options.ts +8 -2
  383. package/src/runtime/channels/channel-socket-registry.ts +301 -192
  384. package/src/runtime/channels/channel-transports.ts +161 -112
  385. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  386. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  387. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  388. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  389. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  390. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  391. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  392. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  393. package/src/runtime/diagnostics/flow-context.ts +16 -2
  394. package/src/runtime/diagnostics/index.ts +27 -17
  395. package/src/runtime/diagnostics/message-flow.ts +15 -25
  396. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  397. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  398. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  399. package/src/runtime/disposal.ts +19 -0
  400. package/src/runtime/execution/index.ts +60 -20
  401. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  402. package/src/runtime/execution/state-lane.ts +142 -4
  403. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  404. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  405. package/src/runtime/foundation/operation-identity.ts +11 -5
  406. package/src/runtime/foundation/operation-registry.ts +33 -50
  407. package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
  408. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  409. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  410. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  411. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  412. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  413. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  414. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  415. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  416. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  417. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  418. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  419. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  420. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  421. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  422. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  423. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  424. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  425. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  426. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  427. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  428. package/src/runtime/framework-errors-internal.ts +380 -134
  429. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  430. package/src/runtime/host/actor-packet-relay.ts +57 -147
  431. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  432. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  433. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  434. package/src/runtime/host/application-job-queue.ts +28 -34
  435. package/src/runtime/host/bound-session-relay.ts +1 -2
  436. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  437. package/src/runtime/host/index.ts +327 -296
  438. package/src/runtime/host/instance-activation-authority.ts +89 -109
  439. package/src/runtime/host/location-runtime-owner.ts +4 -2
  440. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  441. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  442. package/src/runtime/host/remote-bound-session-relay.ts +8 -41
  443. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  444. package/src/runtime/host/runtime-shutdown.ts +17 -21
  445. package/src/runtime/host/service-relocation-control.ts +14 -1
  446. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  447. package/src/runtime/host/spot-address-transport.ts +73 -195
  448. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  449. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  450. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  451. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  452. package/src/runtime/locations/authority-key-codec.ts +7 -3
  453. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  454. package/src/runtime/locations/creation-operation-id.ts +6 -3
  455. package/src/runtime/locations/domain-store-contract.ts +12 -3
  456. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  457. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  458. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  459. package/src/runtime/locations/key-codec.ts +3 -2
  460. package/src/runtime/locations/lease-tracker.ts +8 -14
  461. package/src/runtime/locations/lifecycle.ts +13 -43
  462. package/src/runtime/locations/location-store-failure.ts +4 -0
  463. package/src/runtime/locations/location-store-pages.ts +18 -0
  464. package/src/runtime/locations/location-store-repository.ts +450 -478
  465. package/src/runtime/locations/relocation-blob.ts +17 -6
  466. package/src/runtime/locations/resolvers.ts +75 -49
  467. package/src/runtime/locations/runtime.ts +220 -110
  468. package/src/runtime/locations/spot-location-claims.ts +58 -1
  469. package/src/runtime/messaging/payload-codec.ts +35 -24
  470. package/src/runtime/messaging/submission-result.ts +57 -1
  471. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  472. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  473. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  474. package/src/runtime/spots/index.ts +433 -229
  475. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  476. package/src/runtime/spots/spot-activation-state.ts +2 -2
  477. package/src/runtime/spots/spot-activation.ts +67 -37
  478. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  479. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  480. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  481. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  482. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  483. package/src/runtime/spots/spot-context.ts +3 -3
  484. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  485. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  486. package/src/runtime/spots/spot-manager-public.ts +21 -17
  487. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  488. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  489. package/src/runtime/spots/spot-outbound.ts +45 -23
  490. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  491. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  492. package/src/runtime/spots/spot-route-replies.ts +6 -4
  493. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  494. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  495. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  496. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  497. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  498. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  499. package/src/runtime/spots/spot-timer.ts +3 -2
  500. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  501. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  502. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  503. package/src/runtime/streams/bound-session-service.ts +21 -1
  504. package/src/runtime/streams/index.ts +76 -64
  505. package/src/runtime/streams/managed-stream.ts +29 -10
  506. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  507. package/src/runtime/streams/protocol.ts +34 -88
  508. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  509. package/src/runtime/streams/session-calls.ts +6 -5
  510. package/src/runtime/streams/session-context.ts +54 -10
  511. package/src/runtime/streams/session-requests.ts +2 -1
  512. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  513. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  514. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  515. package/src/runtime/workers/index.ts +13 -12
  516. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  517. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  518. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  519. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  520. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  521. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -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 {};
@@ -1,106 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZLinkSpotNativeActorJoinAdmission = void 0;
4
- const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
5
- const runtime_message_1 = require("../backend/runtime-message");
6
- const payload_codec_1 = require("../messaging/payload-codec");
7
- const spot_remote_codec_1 = require("./spot-remote-codec");
8
- class ZLinkSpotNativeActorJoinAdmission {
9
- options;
10
- constructor(options) {
11
- this.options = options;
12
- }
13
- async admit(request, rejectClosing = false) {
14
- const actorId = request.info.targetActor.actorId;
15
- let accepted = false;
16
- let acceptedActor;
17
- let reply;
18
- const decoded = this.decodeNativeActorJoinRequest(request.message);
19
- try {
20
- if (decoded !== undefined) {
21
- throw new Error('Remote actor join requires the two-phase routed transfer protocol.');
22
- }
23
- const actor = this.options.resolveActor(actorId);
24
- if (!rejectClosing && actor !== undefined) {
25
- const target = this.options.getTarget();
26
- const joinRequest = request.message;
27
- const joinPayload = (0, payload_codec_1.wrapFrameworkPayloadMessage)(joinRequest, this.options.messageSerializers);
28
- const response = await this.options.serial.execute(async () => this.options.defaultAccept || target.onActorJoin === undefined
29
- ? { accepted: this.options.defaultAccept }
30
- : target.onActorJoin(actorId, joinPayload));
31
- accepted = response.accepted;
32
- reply =
33
- response.reply === undefined
34
- ? undefined
35
- : (0, payload_codec_1.encodeFrameworkPayloadMessage)(response.reply, this.options.messageSerializers);
36
- if (accepted) {
37
- acceptedActor = actor;
38
- }
39
- }
40
- }
41
- catch (error) {
42
- this.reportHandlerException(actorId, error);
43
- accepted = false;
44
- reply?.close();
45
- reply = undefined;
46
- }
47
- const operation = this.options.nativeSpot.replyActorJoin(request, accepted ? 0 : 1);
48
- let submitted = false;
49
- try {
50
- if (reply !== undefined) {
51
- operation.message(reply);
52
- }
53
- operation.submit();
54
- submitted = true;
55
- }
56
- finally {
57
- if (!submitted) {
58
- reply?.close();
59
- }
60
- decoded?.request.close();
61
- decoded?.actorCreateRequest?.close();
62
- }
63
- if (acceptedActor !== undefined) {
64
- try {
65
- // The native reply commits the actor's return to the Entry Spot. Publish
66
- // the immutable membership callback only after that commit so observers
67
- // never see an accepted membership before Core does.
68
- await this.options.commitAcceptedActor?.(acceptedActor);
69
- }
70
- catch (error) {
71
- this.reportHandlerException(actorId, error);
72
- }
73
- }
74
- }
75
- decodeNativeActorJoinRequest(message) {
76
- try {
77
- const payload = JSON.parse(message.data().toString());
78
- if (payload.packetName !== spot_remote_codec_1.REMOTE_ACTOR_JOIN_PACKET ||
79
- typeof payload.actorType !== 'string' ||
80
- typeof payload.request !== 'string') {
81
- return undefined;
82
- }
83
- return {
84
- actorType: payload.actorType,
85
- actorCreateRequest: typeof payload.actorCreateRequest === 'string'
86
- ? runtime_message_1.ZLinkBufferMessage.from(Buffer.from(payload.actorCreateRequest, 'base64'))
87
- : undefined,
88
- request: runtime_message_1.ZLinkBufferMessage.from(Buffer.from(payload.request, 'base64'))
89
- };
90
- }
91
- catch {
92
- return undefined;
93
- }
94
- }
95
- reportHandlerException(actorId, error) {
96
- this.options.dispatchErrors?.report({
97
- surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotActor,
98
- messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.ActorSend,
99
- reason: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException,
100
- action: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop,
101
- actorId,
102
- error
103
- });
104
- }
105
- }
106
- exports.ZLinkSpotNativeActorJoinAdmission = ZLinkSpotNativeActorJoinAdmission;
@@ -1,121 +0,0 @@
1
- import type { RoutingId } from '../../contracts';
2
- import { ZLinkStateLane } from '../execution/state-lane';
3
- import type { ZLinkLocationLifecycle } from '../locations';
4
- import { ZLinkActorRetryDelay } from './actor-retry-delay';
5
-
6
- export interface ZLinkPostCommitActorLocationOptions {
7
- readonly lifecycle: ZLinkLocationLifecycle;
8
- readonly reportError?: (error: unknown) => void;
9
- readonly signal?: AbortSignal;
10
- }
11
-
12
- interface ActorOperationQueue {
13
- readonly operations: Array<(() => Promise<void>) | undefined>;
14
- head: number;
15
- count: number;
16
- }
17
-
18
- export class ZLinkPostCommitActorLocation {
19
- private readonly lane = new ZLinkStateLane();
20
- private readonly queues = new Map<string, ActorOperationQueue>();
21
- private readonly tasks = new Map<string, Promise<void>>();
22
-
23
- constructor(private readonly options: ZLinkPostCommitActorLocationOptions) {}
24
-
25
- joinedEventually(
26
- actorType: string,
27
- actorId: string,
28
- meshName: string,
29
- spotId: RoutingId,
30
- spotGeneration: bigint,
31
- membershipEpoch: bigint,
32
- ownerNodeGeneration: bigint
33
- ): void {
34
- this.enqueue(actorId, () =>
35
- this.options.lifecycle.notifyActorJoinedSpot(
36
- actorType,
37
- actorId,
38
- meshName,
39
- spotId,
40
- spotGeneration,
41
- membershipEpoch,
42
- ownerNodeGeneration
43
- )
44
- );
45
- }
46
-
47
- leftEventually(
48
- actorType: string,
49
- actorId: string,
50
- entrySpotId: RoutingId,
51
- entrySpotGeneration: bigint,
52
- membershipEpoch: bigint,
53
- ownerNodeGeneration: bigint
54
- ): void {
55
- this.enqueue(actorId, () =>
56
- this.options.lifecycle.notifyActorLeftSpot(
57
- actorType,
58
- actorId,
59
- entrySpotId,
60
- entrySpotGeneration,
61
- membershipEpoch,
62
- ownerNodeGeneration
63
- )
64
- );
65
- }
66
-
67
- private enqueue(actorId: string, operation: () => Promise<void>): void {
68
- const queue = this.queues.get(actorId) ?? { operations: [], head: 0, count: 0 };
69
- queue.operations.push(operation);
70
- queue.count += 1;
71
- this.queues.set(actorId, queue);
72
- if (this.tasks.has(actorId)) {
73
- return;
74
- }
75
- let task!: Promise<void>;
76
- task = this.run(actorId).finally(
77
- async () =>
78
- await this.lane.run(() => {
79
- if (this.tasks.get(actorId) === task) {
80
- this.tasks.delete(actorId);
81
- }
82
- })
83
- );
84
- this.tasks.set(actorId, task);
85
- }
86
-
87
- private async run(actorId: string): Promise<void> {
88
- const retryDelay = new ZLinkActorRetryDelay();
89
- while (this.options.signal?.aborted !== true) {
90
- const queue = this.queues.get(actorId);
91
- const operation = queue?.operations[queue.head];
92
- if (queue === undefined || operation === undefined) {
93
- this.queues.delete(actorId);
94
- return;
95
- }
96
- try {
97
- await operation();
98
- await this.lane.run(() => this.completeCore(queue));
99
- retryDelay.reset();
100
- } catch (error) {
101
- this.options.reportError?.(error);
102
- if (!(await retryDelay.wait(this.options.signal))) {
103
- return;
104
- }
105
- }
106
- }
107
- }
108
-
109
- private completeCore(queue: ActorOperationQueue): void {
110
- queue.operations[queue.head] = undefined;
111
- queue.head += 1;
112
- queue.count -= 1;
113
- if (queue.count === 0) {
114
- queue.operations.length = 0;
115
- queue.head = 0;
116
- } else if (queue.head >= 1024 && queue.head * 2 >= queue.operations.length) {
117
- queue.operations.splice(0, queue.head);
118
- queue.head = 0;
119
- }
120
- }
121
- }