@zlink-systems/framework 0.30.0 → 0.30.2

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 (456) hide show
  1. package/LICENSE +150 -68
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/contracts/Actors/ZLinkActorClient.d.ts +2 -1
  4. package/dist/contracts/Channels/Calls.d.ts +2 -1
  5. package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +6 -0
  6. package/dist/contracts/Common/ZLinkEncodedPayload.js +18 -3
  7. package/dist/contracts/Common/ZLinkMessageMetadata.js +11 -5
  8. package/dist/contracts/Common/encoded-payload-storage.d.ts +1 -1
  9. package/dist/contracts/Common/encoded-payload-storage.js +5 -2
  10. package/dist/contracts/Configuration/Builders.d.ts +1 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +2 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +5 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +2 -2
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +2 -2
  16. package/dist/contracts/Handlers/Attributes.d.ts +5 -13
  17. package/dist/contracts/Handlers/Attributes.js +7 -11
  18. package/dist/contracts/Handlers/JsonContract.d.ts +2 -46
  19. package/dist/contracts/Handlers/JsonContract.js +4 -153
  20. package/dist/contracts/Locations/Rows.d.ts +2 -0
  21. package/dist/contracts/Spots/Contracts.d.ts +6 -1
  22. package/dist/contracts/Spots/ZLinkSpot.d.ts +3 -3
  23. package/dist/nest-integration.d.ts +1 -1
  24. package/dist/nest-integration.js +2 -1
  25. package/dist/runtime/abort.d.ts +5 -0
  26. package/dist/runtime/abort.js +10 -0
  27. package/dist/runtime/actors/actor-authority-publication.js +3 -2
  28. package/dist/runtime/actors/actor-client.d.ts +1 -2
  29. package/dist/runtime/actors/actor-client.js +52 -57
  30. package/dist/runtime/actors/actor-context.d.ts +2 -0
  31. package/dist/runtime/actors/actor-context.js +46 -9
  32. package/dist/runtime/actors/actor-handoff.d.ts +8 -4
  33. package/dist/runtime/actors/actor-handoff.js +219 -92
  34. package/dist/runtime/actors/actor-join-relocation.d.ts +3 -0
  35. package/dist/runtime/actors/actor-local-native-join.js +13 -12
  36. package/dist/runtime/actors/actor-mailbox.js +27 -1
  37. package/dist/runtime/actors/actor-remote-joiner.js +3 -1
  38. package/dist/runtime/actors/actor-remote-wire.js +15 -0
  39. package/dist/runtime/actors/actor-reply.d.ts +4 -0
  40. package/dist/runtime/actors/actor-reply.js +29 -0
  41. package/dist/runtime/actors/actor-routed-join-transport.d.ts +6 -2
  42. package/dist/runtime/actors/actor-routed-json-request.d.ts +2 -0
  43. package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -0
  44. package/dist/runtime/actors/actor-runtime-state.js +2 -20
  45. package/dist/runtime/actors/actor-source-transfer.d.ts +1 -17
  46. package/dist/runtime/actors/index.d.ts +8 -3
  47. package/dist/runtime/actors/index.js +55 -27
  48. package/dist/runtime/actors/session-disconnected-wire.d.ts +8 -0
  49. package/dist/runtime/actors/session-disconnected-wire.js +48 -0
  50. package/dist/runtime/actors/spot-actor-dispatch.js +2 -2
  51. package/dist/runtime/admission.d.ts +9 -1
  52. package/dist/runtime/admission.js +56 -23
  53. package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +6 -8
  54. package/dist/runtime/application-jobs/application-ingress-record-owner.js +39 -22
  55. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +15 -1
  56. package/dist/runtime/application-jobs/application-job-queue-scope.js +61 -20
  57. package/dist/runtime/application-jobs/contracts.d.ts +12 -1
  58. package/dist/runtime/backend/contracts/index.d.ts +37 -12
  59. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +2 -2
  60. package/dist/runtime/backend/mesh-completion-table.d.ts +9 -1
  61. package/dist/runtime/backend/mesh-completion-table.js +154 -49
  62. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +28 -1
  63. package/dist/runtime/backend/mesh-dispatch-pump.js +208 -101
  64. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +2 -2
  65. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -9
  66. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  67. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +5 -2
  68. package/dist/runtime/backend/node/node-raw-binding-port.js +124 -72
  69. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +46 -13
  70. package/dist/runtime/backend/node/node-raw-mesh-backend.js +181 -164
  71. package/dist/runtime/backend/node/node-socket-backend-adapter.d.ts +1 -1
  72. package/dist/runtime/backend/node/node-socket-backend-adapter.js +11 -11
  73. package/dist/runtime/backend/raw-binding-port.d.ts +2 -2
  74. package/dist/runtime/backend/runtime-message.d.ts +1 -0
  75. package/dist/runtime/backend/runtime-message.js +5 -0
  76. package/dist/runtime/backend/runtime-values.d.ts +1 -0
  77. package/dist/runtime/backend/runtime-values.js +2 -1
  78. package/dist/runtime/channels/channel-clients.d.ts +2 -0
  79. package/dist/runtime/channels/channel-clients.js +75 -23
  80. package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +25 -5
  81. package/dist/runtime/channels/channel-dispatch-pipeline.js +111 -56
  82. package/dist/runtime/channels/channel-dispatch-services.d.ts +1 -0
  83. package/dist/runtime/channels/channel-dispatch-services.js +45 -0
  84. package/dist/runtime/channels/channel-dispatchers.d.ts +4 -3
  85. package/dist/runtime/channels/channel-dispatchers.js +62 -54
  86. package/dist/runtime/channels/channel-envelope-inspection.d.ts +1 -2
  87. package/dist/runtime/channels/channel-envelope-inspection.js +1 -16
  88. package/dist/runtime/channels/channel-envelope.d.ts +2 -0
  89. package/dist/runtime/channels/channel-envelope.js +146 -28
  90. package/dist/runtime/channels/channel-outbound-operations.d.ts +2 -2
  91. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +4 -3
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +19 -24
  94. package/dist/runtime/channels/channel-runtime-manager.d.ts +9 -8
  95. package/dist/runtime/channels/channel-runtime-manager.js +16 -16
  96. package/dist/runtime/channels/channel-transports.d.ts +18 -16
  97. package/dist/runtime/channels/channel-transports.js +77 -58
  98. package/dist/runtime/channels/client-server-location-runtime.js +5 -4
  99. package/dist/runtime/channels/dispatch-error-reporter.d.ts +2 -1
  100. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  101. package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
  102. package/dist/runtime/channels/fanout-location-runtime.js +3 -3
  103. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  104. package/dist/runtime/channels/local-spot-route-transport.js +2 -1
  105. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +2 -2
  106. package/dist/runtime/channels/router-socket-spot-route-transport.js +4 -4
  107. package/dist/runtime/channels/source-spot-router.d.ts +2 -2
  108. package/dist/runtime/channels/source-spot-router.js +4 -4
  109. package/dist/runtime/channels/spot-node-route-transport.d.ts +2 -2
  110. package/dist/runtime/channels/spot-node-route-transport.js +4 -4
  111. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +2 -2
  112. package/dist/runtime/channels/spot-route-bridge-transport.js +4 -4
  113. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +5 -4
  114. package/dist/runtime/channels/spot-route-dispatch-strategy.js +18 -18
  115. package/dist/runtime/diagnostics/flow-context.js +19 -7
  116. package/dist/runtime/diagnostics/index.js +4 -9
  117. package/dist/runtime/diagnostics/message-flow.d.ts +8 -0
  118. package/dist/runtime/diagnostics/message-flow.js +35 -5
  119. package/dist/runtime/diagnostics/runtime-metrics.d.ts +2 -2
  120. package/dist/runtime/diagnostics/runtime-metrics.js +10 -8
  121. package/dist/runtime/execution/index.d.ts +4 -2
  122. package/dist/runtime/execution/index.js +33 -10
  123. package/dist/runtime/execution/serial-execution-queue.d.ts +5 -0
  124. package/dist/runtime/execution/serial-execution-queue.js +22 -2
  125. package/dist/runtime/execution/state-lane.d.ts +2 -0
  126. package/dist/runtime/execution/state-lane.js +5 -0
  127. package/dist/runtime/foundation/actor-join-recovery-codec.js +2 -2
  128. package/dist/runtime/foundation/durable-service-request.d.ts +14 -0
  129. package/dist/runtime/foundation/durable-service-request.js +98 -0
  130. package/dist/runtime/foundation/operation-identity.d.ts +1 -0
  131. package/dist/runtime/foundation/operation-identity.js +5 -1
  132. package/dist/runtime/foundation/operation-registry.d.ts +25 -1
  133. package/dist/runtime/foundation/operation-registry.js +86 -18
  134. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +61 -8
  135. package/dist/runtime/foundation/raw-service-mesh-runtime.js +486 -266
  136. package/dist/runtime/foundation/service-liveness-registry.d.ts +12 -1
  137. package/dist/runtime/foundation/service-liveness-registry.js +38 -0
  138. package/dist/runtime/foundation/service-mailbox.d.ts +7 -0
  139. package/dist/runtime/foundation/service-maintenance-runtime.js +1 -6
  140. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +3 -3
  141. package/dist/runtime/foundation/service-relocation-object-owner.js +48 -34
  142. package/dist/runtime/foundation/service-relocation-runtime.d.ts +2 -0
  143. package/dist/runtime/foundation/service-relocation-runtime.js +20 -4
  144. package/dist/runtime/foundation/service-runtime-contracts.d.ts +10 -1
  145. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +2 -1
  146. package/dist/runtime/foundation/service-stateful-registry.d.ts +5 -4
  147. package/dist/runtime/foundation/service-stateful-registry.js +24 -26
  148. package/dist/runtime/foundation/service-stateful-runtime.d.ts +75 -9
  149. package/dist/runtime/foundation/service-stateful-runtime.js +486 -218
  150. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +14 -6
  151. package/dist/runtime/foundation/service-stateful-wire-codec.js +48 -27
  152. package/dist/runtime/foundation/service-topology-registry.d.ts +12 -2
  153. package/dist/runtime/foundation/service-topology-registry.js +61 -27
  154. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +6 -1
  155. package/dist/runtime/foundation/service-wire-binary-primitives.js +27 -11
  156. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  157. package/dist/runtime/foundation/service-wire-constants.generated.js +1 -0
  158. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +13 -3
  159. package/dist/runtime/foundation/service-wire-m6a-codec.js +189 -78
  160. package/dist/runtime/handlers/handler-instance-scope.d.ts +8 -0
  161. package/dist/runtime/handlers/handler-instance-scope.js +54 -11
  162. package/dist/runtime/host/actor-packet-relay.d.ts +6 -4
  163. package/dist/runtime/host/actor-packet-relay.js +59 -72
  164. package/dist/runtime/host/actor-placement-coordinator.js +25 -8
  165. package/dist/runtime/host/actor-runtime-options-factory.js +2 -2
  166. package/dist/runtime/host/actor-transfer-runtime.d.ts +7 -31
  167. package/dist/runtime/host/actor-transfer-runtime.js +85 -331
  168. package/dist/runtime/host/application-job-queue.d.ts +40 -7
  169. package/dist/runtime/host/application-job-queue.js +137 -42
  170. package/dist/runtime/host/entry-actor-runtime.d.ts +1 -0
  171. package/dist/runtime/host/entry-actor-runtime.js +3 -0
  172. package/dist/runtime/host/index.d.ts +12 -2
  173. package/dist/runtime/host/index.js +300 -202
  174. package/dist/runtime/host/location-runtime-owner.js +2 -6
  175. package/dist/runtime/host/mesh-router-resolver.d.ts +4 -0
  176. package/dist/runtime/host/mesh-router-resolver.js +14 -6
  177. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -4
  178. package/dist/runtime/host/remote-bound-session-relay.js +73 -208
  179. package/dist/runtime/host/route-mesh-runtime.d.ts +2 -2
  180. package/dist/runtime/host/route-mesh-runtime.js +6 -4
  181. package/dist/runtime/host/runtime-shutdown.d.ts +1 -0
  182. package/dist/runtime/host/runtime-shutdown.js +3 -2
  183. package/dist/runtime/host/service-relocation-control.d.ts +1 -0
  184. package/dist/runtime/host/service-relocation-control.js +10 -4
  185. package/dist/runtime/host/service-relocation-host-runtime.d.ts +22 -14
  186. package/dist/runtime/host/service-relocation-host-runtime.js +754 -599
  187. package/dist/runtime/host/spot-address-transport.js +3 -2
  188. package/dist/runtime/host/spot-runtime-options-factory.js +16 -7
  189. package/dist/runtime/host/user-spot-creation-coordinator.js +33 -84
  190. package/dist/runtime/locations/actor-location-claims.d.ts +2 -2
  191. package/dist/runtime/locations/actor-location-claims.js +34 -19
  192. package/dist/runtime/locations/auto-connect-loop.d.ts +2 -0
  193. package/dist/runtime/locations/auto-connect-loop.js +22 -14
  194. package/dist/runtime/locations/auto-connect-reconciler.js +0 -6
  195. package/dist/runtime/locations/auto-connect-types.d.ts +0 -1
  196. package/dist/runtime/locations/descriptor-publication.d.ts +4 -0
  197. package/dist/runtime/locations/descriptor-publication.js +11 -0
  198. package/dist/runtime/locations/domain-store-contract.d.ts +1 -0
  199. package/dist/runtime/locations/in-memory-authority-store.d.ts +7 -1
  200. package/dist/runtime/locations/in-memory-authority-store.js +56 -19
  201. package/dist/runtime/locations/in-memory-location-store.js +1 -10
  202. package/dist/runtime/locations/index.d.ts +1 -0
  203. package/dist/runtime/locations/index.js +1 -0
  204. package/dist/runtime/locations/lease-tracker.js +1 -6
  205. package/dist/runtime/locations/lifecycle.d.ts +1 -2
  206. package/dist/runtime/locations/lifecycle.js +2 -5
  207. package/dist/runtime/locations/location-store-repository.d.ts +51 -1
  208. package/dist/runtime/locations/location-store-repository.js +363 -139
  209. package/dist/runtime/locations/relocation-blob.d.ts +18 -1
  210. package/dist/runtime/locations/relocation-blob.js +52 -1
  211. package/dist/runtime/locations/request-source-resolver.d.ts +37 -0
  212. package/dist/runtime/locations/request-source-resolver.js +80 -0
  213. package/dist/runtime/locations/resolvers.js +1 -1
  214. package/dist/runtime/locations/runtime.d.ts +7 -3
  215. package/dist/runtime/locations/runtime.js +61 -53
  216. package/dist/runtime/messaging/framework-json-v1.d.ts +4 -6
  217. package/dist/runtime/messaging/framework-json-v1.js +38 -294
  218. package/dist/runtime/messaging/packet-name.d.ts +1 -1
  219. package/dist/runtime/messaging/packet-name.js +8 -24
  220. package/dist/runtime/messaging/payload-codec.d.ts +7 -1
  221. package/dist/runtime/messaging/payload-codec.js +7 -6
  222. package/dist/runtime/messaging/request-result.d.ts +2 -0
  223. package/dist/runtime/messaging/request-result.js +57 -0
  224. package/dist/runtime/messaging/submission-result.d.ts +1 -0
  225. package/dist/runtime/messaging/submission-result.js +5 -2
  226. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +34 -1
  227. package/dist/runtime/protocol/service_wire_codec.generated.js +229 -0
  228. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +16 -1
  229. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +37 -8
  230. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +7 -2
  231. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +36 -21
  232. package/dist/runtime/spots/index.d.ts +21 -11
  233. package/dist/runtime/spots/index.js +243 -178
  234. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -2
  235. package/dist/runtime/spots/spot-activation-registry.js +21 -11
  236. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  237. package/dist/runtime/spots/spot-activation-state.js +7 -7
  238. package/dist/runtime/spots/spot-activation.d.ts +7 -3
  239. package/dist/runtime/spots/spot-activation.js +140 -52
  240. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -0
  241. package/dist/runtime/spots/spot-actor-admission-coordinator.js +13 -22
  242. package/dist/runtime/spots/spot-actor-membership.d.ts +0 -1
  243. package/dist/runtime/spots/spot-actor-membership.js +0 -8
  244. package/dist/runtime/spots/spot-actor-packet-dispatch.js +33 -8
  245. package/dist/runtime/spots/spot-actor-packet-drain.js +5 -33
  246. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -0
  247. package/dist/runtime/spots/spot-entry-activation.js +20 -11
  248. package/dist/runtime/spots/spot-handler-registry.d.ts +7 -4
  249. package/dist/runtime/spots/spot-handler-registry.js +24 -10
  250. package/dist/runtime/spots/spot-manager-internal-contracts.d.ts +2 -2
  251. package/dist/runtime/spots/spot-manager-public.js +2 -2
  252. package/dist/runtime/spots/spot-node-autoconnect.d.ts +2 -1
  253. package/dist/runtime/spots/spot-node-autoconnect.js +22 -42
  254. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -2
  255. package/dist/runtime/spots/spot-node-runtime-manager.js +115 -50
  256. package/dist/runtime/spots/spot-outbound.d.ts +3 -0
  257. package/dist/runtime/spots/spot-outbound.js +27 -18
  258. package/dist/runtime/spots/spot-remote-codec.js +5 -1
  259. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +1 -0
  260. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +1 -1
  261. package/dist/runtime/spots/spot-runtime-ports.d.ts +1 -1
  262. package/dist/runtime/spots/spot-serial-executor.d.ts +10 -0
  263. package/dist/runtime/spots/spot-serial-executor.js +61 -8
  264. package/dist/runtime/spots/spot-serial-turn-executor.js +19 -2
  265. package/dist/runtime/spots/spot-subscription-dispatch.js +1 -4
  266. package/dist/runtime/spots/spot-timer.d.ts +57 -5
  267. package/dist/runtime/spots/spot-timer.js +288 -103
  268. package/dist/runtime/streams/actor-session-binding-registry.d.ts +42 -11
  269. package/dist/runtime/streams/actor-session-binding-registry.js +165 -48
  270. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +8 -4
  271. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -1
  272. package/dist/runtime/streams/bound-actor-relay-sender.js +15 -8
  273. package/dist/runtime/streams/bound-session-service.d.ts +1 -1
  274. package/dist/runtime/streams/bound-session-service.js +6 -11
  275. package/dist/runtime/streams/index.d.ts +3 -2
  276. package/dist/runtime/streams/index.js +6 -4
  277. package/dist/runtime/streams/managed-stream.js +3 -2
  278. package/dist/runtime/streams/native-fallback-bound-session.js +8 -73
  279. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -8
  280. package/dist/runtime/streams/session-actor-coordinator.js +15 -32
  281. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +3 -10
  282. package/dist/runtime/streams/stream-session-runtime.d.ts +1 -1
  283. package/dist/runtime/streams/stream-session-runtime.js +14 -31
  284. package/dist/runtime/workers/index.js +1 -1
  285. package/package.json +3 -3
  286. package/src/contracts/Actors/ZLinkActorClient.ts +2 -1
  287. package/src/contracts/Channels/Calls.ts +2 -1
  288. package/src/contracts/Common/ZLinkEncodedPayload.ts +24 -4
  289. package/src/contracts/Common/ZLinkMessageMetadata.ts +13 -8
  290. package/src/contracts/Common/encoded-payload-storage.ts +6 -3
  291. package/src/contracts/Configuration/Builders.ts +4 -1
  292. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +7 -2
  293. package/src/contracts/Configuration/RegistrationBuilders.ts +6 -2
  294. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  295. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -1
  296. package/src/contracts/Handlers/Attributes.ts +14 -21
  297. package/src/contracts/Handlers/JsonContract.ts +8 -216
  298. package/src/contracts/Locations/Rows.ts +2 -0
  299. package/src/contracts/Spots/Contracts.ts +10 -1
  300. package/src/contracts/Spots/ZLinkSpot.ts +3 -3
  301. package/src/nest-integration.ts +1 -0
  302. package/src/runtime/abort.ts +12 -0
  303. package/src/runtime/actors/actor-authority-publication.ts +3 -2
  304. package/src/runtime/actors/actor-client.ts +100 -85
  305. package/src/runtime/actors/actor-context.ts +49 -9
  306. package/src/runtime/actors/actor-handoff.ts +291 -110
  307. package/src/runtime/actors/actor-join-relocation.ts +3 -0
  308. package/src/runtime/actors/actor-local-native-join.ts +21 -26
  309. package/src/runtime/actors/actor-mailbox.ts +40 -2
  310. package/src/runtime/actors/actor-remote-joiner.ts +6 -1
  311. package/src/runtime/actors/actor-remote-wire.ts +17 -0
  312. package/src/runtime/actors/actor-reply.ts +42 -0
  313. package/src/runtime/actors/actor-routed-join-transport.ts +14 -4
  314. package/src/runtime/actors/actor-routed-json-request.ts +10 -2
  315. package/src/runtime/actors/actor-runtime-contracts.ts +2 -0
  316. package/src/runtime/actors/actor-runtime-state.ts +2 -20
  317. package/src/runtime/actors/actor-source-transfer.ts +1 -34
  318. package/src/runtime/actors/index.ts +60 -32
  319. package/src/runtime/actors/session-disconnected-wire.ts +66 -0
  320. package/src/runtime/actors/spot-actor-dispatch.ts +4 -2
  321. package/src/runtime/admission.ts +69 -21
  322. package/src/runtime/application-jobs/application-ingress-record-owner.ts +41 -25
  323. package/src/runtime/application-jobs/application-job-queue-scope.ts +83 -22
  324. package/src/runtime/application-jobs/contracts.ts +16 -1
  325. package/src/runtime/backend/contracts/index.ts +92 -18
  326. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +5 -3
  327. package/src/runtime/backend/mesh-completion-table.ts +160 -57
  328. package/src/runtime/backend/mesh-dispatch-pump.ts +237 -108
  329. package/src/runtime/backend/node/node-backend-adapter-support.ts +17 -8
  330. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +12 -2
  331. package/src/runtime/backend/node/node-raw-binding-port.ts +148 -85
  332. package/src/runtime/backend/node/node-raw-mesh-backend.ts +315 -201
  333. package/src/runtime/backend/node/node-socket-backend-adapter.ts +26 -11
  334. package/src/runtime/backend/raw-binding-port.ts +7 -2
  335. package/src/runtime/backend/runtime-message.ts +6 -0
  336. package/src/runtime/backend/runtime-values.ts +1 -0
  337. package/src/runtime/channels/channel-clients.ts +132 -58
  338. package/src/runtime/channels/channel-dispatch-pipeline.ts +198 -114
  339. package/src/runtime/channels/channel-dispatch-services.ts +69 -1
  340. package/src/runtime/channels/channel-dispatchers.ts +136 -90
  341. package/src/runtime/channels/channel-envelope-inspection.ts +2 -16
  342. package/src/runtime/channels/channel-envelope.ts +225 -31
  343. package/src/runtime/channels/channel-outbound-operations.ts +22 -8
  344. package/src/runtime/channels/channel-runtime-lifecycle.ts +13 -13
  345. package/src/runtime/channels/channel-runtime-manager.ts +41 -17
  346. package/src/runtime/channels/channel-transports.ts +171 -112
  347. package/src/runtime/channels/client-server-location-runtime.ts +11 -10
  348. package/src/runtime/channels/dispatch-error-reporter.ts +4 -2
  349. package/src/runtime/channels/fanout-location-runtime.ts +17 -9
  350. package/src/runtime/channels/local-spot-route-transport.ts +3 -1
  351. package/src/runtime/channels/router-socket-spot-route-transport.ts +13 -4
  352. package/src/runtime/channels/source-spot-router.ts +8 -4
  353. package/src/runtime/channels/spot-node-route-transport.ts +8 -4
  354. package/src/runtime/channels/spot-route-bridge-transport.ts +6 -4
  355. package/src/runtime/channels/spot-route-dispatch-strategy.ts +47 -18
  356. package/src/runtime/diagnostics/flow-context.ts +20 -7
  357. package/src/runtime/diagnostics/index.ts +1 -7
  358. package/src/runtime/diagnostics/message-flow.ts +47 -9
  359. package/src/runtime/diagnostics/runtime-metrics.ts +12 -10
  360. package/src/runtime/execution/index.ts +40 -14
  361. package/src/runtime/execution/serial-execution-queue.ts +33 -4
  362. package/src/runtime/execution/state-lane.ts +7 -0
  363. package/src/runtime/foundation/actor-join-recovery-codec.ts +2 -2
  364. package/src/runtime/foundation/durable-service-request.ts +137 -0
  365. package/src/runtime/foundation/operation-identity.ts +5 -1
  366. package/src/runtime/foundation/operation-registry.ts +98 -20
  367. package/src/runtime/foundation/raw-service-mesh-runtime.ts +704 -336
  368. package/src/runtime/foundation/service-liveness-registry.ts +39 -0
  369. package/src/runtime/foundation/service-mailbox.ts +8 -0
  370. package/src/runtime/foundation/service-maintenance-runtime.ts +1 -8
  371. package/src/runtime/foundation/service-relocation-object-owner.ts +55 -36
  372. package/src/runtime/foundation/service-relocation-runtime.ts +25 -4
  373. package/src/runtime/foundation/service-runtime-contracts.ts +19 -2
  374. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -1
  375. package/src/runtime/foundation/service-stateful-registry.ts +38 -35
  376. package/src/runtime/foundation/service-stateful-runtime.ts +732 -275
  377. package/src/runtime/foundation/service-stateful-wire-codec.ts +49 -16
  378. package/src/runtime/foundation/service-topology-registry.ts +91 -36
  379. package/src/runtime/foundation/service-wire-binary-primitives.ts +35 -12
  380. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  381. package/src/runtime/foundation/service-wire-m6a-codec.ts +231 -76
  382. package/src/runtime/handlers/handler-instance-scope.ts +67 -16
  383. package/src/runtime/host/actor-packet-relay.ts +113 -94
  384. package/src/runtime/host/actor-placement-coordinator.ts +31 -8
  385. package/src/runtime/host/actor-runtime-options-factory.ts +13 -2
  386. package/src/runtime/host/actor-transfer-runtime.ts +104 -430
  387. package/src/runtime/host/application-job-queue.ts +160 -41
  388. package/src/runtime/host/entry-actor-runtime.ts +4 -0
  389. package/src/runtime/host/index.ts +473 -271
  390. package/src/runtime/host/location-runtime-owner.ts +2 -6
  391. package/src/runtime/host/mesh-router-resolver.ts +13 -5
  392. package/src/runtime/host/remote-bound-session-relay.ts +88 -271
  393. package/src/runtime/host/route-mesh-runtime.ts +12 -6
  394. package/src/runtime/host/runtime-shutdown.ts +15 -4
  395. package/src/runtime/host/service-relocation-control.ts +11 -5
  396. package/src/runtime/host/service-relocation-host-runtime.ts +1092 -759
  397. package/src/runtime/host/spot-address-transport.ts +4 -2
  398. package/src/runtime/host/spot-runtime-options-factory.ts +20 -7
  399. package/src/runtime/host/user-spot-creation-coordinator.ts +41 -100
  400. package/src/runtime/locations/actor-location-claims.ts +52 -30
  401. package/src/runtime/locations/auto-connect-loop.ts +22 -14
  402. package/src/runtime/locations/auto-connect-reconciler.ts +0 -6
  403. package/src/runtime/locations/auto-connect-types.ts +0 -1
  404. package/src/runtime/locations/descriptor-publication.ts +7 -0
  405. package/src/runtime/locations/domain-store-contract.ts +5 -0
  406. package/src/runtime/locations/in-memory-authority-store.ts +85 -23
  407. package/src/runtime/locations/in-memory-location-store.ts +1 -12
  408. package/src/runtime/locations/index.ts +1 -0
  409. package/src/runtime/locations/lease-tracker.ts +2 -9
  410. package/src/runtime/locations/lifecycle.ts +8 -26
  411. package/src/runtime/locations/location-store-repository.ts +628 -152
  412. package/src/runtime/locations/relocation-blob.ts +75 -1
  413. package/src/runtime/locations/request-source-resolver.ts +138 -0
  414. package/src/runtime/locations/resolvers.ts +2 -2
  415. package/src/runtime/locations/runtime.ts +98 -64
  416. package/src/runtime/messaging/framework-json-v1.ts +5 -325
  417. package/src/runtime/messaging/packet-name.ts +5 -25
  418. package/src/runtime/messaging/payload-codec.ts +8 -11
  419. package/src/runtime/messaging/request-result.ts +62 -0
  420. package/src/runtime/messaging/submission-result.ts +5 -1
  421. package/src/runtime/protocol/service_wire_codec.generated.ts +218 -5
  422. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +16 -13
  423. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +46 -25
  424. package/src/runtime/spots/index.ts +389 -283
  425. package/src/runtime/spots/spot-activation-registry.ts +25 -13
  426. package/src/runtime/spots/spot-activation-state.ts +12 -19
  427. package/src/runtime/spots/spot-activation.ts +198 -96
  428. package/src/runtime/spots/spot-actor-admission-coordinator.ts +25 -55
  429. package/src/runtime/spots/spot-actor-membership.ts +0 -15
  430. package/src/runtime/spots/spot-actor-packet-dispatch.ts +56 -11
  431. package/src/runtime/spots/spot-actor-packet-drain.ts +9 -52
  432. package/src/runtime/spots/spot-entry-activation.ts +33 -21
  433. package/src/runtime/spots/spot-handler-registry.ts +56 -12
  434. package/src/runtime/spots/spot-manager-internal-contracts.ts +2 -2
  435. package/src/runtime/spots/spot-manager-public.ts +2 -2
  436. package/src/runtime/spots/spot-node-autoconnect.ts +28 -47
  437. package/src/runtime/spots/spot-node-runtime-manager.ts +197 -67
  438. package/src/runtime/spots/spot-outbound.ts +39 -19
  439. package/src/runtime/spots/spot-remote-codec.ts +9 -2
  440. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +2 -1
  441. package/src/runtime/spots/spot-runtime-ports.ts +1 -1
  442. package/src/runtime/spots/spot-serial-executor.ts +97 -25
  443. package/src/runtime/spots/spot-serial-turn-executor.ts +22 -3
  444. package/src/runtime/spots/spot-subscription-dispatch.ts +1 -4
  445. package/src/runtime/spots/spot-timer.ts +418 -158
  446. package/src/runtime/streams/actor-session-binding-registry.ts +236 -64
  447. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +16 -8
  448. package/src/runtime/streams/bound-actor-relay-sender.ts +23 -9
  449. package/src/runtime/streams/bound-session-service.ts +7 -10
  450. package/src/runtime/streams/index.ts +12 -6
  451. package/src/runtime/streams/managed-stream.ts +4 -2
  452. package/src/runtime/streams/native-fallback-bound-session.ts +14 -103
  453. package/src/runtime/streams/session-actor-coordinator.ts +39 -88
  454. package/src/runtime/streams/stream-binding-runtime-ports.ts +3 -9
  455. package/src/runtime/streams/stream-session-runtime.ts +13 -34
  456. package/src/runtime/workers/index.ts +1 -1
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkSpotActorPacketDispatch = void 0;
4
+ const actor_message_follow_context_1 = require("../actors/actor-message-follow-context");
5
+ const actor_context_1 = require("../actors/actor-context");
6
+ const session_disconnected_wire_1 = require("../actors/session-disconnected-wire");
7
+ const routing_id_1 = require("../routing-id");
4
8
  const framework_errors_internal_1 = require("../framework-errors-internal");
