@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,29 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkStreamSessionNodeRuntime = exports.ZLinkStreamSessionRuntime = void 0;
4
- const framework_errors_internal_1 = require("../framework-errors-internal");
5
- const internal_event_contracts_1 = require("../diagnostics/internal-event-contracts");
4
+ const Registration_1 = require("../../contracts/Configuration/Registration");
6
5
  const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
7
6
  const abort_1 = require("../abort");
7
+ const admission_1 = require("../admission");
8
+ const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
8
9
  const channels_1 = require("../channels");
9
- const bound_session_response_target_1 = require("./bound-session-response-target");
10
10
  const diagnostics_1 = require("../diagnostics");
11
- const payload_codec_1 = require("../messaging/payload-codec");
12
- const protocol_1 = require("./protocol");
13
11
  const flow_context_1 = require("../diagnostics/flow-context");
12
+ const internal_event_contracts_1 = require("../diagnostics/internal-event-contracts");
13
+ const runtime_metrics_1 = require("../diagnostics/runtime-metrics");
14
+ const framework_errors_internal_1 = require("../framework-errors-internal");
15
+ const payload_codec_1 = require("../messaging/payload-codec");
16
+ const bound_session_response_target_1 = require("./bound-session-response-target");
14
17
  const managed_stream_1 = require("./managed-stream");
18
+ const protocol_1 = require("./protocol");
15
19
  const session_context_1 = require("./session-context");
16
20
  const session_serial_executor_1 = require("./session-serial-executor");
17
21
  const stream_message_utils_1 = require("./stream-message-utils");
18
- const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
19
- const application_job_queue_scope_2 = require("../application-jobs/application-job-queue-scope");
20
22
  const ZLINK_SEND_DONT_WAIT = 1;
21
23
  const ZLINK_RECV_DONT_WAIT = 1;
22
24
  const ZLINK_STREAM_HEARTBEAT_INTERVAL_MS = 1_000;
23
25
  const ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS = 5_000;
24
26
  const ZLINK_STREAM_APPLICATION_IDLE_TIMEOUT_MS = 30_000;
25
27
  const ZLINK_STREAM_RECEIVE_FRAME_BATCH_LIMIT = 64;
26
- const ZLINK_STREAM_ACTOR_BINDING_REPLACEMENT_CALLBACK_TIMEOUT_MS = 30_000;
27
28
  const ZLINK_STREAM_ACTOR_BINDING_REPLACEMENT_CLOSE_DELAY_MS = 100;
28
29
  const ZLINK_STREAM_MONITOR_IDLE_MIN_DELAY_MS = 1;
29
30
  const ZLINK_STREAM_MONITOR_IDLE_MAX_DELAY_MS = 20;
@@ -69,7 +70,7 @@ class ZLinkStreamSessionRuntime {
69
70
  metricsClosed = false;
70
71
  livenessClock;
71
72
  lastApplicationActivityAt = 0;
72
- awaitingPongSince;
73
+ lastInboundFrameAt = 0;
73
74
  livenessTimer;
74
75
  constructor(options, routingId, removeSession = () => { }) {
75
76
  this.options = options;
@@ -114,6 +115,7 @@ class ZLinkStreamSessionRuntime {
114
115
  this.serial.executeInfrastructure(async () => this.markConnected(localAddr, remoteAddr));
115
116
  }
116
117
  enqueuePacket(payload, decodedHeader, terminalOwner, applicationJobPermit) {
118
+ this.lastInboundFrameAt = Math.max(this.lastInboundFrameAt, this.livenessClock.now());
117
119
  let terminalReleased = false;
118
120
  const releaseTerminal = () => {
119
121
  if (terminalReleased)
@@ -248,7 +250,7 @@ class ZLinkStreamSessionRuntime {
248
250
  }
249
251
  forcedClose = true;
250
252
  void this.close().catch((error) => this.options.onError?.(error));
251
- }, this.options.replacementCallbackTimeoutMs ?? ZLINK_STREAM_ACTOR_BINDING_REPLACEMENT_CALLBACK_TIMEOUT_MS);
253
+ }, this.options.replacementCallbackTimeoutMs ?? Registration_1.DEFAULT_SESSION_REPLACEMENT_CALLBACK_TIMEOUT_MS);
252
254
  const callback = session.onActorBindingReplaced;
