@zlink-systems/framework 0.26.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 (521) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  3. package/dist/contracts/Common/CoreTypes.js +7 -0
  4. package/dist/contracts/Common/index.d.ts +1 -1
  5. package/dist/contracts/Common/index.js +0 -1
  6. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  7. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  8. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  9. package/dist/contracts/Configuration/Registration.js +58 -36
  10. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  12. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  16. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  17. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  18. package/dist/contracts/Handlers/JsonContract.js +10 -4
  19. package/dist/contracts/Locations/Authority.d.ts +1 -1
  20. package/dist/contracts/Locations/Authority.js +3 -2
  21. package/dist/contracts/Locations/Options.js +1 -1
  22. package/dist/contracts/Locations/Stores.d.ts +12 -0
  23. package/dist/contracts/Locations/Stores.js +9 -0
  24. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  25. package/dist/internal.d.ts +4 -0
  26. package/dist/internal.js +15 -1
  27. package/dist/nest-integration.d.ts +4 -2
  28. package/dist/nest-integration.js +14 -4
  29. package/dist/runtime/abort.d.ts +1 -0
  30. package/dist/runtime/abort.js +8 -5
  31. package/dist/runtime/activation-admission.d.ts +1 -2
  32. package/dist/runtime/activation-admission.js +2 -6
  33. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  34. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  35. package/dist/runtime/actors/actor-client.d.ts +2 -2
  36. package/dist/runtime/actors/actor-client.js +42 -143
  37. package/dist/runtime/actors/actor-context.d.ts +3 -5
  38. package/dist/runtime/actors/actor-context.js +13 -11
  39. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  40. package/dist/runtime/actors/actor-handoff.js +8 -8
  41. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  42. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  43. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  44. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  45. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  46. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  47. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  48. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  49. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  50. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  51. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  52. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  53. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  54. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  55. package/dist/runtime/actors/bound-session-wire.js +2 -7
  56. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  57. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  58. package/dist/runtime/actors/index.d.ts +9 -7
  59. package/dist/runtime/actors/index.js +87 -69
  60. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  61. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  62. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  63. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  64. package/dist/runtime/admission.d.ts +2 -0
  65. package/dist/runtime/admission.js +7 -1
  66. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  67. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  68. package/dist/runtime/backend/contracts/index.d.ts +6 -23
  69. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  70. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  71. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  72. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
  73. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
  74. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  75. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  76. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  77. package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
  78. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  79. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  80. package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
  81. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  82. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  83. package/dist/runtime/backend/runtime-values.js +2 -0
  84. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  85. package/dist/runtime/channels/channel-clients.js +68 -52
  86. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  87. package/dist/runtime/channels/channel-envelope.js +47 -29
  88. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  89. package/dist/runtime/channels/channel-outbound-operations.js +9 -10
  90. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  91. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  94. package/dist/runtime/channels/channel-runtime-manager.js +5 -2
  95. package/dist/runtime/channels/channel-socket-options.js +3 -2
  96. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  97. package/dist/runtime/channels/channel-socket-registry.js +248 -174
  98. package/dist/runtime/channels/channel-transports.d.ts +11 -17
  99. package/dist/runtime/channels/channel-transports.js +68 -47
  100. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  101. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  102. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  103. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  104. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  105. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  106. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  107. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  108. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  109. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  110. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  111. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  112. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  113. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  114. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  115. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  116. package/dist/runtime/diagnostics/flow-context.js +16 -2
  117. package/dist/runtime/diagnostics/index.d.ts +4 -2
  118. package/dist/runtime/diagnostics/index.js +14 -4
  119. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  120. package/dist/runtime/diagnostics/message-flow.js +10 -19
  121. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  122. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  123. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  124. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  125. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  126. package/dist/runtime/disposal.d.ts +5 -0
  127. package/dist/runtime/disposal.js +22 -0
  128. package/dist/runtime/execution/index.d.ts +12 -9
  129. package/dist/runtime/execution/index.js +58 -14
  130. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  131. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  132. package/dist/runtime/execution/state-lane.d.ts +8 -1
  133. package/dist/runtime/execution/state-lane.js +118 -3
  134. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  135. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  136. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  137. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  138. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  139. package/dist/runtime/foundation/operation-identity.js +9 -5
  140. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  141. package/dist/runtime/foundation/operation-registry.js +34 -44
  142. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  143. package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
  144. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  145. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  146. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  147. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  148. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  149. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  150. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  151. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  152. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  153. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  154. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  155. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  156. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  157. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  158. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  159. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  160. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  161. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  162. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  163. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  164. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  165. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  166. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  167. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  168. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  169. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  170. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  171. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  172. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  173. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  174. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  175. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  176. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  177. package/dist/runtime/framework-errors-internal.js +343 -122
  178. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  179. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  180. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  181. package/dist/runtime/host/actor-packet-relay.js +48 -91
  182. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  183. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  184. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  185. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  186. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  187. package/dist/runtime/host/application-job-queue.js +16 -33
  188. package/dist/runtime/host/bound-session-relay.js +1 -1
  189. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  190. package/dist/runtime/host/index.d.ts +14 -13
  191. package/dist/runtime/host/index.js +190 -157
  192. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  193. package/dist/runtime/host/instance-activation-authority.js +17 -45
  194. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  195. package/dist/runtime/host/location-runtime-owner.js +2 -2
  196. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  197. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  198. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  199. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  200. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  201. package/dist/runtime/host/remote-bound-session-relay.js +7 -20
  202. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  203. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  204. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  205. package/dist/runtime/host/runtime-shutdown.js +18 -21
  206. package/dist/runtime/host/service-relocation-control.js +6 -1
  207. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  208. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  209. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  210. package/dist/runtime/host/spot-address-transport.js +34 -136
  211. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  212. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  213. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  214. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  215. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  216. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  217. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  218. package/dist/runtime/locations/authority-key-codec.js +4 -3
  219. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  220. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  221. package/dist/runtime/locations/creation-operation-id.js +6 -4
  222. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  223. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  224. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  225. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  226. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  227. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  228. package/dist/runtime/locations/key-codec.js +3 -2
  229. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  230. package/dist/runtime/locations/lease-tracker.js +7 -11
  231. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  232. package/dist/runtime/locations/lifecycle.js +2 -31
  233. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  234. package/dist/runtime/locations/location-store-failure.js +7 -0
  235. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  236. package/dist/runtime/locations/location-store-pages.js +13 -0
  237. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  238. package/dist/runtime/locations/location-store-repository.js +303 -332
  239. package/dist/runtime/locations/relocation-blob.js +18 -5
  240. package/dist/runtime/locations/resolvers.d.ts +5 -5
  241. package/dist/runtime/locations/resolvers.js +37 -28
  242. package/dist/runtime/locations/runtime.d.ts +5 -4
  243. package/dist/runtime/locations/runtime.js +123 -92
  244. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  245. package/dist/runtime/locations/spot-location-claims.js +42 -1
  246. package/dist/runtime/messaging/payload-codec.js +26 -20
  247. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  248. package/dist/runtime/messaging/submission-result.js +48 -0
  249. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  250. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  251. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  252. package/dist/runtime/spots/index.d.ts +14 -20
  253. package/dist/runtime/spots/index.js +302 -176
  254. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  255. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  256. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  257. package/dist/runtime/spots/spot-activation-state.js +2 -2
  258. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  259. package/dist/runtime/spots/spot-activation.js +49 -32
  260. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  261. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  262. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  263. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  264. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  265. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  266. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  267. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  268. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  269. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  270. package/dist/runtime/spots/spot-context.d.ts +2 -2
  271. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  272. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  273. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  274. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  275. package/dist/runtime/spots/spot-manager-public.js +5 -4
  276. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  277. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  278. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  279. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  280. package/dist/runtime/spots/spot-outbound.js +9 -8
  281. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  282. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  283. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  284. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  285. package/dist/runtime/spots/spot-route-replies.js +3 -1
  286. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  287. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  288. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  289. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  290. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  291. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  292. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  293. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  294. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  295. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  296. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  297. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  298. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  299. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  300. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  301. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  302. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  303. package/dist/runtime/streams/bound-session-service.js +11 -1
  304. package/dist/runtime/streams/index.d.ts +14 -15
  305. package/dist/runtime/streams/index.js +20 -21
  306. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  307. package/dist/runtime/streams/managed-stream.js +17 -8
  308. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  309. package/dist/runtime/streams/protocol.d.ts +6 -33
  310. package/dist/runtime/streams/protocol.js +38 -110
  311. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  312. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  313. package/dist/runtime/streams/session-calls.d.ts +1 -1
  314. package/dist/runtime/streams/session-calls.js +5 -4
  315. package/dist/runtime/streams/session-context.d.ts +6 -6
  316. package/dist/runtime/streams/session-context.js +22 -4
  317. package/dist/runtime/streams/session-requests.js +2 -1
  318. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  319. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  320. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  321. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  322. package/dist/runtime/workers/index.d.ts +2 -2
  323. package/dist/runtime/workers/index.js +5 -4
  324. package/package.json +3 -3
  325. package/src/contracts/Common/CoreTypes.ts +7 -0
  326. package/src/contracts/Common/index.ts +1 -1
  327. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  328. package/src/contracts/Configuration/Registration.ts +92 -48
  329. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  330. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  331. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  332. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  333. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  334. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  335. package/src/contracts/Handlers/JsonContract.ts +14 -4
  336. package/src/contracts/Locations/Authority.ts +7 -3
  337. package/src/contracts/Locations/Options.ts +1 -1
  338. package/src/contracts/Locations/Stores.ts +14 -0
  339. package/src/contracts/Spots/Contracts.ts +1 -1
  340. package/src/internal.ts +14 -0
  341. package/src/nest-integration.ts +28 -10
  342. package/src/runtime/abort.ts +6 -5
  343. package/src/runtime/activation-admission.ts +2 -8
  344. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  345. package/src/runtime/actors/actor-client.ts +77 -204
  346. package/src/runtime/actors/actor-context.ts +39 -33
  347. package/src/runtime/actors/actor-handoff.ts +24 -22
  348. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  349. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  350. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  351. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  352. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  353. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  354. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  355. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  356. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  357. package/src/runtime/actors/bound-session-wire.ts +2 -8
  358. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  359. package/src/runtime/actors/index.ts +100 -79
  360. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  361. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  362. package/src/runtime/admission.ts +8 -1
  363. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  364. package/src/runtime/backend/contracts/index.ts +13 -29
  365. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  366. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  367. package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
  368. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  369. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  370. package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
  371. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  372. package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
  373. package/src/runtime/backend/raw-binding-port.ts +1 -1
  374. package/src/runtime/backend/runtime-values.ts +4 -1
  375. package/src/runtime/channels/channel-clients.ts +132 -85
  376. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  377. package/src/runtime/channels/channel-envelope.ts +58 -29
  378. package/src/runtime/channels/channel-outbound-operations.ts +10 -23
  379. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  380. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  381. package/src/runtime/channels/channel-runtime-manager.ts +6 -2
  382. package/src/runtime/channels/channel-socket-options.ts +8 -2
  383. package/src/runtime/channels/channel-socket-registry.ts +301 -192
  384. package/src/runtime/channels/channel-transports.ts +161 -112
  385. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  386. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  387. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  388. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  389. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  390. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  391. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  392. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  393. package/src/runtime/diagnostics/flow-context.ts +16 -2
  394. package/src/runtime/diagnostics/index.ts +27 -17
  395. package/src/runtime/diagnostics/message-flow.ts +15 -25
  396. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  397. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  398. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  399. package/src/runtime/disposal.ts +19 -0
  400. package/src/runtime/execution/index.ts +60 -20
  401. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  402. package/src/runtime/execution/state-lane.ts +142 -4
  403. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  404. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  405. package/src/runtime/foundation/operation-identity.ts +11 -5
  406. package/src/runtime/foundation/operation-registry.ts +33 -50
  407. package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
  408. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  409. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  410. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  411. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  412. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  413. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  414. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  415. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  416. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  417. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  418. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  419. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  420. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  421. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  422. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  423. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  424. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  425. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  426. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  427. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  428. package/src/runtime/framework-errors-internal.ts +380 -134
  429. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  430. package/src/runtime/host/actor-packet-relay.ts +57 -147
  431. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  432. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  433. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  434. package/src/runtime/host/application-job-queue.ts +28 -34
  435. package/src/runtime/host/bound-session-relay.ts +1 -2
  436. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  437. package/src/runtime/host/index.ts +327 -296
  438. package/src/runtime/host/instance-activation-authority.ts +89 -109
  439. package/src/runtime/host/location-runtime-owner.ts +4 -2
  440. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  441. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  442. package/src/runtime/host/remote-bound-session-relay.ts +8 -41
  443. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  444. package/src/runtime/host/runtime-shutdown.ts +17 -21
  445. package/src/runtime/host/service-relocation-control.ts +14 -1
  446. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  447. package/src/runtime/host/spot-address-transport.ts +73 -195
  448. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  449. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  450. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  451. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  452. package/src/runtime/locations/authority-key-codec.ts +7 -3
  453. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  454. package/src/runtime/locations/creation-operation-id.ts +6 -3
  455. package/src/runtime/locations/domain-store-contract.ts +12 -3
  456. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  457. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  458. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  459. package/src/runtime/locations/key-codec.ts +3 -2
  460. package/src/runtime/locations/lease-tracker.ts +8 -14
  461. package/src/runtime/locations/lifecycle.ts +13 -43
  462. package/src/runtime/locations/location-store-failure.ts +4 -0
  463. package/src/runtime/locations/location-store-pages.ts +18 -0
  464. package/src/runtime/locations/location-store-repository.ts +450 -478
  465. package/src/runtime/locations/relocation-blob.ts +17 -6
  466. package/src/runtime/locations/resolvers.ts +75 -49
  467. package/src/runtime/locations/runtime.ts +220 -110
  468. package/src/runtime/locations/spot-location-claims.ts +58 -1
  469. package/src/runtime/messaging/payload-codec.ts +35 -24
  470. package/src/runtime/messaging/submission-result.ts +57 -1
  471. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  472. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  473. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  474. package/src/runtime/spots/index.ts +433 -229
  475. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  476. package/src/runtime/spots/spot-activation-state.ts +2 -2
  477. package/src/runtime/spots/spot-activation.ts +67 -37
  478. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  479. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  480. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  481. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  482. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  483. package/src/runtime/spots/spot-context.ts +3 -3
  484. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  485. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  486. package/src/runtime/spots/spot-manager-public.ts +21 -17
  487. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  488. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  489. package/src/runtime/spots/spot-outbound.ts +45 -23
  490. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  491. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  492. package/src/runtime/spots/spot-route-replies.ts +6 -4
  493. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  494. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  495. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  496. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  497. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  498. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  499. package/src/runtime/spots/spot-timer.ts +3 -2
  500. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  501. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  502. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  503. package/src/runtime/streams/bound-session-service.ts +21 -1
  504. package/src/runtime/streams/index.ts +76 -64
  505. package/src/runtime/streams/managed-stream.ts +29 -10
  506. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  507. package/src/runtime/streams/protocol.ts +34 -88
  508. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  509. package/src/runtime/streams/session-calls.ts +6 -5
  510. package/src/runtime/streams/session-context.ts +54 -10
  511. package/src/runtime/streams/session-requests.ts +2 -1
  512. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  513. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  514. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  515. package/src/runtime/workers/index.ts +13 -12
  516. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  517. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  518. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  519. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  520. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  521. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -6,34 +6,35 @@ import type {
6
6
  ZLinkSpot,
7
7
  ZLinkSpotActorJoinResult
8
8
  } from '../../contracts';