5
9
  const contracts_1 = require("../../contracts");
6
10
  const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
@@ -12,6 +16,7 @@ const protocol_1 = require("../streams/protocol");
12
16
  const payload_codec_1 = require("../messaging/payload-codec");
13
17
  const serial_work_size_1 = require("../execution/serial-work-size");
14
18
  const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
19
+ const emptyDisconnectedReply = contracts_1.ZLinkMessage.fromEncoded(contracts_1.ZLinkEncodedPayload.fromOwned(Buffer.alloc(0)));
15
20
  class ZLinkSpotActorPacketDispatch {
16
21
  options;
17
22
  constructor(options) {
@@ -62,9 +67,12 @@ class ZLinkSpotActorPacketDispatch {
62
67
  ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.ReplyError
63
68
  : ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop;
64
69
  this.trace(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Received, actorId, header, messageKind);
65
- if (this.options.actorLeft?.(actorId) === true &&
66
- header.name === actors_1.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET) {
67
- return undefined;
70
+ const disconnected = header.name === actors_1.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET;
71
+ const disconnectedReply = disconnected && header.kind === protocol_1.ZLinkStreamMessageKind.Request
72
+ ? emptyDisconnectedReply
73
+ : undefined;
74
+ if (this.options.actorLeft?.(actorId) === true && disconnected) {
75
+ return disconnectedReply;
68
76
  }
69
77
  const routed = await this.options.routeBeforeLocal?.(delivery);
70
78
  if (routed?.handled === true) {
@@ -74,9 +82,23 @@ class ZLinkSpotActorPacketDispatch {
74
82
  if (actor === undefined) {
75
83
  return this.handleMissingActor(delivery.origin, actorId, parts, header, messageKind, action, returnResponse, remoteBoundSessionTarget, fallbackActorRef, requestTerminal);
76
84
  }
77
- if (header.name === actors_1.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET) {
85
+ if (disconnected) {
86
+ const identity = (0, session_disconnected_wire_1.decodeSessionDisconnected)((0, protocol_1.messageToBytes)(parts[1]));
87
+ if (identity === undefined) {
88
+ if (this.options.dispatchErrors?.captureEnabled() === true)
89
+ this.reportInvalidFrame(actorId, messageKind, new contracts_1.ZLinkFrameworkException(contracts_1.ZLinkFrameworkErrorKind.ProtocolError, 'ProtocolError: malformed Session disconnect identity.'), 'warning');
90
+ return disconnectedReply;
91
+ }
92
+ const current = actor.context instanceof actor_context_1.DefaultZLinkActorContext
93
+ ? actor.context.currentSessionBinding
94
+ : undefined;
95
+ if (current !== undefined &&
96
+ (!(0, routing_id_1.routingIdsEqual)(current.sessionNodeRid, identity.sessionOwnerNodeRid) ||
97
+ current.sessionOwnerNodeGeneration !== identity.sessionOwnerNodeGeneration ||
98
+ current.bindingGeneration !== identity.bindingGeneration))
99
+ return disconnectedReply;
78
100
  await this.options.onDisconnectActor(actor);
79
- return undefined;
101
+ return disconnectedReply;
80
102
  }
81
103
  const decodePayload = this.createPayloadDecoder(parts[1], header);
82
104
  return this.dispatchActorPacket(actor, actorId, decodePayload, header, messageKind, action, returnResponse, remoteBoundSessionTarget, fallbackActorRef, requestTerminal, requestDeadlineUnixMs, (0, serial_work_size_1.zlinkSerialWorkOptions)(parts[1].data().byteLength, (0, serial_work_size_1.zlinkMetadataByteLength)(header.metadata)));
@@ -108,7 +130,9 @@ class ZLinkSpotActorPacketDispatch {
108
130
  if (messageKind !== ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.ActorRequest) {
109
131
  return undefined;
110
132
  }
111
- const missingActorError = (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorDispatchHandlerNotFound, `SPOT actor is not registered locally: ${actorId}`);
133
+ const missingActorError = (0, framework_errors_internal_1.createInternalFrameworkException)((0, actor_message_follow_context_1.actorMessageFollowContext)(fallbackActorRef) === undefined
134
+ ? framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorDispatchHandlerNotFound
135
+ : framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `SPOT actor is not registered locally: ${actorId}`);
112
136
  if (header.requestSeq !== undefined &&
113
137
  !returnResponse &&
114
138
  this.options.actorErrorSender !== undefined) {
@@ -290,7 +314,7 @@ class ZLinkSpotActorPacketDispatch {
290
314
  throw error;
291
315
  }
292
316
  }
293
- reportInvalidFrame(actorId, messageKind, error) {
317
+ reportInvalidFrame(actorId, messageKind, error, severity) {
294
318
  this.options.dispatchErrors?.report({
295
319
  surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotActor,
296
320
  messageKind,
@@ -298,7 +322,8 @@ class ZLinkSpotActorPacketDispatch {
298
322
  action: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop,
299
323
  spotId: this.options.spotId(),
300
324
  actorId,
301
- error
325
+ error,
326
+ severity
302
327
  });
303
328
  }
304
329
  trace(outcome, actorId, header, messageKind) {
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkSpotActorPacketDrain = void 0;
4
- const contracts_1 = require("../../contracts");
5
4
  const runtime_message_1 = require("../backend/runtime-message");
6
5
  const runtime_values_1 = require("../backend/runtime-values");
7
6
  const spot_remote_codec_1 = require("./spot-remote-codec");
8
7
  const spot_native_flags_1 = require("./spot-native-flags");
9
8
  const protocol_1 = require("../streams/protocol");
10
- const payload_codec_1 = require("../messaging/payload-codec");
9
+ const actor_reply_1 = require("../actors/actor-reply");
10
+ const bound_session_response_target_1 = require("../streams/bound-session-response-target");
11
11
  const ZLINK_SPOT_ACTOR_RECV_INFO_NO_BIND = 1;
12
12
  class ZLinkSpotActorPacketDrain {
13
13
  options;
@@ -143,33 +143,13 @@ class ZLinkSpotActorPacketDrain {
143
143
  }
144
144
  catch (error) {
145
145
  this.options.replyActorNoBind?.(info, [
146
- this.encodeActorReplyFrame(parts[0], protocol_1.ZLinkStreamMessageKind.Error, frameworkErrorPayload(error))
146
+ this.encodeActorReplyFrame(parts[0], protocol_1.ZLinkStreamMessageKind.Error, (0, bound_session_response_target_1.boundSessionErrorPayload)(error))
147
147
  ], runtime_values_1.RequestResult.Ok);
148
148
  }
149
149
  }
150
150
  encodeActorReplyFrame(requestHeaderPart, kind, payload) {
151
- const requestHeader = (0, protocol_1.decodeStreamHeader)((0, protocol_1.messageToBytes)(requestHeaderPart), this.flowEnabled());
152
- const encoded = (0, payload_codec_1.encodeFrameworkPayload)(payload, this.options.messageSerializers, kind === protocol_1.ZLinkStreamMessageKind.Response ? requestHeader.name : undefined, 'payload');
153
- try {
154
- // encodeStreamFrame returns a fresh, unaliased array; view it without re-copying.
155
- const frame = (0, protocol_1.encodeStreamFrame)({
156
- kind,
157
- codec: (0, protocol_1.streamCodecForContentType)(encoded.contentType),
158
- flags: protocol_1.ZLinkStreamHeaderFlags.None,
159
- requestSeq: requestHeader.requestSeq,
160
- name: '',
161
- metadata: new Map(),
162
- correlationId: requestHeader.correlationId,
163
- // Spec 27 §7: preserve the request flow pair on the reply while
164
- // tracing is on; the gated decode above already strips it at Off.
165
- flowId: requestHeader.flowId,
166
- flowOrigin: requestHeader.flowOrigin
167
- }, encoded.message.data());
168
- return runtime_message_1.ZLinkBufferMessage.fromOwned(Buffer.from(frame.buffer, frame.byteOffset, frame.byteLength));
169
- }
170
- finally {
171
- encoded.message.close();
172
- }
151
+ const [frame] = (0, actor_reply_1.encodeActorReply)((0, protocol_1.messageToBytes)(requestHeaderPart), kind, payload, this.options.messageSerializers, this.flowEnabled());
152
+ return runtime_message_1.ZLinkBufferMessage.fromOwned(frame);
173
153
  }
174
154
  consumeRemoteBoundSessionBind(actor, sourceNodeRid, sourceSessionRid, parts) {
175
155
  if (parts.length < 1) {
@@ -231,11 +211,3 @@ function closeMessages(messages) {
231
211
  for (const message of messages)
232
212
  message.close();
233
213
  }
234
- function frameworkErrorPayload(error) {
235
- return {
236
- message: error instanceof Error ? error.message : String(error),
237
- kind: error instanceof contracts_1.ZLinkFrameworkException
238
- ? error.kind
239
- : contracts_1.ZLinkFrameworkErrorKind.InternalFailure
240
- };
241
- }
@@ -100,6 +100,8 @@ export declare class ZLinkEntrySpotActivation {
100
100
  notifyLeaveActor(actor: ZLinkActor, signal?: AbortSignal, _actorRef?: ActorRef, _membershipEpoch?: bigint): Promise<void>;
101
101
  notifyDisconnectActor(actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
102
102
  dispatchActorPacket(delivery: ZLinkActorPacketDelivery): Promise<unknown>;
103
+ /** Restores source packets through the Entry Actor's existing executor. */
104
+ admitActorPacketPrefix(actorId: string, records: readonly import('../actors/actor-handoff').ZLinkActorHandoffPrefixRecord[]): import('../actors/actor-handoff').ZLinkActorHandoffPrefixAdmission;
103
105
  private replayActorBacklog;
104
106
  private dispatchActorPacketInsideMailbox;
105
107
  private replyActorNoBind;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkEntrySpotActivation = void 0;
4
+ const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
4
5
  const contracts_1 = require("../../contracts");
5
6
  const abort_1 = require("../abort");
6
7
  const routing_id_1 = require("../routing-id");
@@ -27,7 +28,7 @@ class ZLinkEntrySpotActivation {
27
28
  spotSerialExecutor;
28
29
  timers;
29
30
  actorHandlers = new actors_1.ZLinkSpotActorHandlerRegistryRuntime();
30
- handlers = new spot_handler_registry_1.DefaultZLinkSpotHandlerRegistry(this.actorHandlers);
31
+ handlers;
31
32
  outbound;
32
33
  workerRuntime;
33
34
  lifecycleMetrics;
@@ -43,6 +44,7 @@ class ZLinkEntrySpotActivation {
43
44
  if (options.detachedTaskRunner === undefined) {
44
45
  throw new configuration_1.ZLinkConfigurationException('Entry Spot activation requires a detached task runner.');
45
46
  }
47
+ this.handlers = new spot_handler_registry_1.DefaultZLinkSpotHandlerRegistry(this.actorHandlers, options.providerResolver);
46
48
  this.serial = new spot_serial_turn_executor_1.ZLinkSpotSerialTurnExecutor(false, options.nativeSpot.routingId);
47
49
  this.spotSerialExecutor = new spot_serial_executor_1.ZLinkSpotSerialExecutor(this.serial, contracts_1.ZLinkUserSpotExecutionMode.PerActor, options.nativeSpot.routingId);
48
50
  // Entry Spot lifecycle, timers and detached continuations use this serial
@@ -139,7 +141,7 @@ class ZLinkEntrySpotActivation {
139
141
  : this.packetDispatch.sendEncoded(this.spotId, packetName, decodePayload, context);
140
142
  }
141
143
  async create() {
142
- const entrySpot = await (0, spot_provider_1.createProviderInstance)(this.options.entrySpotType, this.options.providerResolver, this.context);
144
+ const entrySpot = await (0, spot_provider_1.createFreshProviderInstance)(this.options.entrySpotType, this.options.providerResolver, this.context);
143
145
  this.entrySpot = entrySpot;
144
146
  Object.defineProperty(this.entrySpot, 'context', {
145
147
  configurable: true,
@@ -182,7 +184,10 @@ class ZLinkEntrySpotActivation {
182
184
  await cleanup(() => this.timers.dispose());
183
185
  await cleanup(() => this.spotSerialExecutor.close());
184
186
  await cleanup(() => (0, handler_instance_scope_1.disposeLifecycleHandlers)(this.entrySpot, this.options.detachedTaskRunner));
185
- await cleanup(() => this.options.nativeSpot.dispose());
187
+ await cleanup(async () => {
188
+ await this.options.entryActorRuntime?.releaseMembers?.(this.options.spotNodeName);
189
+ await this.options.nativeSpot.dispose();
190
+ });
186
191
  if (this.initialized) {
187
192
  this.lifecycleMetrics.closed('entry');
188
193
  }
@@ -287,18 +292,22 @@ class ZLinkEntrySpotActivation {
287
292
  }
288
293
  async dispatchActorPacket(delivery) {
289
294
  const { actorId, parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef, messageFollowOrigin } = delivery;
290
- const handoff = this.options.actorHandoffRuntime?.capture(delivery.origin, actorId, parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef, undefined, messageFollowOrigin, (replayedParts, replayReturnResponse, replayRemoteBoundSessionTarget, replayFallbackActorRef) => this.spotSerialExecutor.executeActor(actorId, () => this.dispatchActorPacketInsideMailbox({
291
- origin: delivery.origin,
292
- actorId,
293
- parts: replayedParts,
294
- returnResponse: replayReturnResponse,
295
- remoteBoundSessionTarget: replayRemoteBoundSessionTarget,
296
- fallbackActorRef: replayFallbackActorRef
297
- })));
295
+ const handoff = this.options.actorHandoffRuntime?.capture(delivery.origin, actorId, parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef, undefined, messageFollowOrigin);
298
296
  if (handoff !== undefined)
299
297
  return await handoff;
300
298
  return this.spotSerialExecutor.executeActor(actorId, () => this.dispatchActorPacketInsideMailbox(delivery));
301
299
  }
300
+ /** Restores source packets through the Entry Actor's existing executor. */
301
+ admitActorPacketPrefix(actorId, records) {
302
+ return this.spotSerialExecutor.admitActorPacketPrefix(actorId, records, (_serial, parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef) => this.dispatchActorPacketInsideMailbox({
303
+ origin: (0, application_job_queue_scope_1.currentApplicationJobOrigin)(),
304
+ actorId,
305
+ parts,
306
+ returnResponse,
307
+ remoteBoundSessionTarget,
308
+ fallbackActorRef
309
+ }));
310
+ }
302
311
  async replayActorBacklog(actor, backlog) {
303
312
  return await (0, actor_handoff_1.replayActorHandoffBacklog)(backlog, (parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef) => this.spotSerialExecutor.executeActor(actor.context.actorId, () => this.dispatchActorPacketInsideMailbox({
304
313
  origin: 'remote',
@@ -1,8 +1,9 @@
1
- import type { Type, ZLinkActor, ZLinkEntrySpot, ZLinkInstanceSpotHandlerRegistry, ZLinkSpot, ZLinkSpotHandlerRegistry } from '../../contracts';
1
+ import type { Type, ZLinkActor, ZLinkEntrySpot, ZLinkInstanceSpot, ZLinkInstanceSpotHandlerRegistry, ZLinkSpot, ZLinkSpotHandlerRegistry, ZLinkSpotTimerHandler } from '../../contracts';
2
2
  import type { ZLinkEntrySpotActorRequestHandlerRegistration, ZLinkEntrySpotActorSendHandlerRegistration, ZLinkEntrySpotPacketHandlerRegistration, ZLinkEntrySpotSubscriptionHandlerRegistration, ZLinkSpotActorRequestHandlerRegistration, ZLinkSpotActorSendHandlerRegistration, ZLinkSpotPacketHandlerRegistration, ZLinkSpotSubscriptionHandlerRegistration } from '../../contracts/Configuration/RegistrationTypes';
3
+ import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
3
4
  import { ZLinkActorPacketKind, ZLinkSpotActorHandlerRegistryRuntime } from '../actors';
4
5
  export interface ZLinkSpotHandlerRegistration {
5
- readonly kind: 'packet' | 'subscribe' | 'actorSend' | 'actorRequest' | 'spotHandler';
6
+ readonly kind: 'packet' | 'subscribe' | 'actorSend' | 'actorRequest' | 'timer';
6
7
  readonly handlerType: Type;
7
8
  readonly packetName?: string;
8
9
  readonly channelName?: string;
@@ -11,8 +12,9 @@ export interface ZLinkSpotHandlerRegistration {
11
12
  }
12
13
  export declare class DefaultZLinkSpotHandlerRegistry<TActor extends ZLinkActor = ZLinkActor> implements ZLinkSpotHandlerRegistry {
13
14
  private readonly actorHandlers?;
15
+ private readonly providerResolver?;
14
16
  private readonly entries;
15
- constructor(actorHandlers?: ZLinkSpotActorHandlerRegistryRuntime | undefined);
17
+ constructor(actorHandlers?: ZLinkSpotActorHandlerRegistryRuntime | undefined, providerResolver?: ZLinkProviderResolver | undefined);
16
18
  addHandler<THandler>(handlerType: Type<THandler>, packetName?: string): this;
17
19
  addActorPacket<THandler, TRegisteredActor extends ZLinkActor>(handlerType: Type<THandler>, actorType: Type<TRegisteredActor>): this;
18
20
  addPacket(handlerType: Type, packetName?: string): this;
@@ -22,7 +24,7 @@ export declare class DefaultZLinkSpotHandlerRegistry<TActor extends ZLinkActor =
22
24
  actorRequest(packetName: string, handlerType: Type, actorType?: Type<TActor>): this;
23
25
  addSubscribe(handlerType: Type, channelName: string, topic: string): this;
24
26
  subscribe(channelName: string, topic: string, handlerType: Type): this;
25
- addSpotHandler(handlerType: Type): this;
27
+ addTimerHandler<THandler extends ZLinkSpotTimerHandler<ZLinkSpot>>(handlerType: Type<THandler>): this;
26
28
  snapshot(): readonly ZLinkSpotHandlerRegistration[];
27
29
  }
28
30
  /**
@@ -33,6 +35,7 @@ export declare class DefaultZLinkInstanceSpotHandlerRegistry implements ZLinkIns
33
35
  private readonly registrations;
34
36
  constructor(registrations: DefaultZLinkSpotHandlerRegistry);
35
37
  addPacket<THandler>(handlerType: Type<THandler>): this;
38
+ addTimerHandler<THandler extends ZLinkSpotTimerHandler<ZLinkInstanceSpot>>(handlerType: Type<THandler>): this;
36
39
  snapshot(): readonly ZLinkSpotHandlerRegistration[];
37
40
  }
38
41
  interface ZLinkEntrySpotHandlerRegistrationSet {
@@ -3,36 +3,43 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DefaultZLinkInstanceSpotHandlerRegistry = exports.DefaultZLinkSpotHandlerRegistry = void 0;
4
4
  exports.applyEntrySpotHandlerRegistrations = applyEntrySpotHandlerRegistrations;
5
5
  exports.applySpotHandlerRegistrations = applySpotHandlerRegistrations;
6
- const configuration_1 = require("../configuration");
6
+ const handler_instance_scope_1 = require("../handlers/handler-instance-scope");
7
+ const framework_errors_internal_1 = require("../framework-errors-internal");
7
8
  const actors_1 = require("../actors");
8
9
  const Attributes_1 = require("../../contracts/Handlers/Attributes");
9
10
  class DefaultZLinkSpotHandlerRegistry {
10
11
  actorHandlers;
12
+ providerResolver;
11
13
  entries = [];
12
- constructor(actorHandlers) {
14
+ constructor(actorHandlers, providerResolver) {
13
15
  this.actorHandlers = actorHandlers;
16
+ this.providerResolver = providerResolver;
14
17
  }
15
18
  addHandler(handlerType, packetName) {
16
19
  const metadata = (0, Attributes_1.readZLinkDecoratorMetadata)(handlerType).find((entry) => entry.kind === 'spotActorSend' || entry.kind === 'spotActorRequest');
17
20
  const resolvedPacketName = packetName ?? metadata?.packetName;
18
21
  if (metadata === undefined || resolvedPacketName === undefined) {
19
- throw new configuration_1.ZLinkConfigurationException(`Actor packet handler '${handlerType.name}' must declare a packet name.`);
22
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, `Actor packet handler '${handlerType.name}' must declare a packet name.`);
20
23
  }
21
24
  return this.addActorPacketRegistration(metadata.kind === 'spotActorSend' ? actors_1.ZLinkActorPacketKind.Send : actors_1.ZLinkActorPacketKind.Request, handlerType, Object, resolvedPacketName);
22
25
  }
23
26
  addActorPacket(handlerType, actorType) {
24
27
  const metadata = (0, Attributes_1.readZLinkDecoratorMetadata)(handlerType).find((entry) => entry.kind === 'spotActorSend' || entry.kind === 'spotActorRequest');
25
28
  if (metadata?.packetName === undefined) {
26
- throw new configuration_1.ZLinkConfigurationException(`Actor packet handler '${handlerType.name}' must declare a packet name.`);
29
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, `Actor packet handler '${handlerType.name}' must declare a packet name.`);
27
30
  }
28
31
  return this.addActorPacketRegistration(metadata.kind === 'spotActorSend' ? actors_1.ZLinkActorPacketKind.Send : actors_1.ZLinkActorPacketKind.Request, handlerType, actorType, metadata.packetName);
29
32
  }
30
33
  addPacket(handlerType, packetName) {
31
34
  const declared = (0, Attributes_1.readZLinkDecoratorMetadata)(handlerType).find((entry) => entry.kind === 'packet')?.packetName;
35
+ (0, handler_instance_scope_1.prepareHandlerInstance)(this.providerResolver, handlerType);
36
+ const resolvedPacketName = packetName ?? declared ?? handlerType.name;
37
+ if (this.entries.some((entry) => entry.kind === 'packet' && entry.packetName === resolvedPacketName))
38
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, `SPOT packet '${resolvedPacketName}' is already registered.`);
32
39
  this.entries.push({
33
40
  kind: 'packet',
34
41
  handlerType,
35
- packetName: packetName ?? declared ?? handlerType.name
42
+ packetName: resolvedPacketName
36
43
  });
37
44
  return this;
38
45
  }
@@ -40,6 +47,7 @@ class DefaultZLinkSpotHandlerRegistry {
40
47
  return this.addPacket(handlerType, packetName);
41
48
  }
42
49
  addActorPacketRegistration(kind, handlerType, actorType, packetName) {
50
+ (0, handler_instance_scope_1.prepareHandlerInstance)(this.providerResolver, handlerType);
43
51
  this.entries.push({
44
52
  kind: kind === actors_1.ZLinkActorPacketKind.Send ? 'actorSend' : 'actorRequest',
45
53
  handlerType,
@@ -62,25 +70,27 @@ class DefaultZLinkSpotHandlerRegistry {
62
70
  }
63
71
  addSubscribe(handlerType, channelName, topic) {
64
72
  if (channelName.trim().length === 0) {
65
- throw new configuration_1.ZLinkConfigurationException('SPOT subscribe channel name must not be empty.');
73
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, 'SPOT subscribe channel name must not be empty.');
66
74
  }
67
75
  if (topic.trim().length === 0) {
68
- throw new configuration_1.ZLinkConfigurationException('SPOT subscribe topic must not be empty.');
76
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, 'SPOT subscribe topic must not be empty.');
69
77
  }
70
78
  if (this.entries.some((entry) => entry.kind === 'subscribe' &&
71
79
  entry.handlerType === handlerType &&
72
80
  entry.channelName === channelName &&
73
81
  entry.topic === topic)) {
74
- return this;
82
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, `SPOT subscription '${channelName}/${topic}' is already registered.`);
75
83
  }
84
+ (0, handler_instance_scope_1.prepareHandlerInstance)(this.providerResolver, handlerType);
76
85
  this.entries.push({ kind: 'subscribe', handlerType, channelName, topic });
77
86
  return this;
78
87
  }
79
88
  subscribe(channelName, topic, handlerType) {
80
89
  return this.addSubscribe(handlerType, channelName, topic);
81
90
  }
82
- addSpotHandler(handlerType) {
83
- this.entries.push({ kind: 'spotHandler', handlerType });
91
+ addTimerHandler(handlerType) {
92
+ (0, handler_instance_scope_1.prepareHandlerInstance)(this.providerResolver, handlerType);
93
+ this.entries.push({ kind: 'timer', handlerType });
84
94
  return this;
85
95
  }
86
96
  snapshot() {
@@ -101,6 +111,10 @@ class DefaultZLinkInstanceSpotHandlerRegistry {
101
111
  this.registrations.addPacket(handlerType);
102
112
  return this;
103
113
  }
114
+ addTimerHandler(handlerType) {
115
+ this.registrations.addTimerHandler(handlerType);
116
+ return this;
117
+ }
104
118
  snapshot() {
105
119
  return this.registrations.snapshot();
106
120
  }
@@ -4,7 +4,7 @@ export interface ZLinkLocalSpotCreateResult {
4
4
  readonly state: ZLinkSpotCreateState;
5
5
  readonly reply?: unknown;
6
6
  readonly publication?: {
7
- publish(): void;
8
- abort(): void;
7
+ publish(): void | Promise<void>;
8
+ abort(): void | Promise<void>;
9
9
  };
10
10
  }
@@ -123,7 +123,7 @@ class ZLinkPublicSpotManager {
123
123
  yield: (signal) => {
124
124
  const yieldTurn = (0, execution_1.requireZLinkYieldTurn)(turn);
125
125
  const pending = this.submit(spotId, stableType, generatedIdentity, state, signal);
126
- return yieldTurn.yieldPromise(pending);
126
+ return yieldTurn.yieldFrameworkPromise(pending);
127
127
  }
128
128
  };
129
129
  return call;
@@ -166,7 +166,7 @@ class ZLinkPublicSpotManager {
166
166
  };
167
167
  }
168
168
  catch (error) {
169
- this.options.local.abortUserSpotPublication(target.meshName, spotId);
169
+ await this.options.local.abortUserSpotPublication(target.meshName, spotId);
170
170
  throw error;
171
171
  }
172
172
  }, async (cleanupSignal) => {
@@ -4,13 +4,14 @@ import type { ZLinkDomainLocationStore as ZLinkLocationStore } from '../location
4
4
  import type { ZLinkPeerLocation } from '../../contracts/Locations/Rows';
5
5
  import type { ZLinkSpotNodeOptions } from '../configuration';
6
6
  import type { ZLinkBackendMeshNode } from '../backend/contracts';
7
- import { ZLinkLocationRuntime, ZLinkOwnerLeaseTracker, type IZLinkAutoConnectExecutor, type ZLinkAutoConnectLocal, type ZLinkLocationEventSink, type ZLinkLocationRuntimeStores } from '../locations';
7
+ import { ZLinkLocationRuntime, ZLinkOwnerLeaseTracker, ZLinkRequestSourceResolver, type IZLinkAutoConnectExecutor, type ZLinkAutoConnectLocal, type ZLinkLocationEventSink, type ZLinkLocationRuntimeStores } from '../locations';
8
8
  export interface ZLinkSpotNodeLocationAutoConnectContext {
9
9
  readonly runtime: ZLinkLocationRuntime;
10
10
  readonly stores: ZLinkLocationRuntimeStores;
11
11
  readonly options: ZLinkLocationOptionOverrides;
12
12
  readonly leaseTracker: ZLinkOwnerLeaseTracker;
13
13
  readonly resolver: ZLinkPeerLocationResolver;
14
+ readonly requestSources: ZLinkRequestSourceResolver;
14
15
  readonly events?: ZLinkLocationEventSink;
15
16
  readonly changeStampStore?: Pick<ZLinkLocationStore, 'getMeshNodeChangeStamp'>;
16
17
  }
@@ -2,12 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createSpotNodeLocationAutoConnectContext = createSpotNodeLocationAutoConnectContext;
4
4
  exports.spotNodeAutoConnectCapability = spotNodeAutoConnectCapability;
5
+ const routing_id_1 = require("../routing-id");
5
6
  const RegistrationBuilderPolicy_1 = require("../../contracts/Configuration/RegistrationBuilderPolicy");
6
7
  const Values_1 = require("../../contracts/Locations/Values");
7
8
  const contracts_1 = require("../../contracts");
8
- const node_async_hooks_1 = require("node:async_hooks");
9
9
  const state_lane_1 = require("../execution/state-lane");
10
- const routing_id_1 = require("../routing-id");
10
+ const routing_id_2 = require("../routing-id");
11
11
  const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
12
12
  const locations_1 = require("../locations");
13
13
  function createSpotNodeLocationAutoConnectContext(runtime, stores, options, events) {
@@ -15,12 +15,17 @@ function createSpotNodeLocationAutoConnectContext(runtime, stores, options, even
15
15
  store: stores.ownerLeaseStore,
16
16
  options
17
17
  });
18
+ const requestSources = new locations_1.ZLinkRequestSourceResolver({
19
+ listLiveMeshNodes: (meshName, signal) => runtime.listLiveMeshNodes(meshName, signal),
20
+ remainingOwnerTokenLeaseMs: (owner, signal) => runtime.remainingOwnerTokenLeaseMs(owner, signal)
21
+ });
18
22
  return {
19
23
  runtime,
20
24
  stores,
21
25
  options,
22
26
  leaseTracker,
23
- resolver: meshDescriptorPeerResolver(runtime),
27
+ resolver: meshDescriptorPeerResolver(runtime, requestSources),
28
+ requestSources,
24
29
  events,
25
30
  // The opaque provider has no cross-process change notification primitive.
26
31
  // A process-local inherited stamp would hide descriptors written by peers,
@@ -46,13 +51,12 @@ function spotNodeAutoConnectCapability(spotNodeName, spotNode, node) {
46
51
  objectRole: spotNode.objectRole ?? 'none',
47
52
  hasRouteMeshServerChannel: Object.values(spotNode.meshChannels ?? {}).some((channel) => channel.server === true)
48
53
  };
49
- const manualConnections = hasManualRouterConnections(spotNode);
50
54
  return {
51
55
  local,
52
- executor: new ZLinkSpotNodeAutoConnectExecutor(node, manualConnections)
56
+ executor: new ZLinkSpotNodeAutoConnectExecutor(node)
53
57
  };
54
58
  }
55
- function meshDescriptorPeerResolver(runtime) {
59
+ function meshDescriptorPeerResolver(runtime, requestSources) {
56
60
  return {
57
61
  async listLivePeers(filter, signal) {
58
62
  if (filter.meshName === undefined ||
@@ -62,6 +66,8 @@ function meshDescriptorPeerResolver(runtime) {
62
66
  return [];
63
67
  }
64
68
  const descriptors = await runtime.listLiveMeshNodes(filter.meshName, signal);
69
+ // The auto-connect poll owns the live descriptors; request acceptance reads them.
70
+ await requestSources.observeLiveDescriptors(filter.meshName, descriptors, signal);
65
71
  return descriptors
66
72
  .map((descriptor) => ({
67
73
  autoConnectType: Values_1.ZLinkLocationAutoConnectType.RouteMesh,
@@ -82,59 +88,36 @@ function meshDescriptorPeerResolver(runtime) {
82
88
  securityIdentity: descriptor.securityIdentity
83
89
  }
84
90
  }))
85
- .filter((peer) => (filter.nodeRid === undefined || String(peer.nodeRid) === String(filter.nodeRid)) &&
91
+ .filter((peer) => (filter.nodeRid === undefined || (0, routing_id_1.routingIdsEqual)(peer.nodeRid, filter.nodeRid)) &&
86
92
  (filter.endpoint === undefined || peer.endpoint === filter.endpoint));
87
93
  }
88
94
  };
89
95
  }
90
- function hasManualRouterConnections(spotNode) {
91
- return ((spotNode.router?.manualConnections?.length ?? 0) > 0 ||
92
- (spotNode.router?.manualPeerConnections?.length ?? 0) > 0);
93
- }
94
- const detachedSpotNodeAutoConnectResource = new node_async_hooks_1.AsyncResource('zlink:spot-node-autoconnect');
95
96
  class ZLinkSpotNodeAutoConnectExecutor {
96
97
  node;
97
- manualConnections;
98
98
  lane = new state_lane_1.ZLinkStateLane();
99
99
  connectionIntents = new Map();
100
- constructor(node, manualConnections) {
100
+ constructor(node) {
101
101
  this.node = node;
102
- this.manualConnections = manualConnections;
103
102
  }
104
103
  onDisconnected(handler) {
105
104
  this.node.onPeerDisconnected?.(handler);
106
105
  }
107
106
  async connect(target) {
108
- if (this.manualConnections)
109
- return false;
110
107
  const key = connectionKey(target);
108
+ if (!this.connectionIntents.has(key) &&
109
+ this.node.hasPeerRouteOrConnectionIntent?.(target.nodeRid, target.endpoint) === true)
110
+ return false;
111
111
  const intent = await this.lane.run(() => this.prepareConnectCore(key));
112
112
  if (intent === undefined)
113
113
  return true;
114
- return await runDetachedSpotNodeAutoConnect(() => this.connectPeer(target, key, intent));
114
+ return await (0, state_lane_1.startOutsideStateLane)(() => this.connectPeer(target, key, intent));
115
115
  }
116
116
  disconnect(target) {
117
- if (this.manualConnections)
117
+ if (!this.connectionIntents.has(connectionKey(target)))
118
118
  return;
119
119
  this.disconnectPeer(target);
120
120
  }
121
- disconnectStalePeers(targets) {
122
- if (this.manualConnections)
123
- return;
124
- const current = new Map(targets
125
- .filter((target) => target.nodeRid !== undefined)
126
- .map((target) => [String(target.nodeRid), target]));
127
- const peers = this.node.peers();
128
- for (const peer of peers) {
129
- if (peer.routingId === null)
130
- continue;
131
- const target = current.get(String(peer.routingId));
132
- if (target !== undefined && peer.endpoint === target.endpoint) {
133
- continue;
134
- }
135
- this.node.disconnectPeer(peer.routingId, peer.lifecycleGeneration);
136
- }
137
- }
138
121
  isDisconnected(target) {
139
122
  // A connect intent still owns transport state even when its peer has not
140
123
  // reached the admitted table yet. Shutdown must remove that intent before
@@ -145,7 +128,7 @@ class ZLinkSpotNodeAutoConnectExecutor {
145
128
  .peers()
146
129
  .some((peer) => peer.routingId !== null &&
147
130
  peer.endpoint === target.endpoint &&
148
- (target.nodeRid === undefined || String(peer.routingId) === String(target.nodeRid)) &&
131
+ (target.nodeRid === undefined || (0, routing_id_1.routingIdsEqual)(peer.routingId, target.nodeRid)) &&
149
132
  peer.lifecycleGeneration === target.lifecycleGeneration &&
150
133
  peer.state === service_runtime_contracts_1.MeshPeerRuntimeState.Serving);
151
134
  }
@@ -182,7 +165,7 @@ class ZLinkSpotNodeAutoConnectExecutor {
182
165
  async connectPeer(target, key, intent) {
183
166
  const connectionIntentId = await this.node.connectPeer({
184
167
  endpoint: target.endpoint,
185
- expectedRid: target.nodeRid === undefined ? undefined : (0, routing_id_1.toBackendRoutingId)(target.nodeRid),
168
+ expectedRid: target.nodeRid === undefined ? undefined : (0, routing_id_2.toBackendRoutingId)(target.nodeRid),
186
169
  expectedSecurityIdentity: toAdmissionSecurityIdentity(target.metadata?.securityIdentity),
187
170
  expectedLifecycleGeneration: target.lifecycleGeneration
188
171
  });
@@ -212,16 +195,13 @@ class ZLinkSpotNodeAutoConnectExecutor {
212
195
  if (peer.endpoint !== target.endpoint) {
213
196
  continue;
214
197
  }
215
- if (target.nodeRid !== undefined && String(peer.routingId) !== String(target.nodeRid)) {
198
+ if (target.nodeRid !== undefined && !(0, routing_id_1.routingIdsEqual)(peer.routingId, target.nodeRid)) {
216
199
  continue;
217
200
  }
218
201
  this.node.disconnectPeer(peer.routingId, peer.lifecycleGeneration);
219
202
  }
220
203
  }
221
204
  }
222
- function runDetachedSpotNodeAutoConnect(work) {
223
- return detachedSpotNodeAutoConnectResource.runInAsyncScope(work);
224
- }
225
205
  function connectionKey(target) {
226
206
  return `${target.nodeRid ?? ''}\0${target.lifecycleGeneration}\0${target.endpoint}`;
227
207
  }