253
255
  if (callback === undefined) {
254
256
  completeCallback();
@@ -309,10 +311,12 @@ class ZLinkStreamSessionRuntime {
309
311
  return;
310
312
  }
311
313
  this.connected = true;
312
- this.lastApplicationActivityAt = this.livenessClock.now();
314
+ const connectedAt = this.livenessClock.now();
315
+ this.lastApplicationActivityAt = connectedAt;
316
+ this.lastInboundFrameAt = Math.max(this.lastInboundFrameAt, connectedAt);
313
317
  this.scheduleLivenessCheck();
314
- this.options.metrics?.change('zlink.stream.connections.active', 1, { transport: 'tcp' });
315
- this.options.metrics?.count('zlink.stream.connections.opened', 1, { transport: 'tcp' });
318
+ this.options.metrics?.change(runtime_metrics_1.METRIC_NAMES.StreamConnectionsActive, 1, { transport: 'tcp' });
319
+ this.options.metrics?.count(runtime_metrics_1.METRIC_NAMES.StreamConnectionsOpened, 1, { transport: 'tcp' });
316
320
  const session = await this.requireSession();
317
321
  await session.onConnected?.(this.context);
318
322
  }
@@ -389,7 +393,7 @@ class ZLinkStreamSessionRuntime {
389
393
  correlationId: streamCorr,
390
394
  sourceRid: this.context.routingId === undefined ? undefined : String(this.context.routingId)
391
395
  });