9
+ import type { Message } from '../../contracts/Common/Message';
9
10
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
10
- import { ZLinkBackendSpotDispatchEvent } from '../backend/contracts';
11
- import type {
12
- ZLinkBackendActorRef,
13
- ZLinkBackendActorRecvInfo,
14
- ZLinkBackendSpot,
15
- ZLinkBackendTopicMessage
11
+ import type { ZLinkRemoteBoundSessionTarget } from '../actors';
12
+ import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
13
+ import type { ZLinkApplicationWorkClaim } from '../admission';
14
+ import {
15
+ type ZLinkBackendActorRecvInfo,
16
+ type ZLinkBackendActorRef,
17
+ type ZLinkBackendSpot,
18
+ type ZLinkBackendTopicMessage,
19
+ ZLinkBackendSpotDispatchEvent
16
20
  } from '../backend/contracts';
17
- import type { Message } from '../../contracts/Common/Message';
21
+
18
22
  import type { RequestResult } from '../backend/runtime-values';
19
- type RuntimeMessage = Message;
20
- import type { ZLinkRemoteBoundSessionTarget } from '../actors';
21
23
  import type { ZLinkDispatchErrorReporter } from '../channels';
22
24
  import { ZLinkSpotActorLifecycleDrain } from './spot-actor-lifecycle-drain';
25
+ import type { ZLinkActorPacketDelivery } from './spot-actor-packet-dispatch';
23
26
  import { ZLinkSpotActorPacketDrain, type ZLinkActorDispatchPart } from './spot-actor-packet-drain';
24
- import { ZLINK_RECV_DONT_WAIT } from './spot-native-flags';
25
- import { ZLinkSpotNativeActorJoinAdmission } from './spot-native-actor-join-admission';
26
- import { ZLinkSpotRoutedFrameDispatch } from './spot-routed-frame-dispatch';
27
- import { ZLinkSpotSubscriptionDispatch } from './spot-subscription-dispatch';
28
27
  import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
29
- import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
30
- import type { ZLinkApplicationWorkClaim } from '../admission';
31
- import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
32
- import type { ZLinkActorPacketDelivery } from './spot-actor-packet-dispatch';
28
+ import { ZLinkSpotRoutedFrameDispatch } from './spot-routed-frame-dispatch';
33
29
  import type {
34
30
  ZLinkSpotActorTransferRuntime,
35
31
  ZLinkSpotBoundSessionRuntime
36
32
  } from './spot-runtime-ports';
33
+ import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
34
+ import { ZLinkSpotSubscriptionDispatch } from './spot-subscription-dispatch';
35
+ const ACTOR_JOIN_POLL_INTERVAL_MS = 5;
36
+
37
+ type RuntimeMessage = Message;
37
38
 
38
39
  const ZLINK_SPOT_DISPATCH_SUBJECT_SPOT = 1;
39
40
  const ZLINK_SPOT_DISPATCH_SUBJECT_CHANNEL_DEALER = 3;
@@ -62,11 +63,11 @@ interface ZLinkSpotActorAdmissionRuntime {
62
63
  readonly kind: 'enabled';
63
64
  readonly runtime: ZLinkSpotActorTransferRuntime;
64
65
  };
65
- readonly commitNativeActor?: (actor: ZLinkActor) => Promise<void>;
66
66
  readonly commitActorDeparture?: (actorId: string) => void;
67
67
  readonly commitTransferredActor?: (
68
68
  actor: ZLinkActor,
69
- backlog: readonly ZLinkActorHandoffPacket[]
69
+ backlog: readonly ZLinkActorHandoffPacket[],
70
+ sealedSession: ZLinkRemoteBoundSessionTarget | undefined
70
71
  ) => Promise<readonly ZLinkActorHandoffResult[]>;
71
72
  }
