@zlink-systems/framework 0.25.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
  3. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  4. package/dist/contracts/Common/CoreTypes.js +7 -0
  5. package/dist/contracts/Common/index.d.ts +1 -1
  6. package/dist/contracts/Common/index.js +0 -1
  7. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  8. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  9. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  10. package/dist/contracts/Configuration/Registration.js +58 -36
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  14. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  15. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  16. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  17. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  18. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  19. package/dist/contracts/Handlers/JsonContract.js +10 -4
  20. package/dist/contracts/Locations/Authority.d.ts +1 -1
  21. package/dist/contracts/Locations/Authority.js +3 -2
  22. package/dist/contracts/Locations/Options.js +1 -1
  23. package/dist/contracts/Locations/Stores.d.ts +12 -0
  24. package/dist/contracts/Locations/Stores.js +9 -0
  25. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
  26. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  27. package/dist/internal.d.ts +5 -0
  28. package/dist/internal.js +16 -1
  29. package/dist/nest-integration.d.ts +4 -2
  30. package/dist/nest-integration.js +14 -4
  31. package/dist/runtime/abort.d.ts +1 -0
  32. package/dist/runtime/abort.js +8 -5
  33. package/dist/runtime/activation-admission.d.ts +28 -0
  34. package/dist/runtime/activation-admission.js +57 -0
  35. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  36. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  37. package/dist/runtime/actors/actor-client.d.ts +2 -2
  38. package/dist/runtime/actors/actor-client.js +42 -143
  39. package/dist/runtime/actors/actor-context.d.ts +3 -5
  40. package/dist/runtime/actors/actor-context.js +19 -17
  41. package/dist/runtime/actors/actor-handoff.d.ts +13 -7
  42. package/dist/runtime/actors/actor-handoff.js +36 -25
  43. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  44. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  45. package/dist/runtime/actors/actor-local-native-join.js +85 -123
  46. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  47. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  48. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  49. package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
  50. package/dist/runtime/actors/actor-remote-joiner.js +11 -17
  51. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  52. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  53. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  54. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  55. package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
  56. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  57. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  58. package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
  59. package/dist/runtime/actors/bound-session-wire.js +2 -7
  60. package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
  61. package/dist/runtime/actors/deferred-join-completion.js +21 -0
  62. package/dist/runtime/actors/index.d.ts +10 -8
  63. package/dist/runtime/actors/index.js +101 -73
  64. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  65. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  66. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  67. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  68. package/dist/runtime/admission.d.ts +7 -1
  69. package/dist/runtime/admission.js +11 -1
  70. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  71. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  72. package/dist/runtime/backend/contracts/index.d.ts +8 -33
  73. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
  74. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  75. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  76. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
  77. package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
  78. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
  79. package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
  80. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  81. package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
  82. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  83. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
  84. package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
  85. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
  86. package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
  87. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  88. package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
  89. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  90. package/dist/runtime/backend/runtime-values.js +2 -0
  91. package/dist/runtime/channels/channel-clients.d.ts +20 -9
  92. package/dist/runtime/channels/channel-clients.js +68 -60
  93. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  94. package/dist/runtime/channels/channel-envelope.js +47 -29
  95. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  96. package/dist/runtime/channels/channel-outbound-operations.js +9 -18
  97. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  98. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  99. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  100. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  101. package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
  102. package/dist/runtime/channels/channel-runtime-manager.js +4 -12
  103. package/dist/runtime/channels/channel-socket-options.js +3 -2
  104. package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
  105. package/dist/runtime/channels/channel-socket-registry.js +296 -235
  106. package/dist/runtime/channels/channel-transports.d.ts +11 -20
  107. package/dist/runtime/channels/channel-transports.js +68 -47
  108. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  109. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  110. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  111. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  112. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  113. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  114. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  115. package/dist/runtime/channels/fanout-location-runtime.js +133 -81
  116. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  117. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  118. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  119. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  120. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  121. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  122. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  123. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  124. package/dist/runtime/diagnostics/flow-context.js +16 -2
  125. package/dist/runtime/diagnostics/index.d.ts +4 -2
  126. package/dist/runtime/diagnostics/index.js +14 -4
  127. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  128. package/dist/runtime/diagnostics/message-flow.js +10 -19
  129. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  130. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  131. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  132. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  133. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  134. package/dist/runtime/disposal.d.ts +5 -0
  135. package/dist/runtime/disposal.js +22 -0
  136. package/dist/runtime/execution/index.d.ts +22 -9
  137. package/dist/runtime/execution/index.js +107 -37
  138. package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
  139. package/dist/runtime/execution/serial-execution-queue.js +99 -26
  140. package/dist/runtime/execution/state-lane.d.ts +8 -1
  141. package/dist/runtime/execution/state-lane.js +118 -3
  142. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  143. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  144. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  145. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  146. package/dist/runtime/foundation/listener-records.d.ts +11 -0
  147. package/dist/runtime/foundation/listener-records.js +20 -0
  148. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  149. package/dist/runtime/foundation/operation-identity.js +9 -5
  150. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  151. package/dist/runtime/foundation/operation-registry.js +34 -44
  152. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
  153. package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
  154. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  155. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  156. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
  157. package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
  158. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  159. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  160. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  161. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  162. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  163. package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
  164. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  165. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  166. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  167. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
  168. package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
  169. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
  170. package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
  171. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  172. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  173. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  174. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
  175. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  176. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  177. package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
  178. package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
  179. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
  180. package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
  181. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
  182. package/dist/runtime/foundation/service-topology-registry.js +22 -61
  183. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  184. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  185. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  186. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  187. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  188. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  189. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  190. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  191. package/dist/runtime/framework-errors-internal.js +343 -122
  192. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  193. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  194. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  195. package/dist/runtime/host/actor-packet-relay.js +48 -91
  196. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  197. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  198. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  199. package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
  200. package/dist/runtime/host/actor-transfer-runtime.js +210 -256
  201. package/dist/runtime/host/application-job-queue.js +16 -33
  202. package/dist/runtime/host/bound-session-relay.js +1 -1
  203. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  204. package/dist/runtime/host/index.d.ts +19 -14
  205. package/dist/runtime/host/index.js +234 -175
  206. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  207. package/dist/runtime/host/instance-activation-authority.js +17 -45
  208. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  209. package/dist/runtime/host/location-runtime-owner.js +2 -2
  210. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  211. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  212. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  213. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  214. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  215. package/dist/runtime/host/remote-bound-session-relay.js +11 -23
  216. package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
  217. package/dist/runtime/host/route-mesh-runtime.js +178 -257
  218. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  219. package/dist/runtime/host/runtime-shutdown.js +18 -21
  220. package/dist/runtime/host/service-relocation-control.js +6 -1
  221. package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
  222. package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
  223. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  224. package/dist/runtime/host/spot-address-transport.js +34 -136
  225. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  226. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  227. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
  228. package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
  229. package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
  230. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
  231. package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
  232. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  233. package/dist/runtime/locations/authority-key-codec.js +4 -3
  234. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  235. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  236. package/dist/runtime/locations/creation-operation-id.js +6 -4
  237. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  238. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  239. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  240. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  241. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  242. package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
  243. package/dist/runtime/locations/key-codec.js +3 -2
  244. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  245. package/dist/runtime/locations/lease-tracker.js +7 -11
  246. package/dist/runtime/locations/lifecycle.d.ts +5 -10
  247. package/dist/runtime/locations/lifecycle.js +4 -33
  248. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  249. package/dist/runtime/locations/location-store-failure.js +7 -0
  250. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  251. package/dist/runtime/locations/location-store-pages.js +13 -0
  252. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  253. package/dist/runtime/locations/location-store-repository.js +303 -332
  254. package/dist/runtime/locations/relocation-blob.js +18 -5
  255. package/dist/runtime/locations/resolvers.d.ts +5 -5
  256. package/dist/runtime/locations/resolvers.js +44 -30
  257. package/dist/runtime/locations/runtime.d.ts +5 -4
  258. package/dist/runtime/locations/runtime.js +123 -92
  259. package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
  260. package/dist/runtime/locations/spot-location-claims.js +40 -23
  261. package/dist/runtime/messaging/payload-codec.js +26 -20
  262. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  263. package/dist/runtime/messaging/submission-result.js +48 -0
  264. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
  265. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
  266. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
  267. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
  268. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
  269. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
  270. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
  271. package/dist/runtime/spots/index.d.ts +29 -29
  272. package/dist/runtime/spots/index.js +441 -313
  273. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
  274. package/dist/runtime/spots/spot-activation-registry.js +27 -60
  275. package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
  276. package/dist/runtime/spots/spot-activation-state.js +4 -17
  277. package/dist/runtime/spots/spot-activation.d.ts +10 -9
  278. package/dist/runtime/spots/spot-activation.js +103 -81
  279. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  280. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  281. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  282. package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
  283. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
  284. package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
  285. package/dist/runtime/spots/spot-actor-membership.js +44 -53
  286. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  287. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  288. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  289. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  290. package/dist/runtime/spots/spot-context.d.ts +2 -2
  291. package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
  292. package/dist/runtime/spots/spot-entry-activation.js +9 -21
  293. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  294. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  295. package/dist/runtime/spots/spot-manager-public.js +6 -5
  296. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  297. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
  298. package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
  299. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  300. package/dist/runtime/spots/spot-outbound.js +10 -37
  301. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  302. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  303. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  304. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  305. package/dist/runtime/spots/spot-route-replies.js +3 -1
  306. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
  307. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
  308. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
  309. package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
  310. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  311. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  312. package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
  313. package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
  314. package/dist/runtime/spots/spot-serial-executor.js +9 -2
  315. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
  316. package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
  317. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  318. package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
  319. package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
  320. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
  321. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  322. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  323. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  324. package/dist/runtime/streams/bound-session-service.js +12 -19
  325. package/dist/runtime/streams/index.d.ts +15 -14
  326. package/dist/runtime/streams/index.js +38 -39
  327. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  328. package/dist/runtime/streams/managed-stream.js +17 -8
  329. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  330. package/dist/runtime/streams/protocol.d.ts +6 -33
  331. package/dist/runtime/streams/protocol.js +38 -110
  332. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  333. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  334. package/dist/runtime/streams/session-calls.d.ts +1 -1
  335. package/dist/runtime/streams/session-calls.js +5 -4
  336. package/dist/runtime/streams/session-context.d.ts +6 -6
  337. package/dist/runtime/streams/session-context.js +22 -4
  338. package/dist/runtime/streams/session-requests.js +2 -1
  339. package/dist/runtime/streams/session-serial-executor.js +2 -2
  340. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  341. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  342. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  343. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  344. package/dist/runtime/workers/index.d.ts +2 -2
  345. package/dist/runtime/workers/index.js +5 -4
  346. package/package.json +3 -3
  347. package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
  348. package/src/contracts/Common/CoreTypes.ts +7 -0
  349. package/src/contracts/Common/index.ts +1 -1
  350. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  351. package/src/contracts/Configuration/Registration.ts +92 -48
  352. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  353. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  354. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  355. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  356. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  357. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  358. package/src/contracts/Handlers/JsonContract.ts +14 -4
  359. package/src/contracts/Locations/Authority.ts +7 -3
  360. package/src/contracts/Locations/Options.ts +1 -1
  361. package/src/contracts/Locations/Stores.ts +14 -0
  362. package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
  363. package/src/contracts/Spots/Contracts.ts +1 -1
  364. package/src/internal.ts +15 -0
  365. package/src/nest-integration.ts +28 -10
  366. package/src/runtime/abort.ts +6 -5
  367. package/src/runtime/activation-admission.ts +72 -0
  368. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  369. package/src/runtime/actors/actor-client.ts +77 -204
  370. package/src/runtime/actors/actor-context.ts +45 -39
  371. package/src/runtime/actors/actor-handoff.ts +55 -45
  372. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  373. package/src/runtime/actors/actor-local-native-join.ts +174 -215
  374. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  375. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  376. package/src/runtime/actors/actor-remote-joiner.ts +15 -36
  377. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  378. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  379. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  380. package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
  381. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  382. package/src/runtime/actors/actor-source-transfer.ts +5 -18
  383. package/src/runtime/actors/bound-session-wire.ts +2 -8
  384. package/src/runtime/actors/deferred-join-completion.ts +44 -0
  385. package/src/runtime/actors/index.ts +122 -88
  386. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  387. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  388. package/src/runtime/admission.ts +13 -2
  389. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  390. package/src/runtime/backend/contracts/index.ts +15 -42
  391. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
  392. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  393. package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
  394. package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
  395. package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
  396. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  397. package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
  398. package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
  399. package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
  400. package/src/runtime/backend/raw-binding-port.ts +14 -1
  401. package/src/runtime/backend/runtime-values.ts +4 -1
  402. package/src/runtime/channels/channel-clients.ts +132 -96
  403. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  404. package/src/runtime/channels/channel-envelope.ts +58 -29
  405. package/src/runtime/channels/channel-outbound-operations.ts +10 -31
  406. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  407. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  408. package/src/runtime/channels/channel-runtime-manager.ts +8 -15
  409. package/src/runtime/channels/channel-socket-options.ts +8 -2
  410. package/src/runtime/channels/channel-socket-registry.ts +369 -262
  411. package/src/runtime/channels/channel-transports.ts +161 -115
  412. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  413. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  414. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  415. package/src/runtime/channels/fanout-location-runtime.ts +175 -106
  416. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  417. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  418. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  419. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  420. package/src/runtime/diagnostics/flow-context.ts +16 -2
  421. package/src/runtime/diagnostics/index.ts +27 -17
  422. package/src/runtime/diagnostics/message-flow.ts +15 -25
  423. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  424. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  425. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  426. package/src/runtime/disposal.ts +19 -0
  427. package/src/runtime/execution/index.ts +116 -38
  428. package/src/runtime/execution/serial-execution-queue.ts +179 -34
  429. package/src/runtime/execution/state-lane.ts +142 -4
  430. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  431. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  432. package/src/runtime/foundation/listener-records.ts +21 -0
  433. package/src/runtime/foundation/operation-identity.ts +11 -5
  434. package/src/runtime/foundation/operation-registry.ts +33 -50
  435. package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
  436. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  437. package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
  438. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  439. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  440. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  441. package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
  442. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  443. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  444. package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
  445. package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
  446. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  447. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  448. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
  449. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  450. package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
  451. package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
  452. package/src/runtime/foundation/service-topology-registry.ts +30 -79
  453. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  454. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  455. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  456. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  457. package/src/runtime/framework-errors-internal.ts +380 -134
  458. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  459. package/src/runtime/host/actor-packet-relay.ts +57 -147
  460. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  461. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  462. package/src/runtime/host/actor-transfer-runtime.ts +266 -418
  463. package/src/runtime/host/application-job-queue.ts +28 -34
  464. package/src/runtime/host/bound-session-relay.ts +1 -2
  465. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  466. package/src/runtime/host/index.ts +408 -312
  467. package/src/runtime/host/instance-activation-authority.ts +89 -109
  468. package/src/runtime/host/location-runtime-owner.ts +4 -2
  469. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  470. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  471. package/src/runtime/host/remote-bound-session-relay.ts +12 -44
  472. package/src/runtime/host/route-mesh-runtime.ts +236 -275
  473. package/src/runtime/host/runtime-shutdown.ts +17 -21
  474. package/src/runtime/host/service-relocation-control.ts +14 -1
  475. package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
  476. package/src/runtime/host/spot-address-transport.ts +73 -195
  477. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  478. package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
  479. package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
  480. package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
  481. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  482. package/src/runtime/locations/authority-key-codec.ts +7 -3
  483. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  484. package/src/runtime/locations/creation-operation-id.ts +6 -3
  485. package/src/runtime/locations/domain-store-contract.ts +12 -3
  486. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  487. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  488. package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
  489. package/src/runtime/locations/key-codec.ts +3 -2
  490. package/src/runtime/locations/lease-tracker.ts +8 -14
  491. package/src/runtime/locations/lifecycle.ts +16 -45
  492. package/src/runtime/locations/location-store-failure.ts +4 -0
  493. package/src/runtime/locations/location-store-pages.ts +18 -0
  494. package/src/runtime/locations/location-store-repository.ts +450 -478
  495. package/src/runtime/locations/relocation-blob.ts +17 -6
  496. package/src/runtime/locations/resolvers.ts +90 -58
  497. package/src/runtime/locations/runtime.ts +220 -110
  498. package/src/runtime/locations/spot-location-claims.ts +54 -26
  499. package/src/runtime/messaging/payload-codec.ts +35 -24
  500. package/src/runtime/messaging/submission-result.ts +57 -1
  501. package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
  502. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
  503. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
  504. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
  505. package/src/runtime/spots/index.ts +687 -437
  506. package/src/runtime/spots/spot-activation-registry.ts +42 -71
  507. package/src/runtime/spots/spot-activation-state.ts +4 -16
  508. package/src/runtime/spots/spot-activation.ts +167 -115
  509. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  510. package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
  511. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
  512. package/src/runtime/spots/spot-actor-membership.ts +107 -75
  513. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  514. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  515. package/src/runtime/spots/spot-context.ts +3 -3
  516. package/src/runtime/spots/spot-entry-activation.ts +13 -33
  517. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  518. package/src/runtime/spots/spot-manager-public.ts +29 -21
  519. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  520. package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
  521. package/src/runtime/spots/spot-outbound.ts +47 -68
  522. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  523. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  524. package/src/runtime/spots/spot-route-replies.ts +6 -4
  525. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
  526. package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
  527. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  528. package/src/runtime/spots/spot-runtime-ports.ts +10 -43
  529. package/src/runtime/spots/spot-serial-executor.ts +10 -2
  530. package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
  531. package/src/runtime/spots/spot-timer.ts +3 -2
  532. package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
  533. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
  534. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  535. package/src/runtime/streams/bound-session-service.ts +23 -37
  536. package/src/runtime/streams/index.ts +102 -88
  537. package/src/runtime/streams/managed-stream.ts +29 -10
  538. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  539. package/src/runtime/streams/protocol.ts +34 -88
  540. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  541. package/src/runtime/streams/session-calls.ts +6 -5
  542. package/src/runtime/streams/session-context.ts +54 -10
  543. package/src/runtime/streams/session-requests.ts +2 -1
  544. package/src/runtime/streams/session-serial-executor.ts +2 -2
  545. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  546. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  547. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  548. package/src/runtime/workers/index.ts +13 -12
  549. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
  550. package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
  551. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  552. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  553. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  554. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  555. package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
  556. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  557. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,26 +1,31 @@
