@zlink-systems/framework 0.25.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
  3. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  4. package/dist/contracts/Common/CoreTypes.js +7 -0
  5. package/dist/contracts/Common/index.d.ts +1 -1
  6. package/dist/contracts/Common/index.js +0 -1
  7. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  8. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  9. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  10. package/dist/contracts/Configuration/Registration.js +58 -36
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  14. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  15. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  16. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  17. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  18. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  19. package/dist/contracts/Handlers/JsonContract.js +10 -4
  20. package/dist/contracts/Locations/Authority.d.ts +1 -1
  21. package/dist/contracts/Locations/Authority.js +3 -2
  22. package/dist/contracts/Locations/Options.js +1 -1
  23. package/dist/contracts/Locations/Stores.d.ts +12 -0
  24. package/dist/contracts/Locations/Stores.js +9 -0
  25. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
  26. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  27. package/dist/internal.d.ts +5 -0
  28. package/dist/internal.js +16 -1
  29. package/dist/nest-integration.d.ts +4 -2
  30. package/dist/nest-integration.js +14 -4
  31. package/dist/runtime/abort.d.ts +1 -0
  32. package/dist/runtime/abort.js +8 -5
  33. package/dist/runtime/activation-admission.d.ts +28 -0
  34. package/dist/runtime/activation-admission.js +57 -0
  35. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  36. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  37. package/dist/runtime/actors/actor-client.d.ts +2 -2
  38. package/dist/runtime/actors/actor-client.js +42 -143
  39. package/dist/runtime/actors/actor-context.d.ts +3 -5
  40. package/dist/runtime/actors/actor-context.js +19 -17
  41. package/dist/runtime/actors/actor-handoff.d.ts +13 -7
  42. package/dist/runtime/actors/actor-handoff.js +36 -25
  43. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  44. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  45. package/dist/runtime/actors/actor-local-native-join.js +85 -123
  46. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  47. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  48. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  49. package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
  50. package/dist/runtime/actors/actor-remote-joiner.js +11 -17
  51. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  52. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  53. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  54. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  55. package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
  56. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  57. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  58. package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
  59. package/dist/runtime/actors/bound-session-wire.js +2 -7
  60. package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
  61. package/dist/runtime/actors/deferred-join-completion.js +21 -0
  62. package/dist/runtime/actors/index.d.ts +10 -8
  63. package/dist/runtime/actors/index.js +101 -73
  64. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  65. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  66. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  67. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  68. package/dist/runtime/admission.d.ts +7 -1
  69. package/dist/runtime/admission.js +11 -1
  70. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  71. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  72. package/dist/runtime/backend/contracts/index.d.ts +8 -33
  73. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
  74. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  75. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  76. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
  77. package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
  78. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
  79. package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
  80. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  81. package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
  82. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  83. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
  84. package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
  85. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
  86. package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
  87. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  88. package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
  89. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  90. package/dist/runtime/backend/runtime-values.js +2 -0
  91. package/dist/runtime/channels/channel-clients.d.ts +20 -9
  92. package/dist/runtime/channels/channel-clients.js +68 -60
  93. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  94. package/dist/runtime/channels/channel-envelope.js +47 -29
  95. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  96. package/dist/runtime/channels/channel-outbound-operations.js +9 -18
  97. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  98. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  99. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  100. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  101. package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
  102. package/dist/runtime/channels/channel-runtime-manager.js +4 -12
  103. package/dist/runtime/channels/channel-socket-options.js +3 -2
  104. package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
  105. package/dist/runtime/channels/channel-socket-registry.js +296 -235
  106. package/dist/runtime/channels/channel-transports.d.ts +11 -20
  107. package/dist/runtime/channels/channel-transports.js +68 -47
  108. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  109. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  110. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  111. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  112. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  113. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  114. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  115. package/dist/runtime/channels/fanout-location-runtime.js +133 -81
  116. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  117. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  118. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  119. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  120. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  121. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  122. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  123. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  124. package/dist/runtime/diagnostics/flow-context.js +16 -2
  125. package/dist/runtime/diagnostics/index.d.ts +4 -2
  126. package/dist/runtime/diagnostics/index.js +14 -4
  127. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  128. package/dist/runtime/diagnostics/message-flow.js +10 -19
  129. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  130. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  131. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  132. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  133. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  134. package/dist/runtime/disposal.d.ts +5 -0
  135. package/dist/runtime/disposal.js +22 -0
  136. package/dist/runtime/execution/index.d.ts +22 -9
  137. package/dist/runtime/execution/index.js +107 -37
  138. package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
  139. package/dist/runtime/execution/serial-execution-queue.js +99 -26
  140. package/dist/runtime/execution/state-lane.d.ts +8 -1
  141. package/dist/runtime/execution/state-lane.js +118 -3
  142. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  143. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  144. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  145. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  146. package/dist/runtime/foundation/listener-records.d.ts +11 -0
  147. package/dist/runtime/foundation/listener-records.js +20 -0
  148. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  149. package/dist/runtime/foundation/operation-identity.js +9 -5
  150. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  151. package/dist/runtime/foundation/operation-registry.js +34 -44
  152. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
  153. package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
  154. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  155. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  156. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
  157. package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
  158. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  159. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  160. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  161. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  162. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  163. package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
  164. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  165. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  166. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  167. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
  168. package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
  169. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
  170. package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
  171. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  172. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  173. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  174. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
  175. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  176. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  177. package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
  178. package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
  179. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
  180. package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
  181. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
  182. package/dist/runtime/foundation/service-topology-registry.js +22 -61
  183. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  184. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  185. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  186. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  187. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  188. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  189. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  190. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  191. package/dist/runtime/framework-errors-internal.js +343 -122
  192. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  193. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  194. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  195. package/dist/runtime/host/actor-packet-relay.js +48 -91
  196. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  197. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  198. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  199. package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
  200. package/dist/runtime/host/actor-transfer-runtime.js +210 -256
  201. package/dist/runtime/host/application-job-queue.js +16 -33
  202. package/dist/runtime/host/bound-session-relay.js +1 -1
  203. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  204. package/dist/runtime/host/index.d.ts +19 -14
  205. package/dist/runtime/host/index.js +234 -175
  206. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  207. package/dist/runtime/host/instance-activation-authority.js +17 -45
  208. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  209. package/dist/runtime/host/location-runtime-owner.js +2 -2
  210. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  211. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  212. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  213. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  214. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  215. package/dist/runtime/host/remote-bound-session-relay.js +11 -23
  216. package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
  217. package/dist/runtime/host/route-mesh-runtime.js +178 -257
  218. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  219. package/dist/runtime/host/runtime-shutdown.js +18 -21
  220. package/dist/runtime/host/service-relocation-control.js +6 -1
  221. package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
  222. package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
  223. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  224. package/dist/runtime/host/spot-address-transport.js +34 -136
  225. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  226. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  227. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
  228. package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
  229. package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
  230. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
  231. package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
  232. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  233. package/dist/runtime/locations/authority-key-codec.js +4 -3
  234. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  235. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  236. package/dist/runtime/locations/creation-operation-id.js +6 -4
  237. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  238. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  239. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  240. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  241. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  242. package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
  243. package/dist/runtime/locations/key-codec.js +3 -2
  244. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  245. package/dist/runtime/locations/lease-tracker.js +7 -11
  246. package/dist/runtime/locations/lifecycle.d.ts +5 -10
  247. package/dist/runtime/locations/lifecycle.js +4 -33
  248. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  249. package/dist/runtime/locations/location-store-failure.js +7 -0
  250. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  251. package/dist/runtime/locations/location-store-pages.js +13 -0
  252. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  253. package/dist/runtime/locations/location-store-repository.js +303 -332
  254. package/dist/runtime/locations/relocation-blob.js +18 -5
  255. package/dist/runtime/locations/resolvers.d.ts +5 -5
  256. package/dist/runtime/locations/resolvers.js +44 -30
  257. package/dist/runtime/locations/runtime.d.ts +5 -4
  258. package/dist/runtime/locations/runtime.js +123 -92
  259. package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
  260. package/dist/runtime/locations/spot-location-claims.js +40 -23
  261. package/dist/runtime/messaging/payload-codec.js +26 -20
  262. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  263. package/dist/runtime/messaging/submission-result.js +48 -0
  264. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
  265. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
  266. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
  267. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
  268. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
  269. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
  270. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
  271. package/dist/runtime/spots/index.d.ts +29 -29
  272. package/dist/runtime/spots/index.js +441 -313
  273. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
  274. package/dist/runtime/spots/spot-activation-registry.js +27 -60
  275. package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
  276. package/dist/runtime/spots/spot-activation-state.js +4 -17
  277. package/dist/runtime/spots/spot-activation.d.ts +10 -9
  278. package/dist/runtime/spots/spot-activation.js +103 -81
  279. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  280. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  281. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  282. package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
  283. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
  284. package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
  285. package/dist/runtime/spots/spot-actor-membership.js +44 -53
  286. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  287. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  288. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  289. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  290. package/dist/runtime/spots/spot-context.d.ts +2 -2
  291. package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
  292. package/dist/runtime/spots/spot-entry-activation.js +9 -21
  293. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  294. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  295. package/dist/runtime/spots/spot-manager-public.js +6 -5
  296. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  297. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
  298. package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
  299. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  300. package/dist/runtime/spots/spot-outbound.js +10 -37
  301. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  302. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  303. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  304. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  305. package/dist/runtime/spots/spot-route-replies.js +3 -1
  306. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
  307. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
  308. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
  309. package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
  310. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  311. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  312. package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
  313. package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
  314. package/dist/runtime/spots/spot-serial-executor.js +9 -2
  315. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
  316. package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
  317. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  318. package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
  319. package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
  320. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
  321. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  322. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  323. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  324. package/dist/runtime/streams/bound-session-service.js +12 -19
  325. package/dist/runtime/streams/index.d.ts +15 -14
  326. package/dist/runtime/streams/index.js +38 -39
  327. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  328. package/dist/runtime/streams/managed-stream.js +17 -8
  329. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  330. package/dist/runtime/streams/protocol.d.ts +6 -33
  331. package/dist/runtime/streams/protocol.js +38 -110
  332. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  333. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  334. package/dist/runtime/streams/session-calls.d.ts +1 -1
  335. package/dist/runtime/streams/session-calls.js +5 -4
  336. package/dist/runtime/streams/session-context.d.ts +6 -6
  337. package/dist/runtime/streams/session-context.js +22 -4
  338. package/dist/runtime/streams/session-requests.js +2 -1
  339. package/dist/runtime/streams/session-serial-executor.js +2 -2
  340. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  341. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  342. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  343. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  344. package/dist/runtime/workers/index.d.ts +2 -2
  345. package/dist/runtime/workers/index.js +5 -4
  346. package/package.json +3 -3
  347. package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
  348. package/src/contracts/Common/CoreTypes.ts +7 -0
  349. package/src/contracts/Common/index.ts +1 -1
  350. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  351. package/src/contracts/Configuration/Registration.ts +92 -48
  352. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  353. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  354. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  355. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  356. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  357. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  358. package/src/contracts/Handlers/JsonContract.ts +14 -4
  359. package/src/contracts/Locations/Authority.ts +7 -3
  360. package/src/contracts/Locations/Options.ts +1 -1
  361. package/src/contracts/Locations/Stores.ts +14 -0
  362. package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
  363. package/src/contracts/Spots/Contracts.ts +1 -1
  364. package/src/internal.ts +15 -0
  365. package/src/nest-integration.ts +28 -10
  366. package/src/runtime/abort.ts +6 -5
  367. package/src/runtime/activation-admission.ts +72 -0
  368. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  369. package/src/runtime/actors/actor-client.ts +77 -204
  370. package/src/runtime/actors/actor-context.ts +45 -39
  371. package/src/runtime/actors/actor-handoff.ts +55 -45
  372. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  373. package/src/runtime/actors/actor-local-native-join.ts +174 -215
  374. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  375. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  376. package/src/runtime/actors/actor-remote-joiner.ts +15 -36
  377. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  378. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  379. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  380. package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
  381. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  382. package/src/runtime/actors/actor-source-transfer.ts +5 -18
  383. package/src/runtime/actors/bound-session-wire.ts +2 -8
  384. package/src/runtime/actors/deferred-join-completion.ts +44 -0
  385. package/src/runtime/actors/index.ts +122 -88
  386. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  387. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  388. package/src/runtime/admission.ts +13 -2
  389. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  390. package/src/runtime/backend/contracts/index.ts +15 -42
  391. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
  392. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  393. package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
  394. package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
  395. package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
  396. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  397. package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
  398. package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
  399. package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
  400. package/src/runtime/backend/raw-binding-port.ts +14 -1
  401. package/src/runtime/backend/runtime-values.ts +4 -1
  402. package/src/runtime/channels/channel-clients.ts +132 -96
  403. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  404. package/src/runtime/channels/channel-envelope.ts +58 -29
  405. package/src/runtime/channels/channel-outbound-operations.ts +10 -31
  406. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  407. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  408. package/src/runtime/channels/channel-runtime-manager.ts +8 -15
  409. package/src/runtime/channels/channel-socket-options.ts +8 -2
  410. package/src/runtime/channels/channel-socket-registry.ts +369 -262
  411. package/src/runtime/channels/channel-transports.ts +161 -115
  412. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  413. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  414. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  415. package/src/runtime/channels/fanout-location-runtime.ts +175 -106
  416. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  417. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  418. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  419. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  420. package/src/runtime/diagnostics/flow-context.ts +16 -2
  421. package/src/runtime/diagnostics/index.ts +27 -17
  422. package/src/runtime/diagnostics/message-flow.ts +15 -25
  423. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  424. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  425. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  426. package/src/runtime/disposal.ts +19 -0
  427. package/src/runtime/execution/index.ts +116 -38
  428. package/src/runtime/execution/serial-execution-queue.ts +179 -34
  429. package/src/runtime/execution/state-lane.ts +142 -4
  430. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  431. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  432. package/src/runtime/foundation/listener-records.ts +21 -0
  433. package/src/runtime/foundation/operation-identity.ts +11 -5
  434. package/src/runtime/foundation/operation-registry.ts +33 -50
  435. package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
  436. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  437. package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
  438. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  439. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  440. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  441. package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
  442. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  443. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  444. package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
  445. package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
  446. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  447. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  448. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
  449. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  450. package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
  451. package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
  452. package/src/runtime/foundation/service-topology-registry.ts +30 -79
  453. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  454. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  455. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  456. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  457. package/src/runtime/framework-errors-internal.ts +380 -134
  458. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  459. package/src/runtime/host/actor-packet-relay.ts +57 -147
  460. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  461. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  462. package/src/runtime/host/actor-transfer-runtime.ts +266 -418
  463. package/src/runtime/host/application-job-queue.ts +28 -34
  464. package/src/runtime/host/bound-session-relay.ts +1 -2
  465. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  466. package/src/runtime/host/index.ts +408 -312
  467. package/src/runtime/host/instance-activation-authority.ts +89 -109
  468. package/src/runtime/host/location-runtime-owner.ts +4 -2
  469. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  470. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  471. package/src/runtime/host/remote-bound-session-relay.ts +12 -44
  472. package/src/runtime/host/route-mesh-runtime.ts +236 -275
  473. package/src/runtime/host/runtime-shutdown.ts +17 -21
  474. package/src/runtime/host/service-relocation-control.ts +14 -1
  475. package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
  476. package/src/runtime/host/spot-address-transport.ts +73 -195
  477. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  478. package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
  479. package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
  480. package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
  481. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  482. package/src/runtime/locations/authority-key-codec.ts +7 -3
  483. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  484. package/src/runtime/locations/creation-operation-id.ts +6 -3
  485. package/src/runtime/locations/domain-store-contract.ts +12 -3
  486. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  487. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  488. package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
  489. package/src/runtime/locations/key-codec.ts +3 -2
  490. package/src/runtime/locations/lease-tracker.ts +8 -14
  491. package/src/runtime/locations/lifecycle.ts +16 -45
  492. package/src/runtime/locations/location-store-failure.ts +4 -0
  493. package/src/runtime/locations/location-store-pages.ts +18 -0
  494. package/src/runtime/locations/location-store-repository.ts +450 -478
  495. package/src/runtime/locations/relocation-blob.ts +17 -6
  496. package/src/runtime/locations/resolvers.ts +90 -58
  497. package/src/runtime/locations/runtime.ts +220 -110
  498. package/src/runtime/locations/spot-location-claims.ts +54 -26
  499. package/src/runtime/messaging/payload-codec.ts +35 -24
  500. package/src/runtime/messaging/submission-result.ts +57 -1
  501. package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
  502. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
  503. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
  504. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
  505. package/src/runtime/spots/index.ts +687 -437
  506. package/src/runtime/spots/spot-activation-registry.ts +42 -71
  507. package/src/runtime/spots/spot-activation-state.ts +4 -16
  508. package/src/runtime/spots/spot-activation.ts +167 -115
  509. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  510. package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
  511. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
  512. package/src/runtime/spots/spot-actor-membership.ts +107 -75
  513. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  514. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  515. package/src/runtime/spots/spot-context.ts +3 -3
  516. package/src/runtime/spots/spot-entry-activation.ts +13 -33
  517. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  518. package/src/runtime/spots/spot-manager-public.ts +29 -21
  519. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  520. package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
  521. package/src/runtime/spots/spot-outbound.ts +47 -68
  522. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  523. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  524. package/src/runtime/spots/spot-route-replies.ts +6 -4
  525. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
  526. package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
  527. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  528. package/src/runtime/spots/spot-runtime-ports.ts +10 -43
  529. package/src/runtime/spots/spot-serial-executor.ts +10 -2
  530. package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
  531. package/src/runtime/spots/spot-timer.ts +3 -2
  532. package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
  533. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
  534. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  535. package/src/runtime/streams/bound-session-service.ts +23 -37
  536. package/src/runtime/streams/index.ts +102 -88
  537. package/src/runtime/streams/managed-stream.ts +29 -10
  538. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  539. package/src/runtime/streams/protocol.ts +34 -88
  540. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  541. package/src/runtime/streams/session-calls.ts +6 -5
  542. package/src/runtime/streams/session-context.ts +54 -10
  543. package/src/runtime/streams/session-requests.ts +2 -1
  544. package/src/runtime/streams/session-serial-executor.ts +2 -2
  545. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  546. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  547. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  548. package/src/runtime/workers/index.ts +13 -12
  549. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
  550. package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
  551. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  552. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  553. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  554. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  555. package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
  556. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  557. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,60 +1,53 @@
