@zlink-systems/framework 0.26.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
  3. package/dist/contracts/Channels/Calls.d.ts +1 -1
  4. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  5. package/dist/contracts/Common/CoreTypes.js +7 -0
  6. package/dist/contracts/Common/index.d.ts +1 -1
  7. package/dist/contracts/Common/index.js +0 -1
  8. package/dist/contracts/Configuration/Builders.d.ts +0 -1
  9. package/dist/contracts/Configuration/Configs.d.ts +0 -1
  10. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  11. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  12. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  13. package/dist/contracts/Configuration/Registration.js +58 -36
  14. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  15. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  16. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  17. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  18. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
  19. package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
  20. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  21. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  22. package/dist/contracts/Handlers/JsonContract.js +10 -4
  23. package/dist/contracts/Locations/Authority.d.ts +1 -1
  24. package/dist/contracts/Locations/Authority.js +3 -2
  25. package/dist/contracts/Locations/Options.js +1 -1
  26. package/dist/contracts/Locations/Stores.d.ts +12 -0
  27. package/dist/contracts/Locations/Stores.js +9 -0
  28. package/dist/contracts/Spots/Contracts.d.ts +2 -2
  29. package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
  30. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
  31. package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
  32. package/dist/internal.d.ts +4 -0
  33. package/dist/internal.js +15 -1
  34. package/dist/nest-integration.d.ts +4 -2
  35. package/dist/nest-integration.js +14 -4
  36. package/dist/runtime/abort.d.ts +1 -0
  37. package/dist/runtime/abort.js +8 -5
  38. package/dist/runtime/activation-admission.d.ts +1 -2
  39. package/dist/runtime/activation-admission.js +2 -6
  40. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  41. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  42. package/dist/runtime/actors/actor-client.d.ts +2 -2
  43. package/dist/runtime/actors/actor-client.js +49 -153
  44. package/dist/runtime/actors/actor-context.d.ts +3 -5
  45. package/dist/runtime/actors/actor-context.js +13 -11
  46. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  47. package/dist/runtime/actors/actor-handoff.js +8 -8
  48. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  49. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  50. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  51. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  52. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  53. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  54. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  55. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  56. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  57. package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
  58. package/dist/runtime/actors/actor-request-deadline.js +6 -0
  59. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  60. package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
  61. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  62. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  63. package/dist/runtime/actors/bound-session-wire.js +2 -7
  64. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  65. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  66. package/dist/runtime/actors/index.d.ts +9 -7
  67. package/dist/runtime/actors/index.js +87 -69
  68. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  69. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  70. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  71. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  72. package/dist/runtime/admission.d.ts +2 -0
  73. package/dist/runtime/admission.js +7 -1
  74. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  75. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  76. package/dist/runtime/backend/contracts/index.d.ts +7 -27
  77. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  78. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  79. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  80. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
  81. package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
  82. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  83. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
  84. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  85. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  86. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  87. package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
  88. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  89. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  90. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  91. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  92. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  93. package/dist/runtime/backend/runtime-values.js +2 -0
  94. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  95. package/dist/runtime/channels/channel-clients.js +73 -59
  96. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  97. package/dist/runtime/channels/channel-envelope.d.ts +1 -1
  98. package/dist/runtime/channels/channel-envelope.js +51 -39
  99. package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
  100. package/dist/runtime/channels/channel-outbound-operations.js +25 -42
  101. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  102. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  103. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  104. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  105. package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
  106. package/dist/runtime/channels/channel-runtime-manager.js +13 -10
  107. package/dist/runtime/channels/channel-socket-options.js +3 -12
  108. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  109. package/dist/runtime/channels/channel-socket-registry.js +240 -177
  110. package/dist/runtime/channels/channel-transports.d.ts +21 -31
  111. package/dist/runtime/channels/channel-transports.js +80 -62
  112. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  113. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  114. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  115. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  116. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  117. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  118. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  119. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  120. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  121. package/dist/runtime/channels/local-spot-route-transport.js +1 -3
  122. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
  123. package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
  124. package/dist/runtime/channels/source-spot-router.d.ts +1 -1
  125. package/dist/runtime/channels/source-spot-router.js +2 -4
  126. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  127. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  128. package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
  129. package/dist/runtime/channels/spot-node-route-transport.js +5 -5
  130. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
  131. package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
  132. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
  133. package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
  134. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  135. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  136. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  137. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  138. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  139. package/dist/runtime/diagnostics/flow-context.js +16 -2
  140. package/dist/runtime/diagnostics/index.d.ts +4 -2
  141. package/dist/runtime/diagnostics/index.js +14 -4
  142. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  143. package/dist/runtime/diagnostics/message-flow.js +10 -19
  144. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  145. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  146. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  147. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  148. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  149. package/dist/runtime/disposal.d.ts +5 -0
  150. package/dist/runtime/disposal.js +22 -0
  151. package/dist/runtime/execution/index.d.ts +12 -9
  152. package/dist/runtime/execution/index.js +58 -14
  153. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  154. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  155. package/dist/runtime/execution/state-lane.d.ts +8 -1
  156. package/dist/runtime/execution/state-lane.js +118 -3
  157. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  158. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  159. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  160. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  161. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  162. package/dist/runtime/foundation/operation-identity.js +9 -5
  163. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  164. package/dist/runtime/foundation/operation-registry.js +34 -44
  165. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  166. package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
  167. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  168. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  169. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  170. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  171. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  172. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  173. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  174. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  175. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  176. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  177. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  178. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  179. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  180. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  181. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  182. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  183. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  184. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  185. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  186. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  187. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  188. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  189. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  190. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  191. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  192. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  193. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  194. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  195. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  196. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  197. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  198. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  199. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  200. package/dist/runtime/framework-errors-internal.js +343 -122
  201. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  202. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  203. package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
  204. package/dist/runtime/host/actor-packet-relay.js +54 -99
  205. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  206. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  207. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  208. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  209. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  210. package/dist/runtime/host/application-job-queue.js +16 -33
  211. package/dist/runtime/host/bound-session-relay.js +1 -1
  212. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  213. package/dist/runtime/host/index.d.ts +14 -13
  214. package/dist/runtime/host/index.js +190 -171
  215. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  216. package/dist/runtime/host/instance-activation-authority.js +17 -45
  217. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  218. package/dist/runtime/host/location-runtime-owner.js +2 -2
  219. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  220. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  221. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  222. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  223. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  224. package/dist/runtime/host/remote-bound-session-relay.js +15 -28
  225. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  226. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  227. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  228. package/dist/runtime/host/runtime-shutdown.js +18 -21
  229. package/dist/runtime/host/service-relocation-control.js +6 -1
  230. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  231. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  232. package/dist/runtime/host/spot-address-transport.d.ts +3 -12
  233. package/dist/runtime/host/spot-address-transport.js +78 -220
  234. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  235. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  236. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  237. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  238. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  239. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  240. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  241. package/dist/runtime/locations/authority-key-codec.js +4 -3
  242. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  243. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  244. package/dist/runtime/locations/creation-operation-id.js +6 -4
  245. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  246. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  247. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  248. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  249. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  250. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  251. package/dist/runtime/locations/key-codec.js +3 -2
  252. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  253. package/dist/runtime/locations/lease-tracker.js +7 -11
  254. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  255. package/dist/runtime/locations/lifecycle.js +2 -31
  256. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  257. package/dist/runtime/locations/location-store-failure.js +7 -0
  258. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  259. package/dist/runtime/locations/location-store-pages.js +13 -0
  260. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  261. package/dist/runtime/locations/location-store-repository.js +309 -336
  262. package/dist/runtime/locations/relocation-blob.js +18 -5
  263. package/dist/runtime/locations/resolvers.d.ts +5 -5
  264. package/dist/runtime/locations/resolvers.js +37 -28
  265. package/dist/runtime/locations/runtime.d.ts +5 -4
  266. package/dist/runtime/locations/runtime.js +123 -92
  267. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  268. package/dist/runtime/locations/spot-location-claims.js +42 -1
  269. package/dist/runtime/messaging/payload-codec.js +26 -20
  270. package/dist/runtime/messaging/request-deadline.d.ts +3 -0
  271. package/dist/runtime/messaging/request-deadline.js +39 -0
  272. package/dist/runtime/messaging/submission-result.d.ts +4 -0
  273. package/dist/runtime/messaging/submission-result.js +56 -1
  274. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  275. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  276. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  277. package/dist/runtime/spots/index.d.ts +14 -20
  278. package/dist/runtime/spots/index.js +302 -176
  279. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  280. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  281. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  282. package/dist/runtime/spots/spot-activation-state.js +2 -2
  283. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  284. package/dist/runtime/spots/spot-activation.js +49 -32
  285. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  286. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  287. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  288. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  289. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  290. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  291. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  292. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  293. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  294. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  295. package/dist/runtime/spots/spot-context.d.ts +2 -2
  296. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  297. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  298. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  299. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  300. package/dist/runtime/spots/spot-manager-public.js +5 -4
  301. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  302. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  303. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  304. package/dist/runtime/spots/spot-outbound.d.ts +7 -8
  305. package/dist/runtime/spots/spot-outbound.js +21 -23
  306. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  307. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  308. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  309. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  310. package/dist/runtime/spots/spot-route-replies.js +3 -1
  311. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  312. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  313. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  314. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  315. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  316. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  317. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  318. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  319. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  320. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  321. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  322. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  323. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  324. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  325. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
  326. package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
  327. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  328. package/dist/runtime/streams/bound-session-service.js +12 -2
  329. package/dist/runtime/streams/index.d.ts +16 -17
  330. package/dist/runtime/streams/index.js +22 -23
  331. package/dist/runtime/streams/managed-stream.d.ts +5 -2
  332. package/dist/runtime/streams/managed-stream.js +20 -13
  333. package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
  334. package/dist/runtime/streams/protocol.d.ts +6 -33
  335. package/dist/runtime/streams/protocol.js +38 -110
  336. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  337. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  338. package/dist/runtime/streams/session-calls.d.ts +6 -8
  339. package/dist/runtime/streams/session-calls.js +6 -22
  340. package/dist/runtime/streams/session-context.d.ts +10 -10
  341. package/dist/runtime/streams/session-context.js +25 -10
  342. package/dist/runtime/streams/session-requests.js +2 -1
  343. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  344. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  345. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  346. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  347. package/dist/runtime/workers/index.d.ts +2 -2
  348. package/dist/runtime/workers/index.js +5 -4
  349. package/package.json +3 -3
  350. package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
  351. package/src/contracts/Channels/Calls.ts +1 -1
  352. package/src/contracts/Common/CoreTypes.ts +7 -0
  353. package/src/contracts/Common/index.ts +1 -1
  354. package/src/contracts/Configuration/Builders.ts +0 -1
  355. package/src/contracts/Configuration/Configs.ts +0 -1
  356. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  357. package/src/contracts/Configuration/Registration.ts +92 -48
  358. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  359. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
  360. package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
  361. package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
  362. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  363. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  364. package/src/contracts/Handlers/JsonContract.ts +14 -4
  365. package/src/contracts/Locations/Authority.ts +7 -3
  366. package/src/contracts/Locations/Options.ts +1 -1
  367. package/src/contracts/Locations/Stores.ts +14 -0
  368. package/src/contracts/Spots/Contracts.ts +2 -2
  369. package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
  370. package/src/contracts/Streams/IZLinkSession.ts +2 -3
  371. package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
  372. package/src/internal.ts +14 -0
  373. package/src/nest-integration.ts +28 -10
  374. package/src/runtime/abort.ts +6 -5
  375. package/src/runtime/activation-admission.ts +2 -8
  376. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  377. package/src/runtime/actors/actor-client.ts +85 -218
  378. package/src/runtime/actors/actor-context.ts +39 -33
  379. package/src/runtime/actors/actor-handoff.ts +24 -22
  380. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  381. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  382. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  383. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  384. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  385. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  386. package/src/runtime/actors/actor-request-deadline.ts +4 -0
  387. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  388. package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
  389. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  390. package/src/runtime/actors/bound-session-wire.ts +2 -8
  391. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  392. package/src/runtime/actors/index.ts +100 -79
  393. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  394. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  395. package/src/runtime/admission.ts +8 -1
  396. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  397. package/src/runtime/backend/contracts/index.ts +14 -37
  398. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  399. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  400. package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
  401. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
  402. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  403. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  404. package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
  405. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  406. package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
  407. package/src/runtime/backend/raw-binding-port.ts +1 -1
  408. package/src/runtime/backend/runtime-values.ts +4 -1
  409. package/src/runtime/channels/channel-clients.ts +139 -102
  410. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  411. package/src/runtime/channels/channel-envelope.ts +74 -57
  412. package/src/runtime/channels/channel-outbound-operations.ts +40 -55
  413. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  414. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  415. package/src/runtime/channels/channel-runtime-manager.ts +12 -30
  416. package/src/runtime/channels/channel-socket-options.ts +8 -15
  417. package/src/runtime/channels/channel-socket-registry.ts +291 -196
  418. package/src/runtime/channels/channel-transports.ts +168 -145
  419. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  420. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  421. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  422. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  423. package/src/runtime/channels/local-spot-route-transport.ts +1 -5
  424. package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
  425. package/src/runtime/channels/source-spot-router.ts +2 -9
  426. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  427. package/src/runtime/channels/spot-node-route-transport.ts +7 -9
  428. package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
  429. package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
  430. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  431. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  432. package/src/runtime/diagnostics/flow-context.ts +16 -2
  433. package/src/runtime/diagnostics/index.ts +27 -17
  434. package/src/runtime/diagnostics/message-flow.ts +15 -25
  435. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  436. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  437. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  438. package/src/runtime/disposal.ts +19 -0
  439. package/src/runtime/execution/index.ts +60 -20
  440. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  441. package/src/runtime/execution/state-lane.ts +142 -4
  442. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  443. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  444. package/src/runtime/foundation/operation-identity.ts +11 -5
  445. package/src/runtime/foundation/operation-registry.ts +33 -50
  446. package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
  447. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  448. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  449. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  450. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  451. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  452. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  453. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  454. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  455. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  456. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  457. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  458. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  459. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  460. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  461. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  462. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  463. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  464. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  465. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  466. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  467. package/src/runtime/framework-errors-internal.ts +380 -134
  468. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  469. package/src/runtime/host/actor-packet-relay.ts +63 -160
  470. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  471. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  472. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  473. package/src/runtime/host/application-job-queue.ts +28 -34
  474. package/src/runtime/host/bound-session-relay.ts +1 -2
  475. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  476. package/src/runtime/host/index.ts +327 -320
  477. package/src/runtime/host/instance-activation-authority.ts +89 -109
  478. package/src/runtime/host/location-runtime-owner.ts +4 -2
  479. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  480. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  481. package/src/runtime/host/remote-bound-session-relay.ts +16 -57
  482. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  483. package/src/runtime/host/runtime-shutdown.ts +17 -21
  484. package/src/runtime/host/service-relocation-control.ts +14 -1
  485. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  486. package/src/runtime/host/spot-address-transport.ts +175 -356
  487. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  488. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  489. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  490. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  491. package/src/runtime/locations/authority-key-codec.ts +7 -3
  492. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  493. package/src/runtime/locations/creation-operation-id.ts +6 -3
  494. package/src/runtime/locations/domain-store-contract.ts +12 -3
  495. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  496. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  497. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  498. package/src/runtime/locations/key-codec.ts +3 -2
  499. package/src/runtime/locations/lease-tracker.ts +8 -14
  500. package/src/runtime/locations/lifecycle.ts +13 -43
  501. package/src/runtime/locations/location-store-failure.ts +4 -0
  502. package/src/runtime/locations/location-store-pages.ts +18 -0
  503. package/src/runtime/locations/location-store-repository.ts +457 -482
  504. package/src/runtime/locations/relocation-blob.ts +17 -6
  505. package/src/runtime/locations/resolvers.ts +75 -49
  506. package/src/runtime/locations/runtime.ts +220 -110
  507. package/src/runtime/locations/spot-location-claims.ts +58 -1
  508. package/src/runtime/messaging/payload-codec.ts +35 -24
  509. package/src/runtime/messaging/request-deadline.ts +58 -0
  510. package/src/runtime/messaging/submission-result.ts +72 -2
  511. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  512. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  513. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  514. package/src/runtime/spots/index.ts +433 -229
  515. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  516. package/src/runtime/spots/spot-activation-state.ts +2 -2
  517. package/src/runtime/spots/spot-activation.ts +67 -37
  518. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  519. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  520. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  521. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  522. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  523. package/src/runtime/spots/spot-context.ts +3 -3
  524. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  525. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  526. package/src/runtime/spots/spot-manager-public.ts +21 -17
  527. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  528. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  529. package/src/runtime/spots/spot-outbound.ts +59 -47
  530. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  531. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  532. package/src/runtime/spots/spot-route-replies.ts +6 -4
  533. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  534. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  535. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  536. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  537. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  538. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  539. package/src/runtime/spots/spot-timer.ts +3 -2
  540. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  541. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  542. package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
  543. package/src/runtime/streams/bound-session-service.ts +22 -2
  544. package/src/runtime/streams/index.ts +78 -68
  545. package/src/runtime/streams/managed-stream.ts +32 -23
  546. package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
  547. package/src/runtime/streams/protocol.ts +34 -88
  548. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  549. package/src/runtime/streams/session-calls.ts +11 -36
  550. package/src/runtime/streams/session-context.ts +60 -25
  551. package/src/runtime/streams/session-requests.ts +2 -1
  552. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  553. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  554. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  555. package/src/runtime/workers/index.ts +13 -12
  556. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  557. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  558. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  559. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  560. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  561. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,12 +1,16 @@