1
- import type { RoutingId, ZLinkActor, ZLinkActorJoinOperationId, ZLinkMessageSerializer } from '../../contracts';
2
- import type { ZLinkActorJoinRuntimeResult } from './actor-runtime-contracts';
1
+ import { type RoutingId, type ZLinkActor, type ZLinkActorJoinOperationId, type ZLinkMessageSerializer, type ZLinkSpot, type ZLinkSpotActorJoinResult } from '../../contracts';
3
2
  import type { Message } from '../../contracts/Common/Message';
4
3
  import type { ZLinkBackendActorRef, ZLinkBackendMeshNode } from '../backend/contracts';
5
4
  import { type ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
5
+ import type { ZLinkLocationLifecycle } from '../locations';
6
6
  import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
7
+ import type { ZLinkActorJoinRelocation } from './actor-join-relocation';
8
+ import type { ZLinkActorJoinRuntimeResult } from './actor-runtime-contracts';
7
9
  import { ZLinkActorRuntimeState } from './actor-runtime-state';
8
10
  import type { ZLinkPostCommitActorBinder } from './post-commit-actor-binder';
9
- import type { ZLinkPostCommitActorLocation } from './post-commit-actor-location';
10
- import type { ZLinkActorJoinRelocation } from './actor-join-relocation';
11
11
  export interface ZLinkLocalNativeActorJoinOptions {
12
- readonly postCommitLocation?: ZLinkPostCommitActorLocation;
12
+ readonly locationLifecycle?: ZLinkLocationLifecycle;
13
+ readonly localSpotJoin?: (spotId: RoutingId, actor: ZLinkActor, request: Message, commit: (spot: ZLinkSpot) => Promise<void>, signal?: AbortSignal, leaveSource?: () => Promise<void>, contentType?: string) => Promise<ZLinkSpotActorJoinResult>;
14
+ readonly localEntryJoin?: (actor: ZLinkActor, signal?: AbortSignal) => Promise<void>;
15
+ readonly localSourceLeave?: (actor: ZLinkActor, spotId: RoutingId | undefined, signal?: AbortSignal) => Promise<void>;
16
+ readonly reportSourceLeaveError: (error: unknown) => void;
13
17
  readonly postCommitBinder?: ZLinkPostCommitActorBinder;
14
18
  readonly completionTableProvider: () => ZLinkMeshCompletionTable | undefined;
15
19
  readonly actorJoinRelocation?: ZLinkActorJoinRelocation;
16
20
  readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
17
21
  }
18
- /** Owns core-native actor joins and their local runtime state transition. */
22
+ /** Selects local membership commits or remote Actor relocation. */
19
23
  export declare class ZLinkLocalNativeActorJoin {
20
24
  private readonly options;
21
25
  constructor(options: ZLinkLocalNativeActorJoinOptions);
22
26
  joinSpot(node: ZLinkBackendMeshNode, actor: ZLinkActor, state: ZLinkActorRuntimeState, actorRef: ZLinkBackendActorRef, spotId: RoutingId, spotRouteTarget: ZLinkSpotRouteTarget | undefined, request: Message, timeoutMs: number | undefined, signal: AbortSignal | undefined, completionOperationId?: ZLinkActorJoinOperationId): Promise<ZLinkActorJoinRuntimeResult<Message>>;
23
27
  joinEntrySpot(node: ZLinkBackendMeshNode, actor: ZLinkActor, state: ZLinkActorRuntimeState, actorRef: ZLinkBackendActorRef, nodeRid: RoutingId, spotRouteTarget: ZLinkSpotRouteTarget | undefined, request: Message, timeoutMs: number | undefined, signal: AbortSignal | undefined, completionOperationId?: ZLinkActorJoinOperationId): Promise<ZLinkActorJoinRuntimeResult<Message>>;
28
+ private joinLocal;
24
29
  private waitForJoinCompletion;
25
30
  private relocateRemoteActorJoin;
26
31
  private requireCompletions;
@@ -1,19 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkLocalNativeActorJoin = void 0;
4
- const framework_errors_internal_1 = require("../framework-errors-internal");
4
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
5
5
  const node_crypto_1 = require("node:crypto");
6
- const runtime_values_1 = require("../backend/runtime-values");
7
6
  const contracts_1 = require("../../contracts");
8
- const mesh_completion_table_1 = require("../backend/mesh-completion-table");
9
7
  const abort_1 = require("../abort");
10
- const actor_runtime_state_1 = require("./actor-runtime-state");
11
- const routing_id_1 = require("../routing-id");
12
- const routing_id_2 = require("../routing-id");
8
+ const mesh_completion_table_1 = require("../backend/mesh-completion-table");
9
+ const runtime_values_1 = require("../backend/runtime-values");
13
10
  const operation_identity_1 = require("../foundation/operation-identity");
11
+ const framework_errors_internal_1 = require("../framework-errors-internal");
14
12
  const payload_codec_1 = require("../messaging/payload-codec");
13
+ const routing_id_1 = require("../routing-id");
14
+ const actor_remote_wire_1 = require("./actor-remote-wire");
15
+ const actor_runtime_state_1 = require("./actor-runtime-state");
16
+ const LOCAL_JOIN_RESOLUTION_TIMEOUT_MS = 5_000;
17
+ const LOCAL_JOIN_POLL_INTERVAL_MS = 10;
15
18
  const ZLINK_FRAMEWORK_ACTOR_JOIN_PACKET_NAME = 'ZLinkFrameworkActorJoinRequest';
16
- /** Owns core-native actor joins and their local runtime state transition. */
19
+ /** Selects local membership commits or remote Actor relocation. */
17
20
  class ZLinkLocalNativeActorJoin {
18
21
  options;
19
22
  constructor(options) {
@@ -22,119 +25,93 @@ class ZLinkLocalNativeActorJoin {
22
25
  async joinSpot(node, actor, state, actorRef, spotId, spotRouteTarget, request, timeoutMs, signal, completionOperationId) {
23
26
  if (signal?.aborted === true)
24
27
  throw (0, abort_1.createAbortError)();
25
- const completions = this.requireCompletions();
26
28
  const target = requireUserSpotRoute(spotRouteTarget, spotId);
27
- const actorMeshName = runtimeActorMeshName(actor, state, target.routerChannelId);
28
- const remote = !(0, routing_id_2.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(node.status().routingId), target.targetNodeRid);
29
+ const remote = !(0, routing_id_1.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(node.status().routingId), target.targetNodeRid);
29
30
  if (remote) {
30
31
  return await this.relocateRemoteActorJoin(node, actor, state, actorRef, target, request, timeoutMs, signal, completionOperationId, false);
31
32
  }
32
- const completion = await this.waitForJoinCompletion(() => node.joinActorSpot(actorRef, (0, routing_id_1.toBackendRoutingId)(target.targetNodeRid), (0, routing_id_1.toBackendRoutingId)(target.spotId), target.targetSpotGeneration, actorJoinApplicationPayload(request), timeoutMs), completions, timeoutMs, signal);
33
- const control = completion.kindData;
34
- if (control?.kind !== 'actorJoinCompletion' || control.actor === null) {
35
- (0, mesh_completion_table_1.closeMeshCompletion)(completion);
36
- const message = `Actor join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`;
37
- // Classify the (terminal, fine) pair instead of collapsing every non-OK
38
- // or malformed join completion to NotFound (spec 32-framework-error-model:
39
- // 83-118). An OK terminal that carries no join control is a protocol
40
- // violation, not a missing route.
41
- throw completion.terminalResult !== 0 || completion.failureErrno !== 0
42
- ? (0, framework_errors_internal_1.wireReplyFailureException)(completion.terminalResult, completion.failureErrno, message)
43
- : (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestProtocolError, message);
44
- }
45
- if (control.joinResult !== 0) {
46
- try {
47
- return {
48
- accepted: false,
49
- actor: (0, actor_runtime_state_1.toFrameworkActorRef)(control.actor, actorMeshName),
50
- reply: completion.parts[0]
51
- };
52
- }
53
- finally {
54
- disposeParts(completion.parts.slice(1));
55
- }
56
- }
57
- if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
58
- (0, mesh_completion_table_1.closeMeshCompletion)(completion);
59
- throw (0, framework_errors_internal_1.wireReplyFailureException)(completion.terminalResult, completion.failureErrno, `Actor join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`);
60
- }
61
- state.setNativeActorRef(control.actor);
62
- state.setJoinedSpot((0, actor_runtime_state_1.toFrameworkRoutingId)(control.location.spotId ?? target.spotId), undefined, control.location.membershipEpoch, control.location.spotGeneration);
63
- // The Session owner relays from the verified Ready authority snapshot;
64
- // membership coordinates alone cannot recreate a User/Instance fence.
65
- state.setRemoteActorPacketTarget(target.spotKind === contracts_1.ZLinkSpotKind.Entry ? undefined : target);
66
- if (state.actorType !== undefined) {
67
- this.options.postCommitLocation?.joinedEventually(state.actorType, actor.context.actorId, spotRouteTarget?.routerChannelId ?? '', (0, actor_runtime_state_1.toFrameworkRoutingId)(control.location.spotId ?? target.spotId), control.location.spotGeneration, control.location.membershipEpoch, node.status().lifecycleGeneration);
68
- }
69
- await this.options.postCommitBinder?.bind((0, actor_runtime_state_1.toFrameworkActorRef)(control.actor, actorMeshName));
70
- try {
71
- return {
72
- accepted: true,
73
- actor: (0, actor_runtime_state_1.toFrameworkActorRef)(control.actor, actorMeshName),
74
- reply: completion.parts[0]
75
- };
76
- }
77
- finally {
78
- disposeParts(completion.parts.slice(1));
79
- }
33
+ return await this.joinLocal(node, actor, state, actorRef, target, target.spotId, request, signal);
80
34
  }
81
35
  async joinEntrySpot(node, actor, state, actorRef, nodeRid, spotRouteTarget, request, timeoutMs, signal, completionOperationId) {
82
36
  if (signal?.aborted === true)
83
37
  throw (0, abort_1.createAbortError)();
84
- const completions = this.requireCompletions();
85
- const actorMeshName = runtimeActorMeshName(actor, state, '');
86
38
  const targetNodeRid = spotRouteTarget?.targetNodeRid ?? nodeRid;
87
39
  const remote = spotRouteTarget !== undefined &&
88
- (!(0, routing_id_2.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(node.status().routingId), spotRouteTarget.targetNodeRid) ||
89
- !(0, routing_id_2.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(actorRef.nodeRid), spotRouteTarget.targetNodeRid));
40
+ (!(0, routing_id_1.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(node.status().routingId), spotRouteTarget.targetNodeRid) ||
41
+ !(0, routing_id_1.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(actorRef.nodeRid), spotRouteTarget.targetNodeRid));
90
42
  if (remote) {
91
43
  return await this.relocateRemoteActorJoin(node, actor, state, actorRef, spotRouteTarget, request, timeoutMs, signal, completionOperationId, true);
92
44
  }
93
- const completion = await this.waitForJoinCompletion(() => node.joinActorEntrySpot(actorRef, (0, routing_id_1.toBackendRoutingId)(targetNodeRid), actorJoinApplicationPayload(request), timeoutMs), completions, timeoutMs, signal);
94
- const control = completion.kindData;
95
- if (control?.kind !== 'actorJoinCompletion' || control.actor === null) {
96
- (0, mesh_completion_table_1.closeMeshCompletion)(completion);
97
- const message = `Actor entry SPOT join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`;
98
- // Classify the (terminal, fine) pair instead of collapsing to NotFound
99
- // (spec 32-framework-error-model:83-118); an OK terminal with no join
100
- // control is a protocol violation.
101
- throw completion.terminalResult !== 0 || completion.failureErrno !== 0
102
- ? (0, framework_errors_internal_1.wireReplyFailureException)(completion.terminalResult, completion.failureErrno, message)
103
- : (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestProtocolError, message);
45
+ const target = {
46
+ routerChannelId: spotRouteTarget?.routerChannelId ?? runtimeActorMeshName(actor, state, ''),
47
+ targetNodeRid,
48
+ spotId: (0, actor_runtime_state_1.toFrameworkRoutingId)(node.entrySpot().routingId),
49
+ spotKind: contracts_1.ZLinkSpotKind.Entry,
50
+ targetSpotGeneration: node.entrySpot().status().lifecycleGeneration
51
+ };
52
+ return await this.joinLocal(node, actor, state, actorRef, target, spotRouteTarget?.spotId ?? target.spotId, request, signal);
53
+ }
54
+ async joinLocal(node, actor, state, actorRef, target, storeSpotId, request, signal) {
55
+ const location = node.actorLookup(actor.context.actorId);
56
+ const meshName = runtimeActorMeshName(actor, state, target.routerChannelId);
57
+ if ((0, routing_id_1.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(location.spotId), target.spotId)) {
58
+ return { accepted: true, actor: (0, actor_runtime_state_1.toFrameworkActorRef)(actorRef, meshName) };
104
59
  }
105
- if (control.joinResult !== 0) {
60
+ if (state.actorType === undefined)
61
+ throw new Error('Local Actor Join requires a registered Actor type.');
62
+ const actorType = state.actorType;
63
+ const previousSpotId = state.spotId;
64
+ const spotGeneration = target.targetSpotGeneration;
65
+ if (spotGeneration === undefined ||
66
+ spotGeneration <= 0n ||
67
+ node.restoreActorAuthority === undefined) {
68
+ throw new Error('Local Actor Join requires a valid target generation and stateful membership runtime.');
69
+ }
70
+ const membershipEpoch = location.membershipEpoch + 1n;
71
+ const commit = async (spot) => {
72
+ (0, abort_1.throwIfAborted)(signal);
73
+ if (target.spotKind === contracts_1.ZLinkSpotKind.Entry) {
74
+ await this.options.locationLifecycle?.notifyActorLeftSpot(actorType, actor.context.actorId, storeSpotId, spotGeneration, membershipEpoch, node.status().lifecycleGeneration);
75
+ }
76
+ else {
77
+ await this.options.locationLifecycle?.notifyActorJoinedSpot(actorType, actor.context.actorId, meshName, storeSpotId, spotGeneration, membershipEpoch, node.status().lifecycleGeneration);
78
+ }
79
+ const committedActor = node.restoreActorAuthority(actor.context.actorId, actorType, actorRef.generation, state.locationGeneration ?? actorRef.generation, target.spotKind === contracts_1.ZLinkSpotKind.Entry ? undefined : String(target.spotId), spotGeneration, membershipEpoch);
80
+ state.setNativeActorRef(committedActor);
81
+ if (target.spotKind === contracts_1.ZLinkSpotKind.Entry)
82
+ state.clearJoinedSpot();
83
+ else
84
+ state.setJoinedSpot(target.spotId, spot, membershipEpoch, spotGeneration);
85
+ state.setRemoteActorPacketTarget(target.spotKind === contracts_1.ZLinkSpotKind.Entry ? undefined : target);
86
+ };
87
+ const leaveSource = async () => {
88
+ void this.options.localSourceLeave?.(actor, previousSpotId, signal).catch((error) => {
89
+ this.options.reportSourceLeaveError(error);
90
+ });
91
+ };
92
+ let response;
93
+ if (target.spotKind === contracts_1.ZLinkSpotKind.Entry) {
94
+ if (this.options.localEntryJoin === undefined)
95
+ throw new Error('Local Entry Actor Join runtime is not configured.');
96
+ await commit();
106
97
  try {
107
- return {
108
- accepted: false,
109
- actor: (0, actor_runtime_state_1.toFrameworkActorRef)(control.actor, actorMeshName),
110
- reply: completion.parts[0]
111
- };
98
+ await this.options.localEntryJoin(actor, signal);
112
99
  }
113
100
  finally {
114
- disposeParts(completion.parts.slice(1));
101
+ await leaveSource();
115
102
  }
103
+ response = { accepted: true };
116
104
  }
117
- if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
118
- (0, mesh_completion_table_1.closeMeshCompletion)(completion);
119
- throw (0, framework_errors_internal_1.wireReplyFailureException)(completion.terminalResult, completion.failureErrno, `Actor entry SPOT join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`);
120
- }
121
- state.setNativeActorRef(control.actor);
122
- state.clearJoinedSpot();
123
- state.setRemoteActorPacketTarget(undefined);
124
- if (state.actorType !== undefined) {
125
- this.options.postCommitLocation?.leftEventually(state.actorType, actor.context.actorId, (0, actor_runtime_state_1.toFrameworkRoutingId)(control.location.spotId ?? spotRouteTarget?.spotId ?? nodeRid), control.location.spotGeneration, control.location.membershipEpoch, node.status().lifecycleGeneration);
126
- }
127
- await this.options.postCommitBinder?.bind((0, actor_runtime_state_1.toFrameworkActorRef)(control.actor, actorMeshName));
128
- try {
129
- return {
130
- accepted: true,
131
- actor: (0, actor_runtime_state_1.toFrameworkActorRef)(control.actor, actorMeshName),
132
- reply: completion.parts[0]
133
- };
134
- }
135
- finally {
136
- disposeParts(completion.parts.slice(1));
105
+ else {
106
+ if (this.options.localSpotJoin === undefined)
107
+ throw new Error('Local Spot Actor Join runtime is not configured.');
108
+ response = await this.options.localSpotJoin(target.spotId, actor, request, commit, signal, leaveSource, (0, payload_codec_1.frameworkPayloadContentType)(request));
137
109
  }
110
+ return {
111
+ accepted: response.accepted,
112
+ actor: (0, actor_runtime_state_1.toFrameworkActorRef)(state.nativeActorRef ?? actorRef, meshName),
113
+ reply: response.reply
114
+ };
138
115
  }
139
116
  async waitForJoinCompletion(submit, completions, timeoutMs, signal) {
140
117
  // The operation ID identifies one Core request. Once it is submitted, a
@@ -193,7 +170,7 @@ class ZLinkLocalNativeActorJoin {
193
170
  // (spec 32-framework-error-model:83-118); an OK terminal with no join
194
171
  // control is a protocol violation.
195
172
  throw admission.terminalResult !== 0 || admission.failureErrno !== 0
196
- ? remoteActorJoinFailureException(node, target, admission.terminalResult, admission.failureErrno, message)
173
+ ? (0, framework_errors_internal_1.wireReplyFailureException)(admission.terminalResult, admission.failureErrno, message)
197
174
  : (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestProtocolError, message);
198
175
  }
199
176
  if (control.joinResult !== 0) {
@@ -210,7 +187,7 @@ class ZLinkLocalNativeActorJoin {
210
187
  }
211
188
  if (admission.terminalResult !== 0 || admission.failureErrno !== 0) {
212
189
  (0, mesh_completion_table_1.closeMeshCompletion)(admission);
213
- throw remoteActorJoinFailureException(node, target, admission.terminalResult, admission.failureErrno, `Actor admission failed for '${actor.context.actorId}' with result '${admission.terminalResult}' and errno '${admission.failureErrno}'.`);
190
+ throw (0, framework_errors_internal_1.wireReplyFailureException)(admission.terminalResult, admission.failureErrno, `Actor admission failed for '${actor.context.actorId}' with result '${admission.terminalResult}' and errno '${admission.failureErrno}'.`);
214
191
  }
215
192
  disposeParts(admission.parts.slice(1));
216
193
  if (control.canonicalHandoffId !== undefined) {
@@ -253,7 +230,7 @@ class ZLinkLocalNativeActorJoin {
253
230
  ...(completionOperationId === undefined
254
231
  ? {}
255
232
  : {
256
- replyContentType: control.replyContentType ?? 'application/octet-stream'
233
+ replyContentType: control.replyContentType ?? stream_wire_1.ZlinkStreamContentType.Raw
257
234
  }),
258
235
  reply: completionOperationId === undefined
259
236
  ? Buffer.alloc(0)
@@ -328,7 +305,7 @@ function legacyRemoteActorJoinPayload(actor, state, actorRef, target, request, t
328
305
  // canonical admission; it never substitutes target-Spot values as an Actor
329
306
  // authority fence.
330
307
  const payload = Buffer.from(JSON.stringify({
331
- packetName: '__zlink.actor.join_spot.request',
308
+ packetName: actor_remote_wire_1.ZLINK_REMOTE_ACTOR_JOIN_PACKET,
332
309
  phase: 'admission',
333
310
  transferId,
334
311
  spotId: String(target.spotId),
@@ -343,7 +320,7 @@ function legacyRemoteActorJoinPayload(actor, state, actorRef, target, request, t
343
320
  }));
344
321
  return {
345
322
  packetName: ZLINK_FRAMEWORK_ACTOR_JOIN_PACKET_NAME,
346
- contentType: 'application/json',
323
+ contentType: stream_wire_1.ZlinkStreamContentType.Json,
347
324
  payload,
348
325
  // Older in-process MeshNode adapters consume the fallback as a Message.
349
326
  // Keep that structural view without changing the typed service payload.
@@ -359,29 +336,14 @@ function canonicalHandoffRelocationId(handoffId) {
359
336
  return (`${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}` +
360
337
  `-${hex.slice(16, 20)}-${hex.slice(20)}`);
361
338
  }
362
- function remoteActorJoinFailureException(node, target, terminalResult, failureErrno, message) {
363
- const failure = (0, framework_errors_internal_1.wireReplyFailureException)(terminalResult, failureErrno, message);
364
- const targetGeneration = target.targetNodeGeneration;
365
- if (failure.kind === contracts_1.ZLinkFrameworkErrorKind.DeadlineExceeded &&
366
- targetGeneration !== undefined &&
367
- targetGeneration !== 0n &&
368
- !node
369
- .peers()
370
- .some((peer) => peer.state === 3 &&
371
- peer.routingId !== null &&
372
- (0, routing_id_2.routingIdsEqual)(peer.routingId, target.targetNodeRid) &&
373
- peer.lifecycleGeneration === targetGeneration)) {
374
- return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, 'wire Actor join target RouteMesh peer became unavailable');
375
- }
376
- return failure;
377
- }
378
339
  function runtimeActorMeshName(actor, state, fallback) {
379
340
  const context = actor.context;
380
341
  const stateMeshName = state?.meshName;
381
342
  return context?.meshName ?? stateMeshName ?? fallback;
382
343
  }
383
344
  async function submitJoinWhenConnected(submit, timeoutMs, signal) {
384
- const deadline = performance.now() + Math.min(timeoutMs ?? 5_000, 5_000);
345
+ const deadline = performance.now() +
346
+ Math.min(timeoutMs ?? LOCAL_JOIN_RESOLUTION_TIMEOUT_MS, LOCAL_JOIN_RESOLUTION_TIMEOUT_MS);
385
347
  for (;;) {
386
348
  (0, abort_1.throwIfAborted)(signal);
387
349
  try {
@@ -391,7 +353,7 @@ async function submitJoinWhenConnected(submit, timeoutMs, signal) {
391
353
  if (!(0, runtime_values_1.isBackendNotConnectedError)(error) || performance.now() >= deadline) {
392
354
  throw error;
393
355
  }
394
- await new Promise((resolve) => setTimeout(resolve, 10));
356
+ await new Promise((resolve) => setTimeout(resolve, LOCAL_JOIN_POLL_INTERVAL_MS));
395
357
  }
396
358
  }
397
359
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.lookupNativeActorRef = lookupNativeActorRef;
4
+ const zlink_1 = require("@zlink-systems/zlink");
4
5
  function lookupNativeActorRef(node, actorId) {
5
6
  try {
6
7
  const location = node.actorLookup(actorId);
@@ -15,16 +16,9 @@ function lookupNativeActorRef(node, actorId) {
15
16
  };
16
17
  }
17
18
  catch (error) {
18
- if (nativeErrno(error) === 2) {
19
+ if (error instanceof zlink_1.ConfigError && error.result === zlink_1.ConfigResult.NotFound) {
19
20
  return undefined;
20
21
  }
21
22
  throw error;
22
23
  }
23
24
  }
24
- function nativeErrno(error) {
25
- if (typeof error !== 'object' || error === null || !('nativeErrno' in error)) {
26
- return undefined;
27
- }
28
- const value = error.nativeErrno;
29
- return typeof value === 'number' ? value : undefined;
30
- }
@@ -1,7 +1,6 @@
1
- import type { ActorRef, RoutingId } from '../../contracts';
2
- import { ZLinkSpotKind } from '../../contracts';
3
- import type { ZLinkRemoteActorPacketTarget } from './actor-runtime-state';
1
+ import { type ActorRef, type RoutingId, ZLinkSpotKind } from '../../contracts';
4
2
  import { type ZLinkActorMessageFollowContext } from './actor-message-follow-context';
3
+ import type { ZLinkRemoteActorPacketTarget } from './actor-runtime-state';
5
4
  export declare const ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET = "__zlink.actor.packet.relay";
6
5
  export declare const ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET = "zlink.framework.actor.session_disconnected";
7
6
  export declare const ZLINK_REMOTE_ACTOR_SESSION_BIND_PACKET = "framework.internal.actor-session-bind";
@@ -21,6 +20,7 @@ export declare function encodeRemoteActorPacketRelayPayload(input: {
21
20
  readonly header: Uint8Array;
22
21
  readonly payload: Uint8Array;
23
22
  readonly bindingActorRef?: ActorRef;
23
+ readonly bindingGeneration?: bigint;
24
24
  /** The actor reference used to preserve relocation context at the target Spot. */
25
25
  readonly actorRef?: ActorRef;
26
26
  readonly returnResponse?: boolean;
@@ -9,6 +9,7 @@ exports.encodeRemoteActorPacketTarget = encodeRemoteActorPacketTarget;
9
9
  exports.decodeRemoteActorPacketTarget = decodeRemoteActorPacketTarget;
10
10
  exports.decodeRemoteActorPacketRelayPayload = decodeRemoteActorPacketRelayPayload;
11
11
  const contracts_1 = require("../../contracts");
12
+ const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
12
13
  const routing_id_1 = require("../routing-id");
13
14
  const actor_message_follow_context_1 = require("./actor-message-follow-context");
14
15
  exports.ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET = '__zlink.actor.packet.relay';
@@ -47,7 +48,8 @@ function encodeRemoteActorPacketRelayPayload(input) {
47
48
  ? undefined
48
49
  : (0, routing_id_1.routingIdWireHex)(input.bindingActorRef.nodeRid),
49
50
  bindingActorGeneration: input.bindingActorRef?.objectGeneration.toString(),
50
- bindingGeneration: input.bindingActorRef?.bindingGeneration?.toString(),
51
+ bindingGeneration: input.bindingGeneration?.toString() ??
52
+ input.bindingActorRef?.bindingGeneration?.toString(),
51
53
  returnResponse: input.returnResponse,
52
54
  messageFollowContext: input.messageFollowContext,
53
55
  header: Buffer.from(input.header).toString('base64'),
@@ -100,8 +102,8 @@ function decodeRemoteActorPacketTarget(value) {
100
102
  }
101
103
  function requireSpotId(value) {
102
104
  const bytes = Buffer.byteLength(value, 'utf8');
103
- if (bytes < 1 || bytes > 255) {
104
- throw new Error('Actor packet target SpotId must contain 1..255 UTF-8 bytes.');
105
+ if (bytes < 1 || bytes > CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES) {
106
+ throw new Error(`Actor packet target SpotId must contain 1..${CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes.`);
105
107
  }
106
108
  return value;
107
109
  }
@@ -7,7 +7,7 @@ import type { ZLinkActorJoinCoordinator, ZLinkActorJoinRuntimeResult } from './a
7
7
  import type { ZLinkActorSourceTransfer } from './actor-source-transfer';
8
8
  import { ZLinkActorRuntimeState } from './actor-runtime-state';
9
9
  import type { ZLinkActorJoinRelocation } from './actor-join-relocation';
10
- export interface ZLinkActorNativeJoinCoordinatorOptions {
10
+ export interface ZLinkActorNativeJoinCoordinatorOptions extends Pick<import('./actor-local-native-join').ZLinkLocalNativeActorJoinOptions, 'localSpotJoin' | 'localEntryJoin' | 'localSourceLeave' | 'reportSourceLeaveError'> {
11
11
  readonly messageFlow?: () => import('../diagnostics/message-flow').ZLinkMessageFlowTracer | undefined;
12
12
  readonly node: ZLinkBackendMeshNode | (() => ZLinkBackendMeshNode);
13
13
  readonly completionTableProvider: () => ZLinkMeshCompletionTable | undefined;
@@ -28,8 +28,8 @@ export declare class ZLinkActorNativeJoinCoordinator implements ZLinkActorJoinCo
28
28
  private readonly localJoin;
29
29
  messageFlow(): import('../diagnostics/message-flow').ZLinkMessageFlowTracer | undefined;
30
30
  constructor(options: ZLinkActorNativeJoinCoordinatorOptions);
31
- beginDeferredJoin(actor: ZLinkActor, state: ZLinkActorRuntimeState, operationId: import('../../contracts').ZLinkActorJoinOperationId): void;
32
- abortDeferredJoin(actor: ZLinkActor, state: ZLinkActorRuntimeState, operationId: import('../../contracts').ZLinkActorJoinOperationId): Promise<void>;
31
+ beginDeferredJoin(actor: ZLinkActor, state: ZLinkActorRuntimeState): void;
32
+ abortDeferredJoin(actor: ZLinkActor, state: ZLinkActorRuntimeState): Promise<void>;
33
33
  joinSpot(actor: ZLinkActor, state: ZLinkActorRuntimeState, spotId: RoutingId, request: Message, timeoutMs: number | undefined, signal: AbortSignal | undefined, completionOperationId?: import('../../contracts').ZLinkActorJoinOperationId): Promise<ZLinkActorJoinRuntimeResult<Message>>;
34
34
  joinEntrySpot(actor: ZLinkActor, state: ZLinkActorRuntimeState, nodeRid: RoutingId | undefined, request: Message, timeoutMs: number | undefined, signal: AbortSignal | undefined, completionOperationId?: import('../../contracts').ZLinkActorJoinOperationId): Promise<ZLinkActorJoinRuntimeResult<Message>>;
35
35
  private withDeferredJoinFinalizer;
@@ -4,10 +4,8 @@ exports.ZLinkActorNativeJoinCoordinator = void 0;
4
4
  const abort_1 = require("../abort");
5
5
  const actor_runtime_state_1 = require("./actor-runtime-state");
6
6
  const actor_native_lookup_1 = require("./actor-native-lookup");
7
- const post_commit_actor_location_1 = require("./post-commit-actor-location");
8
7
  const actor_local_native_join_1 = require("./actor-local-native-join");
9
8
  const post_commit_actor_binder_1 = require("./post-commit-actor-binder");
10
- const operation_identity_1 = require("../foundation/operation-identity");
11
9
  /** Selects local native join or remote two-phase transfer for each destination. */
12
10
  class ZLinkActorNativeJoinCoordinator {
13
11
  options;
@@ -17,15 +15,12 @@ class ZLinkActorNativeJoinCoordinator {
17
15
  }
18
16
  constructor(options) {
19
17
  this.options = options;
20
- const postCommitLocation = options.locationLifecycle === undefined
21
- ? undefined
22
- : new post_commit_actor_location_1.ZLinkPostCommitActorLocation({
23
- lifecycle: options.locationLifecycle,
24
- reportError: options.postCommitErrorReporter,
25
- signal: options.shutdownSignal
26
- });
27
18
  this.localJoin = new actor_local_native_join_1.ZLinkLocalNativeActorJoin({
28
- postCommitLocation,
19
+ locationLifecycle: options.locationLifecycle,
20
+ localSpotJoin: options.localSpotJoin,
21
+ localEntryJoin: options.localEntryJoin,
22
+ localSourceLeave: options.localSourceLeave,
23
+ reportSourceLeaveError: options.reportSourceLeaveError,
29
24
  postCommitBinder: options.remoteActorBinder === undefined
30
25
  ? undefined
31
26
  : new post_commit_actor_binder_1.ZLinkPostCommitActorBinder({
@@ -38,11 +33,11 @@ class ZLinkActorNativeJoinCoordinator {
38
33
  messageSerializers: options.messageSerializers
39
34
  });
40
35
  }
41
- beginDeferredJoin(actor, state, operationId) {
42
- this.options.sourceTransfer?.beginDeferredActorHandoff?.(actor, state, (0, operation_identity_1.operationIdentityKey)(operationId));
36
+ beginDeferredJoin(actor, state) {
37
+ this.options.sourceTransfer?.beginDeferredActorHandoff?.(actor, state);
43
38
  }
44
- async abortDeferredJoin(actor, state, operationId) {
45
- await this.options.sourceTransfer?.cancelDeferredActorHandoff?.(actor, state, (0, operation_identity_1.operationIdentityKey)(operationId));
39
+ async abortDeferredJoin(actor, state) {
40
+ await this.options.sourceTransfer?.cancelDeferredActorHandoff?.(actor, state);
46
41
  }
47
42
  async joinSpot(actor, state, spotId, request, timeoutMs, signal, completionOperationId) {
48
43
  (0, abort_1.throwIfAborted)(signal);
@@ -85,15 +80,14 @@ class ZLinkActorNativeJoinCoordinator {
85
80
  withDeferredJoinFinalizer(actor, state, target, result, operationId) {
86
81
  if (operationId === undefined || this.options.sourceTransfer === undefined)
87
82
  return result;
88
- const key = (0, operation_identity_1.operationIdentityKey)(operationId);
89
83
  return {
90
84
  ...result,
91
85
  finalizeDeferredJoin: async () => {
92
86
  if (result.accepted && result.actor !== undefined && target !== undefined) {
93
- await this.options.sourceTransfer.completeDeferredActorHandoff?.(actor, target, result.actor, key);
87
+ await this.options.sourceTransfer.completeDeferredActorHandoff?.(actor, target, result.actor);
94
88
  }
95
89
  else {
96
- await this.options.sourceTransfer.cancelDeferredActorHandoff?.(actor, state, key);
90
+ await this.options.sourceTransfer.cancelDeferredActorHandoff?.(actor, state);
97
91
  }
98
92
  }
99
93
  };
@@ -4,6 +4,8 @@ exports.REMOTE_ACTOR_JOIN_ABORT = exports.REMOTE_ACTOR_JOIN_COMMIT = exports.REM
4
4
  exports.decodeRemoteActorSourceLeaveTerminal = decodeRemoteActorSourceLeaveTerminal;
5
5
  exports.decodeRemoteActorJoinPayload = decodeRemoteActorJoinPayload;
6
6
  exports.decodeWireRoutingId = decodeWireRoutingId;
7
+ const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
8
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
7
9
  const routing_id_1 = require("../routing-id");
8
10
  exports.ZLINK_REMOTE_ACTOR_JOIN_PACKET = '__zlink.actor.join_spot.request';
9
11
  exports.ZLINK_REMOTE_ACTOR_SOURCE_LEAVE_TERMINAL = '__zlink.actor.source_leave.terminal';
@@ -56,7 +58,7 @@ function decodeRemoteActorJoinPayload(payload) {
56
58
  boundSessionTargetNodeRid: optionalRoutingId(payload, 'boundSessionTargetNodeRid', 'boundSessionTargetNodeRidHex'),
57
59
  boundSessionSpotId: optionalSpotId(payload, 'boundSessionSpotId'),
58
60
  request: payload.request,
59
- requestContentType: optionalString(payload, 'requestContentType') ?? 'application/json'
61
+ requestContentType: optionalString(payload, 'requestContentType') ?? stream_wire_1.ZlinkStreamContentType.Json
60
62
  };
61
63
  }
62
64
  function decodeWireRoutingId(text, hex) {
@@ -76,8 +78,8 @@ function optionalSpotId(value, key) {
76
78
  }
77
79
  function requireSpotId(value) {
78
80
  const bytes = Buffer.byteLength(value, 'utf8');
79
- if (bytes < 1 || bytes > 255) {
80
- throw new Error('Remote actor SpotId must contain 1..255 UTF-8 bytes.');
81
+ if (bytes < 1 || bytes > CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES) {
82
+ throw new Error(`Remote actor SpotId must contain 1..${CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes.`);
81
83
  }
82
84
  return value;
83
85
  }
@@ -0,0 +1,3 @@
1
+ export declare function remainingActorRequestTimeout(actorId: string, deadlineMs: number | undefined): number | undefined;
2
+ /** Only actual Store, delivery-gate, and handoff waits acquire a deadline handle. */
3
+ export declare function waitActorReply<T>(reply: Promise<T>, actorId: string, deadlineMs: number | undefined, signal?: AbortSignal): Promise<T>;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.remainingActorRequestTimeout = remainingActorRequestTimeout;
4
+ exports.waitActorReply = waitActorReply;
5
+ const abort_1 = require("../abort");
6
+ const framework_errors_internal_1 = require("../framework-errors-internal");
7
+ function remainingActorRequestTimeout(actorId, deadlineMs) {
8
+ if (deadlineMs === undefined)
9
+ return undefined;
10
+ const remaining = deadlineMs - performance.now();
11
+ if (remaining <= 0) {
12
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded, `Actor request '${actorId}' exceeded its deadline.`);
13
+ }
14
+ return Math.max(1, Math.ceil(remaining));
15
+ }
16
+ /** Only actual Store, delivery-gate, and handoff waits acquire a deadline handle. */
17
+ async function waitActorReply(reply, actorId, deadlineMs, signal) {
18
+ if (deadlineMs === undefined)
19
+ return await (0, abort_1.awaitWithAbort)(reply, signal);
20
+ let timer;
21
+ const timeout = new Promise((_resolve, reject) => {
22
+ const remaining = remainingActorRequestTimeout(actorId, deadlineMs);
23
+ timer = setTimeout(() => reject((0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded, `Actor request '${actorId}' exceeded its deadline.`)), remaining);
24
+ });
25
+ try {
26
+ return await (0, abort_1.awaitWithAbort)(Promise.race([reply, timeout]), signal);
27
+ }
28
+ finally {
29
+ clearTimeout(timer);
30
+ }
31
+ }
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkActorRetryDelay = void 0;
4
4
  const INITIAL_RETRY_DELAY_MS = 25;
5
5
  const MAX_RETRY_DELAY_MS = 1_000;
6
+ const RETRY_BACKOFF_MULTIPLIER = 2;
6
7
  class ZLinkActorRetryDelay {
7
8
  delayMs = INITIAL_RETRY_DELAY_MS;
8
9
  reset() {
@@ -11,7 +12,7 @@ class ZLinkActorRetryDelay {
11
12
  async wait(signal) {
12
13
  const completed = await delayUnlessAborted(this.delayMs, signal);
13
14
  if (completed) {
14
- this.delayMs = Math.min(this.delayMs * 2, MAX_RETRY_DELAY_MS);
15
+ this.delayMs = Math.min(this.delayMs * RETRY_BACKOFF_MULTIPLIER, MAX_RETRY_DELAY_MS);
15
16
  }
16
17
  return completed;
17
18
  }
@@ -6,6 +6,7 @@ import type { ZLinkLocationLifecycle } from '../locations';
6
6
  import type { ZLinkActorRuntimeState } from './actor-runtime-state';
7
7
  import type { ZLinkActorTransferRegistry } from './actor-transfer-registry';
8
8
  import type { ZLinkRuntimeAdmissionGate } from '../admission';
9
+ import type { ZLinkActivationAdmission } from '../activation-admission';
9
10
  export interface ZLinkActorJoinRuntimeResult<TReply> {
10
11
  readonly accepted: boolean;
11
12
  readonly actor?: import('../../contracts').ActorRef;
@@ -34,6 +35,7 @@ export interface ZLinkActorManagerOptions {
34
35
  readonly shutdownSignal?: AbortSignal;
35
36
  readonly metrics?: import('../diagnostics').ZLinkRuntimeMetrics;
36
37
  readonly admission?: ZLinkRuntimeAdmissionGate;
38
+ readonly activationAdmission?: ZLinkActivationAdmission;
37
39
  readonly placementCreate?: (actorId: string, actorType: string, createOnly: boolean, options: {
38
40
  readonly meshName?: string;
39
41
  readonly request?: unknown;
@@ -56,8 +58,8 @@ export interface ZLinkActorJoinCoordinator {
56
58
  * lookup. This is an internal ordering fence; it is not part of the public
57
59
  * actor context contract.
58
60
  */
59
- beginDeferredJoin?(actor: ZLinkActor, state: ZLinkActorRuntimeState, operationId: import('../../contracts').ZLinkActorJoinOperationId): void;
60
- abortDeferredJoin?(actor: ZLinkActor, state: ZLinkActorRuntimeState, operationId: import('../../contracts').ZLinkActorJoinOperationId): Promise<void>;
61
+ beginDeferredJoin?(actor: ZLinkActor, state: ZLinkActorRuntimeState): void;
62
+ abortDeferredJoin?(actor: ZLinkActor, state: ZLinkActorRuntimeState): Promise<void>;
61
63
  joinSpot(actor: ZLinkActor, state: ZLinkActorRuntimeState, spotId: RoutingId, request: Message, timeoutMs: number | undefined, signal: AbortSignal | undefined, completionOperationId?: import('../../contracts').ZLinkActorJoinOperationId): Promise<ZLinkActorJoinRuntimeResult<Message>>;
62
64
  joinEntrySpot(actor: ZLinkActor, state: ZLinkActorRuntimeState, nodeRid: RoutingId | undefined, request: Message, timeoutMs: number | undefined, signal: AbortSignal | undefined, completionOperationId?: import('../../contracts').ZLinkActorJoinOperationId): Promise<ZLinkActorJoinRuntimeResult<Message>>;
63
65
  }