1
- import {
2
- ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException
4
- } from '../framework-errors-internal';
1
+ import { RuntimeDisposal } from '../disposal';
5
2
  import { randomUUID } from 'node:crypto';
6
- import type { ZLinkLocationOptionOverrides } from '../../contracts/Locations/Options';
7
- import type {
8
- ActorRef,
9
- RoutingId,
10
- ZLinkActor,
11
- ZLinkChannelClient,
12
- ZLinkFanoutClient,
13
- ZLinkMessage,
14
- ZLinkMeshNodeDescriptor,
15
- ZLinkMessageSerializer,
16
- ZLinkSpotPublisherClient
17
- } from '../../contracts';
18
- import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
19
- import type { ZLinkRuntimeEventPublisher } from '../diagnostics';
20
- import { ZLinkLocationWriteIntent, ZLinkLocationWriteStatus } from '../../contracts/Locations';
21
3
  import {
22
- ZLinkFrameworkRuntimeState,
4
+ type ActorRef,
5
+ type RoutingId,
6
+ type ZLinkActor,
7
+ type ZLinkChannelClient,
8
+ type ZLinkFanoutClient,
9
+ type ZLinkMeshNodeDescriptor,
10
+ type ZLinkMessage,
11
+ type ZLinkMessageSerializer,
12
+ type ZLinkSpotPublisherClient,
23
13
  ZLinkFrameworkException,
14
+ ZLinkFrameworkRuntimeState,
24
15
  ZLinkObjectRole
25
16
  } from '../../contracts';