392
- (0, application_job_queue_scope_2.releaseApplicationJobPermitBeforeHandler)();
396
+ (0, application_job_queue_scope_1.releaseApplicationJobPermitBeforeHandler)();
393
397
  (0, diagnostics_1.flowIfEnabled)(this.options.dispatchErrors?.flow, ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dispatched)?.trace({
394
398
  outcome: ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dispatched,
395
399
  surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.StreamSession,
@@ -450,7 +454,6 @@ class ZLinkStreamSessionRuntime {
450
454
  return;
451
455
  }
452
456
  if (header.name === protocol_1.ZLINK_STREAM_HEARTBEAT_PONG) {
453
- this.awaitingPongSince = undefined;
454
457
  return;
455
458
  }
456
459
  if (header.name === protocol_1.ZLINK_STREAM_HEARTBEAT_PING) {
@@ -477,13 +480,11 @@ class ZLinkStreamSessionRuntime {
477
480
  await this.closeForLiveness(protocol_1.ZLinkStreamCloseReasonCode.IdleTimeout, 'idle_timeout', 'Application idle timeout.');
478
481
  return;
479
482
  }
480
- if (this.awaitingPongSince !== undefined &&
481
- now - this.awaitingPongSince >= ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS) {
483
+ if (now - this.lastInboundFrameAt >= ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS) {
482
484
  await this.closeForLiveness(protocol_1.ZLinkStreamCloseReasonCode.HeartbeatTimeout, 'heartbeat_timeout', 'Heartbeat timeout.');
483
485
  return;
484
486
  }
485
487
  await this.stream.writeControl(protocol_1.ZLINK_STREAM_HEARTBEAT_PING);
486
- this.awaitingPongSince ??= now;
487
488
  this.scheduleLivenessCheck();
488
489
  }
489
490
  async closeForLiveness(reason, closeReason, diagnostic) {
@@ -592,8 +593,8 @@ class ZLinkStreamSessionRuntime {
592
593
  async cleanup() {
593
594
  if (this.connected && !this.metricsClosed) {
594
595
  this.metricsClosed = true;
595
- this.options.metrics?.change('zlink.stream.connections.active', -1, { transport: 'tcp' });
596
- this.options.metrics?.count('zlink.stream.connections.closed', 1, {
596
+ this.options.metrics?.change(runtime_metrics_1.METRIC_NAMES.StreamConnectionsActive, -1, { transport: 'tcp' });
597
+ this.options.metrics?.count(runtime_metrics_1.METRIC_NAMES.StreamConnectionsClosed, 1, {
597
598
  transport: 'tcp',
598
599
  close_reason: normalizeStreamCloseReason(this.closeReason)
599
600
  });
@@ -688,7 +689,6 @@ class ZLinkStreamSessionNodeRuntime {
688
689
  unaddressedMonitorSessions = [];
689
690
  unaddressedMonitorSessionHead = 0;
690
691
  unaddressedMonitorSessionCount = 0;
691
- disconnectedEndpoints = new Set();
692
692
  pendingEndpointlessDisconnect;
693
693
  activityVersion = 0;
694
694
  stopped = false;
@@ -945,18 +945,13 @@ class ZLinkStreamSessionNodeRuntime {
945
945
  }
946
946
  switch (event.nativeEvent) {
947
947
  case internal_event_contracts_1.ZLinkSocketNativeEventType.ConnectionReady:
948
+ if (!event.readyEdge)
949
+ return;
948
950
  this.activityVersion += 1;
949
- {
950
- const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
951
- if (this.disconnectedEndpoints.delete(endpointKey)) {
952
- return;
953
- }
954
- }
955
951
  if (event.routingId === undefined) {
956
952
  const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
957
953
  const unaddressed = this.firstUnaddressedSession();
958
954
  if (unaddressed !== undefined) {
959
- this.disconnectedEndpoints.delete(endpointKey);
960
955
  unaddressed.enqueueConnected(event.localAddr, event.remoteAddr);
961
956
  this.enqueueUnaddressedMonitorSession(unaddressed.stream.sessionId);
962
957
  return;
@@ -976,7 +971,6 @@ class ZLinkStreamSessionNodeRuntime {
976
971
  case internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected:
977
972
  {
978
973
  const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
979
- this.disconnectedEndpoints.add(endpointKey);
980
974
  this.removePendingConnectionMetadata(endpointKey);
981
975
  const session = this.resolveMonitorSession(event);
982
976
  const error = new Error(`Stream disconnected: ${event.nativeEvent}/${event.value}`);
@@ -1035,8 +1029,7 @@ class ZLinkStreamSessionNodeRuntime {
1035
1029
  this.pendingConnectionMetadata.length = 0;
1036
1030
  this.pendingConnectionMetadataHead = 0;
1037
1031
  }
1038
- else if (this.pendingConnectionMetadataHead >= 1024 &&
1039
- this.pendingConnectionMetadataHead * 2 >= this.pendingConnectionMetadata.length) {
1032
+ else if ((0, admission_1.shouldCompactBackingArray)(this.pendingConnectionMetadataHead, this.pendingConnectionMetadata.length)) {
1040
1033
  this.pendingConnectionMetadata.splice(0, this.pendingConnectionMetadataHead);
1041
1034
  this.pendingConnectionMetadataHead = 0;
1042
1035
  }
@@ -1060,8 +1053,7 @@ class ZLinkStreamSessionNodeRuntime {
1060
1053
  this.unaddressedMonitorSessions.length = 0;
1061
1054
  this.unaddressedMonitorSessionHead = 0;
1062
1055
  }
1063
- else if (this.unaddressedMonitorSessionHead >= 1024 &&
1064
- this.unaddressedMonitorSessionHead * 2 >= this.unaddressedMonitorSessions.length) {
1056
+ else if ((0, admission_1.shouldCompactBackingArray)(this.unaddressedMonitorSessionHead, this.unaddressedMonitorSessions.length)) {
1065
1057
  this.unaddressedMonitorSessions.splice(0, this.unaddressedMonitorSessionHead);
1066
1058
  this.unaddressedMonitorSessionHead = 0;
1067
1059
  }
@@ -1,5 +1,5 @@
1
- import type { ZLinkWorkerCall } from '../../contracts';
2
- import type { ZLinkWorkerOptions } from '../configuration';
1
+ import { type ZLinkWorkerCall } from '../../contracts';
2
+ import { type ZLinkWorkerOptions } from '../configuration';
3
3
  export type ZLinkCpuWorkerWork<T> = (signal: AbortSignal) => T;
4
4
  export type ZLinkIoWorkerWork<T> = (signal: AbortSignal) => Promise<T>;
5
5
  export interface ZLinkWorkerRuntimeOptions {
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DefaultZLinkWorkerCall = exports.ZLinkWorkerRuntime = void 0;
4
4
  exports.resolveWorkerRuntimeOptions = resolveWorkerRuntimeOptions;
5
5
  exports.deliverOnSerial = deliverOnSerial;
6
- const framework_errors_internal_1 = require("../framework-errors-internal");
7
6
  const node_worker_threads_1 = require("node:worker_threads");
8
- const configuration_1 = require("../configuration");
9
7
  const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
10
8
  const abort_1 = require("../abort");
9
+ const admission_1 = require("../admission");
10
+ const configuration_1 = require("../configuration");
11
11
  const execution_1 = require("../execution");
12
+ const framework_errors_internal_1 = require("../framework-errors-internal");
12
13
  function resolveWorkerRuntimeOptions(options) {
13
14
  const resolved = {
14
15
  minThreads: options?.minThreads ?? InternalDefaults_1.DEFAULT_WORKER_MIN_THREADS,
@@ -264,7 +265,7 @@ class ZLinkCpuWorkerPool {
264
265
  this.queue.length = 0;
265
266
  this.queueHead = 0;
266
267
  }
267
- else if (this.queueHead >= 1024 && this.queueHead * 2 >= this.queue.length) {
268
+ else if ((0, admission_1.shouldCompactBackingArray)(this.queueHead, this.queue.length)) {
268
269
  this.queue.splice(0, this.queueHead);
269
270
  this.queueHead = 0;
270
271
  }
@@ -284,7 +285,7 @@ class ZLinkCpuWorkerPool {
284
285
  while (this.queueHead < this.queue.length && this.queue[this.queueHead] === undefined) {
285
286
  this.queueHead += 1;
286
287
  }
287
- if (this.queueHead >= 1024 && this.queueHead * 2 >= this.queue.length) {
288
+ if ((0, admission_1.shouldCompactBackingArray)(this.queueHead, this.queue.length)) {
288
289
  this.queue.splice(0, this.queueHead);
289
290
  this.queueHead = 0;
290
291
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zlink-systems/framework",
3
- "version": "0.25.0",
3
+ "version": "0.27.0",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,7 +19,7 @@
19
19
  "dependencies": {
20
20
  "@opentelemetry/api": "^1.9.1",
21
21
  "@opentelemetry/api-logs": "^0.221.0",
22
- "@zlink-systems/stream-wire": "0.25.0",
23
- "@zlink-systems/zlink": "1.7.0"
22
+ "@zlink-systems/stream-wire": "0.27.0",
23
+ "@zlink-systems/zlink": "1.14.0"
24
24
  }
25
25
  }
@@ -1,13 +1,6 @@
1
1
  import type { ZLinkFanoutPublishCall } from './Calls';
2
2
 
3
- export interface ZLinkFanoutListenerStatus {
4
- readonly channelName: string;
5
- readonly endpoint: string;
6
- readonly observedAt: Date;
7
- }
8
-
9
3
  export interface ZLinkFanoutClient {
10
4
  publish(channelName: string, event: unknown): ZLinkFanoutPublishCall;
11
5
  publish(channelName: string, topic: string, event: unknown): ZLinkFanoutPublishCall;
12
- getListenerStatus(channelName: string): ZLinkFanoutListenerStatus;
13
6
  }
@@ -4,3 +4,10 @@ export type RoutingId = string;
4
4
  export type ActorId = string;
5
5
  /** Global logical Spot identity. It is not a transport RoutingId. */
6
6
  export type SpotId = string;
7
+
8
+ export const ZLINK_MAX_ACTOR_ID_BYTES = 255;
9
+ export const ZLINK_MAX_SPOT_ID_BYTES = 255;
10
+ export const ZLINK_MAX_ROUTING_ID_BYTES = 255;
11
+ export const ZLINK_MAX_STABLE_TYPE_BYTES = 255;
12
+ export const ZLINK_MAX_MESH_NAME_BYTES = 255;
13
+ export const ZLINK_MAX_IDENTITY_TEXT_BYTES = 255;
@@ -1,5 +1,5 @@
1
1
  export * from './ActorRef';
2
- export * from './CoreTypes';
2
+ export type { Type, RoutingId, ActorId, SpotId } from './CoreTypes';
3
3
  export * from './ZLinkEncodedPayload';
4
4
  export * from './ZLinkMessageMetadata';
5
5
  export { ZLinkMessage, isZLinkMessage } from './ZLinkMessage';
@@ -3,6 +3,12 @@ import * as os from 'node:os';
3
3
  /** Default complete header plus payload size accepted by a StreamNode. */
4
4
  export const DEFAULT_STREAM_NODE_MAX_MESSAGE_SIZE = 64 * 1024;
5
5
 
6
+ /** service-wire 스키마가 정한 relocation chunk payload의 바이트 상한입니다. */
7
+ export const RELOCATION_STATE_CHUNK_DATA_MAX_BYTES = 67_108_864;
8
+
9
+ /** Default MeshNode pending activation limit (spec 03-mesh-node §5.1). */
10
+ export const DEFAULT_ACTIVATION_CONCURRENCY_LIMIT = 128;
11
+
6
12
  /** Defaults shared by registration normalization and the runtime worker pool. */
7
13
  export const DEFAULT_WORKER_MIN_THREADS = 0;
8
14
  export const DEFAULT_WORKER_IDLE_TIMEOUT_MS = 30_000;
@@ -10,3 +16,9 @@ export const DEFAULT_WORKER_IDLE_TIMEOUT_MS = 30_000;
10
16
  export function defaultWorkerMaxThreads(): number {
11
17
  return Math.max(2, os.availableParallelism());
12
18
  }
19
+
20
+ export const ZLINK_RELOCATION_MAX_BLOB_REFERENCE_BYTES = 4096;
21
+
22
+ export const AUTHORITY_ENVELOPE_MAX_BYTES = 1024 * 1024;
23
+ export const CREATION_INTENT_MAX_BYTES = 1024 * 1024;
24
+ export const CREATION_TERMINAL_ENVELOPE_MAX_BYTES = 1024 * 1024;
@@ -1,8 +1,9 @@
1
+ import { AutoHwmProfile } from '@zlink-systems/zlink';
1
2
  import type { ZLinkFrameworkOptions } from '../../contracts';
3
+ import { ZLINK_MAX_IDENTITY_TEXT_BYTES } from '../Common/CoreTypes';
2
4
  import { ZLinkApplicationJobQueueProfile } from '../Dispatch';
3
- export { ZLinkConfigurationException } from './ConfigurationException';
5
+ import { zlinkDefaultLocationOptions } from '../Locations/Options';
4
6
  import { createFrameworkOptions } from './RegistrationBuilders';
5
- export { createFrameworkOptions } from './RegistrationBuilders';
6
7
  import { createCodecRegistry } from './RegistrationCodecRegistry';
7
8
  import {
8
9
  actorFactoriesFromSpotNodes,
@@ -19,18 +20,22 @@ import {
19
20
  toSpotPublisherClientSet,
20
21
  toStreamNodeMap
21
22
  } from './RegistrationNormalizers';
23
+ import type {
24
+ ZLinkFrameworkRegistration,
25
+ ZLinkFrameworkRegistrationOptions
26
+ } from './RegistrationTypes';
27
+ import { validateFrameworkRegistration } from './RegistrationValidators';
28
+
29
+ export const DEFAULT_REQUEST_TIMEOUT_MS = 30_000;
30
+ export { ZLinkConfigurationException } from './ConfigurationException';
31
+ export { createFrameworkOptions } from './RegistrationBuilders';
22
32
  export {
23
33
  hasActorManager,
24
34
  hasSpotNode,
25
35
  hasSpotPublisherClient,
26
36
  requirePositiveInteger
27
37
  } from './RegistrationNormalizers';
28
- import type {
29
- ZLinkFrameworkRegistration,
30
- ZLinkFrameworkRegistrationOptions
31
- } from './RegistrationTypes';
32
38
  export * from './RegistrationTypes';
33
- import { validateFrameworkRegistration } from './RegistrationValidators';
34
39
  export { validateFrameworkRegistration };
35
40
  export {
36
41
  normalizeEndpoint,
@@ -38,11 +43,18 @@ export {
38
43
  parseEndpointHostPort
39
44
  } from './EndpointNotation';
40
45
 
41
- const DEFAULT_MESSAGE_FOLLOW_DURATION_MS = 30_000;
42
- const DEFAULT_SESSION_REPLACEMENT_CALLBACK_TIMEOUT_MS = 30_000;
46
+ export const DEFAULT_SESSION_REPLACEMENT_CALLBACK_TIMEOUT_MS = 30_000;
43
47
 
44
48
  export function createFrameworkRegistration(
45
49
  options: ZLinkFrameworkRegistrationOptions = {}
50
+ ): ZLinkFrameworkRegistration {
51
+ const registration = normalizeFrameworkRegistration(options);
52
+ validateFrameworkRegistration(registration, options);
53
+ return registration;
54
+ }
55
+
56
+ export function normalizeFrameworkRegistration(
57
+ options: ZLinkFrameworkRegistrationOptions
46
58
  ): ZLinkFrameworkRegistration {
47
59
  const codecRegistry = createCodecRegistry(options.codecs);
48
60
  const network = normalizeNetworkOptions(options.network);
@@ -66,7 +78,7 @@ export function createFrameworkRegistration(
66
78
  messageFollowDurationMs: normalizeNonNegativeInteger(
67
79
  options.messageFollowDurationMs,
68
80
  'messageFollowDurationMs',
69
- DEFAULT_MESSAGE_FOLLOW_DURATION_MS
81
+ zlinkDefaultLocationOptions.messageFollowDurationMs
70
82
  ),
71
83
  sessionReplacementCallbackTimeoutMs: normalizePositiveInteger(
72
84
  options.sessionReplacementCallbackTimeoutMs,
@@ -94,53 +106,75 @@ export function createFrameworkRegistration(
94
106
  applicationJobQueue: normalizeApplicationJobQueue(options.applicationJobQueue),
95
107
  locations: normalizeLocationRegistration(options.locations)
96
108
  };
97
- validateFrameworkRegistration(registration, options);
98
109
  return registration;
99
110
  }
100
111
 
101
- function normalizeApplicationJobQueue(
102
- value: ZLinkFrameworkRegistrationOptions['applicationJobQueue']
103
- ): NonNullable<ZLinkFrameworkRegistrationOptions['applicationJobQueue']> {
104
- const profile = value?.profile ?? ZLinkApplicationJobQueueProfile.Balanced;
105
- if (!Object.values(ZLinkApplicationJobQueueProfile).includes(profile)) {
106
- throw new TypeError('applicationJobQueue.profile must be a supported profile.');
107
- }
108
- const maxQueuedApplicationJobs = value?.maxQueuedApplicationJobs;
112
+ export const MAX_QUEUED_APPLICATION_JOBS = 2_147_483_647n;
113
+ export const DEFAULT_PAUSE_THRESHOLD_PERCENT = 80;
114
+ export const DEFAULT_RESUME_THRESHOLD_PERCENT = 60;
115
+ export const APPLICATION_JOB_QUEUE_PERCENT_SCALE = 100;
116
+
117
+ export function isKnownApplicationJobQueueProfile(
118
+ value: unknown
119
+ ): value is ZLinkApplicationJobQueueProfile {
120
+ return Object.values(ZLinkApplicationJobQueueProfile).includes(
121
+ value as ZLinkApplicationJobQueueProfile
122
+ );
123
+ }
124
+
125
+ export function validateApplicationJobQueueMaximum(
126
+ value: bigint | undefined,
127
+ createError: (message: string) => Error
128
+ ): void {
109
129
  if (
110
- maxQueuedApplicationJobs !== undefined &&
111
- (typeof maxQueuedApplicationJobs !== 'bigint' ||
112
- maxQueuedApplicationJobs < 1n ||
113
- maxQueuedApplicationJobs > 2_147_483_647n)
130
+ value !== undefined &&
131
+ (typeof value !== 'bigint' || value < 1n || value > MAX_QUEUED_APPLICATION_JOBS)
114
132
  ) {
115
- throw new TypeError(
116
- 'applicationJobQueue.maxQueuedApplicationJobs must be a bigint in the range 1..2147483647.'
133
+ throw createError(
134
+ `maxQueuedApplicationJobs must be a bigint in the range 1..${MAX_QUEUED_APPLICATION_JOBS}.`
117
135
  );
118
136
  }
119
- const pauseThresholdPercent = value?.pauseThresholdPercent ?? 80;
120
- const resumeThresholdPercent = value?.resumeThresholdPercent ?? 60;
121
- if (
122
- !Number.isInteger(pauseThresholdPercent) ||
123
- pauseThresholdPercent < 1 ||
124
- pauseThresholdPercent > 100
125
- ) {
126
- throw new TypeError(
127
- 'applicationJobQueue.pauseThresholdPercent must be an integer in the range 1..100.'
137
+ }
138
+
139
+ export function validateApplicationJobQueuePressureThresholds(
140
+ pause: number,
141
+ resume: number,
142
+ createError: (message: string) => Error
143
+ ): void {
144
+ if (!Number.isInteger(pause) || pause < 1 || pause > APPLICATION_JOB_QUEUE_PERCENT_SCALE) {
145
+ throw createError(
146
+ `pauseThresholdPercent must be an integer in the range 1..${APPLICATION_JOB_QUEUE_PERCENT_SCALE}.`
128
147
  );
129
148
  }
130
- if (
131
- !Number.isInteger(resumeThresholdPercent) ||
132
- resumeThresholdPercent < 0 ||
133
- resumeThresholdPercent > 99
134
- ) {
135
- throw new TypeError(
136
- 'applicationJobQueue.resumeThresholdPercent must be an integer in the range 0..99.'
149
+ if (!Number.isInteger(resume) || resume < 0 || resume >= APPLICATION_JOB_QUEUE_PERCENT_SCALE) {
150
+ throw createError(
151
+ `resumeThresholdPercent must be an integer in the range 0..${APPLICATION_JOB_QUEUE_PERCENT_SCALE - 1}.`
137
152
  );
138
153
  }
139
- if (resumeThresholdPercent >= pauseThresholdPercent) {
140
- throw new TypeError(
141
- 'applicationJobQueue.resumeThresholdPercent must be less than pauseThresholdPercent.'
142
- );
154
+ if (resume >= pause) {
155
+ throw createError('resumeThresholdPercent must be less than pauseThresholdPercent.');
143
156
  }
157
+ }
158
+
159
+ function normalizeApplicationJobQueue(
160
+ value: ZLinkFrameworkRegistrationOptions['applicationJobQueue']
161
+ ): NonNullable<ZLinkFrameworkRegistrationOptions['applicationJobQueue']> {
162
+ const profile = value?.profile ?? ZLinkApplicationJobQueueProfile.Balanced;
163
+ if (!isKnownApplicationJobQueueProfile(profile)) {
164
+ throw new TypeError('applicationJobQueue.profile must be a supported profile.');
165
+ }
166
+ const maxQueuedApplicationJobs = value?.maxQueuedApplicationJobs;
167
+ validateApplicationJobQueueMaximum(
168
+ maxQueuedApplicationJobs,
169
+ (message) => new TypeError(`applicationJobQueue.${message}`)
170
+ );
171
+ const pauseThresholdPercent = value?.pauseThresholdPercent ?? DEFAULT_PAUSE_THRESHOLD_PERCENT;
172
+ const resumeThresholdPercent = value?.resumeThresholdPercent ?? DEFAULT_RESUME_THRESHOLD_PERCENT;
173
+ validateApplicationJobQueuePressureThresholds(
174
+ pauseThresholdPercent,
175
+ resumeThresholdPercent,
176
+ (message) => new TypeError(`applicationJobQueue.${message}`)
177
+ );
144
178
  return Object.freeze({
145
179
  profile,
146
180
  maxQueuedApplicationJobs,
@@ -154,7 +188,10 @@ function normalizeCoreHwm(
154
188
  ): ZLinkFrameworkRegistrationOptions['coreHwm'] {
155
189
  if (value === undefined) return undefined;
156
190
  const { profile, memoryLimitBytes, budgetBytes } = value;
157
- if (profile !== undefined && (!Number.isInteger(profile) || profile < 0 || profile > 3)) {
191
+ if (
192
+ profile !== undefined &&
193
+ (!Number.isInteger(profile) || profile < 0 || profile > AutoHwmProfile.Throughput)
194
+ ) {
158
195
  throw new TypeError('coreHwm.profile must be a Core Auto HWM profile value.');
159
196
  }
160
197
  for (const [name, bytes] of [
@@ -183,8 +220,15 @@ function normalizeApplicationVersion(value: bigint | undefined): bigint {
183
220
  function normalizeMaintenanceWave(value: string | undefined): string | undefined {
184
221
  if (value === undefined) return undefined;
185
222
  const byteLength = typeof value === 'string' ? new TextEncoder().encode(value).byteLength : 0;
186
- if (typeof value !== 'string' || byteLength === 0 || byteLength > 255 || value.includes('\0')) {
187
- throw new TypeError('maintenanceWave must be a 1..255 byte UTF-8 string without NUL.');
223
+ if (
224
+ typeof value !== 'string' ||
225
+ byteLength === 0 ||
226
+ byteLength > ZLINK_MAX_IDENTITY_TEXT_BYTES ||
227
+ value.includes('\0')
228
+ ) {
229
+ throw new TypeError(
230
+ `maintenanceWave must be a 1..${ZLINK_MAX_IDENTITY_TEXT_BYTES} byte UTF-8 string without NUL.`
231
+ );
188
232
  }
189
233
  return value;
190
234
  }
@@ -1,5 +1,44 @@
1
- import type { Type, ZLinkEntrySpot, ZLinkSpot } from '../../contracts';
1
+ import type { Type, ZLinkEntrySpot, ZLinkSpot, ZLinkRelocationStore } from '../../contracts';
2
+ import { ZLINK_MAX_ROUTING_ID_BYTES } from '../Common/CoreTypes';
2
3
  import { ZLinkConfigurationException } from './ConfigurationException';
4
+ export const MAX_LISTENER_PORT = 65_535;
5
+
6
+ export function registerRelocationStore(
7
+ options: { relocationStoreInstance?: ZLinkRelocationStore },
8
+ store: ZLinkRelocationStore
9
+ ): void {
10
+ if (options.relocationStoreInstance !== undefined) {
11
+ throw new ZLinkConfigurationException('Relocation Store is already registered.');
12
+ }
13
+ options.relocationStoreInstance = store;
14
+ }
15
+ export function isValidListenerPort(value: number): boolean {
16
+ return Number.isInteger(value) && value >= 0 && value <= MAX_LISTENER_PORT;
17
+ }
18
+
19
+ export const ZLINK_MAX_CAPACITY = 0x7fff_ffff;
20
+ export function isValidPositiveCapacity(value: number): boolean {
21
+ return Number.isSafeInteger(value) && value > 0 && value <= ZLINK_MAX_CAPACITY;
22
+ }
23
+ export function isValidCapacity(value: number): boolean {
24
+ return Number.isSafeInteger(value) && value >= 0 && value <= ZLINK_MAX_CAPACITY;
25
+ }
26
+
27
+ export const ZLINK_DEFAULT_PUBLIC_WEIGHT = 100;
28
+ export const ZLINK_MAX_PUBLIC_WEIGHT = 10_000;
29
+
30
+ export function isValidPublicWeight(value: number): boolean {
31
+ return Number.isInteger(value) && value >= 0 && value <= ZLINK_MAX_PUBLIC_WEIGHT;
32
+ }
33
+
34
+ export function requirePublicWeight(value: number, label: string): number {
35
+ if (!isValidPublicWeight(value)) {
36
+ throw new ZLinkConfigurationException(
37
+ `${label} must be an integer in 0..${ZLINK_MAX_PUBLIC_WEIGHT}.`
38
+ );
39
+ }
40
+ return value;
41
+ }
3
42
 
4
43
  export function validateMessageFollowDuration(timeoutMs: number): number {
5
44
  if (!Number.isSafeInteger(timeoutMs) || timeoutMs < 0) {
@@ -69,7 +108,10 @@ export function validateRoutingIdPrefix(prefix: string): string {
69
108
  if (prefix.trim().length === 0 || prefix !== prefix.trim()) {
70
109
  throw new ZLinkConfigurationException('Routing-id prefix must not be empty or padded.');
71
110
  }
72
- if (Buffer.byteLength(`${prefix}-00000000-0000-0000-0000-000000000000`, 'utf8') > 255) {
111
+ if (
112
+ Buffer.byteLength(`${prefix}-00000000-0000-0000-0000-000000000000`, 'utf8') >
113
+ ZLINK_MAX_ROUTING_ID_BYTES
114
+ ) {
73
115
  throw new ZLinkConfigurationException(
74
116
  'Routing-id prefix is too long for a generated routing id.'
75
117
  );