@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,11 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createSpotNodeLocationAutoConnectContext = createSpotNodeLocationAutoConnectContext;
4
4
  exports.spotNodeAutoConnectCapability = spotNodeAutoConnectCapability;
5
+ const RegistrationBuilderPolicy_1 = require("../../contracts/Configuration/RegistrationBuilderPolicy");
5
6
  const Values_1 = require("../../contracts/Locations/Values");
6
7
  const contracts_1 = require("../../contracts");
7
8
  const node_async_hooks_1 = require("node:async_hooks");
8
9
  const state_lane_1 = require("../execution/state-lane");
9
10
  const routing_id_1 = require("../routing-id");
11
+ const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
10
12
  const locations_1 = require("../locations");
11
13
  function createSpotNodeLocationAutoConnectContext(runtime, stores, options, events) {
12
14
  const leaseTracker = new locations_1.ZLinkOwnerLeaseTracker({
@@ -67,7 +69,7 @@ function meshDescriptorPeerResolver(runtime) {
67
69
  nodeRid: descriptor.rid,
68
70
  role: contracts_1.ZLinkLocationRole.Router,
69
71
  endpoint: descriptor.endpoint,
70
- weight: 100,
72
+ weight: RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT,
71
73
  draining: descriptor.state !== contracts_1.ZLinkFrameworkRuntimeState.Serving,
72
74
  value: descriptor.descriptorRevision,
73
75
  ownerId: descriptor.ownerId,
@@ -145,7 +147,7 @@ class ZLinkSpotNodeAutoConnectExecutor {
145
147
  peer.endpoint === target.endpoint &&
146
148
  (target.nodeRid === undefined || String(peer.routingId) === String(target.nodeRid)) &&
147
149
  peer.lifecycleGeneration === target.lifecycleGeneration &&
148
- peer.state === 3);
150
+ peer.state === service_runtime_contracts_1.MeshPeerRuntimeState.Serving);
149
151
  }
150
152
  replaceNotRequired(targets) {
151
153
  this.node.replaceDiscoveredNotRequiredPeers?.(targets
@@ -170,40 +172,29 @@ class ZLinkSpotNodeAutoConnectExecutor {
170
172
  }
171
173
  }
172
174
  prepareConnectCore(key) {
173
- if (this.connectionIntents.has(key))
174
- return undefined;
175
+ const current = this.connectionIntents.get(key);
176
+ if (current !== undefined)
177
+ return current.connectionIntentId === undefined ? current : undefined;
175
178
  const intent = {};
176
179
  this.connectionIntents.set(key, intent);
177
180
  return intent;
178
181
  }
179
182
  async connectPeer(target, key, intent) {
180
- try {
181
- const connectionIntentId = await this.node.connectPeer({
182
- endpoint: target.endpoint,
183
- expectedRid: target.nodeRid === undefined ? undefined : (0, routing_id_1.toBackendRoutingId)(target.nodeRid),
184
- expectedSecurityIdentity: toAdmissionSecurityIdentity(target.metadata?.securityIdentity),
185
- expectedLifecycleGeneration: target.lifecycleGeneration
186
- });
187
- const accepted = await this.lane.run(() => {
188
- if (this.connectionIntents.get(key) !== intent)
189
- return false;
190
- intent.connectionIntentId = connectionIntentId;
191
- return true;
192
- });
193
- if (!accepted)
194
- this.node.removePeerConnection(connectionIntentId);
195
- return accepted;
196
- }
197
- catch {
198
- // A discovered endpoint can become unavailable between the store read and
199
- // the socket connect. Leave the target inactive so the next reconciliation
200
- // can retry without terminating the host's background runtime.
201
- await this.lane.run(() => {
202
- if (this.connectionIntents.get(key) === intent)
203
- this.connectionIntents.delete(key);
204
- });
205
- return false;
206
- }
183
+ const connectionIntentId = await this.node.connectPeer({
184
+ endpoint: target.endpoint,
185
+ expectedRid: target.nodeRid === undefined ? undefined : (0, routing_id_1.toBackendRoutingId)(target.nodeRid),
186
+ expectedSecurityIdentity: toAdmissionSecurityIdentity(target.metadata?.securityIdentity),
187
+ expectedLifecycleGeneration: target.lifecycleGeneration
188
+ });
189
+ const accepted = await this.lane.run(() => {
190
+ if (this.connectionIntents.get(key) !== intent)
191
+ return false;
192
+ intent.connectionIntentId = connectionIntentId;
193
+ return true;
194
+ });
195
+ if (!accepted)
196
+ this.node.removePeerConnection(connectionIntentId);
197
+ return accepted;
207
198
  }
208
199
  disconnectPeer(target) {
209
200
  const key = connectionKey(target);
@@ -1,26 +1,28 @@
1
- import type { ZLinkLocationOptionOverrides } from '../../contracts/Locations/Options';
2
- import type { ActorRef, RoutingId, ZLinkActor, ZLinkChannelClient, ZLinkFanoutClient, ZLinkMessage, ZLinkMeshNodeDescriptor, ZLinkMessageSerializer, ZLinkSpotPublisherClient } from '../../contracts';
3
- import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
4
- import type { ZLinkRuntimeEventPublisher } from '../diagnostics';
5
- import { ZLinkFrameworkRuntimeState } from '../../contracts';
6
- import { type ZLinkSubmitResult } from '../messaging/submission-result';
7
- import { type ReadyRecord, type ReceiveRecord } from '../foundation/service-runtime-contracts';
1
+ import { type ActorRef, type RoutingId, type ZLinkActor, type ZLinkChannelClient, type ZLinkFanoutClient, type ZLinkMeshNodeDescriptor, type ZLinkMessage, type ZLinkMessageSerializer, type ZLinkSpotPublisherClient, ZLinkFrameworkRuntimeState } from '../../contracts';
8
2
  import type { Message } from '../../contracts/Common/Message';
9
- import type { ZLinkMessageFollowOrigin } from '../foundation/service-runtime-contracts';
10
- import { type ZLinkFrameworkRegistration } from '../configuration';
3
+ import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
4
+ import type { ZLinkLocationOptionOverrides } from '../../contracts/Locations/Options';
5
+ import type { ZLinkActivationConcurrency } from '../activation-admission';
6
+ import type { ZLinkRemoteBoundSessionTarget } from '../actors';
7
+ import type { ZLinkActorHandoffPacket } from '../actors/actor-handoff';
11
8
  import type { ZLinkBackendAdapterFactory, ZLinkBackendContext, ZLinkBackendMeshNode } from '../backend/contracts';
12
9
  import { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
13
10
  import type { ZLinkDispatchErrorReporter } from '../channels';
11
+ import { type ZLinkFrameworkRegistration } from '../configuration';
12
+ import type { ZLinkRuntimeEventPublisher } from '../diagnostics';
13
+ import type { ZLinkListenerRecords } from '../foundation/listener-records';
14
+ import { type ZLinkMessageFollowOrigin, type ReadyRecord, type ReceiveRecord } from '../foundation/service-runtime-contracts';
15
+ import type { ServiceMessageFollowRecord } from '../foundation/service-stateful-wire-codec';
16
+ import { ApplicationJobQueue } from '../host/application-job-queue';
14
17
  import { ZLinkLocationRuntime, type ZLinkLocationEventSink, type ZLinkLocationRuntimeStores } from '../locations';
15
- import type { ZLinkRemoteBoundSessionTarget } from '../actors';
16
- import type { ZLinkActorHandoffPacket } from '../actors/actor-handoff';
18
+ import { type ZLinkSubmitResult } from '../messaging/submission-result';
17
19
  import type { ZLinkDetachedTaskRunner } from './spot-actor-join-dispatch';
18
20
  import type { ZLinkSpotRoutedTransport } from './spot-outbound';
19
21
  import type { ZLinkSpotRouteResolver } from './spot-routing-internal';
20
- import type { ZLinkEntryActorRuntime, ZLinkSpotActorTransferRuntime, ZLinkSpotActorHandoffRuntime, ZLinkSpotBoundSessionRuntime } from './spot-runtime-ports';
21
- import type { ServiceMessageFollowRecord } from '../foundation/service-stateful-wire-codec';
22
- import { ApplicationJobQueue } from '../host/application-job-queue';
22
+ import type { ZLinkEntryActorRuntime, ZLinkSpotActorHandoffRuntime, ZLinkSpotActorTransferRuntime, ZLinkSpotBoundSessionRuntime } from './spot-runtime-ports';
23
23
  export interface ZLinkSpotNodeRuntimeManagerOptions {
24
+ readonly errorSink: import('../diagnostics/dispatch-error-port').ZLinkDispatchErrorSink;
25
+ readonly listenerRecords?: ZLinkListenerRecords;
24
26
  readonly registration: ZLinkFrameworkRegistration;
25
27
  readonly primaryMeshName?: string;
26
28
  readonly backendAdapterFactory: ZLinkBackendAdapterFactory;
@@ -40,16 +42,14 @@ export interface ZLinkSpotNodeRuntimeManagerOptions {
40
42
  readonly actorTransferRuntime?: ZLinkSpotActorTransferRuntime;
41
43
  readonly boundSessionRuntime?: ZLinkSpotBoundSessionRuntime;
42
44
  readonly actorHandoffRuntime?: ZLinkSpotActorHandoffRuntime;
43
- readonly detachedTaskRunner?: ZLinkDetachedTaskRunner;
45
+ readonly detachedTaskRunner: ZLinkDetachedTaskRunner;
44
46
  readonly applicationJobQueue?: ApplicationJobQueue;
45
47
  readonly applicationJobReceiveFlowFailureSink?: (error: unknown) => void;
46
48
  readonly peerAdmissionSealed?: (meshName: string) => boolean;
47
49
  readonly meshRecordDispatcher?: (meshName: string, owner: ReadyRecord, record: ReceiveRecord) => void | Promise<void>;
48
50
  readonly messageFollowReceiver?: (record: ServiceMessageFollowRecord) => void;
49
- readonly instanceActivationConcurrencyProvider?: (meshName: string) => {
50
- readonly active: number;
51
- readonly limit: number;
52
- };
51
+ /** MeshNode §5.1 activation admission record; the descriptor projects it for placement. */
52
+ readonly activationConcurrency?: (meshName: string) => ZLinkActivationConcurrency;
53
53
  }
54
54
  export declare class ZLinkSpotNodeRuntimeManager {
55
55
  private readonly options;
@@ -59,7 +59,7 @@ export declare class ZLinkSpotNodeRuntimeManager {
59
59
  private readonly entryActivations;
60
60
  private readonly entryActivationStarts;
61
61
  private readonly publishers;
62
- private disposed;
62
+ private readonly disposal;
63
63
  private readonly autoConnectLoops;
64
64
  private readonly publishedMeshNodeDescriptors;
65
65
  private readonly descriptorRevisionByMesh;
@@ -72,7 +72,6 @@ export declare class ZLinkSpotNodeRuntimeManager {
72
72
  private locationAutoConnect?;
73
73
  private readonly applicationJobQueue;
74
74
  constructor(options: ZLinkSpotNodeRuntimeManagerOptions);
75
- createReceived(): import("../backend/runtime-values").ZLinkBackendReceived;
76
75
  createTopicMessage(): import("../backend/runtime-values").ZLinkBackendTopicMessage;
77
76
  configureLocationAutoConnect(runtime: ZLinkLocationRuntime, stores: ZLinkLocationRuntimeStores, options: ZLinkLocationOptionOverrides, events?: ZLinkLocationEventSink): void;
78
77
  startLocationAutoConnect(signal?: AbortSignal): Promise<void>;
@@ -110,6 +109,7 @@ export declare class ZLinkSpotNodeRuntimeManager {
110
109
  notifyEntrySpotActorDisconnected(meshName: string, actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
111
110
  serverChannels(meshName: string): [string, import("../configuration").ZLinkMeshChannelOptions][];
112
111
  dispose(signal?: AbortSignal, deadline?: Date): Promise<void>;
112
+ private disposeCore;
113
113
  private dispatchMeshRecord;
114
114
  dispatchEntrySpotRecord(meshName: string, owner: ReadyRecord, record: ReceiveRecord): Promise<boolean>;
115
115
  private ensureEntryActivation;
@@ -117,6 +117,7 @@ export declare class ZLinkSpotNodeRuntimeManager {
117
117
  private primaryEntryActivation;
118
118
  dispatchEntryActorPacket(actorId: string, parts: readonly Message[], returnResponse?: boolean, remoteBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, fallbackActorRef?: ActorRef, requestTerminal?: (response: unknown) => Promise<void> | void, messageFollowOrigin?: ZLinkMessageFollowOrigin): Promise<unknown>;
119
119
  dispatchEntryActorJoin(meshName: string, actor: ZLinkActor, handoffBacklog?: readonly ZLinkActorHandoffPacket[]): Promise<void>;
120
+ executeEntryActor<T>(meshName: string, actorId: string, operation: () => Promise<T>): Promise<T>;
120
121
  publish(meshName: string, channelName: string, topic: string, packetName: string | undefined, event: Message, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<ZLinkSubmitResult>;
121
122
  private executePublish;
122
123
  tryPublish(meshName: string, channelName: string, topic: string, packetName: string | undefined, event: Message, metadata?: ReadonlyMap<string, string>): ZLinkSubmitResult;
@@ -2,26 +2,31 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkSpotNodeRuntimeManager = void 0;
4
4
  exports.createFrameworkEntrySpotId = createFrameworkEntrySpotId;
5
- const framework_errors_internal_1 = require("../framework-errors-internal");
5
+ const disposal_1 = require("../disposal");
6
6
  const node_crypto_1 = require("node:crypto");
7
- const Locations_1 = require("../../contracts/Locations");
8
7
  const contracts_1 = require("../../contracts");
9
- const submission_result_1 = require("../messaging/submission-result");
8
+ const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
9
+ const RegistrationBuilderPolicy_1 = require("../../contracts/Configuration/RegistrationBuilderPolicy");
10
10
  const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
11
+ const Locations_1 = require("../../contracts/Locations");
12
+ const abort_1 = require("../abort");
13
+ const mesh_completion_table_1 = require("../backend/mesh-completion-table");
14
+ const mesh_dispatch_pump_1 = require("../backend/mesh-dispatch-pump");
11
15
  const runtime_values_1 = require("../backend/runtime-values");
12
- const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
16
+ const channel_clients_1 = require("../channels/channel-clients");
17
+ const channel_envelope_1 = require("../channels/channel-envelope");
13
18
  const configuration_1 = require("../configuration");
14
- const mesh_dispatch_pump_1 = require("../backend/mesh-dispatch-pump");
15
- const execution_1 = require("../execution");
16
19
  const flow_context_1 = require("../diagnostics/flow-context");
17
- const mesh_completion_table_1 = require("../backend/mesh-completion-table");
18
- const channel_envelope_1 = require("../channels/channel-envelope");
20
+ const execution_1 = require("../execution");
21
+ const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
22
+ const framework_errors_internal_1 = require("../framework-errors-internal");
23
+ const application_job_queue_1 = require("../host/application-job-queue");
19
24
  const locations_1 = require("../locations");
25
+ const submission_result_1 = require("../messaging/submission-result");
26
+ const routing_id_1 = require("../routing-id");
20
27
  const spot_entry_activation_1 = require("./spot-entry-activation");
21
28
  const spot_node_autoconnect_1 = require("./spot-node-autoconnect");
22
- const routing_id_1 = require("../routing-id");
23
- const abort_1 = require("../abort");
24
- const application_job_queue_1 = require("../host/application-job-queue");
29
+ const DEFAULT_SPOT_NODE_SHUTDOWN_TIMEOUT_MS = 1000;
25
30
  const ZLINK_SEND_DONT_WAIT = 1;
26
31
  // Shared default for the dominant no-metadata call; avoids a Map allocation
27
32
  // per outbound operation.
@@ -34,7 +39,7 @@ class ZLinkSpotNodeRuntimeManager {
34
39
  entryActivations = new Map();
35
40
  entryActivationStarts = new Map();
36
41
  publishers = new Map();
37
- disposed = false;
42
+ disposal = new disposal_1.RuntimeDisposal();
38
43
  autoConnectLoops = [];
39
44
  publishedMeshNodeDescriptors = new Map();
40
45
  // Keep the revision source separate from the cached Store row. A new owner
@@ -51,13 +56,13 @@ class ZLinkSpotNodeRuntimeManager {
51
56
  applicationJobQueue;
52
57
  constructor(options) {
53
58
  this.options = options;
59
+ if (options.detachedTaskRunner === undefined) {
60
+ throw new configuration_1.ZLinkConfigurationException('Spot node runtime requires a detached task runner.');
61
+ }
54
62
  this.applicationJobQueue =
55
63
  options.applicationJobQueue ??
56
64
  new application_job_queue_1.ApplicationJobQueue((0, application_job_queue_1.resolveApplicationJobQueueConfiguration)());
57
65
  }
58
- createReceived() {
59
- return this.options.backendAdapterFactory.createReceived();
60
- }
61
66
  createTopicMessage() {
62
67
  return this.options.backendAdapterFactory.createTopicMessage();
63
68
  }
@@ -85,7 +90,8 @@ class ZLinkSpotNodeRuntimeManager {
85
90
  peerResolver: location.resolver,
86
91
  executor: capability.executor,
87
92
  events: location.events,
88
- options: location.options
93
+ options: location.options,
94
+ errorSink: this.options.errorSink
89
95
  });
90
96
  const loop = new locations_1.ZLinkAutoConnectLoop({
91
97
  reconciler,
@@ -188,9 +194,9 @@ class ZLinkSpotNodeRuntimeManager {
188
194
  : Object.keys(spotNode.actorFactories ?? {}).length) > 0;
189
195
  node.configureObjectPlacement({
190
196
  role: spotNode.objectRole ?? (hasLegacyObjectFactories ? 'server' : 'none'),
191
- placementWeight: spotNode.placementWeight ?? 100,
197
+ placementWeight: spotNode.placementWeight ?? RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT,
192
198
  activeCapacityLimit: aggregatePlacementCapacity(spotNode.actorLimit ?? 0, spotNode.spotLimit ?? 0),
193
- pendingCapacityLimit: spotNode.activationConcurrencyLimit ?? 128,
199
+ pendingCapacityLimit: spotNode.activationConcurrencyLimit ?? InternalDefaults_1.DEFAULT_ACTIVATION_CONCURRENCY_LIMIT,
194
200
  objectCapabilities: [
195
201
  ...stableTypes.map((type) => `object-type:${type}`),
196
202
  ...instanceSpotTypes.map((type) => `instance-spot-type:${type}`)
@@ -236,6 +242,10 @@ class ZLinkSpotNodeRuntimeManager {
236
242
  this.meshNodes.set(spotNodeName, node);
237
243
  this.meshPumps.set(spotNodeName, pump);
238
244
  this.meshCompletions.set(spotNodeName, completions);
245
+ const listenerEndpoint = node.status().localEndpoint;
246
+ if (listenerEndpoint.length > 0) {
247
+ this.options.listenerRecords?.record('routeMesh', spotNodeName, listenerEndpoint);
248
+ }
239
249
  }
240
250
  catch (error) {
241
251
  this.entryActivations.delete(spotNodeName);
@@ -333,19 +343,15 @@ class ZLinkSpotNodeRuntimeManager {
333
343
  };
334
344
  })
335
345
  },
336
- activationConcurrency: {
337
- active: this.options.instanceActivationConcurrencyProvider?.(meshName).active ??
338
- current?.activationConcurrency.active ??
339
- 0,
340
- limit: this.options.instanceActivationConcurrencyProvider?.(meshName).limit ??
341
- registration.activationConcurrencyLimit ??
342
- 128
346
+ activationConcurrency: this.options.activationConcurrency?.(meshName) ?? {
347
+ active: 0,
348
+ limit: registration.activationConcurrencyLimit ?? InternalDefaults_1.DEFAULT_ACTIVATION_CONCURRENCY_LIMIT
343
349
  },
344
350
  channelWeights: Object.fromEntries(this.serverChannels(meshName).map(([channelName, channel]) => [
345
351
  channelName,
346
352
  state === contracts_1.ZLinkFrameworkRuntimeState.Draining
347
353
  ? 0
348
- : this.effectiveChannelWeight(meshName, channelName, channel.weight ?? 100)
354
+ : this.effectiveChannelWeight(meshName, channelName, channel.weight ?? RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT)
349
355
  ])),
350
356
  applicationVersion: this.options.registration.applicationVersion,
351
357
  maintenanceWave: this.options.registration.maintenanceWave,
@@ -436,7 +442,9 @@ class ZLinkSpotNodeRuntimeManager {
436
442
  if (registration === undefined) {
437
443
  throw new configuration_1.ZLinkConfigurationException(`Mesh '${meshName}' is not registered.`);
438
444
  }
439
- return this.runtimePlacementWeights.get(meshName) ?? registration.placementWeight ?? 100;
445
+ return (this.runtimePlacementWeights.get(meshName) ??
446
+ registration.placementWeight ??
447
+ RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT);
440
448
  }
441
449
  channelWeight(channelName) {
442
450
  const match = this.resolveChannel(channelName);
@@ -489,17 +497,15 @@ class ZLinkSpotNodeRuntimeManager {
489
497
  return this.runtimeChannelWeights.get(meshName)?.get(channelName) ?? configuredWeight;
490
498
  }
491
499
  resolveChannel(channelName) {
492
- const matches = [...this.options.registration.spotNodes].flatMap(([meshName, registration]) => {
493
- const channel = registration.meshChannels?.[channelName];
494
- return channel === undefined ? [] : [{ meshName, configuredWeight: channel.weight ?? 100 }];
495
- });
496
- if (matches.length === 0) {
500
+ const route = (0, channel_clients_1.resolveChannelRoute)(this.options.registration, channelName);
501
+ if (route?.kind !== 'route-mesh') {
497
502
  throw new configuration_1.ZLinkConfigurationException(`RouteMesh channel '${channelName}' is not registered.`);
498
503
  }
499
- if (matches.length > 1) {
500
- throw new configuration_1.ZLinkConfigurationException(`RouteMesh channel '${channelName}' is registered in more than one Mesh.`);
501
- }
502
- return matches[0];
504
+ const match = (0, channel_clients_1.requireUniqueRouteMeshChannel)(route.matches, `RouteMesh channel '${channelName}' is registered in more than one Mesh.`);
505
+ return {
506
+ meshName: match.meshName,
507
+ configuredWeight: match.mesh.meshChannels?.[channelName]?.weight ?? RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT
508
+ };
503
509
  }
504
510
  scheduleRuntimeWeightPublication(meshName, applyWeight) {
505
511
  const publish = this.runtimeWeightPublication
@@ -511,12 +517,7 @@ class ZLinkSpotNodeRuntimeManager {
511
517
  await this.publishMeshNodeState(state, undefined, meshName);
512
518
  });
513
519
  this.runtimeWeightPublication = publish;
514
- if (this.options.detachedTaskRunner !== undefined) {
515
- this.options.detachedTaskRunner.runDetached(`RouteMesh '${meshName}' runtime weight publication`, async () => await publish);
516
- }
517
- else {
518
- void publish.catch(() => undefined);
519
- }
520
+ this.options.detachedTaskRunner.runDetached(`RouteMesh '${meshName}' runtime weight publication`, async () => await publish);
520
521
  }
521
522
  get primaryMeshCompletions() {
522
523
  const meshName = this.options.primaryMeshName ?? this.meshNodes.keys().next().value;
@@ -556,18 +557,16 @@ class ZLinkSpotNodeRuntimeManager {
556
557
  serverChannels(meshName) {
557
558
  return Object.entries(this.options.registration.spotNodes.get(meshName)?.meshChannels ?? {}).filter(([, channel]) => channel.server === true);
558
559
  }
559
- async dispose(signal, deadline) {
560
- this.disposed = true;
560
+ dispose(signal, deadline) {
561
+ return this.disposal.run(() => this.disposeCore(signal, deadline));
562
+ }
563
+ async disposeCore(signal, deadline) {
561
564
  const autoConnectLoops = [...this.autoConnectLoops];
562
565
  const entryActivations = [...this.entryActivations.values()];
563
566
  const meshPumps = [...this.meshPumps.values()];
564
567
  const meshNodes = [...this.meshNodes.values()];
565
568
  const meshCompletions = [...this.meshCompletions.values()];
566
- this.entryActivations.clear();
567
- this.autoConnectLoops.length = 0;
568
- this.meshPumps.clear();
569
569
  const publishers = [...this.publishers.values()];
570
- this.publishers.clear();
571
570
  const errors = [];
572
571
  const settle = async (operations) => {
573
572
  const results = await Promise.allSettled(operations);
@@ -580,19 +579,23 @@ class ZLinkSpotNodeRuntimeManager {
580
579
  await settle(entryActivations.reverse().map((activation) => activation.dispose(deadline)));
581
580
  await settle(meshPumps.reverse().map((pump) => pump.dispose()));
582
581
  await settle(meshNodes.reverse().map(async (node) => {
583
- node.shutdown(1000);
582
+ node.shutdown(DEFAULT_SPOT_NODE_SHUTDOWN_TIMEOUT_MS);
584
583
  node.close();
585
584
  }));
586
585
  for (const completions of meshCompletions) {
587
586
  completions.dispose();
588
587
  }
589
- this.meshNodes.clear();
590
- this.meshCompletions.clear();
591
588
  await settle(autoConnectLoops.map((loop) => loop.finishTransportShutdown(signal)));
592
589
  if (errors.length === 1)
593
590
  throw errors[0];
594
591
  if (errors.length > 1)
595
592
  throw new AggregateError(errors, 'SPOT node runtime cleanup failed.');
593
+ this.entryActivations.clear();
594
+ this.autoConnectLoops.length = 0;
595
+ this.meshPumps.clear();
596
+ this.publishers.clear();
597
+ this.meshNodes.clear();
598
+ this.meshCompletions.clear();
596
599
  }
597
600
  async dispatchMeshRecord(meshName, owner, record) {
598
601
  if (record.kind === service_runtime_contracts_1.ReceiveKind.Completion) {
@@ -693,7 +696,6 @@ class ZLinkSpotNodeRuntimeManager {
693
696
  entrySpotType: spotNode.entrySpotType,
694
697
  nativeSpot: node.entrySpot(),
695
698
  nativeNode: node,
696
- createReceived: () => this.options.backendAdapterFactory.createReceived(),
697
699
  createTopicMessage: () => this.options.backendAdapterFactory.createTopicMessage(),
698
700
  nodeRid: String(node.status().routingId),
699
701
  spotNodeName,
@@ -703,7 +705,6 @@ class ZLinkSpotNodeRuntimeManager {
703
705
  spotPublisherClient: this.options.spotPublisherClient,
704
706
  routedTransport: this.options.routedTransport,
705
707
  spotRouterChannelIdForMesh: this.options.spotRouterChannelIdForMesh,
706
- channelMeshNameForChannel: (channelName) => resolveChannelMeshName(this.options.registration, channelName),
707
708
  timerHandlers: spotNode.entrySpotTimerHandlers,
708
709
  packetHandlers: spotNode.entrySpotPacketHandlers,
709
710
  subscriptionHandlers: spotNode.entrySpotSubscriptionHandlers,
@@ -784,8 +785,15 @@ class ZLinkSpotNodeRuntimeManager {
784
785
  }
785
786
  await activation.commitServiceActorJoin(actor, handoffBacklog);
786
787
  }
788
+ executeEntryActor(meshName, actorId, operation) {
789
+ const activation = this.entryActivations.get(meshName);
790
+ if (activation === undefined) {
791
+ throw new configuration_1.ZLinkConfigurationException(`Entry Spot Actor '${actorId}' has no activation for MeshNode '${meshName}'.`);
792
+ }
793
+ return activation.executeActor(actorId, operation);
794
+ }
787
795
  publish(meshName, channelName, topic, packetName, event, signal, metadata = EMPTY_SPOT_METADATA) {
788
- if (this.disposed) {
796
+ if (this.disposal.started) {
789
797
  return Promise.reject(runtimeShutdownError());
790
798
  }
791
799
  if (signal?.aborted === true) {
@@ -807,7 +815,7 @@ class ZLinkSpotNodeRuntimeManager {
807
815
  return this.publishWithFlags(meshName, channelName, topic, packetName, event, ZLINK_SEND_DONT_WAIT, metadata);
808
816
  }
809
817
  publishWithFlags(meshName, channelName, topic, packetName, event, flags, metadata) {
810
- if (this.disposed) {
818
+ if (this.disposal.started) {
811
819
  throw runtimeShutdownError();
812
820
  }
813
821
  const publisher = this.publishers.get(meshName);
@@ -838,31 +846,14 @@ function createFrameworkEntrySpotId(prefix) {
838
846
  }
839
847
  return `${prefix}-entry-${(0, node_crypto_1.randomUUID)()}`;
840
848
  }
841
- function resolveChannelMeshName(registration, channelName) {
842
- const matches = [...registration.spotNodes.entries()]
843
- .filter(([, node]) => Object.prototype.hasOwnProperty.call(node.meshChannels ?? {}, channelName))
844
- .map(([meshName]) => meshName);
845
- return matches.length === 1 ? matches[0] : undefined;
846
- }
847
849
  function mapPublishSubmitStatus(result) {
848
- switch (result) {
849
- case runtime_values_1.SubmitResult.Ok:
850
- return submission_result_1.ZLinkSubmitStatus.Submitted;
851
- case runtime_values_1.SubmitResult.Backpressured:
852
- case runtime_values_1.SubmitResult.NotAdmitted:
853
- return submission_result_1.ZLinkSubmitStatus.Backpressured;
854
- case runtime_values_1.SubmitResult.NotFound:
855
- // A publish with no matching subscriber is a successful zero-recipient
856
- // operation, not an operation-specific not-found failure.
857
- return submission_result_1.ZLinkSubmitStatus.Submitted;
858
- case runtime_values_1.SubmitResult.NotConnected:
859
- return submission_result_1.ZLinkSubmitStatus.RouteNotConnected;
860
- case runtime_values_1.SubmitResult.Terminated:
861
- case runtime_values_1.SubmitResult.InvalidHandle:
862
- return submission_result_1.ZLinkSubmitStatus.Shutdown;
863
- default:
864
- throw new configuration_1.ZLinkConfigurationException(`Logical Multicast failed with submit result '${result}'.`);
865
- }
850
+ // Source publication preserves its local admission status before commit.
851
+ if (result === runtime_values_1.SubmitResult.NotAdmitted || result === runtime_values_1.SubmitResult.Backpressured)
852
+ return submission_result_1.ZLinkSubmitStatus.Backpressured;
853
+ // A publish with no matching subscriber succeeds with zero recipients.
854
+ if (result === runtime_values_1.SubmitResult.NotFound)
855
+ return submission_result_1.ZLinkSubmitStatus.Submitted;
856
+ return (0, submission_result_1.classifySubmitResult)(result, 'Logical Multicast').status;
866
857
  }
867
858
  function requireEntrySpotReply(result) {
868
859
  if (result !== runtime_values_1.SubmitResult.Ok) {
@@ -870,8 +861,8 @@ function requireEntrySpotReply(result) {
870
861
  }
871
862
  }
872
863
  function requirePublicRuntimeWeight(value, label) {
873
- if (!Number.isInteger(value) || value < 0 || value > 10_000) {
874
- throw new configuration_1.ZLinkConfigurationException(`${label} must be an integer in 0..10000.`);
864
+ if (!(0, RegistrationBuilderPolicy_1.isValidPublicWeight)(value)) {
865
+ throw new configuration_1.ZLinkConfigurationException(`${label} must be an integer in 0..${RegistrationBuilderPolicy_1.ZLINK_MAX_PUBLIC_WEIGHT}.`);
875
866
  }
876
867
  return value;
877
868
  }
@@ -931,7 +922,7 @@ function objectCapability(objectKind, stableType, factory) {
931
922
  };
932
923
  }
933
924
  function aggregatePlacementCapacity(actorLimit, spotLimit) {
934
- const unlimited = 0x7fff_ffff;
925
+ const unlimited = RegistrationBuilderPolicy_1.ZLINK_MAX_CAPACITY;
935
926
  const actors = actorLimit === 0 ? unlimited : actorLimit;
936
927
  const spots = spotLimit === 0 ? unlimited : spotLimit;
937
928
  return Math.min(unlimited, actors + spots);
@@ -1,9 +1,9 @@
1
- import type { RoutingId, ZLinkChannelClient, ZLinkChannelRequestCall, ZLinkPublishCall, ZLinkSendCall, ZLinkSpotOutbound, ZLinkSpotRequestCall, ZLinkSpotSendCall, ZLinkSpotPublisherClient } from '../../contracts';
2
- import { type ZLinkSubmitResult } from '../messaging/submission-result';
1
+ import { type RoutingId, type ZLinkChannelClient, type ZLinkChannelRequestCall, type ZLinkPublishCall, type ZLinkSendCall, type ZLinkSpotOutbound, type ZLinkSpotPublisherClient, type ZLinkSpotRequestCall, type ZLinkSpotSendCall } from '../../contracts';
3
2
  import type { ZLinkBackendSpot } from '../backend/contracts';
3
+ import { type ZLinkSubmitResult } from '../messaging/submission-result';
4
+ import { type SpotHandle } from './spot-handle';
4
5
  import type { ZLinkSpotRouteTarget } from './spot-routing-internal';
5
6
  import { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
6
- import { type SpotHandle } from './spot-handle';
7
7
  export interface DefaultZLinkSpotOutboundOptions {
8
8
  readonly serial: ZLinkSpotSerialTurnExecutor;
9
9
  readonly channelClient?: ZLinkChannelClient;
@@ -58,6 +58,7 @@ export interface ZLinkSpotRoutedTransport {
58
58
  requestFromSpotToSpot?<TReply = unknown>(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, request: unknown, options: ZLinkSpotRoutedRequestOptions): Promise<TReply>;
59
59
  }
60
60
  export interface ZLinkSpotRoutedSendOptions {
61
+ readonly instanceSpot?: boolean;
61
62
  readonly packetName?: string;
62
63
  /** Internal end-to-end budget remaining for route admission. */
63
64
  readonly timeoutMs?: number;
@@ -3,15 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DefaultZLinkSpotOutbound = void 0;
4
4
  exports.sendToSpotHandle = sendToSpotHandle;
5
5
  exports.requestToSpotHandle = requestToSpotHandle;
6
- const framework_errors_internal_1 = require("../framework-errors-internal");
7
6
  const contracts_1 = require("../../contracts");
8
- const Errors_1 = require("../../contracts/Errors");
9
- const submission_result_1 = require("../messaging/submission-result");
10
- const routing_id_1 = require("../routing-id");
7
+ const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
11
8
  const configuration_1 = require("../configuration");
12
- const workers_1 = require("../workers");
13
9
  const execution_1 = require("../execution");
10
+ const framework_errors_internal_1 = require("../framework-errors-internal");
14
11
  const packet_name_1 = require("../messaging/packet-name");
12
+ const submission_result_1 = require("../messaging/submission-result");
13
+ const routing_id_1 = require("../routing-id");
14
+ const workers_1 = require("../workers");
15
15
  const spot_handle_1 = require("./spot-handle");
16
16
  class DefaultZLinkSpotOutbound {
17
17
  serial;
@@ -94,13 +94,13 @@ function createAddressedSpotSendCall(serial, transport, spotId, message, sourceS
94
94
  selectOnce(options, 'instanceSpot');
95
95
  options.instanceSpot = true;
96
96
  if (instanceSpotType !== undefined) {
97
- options.instanceSpotType = requireAddressValue(instanceSpotType, 'Instance Spot type', 255);
97
+ options.instanceSpotType = requireAddressValue(instanceSpotType, 'Instance Spot type', CoreTypes_1.ZLINK_MAX_STABLE_TYPE_BYTES);
98
98
  }
99
99
  return this;
100
100
  },
101
101
  inMesh(meshName) {
102
102
  selectOnce(options, 'inMesh');
103
- options.initialMeshName = requireAddressValue(meshName, 'Mesh name', 255);
103
+ options.initialMeshName = requireAddressValue(meshName, 'Mesh name', CoreTypes_1.ZLINK_MAX_MESH_NAME_BYTES);
104
104
  return this;
105
105
  },
106
106
  async submit(signal) {
@@ -131,13 +131,13 @@ function createAddressedSpotRequestCall(serial, transport, spotId, request, sour
131
131
  selectOnce(options, 'instanceSpot');
132
132
  options.instanceSpot = true;
133
133
  if (instanceSpotType !== undefined) {
134
- options.instanceSpotType = requireAddressValue(instanceSpotType, 'Instance Spot type', 255);
134
+ options.instanceSpotType = requireAddressValue(instanceSpotType, 'Instance Spot type', CoreTypes_1.ZLINK_MAX_STABLE_TYPE_BYTES);
135
135
  }
136
136
  return this;
137
137
  },
138
138
  inMesh(meshName) {
139
139
  selectOnce(options, 'inMesh');
140
- options.initialMeshName = requireAddressValue(meshName, 'Mesh name', 255);
140
+ options.initialMeshName = requireAddressValue(meshName, 'Mesh name', CoreTypes_1.ZLINK_MAX_MESH_NAME_BYTES);
141
141
  return this;
142
142
  },
143
143
  timeout(timeoutMs) {
@@ -405,26 +405,7 @@ async function requestToSpotHandle(transport, spot, request, options = {}) {
405
405
  }
406
406
  return transport.requestToSpot(target, request, transportOptions);
407
407
  };
408
- const resolved = await requireSpotRef(spot, options.signal);
409
- try {
410
- return await requestResolved(resolved);
411
- }
412
- catch (error) {
413
- if (!shouldRefreshAfterRouteDisconnect(resolved, error)) {
414
- throw error;
415
- }
416
- let refreshed;
417
- try {
418
- refreshed = await (0, spot_handle_1.refreshSpotHandle)(spot, options.signal);
419
- }
420
- catch {
421
- throw error;
422
- }
423
- if (isShutdownTargetState(refreshed?.targetNodeState)) {
424
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RuntimeShutdown, `Spot '${String(spot.spotId)}' target host is shutting down.`, false, error);
425
- }
426
- throw error;
427
- }
408
+ return requestResolved(await requireSpotRef(spot, options.signal));
428
409
  }
429
410
  async function requireSpotRef(handle, signal) {
430
411
  const resolved = await (0, spot_handle_1.resolveSpotHandle)(handle, signal);
@@ -443,14 +424,6 @@ function spotRefToSpotRouteTarget(spot, spotRouterChannelIdForMesh = (meshName)
443
424
  targetNodeState: spot.targetNodeState
444
425
  };
445
426
  }
446
- function shouldRefreshAfterRouteDisconnect(target, error) {
447
- return (target.targetNodeState === contracts_1.ZLinkFrameworkRuntimeState.Serving &&
448
- error instanceof Errors_1.ZLinkFrameworkException &&
449
- (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected);
450
- }
451
- function isShutdownTargetState(state) {
452
- return (state === contracts_1.ZLinkFrameworkRuntimeState.Draining || state === contracts_1.ZLinkFrameworkRuntimeState.Stopped);
453
- }
454
427
  function normalizeSpotRefRoutingId(routingId) {
455
428
  return (0, routing_id_1.normalizeOpaqueRoutingId)(routingId);
456
429
  }