26
- import { ZLinkSubmitStatus, type ZLinkSubmitResult } from '../messaging/submission-result';
17
+
18
+ import type { Message } from '../../contracts/Common/Message';
19
+ import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
20
+ import { DEFAULT_ACTIVATION_CONCURRENCY_LIMIT } from '../../contracts/Configuration/InternalDefaults';
21
+ import {
22
+ ZLINK_DEFAULT_PUBLIC_WEIGHT,
23
+ ZLINK_MAX_CAPACITY,
24
+ ZLINK_MAX_PUBLIC_WEIGHT,
25
+ isValidPublicWeight
26
+ } from '../../contracts/Configuration/RegistrationBuilderPolicy';
27
27
  import {
28
28
  ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
29
29
  ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
30
30
  ZLinkDispatchErrorSurface,
31
31
  ZLinkDispatchMessageKind
32
32
  } from '../../contracts/Dispatch/ZLinkDispatchOptions';
33
- import { SubmitResult, isZLinkBackendResultError } from '../backend/runtime-values';
34
- import {
35
- ReceiveKind,
36
- type ReadyRecord,
37
- type ReceiveRecord
38
- } from '../foundation/service-runtime-contracts';
39
- import type { Message } from '../../contracts/Common/Message';
40
- import type { ZLinkMessageFollowOrigin } from '../foundation/service-runtime-contracts';
41
- import {
42
- ZLinkConfigurationException,
43
- type ZLinkFrameworkRegistration,
44
- type ZLinkSpotNodeOptions
45
- } from '../configuration';
33
+ import { ZLinkLocationWriteIntent, ZLinkLocationWriteStatus } from '../../contracts/Locations';
34
+ import type { ZLinkLocationOptionOverrides } from '../../contracts/Locations/Options';
35
+ import type { ZLinkLocationOwnerToken } from '../../contracts/Locations/Writes';
36
+ import { createAbortError } from '../abort';
37
+ import type { ZLinkActivationConcurrency } from '../activation-admission';
38
+ import type { ZLinkRemoteBoundSessionTarget } from '../actors';
39
+ import type { ZLinkActorHandoffPacket } from '../actors/actor-handoff';
46
40
  import type {
47
41
  ZLinkBackendAdapterFactory,
48
42
  ZLinkBackendContext,
49
43
  ZLinkBackendMeshNode,
50
44
  ZLinkBackendSpotNode
51
45
  } from '../backend/contracts';
