@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
@@ -4,21 +4,17 @@ exports.ZLinkSpotActorJoinDispatch = void 0;
4
4
  const contracts_1 = require("../backend/contracts");
5
5
  const spot_actor_lifecycle_drain_1 = require("./spot-actor-lifecycle-drain");
6
6
  const spot_actor_packet_drain_1 = require("./spot-actor-packet-drain");
7
- const spot_native_flags_1 = require("./spot-native-flags");
8
- const spot_native_actor_join_admission_1 = require("./spot-native-actor-join-admission");
9
7
  const spot_routed_frame_dispatch_1 = require("./spot-routed-frame-dispatch");
10
8
  const spot_subscription_dispatch_1 = require("./spot-subscription-dispatch");
9
+ const ACTOR_JOIN_POLL_INTERVAL_MS = 5;
11
10
  const ZLINK_SPOT_DISPATCH_SUBJECT_SPOT = 1;
12
11
  const ZLINK_SPOT_DISPATCH_SUBJECT_CHANNEL_DEALER = 3;
13
12
  class ZLinkSpotActorJoinDispatch {
14
13
  options;
15
- draining = false;
16
- redrainRequested = false;
17
14
  nativeSpotId;
18
15
  subscriptions;
19
16
  actorLifecycleDrain;
20
17
  actorPacketDrain;
21
- nativeActorJoinAdmission;
22
18
  routedFrames;
23
19
  nativeSpot;
24
20
  constructor(options) {
@@ -43,19 +39,7 @@ class ZLinkSpotActorJoinDispatch {
43
39
  waitIdle: waitSpotDispatchIdle,
44
40
  flowEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
45
41
  });
46
- this.nativeActorJoinAdmission = new spot_native_actor_join_admission_1.ZLinkSpotNativeActorJoinAdmission({
47
- nativeSpot: options.nativeSpot,
48
- serial: options.serial,
49
- resolveActor: actors.resolveActor,
50
- getTarget: actors.getTarget,
51
- defaultAccept: actors.defaultAccept,
52
- commitAcceptedActor: actors.commitNativeActor,
53
- messageSerializers: options.messageSerializers,
54
- dispatchErrors: options.dispatchErrors
55
- });
56
42
  this.routedFrames = new spot_routed_frame_dispatch_1.ZLinkSpotRoutedFrameDispatch({
57
- nativeSpot: options.nativeSpot,
58
- createReceived: options.createReceived,
59
43
  nativeSpotId: this.nativeSpotId,
60
44
  serial: options.serial,
61
45
  resolveActor: actors.resolveActor,
@@ -66,11 +50,11 @@ class ZLinkSpotActorJoinDispatch {
66
50
  actorPacketHandler: options.packets?.handle,
67
51
  bindRemoteSession: options.packets?.bindRemoteSession === undefined
68
52
  ? undefined
69
- : (actor, sourceNodeRid, sourceSessionRid, declaredTarget) => options.packets.bindRemoteSession({
53
+ : (actor, sourceNodeRid, sourceSessionRid) => options.packets.bindRemoteSession({
70
54
  actorId: actor.actorId,
71
55
  generation: actor.objectGeneration,
72
56
  nodeRid: actor.nodeRid
73
- }, sourceNodeRid, sourceSessionRid, declaredTarget),
57
+ }, sourceNodeRid, sourceSessionRid),
74
58
  routedBoundSessionReceiver: options.boundSessionRuntime?.receiveRoutedBoundSession.bind(options.boundSessionRuntime),
75
59
  routedBoundSessionResponseReceiver: options.boundSessionRuntime?.receiveRoutedBoundSessionResponse.bind(options.boundSessionRuntime),
76
60
  routedBoundSessionErrorReceiver: options.boundSessionRuntime?.receiveRoutedBoundSessionError.bind(options.boundSessionRuntime),
@@ -78,8 +62,7 @@ class ZLinkSpotActorJoinDispatch {
78
62
  messageSerializers: options.messageSerializers,
79
63
  providerResolver: options.providerResolver,
80
64
  dispatchErrors: options.dispatchErrors,
81
- claimApplicationWork: options.claimApplicationWork,
82
- waitIdle: waitSpotDispatchIdle
65
+ claimApplicationWork: options.claimApplicationWork
83
66
  });
84
67
  this.subscriptions = new spot_subscription_dispatch_1.ZLinkSpotSubscriptionDispatch({
85
68
  nativeSpot: options.nativeSpot,
@@ -107,10 +90,6 @@ class ZLinkSpotActorJoinDispatch {
107
90
  return;
108
91
  }
109
92
  this.nativeSpot.setDispatchHandler((info) => {
110
- if (info.event === contracts_1.ZLinkBackendSpotDispatchEvent.ActorJoinReadable) {
111
- this.runDetached('spot actor join drain', () => this.drain());
112
- return;
113
- }
114
93
  if (info.event === contracts_1.ZLinkBackendSpotDispatchEvent.SubscribeReadable) {
115
94
  this.runDetached('spot subscription drain', () => this.subscriptions.drain());
116
95
  return;
@@ -149,37 +128,8 @@ class ZLinkSpotActorJoinDispatch {
149
128
  }
150
129
  void callback().catch(() => undefined);
151
130
  }
152
- async drain() {
153
- if (this.draining) {
154
- this.redrainRequested = true;
155
- return;
156
- }
157
- this.draining = true;
158
- try {
159
- do {
160
- this.redrainRequested = false;
161
- await this.drainAvailableActorJoins();
162
- } while (this.redrainWasRequested());
163
- }
164
- finally {
165
- this.draining = false;
166
- }
167
- }
168
- redrainWasRequested() {
169
- return this.redrainRequested;
170
- }
171
- async drainAvailableActorJoins() {
172
- for (;;) {
173
- const request = this.nativeSpot.recvActorJoin(spot_native_flags_1.ZLINK_RECV_DONT_WAIT);
174
- if (request === null) {
175
- await waitSpotDispatchIdle();
176
- return;
177
- }
178
- await this.nativeActorJoinAdmission.admit(request);
179
- }
180
- }
181
131
  }
182
132
  exports.ZLinkSpotActorJoinDispatch = ZLinkSpotActorJoinDispatch;
183
133
  function waitSpotDispatchIdle() {
184
- return new Promise((resolve) => setTimeout(resolve, 5));
134
+ return new Promise((resolve) => setTimeout(resolve, ACTOR_JOIN_POLL_INTERVAL_MS));
185
135
  }
@@ -26,7 +26,7 @@ class ZLinkSpotActorLifecycleDrain {
26
26
  }
27
27
  if (actorRef === null || actorRef === undefined)
28
28
  continue;
29
- await this.options.serial.execute(() => {
29
+ await this.options.serial.executeLifecycleOperation(() => this.options.serial.execute(() => {
30
30
  const actor = this.options.resolveActor(actorId);
31
31
  if (actor === undefined) {
32
32
  return undefined;
@@ -44,7 +44,7 @@ class ZLinkSpotActorLifecycleDrain {
44
44
  return target.onDisconnectActor?.(actor);
45
45
  }
46
46
  return undefined;
47
- });
47
+ }));
48
48
  }
49
49
  }
50
50
  }
@@ -1,10 +1,10 @@
1
- import type { RoutingId, ZLinkActor, ZLinkMessageSerializer, ZLinkSpot, ZLinkSpotActorJoinResult } from '../../contracts';
2
- import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
1
+ import { type RoutingId, type ZLinkActor, type ZLinkMessageSerializer, type ZLinkSpot, type ZLinkSpotActorJoinResult } from '../../contracts';
3
2
  import type { Message } from '../../contracts/Common/Message';
3
+ import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
4
4
  import { ZLinkDispatchErrorReporter } from '../channels';
5
5
  import type { ZLinkSpotActivation } from './spot-activation-state';
6
- import type { ZLinkSpotActorTransferRuntime } from './spot-runtime-ports';
7
6
  import type { ZLinkSpotRouteResolver } from './spot-routing-internal';
7
+ import type { ZLinkSpotActorTransferRuntime } from './spot-runtime-ports';
8
8
  export interface ZLinkSpotActorMembershipOptions {
9
9
  readonly resolveActivation: (spotId: RoutingId, meshName?: string) => ZLinkSpotActivation | undefined;
10
10
  readonly providerResolver?: ZLinkProviderResolver;
@@ -21,12 +21,13 @@ export interface ZLinkSpotActorMembershipOptions {
21
21
  readonly spotRouteResolver?: ZLinkSpotRouteResolver;
22
22
  readonly actorTransferRuntime?: ZLinkSpotActorTransferRuntime;
23
23
  }
24
- export type ZLinkActorJoinRollback = () => Promise<void> | void;
25
24
  export declare class ZLinkSpotActorMembership {
26
25
  private readonly options;
27
26
  constructor(options: ZLinkSpotActorMembershipOptions);
28
- admitActorJoin(spotId: RoutingId, actor: ZLinkActor, request: Message, commit: (spot: ZLinkSpot) => Promise<ZLinkActorJoinRollback | void> | ZLinkActorJoinRollback | void, signal?: AbortSignal, leaveSource?: () => Promise<void>, contentType?: string): Promise<ZLinkSpotActorJoinResult>;
27
+ admitActorJoin(spotId: RoutingId, actor: ZLinkActor, request: Message, commit: (spot: ZLinkSpot) => Promise<void> | void, signal?: AbortSignal, leaveSource?: () => Promise<void>, contentType?: string): Promise<ZLinkSpotActorJoinResult>;
28
+ private admitActorJoinCore;
29
29
  leaveActor(spotId: RoutingId, actor: ZLinkActor, signal?: AbortSignal, meshName?: string): Promise<void>;
30
+ private leaveActorCore;
30
31
  notifyActorLeftAfterTransfer(spotId: RoutingId, actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
31
32
  prepareActorLeaveForTransfer(spotId: RoutingId, actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
32
33
  commitActorLeaveAfterTransfer(spotId: RoutingId, actorId: string): Promise<void>;
@@ -35,5 +36,6 @@ export declare class ZLinkSpotActorMembership {
35
36
  cancelActorTransfer(spotId: RoutingId, actorId: string): Promise<void>;
36
37
  notifyJoinedActorDisconnected(spotId: RoutingId, actor: ZLinkActor, signal?: AbortSignal): Promise<boolean>;
37
38
  private requireActivation;
39
+ private runLifecycleOperation;
38
40
  private createActorDispatcher;
39
41
  }
@@ -1,48 +1,52 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkSpotActorMembership = void 0;
4
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
4
5
  const contracts_1 = require("../../contracts");
6
+ const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
5
7
  const abort_1 = require("../abort");
8
+ const actors_1 = require("../actors");
6
9
  const runtime_message_1 = require("../backend/runtime-message");
7
10
  const configuration_1 = require("../configuration");
8
- const actors_1 = require("../actors");
9
11
  const payload_codec_1 = require("../messaging/payload-codec");
10
- const routing_id_1 = require("../routing-id");
11
12
  class ZLinkSpotActorMembership {
12
13
  options;
13
14
  constructor(options) {
14
15
  this.options = options;
15
16
  }
16
- async admitActorJoin(spotId, actor, request, commit, signal, leaveSource, contentType = 'application/json') {
17
+ async admitActorJoin(spotId, actor, request, commit, signal, leaveSource, contentType = stream_wire_1.ZlinkStreamContentType.Json) {
17
18
  (0, abort_1.throwIfAborted)(signal);
18
19
  const activation = this.requireActivation(spotId);
20
+ return await this.runLifecycleOperation(activation, async () => {
21
+ return await this.admitActorJoinCore(activation, actor, request, commit, signal, leaveSource, contentType);
22
+ });
23
+ }
24
+ async admitActorJoinCore(activation, actor, request, commit, signal, leaveSource, contentType) {
19
25
  const dispatcher = this.createActorDispatcher(activation);
20
- const transaction = { committed: false };
21
- let response;
22
- try {
23
- response = await dispatcher.evaluateActorJoin(actor, request, contentType);
24
- if (response.accepted) {
26
+ const response = await dispatcher.evaluateActorJoin(actor, request, contentType);
27
+ if (response.accepted) {
28
+ await commit(activation.spot);
29
+ activation.commitActorJoin(actor);
30
+ try {
31
+ await dispatcher.notifyJoinActor(actor);
32
+ }
33
+ finally {
25
34
  if (leaveSource === undefined) {
26
- await this.options.entrySpotCallbacks?.onLeaveActor(actor, signal);
35
+ void this.options.entrySpotCallbacks?.onLeaveActor(actor, signal).catch((error) => {
36
+ this.options.dispatchErrors?.report({
37
+ surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotActor,
38
+ messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.ActorSend,
39
+ reason: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException,
40
+ action: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop,
41
+ actorId: actor.context.actorId,
42
+ error
43
+ });
44
+ });
27
45
  }
28
46
  else {
29
47
  await leaveSource();
30
48
  }
31
- await dispatcher.commitActorJoin(actor, async () => {
32
- const rollback = await commit(activation.spot);
33
- if (rollback !== undefined)
34
- transaction.rollbackExternal = rollback;
35
- transaction.rollbackMembership = activation.commitActorJoin(actor);
36
- transaction.committed = true;
37
- });
38
- }
39
- }
40
- catch (error) {
41
- if (transaction.committed) {
42
- transaction.rollbackMembership?.();
43
- await transaction.rollbackExternal?.();
44
49
  }
45
- throw error;
46
50
  }
47
51
  return {
48
52
  accepted: response.accepted,
@@ -54,6 +58,9 @@ class ZLinkSpotActorMembership {
54
58
  async leaveActor(spotId, actor, signal, meshName) {
55
59
  (0, abort_1.throwIfAborted)(signal);
56
60
  const activation = this.requireActivation(spotId, meshName);
61
+ await this.runLifecycleOperation(activation, () => this.leaveActorCore(activation, actor, signal, meshName));
62
+ }
63
+ async leaveActorCore(activation, actor, signal, meshName) {
57
64
  const localEntryNodeRid = (meshName === undefined ? undefined : this.options.nodeRidProvider?.(meshName)) ??
58
65
  this.options.entryNodeRidProvider?.() ??
59
66
  this.options.entryNodeRid ??
@@ -68,24 +75,6 @@ class ZLinkSpotActorMembership {
68
75
  if (entryNodeRid === undefined) {
69
76
  throw new configuration_1.ZLinkConfigurationException('Spot actor leave requires an Entry Spot node routing id.');
70
77
  }
71
- const remoteEntry = localEntryNodeRid !== undefined && !(0, routing_id_1.routingIdsEqual)(entryNodeRid, localEntryNodeRid);
72
- if (!remoteEntry) {
73
- const leaveSource = async () => {
74
- activation.beginActorTransfer(actor.context.actorId);
75
- await activation.spot.onLeaveActor(actor);
76
- activation.commitActorDeparture(actor.context.actorId);
77
- this.options.actorTransferRuntime?.clearRoutedActor(actor);
78
- };
79
- // A Spot actor handler already owns this activation's serial turn.
80
- // Complete its lifecycle transition inside that turn instead of trying
81
- // to acquire a second turn for the same owner.
82
- if (activation.serial.isCurrentTurn) {
83
- await leaveSource();
84
- }
85
- else {
86
- await activation.serial.execute(leaveSource);
87
- }
88
- }
89
78
  const request = runtime_message_1.ZLinkBufferMessage.from(Buffer.alloc(0));
90
79
  try {
91
80
  const context = actor.context;
@@ -109,40 +98,36 @@ class ZLinkSpotActorMembership {
109
98
  async notifyActorLeftAfterTransfer(spotId, actor, signal) {
110
99
  (0, abort_1.throwIfAborted)(signal);
111
100
  const activation = this.requireActivation(spotId);
112
- await activation.serial.execute(async () => {
101
+ await this.runLifecycleOperation(activation, () => activation.serial.execute(async () => {
113
102
  activation.beginActorTransfer(actor.context.actorId);
114
103
  await activation.spot.onLeaveActor(actor);
115
104
  activation.commitActorDeparture(actor.context.actorId);
116
- });
105
+ }));
117
106
  }
118
107
  async prepareActorLeaveForTransfer(spotId, actor, signal) {
119
108
  (0, abort_1.throwIfAborted)(signal);
120
109
  const activation = this.requireActivation(spotId);
121
- await activation.serial.execute(() => activation.spot.onLeaveActor(actor));
110
+ await this.runLifecycleOperation(activation, () => activation.serial.execute(() => activation.spot.onLeaveActor(actor)));
122
111
  }
123
112
  async commitActorLeaveAfterTransfer(spotId, actorId) {
124
113
  const activation = this.requireActivation(spotId);
125
- await activation.serial.execute(() => activation.commitActorDeparture(actorId));
114
+ await this.runLifecycleOperation(activation, () => activation.serial.execute(() => activation.commitActorDeparture(actorId)));
126
115
  }
127
116
  async restoreActorAfterFailedTransfer(spotId, actor, signal) {
128
117
  (0, abort_1.throwIfAborted)(signal);
129
118
  const activation = this.requireActivation(spotId);
130
- await activation.serial.execute(async () => {
119
+ await this.runLifecycleOperation(activation, () => activation.serial.execute(async () => {
131
120
  activation.cancelActorTransfer(actor.context.actorId);
132
121
  await activation.spot.onJoinedActor(actor);
133
- });
122
+ }));
134
123
  }
135
124
  async beginActorTransfer(spotId, actorId) {
136
125
  const activation = this.requireActivation(spotId);
137
- await activation.serial.execute(() => {
138
- activation.beginActorTransfer(actorId);
139
- });
126
+ await this.runLifecycleOperation(activation, () => activation.serial.execute(() => activation.beginActorTransfer(actorId)));
140
127
  }
141
128
  async cancelActorTransfer(spotId, actorId) {
142
129
  const activation = this.requireActivation(spotId);
143
- await activation.serial.execute(() => {
144
- activation.cancelActorTransfer(actorId);
145
- });
130
+ await this.runLifecycleOperation(activation, () => activation.serial.execute(() => activation.cancelActorTransfer(actorId)));
146
131
  }
147
132
  async notifyJoinedActorDisconnected(spotId, actor, signal) {
148
133
  (0, abort_1.throwIfAborted)(signal);
@@ -164,6 +149,12 @@ class ZLinkSpotActorMembership {
164
149
  }
165
150
  return activation;
166
151
  }
152
+ async runLifecycleOperation(activation, operation) {
153
+ const pending = activation.serial.executeLifecycleOperation(operation);
154
+ return activation.serial.isCurrentTurn
155
+ ? await activation.serial.currentTurn.yieldFrameworkPromise(pending)
156
+ : await pending;
157
+ }
167
158
  createActorDispatcher(activation) {
168
159
  return new actors_1.ZLinkSpotActorDispatcher({
169
160
  registry: activation.actorHandlers,
@@ -58,7 +58,6 @@ interface ZLinkSpotActorPacketDispatchOptions {
58
58
  readonly handled: boolean;
59
59
  readonly response?: unknown;
60
60
  } | undefined;
61
- readonly onRemoteBoundSessionTarget?: (actorId: string, target: ZLinkRemoteBoundSessionTarget | undefined) => void;
62
61
  readonly onDisconnectActor: (actor: ZLinkActor) => Promise<void>;
63
62
  readonly actorResponseSender?: (actor: ZLinkActor, packetName: string, requestSeq: bigint, response: unknown, replyOptions: ZLinkActorResponseOptions, fallbackBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, fallbackActorRef?: ActorRef, signal?: AbortSignal) => Promise<void> | void;
64
63
  readonly actorErrorSender?: (actorId: string, packetName: string, requestSeq: bigint, error: unknown, metadata: ReadonlyMap<string, string>, fallbackBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, fallbackActorRef?: ActorRef) => Promise<void> | void;
@@ -65,14 +65,6 @@ class ZLinkSpotActorPacketDispatch {
65
65
  header.name === actors_1.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET) {
66
66
  return undefined;
67
67
  }
68
- if (remoteBoundSessionTarget !== undefined &&
69
- (0, actors_1.actorMessageFollowContext)(fallbackActorRef) === undefined) {
70
- // A replayed handoff/Message Follow packet keeps its captured Session
71
- // route solely for that packet's response. It cannot republish the
72
- // predecessor route over a binding already confirmed by a later Actor
73
- // owner turn.
74
- this.options.onRemoteBoundSessionTarget?.(actorId, remoteBoundSessionTarget);
75
- }
76
68
  const routed = await this.options.routeBeforeLocal?.(delivery);
77
69
  if (routed?.handled === true) {
78
70
  return routed.response;
@@ -82,7 +74,6 @@ class ZLinkSpotActorPacketDispatch {
82
74
  return this.handleMissingActor(actorId, parts, header, messageKind, action, returnResponse, remoteBoundSessionTarget, fallbackActorRef, requestTerminal);
83
75
  }
84
76
  if (header.name === actors_1.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET) {
85
- this.options.onRemoteBoundSessionTarget?.(actorId, undefined);
86
77
  await this.options.onDisconnectActor(actor);
87
78
  return undefined;
88
79
  }
@@ -1,12 +1,12 @@
1
1
  import { type ActorRef, type RoutingId } from '../../contracts';
2
2
  import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
3
- import type { ZLinkRemoteActorPacketTarget, ZLinkRemoteBoundSessionTarget } from '../actors';
3
+ import type { ZLinkRemoteActorPacketTarget } from '../actors';
4
4
  import type { ZLinkRemoteActorPacketRelay } from './spot-remote-route-codec';
5
5
  import type { ZLinkActorPacketDelivery } from './spot-actor-packet-dispatch';
6
6
  interface ZLinkSpotActorPacketRelayDispatchOptions {
7
7
  readonly actorPacketHandler?: (delivery: ZLinkActorPacketDelivery) => Promise<unknown>;
8
8
  readonly actorPacketTargetProvider?: (actorId: string) => ZLinkRemoteActorPacketTarget | undefined;
9
- readonly bindRemoteSession?: (actor: ActorRef, sourceNodeRid: RoutingId, sourceSessionRid: RoutingId, declaredTarget?: ZLinkRemoteBoundSessionTarget) => void;
9
+ readonly bindRemoteSession?: (actor: ActorRef, sourceNodeRid: RoutingId, sourceSessionRid: RoutingId) => void;
10
10
  readonly flowEnabled?: () => boolean;
11
11
  }
12
12
  export declare class ZLinkSpotActorPacketRelayDispatch {
@@ -44,13 +44,7 @@ class ZLinkSpotActorPacketRelayDispatch {
44
44
  if (!(0, routing_id_1.routingIdsEqual)(sourceNodeRid, declaredSourceNodeRid)) {
45
45
  throw new Error('Remote actor session binding source did not match the declared session node.');
46
46
  }
47
- this.options.bindRemoteSession(actorRef, declaredSourceNodeRid, binding.sessionRid, remoteBoundSessionTarget === undefined
48
- ? undefined
49
- : {
50
- ...remoteBoundSessionTarget,
51
- sessionNodeRid: declaredSourceNodeRid,
52
- sessionRid: binding.sessionRid
53
- });
47
+ this.options.bindRemoteSession(actorRef, declaredSourceNodeRid, binding.sessionRid);
54
48
  if ((0, spot_route_replies_1.hasReplyToken)(received.replyToken)) {
55
49
  (0, spot_route_replies_1.submitSpotRouteBridgeReply)(received, actorPacketRelay.envelope, {
56
50
  ok: true,
@@ -6,7 +6,7 @@ import { type ZLinkSpotTimerRegistry } from './spot-timer';
6
6
  import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
7
7
  interface ZLinkEntrySpotContextOptions {
8
8
  readonly spotId: SpotId;
9
- readonly objectGeneration: number;
9
+ readonly objectGeneration: bigint;
10
10
  readonly nodeRid: RoutingId;
11
11
  readonly handlers: ZLinkSpotHandlerRegistry;
12
12
  readonly outbound: ZLinkSpotOutbound;
@@ -22,7 +22,7 @@ interface ZLinkEntrySpotContextOptions {
22
22
  interface ZLinkSpotContextOptions {
23
23
  readonly meshName: string;
24
24
  readonly spotId: SpotId;
25
- readonly objectGeneration: number;
25
+ readonly objectGeneration: bigint;
26
26
  readonly handlers: ZLinkSpotHandlerRegistry;
27
27
  readonly outbound: ZLinkSpotOutbound;
28
28
  readonly timers: ZLinkSpotTimerRegistry;
@@ -3,7 +3,7 @@ import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProvider
3
3
  import type { ZLinkRuntimeEventPublisher } from '../diagnostics';
4
4
  import type { ZLinkEntrySpotActorRequestHandlerRegistration, ZLinkEntrySpotActorSendHandlerRegistration, ZLinkEntrySpotPacketHandlerRegistration, ZLinkEntrySpotSubscriptionHandlerRegistration, ZLinkEntrySpotTimerHandlerRegistration } from '../../contracts/Configuration/RegistrationTypes';
5
5
  import type { Message } from '../../contracts/Common/Message';
6
- import type { ZLinkBackendReceived, ZLinkBackendSpot, ZLinkBackendSpotNode, ZLinkBackendTopicMessage } from '../backend/contracts';
6
+ import type { ZLinkBackendSpot, ZLinkBackendSpotNode, ZLinkBackendTopicMessage } from '../backend/contracts';
7
7
  import type { ZLinkDispatchErrorReporter } from '../channels';
8
8
  import { ZLinkWorkerRuntime } from '../workers';
9
9
  import { type ZLinkActorPacketDelivery } from './spot-actor-packet-dispatch';
@@ -21,7 +21,6 @@ interface ZLinkEntrySpotActivationOptions {
21
21
  readonly actorRequestHandlers?: readonly ZLinkEntrySpotActorRequestHandlerRegistration[];
22
22
  readonly nativeSpot: ZLinkBackendSpot;
23
23
  readonly nativeNode: ZLinkBackendSpotNode;
24
- readonly createReceived: () => ZLinkBackendReceived;
25
24
  readonly createTopicMessage: () => ZLinkBackendTopicMessage;
26
25
  readonly nodeRid: RoutingId;
27
26
  readonly spotNodeName: string;
@@ -30,7 +29,6 @@ interface ZLinkEntrySpotActivationOptions {
30
29
  readonly spotPublisherClient?: ZLinkSpotPublisherClient;
31
30
  readonly routedTransport?: ZLinkSpotRoutedTransport;
32
31
  readonly spotRouterChannelIdForMesh?: (meshName: string) => string;
33
- readonly channelMeshNameForChannel?: (channelName: string) => string | undefined;
34
32
  readonly providerResolver?: ZLinkProviderResolver;
35
33
  readonly dispatchErrors?: ZLinkDispatchErrorReporter;
36
34
  readonly runtimeEventPublisher?: ZLinkRuntimeEventPublisher;
@@ -41,7 +39,7 @@ interface ZLinkEntrySpotActivationOptions {
41
39
  readonly actorTransferRuntime?: ZLinkSpotActorTransferRuntime;
42
40
  readonly boundSessionRuntime?: ZLinkSpotBoundSessionRuntime;
43
41
  readonly actorHandoffRuntime?: ZLinkSpotActorHandoffRuntime;
44
- readonly detachedTaskRunner?: ZLinkDetachedTaskRunner;
42
+ readonly detachedTaskRunner: ZLinkDetachedTaskRunner;
45
43
  }
46
44
  export declare class ZLinkEntrySpotActivation {
47
45
  private readonly options;
@@ -90,6 +88,7 @@ export declare class ZLinkEntrySpotActivation {
90
88
  * actor-manager transaction in its admission callback.
91
89
  */
92
90
  commitServiceActorJoin(actor: ZLinkActor, handoffBacklog?: readonly ZLinkActorHandoffPacket[], signal?: AbortSignal): Promise<void>;
91
+ executeActor<T>(actorId: string, operation: () => Promise<T>): Promise<T>;
93
92
  /**
94
93
  * Entry Spot membership does not have an application admission callback.
95
94
  * The shared core round-trip therefore accepts a valid returning Actor and
@@ -40,6 +40,9 @@ class ZLinkEntrySpotActivation {
40
40
  context;
41
41
  constructor(options) {
42
42
  this.options = options;
43
+ if (options.detachedTaskRunner === undefined) {
44
+ throw new configuration_1.ZLinkConfigurationException('Entry Spot activation requires a detached task runner.');
45
+ }
43
46
  this.serial = new spot_serial_turn_executor_1.ZLinkSpotSerialTurnExecutor(false, options.nativeSpot.routingId);
44
47
  this.spotSerialExecutor = new spot_serial_executor_1.ZLinkSpotSerialExecutor(this.serial, contracts_1.ZLinkUserSpotExecutionMode.PerActor, options.nativeSpot.routingId);
45
48
  // Entry Spot lifecycle, timers and detached continuations use this serial
@@ -57,7 +60,7 @@ class ZLinkEntrySpotActivation {
57
60
  this.workerRuntime = options.workerRuntime ?? new workers_1.ZLinkWorkerRuntime();
58
61
  this.context = (0, spot_context_1.createEntrySpotContext)({
59
62
  spotId: String(options.nativeSpot.routingId),
60
- objectGeneration: toContextGeneration(entrySpotGeneration(options.nativeSpot)),
63
+ objectGeneration: entrySpotGeneration(options.nativeSpot),
61
64
  nodeRid: options.nodeRid,
62
65
  handlers: this.handlers,
63
66
  outbound: this.outbound,
@@ -97,7 +100,6 @@ class ZLinkEntrySpotActivation {
97
100
  registry: this.actorHandlers,
98
101
  resolveActor: (targetActorId) => this.options.entryActorRuntime?.resolveActor(targetActorId),
99
102
  routeBeforeLocal: (target) => this.options.entryActorRuntime?.routePacket(target.actorId, target.parts, target.returnResponse, target.remoteBoundSessionTarget, target.fallbackActorRef),
100
- onRemoteBoundSessionTarget: (targetActorId, target) => this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(targetActorId, target),
101
103
  onDisconnectActor: (actor) => this.notifyDisconnectActor(actor),
102
104
  actorResponseSender: this.options.boundSessionRuntime?.sendActorResponse.bind(this.options.boundSessionRuntime),
103
105
  actorErrorSender: this.options.boundSessionRuntime?.sendActorError.bind(this.options.boundSessionRuntime),
@@ -179,7 +181,7 @@ class ZLinkEntrySpotActivation {
179
181
  await cleanup(() => this.actorDispatch?.dispose());
180
182
  await cleanup(() => this.timers.dispose());
181
183
  await cleanup(() => this.spotSerialExecutor.close());
182
- await cleanup(() => (0, handler_instance_scope_1.disposeLifecycleHandlers)(this.entrySpot));
184
+ await cleanup(() => (0, handler_instance_scope_1.disposeLifecycleHandlers)(this.entrySpot, this.options.detachedTaskRunner));
183
185
  await cleanup(() => this.options.nativeSpot.dispose());
184
186
  if (this.initialized) {
185
187
  this.lifecycleMetrics.closed('entry');
@@ -215,6 +217,9 @@ class ZLinkEntrySpotActivation {
215
217
  await this.replayActorBacklog(actor, handoffBacklog);
216
218
  }
217
219
  }
220
+ executeActor(actorId, operation) {
221
+ return this.spotSerialExecutor.executeActor(actorId, operation);
222
+ }
218
223
  /**
219
224
  * Entry Spot membership does not have an application admission callback.
220
225
  * The shared core round-trip therefore accepts a valid returning Actor and
@@ -223,7 +228,6 @@ class ZLinkEntrySpotActivation {
223
228
  attachActorJoinDispatch() {
224
229
  const dispatch = new spot_actor_join_dispatch_1.ZLinkSpotActorJoinDispatch({
225
230
  nativeSpot: this.options.nativeSpot,
226
- createReceived: this.options.createReceived,
227
231
  createTopicMessage: this.options.createTopicMessage,
228
232
  serial: this.serial,
229
233
  actors: {
@@ -236,7 +240,6 @@ class ZLinkEntrySpotActivation {
236
240
  kind: 'enabled',
237
241
  runtime: this.options.actorTransferRuntime
238
242
  },
239
- commitNativeActor: (actor) => this.commitEntryActorTransaction(actor),
240
243
  commitTransferredActor: async (actor, backlog) => {
241
244
  await this.commitEntryActorTransaction(actor);
242
245
  return await this.replayActorBacklog(actor, backlog);
@@ -244,19 +247,10 @@ class ZLinkEntrySpotActivation {
244
247
  },
245
248
  packets: {
246
249
  handle: (delivery) => this.dispatchActorPacket(delivery),
247
- bindRemoteSession: (actor, sourceNodeRid, sourceSessionRid, declaredTarget) => {
250
+ bindRemoteSession: (actor, sourceNodeRid, sourceSessionRid) => {
248
251
  if ((0, routing_id_1.routingIdsEqual)(sourceNodeRid, this.options.nativeNode.routingId)) {
249
252
  return;
250
253
  }
251
- const target = declaredTarget ??
252
- this.options.boundSessionRuntime?.resolveRemoteBoundSessionTarget(sourceNodeRid, sourceSessionRid);
253
- if (target !== undefined) {
254
- this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(actor.actorId, {
255
- ...target,
256
- sessionNodeRid: sourceNodeRid,
257
- sessionRid: sourceSessionRid
258
- });
259
- }
260
254
  this.options.nativeNode.bindRemoteActorSession(actor, sourceNodeRid, sourceSessionRid);
261
255
  },
262
256
  replyNoBind: (info, parts, result) => this.replyActorNoBind(info, parts, result)
@@ -328,12 +322,6 @@ function notifyEntryActorJoined(entrySpot, actor) {
328
322
  const callback = entrySpot.onJoinedActor;
329
323
  return callback === undefined ? Promise.resolve() : callback.call(entrySpot, actor);
330
324
  }
331
- function toContextGeneration(generation) {
332
- if (generation < 0n || generation > BigInt(Number.MAX_SAFE_INTEGER)) {
333
- throw new configuration_1.ZLinkConfigurationException(`Entry Spot object generation '${generation}' cannot be represented by the Node.js public context.`);
334
- }
335
- return Number(generation);
336
- }
337
325
  function entrySpotGeneration(spot) {
338
326
  return (spot.lifecycleGeneration ??
339
327
  spot.status?.().lifecycleGeneration ??
@@ -1,16 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkSpotLifecycleMetrics = void 0;
4
+ const runtime_metrics_1 = require("../diagnostics/runtime-metrics");
4
5
  class ZLinkSpotLifecycleMetrics {
5
6
  metrics;
6
7
  constructor(metrics) {
7
8
  this.metrics = metrics;
8
9
  }
9
10
  opened(kind) {
10
- this.metrics?.change('zlink.spot.count', 1, { kind });
11
+ this.metrics?.change(runtime_metrics_1.METRIC_NAMES.SpotCount, 1, { kind });
11
12
  }
12
13
  closed(kind) {
13
- this.metrics?.change('zlink.spot.count', -1, { kind });
14
+ this.metrics?.change(runtime_metrics_1.METRIC_NAMES.SpotCount, -1, { kind });
14
15
  }
15
16
  }
16
17
  exports.ZLinkSpotLifecycleMetrics = ZLinkSpotLifecycleMetrics;
@@ -1,12 +1,11 @@
1
- import { type RoutingId, type SpotId, type SpotRef, type ZLinkSpot, type ZLinkSpotCreateCall, type ZLinkSpotGetOrCreateCall, type ZLinkSpotManager } from '../../contracts';
2
- import type { ZLinkMessageSerializer } from '../../contracts';
1
+ import { type ZLinkMessageSerializer, type RoutingId, type SpotId, type SpotRef, type ZLinkSpot, type ZLinkSpotCreateCall, type ZLinkSpotGetOrCreateCall, type ZLinkSpotManager } from '../../contracts';
3
2
  import type { ZLinkObjectFactoryRegistration } from '../../contracts/Configuration/RegistrationTypes';
4
- import type { ZLinkUserSpotCreationCoordinator } from '../host/user-spot-creation-coordinator';
5
- import type { ZLinkSpotRouteResolver } from './spot-routing-internal';
6
- import type { DefaultZLinkSpotManager } from './index';
7
- import type { ServiceUserSpotCloseRecord } from '../foundation/service-stateful-wire-codec';
8
3
  import type { ServiceUserSpotOperationResult } from '../foundation/service-stateful-runtime';
4
+ import type { ServiceUserSpotCloseRecord } from '../foundation/service-stateful-wire-codec';
5
+ import type { ZLinkUserSpotCreationCoordinator } from '../host/user-spot-creation-coordinator';
9
6
  import type { ZLinkAuthoritySnapshot } from '../locations/internal-location-contracts';
7
+ import type { DefaultZLinkSpotManager } from './index';
8
+ import type { ZLinkSpotRouteResolver } from './spot-routing-internal';
10
9
  export interface ZLinkPublicSpotManagerOptions {
11
10
  readonly local: DefaultZLinkSpotManager;
12
11
  readonly coordinator: ZLinkUserSpotCreationCoordinator;
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkPublicSpotManager = void 0;
4
- const framework_errors_internal_1 = require("../framework-errors-internal");
5
4
  const node_crypto_1 = require("node:crypto");
6
5
  const contracts_1 = require("../../contracts");
6
+ const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
7
7
  const configuration_1 = require("../configuration");
8
- const creation_payload_codec_1 = require("../messaging/creation-payload-codec");
9
8
  const execution_1 = require("../execution");
9
+ const framework_errors_internal_1 = require("../framework-errors-internal");
10
+ const creation_payload_codec_1 = require("../messaging/creation-payload-codec");
10
11
  class ZLinkPublicSpotManager {
11
12
  options;
12
13
  constructor(options) {
@@ -51,7 +52,7 @@ class ZLinkPublicSpotManager {
51
52
  return false;
52
53
  const current = resolved.spot;
53
54
  if (this.options.isLocalNode(current.meshName, current.nodeRid)) {
54
- const closed = await this.options.coordinator.close(spot, (local) => this.options.local.close(local.meshName, local.spotId, signal), signal, (local) => this.options.local.hasActiveSpot(local.spotId), (local) => this.options.local.canCloseUserSpot(local.meshName, local.spotId));
55
+ const closed = await this.options.coordinator.close(spot, (local, beginAuthority) => this.options.local.closeUserWithAuthority(local.meshName, local.spotId, beginAuthority, signal), signal);
55
56
  if (closed)
56
57
  this.options.resolver()?.invalidate?.(spot.spotId);
57
58
  return closed;
@@ -208,8 +209,8 @@ function selectFactory(factories, stableType, selectedMesh) {
208
209
  }
209
210
  function requireText(value, label) {
210
211
  const bytes = Buffer.byteLength(value);
211
- if (bytes < 1 || bytes > 255 || value.includes('\0')) {
212
- throw invalidConfiguration(`${label} must contain 1..255 UTF-8 bytes and no NUL.`);
212
+ if (bytes < 1 || bytes > CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES || value.includes('\0')) {
213
+ throw invalidConfiguration(`${label} must contain 1..${CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes and no NUL.`);
213
214
  }
214
215
  return value;
215
216
  }