1
1
  import type { Type, ZLinkSpot } from '../../contracts';
2
+ import { zlinkDefaultLocationOptions } from '../Locations';
2
3
  import { ZLinkConfigurationException } from './ConfigurationException';
4
+ import { requirePublicFanoutTopic } from './FanoutTopic';
5
+ import { RELOCATION_STATE_CHUNK_DATA_MAX_BYTES } from './InternalDefaults';
6
+ import { requirePublicWeight } from './RegistrationBuilderPolicy';
3
7
  import { requirePositiveInteger } from './RegistrationNormalizers';
4
8
  import type {
5
9
  ZLinkFrameworkRegistration,
6
10
  ZLinkFrameworkRegistrationOptions,
11
+ ZLinkMeshChannelOptions,
7
12
  ZLinkRouteChannelOptions,
8
13
  ZLinkRouteMeshChannelOptions,
9
- ZLinkMeshChannelOptions,
10
14
  ZLinkSpotNodeOptions,
11
15
  ZLinkSpotPubSubCapabilityOptions,
12
16
  ZLinkSpotRouterCapabilityOptions,
@@ -14,10 +18,9 @@ import type {
14
18
  ZLinkWorkerOptions
15
19
  } from './RegistrationTypes';
16
20
  import { isRouteClientEnabled, isRouteTransportDeclared } from './RouteChannelInternalState';
17
- import { validateTimerRegistration } from './TimerRegistrationValidator';
18
- import { zlinkDefaultLocationOptions } from '../Locations';
19
21
  import { requireValidSendTimeoutMs } from './SendTimeoutValidation';
20
- import { requirePublicFanoutTopic } from './FanoutTopic';
22
+ import { validateTimerRegistration } from './TimerRegistrationValidator';
23
+ const ROUTE_CACHE_FOLLOW_MARGIN_MS = 5000;
21
24
 
22
25
  export function validateFrameworkRegistration(
23
26
  registration: ZLinkFrameworkRegistration,
@@ -132,11 +135,12 @@ function validateLocationRegistration(registration: ZLinkFrameworkRegistration):
132
135
  }
133
136
  }