52
- import type { ZLinkLocationOwnerToken } from '../../contracts/Locations/Writes';
53
- import { ZLinkMeshDispatchPump } from '../backend/mesh-dispatch-pump';
54
- import { requireZLinkInfrastructureExecutionArea } from '../execution';
55
- import { runWithOutboundFlow } from '../diagnostics/flow-context';
56
46
  import { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
47
+ import { ZLinkMeshDispatchPump } from '../backend/mesh-dispatch-pump';
48
+ import { SubmitResult, isZLinkBackendResultError } from '../backend/runtime-values';
57
49
  import type { ZLinkDispatchErrorReporter } from '../channels';
50
+ import { requireUniqueRouteMeshChannel, resolveChannelRoute } from '../channels/channel-clients';
58
51
  import {
59
52
  decodeChannelEnvelope,
60
53
  decodeChannelPayload,
@@ -62,6 +55,31 @@ import {
62
55
  encodeChannelPublishEnvelopeParts,
63
56
  encodeChannelReplyParts
64
57
  } from '../channels/channel-envelope';
58
+ import {
59
+ ZLinkConfigurationException,
60
+ type ZLinkFrameworkRegistration,
61
+ type ZLinkSpotNodeOptions
62
+ } from '../configuration';
63
+ import type { ZLinkRuntimeEventPublisher } from '../diagnostics';
64
+ import { runWithOutboundFlow } from '../diagnostics/flow-context';
65
+ import { requireZLinkInfrastructureExecutionArea } from '../execution';
66
+ import type { ZLinkListenerRecords } from '../foundation/listener-records';
67
+ import {
68
+ type ZLinkMessageFollowOrigin,
69
+ ReceiveKind,
70
+ type ReadyRecord,
71
+ type ReceiveRecord
72
+ } from '../foundation/service-runtime-contracts';
73
+
74
+ import type { ServiceMessageFollowRecord } from '../foundation/service-stateful-wire-codec';
75
+ import {
76
+ ZLinkFrameworkInternalErrorKind,
77
+ createInternalFrameworkException
78
+ } from '../framework-errors-internal';
79
+ import {
80
+ ApplicationJobQueue,
81
+ resolveApplicationJobQueueConfiguration
82
+ } from '../host/application-job-queue';
65
83
  import {
66
84
  ZLinkAutoConnectLoop,
67
85
  ZLinkAutoConnectReconciler,
@@ -69,8 +87,12 @@ import {
69
87
  type ZLinkLocationEventSink,
70
88
  type ZLinkLocationRuntimeStores
71
89
  } from '../locations';
72
- import type { ZLinkRemoteBoundSessionTarget } from '../actors';
73
- import type { ZLinkActorHandoffPacket } from '../actors/actor-handoff';
90
+ import {
91
+ classifySubmitResult,
92
+ ZLinkSubmitStatus,
93
+ type ZLinkSubmitResult
94
+ } from '../messaging/submission-result';
95
+ import { routingIdsEqual, toBackendRoutingId } from '../routing-id';
74
96
  import type { ZLinkDetachedTaskRunner } from './spot-actor-join-dispatch';
75
97
  import { ZLinkEntrySpotActivation } from './spot-entry-activation';
76
98
  import {
@@ -80,19 +102,13 @@ import {
80
102
  } from './spot-node-autoconnect';
81
103
  import type { ZLinkSpotRoutedTransport } from './spot-outbound';
82
104
  import type { ZLinkSpotRouteResolver } from './spot-routing-internal';
83
- import { routingIdsEqual, toBackendRoutingId } from '../routing-id';
84
105
  import type {
85
106
  ZLinkEntryActorRuntime,
86
- ZLinkSpotActorTransferRuntime,
87
107
  ZLinkSpotActorHandoffRuntime,
108
+ ZLinkSpotActorTransferRuntime,
88
109
  ZLinkSpotBoundSessionRuntime
89
110
  } from './spot-runtime-ports';
90
- import { createAbortError } from '../abort';
91
- import type { ServiceMessageFollowRecord } from '../foundation/service-stateful-wire-codec';
92
- import {
93
- ApplicationJobQueue,
94
- resolveApplicationJobQueueConfiguration
95
- } from '../host/application-job-queue';
111
+ const DEFAULT_SPOT_NODE_SHUTDOWN_TIMEOUT_MS = 1000;
96
112
 
97
113
  const ZLINK_SEND_DONT_WAIT = 1;
98
114
 
@@ -101,6 +117,8 @@ const ZLINK_SEND_DONT_WAIT = 1;
101
117
  const EMPTY_SPOT_METADATA: ReadonlyMap<string, string> = new Map();
102
118
 
103
119
  export interface ZLinkSpotNodeRuntimeManagerOptions {
120
+ readonly errorSink: import('../diagnostics/dispatch-error-port').ZLinkDispatchErrorSink;
121
+ readonly listenerRecords?: ZLinkListenerRecords;
104
122
  readonly registration: ZLinkFrameworkRegistration;
105
123
  readonly primaryMeshName?: string;
106
124
  readonly backendAdapterFactory: ZLinkBackendAdapterFactory;
@@ -120,7 +138,7 @@ export interface ZLinkSpotNodeRuntimeManagerOptions {
120
138
  readonly actorTransferRuntime?: ZLinkSpotActorTransferRuntime;
121
139
  readonly boundSessionRuntime?: ZLinkSpotBoundSessionRuntime;
122
140
  readonly actorHandoffRuntime?: ZLinkSpotActorHandoffRuntime;
123
- readonly detachedTaskRunner?: ZLinkDetachedTaskRunner;
141
+ readonly detachedTaskRunner: ZLinkDetachedTaskRunner;
124
142
  readonly applicationJobQueue?: ApplicationJobQueue;
125
143
  readonly applicationJobReceiveFlowFailureSink?: (error: unknown) => void;
126
144
  readonly peerAdmissionSealed?: (meshName: string) => boolean;
@@ -130,10 +148,8 @@ export interface ZLinkSpotNodeRuntimeManagerOptions {
130
148
  record: ReceiveRecord
131
149
  ) => void | Promise<void>;
132
150
  readonly messageFollowReceiver?: (record: ServiceMessageFollowRecord) => void;
133
- readonly instanceActivationConcurrencyProvider?: (meshName: string) => {
134
- readonly active: number;
135
- readonly limit: number;
136
- };
151
+ /** MeshNode §5.1 activation admission record; the descriptor projects it for placement. */
152
+ readonly activationConcurrency?: (meshName: string) => ZLinkActivationConcurrency;
137
153
  }
138
154
 
139
155
  export class ZLinkSpotNodeRuntimeManager {
@@ -146,7 +162,7 @@ export class ZLinkSpotNodeRuntimeManager {
146
162
  string,
147
163
  ReturnType<ZLinkBackendMeshNode['createPublisher']>
148
164
  >();
149
- private disposed = false;
165
+ private readonly disposal = new RuntimeDisposal();
150
166
  private readonly autoConnectLoops: ZLinkAutoConnectLoop[] = [];
151
167
  private readonly publishedMeshNodeDescriptors = new Map<string, ZLinkMeshNodeDescriptor>();
152
168
  // Keep the revision source separate from the cached Store row. A new owner
@@ -163,15 +179,14 @@ export class ZLinkSpotNodeRuntimeManager {
163
179
  private readonly applicationJobQueue: ApplicationJobQueue;
164
180
 
165
181
  constructor(private readonly options: ZLinkSpotNodeRuntimeManagerOptions) {
182
+ if ((options.detachedTaskRunner as unknown) === undefined) {
183
+ throw new ZLinkConfigurationException('Spot node runtime requires a detached task runner.');
184
+ }
166
185
  this.applicationJobQueue =
167
186
  options.applicationJobQueue ??
168
187
  new ApplicationJobQueue(resolveApplicationJobQueueConfiguration());
169
188
  }
170
189
 
171
- createReceived() {
172
- return this.options.backendAdapterFactory.createReceived();
173
- }
174
-
175
190
  createTopicMessage() {
176
191
  return this.options.backendAdapterFactory.createTopicMessage();
177
192
  }
@@ -210,7 +225,8 @@ export class ZLinkSpotNodeRuntimeManager {
210
225
  peerResolver: location.resolver,
211
226
  executor: capability.executor,
212
227
  events: location.events,
213
- options: location.options
228
+ options: location.options,
229
+ errorSink: this.options.errorSink
214
230
  });
215
231
  const loop = new ZLinkAutoConnectLoop({
216
232
  reconciler,
@@ -326,12 +342,13 @@ export class ZLinkSpotNodeRuntimeManager {
326
342
  : Object.keys(spotNode.actorFactories ?? {}).length) > 0;
327
343
  node.configureObjectPlacement({
328
344
  role: spotNode.objectRole ?? (hasLegacyObjectFactories ? 'server' : 'none'),
329
- placementWeight: spotNode.placementWeight ?? 100,
345
+ placementWeight: spotNode.placementWeight ?? ZLINK_DEFAULT_PUBLIC_WEIGHT,
330
346
  activeCapacityLimit: aggregatePlacementCapacity(
331
347
  spotNode.actorLimit ?? 0,
332
348
  spotNode.spotLimit ?? 0
333
349
  ),
334
- pendingCapacityLimit: spotNode.activationConcurrencyLimit ?? 128,
350
+ pendingCapacityLimit:
351
+ spotNode.activationConcurrencyLimit ?? DEFAULT_ACTIVATION_CONCURRENCY_LIMIT,
335
352
  objectCapabilities: [
336
353
  ...stableTypes.map((type) => `object-type:${type}`),
337
354
  ...instanceSpotTypes.map((type) => `instance-spot-type:${type}`)
@@ -378,6 +395,10 @@ export class ZLinkSpotNodeRuntimeManager {
378
395
  this.meshNodes.set(spotNodeName, node);
379
396
  this.meshPumps.set(spotNodeName, pump);
380
397
  this.meshCompletions.set(spotNodeName, completions);
398
+ const listenerEndpoint = node.status().localEndpoint;
399
+ if (listenerEndpoint.length > 0) {
400
+ this.options.listenerRecords?.record('routeMesh', spotNodeName, listenerEndpoint);
401
+ }
381
402
  } catch (error) {
382
403
  this.entryActivations.delete(spotNodeName);
383
404
  this.publishers.get(spotNodeName)?.close();
@@ -488,22 +509,20 @@ export class ZLinkSpotNodeRuntimeManager {
488
509
  };
489
510
  })
490
511
  },
491
- activationConcurrency: {
492
- active:
493
- this.options.instanceActivationConcurrencyProvider?.(meshName).active ??
494
- current?.activationConcurrency.active ??
495
- 0,
496
- limit:
497
- this.options.instanceActivationConcurrencyProvider?.(meshName).limit ??
498
- registration.activationConcurrencyLimit ??
499
- 128
512
+ activationConcurrency: this.options.activationConcurrency?.(meshName) ?? {
513
+ active: 0,
514
+ limit: registration.activationConcurrencyLimit ?? DEFAULT_ACTIVATION_CONCURRENCY_LIMIT
500
515
  },
501
516
  channelWeights: Object.fromEntries(
502
517
  this.serverChannels(meshName).map(([channelName, channel]) => [
503
518
  channelName,
504
519
  state === ZLinkFrameworkRuntimeState.Draining
505
520
  ? 0
506
- : this.effectiveChannelWeight(meshName, channelName, channel.weight ?? 100)
521
+ : this.effectiveChannelWeight(
522
+ meshName,
523
+ channelName,
524
+ channel.weight ?? ZLINK_DEFAULT_PUBLIC_WEIGHT
525
+ )
507
526
  ])
508
527
  ),
509
528
  applicationVersion: this.options.registration.applicationVersion,
@@ -618,7 +637,11 @@ export class ZLinkSpotNodeRuntimeManager {
618
637
  if (registration === undefined) {
619
638
  throw new ZLinkConfigurationException(`Mesh '${meshName}' is not registered.`);
620
639
  }
621
- return this.runtimePlacementWeights.get(meshName) ?? registration.placementWeight ?? 100;
640
+ return (
641
+ this.runtimePlacementWeights.get(meshName) ??
642
+ registration.placementWeight ??
643
+ ZLINK_DEFAULT_PUBLIC_WEIGHT
644
+ );
622
645
  }
623
646
 
624
647
  channelWeight(channelName: string): number {
@@ -691,21 +714,21 @@ export class ZLinkSpotNodeRuntimeManager {
691
714
  readonly meshName: string;
692
715
  readonly configuredWeight: number;
693
716
  } {
694
- const matches = [...this.options.registration.spotNodes].flatMap(([meshName, registration]) => {
695
- const channel = registration.meshChannels?.[channelName];
696
- return channel === undefined ? [] : [{ meshName, configuredWeight: channel.weight ?? 100 }];
697
- });
698
- if (matches.length === 0) {
717
+ const route = resolveChannelRoute(this.options.registration, channelName);
718
+ if (route?.kind !== 'route-mesh') {
699
719
  throw new ZLinkConfigurationException(
700
720
  `RouteMesh channel '${channelName}' is not registered.`
701
721
  );
702
722
  }
703
- if (matches.length > 1) {
704
- throw new ZLinkConfigurationException(
705
- `RouteMesh channel '${channelName}' is registered in more than one Mesh.`
706
- );
707
- }
708
- return matches[0]!;
723
+ const match = requireUniqueRouteMeshChannel(
724
+ route.matches,
725
+ `RouteMesh channel '${channelName}' is registered in more than one Mesh.`
726
+ );
727
+ return {
728
+ meshName: match.meshName,
729
+ configuredWeight:
730
+ match.mesh.meshChannels?.[channelName]?.weight ?? ZLINK_DEFAULT_PUBLIC_WEIGHT
731
+ };
709
732
  }
710
733
 
711
734
  private scheduleRuntimeWeightPublication(
@@ -722,14 +745,10 @@ export class ZLinkSpotNodeRuntimeManager {
722
745
  await this.publishMeshNodeState(state, undefined, meshName);
723
746
  });
724
747
  this.runtimeWeightPublication = publish;
725
- if (this.options.detachedTaskRunner !== undefined) {
726
- this.options.detachedTaskRunner.runDetached(
727
- `RouteMesh '${meshName}' runtime weight publication`,
728
- async () => await publish
729
- );
730
- } else {
731
- void publish.catch(() => undefined);
732
- }
748
+ this.options.detachedTaskRunner.runDetached(
749
+ `RouteMesh '${meshName}' runtime weight publication`,
750
+ async () => await publish
751
+ );
733
752
  }
734
753
 
735
754
  get primaryMeshCompletions(): ZLinkMeshCompletionTable | undefined {
@@ -796,18 +815,17 @@ export class ZLinkSpotNodeRuntimeManager {
796
815
  ).filter(([, channel]) => channel.server === true);
797
816
  }
798
817
 
799
- async dispose(signal?: AbortSignal, deadline?: Date): Promise<void> {
800
- this.disposed = true;
818
+ dispose(signal?: AbortSignal, deadline?: Date): Promise<void> {
819
+ return this.disposal.run(() => this.disposeCore(signal, deadline));
820
+ }
821
+
822
+ private async disposeCore(signal?: AbortSignal, deadline?: Date): Promise<void> {
801
823
  const autoConnectLoops = [...this.autoConnectLoops];
802
824
  const entryActivations = [...this.entryActivations.values()];
803
825
  const meshPumps = [...this.meshPumps.values()];
804
826
  const meshNodes = [...this.meshNodes.values()];
805
827
  const meshCompletions = [...this.meshCompletions.values()];
806
- this.entryActivations.clear();
807
- this.autoConnectLoops.length = 0;
808
- this.meshPumps.clear();
809
828
  const publishers = [...this.publishers.values()];
810
- this.publishers.clear();
811
829
  const errors: unknown[] = [];
812
830
  const settle = async (operations: readonly Promise<unknown>[]) => {
813
831
  const results = await Promise.allSettled(operations);
@@ -823,18 +841,22 @@ export class ZLinkSpotNodeRuntimeManager {
823
841
  await settle(meshPumps.reverse().map((pump) => pump.dispose()));
824
842
  await settle(
825
843
  meshNodes.reverse().map(async (node) => {
826
- node.shutdown(1000);
844
+ node.shutdown(DEFAULT_SPOT_NODE_SHUTDOWN_TIMEOUT_MS);
827
845
  node.close();
828
846
  })
829
847
  );
830
848
  for (const completions of meshCompletions) {
831
849
  completions.dispose();
832
850
  }
833
- this.meshNodes.clear();
834
- this.meshCompletions.clear();
835
851
  await settle(autoConnectLoops.map((loop) => loop.finishTransportShutdown(signal)));
836
852
  if (errors.length === 1) throw errors[0];
837
853
  if (errors.length > 1) throw new AggregateError(errors, 'SPOT node runtime cleanup failed.');
854
+ this.entryActivations.clear();
855
+ this.autoConnectLoops.length = 0;
856
+ this.meshPumps.clear();
857
+ this.publishers.clear();
858
+ this.meshNodes.clear();
859
+ this.meshCompletions.clear();
838
860
  }
839
861
 
840
862
  private async dispatchMeshRecord(
@@ -975,7 +997,6 @@ export class ZLinkSpotNodeRuntimeManager {
975
997
  entrySpotType: spotNode.entrySpotType,
976
998
  nativeSpot: node.entrySpot() as never,
977
999
  nativeNode: node as unknown as ZLinkBackendSpotNode,
978
- createReceived: () => this.options.backendAdapterFactory.createReceived(),
979
1000
  createTopicMessage: () => this.options.backendAdapterFactory.createTopicMessage(),
980
1001
  nodeRid: String(node.status().routingId),
981
1002
  spotNodeName,
@@ -985,8 +1006,6 @@ export class ZLinkSpotNodeRuntimeManager {
985
1006
  spotPublisherClient: this.options.spotPublisherClient,
986
1007
  routedTransport: this.options.routedTransport,
987
1008
  spotRouterChannelIdForMesh: this.options.spotRouterChannelIdForMesh,
988
- channelMeshNameForChannel: (channelName) =>
989
- resolveChannelMeshName(this.options.registration, channelName),
990
1009
  timerHandlers: spotNode.entrySpotTimerHandlers,
991
1010
  packetHandlers: spotNode.entrySpotPacketHandlers,
992
1011
  subscriptionHandlers: spotNode.entrySpotSubscriptionHandlers,
@@ -1089,6 +1108,16 @@ export class ZLinkSpotNodeRuntimeManager {
1089
1108
  await activation.commitServiceActorJoin(actor, handoffBacklog);
1090
1109
  }
1091
1110
 
1111
+ executeEntryActor<T>(meshName: string, actorId: string, operation: () => Promise<T>): Promise<T> {
1112
+ const activation = this.entryActivations.get(meshName);
1113
+ if (activation === undefined) {
1114
+ throw new ZLinkConfigurationException(
1115
+ `Entry Spot Actor '${actorId}' has no activation for MeshNode '${meshName}'.`
1116
+ );
1117
+ }
1118
+ return activation.executeActor(actorId, operation);
1119
+ }
1120
+
1092
1121
  publish(
1093
1122
  meshName: string,
1094
1123
  channelName: string,
@@ -1098,7 +1127,7 @@ export class ZLinkSpotNodeRuntimeManager {
1098
1127
  signal?: AbortSignal,
1099
1128
  metadata: ReadonlyMap<string, string> = EMPTY_SPOT_METADATA
1100
1129
  ): Promise<ZLinkSubmitResult> {
1101
- if (this.disposed) {
1130
+ if (this.disposal.started) {
1102
1131
  return Promise.reject(runtimeShutdownError());
1103
1132
  }
1104
1133
  if (signal?.aborted === true) {
@@ -1165,7 +1194,7 @@ export class ZLinkSpotNodeRuntimeManager {
1165
1194
  flags: number,
1166
1195
  metadata: ReadonlyMap<string, string>
1167
1196
  ): ZLinkSubmitResult {
1168
- if (this.disposed) {
1197
+ if (this.disposal.started) {
1169
1198
  throw runtimeShutdownError();
1170
1199
  }
1171
1200
  const publisher = this.publishers.get(meshName);
@@ -1214,39 +1243,13 @@ export function createFrameworkEntrySpotId(prefix: string): string {
1214
1243
  return `${prefix}-entry-${randomUUID()}`;
1215
1244
  }
1216
1245
 
1217
- function resolveChannelMeshName(
1218
- registration: ZLinkFrameworkRegistration,
1219
- channelName: string
1220
- ): string | undefined {
1221
- const matches = [...registration.spotNodes.entries()]
1222
- .filter(([, node]) =>
1223
- Object.prototype.hasOwnProperty.call(node.meshChannels ?? {}, channelName)
1224
- )
1225
- .map(([meshName]) => meshName);
1226
- return matches.length === 1 ? matches[0] : undefined;
1227
- }
1228
-
1229
1246
  function mapPublishSubmitStatus(result: number): ZLinkSubmitStatus {
1230
- switch (result) {
1231
- case SubmitResult.Ok:
1232
- return ZLinkSubmitStatus.Submitted;
1233
- case SubmitResult.Backpressured:
1234
- case SubmitResult.NotAdmitted:
1235
- return ZLinkSubmitStatus.Backpressured;
1236
- case SubmitResult.NotFound:
1237
- // A publish with no matching subscriber is a successful zero-recipient
1238
- // operation, not an operation-specific not-found failure.
1239
- return ZLinkSubmitStatus.Submitted;
1240
- case SubmitResult.NotConnected:
1241
- return ZLinkSubmitStatus.RouteNotConnected;
1242
- case SubmitResult.Terminated:
1243
- case SubmitResult.InvalidHandle:
1244
- return ZLinkSubmitStatus.Shutdown;
1245
- default:
1246
- throw new ZLinkConfigurationException(
1247
- `Logical Multicast failed with submit result '${result}'.`
1248
- );
1249
- }
1247
+ // Source publication preserves its local admission status before commit.
1248
+ if (result === SubmitResult.NotAdmitted || result === SubmitResult.Backpressured)
1249
+ return ZLinkSubmitStatus.Backpressured;
1250
+ // A publish with no matching subscriber succeeds with zero recipients.
1251
+ if (result === SubmitResult.NotFound) return ZLinkSubmitStatus.Submitted;
1252
+ return classifySubmitResult(result, 'Logical Multicast').status;
1250
1253
  }
1251
1254
 
1252
1255
  function requireEntrySpotReply(result: number): void {
@@ -1258,8 +1261,10 @@ function requireEntrySpotReply(result: number): void {
1258
1261
  }
1259
1262
 
1260
1263
  function requirePublicRuntimeWeight(value: number, label: string): number {
1261
- if (!Number.isInteger(value) || value < 0 || value > 10_000) {
1262
- throw new ZLinkConfigurationException(`${label} must be an integer in 0..10000.`);
1264
+ if (!isValidPublicWeight(value)) {
1265
+ throw new ZLinkConfigurationException(
1266
+ `${label} must be an integer in 0..${ZLINK_MAX_PUBLIC_WEIGHT}.`
1267
+ );
1263
1268
  }
1264
1269
  return value;
1265
1270
  }
@@ -1351,7 +1356,7 @@ function objectCapability(
1351
1356
  }
1352
1357
 
1353
1358
  function aggregatePlacementCapacity(actorLimit: number, spotLimit: number): number {
1354
- const unlimited = 0x7fff_ffff;
1359
+ const unlimited = ZLINK_MAX_CAPACITY;
1355
1360
  const actors = actorLimit === 0 ? unlimited : actorLimit;
1356
1361
  const spots = spotLimit === 0 ? unlimited : spotLimit;
1357
1362
  return Math.min(unlimited, actors + spots);
@@ -1,42 +1,40 @@
1
+ import {
2
+ type RoutingId,
3
+ type ZLinkChannelClient,
4
+ type ZLinkChannelRequestCall,
5
+ type ZLinkMessageMetadata,
6
+ type ZLinkPublishCall,
7
+ type ZLinkRequestCall,
8
+ type ZLinkSendCall,
9
+ type ZLinkSpotOutbound,
10
+ type ZLinkSpotPublisherClient,
11
+ type ZLinkSpotRequestCall,
12
+ type ZLinkSpotSendCall,
13
+ ZLinkSpotKind
14
+ } from '../../contracts';
15
+
16
+ import {
17
+ ZLINK_MAX_MESH_NAME_BYTES,
18
+ ZLINK_MAX_STABLE_TYPE_BYTES
19
+ } from '../../contracts/Common/CoreTypes';
20
+ import type { ZLinkBackendSpot } from '../backend/contracts';
21
+ import { ZLinkConfigurationException } from '../configuration';
22
+ import { requireZLinkYieldTurn } from '../execution';
1
23
  import {
2
24
  ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException,
4
- internalFrameworkErrorKind
25
+ createInternalFrameworkException
5
26
  } from '../framework-errors-internal';
6
- import { ZLinkFrameworkRuntimeState, ZLinkSpotKind } from '../../contracts';
7
- import { ZLinkFrameworkException } from '../../contracts/Errors';
8
- import type {
9
- RoutingId,
10
- ZLinkChannelClient,
11
- ZLinkChannelRequestCall,
12
- ZLinkPublishCall,
13
- ZLinkRequestCall,
14
- ZLinkSendCall,
15
- ZLinkMessageMetadata,
16
- ZLinkSpotOutbound,
17
- ZLinkSpotRequestCall,
18
- ZLinkSpotSendCall,
19
- ZLinkSpotPublisherClient
20
- } from '../../contracts';
27
+ import { resolveFrameworkPacketName } from '../messaging/packet-name';
21
28
  import {
22
29
  requireOneWayCompletion,
23
30
  throwAlreadySubmitted,
24
31
  type ZLinkSubmitResult
25
32
  } from '../messaging/submission-result';
26
33
  import { normalizeOpaqueRoutingId } from '../routing-id';
27
- import { ZLinkConfigurationException } from '../configuration';
28
- import type { ZLinkBackendSpot } from '../backend/contracts';
29
34
  import { deliverOnSerial } from '../workers';
30
- import { requireZLinkYieldTurn } from '../execution';
31
- import { resolveFrameworkPacketName } from '../messaging/packet-name';
35
+ import { resolveSpotHandle, type ResolvedSpotHandle, type SpotHandle } from './spot-handle';
32
36
  import type { ZLinkSpotRouteTarget } from './spot-routing-internal';
33
37
  import { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
34
- import {
35
- resolveSpotHandle,
36
- refreshSpotHandle,
37
- type SpotHandle,
38
- type ResolvedSpotHandle
39
- } from './spot-handle';
40
38
 
41
39
  export interface DefaultZLinkSpotOutboundOptions {
42
40
  readonly serial: ZLinkSpotSerialTurnExecutor;
@@ -228,6 +226,7 @@ export interface ZLinkSpotRoutedTransport {
228
226
  }
229
227
 
230
228
  export interface ZLinkSpotRoutedSendOptions {
229
+ readonly instanceSpot?: boolean;
231
230
  readonly packetName?: string;
232
231
  /** Internal end-to-end budget remaining for route admission. */
233
232
  readonly timeoutMs?: number;
@@ -267,13 +266,21 @@ function createAddressedSpotSendCall(
267
266
  selectOnce(options, 'instanceSpot');
268
267
  options.instanceSpot = true;
269
268
  if (instanceSpotType !== undefined) {
270
- options.instanceSpotType = requireAddressValue(instanceSpotType, 'Instance Spot type', 255);
269
+ options.instanceSpotType = requireAddressValue(
270
+ instanceSpotType,
271
+ 'Instance Spot type',
272
+ ZLINK_MAX_STABLE_TYPE_BYTES
273
+ );
271
274
  }
272
275
  return this;
273
276
  },
274
277
  inMesh(meshName: string) {
275
278
  selectOnce(options, 'inMesh');
276
- options.initialMeshName = requireAddressValue(meshName, 'Mesh name', 255);
279
+ options.initialMeshName = requireAddressValue(
280
+ meshName,
281
+ 'Mesh name',
282
+ ZLINK_MAX_MESH_NAME_BYTES
283
+ );
277
284
  return this;
278
285
  },
279
286
  async submit(signal?: AbortSignal): Promise<void> {
@@ -323,13 +330,21 @@ function createAddressedSpotRequestCall(
323
330
  selectOnce(options, 'instanceSpot');
324
331
  options.instanceSpot = true;
325
332
  if (instanceSpotType !== undefined) {
326
- options.instanceSpotType = requireAddressValue(instanceSpotType, 'Instance Spot type', 255);
333
+ options.instanceSpotType = requireAddressValue(
334
+ instanceSpotType,
335
+ 'Instance Spot type',
336
+ ZLINK_MAX_STABLE_TYPE_BYTES
337
+ );
327
338
  }
328
339
  return this;
329
340
  },
330
341
  inMesh(meshName: string) {
331
342
  selectOnce(options, 'inMesh');
332
- options.initialMeshName = requireAddressValue(meshName, 'Mesh name', 255);
343
+ options.initialMeshName = requireAddressValue(
344
+ meshName,
345
+ 'Mesh name',
346
+ ZLINK_MAX_MESH_NAME_BYTES
347
+ );
333
348
  return this;
334
349
  },
335
350
  timeout(timeoutMs: number) {
@@ -680,29 +695,7 @@ export async function requestToSpotHandle<TReply = unknown>(
680
695
  return transport.requestToSpot<TReply>(target, request, transportOptions);
681
696
  };
682
697
 
683
- const resolved = await requireSpotRef(spot, options.signal);
684
- try {
685
- return await requestResolved(resolved);
686
- } catch (error) {
687
- if (!shouldRefreshAfterRouteDisconnect(resolved, error)) {
688
- throw error;
689
- }
690
- let refreshed: ResolvedSpotHandle | undefined;
691
- try {
692
- refreshed = await refreshSpotHandle(spot, options.signal);
693
- } catch {
694
- throw error;
695
- }
696
- if (isShutdownTargetState(refreshed?.targetNodeState)) {
697
- throw createInternalFrameworkException(
698
- ZLinkFrameworkInternalErrorKind.RuntimeShutdown,
699
- `Spot '${String(spot.spotId)}' target host is shutting down.`,
700
- false,
701
- error
702
- );
703
- }
704
- throw error;
705
- }
698
+ return requestResolved(await requireSpotRef(spot, options.signal));
706
699
  }
707
700
 
708
701
  async function requireSpotRef(
@@ -730,20 +723,6 @@ function spotRefToSpotRouteTarget(
730
723
  };
731
724
  }
732
725
 
733
- function shouldRefreshAfterRouteDisconnect(target: ResolvedSpotHandle, error: unknown): boolean {
734
- return (
735
- target.targetNodeState === ZLinkFrameworkRuntimeState.Serving &&
736
- error instanceof ZLinkFrameworkException &&
737
- internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.RouteNotConnected
738
- );
739
- }
740
-
741
- function isShutdownTargetState(state: ResolvedSpotHandle['targetNodeState']): boolean {
742
- return (
743
- state === ZLinkFrameworkRuntimeState.Draining || state === ZLinkFrameworkRuntimeState.Stopped
744
- );
745
- }
746
-
747
726
  function normalizeSpotRefRoutingId(routingId: RoutingId): RoutingId {
748
727
  return normalizeOpaqueRoutingId(routingId);
749
728
  }