@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
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.defineZLinkPacketJsonContract = defineZLinkPacketJsonContract;
4
4
  exports.readZLinkPacketJsonContract = readZLinkPacketJsonContract;
5
+ const MAX_CONTRACT_SCHEMA_DEPTH = 64;
5
6
  const ZLINK_PACKET_JSON_CONTRACTS = Symbol.for('@zlink-systems/framework:packet-json-contracts');
6
7
  function defineZLinkPacketJsonContract(packetName, contract) {
7
8
  if (packetName.trim().length === 0) {
@@ -35,8 +36,10 @@ function normalizeJsonSchema(schema, parents, depth) {
35
36
  // Keep the runtime boundary defensive for JavaScript callers even though
36
37
  // the TypeScript signature describes the accepted shape.
37
38
  const runtimeSchema = schema;
38
- if (typeof runtimeSchema !== 'object' || runtimeSchema === null || depth > 64) {
39
- throw new TypeError('ZLink packet JSON schema must be an acyclic object with at most 64 levels.');
39
+ if (typeof runtimeSchema !== 'object' ||
40
+ runtimeSchema === null ||
41
+ depth > MAX_CONTRACT_SCHEMA_DEPTH) {
42
+ throw new TypeError(`ZLink packet JSON schema must be an acyclic object with at most ${MAX_CONTRACT_SCHEMA_DEPTH} levels.`);
40
43
  }
41
44
  const normalizedSchema = runtimeSchema;
42
45
  if (parents.has(normalizedSchema))
@@ -95,7 +98,7 @@ function normalizeJsonSchema(schema, parents, depth) {
95
98
  }
96
99
  const properties = {};
97
100
  for (const [name, property] of Object.entries(runtimeProperties)) {
98
- if (name === '__proto__' || name === 'prototype' || name === 'constructor') {
101
+ if (isPrototypeKey(name)) {
99
102
  throw new TypeError(`ZLink packet JSON property '${name}' is not allowed.`);
100
103
  }
101
104
  properties[name] = normalizeJsonSchema(property, nextParents, depth + 1);
@@ -104,7 +107,7 @@ function normalizeJsonSchema(schema, parents, depth) {
104
107
  throw new TypeError('ZLink packet JSON required properties must be unique.');
105
108
  }
106
109
  for (const name of normalizedSchema.required) {
107
- if (name === '__proto__' || name === 'prototype' || name === 'constructor') {
110
+ if (isPrototypeKey(name)) {
108
111
  throw new TypeError(`ZLink packet JSON property '${name}' is not allowed.`);
109
112
  }
110
113
  if (!Object.prototype.hasOwnProperty.call(properties, name)) {
@@ -147,3 +150,6 @@ function canonicalContract(value) {
147
150
  .map(([key, item]) => `${JSON.stringify(key)}:${canonicalContract(item)}`)
148
151
  .join(',')}}`;
149
152
  }
153
+ function isPrototypeKey(name) {
154
+ return name === '__proto__' || name === 'prototype' || name === 'constructor';
155
+ }
@@ -60,7 +60,7 @@ export type ZLinkAuthorityReadResult = {
60
60
  export type ZLinkAuthorityMutation = {
61
61
  readonly kind: 'put';
62
62
  readonly payload: Uint8Array;
63
- readonly generationTransition: 'preserve';
63
+ readonly generationTransition: 'preserve' | 'reincarnate';
64
64
  } | {
65
65
  /** Rebinds an authority retained by the same owner after lease recovery. */
66
66
  readonly kind: 'rebindOwnerLease';
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkAuthorityScanCursor = void 0;
4
+ const ZLINK_AUTHORITY_MAX_SCAN_CURSOR_BYTES = 4096;
4
5
  class ZLinkAuthorityScanCursor {
5
6
  encoded;
6
7
  constructor(encoded) {
@@ -8,8 +9,8 @@ class ZLinkAuthorityScanCursor {
8
9
  }
9
10
  static from(encoded) {
10
11
  const byteLength = Buffer.byteLength(encoded, 'utf8');
11
- if (byteLength < 1 || byteLength > 4096) {
12
- throw new RangeError('Authority scan cursor must contain 1..4096 UTF-8 bytes.');
12
+ if (byteLength < 1 || byteLength > ZLINK_AUTHORITY_MAX_SCAN_CURSOR_BYTES) {
13
+ throw new RangeError(`Authority scan cursor must contain 1..${ZLINK_AUTHORITY_MAX_SCAN_CURSOR_BYTES} UTF-8 bytes.`);
13
14
  }
14
15
  return new ZLinkAuthorityScanCursor(encoded);
15
16
  }
@@ -5,7 +5,7 @@ exports.zlinkRuntimeDefaultLocationOptions = {
5
5
  ownerLeaseRenewIntervalMs: 5000,
6
6
  ownerLeaseTtlMs: 15000,
7
7
  pollingIntervalMs: 1000,
8
- listPageSize: 1000,
8
+ listPageSize: 100,
9
9
  storeFailureGraceMs: 30000,
10
10
  ownerLeaseFencingMarginMs: 5000,
11
11
  ownerLeaseRenewTimeoutMs: 3000,
@@ -1,3 +1,11 @@
1
+ export declare const ZLINK_PROVIDER_MAX_PAGE_SIZE = 1000;
2
+ export declare const ZLINK_PROVIDER_MAX_KEY_BYTES = 1024;
3
+ export declare const ZLINK_PROVIDER_MAX_VALUE_BYTES: number;
4
+ export declare const ZLINK_PROVIDER_MAX_VERSION_BYTES = 4096;
5
+ export declare const ZLINK_PROVIDER_MAX_WRITE_KEYS = 2048;
6
+ export declare const ZLINK_PROVIDER_MAX_WRITE_BYTES: number;
7
+ export declare const ZLINK_PROVIDER_MAX_ENCODED_PAGE_BYTES: number;
8
+ export declare const ZLINK_PROVIDER_MAX_SCAN_CURSOR_BYTES = 4096;
1
9
  declare const zlinkStoreKeyBrand: unique symbol;
2
10
  declare const zlinkStoreVersionBrand: unique symbol;
3
11
  declare const zlinkStoreScanCursorBrand: unique symbol;
@@ -33,6 +41,10 @@ export type ZLinkStoreCondition = {
33
41
  readonly kind: 'version';
34
42
  readonly key: ZLinkStoreKey;
35
43
  readonly expected: ZLinkStoreVersion;
44
+ } | {
45
+ readonly kind: 'value';
46
+ readonly key: ZLinkStoreKey;
47
+ readonly expected: Uint8Array;
36
48
  };
37
49
  export type ZLinkStoreMutation = {
38
50
  readonly kind: 'put';
@@ -1,2 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZLINK_PROVIDER_MAX_SCAN_CURSOR_BYTES = exports.ZLINK_PROVIDER_MAX_ENCODED_PAGE_BYTES = exports.ZLINK_PROVIDER_MAX_WRITE_BYTES = exports.ZLINK_PROVIDER_MAX_WRITE_KEYS = exports.ZLINK_PROVIDER_MAX_VERSION_BYTES = exports.ZLINK_PROVIDER_MAX_VALUE_BYTES = exports.ZLINK_PROVIDER_MAX_KEY_BYTES = exports.ZLINK_PROVIDER_MAX_PAGE_SIZE = void 0;
4
+ exports.ZLINK_PROVIDER_MAX_PAGE_SIZE = 1000;
5
+ exports.ZLINK_PROVIDER_MAX_KEY_BYTES = 1024;
6
+ exports.ZLINK_PROVIDER_MAX_VALUE_BYTES = 1024 * 1024;
7
+ exports.ZLINK_PROVIDER_MAX_VERSION_BYTES = 4096;
8
+ exports.ZLINK_PROVIDER_MAX_WRITE_KEYS = 2048;
9
+ exports.ZLINK_PROVIDER_MAX_WRITE_BYTES = 4 * 1024 * 1024;
10
+ exports.ZLINK_PROVIDER_MAX_ENCODED_PAGE_BYTES = 4 * 1024 * 1024;
11
+ exports.ZLINK_PROVIDER_MAX_SCAN_CURSOR_BYTES = 4096;
@@ -123,11 +123,19 @@ export interface ZLinkHostCapacityStatus {
123
123
  }
124
124
  export interface ZLinkFrameworkRuntime {
125
125
  readonly status: ZLinkFrameworkRuntimeStatus;
126
+ getListenerStatus(kind: ZLinkListenerKind, name: string): ZLinkListenerStatus;
126
127
  observe(signal?: AbortSignal): AsyncIterable<ZLinkObservedStatus<ZLinkFrameworkRuntimeStatus>>;
127
128
  resetCapacityMetrics(): void;
128
129
  relocate(options: ZLinkFrameworkRelocationOptions): Promise<ZLinkFrameworkRelocationResult>;
129
130
  shutdown(options?: ZLinkFrameworkLifecycleOptions): Promise<ZLinkFrameworkTerminationResult>;
130
131
  }
132
+ export type ZLinkListenerKind = 'routeMesh' | 'clientServer' | 'fanout' | 'stream';
133
+ export interface ZLinkListenerStatus {
134
+ readonly kind: ZLinkListenerKind;
135
+ readonly name: string;
136
+ readonly endpoint: string;
137
+ readonly observedAt: Date;
138
+ }
131
139
  export type ZLinkClientServerRole = 'client' | 'server' | 'clientAndServer';
132
140
  export interface ZLinkClientServerTargetStatus {
133
141
  readonly nodeRid: RoutingId;
@@ -22,7 +22,7 @@ export interface ZLinkWorkerCall<T> {
22
22
  export interface ZLinkSpotCommonContext<TSpot = ZLinkSpot> {
23
23
  readonly meshName: string;
24
24
  readonly spotId: SpotId;
25
- readonly objectGeneration: number;
25
+ readonly objectGeneration: bigint;
26
26
  readonly nodeRid: RoutingId;
27
27
  readonly outbound: ZLinkSpotOutbound;
28
28
  addTimer<THandler extends ZLinkSpotTimerHandler<TSpot>>(name: string, periodMs: number, handlerType: Type<THandler>, options?: ZLinkTimerOptions, signal?: AbortSignal): Promise<ZLinkTimer>;
@@ -3,6 +3,7 @@ export * from './index';
3
3
  export * from './runtime/diagnostics';
4
4
  export * from './runtime/host';
5
5
  export * from './runtime/admission';
6
+ export * from './runtime/activation-admission';
6
7
  export * from './runtime/streams';
7
8
  export * from './runtime/streams/protocol';
8
9
  export * from './runtime/actors';
@@ -24,3 +25,7 @@ export * from './runtime/foundation';
24
25
  export * from './runtime/foundation/service-authority-payload-codec';
25
26
  export * from './runtime/framework-errors-internal';
26
27
  export * from './contracts/Configuration/Registration';
28
+ export * from './contracts/Locations/Stores';
29
+ export { ZLINK_RELOCATION_MAX_BLOB_REFERENCE_BYTES } from './contracts/Configuration/InternalDefaults';
30
+ export { ZLINK_MAX_STABLE_TYPE_BYTES } from './contracts/Common/CoreTypes';
31
+ export { MAX_LISTENER_PORT, ZLINK_MAX_PUBLIC_WEIGHT, ZLINK_MAX_CAPACITY, isValidPublicWeight, isValidPositiveCapacity, isValidListenerPort, isValidCapacity, requirePublicWeight } from './contracts/Configuration/RegistrationBuilderPolicy';
package/dist/internal.js CHANGED
@@ -14,12 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.ZLinkLocationWriteStatus = exports.ZLinkLocationWriteIntent = exports.ZLinkRouteKind = exports.ZLinkLocationKind = exports.ZLinkLocationAutoConnectType = void 0;
17
+ exports.requirePublicWeight = exports.isValidCapacity = exports.isValidListenerPort = exports.isValidPositiveCapacity = exports.isValidPublicWeight = exports.ZLINK_MAX_CAPACITY = exports.ZLINK_MAX_PUBLIC_WEIGHT = exports.MAX_LISTENER_PORT = exports.ZLINK_MAX_STABLE_TYPE_BYTES = exports.ZLINK_RELOCATION_MAX_BLOB_REFERENCE_BYTES = exports.ZLinkLocationWriteStatus = exports.ZLinkLocationWriteIntent = exports.ZLinkRouteKind = exports.ZLinkLocationKind = exports.ZLinkLocationAutoConnectType = void 0;
18
18
  /** Test and companion-package integration surface. It is not exported by package.json. */
19
19
  __exportStar(require("./index"), exports);
20
20
  __exportStar(require("./runtime/diagnostics"), exports);
21
21
  __exportStar(require("./runtime/host"), exports);
22
22
  __exportStar(require("./runtime/admission"), exports);
23
+ __exportStar(require("./runtime/activation-admission"), exports);
23
24
  __exportStar(require("./runtime/streams"), exports);
24
25
  __exportStar(require("./runtime/streams/protocol"), exports);
25
26
  __exportStar(require("./runtime/actors"), exports);
@@ -46,3 +47,17 @@ __exportStar(require("./runtime/foundation"), exports);
46
47
  __exportStar(require("./runtime/foundation/service-authority-payload-codec"), exports);
47
48
  __exportStar(require("./runtime/framework-errors-internal"), exports);
48
49
  __exportStar(require("./contracts/Configuration/Registration"), exports);
50
+ __exportStar(require("./contracts/Locations/Stores"), exports);
51
+ var InternalDefaults_1 = require("./contracts/Configuration/InternalDefaults");
52
+ Object.defineProperty(exports, "ZLINK_RELOCATION_MAX_BLOB_REFERENCE_BYTES", { enumerable: true, get: function () { return InternalDefaults_1.ZLINK_RELOCATION_MAX_BLOB_REFERENCE_BYTES; } });
53
+ var CoreTypes_1 = require("./contracts/Common/CoreTypes");
54
+ Object.defineProperty(exports, "ZLINK_MAX_STABLE_TYPE_BYTES", { enumerable: true, get: function () { return CoreTypes_1.ZLINK_MAX_STABLE_TYPE_BYTES; } });
55
+ var RegistrationBuilderPolicy_1 = require("./contracts/Configuration/RegistrationBuilderPolicy");
56
+ Object.defineProperty(exports, "MAX_LISTENER_PORT", { enumerable: true, get: function () { return RegistrationBuilderPolicy_1.MAX_LISTENER_PORT; } });
57
+ Object.defineProperty(exports, "ZLINK_MAX_PUBLIC_WEIGHT", { enumerable: true, get: function () { return RegistrationBuilderPolicy_1.ZLINK_MAX_PUBLIC_WEIGHT; } });
58
+ Object.defineProperty(exports, "ZLINK_MAX_CAPACITY", { enumerable: true, get: function () { return RegistrationBuilderPolicy_1.ZLINK_MAX_CAPACITY; } });
59
+ Object.defineProperty(exports, "isValidPublicWeight", { enumerable: true, get: function () { return RegistrationBuilderPolicy_1.isValidPublicWeight; } });
60
+ Object.defineProperty(exports, "isValidPositiveCapacity", { enumerable: true, get: function () { return RegistrationBuilderPolicy_1.isValidPositiveCapacity; } });
61
+ Object.defineProperty(exports, "isValidListenerPort", { enumerable: true, get: function () { return RegistrationBuilderPolicy_1.isValidListenerPort; } });
62
+ Object.defineProperty(exports, "isValidCapacity", { enumerable: true, get: function () { return RegistrationBuilderPolicy_1.isValidCapacity; } });
63
+ Object.defineProperty(exports, "requirePublicWeight", { enumerable: true, get: function () { return RegistrationBuilderPolicy_1.requirePublicWeight; } });
@@ -1,7 +1,8 @@
1
- export { ZLinkConfigurationException, createFrameworkRegistration, hasActorManager, hasSpotNode, hasSpotPublisherClient } from './contracts/Configuration/Registration';
1
+ export { ZLinkConfigurationException, createFrameworkRegistration, normalizeFrameworkRegistration, hasActorManager, hasSpotNode, hasSpotPublisherClient } from './contracts/Configuration/Registration';
2
2
  export type * from './contracts/Configuration/RegistrationTypes';
3
3
  export type * from './contracts';
4
- export { registerActorFactory, validateRoutingIdPrefix, registerEntrySpot, registerSpotFactory, validateActorTransferTimeout, validateMessageFollowDuration, validateSessionReplacementCallbackTimeout } from './contracts/Configuration/RegistrationBuilderPolicy';
4
+ export { ZLinkSpotActorSend, ZLinkSpotActorRequest } from './contracts/Handlers/Attributes';
5
+ export { registerActorFactory, registerRelocationStore, validateRoutingIdPrefix, registerEntrySpot, registerSpotFactory, validateActorTransferTimeout, validateMessageFollowDuration, validateSessionReplacementCallbackTimeout } from './contracts/Configuration/RegistrationBuilderPolicy';
5
6
  import type { ZLinkLocationRuntimeQuery, ZLinkActorClient, ZLinkActorManager, ZLinkChannelClient, ZLinkClientServerRuntime, ZLinkCodecRegistryBuilder, ZLinkCodecRegistrar, ZLinkDispatchOptions, ZLinkDispatchOptionsBuilder, ZLinkFanoutClient, ZLinkFanoutRuntime, ZLinkRouteClient, ZLinkRouteMeshRuntime, ZLinkRouteMeshRuntimeOptions, ZLinkSpotManager, ZLinkSpotOutbound, ZLinkSpotPublisherClient, ZLinkStreamCompressionBuilder, ZLinkStreamCompressionCodec } from './contracts';
6
7
  import type { ZLinkProviderResolver } from './contracts/Common/ZLinkProviderResolver';
7
8
  import type { ZLinkSpotHandleResolver } from './runtime/spots/spot-handle';
@@ -10,6 +11,7 @@ import type { ZLinkFrameworkRegistration } from './contracts/Configuration/Regis
10
11
  import type { ZLinkCodecSerializerRegistration, ZLinkFrameworkRegistrationOptions, ZLinkStreamCodecRegistration } from './contracts/Configuration/RegistrationTypes';
11
12
  import { captureZLinkExecutionTurn } from './runtime/execution';
12
13
  export { registerHandlerFilterScope as registerIntegrationHandlerFilterScope, type ZLinkHandlerFilterScopeRunner } from './runtime/channels/handler-filter-scope';
14
+ export { disposeOwnedInstance as disposeIntegrationHandler, disposeOwnedInstances as disposeIntegrationHandlers } from './runtime/handlers/handler-instance-scope';
13
15
  export interface ZLinkNestIntegrationRuntimeHost extends Pick<import('./contracts').ZLinkFrameworkRuntime, 'shutdown'> {
14
16
  readonly channelRuntimeOptions: unknown;
15
17
  readonly routeMeshRuntimeOptions: ZLinkRouteMeshRuntimeOptions;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerIntegrationHandlerFilterScope = exports.validateSessionReplacementCallbackTimeout = exports.validateMessageFollowDuration = exports.validateActorTransferTimeout = exports.registerSpotFactory = exports.registerEntrySpot = exports.validateRoutingIdPrefix = exports.registerActorFactory = exports.hasSpotPublisherClient = exports.hasSpotNode = exports.hasActorManager = exports.createFrameworkRegistration = exports.ZLinkConfigurationException = void 0;
3
+ exports.disposeIntegrationHandlers = exports.disposeIntegrationHandler = exports.registerIntegrationHandlerFilterScope = exports.validateSessionReplacementCallbackTimeout = exports.validateMessageFollowDuration = exports.validateActorTransferTimeout = exports.registerSpotFactory = exports.registerEntrySpot = exports.validateRoutingIdPrefix = exports.registerRelocationStore = exports.registerActorFactory = exports.ZLinkSpotActorRequest = exports.ZLinkSpotActorSend = exports.hasSpotPublisherClient = exports.hasSpotNode = exports.hasActorManager = exports.normalizeFrameworkRegistration = exports.createFrameworkRegistration = exports.ZLinkConfigurationException = void 0;
4
4
  exports.createIntegrationDispatchOptionsBuilder = createIntegrationDispatchOptionsBuilder;
5
5
  exports.createIntegrationInboundDispatchOptionsBuilder = createIntegrationInboundDispatchOptionsBuilder;
6
6
  exports.createIntegrationLocationOptionsBuilder = createIntegrationLocationOptionsBuilder;
@@ -19,11 +19,16 @@ exports.createIntegrationHttpExecutionScheduler = createIntegrationHttpExecution
19
19
  var Registration_1 = require("./contracts/Configuration/Registration");
20
20
  Object.defineProperty(exports, "ZLinkConfigurationException", { enumerable: true, get: function () { return Registration_1.ZLinkConfigurationException; } });
21
21
  Object.defineProperty(exports, "createFrameworkRegistration", { enumerable: true, get: function () { return Registration_1.createFrameworkRegistration; } });
22
+ Object.defineProperty(exports, "normalizeFrameworkRegistration", { enumerable: true, get: function () { return Registration_1.normalizeFrameworkRegistration; } });
22
23
  Object.defineProperty(exports, "hasActorManager", { enumerable: true, get: function () { return Registration_1.hasActorManager; } });
23
24
  Object.defineProperty(exports, "hasSpotNode", { enumerable: true, get: function () { return Registration_1.hasSpotNode; } });
24
25
  Object.defineProperty(exports, "hasSpotPublisherClient", { enumerable: true, get: function () { return Registration_1.hasSpotPublisherClient; } });
26
+ var Attributes_1 = require("./contracts/Handlers/Attributes");
27
+ Object.defineProperty(exports, "ZLinkSpotActorSend", { enumerable: true, get: function () { return Attributes_1.ZLinkSpotActorSend; } });
28
+ Object.defineProperty(exports, "ZLinkSpotActorRequest", { enumerable: true, get: function () { return Attributes_1.ZLinkSpotActorRequest; } });
25
29
  var RegistrationBuilderPolicy_1 = require("./contracts/Configuration/RegistrationBuilderPolicy");
26
30
  Object.defineProperty(exports, "registerActorFactory", { enumerable: true, get: function () { return RegistrationBuilderPolicy_1.registerActorFactory; } });
31
+ Object.defineProperty(exports, "registerRelocationStore", { enumerable: true, get: function () { return RegistrationBuilderPolicy_1.registerRelocationStore; } });
27
32
  Object.defineProperty(exports, "validateRoutingIdPrefix", { enumerable: true, get: function () { return RegistrationBuilderPolicy_1.validateRoutingIdPrefix; } });
28
33
  Object.defineProperty(exports, "registerEntrySpot", { enumerable: true, get: function () { return RegistrationBuilderPolicy_1.registerEntrySpot; } });
29
34
  Object.defineProperty(exports, "registerSpotFactory", { enumerable: true, get: function () { return RegistrationBuilderPolicy_1.registerSpotFactory; } });
@@ -40,6 +45,9 @@ const workers_1 = require("./runtime/workers");
40
45
  const execution_1 = require("./runtime/execution");
41
46
  var handler_filter_scope_1 = require("./runtime/channels/handler-filter-scope");
42
47
  Object.defineProperty(exports, "registerIntegrationHandlerFilterScope", { enumerable: true, get: function () { return handler_filter_scope_1.registerHandlerFilterScope; } });
48
+ var handler_instance_scope_1 = require("./runtime/handlers/handler-instance-scope");
49
+ Object.defineProperty(exports, "disposeIntegrationHandler", { enumerable: true, get: function () { return handler_instance_scope_1.disposeOwnedInstance; } });
50
+ Object.defineProperty(exports, "disposeIntegrationHandlers", { enumerable: true, get: function () { return handler_instance_scope_1.disposeOwnedInstances; } });
43
51
  function createIntegrationDispatchOptionsBuilder(dispatch) {
44
52
  return new RegistrationBuilders_1.DefaultDispatchOptionsBuilder(dispatch);
45
53
  }
@@ -59,14 +67,15 @@ function createIntegrationRuntimeHost(registration, providerResolver) {
59
67
  return new host_1.ZLinkFrameworkRuntimeHost({ registration, providerResolver });
60
68
  }
61
69
  function createIntegrationChannelClient(registration, runtime) {
62
- return new channels_1.DefaultZLinkChannelClient(registration, runtimeHost(runtime).channelTransport);
70
+ const host = runtimeHost(runtime);
71
+ return new channels_1.DefaultZLinkChannelClient(registration, host.channelTransport, host.routeTransport, host.spotRouterChannelIdForMesh);
63
72
  }
64
73
  function createIntegrationFanoutClient(registration, runtime) {
65
74
  return new channels_1.DefaultZLinkFanoutClient(registration, runtimeHost(runtime).channelTransport);
66
75
  }
67
76
  function createIntegrationRouteClient(registration, runtime) {
68
77
  const host = runtimeHost(runtime);
69
- return new channels_1.DefaultZLinkRouteClient(registration, host.routeTransport, host.spotRouterChannelIdForMesh);
78
+ return new channels_1.DefaultZLinkRouteClient(registration, host.routeTransport, host.spotRouterChannelIdForMesh, host.channelTransport);
70
79
  }
71
80
  function createIntegrationSpotPublisherClient(registration, runtime) {
72
81
  return new channels_1.DefaultZLinkSpotPublisherClient(registration, runtimeHost(runtime).spotPublisherTransport);
@@ -84,7 +93,7 @@ function createIntegrationActorManager(registration, runtime, providerResolver)
84
93
  boundSessionFactory: runtimeOptions.boundSessionFactory ??
85
94
  host.boundSessionFactory.create.bind(host.boundSessionFactory),
86
95
  providerResolver
87
- });
96
+ }, host.detachedTaskRunner());
88
97
  host.setActorManager(manager);
89
98
  return manager;
90
99
  }
@@ -117,6 +126,7 @@ function createIntegrationSpotManager(registration, runtime, providerResolver) {
117
126
  ...(spotNode.spotActorRequestHandlers ?? [])
118
127
  ]),
119
128
  ...runtimeOptions,
129
+ detachedTaskRunner: host.detachedTaskRunner(),
120
130
  spotRouteResolver: runtimeOptions.spotRouteResolver,
121
131
  routedTransport: host.routeTransport,
122
132
  providerResolver,
@@ -10,4 +10,5 @@ export declare function isAbortError(error: unknown): boolean;
10
10
  export declare function createDeadlineExceededError(message?: string): ZLinkDeadlineExceededError;
11
11
  export declare function isDeadlineExceededError(error: unknown): boolean;
12
12
  export declare function throwIfAborted(signal: AbortSignal | undefined): void;
13
+ export declare function macrotaskBoundary(): Promise<void>;
13
14
  export declare function awaitWithAbort<T>(operation: Promise<T>, signal: AbortSignal | undefined, abortOperation?: () => void): Promise<T>;
@@ -6,6 +6,7 @@ exports.isAbortError = isAbortError;
6
6
  exports.createDeadlineExceededError = createDeadlineExceededError;
7
7
  exports.isDeadlineExceededError = isDeadlineExceededError;
8
8
  exports.throwIfAborted = throwIfAborted;
9
+ exports.macrotaskBoundary = macrotaskBoundary;
9
10
  exports.awaitWithAbort = awaitWithAbort;
10
11
  /** The typed cancellation error produced by Framework admission helpers. */
11
12
  class ZLinkAbortError extends Error {
@@ -40,11 +41,10 @@ function throwIfAborted(signal) {
40
41
  throw createAbortError();
41
42
  }
42
43
  }
44
+ function macrotaskBoundary() {
45
+ return new Promise((resolve) => setImmediate(resolve));
46
+ }
43
47
  function awaitWithAbort(operation, signal, abortOperation) {
44
- if (signal?.aborted === true) {
45
- abortOperation?.();
46
- throw createAbortError();
47
- }
48
48
  if (signal === undefined) {
49
49
  return operation;
50
50
  }
@@ -63,7 +63,6 @@ function awaitWithAbort(operation, signal, abortOperation) {
63
63
  abortOperation?.();
64
64
  reject(createAbortError());
65
65
  };
66
- signal.addEventListener('abort', abort, { once: true });
67
66
  operation.then((value) => {
68
67
  if (settle())
69
68
  resolve(value);
@@ -71,5 +70,9 @@ function awaitWithAbort(operation, signal, abortOperation) {
71
70
  if (settle())
72
71
  reject(error);
73
72
  });
73
+ if (signal.aborted)
74
+ abort();
75
+ else
76
+ signal.addEventListener('abort', abort, { once: true });
74
77
  });
75
78
  }
@@ -0,0 +1,28 @@
1
+ /** Current activation admission count and limit of one MeshNode. */
2
+ export interface ZLinkActivationConcurrency {
3
+ readonly active: number;
4
+ readonly limit: number;
5
+ }
6
+ /**
7
+ * MeshNode §5.1 "Pending activation": the single per-MeshNode record of activation admissions.
8
+ *
9
+ * Actor creation, User Spot creation, Instance Spot cold activation and a relocation target's
10
+ * Restore each hold one admission from the moment the target MeshNode receives the operation
11
+ * until Ready or its target commit, or until it ends by rejection, failure or cleanup. Entry Spot
12
+ * and Actor Join never acquire one. The limit is enforced here, and the status current value and
13
+ * the placement `IsAvailable` headroom both read this record.
14
+ */
15
+ export declare class ZLinkActivationAdmission {
16
+ private readonly limitOf;
17
+ private readonly records;
18
+ constructor(limitOf: (meshName: string) => number);
19
+ current(meshName: string): ZLinkActivationConcurrency;
20
+ hasHeadroom(meshName: string): boolean;
21
+ /**
22
+ * Holds one admission for `meshName`. A MeshNode without headroom does not accept a new
23
+ * admission (MeshNode §5.1): the operation fails as Unavailable at once. The returned release
24
+ * is idempotent.
25
+ */
26
+ acquire(meshName: string, signal?: AbortSignal): Promise<() => void>;
27
+ private record;
28
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZLinkActivationAdmission = void 0;
4
+ const framework_errors_internal_1 = require("./framework-errors-internal");
5
+ /**
6
+ * MeshNode §5.1 "Pending activation": the single per-MeshNode record of activation admissions.
7
+ *
8
+ * Actor creation, User Spot creation, Instance Spot cold activation and a relocation target's
9
+ * Restore each hold one admission from the moment the target MeshNode receives the operation
10
+ * until Ready or its target commit, or until it ends by rejection, failure or cleanup. Entry Spot
11
+ * and Actor Join never acquire one. The limit is enforced here, and the status current value and
12
+ * the placement `IsAvailable` headroom both read this record.
13
+ */
14
+ class ZLinkActivationAdmission {
15
+ limitOf;
16
+ records = new Map();
17
+ constructor(limitOf) {
18
+ this.limitOf = limitOf;
19
+ }
20
+ current(meshName) {
21
+ const record = this.records.get(meshName);
22
+ return { active: record?.active ?? 0, limit: record?.limit ?? this.limitOf(meshName) };
23
+ }
24
+ hasHeadroom(meshName) {
25
+ const { active, limit } = this.current(meshName);
26
+ return active < limit;
27
+ }
28
+ /**
29
+ * Holds one admission for `meshName`. A MeshNode without headroom does not accept a new
30
+ * admission (MeshNode §5.1): the operation fails as Unavailable at once. The returned release
31
+ * is idempotent.
32
+ */
33
+ async acquire(meshName, signal) {
34
+ signal?.throwIfAborted();
35
+ const record = this.record(meshName);
36
+ if (record.active >= record.limit) {
37
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.PlacementCapacityExhausted, `MeshNode '${meshName}' has no activation admission headroom.`);
38
+ }
39
+ record.active += 1;
40
+ let released = false;
41
+ return () => {
42
+ if (released)
43
+ return;
44
+ released = true;
45
+ record.active -= 1;
46
+ };
47
+ }
48
+ record(meshName) {
49
+ let record = this.records.get(meshName);
50
+ if (record === undefined) {
51
+ record = { limit: this.limitOf(meshName), active: 0 };
52
+ this.records.set(meshName, record);
53
+ }
54
+ return record;
55
+ }
56
+ }
57
+ exports.ZLinkActivationAdmission = ZLinkActivationAdmission;
@@ -1,5 +1,4 @@
1
- import type { RoutingId } from '../../contracts';
2
- import { ZLinkSpotKind } from '../../contracts';
1
+ import { type RoutingId, ZLinkSpotKind } from '../../contracts';
3
2
  export type ZLinkActorAuthorityState = 'creating' | 'ready';
4
3
  export interface ZLinkActorAuthorityPayload {
5
4
  readonly state: ZLinkActorAuthorityState;
@@ -7,22 +7,33 @@ exports.decodeActorAuthorityPayload = decodeActorAuthorityPayload;
7
7
  exports.actorRelocationAuthorityApplicationPayload = actorRelocationAuthorityApplicationPayload;
8
8
  exports.relocatingActorAuthorityApplicationPayload = relocatingActorAuthorityApplicationPayload;
9
9
  exports.replaceActorRelocationAuthorityApplicationPayload = replaceActorRelocationAuthorityApplicationPayload;
10
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
10
11
  const contracts_1 = require("../../contracts");
12
+ const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
13
+ const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
11
14
  const service_relocation_runtime_1 = require("../foundation/service-relocation-runtime");
15
+ const service_wire_binary_primitives_1 = require("../foundation/service-wire-binary-primitives");
12
16
  const routing_id_1 = require("../routing-id");
13
17
  const AUTHORITY_MAGIC = Buffer.from([0x5a, 0x4c, 0x41, 0x55]);
14
18
  const AUTHORITY_VERSION = 1;
15
19
  const AUTHORITY_FLAGS = 0;
16
20
  const ACTOR_RELOCATION_MAGIC = Buffer.from([0x5a, 0x4c, 0x41, 0x50]);
17
- const MAXIMUM_BYTES = 1024 * 1024;
21
+ const AUTHORITY_MINIMUM_BYTES = 15;
22
+ const ACTOR_RELOCATION_MINIMUM_BYTES = 32;
23
+ const ACTOR_RELOCATION_VERSION_WITHOUT_SESSION_FENCE = 5;
24
+ const ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE = 6;
25
+ const ACTOR_RELOCATION_FIRST_PHASE = 1;
26
+ const ACTOR_RELOCATION_STEADY_PHASE = 4;
27
+ const ENTRY_SPOT_WIRE_KIND = (0, contracts_1.zlinkSpotKindToWire)(contracts_1.ZLinkSpotKind.Entry);
28
+ const USER_SPOT_WIRE_KIND = (0, contracts_1.zlinkSpotKindToWire)(contracts_1.ZLinkSpotKind.User);
18
29
  const FATAL_UTF8 = new TextDecoder('utf-8', { fatal: true });
19
30
  /** Encodes the durable authority-payload-v1 envelope around one schema body. */
20
31
  function encodeCanonicalAuthorityPayload(value) {
21
32
  const body = Buffer.from(value.body);
22
33
  const envelope = concat(AUTHORITY_MAGIC, Buffer.of(AUTHORITY_VERSION), u16be(AUTHORITY_FLAGS), u32be(body.byteLength), body);
23
34
  const encoded = concat(envelope, u32be((0, service_relocation_runtime_1.crc32c)(envelope)));
24
- if (encoded.byteLength > MAXIMUM_BYTES) {
25
- throw new RangeError('Actor authority payload exceeds 1 MiB.');
35
+ if (encoded.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
36
+ throw new RangeError(`Actor authority payload exceeds ${InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
26
37
  }
27
38
  return encoded;
28
39
  }
@@ -30,7 +41,8 @@ function encodeCanonicalAuthorityPayload(value) {
30
41
  function decodeCanonicalAuthorityPayload(payload) {
31
42
  try {
32
43
  const reader = new BigEndianReader(payload);
33
- if (reader.bytes.byteLength < 15 || reader.bytes.byteLength > MAXIMUM_BYTES) {
44
+ if (reader.bytes.byteLength < AUTHORITY_MINIMUM_BYTES ||
45
+ reader.bytes.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
34
46
  return undefined;
35
47
  }
36
48
  reader.expect(AUTHORITY_MAGIC);
@@ -52,7 +64,7 @@ function decodeCanonicalAuthorityPayload(payload) {
52
64
  /** Byte-exact Node counterpart of .NET ZLinkActorAuthorityPayloadCodec.Encode. */
53
65
  function encodeActorAuthorityPayload(value) {
54
66
  const spotKind = (0, contracts_1.zlinkSpotKindToWire)(value.currentSpotKind);
55
- if (spotKind !== 1 && spotKind !== 2) {
67
+ if (spotKind !== ENTRY_SPOT_WIRE_KIND && spotKind !== USER_SPOT_WIRE_KIND) {
56
68
  throw new RangeError('Actor currentSpotKind must be Entry or User.');
57
69
  }
58
70
  const actor = concat(text8(value.stableType, 'stableType'), text8(value.actorId, 'actorId'), Buffer.of(value.state === 'creating' ? 0 : 1), text8(value.currentSpotId, 'currentSpotId'), nonzeroU64be(value.currentSpotGeneration, 'currentSpotGeneration'), Buffer.of(spotKind));
@@ -117,7 +129,7 @@ function actorRelocationAuthorityApplicationPayload(payload) {
117
129
  const current = decodeActorRelocationEnvelope(payload);
118
130
  return current === undefined
119
131
  ? Buffer.from(payload)
120
- : current.phase === 4
132
+ : current.phase === ACTOR_RELOCATION_STEADY_PHASE
121
133
  ? Buffer.from(current.applicationPayload)
122
134
  : undefined;
123
135
  }
@@ -132,15 +144,16 @@ function replaceActorRelocationAuthorityApplicationPayload(payload, applicationP
132
144
  return Buffer.from(applicationPayload);
133
145
  const withoutChecksum = concat(current.prefix, i32le(applicationPayload.byteLength), applicationPayload);
134
146
  const encoded = concat(withoutChecksum, u32le((0, service_relocation_runtime_1.crc32c)(withoutChecksum)));
135
- if (encoded.byteLength > MAXIMUM_BYTES) {
136
- throw new RangeError('Actor relocation authority payload exceeds 1 MiB.');
147
+ if (encoded.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
148
+ throw new RangeError(`Actor relocation authority payload exceeds ${InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
137
149
  }
138
150
  return encoded;
139
151
  }
140
152
  function decodeActorRelocationEnvelope(payload) {
141
153
  try {
142
154
  const bytes = Buffer.from(payload);
143
- if (bytes.byteLength < 32 || bytes.byteLength > MAXIMUM_BYTES)
155
+ if (bytes.byteLength < ACTOR_RELOCATION_MINIMUM_BYTES ||
156
+ bytes.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES)
144
157
  return undefined;
145
158
  const checksumOffset = bytes.byteLength - 4;
146
159
  if (bytes.readUInt32LE(checksumOffset) !== (0, service_relocation_runtime_1.crc32c)(bytes.subarray(0, checksumOffset))) {
@@ -149,12 +162,13 @@ function decodeActorRelocationEnvelope(payload) {
149
162
  const reader = new LittleEndianReader(bytes.subarray(0, checksumOffset));
150
163
  reader.expect(ACTOR_RELOCATION_MAGIC);
151
164
  const version = reader.u16();
152
- if (version !== 5 && version !== 6)
165
+ if (version !== ACTOR_RELOCATION_VERSION_WITHOUT_SESSION_FENCE &&
166
+ version !== ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE)
153
167
  return undefined;
154
168
  if (reader.take(16).every((byte) => byte === 0))
155
169
  return undefined;
156
170
  const phase = reader.u8();
157
- if (phase < 1 || phase > 4)
171
+ if (phase < ACTOR_RELOCATION_FIRST_PHASE || phase > ACTOR_RELOCATION_STEADY_PHASE)
158
172
  return undefined;
159
173
  const isBound = reader.bool();
160
174
  if (isBound) {
@@ -169,7 +183,7 @@ function decodeActorRelocationEnvelope(payload) {
169
183
  const ownerLeaseGeneration = reader.u64();
170
184
  const sessionOwnerNodeGeneration = reader.u64();
171
185
  reader.u64();
172
- if (version === 6) {
186
+ if (version === ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE) {
173
187
  reader.text16();
174
188
  reader.u64();
175
189
  }
@@ -184,7 +198,7 @@ function decodeActorRelocationEnvelope(payload) {
184
198
  }
185
199
  const prefix = Buffer.from(reader.bytes.subarray(0, reader.offset));
186
200
  const applicationLength = reader.i32();
187
- if (applicationLength < 1 || applicationLength > MAXIMUM_BYTES)
201
+ if (applicationLength < 1 || applicationLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES)
188
202
  return undefined;
189
203
  const applicationPayload = Buffer.from(reader.take(applicationLength));
190
204
  if (!reader.done)
@@ -197,20 +211,22 @@ function decodeActorRelocationEnvelope(payload) {
197
211
  }
198
212
  function text8(value, name) {
199
213
  const bytes = Buffer.from(value, 'utf8');
200
- if (bytes.byteLength < 1 || bytes.byteLength > 0xff || bytes.includes(0)) {
201
- throw new RangeError(`${name} must contain 1..255 UTF-8 bytes without NUL.`);
214
+ if (bytes.byteLength < 1 ||
215
+ bytes.byteLength > service_wire_binary_primitives_1.SERVICE_WIRE_TEXT8_MAX_BYTES ||
216
+ bytes.includes(0)) {
217
+ throw new RangeError(`${name} must contain 1..${service_wire_binary_primitives_1.SERVICE_WIRE_TEXT8_MAX_BYTES} UTF-8 bytes without NUL.`);
202
218
  }
203
219
  return concat(Buffer.of(bytes.byteLength), bytes);
204
220
  }
205
221
  function rid(value, name) {
206
222
  const bytes = Buffer.from((0, routing_id_1.encodeRoutingIdStorageHex)(value), 'hex');
207
- if (bytes.byteLength < 1 || bytes.byteLength > 0xff) {
208
- throw new RangeError(`${name} must contain 1..255 bytes.`);
223
+ if (bytes.byteLength < 1 || bytes.byteLength > CoreTypes_1.ZLINK_MAX_ROUTING_ID_BYTES) {
224
+ throw new RangeError(`${name} must contain 1..${CoreTypes_1.ZLINK_MAX_ROUTING_ID_BYTES} bytes.`);
209
225
  }
210
226
  return concat(Buffer.of(bytes.byteLength), bytes);
211
227
  }
212
228
  function nonzeroU64be(value, name) {
213
- if (value === 0n || value < 0n || value > 0xffffffffffffffffn) {
229
+ if (value === 0n || value < 0n || value > stream_wire_1.UINT64_MAX) {
214
230
  throw new RangeError(`${name} must be a non-zero u64.`);
215
231
  }
216
232
  const result = Buffer.alloc(8);
@@ -1,6 +1,6 @@
1
- import type { ActorRef, ZLinkActorClient, ZLinkActorRequestCall, ZLinkActorSendCall, ZLinkMessageSerializer } from '../../contracts';
1
+ import { type ActorRef, type ZLinkActorClient, type ZLinkActorRequestCall, type ZLinkActorSendCall, type ZLinkMessageSerializer } from '../../contracts';
2
2
  import type { Message } from '../../contracts/Common/Message';
3
- import type { ZLinkBackendMeshNode, ZLinkMeshCompletionTable } from '../backend';
3
+ import { type ZLinkBackendMeshNode, type ZLinkMeshCompletionTable } from '../backend';
4
4
  import type { ZLinkStoreLocationResolvers } from '../locations';
5
5
  import type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
6
6
  export interface ZLinkActorClientOptions {