134
137
  if (
135
- options.ownerLeaseRenewIntervalMs + options.ownerLeaseRenewTimeoutMs >=
138
+ Math.max(options.ownerLeaseRenewIntervalMs, options.ownerLeaseRenewTimeoutMs) +
139
+ options.ownerLeaseRenewTimeoutMs >=
136
140
  options.ownerLeaseTtlMs - options.ownerLeaseFencingMarginMs
137
141
  ) {
138
142
  throw new ZLinkConfigurationException(
139
- 'ownerLeaseRenewIntervalMs + ownerLeaseRenewTimeoutMs must be less than ownerLeaseTtlMs - ownerLeaseFencingMarginMs.'
143
+ 'max(ownerLeaseRenewIntervalMs, ownerLeaseRenewTimeoutMs) + ownerLeaseRenewTimeoutMs must be less than ownerLeaseTtlMs - ownerLeaseFencingMarginMs.'
140
144
  );
141
145
  }
142
146
  for (const [name, value] of Object.entries({
@@ -147,9 +151,9 @@ function validateLocationRegistration(registration: ZLinkFrameworkRegistration):
147
151
  throw new ZLinkConfigurationException(`${name} must be a positive integer.`);
148
152
  }
149
153
  }
150
- if (options.relocationPayloadChunkLimitBytes > 67_108_864) {
154
+ if (options.relocationPayloadChunkLimitBytes > RELOCATION_STATE_CHUNK_DATA_MAX_BYTES) {
151
155
  throw new ZLinkConfigurationException(
152
- 'relocationPayloadChunkLimitBytes must not exceed the 64 MiB wire chunk bound.'
156
+ `relocationPayloadChunkLimitBytes must not exceed the ${RELOCATION_STATE_CHUNK_DATA_MAX_BYTES / (1024 * 1024)} MiB wire chunk bound.`
153
157
  );
154
158
  }
155
159
  for (const [name, value] of Object.entries({
@@ -173,10 +177,10 @@ function validateLocationRegistration(registration: ZLinkFrameworkRegistration):
173
177
  if (
174
178
  options.routeCacheMaxAgeMs > 0 &&
175
179
  options.messageFollowDurationMs > 0 &&
176
- options.routeCacheMaxAgeMs > options.messageFollowDurationMs - 5000
180
+ options.routeCacheMaxAgeMs > options.messageFollowDurationMs - ROUTE_CACHE_FOLLOW_MARGIN_MS
177
181
  ) {
178
182
  throw new ZLinkConfigurationException(
179
- 'routeCacheMaxAgeMs must be at least 5000 ms shorter than messageFollowDurationMs.'
183
+ `routeCacheMaxAgeMs must be at least ${ROUTE_CACHE_FOLLOW_MARGIN_MS} ms shorter than messageFollowDurationMs.`
180
184
  );
181
185
  }
182
186
  }
@@ -232,6 +236,10 @@ function validateChannelCapabilities(
232
236
  requireSocketOptions(`channel '${channelName}' server`, channel.server);
233
237
  }
234
238
  if (channel.publisher !== undefined) {
239
+ requireValidSendTimeoutMs(
240
+ `channel '${channelName}' publisher sendTimeoutMs`,
241
+ channel.publisher.sendTimeoutMs
242
+ );
235
243
  requireEndpoint(`channel '${channelName}' publisher`, channel.publisher.bind);
236
244
  validateListenerNetworkIdentity(
237
245
  `channel '${channelName}' publisher`,
@@ -714,9 +722,7 @@ function requirePeerWeight(label: string, value: number | undefined): void {
714
722
  if (value === undefined) {
715
723
  return;
716
724
  }
717
- if (!Number.isInteger(value) || value < 0 || value > 10_000) {
718
- throw new ZLinkConfigurationException(`${label} must be an integer in 0..10000.`);
719
- }
725
+ requirePublicWeight(value, label);
720
726
  }
721
727
 
722
728
  function requireSocketOptions(
@@ -724,14 +730,12 @@ function requireSocketOptions(
724
730
  options: {
725
731
  readonly sendHighWaterMark?: number;
726
732
  readonly receiveHighWaterMark?: number;
727
- readonly sendTimeoutMs?: number;
728
733
  readonly maxMessageSize?: number;
729
734
  }
730
735
  ): void {
731
736
  requireNonNegativeInteger(`${label} sendHighWaterMark`, options.sendHighWaterMark);
732
737
  requireNonNegativeInteger(`${label} receiveHighWaterMark`, options.receiveHighWaterMark);
733
738
  requireNonNegativeInteger(`${label} maxMessageSize`, options.maxMessageSize);
734
- requireValidSendTimeoutMs(`${label} sendTimeoutMs`, options.sendTimeoutMs);
735
739
  }
736
740
 
737
741
  function requireRouteMeshSocketOptions(
@@ -739,10 +743,8 @@ function requireRouteMeshSocketOptions(
739
743
  options: {
740
744
  readonly sendHighWaterMark?: number;
741
745
  readonly receiveHighWaterMark?: number;
742
- readonly sendTimeoutMs?: number;
743
746
  }
744
747
  ): void {
745
748
  requireNonNegativeInteger(`${label} sendHighWaterMark`, options.sendHighWaterMark);
746
749
  requireNonNegativeInteger(`${label} receiveHighWaterMark`, options.receiveHighWaterMark);
747
- requireValidSendTimeoutMs(`${label} sendTimeoutMs`, options.sendTimeoutMs);
748
750
  }
@@ -1,6 +1,8 @@
1
1
  import { ZLinkTimerOverrunPolicy, type ZLinkTimerOptions } from '../Timers';
2
2
  import { ZLinkConfigurationException } from './ConfigurationException';
3
3
 
4
+ const MAX_TIMER_CATCH_UP_TICKS = 2_147_483_647;
5
+
4
6
  export function validateTimerRegistration(
5
7
  name: string,
6
8
  periodMs: number,
@@ -23,10 +25,10 @@ export function validateTimerRegistration(
23
25
  (options.maxCatchUpTicks === undefined ||
24
26
  !Number.isInteger(options.maxCatchUpTicks) ||
25
27
  options.maxCatchUpTicks < 1 ||
26
- options.maxCatchUpTicks > 2_147_483_647)
28
+ options.maxCatchUpTicks > MAX_TIMER_CATCH_UP_TICKS)
27
29
  ) {
28
30
  throw new ZLinkConfigurationException(
29
- 'SPOT timer MaxCatchUpTicks must be an integer from 1 through 2,147,483,647.'
31
+ `SPOT timer MaxCatchUpTicks must be an integer from 1 through ${MAX_TIMER_CATCH_UP_TICKS.toLocaleString('en-US')}.`
30
32
  );
31
33
  }
32
34
  }
@@ -194,6 +194,7 @@ export type ZLinkDispatchErrorReason =
194
194
  | 'reply_path_missing'
195
195
  | 'unexpected_reply'
196
196
  | 'backpressure'
197
+ | 'target_closed'
197
198
  | 'stale_target'
198
199
  | 'shutdown';
199
200
 
@@ -1,3 +1,5 @@
1
+ const MAX_CONTRACT_SCHEMA_DEPTH = 64;
2
+
1
3
  /** Describes the fields accepted by the default framework-json-v1 serializer. */
2
4
  export type ZLinkJsonSchema =
3
5
  | { readonly type: 'boolean' }
@@ -75,9 +77,13 @@ function normalizeJsonSchema(
75
77
  // Keep the runtime boundary defensive for JavaScript callers even though
76
78
  // the TypeScript signature describes the accepted shape.
77
79
  const runtimeSchema: unknown = schema;
78
- if (typeof runtimeSchema !== 'object' || runtimeSchema === null || depth > 64) {
80
+ if (
81
+ typeof runtimeSchema !== 'object' ||
82
+ runtimeSchema === null ||
83
+ depth > MAX_CONTRACT_SCHEMA_DEPTH
84
+ ) {
79
85
  throw new TypeError(
80
- 'ZLink packet JSON schema must be an acyclic object with at most 64 levels.'
86
+ `ZLink packet JSON schema must be an acyclic object with at most ${MAX_CONTRACT_SCHEMA_DEPTH} levels.`
81
87
  );
82
88
  }
83
89
  const normalizedSchema = runtimeSchema as ZLinkJsonSchema;
@@ -147,7 +153,7 @@ function normalizeJsonSchema(
147
153
  for (const [name, property] of Object.entries(
148
154
  runtimeProperties as Record<string, ZLinkJsonSchema>
149
155
  )) {
150
- if (name === '__proto__' || name === 'prototype' || name === 'constructor') {
156
+ if (isPrototypeKey(name)) {
151
157
  throw new TypeError(`ZLink packet JSON property '${name}' is not allowed.`);
152
158
  }
153
159
  properties[name] = normalizeJsonSchema(property, nextParents, depth + 1);
@@ -156,7 +162,7 @@ function normalizeJsonSchema(
156
162
  throw new TypeError('ZLink packet JSON required properties must be unique.');
157
163
  }
158
164
  for (const name of normalizedSchema.required) {
159
- if (name === '__proto__' || name === 'prototype' || name === 'constructor') {
165
+ if (isPrototypeKey(name)) {
160
166
  throw new TypeError(`ZLink packet JSON property '${name}' is not allowed.`);
161
167
  }
162
168
  if (!Object.prototype.hasOwnProperty.call(properties, name)) {
@@ -204,3 +210,7 @@ function canonicalContract(value: unknown): string {
204
210
  .map(([key, item]) => `${JSON.stringify(key)}:${canonicalContract(item)}`)
205
211
  .join(',')}}`;
206
212
  }
213
+
214
+ function isPrototypeKey(name: string): boolean {
215
+ return name === '__proto__' || name === 'prototype' || name === 'constructor';
216
+ }
@@ -70,7 +70,7 @@ export type ZLinkAuthorityMutation =
70
70
  | {
71
71
  readonly kind: 'put';
72
72
  readonly payload: Uint8Array;
73
- readonly generationTransition: 'preserve';
73
+ readonly generationTransition: 'preserve' | 'reincarnate';
74
74
  }
75
75
  | {
76
76
  /** Rebinds an authority retained by the same owner after lease recovery. */
@@ -101,13 +101,17 @@ export interface ZLinkAuthorityEntry {
101
101
  readonly snapshot: ZLinkAuthoritySnapshot;
102
102
  }
103
103
 
104
+ const ZLINK_AUTHORITY_MAX_SCAN_CURSOR_BYTES = 4096;
105
+
104
106
  export class ZLinkAuthorityScanCursor {
105
107
  private constructor(readonly encoded: string) {}
106
108
 
107
109
  static from(encoded: string): ZLinkAuthorityScanCursor {
108
110
  const byteLength = Buffer.byteLength(encoded, 'utf8');
109
- if (byteLength < 1 || byteLength > 4096) {
110
- throw new RangeError('Authority scan cursor must contain 1..4096 UTF-8 bytes.');
111
+ if (byteLength < 1 || byteLength > ZLINK_AUTHORITY_MAX_SCAN_CURSOR_BYTES) {
112
+ throw new RangeError(
113
+ `Authority scan cursor must contain 1..${ZLINK_AUTHORITY_MAX_SCAN_CURSOR_BYTES} UTF-8 bytes.`
114
+ );
111
115
  }
112
116
  return new ZLinkAuthorityScanCursor(encoded);
113
117
  }
@@ -26,7 +26,7 @@ export const zlinkRuntimeDefaultLocationOptions: Readonly<
26
26
  ownerLeaseRenewIntervalMs: 5000,
27
27
  ownerLeaseTtlMs: 15000,
28
28
  pollingIntervalMs: 1000,
29
- listPageSize: 1000,
29
+ listPageSize: 100,
30
30
  storeFailureGraceMs: 30000,
31
31
  ownerLeaseFencingMarginMs: 5000,
32
32
  ownerLeaseRenewTimeoutMs: 3000,
@@ -1,3 +1,12 @@
1
+ export const ZLINK_PROVIDER_MAX_PAGE_SIZE = 1000;
2
+ export const ZLINK_PROVIDER_MAX_KEY_BYTES = 1024;
3
+ export const ZLINK_PROVIDER_MAX_VALUE_BYTES = 1024 * 1024;
4
+ export const ZLINK_PROVIDER_MAX_VERSION_BYTES = 4096;
5
+ export const ZLINK_PROVIDER_MAX_WRITE_KEYS = 2048;
6
+ export const ZLINK_PROVIDER_MAX_WRITE_BYTES = 4 * 1024 * 1024;
7
+ export const ZLINK_PROVIDER_MAX_ENCODED_PAGE_BYTES = 4 * 1024 * 1024;
8
+ export const ZLINK_PROVIDER_MAX_SCAN_CURSOR_BYTES = 4096;
9
+
1
10
  declare const zlinkStoreKeyBrand: unique symbol;
2
11
  declare const zlinkStoreVersionBrand: unique symbol;
3
12
  declare const zlinkStoreScanCursorBrand: unique symbol;
@@ -34,6 +43,11 @@ export type ZLinkStoreCondition =
34
43
  readonly kind: 'version';
35
44
  readonly key: ZLinkStoreKey;
36
45
  readonly expected: ZLinkStoreVersion;
46
+ }
47
+ | {
48
+ readonly kind: 'value';
49
+ readonly key: ZLinkStoreKey;
50
+ readonly expected: Uint8Array;
37
51
  };
38
52
 
39
53
  export type ZLinkStoreMutation =
@@ -32,7 +32,7 @@ export interface ZLinkWorkerCall<T> {
32
32
  export interface ZLinkSpotCommonContext<TSpot = ZLinkSpot> {
33
33
  readonly meshName: string;
34
34
  readonly spotId: SpotId;
35
- readonly objectGeneration: number;
35
+ readonly objectGeneration: bigint;
36
36
  readonly nodeRid: RoutingId;
37
37
  readonly outbound: ZLinkSpotOutbound;
38
38
  addTimer<THandler extends ZLinkSpotTimerHandler<TSpot>>(
@@ -96,7 +96,7 @@ export interface ZLinkSpotSendCall {
96
96
  instanceSpot(): this;
97
97
  instanceSpot(instanceSpotType: string): this;
98
98
  inMesh(meshName: string): this;
99
- submit(signal?: AbortSignal): Promise<void>;
99
+ submit(): Promise<void>;
100
100
  }
101
101
 
102
102
  export interface ZLinkSpotRequestCall {
@@ -5,5 +5,5 @@ export interface ZLinkBoundSession {
5
5
 
6
6
  export interface ZLinkBoundSessionSendCall {
7
7
  metadata(key: string, value: string): this;
8
- submit(signal?: AbortSignal): Promise<void>;
8
+ submit(): Promise<void>;
9
9
  }
@@ -42,11 +42,10 @@ export interface ZLinkSessionClient {
42
42
  export interface ZLinkSessionSendCall {
43
43
  metadata(key: string, value: string): this;
44
44
  compress(enabled?: boolean): this;
45
- timeout(timeoutMs: number): this;
46
- submit(signal?: AbortSignal): Promise<void>;
45
+ submit(): Promise<void>;
47
46
  }
48
47
 
49
48
  export interface ZLinkSessionReplyCall {
50
49
  compress(enabled?: boolean): this;
51
- submit(signal?: AbortSignal): Promise<void>;
50
+ submit(): Promise<void>;
52
51
  }
@@ -11,11 +11,7 @@ export interface ZLinkSessionActors {
11
11
  export interface ZLinkSessionActor {
12
12
  readonly actorId: string;
13
13
  readonly ref: ActorRef;
14
- relay(payload: ZLinkMessage, signal?: AbortSignal): Promise<void>;
15
- relay(
16
- dispatch: ZLinkSessionDispatchContext,
17
- payload: ZLinkMessage,
18
- signal?: AbortSignal
19
- ): Promise<void>;
14
+ relay(payload: ZLinkMessage): Promise<void>;
15
+ relay(dispatch: ZLinkSessionDispatchContext, payload: ZLinkMessage): Promise<void>;
20
16
  notifyDisconnected(signal?: AbortSignal): Promise<void>;
21
17
  }
package/src/internal.ts CHANGED
@@ -29,3 +29,17 @@ export * from './runtime/foundation';
29
29
  export * from './runtime/foundation/service-authority-payload-codec';
30
30
  export * from './runtime/framework-errors-internal';
31
31
  export * from './contracts/Configuration/Registration';
32
+
33
+ export * from './contracts/Locations/Stores';
34
+ export { ZLINK_RELOCATION_MAX_BLOB_REFERENCE_BYTES } from './contracts/Configuration/InternalDefaults';
35
+ export { ZLINK_MAX_STABLE_TYPE_BYTES } from './contracts/Common/CoreTypes';
36
+ export {
37
+ MAX_LISTENER_PORT,
38
+ ZLINK_MAX_PUBLIC_WEIGHT,
39
+ ZLINK_MAX_CAPACITY,
40
+ isValidPublicWeight,
41
+ isValidPositiveCapacity,
42
+ isValidListenerPort,
43
+ isValidCapacity,
44
+ requirePublicWeight
45
+ } from './contracts/Configuration/RegistrationBuilderPolicy';
@@ -1,14 +1,17 @@
1
1
  export {
2
2
  ZLinkConfigurationException,
3
3
  createFrameworkRegistration,
4
+ normalizeFrameworkRegistration,
4
5
  hasActorManager,
5
6
  hasSpotNode,
6
7
  hasSpotPublisherClient
7
8
  } from './contracts/Configuration/Registration';
8
9
  export type * from './contracts/Configuration/RegistrationTypes';
9
10
  export type * from './contracts';
11
+ export { ZLinkSpotActorSend, ZLinkSpotActorRequest } from './contracts/Handlers/Attributes';
10
12
  export {
11
13
  registerActorFactory,
14
+ registerRelocationStore,
12
15
  validateRoutingIdPrefix,
13
16
  registerEntrySpot,
14
17
  registerSpotFactory,
@@ -73,6 +76,10 @@ export {
73
76
  registerHandlerFilterScope as registerIntegrationHandlerFilterScope,
74
77
  type ZLinkHandlerFilterScopeRunner
75
78
  } from './runtime/channels/handler-filter-scope';
79
+ export {
80
+ disposeOwnedInstance as disposeIntegrationHandler,
81
+ disposeOwnedInstances as disposeIntegrationHandlers
82
+ } from './runtime/handlers/handler-instance-scope';
76
83
 
77
84
  export interface ZLinkNestIntegrationRuntimeHost extends Pick<
78
85
  import('./contracts').ZLinkFrameworkRuntime,
@@ -134,7 +141,13 @@ export function createIntegrationChannelClient(
134
141
  registration: ZLinkFrameworkRegistration,
135
142
  runtime: ZLinkNestIntegrationRuntimeHost
136
143
  ): ZLinkChannelClient {
137
- return new DefaultZLinkChannelClient(registration, runtimeHost(runtime).channelTransport);
144
+ const host = runtimeHost(runtime);
145
+ return new DefaultZLinkChannelClient(
146
+ registration,
147
+ host.channelTransport,
148
+ host.routeTransport,
149
+ host.spotRouterChannelIdForMesh
150
+ );
138
151
  }
139
152
 
140
153
  export function createIntegrationFanoutClient(
@@ -152,7 +165,8 @@ export function createIntegrationRouteClient(
152
165
  return new DefaultZLinkRouteClient(
153
166
  registration,
154
167
  host.routeTransport,
155
- host.spotRouterChannelIdForMesh
168
+ host.spotRouterChannelIdForMesh,
169
+ host.channelTransport
156
170
  );
157
171
  }
158
172
 
@@ -180,14 +194,17 @@ export function createIntegrationActorManager(
180
194
  ): ZLinkActorManager {
181
195
  const host = runtimeHost(runtime);
182
196
  const runtimeOptions = host.createActorManagerOptions();
183
- const manager = new DefaultZLinkActorManager({
184
- actorFactories: registration.actorFactories,
185
- ...runtimeOptions,
186
- boundSessionFactory:
187
- runtimeOptions.boundSessionFactory ??
188
- host.boundSessionFactory.create.bind(host.boundSessionFactory),
189
- providerResolver
190
- });
197
+ const manager = new DefaultZLinkActorManager(
198
+ {
199
+ actorFactories: registration.actorFactories,
200
+ ...runtimeOptions,
201
+ boundSessionFactory:
202
+ runtimeOptions.boundSessionFactory ??
203
+ host.boundSessionFactory.create.bind(host.boundSessionFactory),
204
+ providerResolver
205
+ },
206
+ host.detachedTaskRunner()
207
+ );
191
208
  host.setActorManager(manager);
192
209
  return manager;
193
210
  }
@@ -229,6 +246,7 @@ export function createIntegrationSpotManager(
229
246
  ...(spotNode.spotActorRequestHandlers ?? [])
230
247
  ]),
231
248
  ...runtimeOptions,
249
+ detachedTaskRunner: host.detachedTaskRunner(),
232
250
  spotRouteResolver: runtimeOptions.spotRouteResolver,
233
251
  routedTransport: host.routeTransport,
234
252
  providerResolver,
@@ -38,15 +38,15 @@ export function throwIfAborted(signal: AbortSignal | undefined): void {
38
38
  }
39
39
  }
40
40
 
41
+ export function macrotaskBoundary(): Promise<void> {
42
+ return new Promise((resolve) => setImmediate(resolve));
43
+ }
44
+
41
45
  export function awaitWithAbort<T>(
42
46
  operation: Promise<T>,
43
47
  signal: AbortSignal | undefined,
44
48
  abortOperation?: () => void
45
49
  ): Promise<T> {
46
- if (signal?.aborted === true) {
47
- abortOperation?.();
48
- throw createAbortError();
49
- }
50
50
  if (signal === undefined) {
51
51
  return operation;
52
52
  }
@@ -63,7 +63,6 @@ export function awaitWithAbort<T>(
63
63
  abortOperation?.();
64
64
  reject(createAbortError());
65
65
  };
66
- signal.addEventListener('abort', abort, { once: true });
67
66
  operation.then(
68
67
  (value) => {
69
68
  if (settle()) resolve(value);
@@ -72,5 +71,7 @@ export function awaitWithAbort<T>(
72
71
  if (settle()) reject(error);
73
72
  }
74
73
  );
74
+ if (signal.aborted) abort();
75
+ else signal.addEventListener('abort', abort, { once: true });
75
76
  });
76
77
  }
@@ -10,7 +10,6 @@ export interface ZLinkActivationConcurrency {
10
10
  }
11
11
 
12
12
  interface ZLinkActivationRecord {
13
- readonly meshName: string;
14
13
  readonly limit: number;
15
14
  active: number;
16
15
  }
@@ -27,10 +26,7 @@ interface ZLinkActivationRecord {
27
26
  export class ZLinkActivationAdmission {
28
27
  private readonly records = new Map<string, ZLinkActivationRecord>();
29
28
 
30
- constructor(
31
- private readonly limitOf: (meshName: string) => number,
32
- private readonly changed?: (meshName: string) => void
33
- ) {}
29
+ constructor(private readonly limitOf: (meshName: string) => number) {}
34
30
 
35
31
  current(meshName: string): ZLinkActivationConcurrency {
36
32
  const record = this.records.get(meshName);
@@ -57,20 +53,18 @@ export class ZLinkActivationAdmission {
57
53
  );
58
54
  }
59
55
  record.active += 1;
60
- this.changed?.(meshName);
61
56
  let released = false;
62
57
  return () => {
63
58
  if (released) return;
64
59
  released = true;
65
60
  record.active -= 1;
66
- this.changed?.(meshName);
67
61
  };
68
62
  }
69
63
 
70
64
  private record(meshName: string): ZLinkActivationRecord {
71
65
  let record = this.records.get(meshName);
72
66
  if (record === undefined) {
73
- record = { meshName, limit: this.limitOf(meshName), active: 0 };
67
+ record = { limit: this.limitOf(meshName), active: 0 };
74
68
  this.records.set(meshName, record);
75
69
  }
76
70
  return record;
@@ -1,13 +1,29 @@
1
- import type { RoutingId } from '../../contracts';
2
- import { ZLinkSpotKind, zlinkSpotKindFromWire, zlinkSpotKindToWire } from '../../contracts';
1
+ import { UINT64_MAX } from '@zlink-systems/stream-wire';
2
+ import {
3
+ type RoutingId,
4
+ ZLinkSpotKind,
5
+ zlinkSpotKindFromWire,
6
+ zlinkSpotKindToWire
7
+ } from '../../contracts';
8
+
9
+ import { ZLINK_MAX_ROUTING_ID_BYTES } from '../../contracts/Common/CoreTypes';
10
+ import { AUTHORITY_ENVELOPE_MAX_BYTES } from '../../contracts/Configuration/InternalDefaults';
3
11
  import { crc32c } from '../foundation/service-relocation-runtime';
12
+ import { SERVICE_WIRE_TEXT8_MAX_BYTES } from '../foundation/service-wire-binary-primitives';
4
13
  import { decodeRoutingId, encodeRoutingIdStorageHex } from '../routing-id';
5
14
 
6
15
  const AUTHORITY_MAGIC = Buffer.from([0x5a, 0x4c, 0x41, 0x55]);
7
16
  const AUTHORITY_VERSION = 1;
8
17
  const AUTHORITY_FLAGS = 0;
9
18
  const ACTOR_RELOCATION_MAGIC = Buffer.from([0x5a, 0x4c, 0x41, 0x50]);
10
- const MAXIMUM_BYTES = 1024 * 1024;
19
+ const AUTHORITY_MINIMUM_BYTES = 15;
20
+ const ACTOR_RELOCATION_MINIMUM_BYTES = 32;
21
+ const ACTOR_RELOCATION_VERSION_WITHOUT_SESSION_FENCE = 5;
22
+ const ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE = 6;
23
+ const ACTOR_RELOCATION_FIRST_PHASE = 1;
24
+ const ACTOR_RELOCATION_STEADY_PHASE = 4;
25
+ const ENTRY_SPOT_WIRE_KIND = zlinkSpotKindToWire(ZLinkSpotKind.Entry);
26
+ const USER_SPOT_WIRE_KIND = zlinkSpotKindToWire(ZLinkSpotKind.User);
11
27
  const FATAL_UTF8 = new TextDecoder('utf-8', { fatal: true });
12
28
 
13
29
  export type ZLinkActorAuthorityState = 'creating' | 'ready';
@@ -47,8 +63,10 @@ export function encodeCanonicalAuthorityPayload(value: ZLinkCanonicalAuthorityPa
47
63
  body
48
64
  );
49
65
  const encoded = concat(envelope, u32be(crc32c(envelope)));
50
- if (encoded.byteLength > MAXIMUM_BYTES) {
51
- throw new RangeError('Actor authority payload exceeds 1 MiB.');
66
+ if (encoded.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES) {
67
+ throw new RangeError(
68
+ `Actor authority payload exceeds ${AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`
69
+ );
52
70
  }
53
71
  return encoded;
54
72
  }
@@ -59,7 +77,10 @@ export function decodeCanonicalAuthorityPayload(
59
77
  ): ZLinkCanonicalAuthorityPayload | undefined {
60
78
  try {
61
79
  const reader = new BigEndianReader(payload);
62
- if (reader.bytes.byteLength < 15 || reader.bytes.byteLength > MAXIMUM_BYTES) {
80
+ if (
81
+ reader.bytes.byteLength < AUTHORITY_MINIMUM_BYTES ||
82
+ reader.bytes.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES
83
+ ) {
63
84
  return undefined;
64
85
  }
65
86
  reader.expect(AUTHORITY_MAGIC);
@@ -81,7 +102,7 @@ export function decodeCanonicalAuthorityPayload(
81
102
  /** Byte-exact Node counterpart of .NET ZLinkActorAuthorityPayloadCodec.Encode. */
82
103
  export function encodeActorAuthorityPayload(value: ZLinkActorAuthorityPayload): Buffer {
83
104
  const spotKind = zlinkSpotKindToWire(value.currentSpotKind);
84
- if (spotKind !== 1 && spotKind !== 2) {
105
+ if (spotKind !== ENTRY_SPOT_WIRE_KIND && spotKind !== USER_SPOT_WIRE_KIND) {
85
106
  throw new RangeError('Actor currentSpotKind must be Entry or User.');
86
107
  }
87
108
  const actor = concat(
@@ -173,7 +194,7 @@ export function actorRelocationAuthorityApplicationPayload(
173
194
  const current = decodeActorRelocationEnvelope(payload);
174
195
  return current === undefined
175
196
  ? Buffer.from(payload)
176
- : current.phase === 4
197
+ : current.phase === ACTOR_RELOCATION_STEADY_PHASE
177
198
  ? Buffer.from(current.applicationPayload)
178
199
  : undefined;
179
200
  }
@@ -196,8 +217,10 @@ export function replaceActorRelocationAuthorityApplicationPayload(
196
217
  applicationPayload
197
218
  );
198
219
  const encoded = concat(withoutChecksum, u32le(crc32c(withoutChecksum)));
199
- if (encoded.byteLength > MAXIMUM_BYTES) {
200
- throw new RangeError('Actor relocation authority payload exceeds 1 MiB.');
220
+ if (encoded.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES) {
221
+ throw new RangeError(
222
+ `Actor relocation authority payload exceeds ${AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`
223
+ );
201
224
  }
202
225
  return encoded;
203
226
  }
@@ -205,7 +228,11 @@ export function replaceActorRelocationAuthorityApplicationPayload(
205
228
  function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnvelope | undefined {
206
229
  try {
207
230
  const bytes = Buffer.from(payload);
208
- if (bytes.byteLength < 32 || bytes.byteLength > MAXIMUM_BYTES) return undefined;
231
+ if (
232
+ bytes.byteLength < ACTOR_RELOCATION_MINIMUM_BYTES ||
233
+ bytes.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES
234
+ )
235
+ return undefined;
209
236
  const checksumOffset = bytes.byteLength - 4;
210
237
  if (bytes.readUInt32LE(checksumOffset) !== crc32c(bytes.subarray(0, checksumOffset))) {
211
238
  return undefined;
@@ -213,10 +240,15 @@ function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnve
213
240
  const reader = new LittleEndianReader(bytes.subarray(0, checksumOffset));
214
241
  reader.expect(ACTOR_RELOCATION_MAGIC);
215
242
  const version = reader.u16();
216
- if (version !== 5 && version !== 6) return undefined;
243
+ if (
244
+ version !== ACTOR_RELOCATION_VERSION_WITHOUT_SESSION_FENCE &&
245
+ version !== ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE
246
+ )
247
+ return undefined;
217
248
  if (reader.take(16).every((byte) => byte === 0)) return undefined;
218
249
  const phase = reader.u8();
219
- if (phase < 1 || phase > 4) return undefined;
250
+ if (phase < ACTOR_RELOCATION_FIRST_PHASE || phase > ACTOR_RELOCATION_STEADY_PHASE)
251
+ return undefined;
220
252
  const isBound = reader.bool();
221
253
  if (isBound) {
222
254
  reader.bytes8();
@@ -230,7 +262,7 @@ function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnve
230
262
  const ownerLeaseGeneration = reader.u64();
231
263
  const sessionOwnerNodeGeneration = reader.u64();
232
264
  reader.u64();
233
- if (version === 6) {
265
+ if (version === ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE) {
234
266
  reader.text16();
235
267
  reader.u64();
236
268
  }
@@ -247,7 +279,7 @@ function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnve
247
279
  }
248
280
  const prefix = Buffer.from(reader.bytes.subarray(0, reader.offset));
249
281
  const applicationLength = reader.i32();
250
- if (applicationLength < 1 || applicationLength > MAXIMUM_BYTES) return undefined;
282
+ if (applicationLength < 1 || applicationLength > AUTHORITY_ENVELOPE_MAX_BYTES) return undefined;
251
283
  const applicationPayload = Buffer.from(reader.take(applicationLength));
252
284
  if (!reader.done) return undefined;
253
285
  return { prefix, phase, applicationPayload };
@@ -258,22 +290,28 @@ function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnve
258
290
 
259
291
  function text8(value: string, name: string): Buffer {
260
292
  const bytes = Buffer.from(value, 'utf8');
261
- if (bytes.byteLength < 1 || bytes.byteLength > 0xff || bytes.includes(0)) {
262
- throw new RangeError(`${name} must contain 1..255 UTF-8 bytes without NUL.`);
293
+ if (
294
+ bytes.byteLength < 1 ||
295
+ bytes.byteLength > SERVICE_WIRE_TEXT8_MAX_BYTES ||
296
+ bytes.includes(0)
297
+ ) {
298
+ throw new RangeError(
299
+ `${name} must contain 1..${SERVICE_WIRE_TEXT8_MAX_BYTES} UTF-8 bytes without NUL.`
300
+ );
263
301
  }
264
302
  return concat(Buffer.of(bytes.byteLength), bytes);
265
303
  }
266
304
 
267
305
  function rid(value: RoutingId, name: string): Buffer {
268
306
  const bytes = Buffer.from(encodeRoutingIdStorageHex(value), 'hex');
269
- if (bytes.byteLength < 1 || bytes.byteLength > 0xff) {
270
- throw new RangeError(`${name} must contain 1..255 bytes.`);
307
+ if (bytes.byteLength < 1 || bytes.byteLength > ZLINK_MAX_ROUTING_ID_BYTES) {
308
+ throw new RangeError(`${name} must contain 1..${ZLINK_MAX_ROUTING_ID_BYTES} bytes.`);
271
309
  }
272
310
  return concat(Buffer.of(bytes.byteLength), bytes);
273
311
  }
274
312
 
275
313
  function nonzeroU64be(value: bigint, name: string): Buffer {
276
- if (value === 0n || value < 0n || value > 0xffff_ffff_ffff_ffffn) {
314
+ if (value === 0n || value < 0n || value > UINT64_MAX) {
277
315
  throw new RangeError(`${name} must be a non-zero u64.`);
278
316
  }
279
317
  const result = Buffer.alloc(8);