72
73
 
@@ -75,8 +76,7 @@ interface ZLinkSpotActorPacketRuntime {
75
76
  readonly bindRemoteSession?: (
76
77
  actor: ZLinkBackendActorRef,
77
78
  sourceNodeRid: RoutingId,
78
- sourceSessionRid: RoutingId,
79
- declaredTarget?: ZLinkRemoteBoundSessionTarget
79
+ sourceSessionRid: RoutingId
80
80
  ) => void;
81
81
  readonly replyNoBind?: (
82
82
  info: ZLinkBackendActorRecvInfo,
@@ -93,7 +93,6 @@ interface ZLinkSpotActorJoinDispatchOptions {
93
93
  readonly nativeSpot: ZLinkBackendSpot;
94
94
  readonly createTopicMessage: () => ZLinkBackendTopicMessage;
95
95
  readonly serial: ZLinkSpotSerialTurnExecutor;
96
- readonly isSpotClosing?: () => boolean;
97
96
  readonly actors: ZLinkSpotActorAdmissionRuntime;
98
97
  readonly packets?: ZLinkSpotActorPacketRuntime;
99
98
  readonly boundSessionRuntime?: ZLinkSpotBoundSessionRuntime;
@@ -105,13 +104,10 @@ interface ZLinkSpotActorJoinDispatchOptions {
105
104
  }
106
105
 
107
106
  export class ZLinkSpotActorJoinDispatch {
108
- private draining = false;
109
- private redrainRequested = false;
110
107
  private readonly nativeSpotId: string;
111
108
  private readonly subscriptions: ZLinkSpotSubscriptionDispatch;
112
109
  private readonly actorLifecycleDrain: ZLinkSpotActorLifecycleDrain;
113
110
  private readonly actorPacketDrain: ZLinkSpotActorPacketDrain;
114
- private readonly nativeActorJoinAdmission: ZLinkSpotNativeActorJoinAdmission;
115
111
  private readonly routedFrames: ZLinkSpotRoutedFrameDispatch;
116
112
  private readonly nativeSpot: ZLinkBackendSpot;
117
113
 
@@ -136,20 +132,9 @@ export class ZLinkSpotActorJoinDispatch {
136
132
  waitIdle: waitSpotDispatchIdle,
137
133
  flowEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
138
134
  });
139
- this.nativeActorJoinAdmission = new ZLinkSpotNativeActorJoinAdmission({
140
- nativeSpot: options.nativeSpot,
141
- serial: options.serial,
142
- resolveActor: actors.resolveActor,
143
- getTarget: actors.getTarget,
144
- defaultAccept: actors.defaultAccept,
145
- commitAcceptedActor: actors.commitNativeActor,
146
- messageSerializers: options.messageSerializers,
147
- dispatchErrors: options.dispatchErrors
148
- });
149
135
  this.routedFrames = new ZLinkSpotRoutedFrameDispatch({
150
136
  nativeSpotId: this.nativeSpotId,
151
137
  serial: options.serial,
152
- isSpotClosing: options.isSpotClosing,
153
138
  resolveActor: actors.resolveActor,
154
139
  getTarget: () => actors.getTarget() as ZLinkActorJoinAdmissionTarget & ZLinkSpot,
155
140
  defaultAccept: actors.defaultAccept,
@@ -159,7 +144,7 @@ export class ZLinkSpotActorJoinDispatch {
159
144
  bindRemoteSession:
160
145
  options.packets?.bindRemoteSession === undefined
161
146
  ? undefined
162
- : (actor, sourceNodeRid, sourceSessionRid, declaredTarget) =>
147
+ : (actor, sourceNodeRid, sourceSessionRid) =>
163
148
  options.packets!.bindRemoteSession!(
164
149
  {
165
150
  actorId: actor.actorId,
@@ -167,8 +152,7 @@ export class ZLinkSpotActorJoinDispatch {
167
152
  nodeRid: actor.nodeRid
168
153
  },
169
154
  sourceNodeRid,
170
- sourceSessionRid,
171
- declaredTarget
155
+ sourceSessionRid
172
156
  ),
173
157
  routedBoundSessionReceiver: options.boundSessionRuntime?.receiveRoutedBoundSession.bind(
174
158
  options.boundSessionRuntime
@@ -223,10 +207,6 @@ export class ZLinkSpotActorJoinDispatch {
223
207
  return;
224
208
  }
225
209
  this.nativeSpot.setDispatchHandler((info) => {
226
- if (info.event === ZLinkBackendSpotDispatchEvent.ActorJoinReadable) {
227
- this.runDetached('spot actor join drain', () => this.drain());
228
- return;
229
- }
230
210
  if (info.event === ZLinkBackendSpotDispatchEvent.SubscribeReadable) {
231
211
  this.runDetached('spot subscription drain', () => this.subscriptions.drain());
232
212
  return;
@@ -278,41 +258,8 @@ export class ZLinkSpotActorJoinDispatch {
278
258
  }
279
259
  void callback().catch(() => undefined);
280
260
  }
281
-
282
- private async drain(): Promise<void> {
283
- if (this.draining) {
284
- this.redrainRequested = true;
285
- return;
286
- }
287
- this.draining = true;
288
- try {
289
- do {
290
- this.redrainRequested = false;
291
- await this.drainAvailableActorJoins();
292
- } while (this.redrainWasRequested());
293
- } finally {
294
- this.draining = false;
295
- }
296
- }
297
-
298
- private redrainWasRequested(): boolean {
299
- return this.redrainRequested;
300
- }
301
-
302
- private async drainAvailableActorJoins(): Promise<void> {
303
- for (;;) {
304
- const request = this.nativeSpot.recvActorJoin(ZLINK_RECV_DONT_WAIT);
305
- if (request === null) {
306
- await waitSpotDispatchIdle();
307
- return;
308
- }
309
- await this.options.serial.executeLifecycleOperation(() =>
310
- this.nativeActorJoinAdmission.admit(request, this.options.isSpotClosing?.() === true)
311
- );
312
- }
313
- }
314
261
  }
315
262
 
316
263
  function waitSpotDispatchIdle(): Promise<void> {
317
- return new Promise((resolve) => setTimeout(resolve, 5));
264
+ return new Promise((resolve) => setTimeout(resolve, ACTOR_JOIN_POLL_INTERVAL_MS));
318
265
  }
@@ -1,27 +1,31 @@
1
- import type {
2
- RoutingId,
3
- ZLinkActor,
4
- ZLinkMessageSerializer,
5
- ZLinkSpot,
6
- ZLinkSpotActorJoinResult
1
+ import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
2
+ import {
3
+ type RoutingId,
4
+ type ZLinkActor,
5
+ type ZLinkMessageSerializer,
6
+ type ZLinkSpot,
7
+ type ZLinkSpotActorJoinResult,
8
+ ZLinkEncodedPayload,
9
+ ZLinkMessage
7
10
  } from '../../contracts';
11
+
12
+ import type { Message } from '../../contracts/Common/Message';
8
13
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
9
- import { ZLinkEncodedPayload, ZLinkMessage } from '../../contracts';
14
+ import {
15
+ ZLinkDispatchErrorSurface,
16
+ ZLinkDispatchMessageKind,
17
+ ZLinkRuntimeDispatchErrorAction,
18
+ ZLinkRuntimeDispatchErrorReason
19
+ } from '../../contracts/Dispatch/ZLinkDispatchOptions';
10
20
  import { throwIfAborted } from '../abort';
11
- import type { Message } from '../../contracts/Common/Message';
21
+ import { ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME, ZLinkSpotActorDispatcher } from '../actors';
12
22
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
13
- import { ZLinkConfigurationException } from '../configuration';
14
- import {
15
- ZLinkFrameworkInternalErrorKind,
16
- createInternalFrameworkException
17
- } from '../framework-errors-internal';
18
23
  import { ZLinkDispatchErrorReporter } from '../channels';
19
- import { ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME, ZLinkSpotActorDispatcher } from '../actors';
24
+ import { ZLinkConfigurationException } from '../configuration';
20
25
  import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
21
- import { routingIdsEqual } from '../routing-id';
22
26
  import type { ZLinkSpotActivation } from './spot-activation-state';
23
- import type { ZLinkSpotActorTransferRuntime } from './spot-runtime-ports';
24
27
  import type { ZLinkSpotRouteResolver } from './spot-routing-internal';
28
+ import type { ZLinkSpotActorTransferRuntime } from './spot-runtime-ports';
25
29
 
26
30
  export interface ZLinkSpotActorMembershipOptions {
27
31
  readonly resolveActivation: (
@@ -41,11 +45,8 @@ export interface ZLinkSpotActorMembershipOptions {
41
45
  readonly entrySpotIdProvider?: (meshName: string) => string | undefined;
42
46
  readonly spotRouteResolver?: ZLinkSpotRouteResolver;
43
47
  readonly actorTransferRuntime?: ZLinkSpotActorTransferRuntime;
44
- readonly isSpotClosing?: (activation: ZLinkSpotActivation) => boolean;
45
48
  }
46
49
 
47
- export type ZLinkActorJoinRollback = () => Promise<void> | void;
48
-
49
50
  export class ZLinkSpotActorMembership {
50
51
  constructor(private readonly options: ZLinkSpotActorMembershipOptions) {}
51
52
 
@@ -53,22 +54,14 @@ export class ZLinkSpotActorMembership {
53
54
  spotId: RoutingId,
54
55
  actor: ZLinkActor,
55
56
  request: Message,
56
- commit: (
57
- spot: ZLinkSpot
58
- ) => Promise<ZLinkActorJoinRollback | void> | ZLinkActorJoinRollback | void,
57
+ commit: (spot: ZLinkSpot) => Promise<void> | void,
59
58
  signal?: AbortSignal,
60
59
  leaveSource?: () => Promise<void>,
61
- contentType = 'application/json'
60
+ contentType: string = ZlinkStreamContentType.Json
62
61
  ): Promise<ZLinkSpotActorJoinResult> {
63
62
  throwIfAborted(signal);
64
63
  const activation = this.requireActivation(spotId);
65
64
  return await this.runLifecycleOperation(activation, async () => {
66
- if (this.options.isSpotClosing?.(activation) === true) {
67
- throw createInternalFrameworkException(
68
- ZLinkFrameworkInternalErrorKind.RequestRejected,
69
- `User Spot '${String(spotId)}' is closing.`
70
- );
71
- }
72
65
  return await this.admitActorJoinCore(
73
66
  activation,
74
67
  actor,
@@ -85,41 +78,34 @@ export class ZLinkSpotActorMembership {
85
78
  activation: ZLinkSpotActivation,
86
79
  actor: ZLinkActor,
87
80
  request: Message,
88
- commit: (
89
- spot: ZLinkSpot
90
- ) => Promise<ZLinkActorJoinRollback | void> | ZLinkActorJoinRollback | void,
81
+ commit: (spot: ZLinkSpot) => Promise<void> | void,
91
82
  signal: AbortSignal | undefined,
92
83
  leaveSource: (() => Promise<void>) | undefined,
93
84
  contentType: string
94
85
  ): Promise<ZLinkSpotActorJoinResult> {
95
86
  const dispatcher = this.createActorDispatcher(activation);
96
- const transaction: {
97
- rollbackExternal?: ZLinkActorJoinRollback;
98
- rollbackMembership?: () => void;
99
- committed: boolean;
100
- } = { committed: false };
101
- let response: ZLinkSpotActorJoinResult;
102
- try {
103
- response = await dispatcher.evaluateActorJoin(actor, request, contentType);
104
- if (response.accepted) {
87
+ const response = await dispatcher.evaluateActorJoin(actor, request, contentType);
88
+ if (response.accepted) {
89
+ await commit(activation.spot);
90
+ activation.commitActorJoin(actor);
91
+ try {
92
+ await dispatcher.notifyJoinActor(actor);
93
+ } finally {
105
94
  if (leaveSource === undefined) {
106
- await this.options.entrySpotCallbacks?.onLeaveActor(actor, signal);
95
+ void this.options.entrySpotCallbacks?.onLeaveActor(actor, signal).catch((error) => {
96
+ this.options.dispatchErrors?.report({
97
+ surface: ZLinkDispatchErrorSurface.SpotActor,
98
+ messageKind: ZLinkDispatchMessageKind.ActorSend,
99
+ reason: ZLinkRuntimeDispatchErrorReason.HandlerException,
100
+ action: ZLinkRuntimeDispatchErrorAction.Drop,
101
+ actorId: actor.context.actorId,
102
+ error
103
+ });
104
+ });
107
105
  } else {
108
106
  await leaveSource();
109
107
  }
110
- await dispatcher.commitActorJoin(actor, async () => {
111
- const rollback = await commit(activation.spot);
112
- if (rollback !== undefined) transaction.rollbackExternal = rollback;
113
- transaction.rollbackMembership = activation.commitActorJoin(actor);
114
- transaction.committed = true;
115
- });
116
108
  }
117
- } catch (error) {
118
- if (transaction.committed) {
119
- transaction.rollbackMembership?.();
120
- await transaction.rollbackExternal?.();
121
- }
122
- throw error;
123
109
  }
124
110
  return {
125
111
  accepted: response.accepted,
@@ -169,24 +155,6 @@ export class ZLinkSpotActorMembership {
169
155
  'Spot actor leave requires an Entry Spot node routing id.'
170
156
  );
171
157
  }
172
- const remoteEntry =
173
- localEntryNodeRid !== undefined && !routingIdsEqual(entryNodeRid, localEntryNodeRid);
174
- if (!remoteEntry) {
175
- const leaveSource = async () => {
176
- activation.beginActorTransfer(actor.context.actorId);
177
- await activation.spot.onLeaveActor(actor);
178
- activation.commitActorDeparture(actor.context.actorId);
179
- this.options.actorTransferRuntime?.clearRoutedActor(actor);
180
- };
181
- // A Spot actor handler already owns this activation's serial turn.
182
- // Complete its lifecycle transition inside that turn instead of trying
183
- // to acquire a second turn for the same owner.
184
- if (activation.serial.isCurrentTurn) {
185
- await leaveSource();
186
- } else {
187
- await activation.serial.execute(leaveSource);
188
- }
189
- }
190
158
  const request = RuntimeMessage.from(Buffer.alloc(0));
191
159
  try {
192
160
  const context = actor.context as typeof actor.context & {
@@ -24,7 +24,6 @@ import { createInboundFlow, currentFlowContext, runWithFlow } from '../diagnosti
24
24
  import { streamSessionIdFromRoutingId } from '../streams/managed-stream';
25
25
  import type { ZLinkRemoteBoundSessionTarget } from '../actors';
26
26
  import {
27
- actorMessageFollowContext,
28
27
  ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET,
29
28
  ZLinkSpotActorDispatcher,
30
29
  ZLinkSpotActorHandlerRegistryRuntime
@@ -104,10 +103,6 @@ interface ZLinkSpotActorPacketDispatchOptions {
104
103
  | Promise<{ readonly handled: boolean; readonly response?: unknown } | undefined>
105
104
  | { readonly handled: boolean; readonly response?: unknown }
106
105
  | undefined;
107
- readonly onRemoteBoundSessionTarget?: (
108
- actorId: string,
109
- target: ZLinkRemoteBoundSessionTarget | undefined
110
- ) => void;
111
106
  readonly onDisconnectActor: (actor: ZLinkActor) => Promise<void>;
112
107
  readonly actorResponseSender?: (
113
108
  actor: ZLinkActor,
@@ -210,16 +205,6 @@ export class ZLinkSpotActorPacketDispatch {
210
205
  ) {
211
206
  return undefined;
212
207
  }
213
- if (
214
- remoteBoundSessionTarget !== undefined &&
215
- actorMessageFollowContext(fallbackActorRef) === undefined
216
- ) {
217
- // A replayed handoff/Message Follow packet keeps its captured Session
218
- // route solely for that packet's response. It cannot republish the
219
- // predecessor route over a binding already confirmed by a later Actor
220
- // owner turn.
221
- this.options.onRemoteBoundSessionTarget?.(actorId, remoteBoundSessionTarget);
222
- }
223
208
  const routed = await this.options.routeBeforeLocal?.(delivery);
224
209
  if (routed?.handled === true) {
225
210
  return routed.response;
@@ -239,7 +224,6 @@ export class ZLinkSpotActorPacketDispatch {
239
224
  );
240
225
  }
241
226
  if (header.name === ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET) {
242
- this.options.onRemoteBoundSessionTarget?.(actorId, undefined);
243
227
  await this.options.onDisconnectActor(actor);
244
228
  return undefined;
245
229
  }
@@ -5,7 +5,7 @@ import {
5
5
  import { ZLinkFrameworkException, type ActorRef, type RoutingId } from '../../contracts';
6
6
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
7
7
  import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
8
- import type { ZLinkRemoteActorPacketTarget, ZLinkRemoteBoundSessionTarget } from '../actors';
8
+ import type { ZLinkRemoteActorPacketTarget } from '../actors';
9
9
  import { decodeStreamHeader, messageToBytes, ZLinkStreamMessageKind } from '../streams/protocol';
10
10
  import {
11
11
  decodeRemoteActorSessionBinding,
@@ -25,8 +25,7 @@ interface ZLinkSpotActorPacketRelayDispatchOptions {
25
25
  readonly bindRemoteSession?: (
26
26
  actor: ActorRef,
27
27
  sourceNodeRid: RoutingId,
28
- sourceSessionRid: RoutingId,
29
- declaredTarget?: ZLinkRemoteBoundSessionTarget
28
+ sourceSessionRid: RoutingId
30
29
  ) => void;
31
30
  readonly flowEnabled?: () => boolean;
32
31
  }
@@ -81,18 +80,7 @@ export class ZLinkSpotActorPacketRelayDispatch {
81
80
  'Remote actor session binding source did not match the declared session node.'
82
81
  );
83
82
  }
84
- this.options.bindRemoteSession(
85
- actorRef,
86
- declaredSourceNodeRid,
87
- binding.sessionRid,
88
- remoteBoundSessionTarget === undefined
89
- ? undefined
90
- : {
91
- ...remoteBoundSessionTarget,
92
- sessionNodeRid: declaredSourceNodeRid,
93
- sessionRid: binding.sessionRid
94
- }
95
- );
83
+ this.options.bindRemoteSession(actorRef, declaredSourceNodeRid, binding.sessionRid);
96
84
  if (hasReplyToken(received.replyToken)) {
97
85
  submitSpotRouteBridgeReply(received, actorPacketRelay.envelope, {
98
86
  ok: true,
@@ -26,7 +26,7 @@ import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
26
26
 
27
27
  interface ZLinkEntrySpotContextOptions {
28
28
  readonly spotId: SpotId;
29
- readonly objectGeneration: number;
29
+ readonly objectGeneration: bigint;
30
30
  readonly nodeRid: RoutingId;
31
31
  readonly handlers: ZLinkSpotHandlerRegistry;
32
32
  readonly outbound: ZLinkSpotOutbound;
@@ -47,7 +47,7 @@ interface ZLinkEntrySpotContextOptions {
47
47
  interface ZLinkSpotContextOptions {
48
48
  readonly meshName: string;
49
49
  readonly spotId: SpotId;
50
- readonly objectGeneration: number;
50
+ readonly objectGeneration: bigint;
51
51
  readonly handlers: ZLinkSpotHandlerRegistry;
52
52
  readonly outbound: ZLinkSpotOutbound;
53
53
  readonly timers: ZLinkSpotTimerRegistry;
@@ -263,7 +263,7 @@ function withImmutableSpotIdentity<
263
263
  T extends {
264
264
  readonly meshName: string;
265
265
  readonly spotId: SpotId;
266
- readonly objectGeneration: number;
266
+ readonly objectGeneration: bigint;
267
267
  readonly nodeRid: RoutingId;
268
268
  }
269
269
  >(context: T): T {
@@ -88,7 +88,6 @@ interface ZLinkEntrySpotActivationOptions {
88
88
  readonly spotPublisherClient?: ZLinkSpotPublisherClient;
89
89
  readonly routedTransport?: ZLinkSpotRoutedTransport;
90
90
  readonly spotRouterChannelIdForMesh?: (meshName: string) => string;
91
- readonly channelMeshNameForChannel?: (channelName: string) => string | undefined;
92
91
  readonly providerResolver?: ZLinkProviderResolver;
93
92
  readonly dispatchErrors?: ZLinkDispatchErrorReporter;
94
93
  readonly runtimeEventPublisher?: ZLinkRuntimeEventPublisher;
@@ -99,7 +98,7 @@ interface ZLinkEntrySpotActivationOptions {
99
98
  readonly actorTransferRuntime?: ZLinkSpotActorTransferRuntime;
100
99
  readonly boundSessionRuntime?: ZLinkSpotBoundSessionRuntime;
101
100
  readonly actorHandoffRuntime?: ZLinkSpotActorHandoffRuntime;
102
- readonly detachedTaskRunner?: ZLinkDetachedTaskRunner;
101
+ readonly detachedTaskRunner: ZLinkDetachedTaskRunner;
103
102
  }
104
103
 
105
104
  export class ZLinkEntrySpotActivation {
@@ -121,6 +120,11 @@ export class ZLinkEntrySpotActivation {
121
120
  readonly context: ZLinkEntrySpotContext;
122
121
 
123
122
  constructor(private readonly options: ZLinkEntrySpotActivationOptions) {
123
+ if ((options.detachedTaskRunner as unknown) === undefined) {
124
+ throw new ZLinkConfigurationException(
125
+ 'Entry Spot activation requires a detached task runner.'
126
+ );
127
+ }
124
128
  this.serial = new ZLinkSpotSerialTurnExecutor(false, options.nativeSpot.routingId);
125
129
  this.spotSerialExecutor = new ZLinkSpotSerialExecutor(
126
130
  this.serial,
@@ -145,7 +149,7 @@ export class ZLinkEntrySpotActivation {
145
149
  this.workerRuntime = options.workerRuntime ?? new ZLinkWorkerRuntime();
146
150
  this.context = createEntrySpotContext({
147
151
  spotId: String(options.nativeSpot.routingId),
148
- objectGeneration: toContextGeneration(entrySpotGeneration(options.nativeSpot)),
152
+ objectGeneration: entrySpotGeneration(options.nativeSpot),
149
153
  nodeRid: options.nodeRid,
150
154
  handlers: this.handlers,
151
155
  outbound: this.outbound,
@@ -195,8 +199,6 @@ export class ZLinkEntrySpotActivation {
195
199
  target.remoteBoundSessionTarget,
196
200
  target.fallbackActorRef
197
201
  ),
198
- onRemoteBoundSessionTarget: (targetActorId, target) =>
199
- this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(targetActorId, target),
200
202
  onDisconnectActor: (actor) => this.notifyDisconnectActor(actor),
201
203
  actorResponseSender: this.options.boundSessionRuntime?.sendActorResponse.bind(
202
204
  this.options.boundSessionRuntime
@@ -325,7 +327,7 @@ export class ZLinkEntrySpotActivation {
325
327
  await cleanup(() => this.actorDispatch?.dispose());
326
328
  await cleanup(() => this.timers.dispose());
327
329
  await cleanup(() => this.spotSerialExecutor.close());
328
- await cleanup(() => disposeLifecycleHandlers(this.entrySpot));
330
+ await cleanup(() => disposeLifecycleHandlers(this.entrySpot, this.options.detachedTaskRunner));
329
331
  await cleanup(() => this.options.nativeSpot.dispose());
330
332
  if (this.initialized) {
331
333
  this.lifecycleMetrics.closed('entry');
@@ -372,6 +374,10 @@ export class ZLinkEntrySpotActivation {
372
374
  }
373
375
  }
374
376
 
377
+ executeActor<T>(actorId: string, operation: () => Promise<T>): Promise<T> {
378
+ return this.spotSerialExecutor.executeActor(actorId, operation);
379
+ }
380
+
375
381
  /**
376
382
  * Entry Spot membership does not have an application admission callback.
377
383
  * The shared core round-trip therefore accepts a valid returning Actor and
@@ -393,7 +399,6 @@ export class ZLinkEntrySpotActivation {
393
399
  kind: 'enabled',
394
400
  runtime: this.options.actorTransferRuntime
395
401
  },
396
- commitNativeActor: (actor) => this.commitEntryActorTransaction(actor),
397
402
  commitTransferredActor: async (actor, backlog) => {
398
403
  await this.commitEntryActorTransaction(actor);
399
404
  return await this.replayActorBacklog(actor, backlog);
@@ -401,23 +406,10 @@ export class ZLinkEntrySpotActivation {
401
406
  },
402
407
  packets: {
403
408
  handle: (delivery) => this.dispatchActorPacket(delivery),
404
- bindRemoteSession: (actor, sourceNodeRid, sourceSessionRid, declaredTarget) => {
409
+ bindRemoteSession: (actor, sourceNodeRid, sourceSessionRid) => {
405
410
  if (routingIdsEqual(sourceNodeRid, this.options.nativeNode.routingId)) {
406
411
  return;
407
412
  }
408
- const target =
409
- declaredTarget ??
410
- this.options.boundSessionRuntime?.resolveRemoteBoundSessionTarget(
411
- sourceNodeRid,
412
- sourceSessionRid
413
- );
414
- if (target !== undefined) {
415
- this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(actor.actorId, {
416
- ...target,
417
- sessionNodeRid: sourceNodeRid,
418
- sessionRid: sourceSessionRid
419
- });
420
- }
421
413
  this.options.nativeNode.bindRemoteActorSession(actor, sourceNodeRid, sourceSessionRid);
422
414
  },
423
415
  replyNoBind: (info, parts, result) => this.replyActorNoBind(info, parts, result)
@@ -549,15 +541,6 @@ function notifyEntryActorJoined(entrySpot: ZLinkEntrySpot, actor: ZLinkActor): P
549
541
  return callback === undefined ? Promise.resolve() : callback.call(entrySpot, actor);
550
542
  }
551
543
 
552
- function toContextGeneration(generation: bigint): number {
553
- if (generation < 0n || generation > BigInt(Number.MAX_SAFE_INTEGER)) {
554
- throw new ZLinkConfigurationException(
555
- `Entry Spot object generation '${generation}' cannot be represented by the Node.js public context.`
556
- );
557
- }
558
- return Number(generation);
559
- }
560
-
561
544
  function entrySpotGeneration(spot: ZLinkBackendSpot): bigint {
562
545
  return (
563
546
  spot.lifecycleGeneration ??
@@ -1,3 +1,4 @@
1
+ import { METRIC_NAMES } from '../diagnostics/runtime-metrics';
1
2
  import type { ZLinkRuntimeMetrics } from '../diagnostics';
2
3
 
3
4
  export type ZLinkSpotMetricKind = 'entry' | 'user';
@@ -6,10 +7,10 @@ export class ZLinkSpotLifecycleMetrics {
6
7
  constructor(private readonly metrics?: ZLinkRuntimeMetrics) {}
7
8
 
8
9
  opened(kind: ZLinkSpotMetricKind): void {
9
- this.metrics?.change('zlink.spot.count', 1, { kind });
10
+ this.metrics?.change(METRIC_NAMES.SpotCount, 1, { kind });
10
11
  }
11
12
 
12
13
  closed(kind: ZLinkSpotMetricKind): void {
13
- this.metrics?.change('zlink.spot.count', -1, { kind });
14
+ this.metrics?.change(METRIC_NAMES.SpotCount, -1, { kind });
14
15
  }
15
16
  }
@@ -1,12 +1,8 @@
1
- import {
2
- ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException,
4
- internalFrameworkErrorKind,
5
- wireReplyFailureException
6
- } from '../framework-errors-internal';
7
1
  import { randomUUID } from 'node:crypto';
8
2
  import {
3
+ type ZLinkMessageSerializer,
9
4
  ZLinkFrameworkException,
5
+ ZLinkSpotKind,
10
6
  type RoutingId,
11
7
  type SpotId,
12
8
  type SpotRef,
@@ -15,20 +11,26 @@ import {
15
11
  type ZLinkSpotCreateCall,
16
12
  type ZLinkSpotCreateResult,
17
13
  type ZLinkSpotGetOrCreateCall,
18
- type ZLinkSpotManager,
19
- ZLinkSpotKind
14
+ type ZLinkSpotManager
20
15
  } from '../../contracts';
21
- import type { ZLinkMessageSerializer } from '../../contracts';
16
+
17
+ import { ZLINK_MAX_SPOT_ID_BYTES } from '../../contracts/Common/CoreTypes';
22
18
  import type { ZLinkObjectFactoryRegistration } from '../../contracts/Configuration/RegistrationTypes';
23
19
  import { ZLinkConfigurationException } from '../configuration';
24
- import type { ZLinkUserSpotCreationCoordinator } from '../host/user-spot-creation-coordinator';
25
- import type { ZLinkSpotRouteResolver } from './spot-routing-internal';
26
- import type { DefaultZLinkSpotManager } from './index';
27
- import { encodeFrameworkCreationPayload } from '../messaging/creation-payload-codec';
28
- import type { ServiceUserSpotCloseRecord } from '../foundation/service-stateful-wire-codec';
20
+ import { captureZLinkSpotSerialTurn, requireZLinkYieldTurn } from '../execution';
29
21
  import type { ServiceUserSpotOperationResult } from '../foundation/service-stateful-runtime';
22
+ import type { ServiceUserSpotCloseRecord } from '../foundation/service-stateful-wire-codec';
23
+ import {
24
+ ZLinkFrameworkInternalErrorKind,
25
+ createInternalFrameworkException,
26
+ internalFrameworkErrorKind,
27
+ wireReplyFailureException
28
+ } from '../framework-errors-internal';
29
+ import type { ZLinkUserSpotCreationCoordinator } from '../host/user-spot-creation-coordinator';
30
30
  import type { ZLinkAuthoritySnapshot } from '../locations/internal-location-contracts';
31
- import { captureZLinkSpotSerialTurn, requireZLinkYieldTurn } from '../execution';
31
+ import { encodeFrameworkCreationPayload } from '../messaging/creation-payload-codec';
32
+ import type { DefaultZLinkSpotManager } from './index';
33
+ import type { ZLinkSpotRouteResolver } from './spot-routing-internal';
32
34
 
33
35
  export interface ZLinkPublicSpotManagerOptions {
34
36
  readonly local: DefaultZLinkSpotManager;
@@ -331,8 +333,10 @@ function selectFactory(
331
333
 
332
334
  function requireText(value: string, label: string): string {
333
335
  const bytes = Buffer.byteLength(value);
334
- if (bytes < 1 || bytes > 255 || value.includes('\0')) {
335
- throw invalidConfiguration(`${label} must contain 1..255 UTF-8 bytes and no NUL.`);
336
+ if (bytes < 1 || bytes > ZLINK_MAX_SPOT_ID_BYTES || value.includes('\0')) {
337
+ throw invalidConfiguration(
338
+ `${label} must contain 1..${ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes and no NUL.`
339
+ );
336
340
  }
337
341
  return value;
338
342
  }