@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
@@ -5,12 +5,14 @@ const framework_errors_internal_1 = require("../framework-errors-internal");
5
5
  const runtime_message_1 = require("../backend/runtime-message");
6
6
  const contracts_1 = require("../../contracts");
7
7
  const ConfigurationException_1 = require("../../contracts/Configuration/ConfigurationException");
8
+ const abort_1 = require("../abort");
8
9
  const actors_1 = require("../actors");
9
10
  const actor_packet_relay_wire_1 = require("../actors/actor-packet-relay-wire");
10
11
  const actor_routed_json_request_1 = require("../actors/actor-routed-json-request");
11
12
  const actor_message_follow_context_1 = require("../actors/actor-message-follow-context");
12
13
  const bound_session_wire_1 = require("../actors/bound-session-wire");
13
14
  const routing_id_1 = require("../routing-id");
15
+ const session_disconnected_wire_1 = require("../actors/session-disconnected-wire");
14
16
  const submission_result_1 = require("../messaging/submission-result");
15
17
  const actor_session_binding_runtime_owner_1 = require("../streams/actor-session-binding-runtime-owner");
16
18
  const protocol_1 = require("../streams/protocol");
@@ -32,29 +34,14 @@ class ZLinkActorPacketRelay {
32
34
  spotRouterChannelIdForMesh: spotRouterChannelIdByMesh?.call(options.meshRouters) ?? ((meshName) => meshName)
33
35
  });
34
36
  }
35
- async notifyBoundActorDisconnected(actor, signal) {
36
- const state = this.options.actorManager()?.getState(actor.actorId);
37
- const currentRemoteBoundSessionTarget = state?.spotId === undefined ? undefined : state.remoteBoundSessionTarget;
38
- const currentRemoteActorPacketTarget = state?.spotId === undefined ? undefined : state.remoteActorPacketTarget;
39
- const remoteTarget = currentRemoteBoundSessionTarget ??
40
- currentRemoteActorPacketTarget ??
41
- (state?.spotId === undefined ? undefined : this.targets.cachedTargetForActor(actor));
42
- if (remoteTarget !== undefined) {
43
- await this.notifyRemoteActorDisconnected(actor.actorId, remoteTarget, signal, actor.ref);
44
- return;
45
- }
37
+ async notifyBoundActorDisconnected(actor, signal, binding) {
38
+ // The Session binding owns this route, including after relocation and detach (§5, §7).
46
39
  const actorRefTarget = this.targets.targetForActorRef(actor.ref);
47
40
  if (actorRefTarget !== undefined) {
48
- await this.notifyRemoteActorDisconnected(actor.actorId, actorRefTarget, signal, actor.ref);
41
+ await this.notifyRemoteActorDisconnected(actor.actorId, actorRefTarget, signal, actor.ref, binding);
49
42
  return;
50
43
  }
51
- if (state?.spotId !== undefined && state.actor !== undefined) {
52
- const handled = await this.requireSpotManager().notifyJoinedSpotActorDisconnected(state.spotId, state.actor, signal);
53
- if (handled) {
54
- return;
55
- }
56
- }
57
- await this.notifyActorDisconnectedById(actor.actorId, signal);
44
+ await this.notifyLocalActorDisconnectedById(actor.actorId, signal, binding, actor.ref);
58
45
  }
59
46
  clearRemoteActorPacketTarget(actorId) {
60
47
  this.targets.clear(actorId);
@@ -65,34 +52,22 @@ class ZLinkActorPacketRelay {
65
52
  actorPacketTargetForState(actorId) {
66
53
  return this.targets.targetForState(actorId);
67
54
  }
68
- async notifyActorDisconnectedById(actorId, signal) {
55
+ async notifyLocalActorDisconnectedById(actorId, signal, binding, bindingActorRef) {
56
+ (0, abort_1.throwIfAborted)(signal);
69
57
  const state = this.options.actorManager()?.getState(actorId);
70
- const remoteTarget = state === undefined
71
- ? undefined
72
- : (state.remoteBoundSessionTarget ?? state.remoteActorPacketTarget);
73
- if (remoteTarget !== undefined) {
74
- await this.notifyRemoteActorDisconnected(actorId, remoteTarget, signal);
75
- return;
76
- }
77
- await this.notifyLocalActorDisconnectedById(actorId, signal);
78
- }
79
- async notifyLocalActorDisconnectedById(actorId, signal) {
80
- const state = this.options.actorManager()?.getState(actorId);
81
- if (state?.spotId !== undefined && state.actor !== undefined) {
82
- const handled = await this.requireSpotManager().notifyJoinedSpotActorDisconnected(state.spotId, state.actor, signal);
83
- if (handled) {
84
- return;
85
- }
86
- }
87
- const localActor = state?.actor;
88
- if (localActor === undefined) {
89
- throw new Error(`Actor '${actorId}' does not have a local actor instance.`);
58
+ const frame = this.disconnectedFrame(actorId, binding);
59
+ const header = runtime_message_1.ZLinkBufferMessage.fromOwned(Buffer.from(frame.header));
60
+ const body = runtime_message_1.ZLinkBufferMessage.fromOwned(frame.payload);
61
+ try {
62
+ if (state?.spotId === undefined)
63
+ await this.requireSpotNodeRuntime().dispatchEntryActorPacket('local', actorId, [header, body], false, undefined, bindingActorRef);
64
+ else
65
+ await this.requireSpotManager().dispatchRoutedActorPacket('local', state.spotId, actorId, [header, body], false, undefined, bindingActorRef);
90
66
  }
91
- const meshName = state?.meshName;
92
- if (meshName === undefined) {
93
- throw new Error(`Actor '${actorId}' does not have a RouteMesh identity.`);
67
+ finally {
68
+ header.close();
69
+ body.close();
94
70
  }
95
- await this.requireSpotNodeRuntime().notifyEntrySpotActorDisconnected(meshName, localActor, signal);
96
71
  }
97
72
  async receiveRemoteActorPacketRelay(payload, _routeContext) {
98
73
  const relay = (0, actor_packet_relay_wire_1.decodeRemoteActorPacketRelayPayload)(payload);
@@ -159,22 +134,23 @@ class ZLinkActorPacketRelay {
159
134
  }
160
135
  return { ok: true, response: { acknowledged: true } };
161
136
  }
162
- if (frameHeader.name === actors_1.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET) {
163
- this.requireCurrentRemoteBinding(relay, _routeContext);
164
- await this.notifyLocalActorDisconnectedById(relay.actorId);
165
- return {
166
- ok: true,
167
- actorPacketTarget: (0, actor_packet_relay_wire_1.encodeRemoteActorPacketTarget)(this.actorPacketTargetForState(relay.actorId))
168
- };
169
- }
170
- if (remoteBoundSessionTarget !== undefined) {
137
+ if (remoteBoundSessionTarget !== undefined &&
138
+ frameHeader.name !== actors_1.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET) {
171
139
  this.requireCurrentRemoteBinding(relay, _routeContext);
172
140
  }
173
141
  const state = this.options.actorManager()?.getState(relay.actorId);
174
- if (frameHeader.kind === protocol_1.ZLinkStreamMessageKind.Send) {
142
+ if (frameHeader.kind === protocol_1.ZLinkStreamMessageKind.Send ||
143
+ frameHeader.name === actors_1.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET) {
175
144
  const dispatch = state?.spotId === undefined
176
145
  ? this.requireSpotNodeRuntime().dispatchEntryActorPacket('remote', relay.actorId, [header, body], false, remoteBoundSessionTarget, fallbackActorRef)
177
146
  : this.requireSpotManager().dispatchRoutedActorPacket('remote', state.spotId, relay.actorId, [header, body], false, remoteBoundSessionTarget, fallbackActorRef);
147
+ if (frameHeader.name === actors_1.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET) {
148
+ await dispatch;
149
+ return {
150
+ ok: true,
151
+ actorPacketTarget: (0, actor_packet_relay_wire_1.encodeRemoteActorPacketTarget)(this.actorPacketTargetForState(relay.actorId))
152
+ };
153
+ }
178
154
  // Spec 05 §1.3: a one-way Session Actor relay completes at relay
179
155
  // queue admission, not after the remote application turn. In
180
156
  // particular, a handler may register a deferred Join whose relocation
@@ -469,21 +445,14 @@ class ZLinkActorPacketRelay {
469
445
  }
470
446
  return true;
471
447
  }
472
- async notifyRemoteActorDisconnected(actorId, remoteTarget, signal, bindingActorRef) {
448
+ async notifyRemoteActorDisconnected(actorId, remoteTarget, signal, bindingActorRef, binding) {
473
449
  const spotKind = 'spotKind' in remoteTarget ? remoteTarget.spotKind : undefined;
474
- const header = {
475
- kind: protocol_1.ZLinkStreamMessageKind.Send,
476
- codec: protocol_1.ZLinkStreamCodec.Raw,
477
- flags: protocol_1.ZLinkStreamHeaderFlags.None,
478
- name: actors_1.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET,
479
- metadata: new Map()
480
- };
450
+ const frame = this.disconnectedFrame(actorId, binding, 'sessionNodeRid' in remoteTarget ? remoteTarget : undefined);
481
451
  const payload = (0, actor_packet_relay_wire_1.encodeRemoteActorPacketRelayPayload)({
482
452
  actorId,
483
453
  routerChannelId: remoteTarget.routerChannelId,
484
454
  bindingActorRef,
485
- header: (0, protocol_1.encodeStreamHeader)(header),
486
- payload: Buffer.alloc(0)
455
+ ...frame
487
456
  });
488
457
  if ((spotKind ?? contracts_1.ZLinkSpotKind.Entry) === contracts_1.ZLinkSpotKind.Entry) {
489
458
  await this.options.routeTransport.request(remoteTarget.routerChannelId, String(remoteTarget.targetNodeRid), actors_1.ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET, payload, this.options.requestTimeoutMs, signal);
@@ -500,18 +469,36 @@ class ZLinkActorPacketRelay {
500
469
  signal
501
470
  });
502
471
  }
472
+ disconnectedFrame(actorId, binding, target) {
473
+ const current = binding === undefined
474
+ ? (this.options.actorManager()?.getState(actorId)?.boundSession ?? target)
475
+ : undefined;
476
+ const header = {
477
+ kind: protocol_1.ZLinkStreamMessageKind.Send,
478
+ codec: protocol_1.ZLinkStreamCodec.Raw,
479
+ flags: protocol_1.ZLinkStreamHeaderFlags.None,
480
+ name: actors_1.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET,
481
+ metadata: new Map()
482
+ };
483
+ return {
484
+ header: (0, protocol_1.encodeStreamHeader)(header),
485
+ payload: (0, session_disconnected_wire_1.encodeSessionDisconnected)(binding?.sessionOwnerNodeRid ?? current?.sessionNodeRid, binding?.sessionOwnerNodeGeneration ?? current?.sessionOwnerNodeGeneration, binding?.bindingGeneration ?? current?.bindingGeneration)
486
+ };
487
+ }
503
488
  requireCurrentRemoteBinding(relay, routeContext) {
504
- const state = this.options.actorManager()?.getState(relay.actorId);
505
- const current = state?.boundSession;
506
- if (current === undefined ||
507
- current.sessionNodeRid === undefined ||
508
- !(0, routing_id_1.routingIdsEqual)(current.sessionNodeRid, routeContext.sourceNodeRid) ||
509
- current.bindingGeneration === undefined ||
510
- relay.bindingGeneration === undefined ||
511
- current.bindingGeneration !== BigInt(relay.bindingGeneration)) {
489
+ if (!this.matchesCurrentRemoteBinding(relay, routeContext)) {
512
490
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorSessionNotBound, `Actor '${relay.actorId}' bound session identity is stale.`, true);
513
491
  }
514
492
  }
493
+ matchesCurrentRemoteBinding(relay, routeContext) {
494
+ const current = this.options.actorManager()?.getState(relay.actorId)?.boundSession;
495
+ return (current !== undefined &&
496
+ current.sessionNodeRid !== undefined &&
497
+ (0, routing_id_1.routingIdsEqual)(current.sessionNodeRid, routeContext.sourceNodeRid) &&
498
+ current.bindingGeneration !== undefined &&
499
+ relay.bindingGeneration !== undefined &&
500
+ current.bindingGeneration === BigInt(relay.bindingGeneration));
501
+ }
515
502
  async requestRemoteTarget(target, request, unavailableMessage, decodeReply, signal) {
516
503
  if (target.spotKind === contracts_1.ZLinkSpotKind.Entry) {
517
504
  try {
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkActorPlacementCoordinator = void 0;
4
+ const routing_id_1 = require("../routing-id");
4
5
  const framework_errors_internal_1 = require("../framework-errors-internal");
5
6
  const node_crypto_1 = require("node:crypto");
6
7
  const runtime_values_1 = require("../backend/runtime-values");
@@ -33,6 +34,13 @@ class ZLinkActorPlacementCoordinator {
33
34
  for (;;) {
34
35
  const target = await this.options.target(meshName, stableType, deadline.signal, excluded);
35
36
  if (target === undefined) {
37
+ // Entry eligibility limits new creation, not lookup of a Ready Actor (Actor model §6.3, §6.5).
38
+ if (!createOnly) {
39
+ const current = await this.options.store.readAuthority((0, authority_key_codec_1.encodeAuthorityKey)('actor', actorId), deadline.signal);
40
+ const existing = existingActor(current, actorId, stableType);
41
+ if (existing !== undefined)
42
+ return { status: 'existing', actor: existing };
43
+ }
36
44
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.PlacementCapacityExhausted, `No eligible Actor placement target is ready for '${stableType}'.`, true);
37
45
  }
38
46
  const creatingPayload = (0, actor_authority_publication_1.encodeActorAuthorityIdentity)({
@@ -75,7 +83,7 @@ class ZLinkActorPlacementCoordinator {
75
83
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorTypeMismatch, `Actor '${actorId}' is registered with another stable type.`);
76
84
  }
77
85
  if (reserved.kind === 'placementCapacityExhausted') {
78
- excluded.add(String(target.nodeRid));
86
+ excluded.add((0, routing_id_1.encodeRoutingIdStorageHex)(target.nodeRid));
79
87
  continue;
80
88
  }
81
89
  if (reserved.kind === 'alreadyExists' || reserved.kind === 'conflict') {
@@ -106,6 +114,13 @@ class ZLinkActorPlacementCoordinator {
106
114
  }
107
115
  if (remote === undefined)
108
116
  throw transportFailure;
117
+ if ((0, framework_errors_internal_1.internalFrameworkErrorKindFromWireReply)(remote.terminalResult, remote.failureCode) ===
118
+ framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected) {
119
+ // The target refused before the callback and cancelled its reservation
120
+ // (Actor model §6.3); exclude this host run like a Reserve failure.
121
+ excluded.add((0, routing_id_1.encodeRoutingIdStorageHex)(target.nodeRid));
122
+ continue;
123
+ }
109
124
  if (remote.terminalResult !== runtime_values_1.RequestResult.Ok || remote.failureCode !== 0) {
110
125
  // Classify the (terminal, fine failure code) pair via the shared
111
126
  // ownership-aware translator instead of collapsing every non-OK
@@ -274,12 +289,14 @@ function creationTarget(snapshot) {
274
289
  }
275
290
  };
276
291
  }
277
- function existingActor(reserved, actorId, stableType) {
278
- const snapshot = reserved.kind === 'alreadyExists'
279
- ? reserved.current
280
- : reserved.kind === 'conflict' && reserved.current.kind === 'snapshot'
281
- ? reserved.current
282
- : undefined;
292
+ function existingActor(current, actorId, stableType) {
293
+ const snapshot = current.kind === 'snapshot'
294
+ ? current
295
+ : current.kind === 'alreadyExists'
296
+ ? current.current
297
+ : current.kind === 'conflict' && current.current.kind === 'snapshot'
298
+ ? current.current
299
+ : undefined;
283
300
  if (snapshot === undefined ||
284
301
  snapshot.allocation.state !== 'active' ||
285
302
  snapshot.allocation.objectKind !== 'actor' ||
@@ -348,7 +365,7 @@ function requireExactReservation(current, record) {
348
365
  current.allocation.stableType !== record.stableType ||
349
366
  current.objectGeneration !== record.reservation.objectGeneration ||
350
367
  current.authorityOwnerGeneration !== record.reservation.authorityOwnerGeneration ||
351
- String(current.allocation.descriptor.rid) !== record.reservation.targetNodeRid ||
368
+ !(0, routing_id_1.routingIdsEqual)(current.allocation.descriptor.rid, record.reservation.targetNodeRid) ||
352
369
  current.allocation.descriptorLifecycleGeneration !== record.reservation.targetNodeGeneration ||
353
370
  current.ownerId !== record.reservation.targetOwnerId ||
354
371
  current.ownerLeaseGeneration !== record.reservation.targetOwnerLeaseGeneration ||
@@ -149,9 +149,9 @@ class ZLinkActorRuntimeOptionsFactory {
149
149
  staleActorRefReporter: (_meshName, actorId) => this.options.actorHandoff.recordStaleFailure(actorId),
150
150
  staleActorRefPredicate: (meshName, actor) => this.actorBelongsToMesh(meshName, actor.actorId) &&
151
151
  this.options.actorHandoff.isKnownStale(actor),
152
- handoffCapture: (meshName, actorId, parts, returnResponse, actor, deadlineUnixMs) => this.actorBelongsToMesh(meshName, actorId) &&
152
+ handoffCapture: (meshName, actorId, parts, returnResponse, actor, deadlineUnixMs, onAdmitted) => this.actorBelongsToMesh(meshName, actorId) &&
153
153
  !this.options.actorHandoff.isProvisional(actorId)
154
- ? this.options.actorHandoff.capture('local', actorId, parts, returnResponse, undefined, actor, deadlineUnixMs)
154
+ ? this.options.actorHandoff.capture('local', actorId, parts, returnResponse, undefined, actor, deadlineUnixMs, undefined, undefined, onAdmitted)
155
155
  : undefined,
156
156
  sendErrorReporter: this.options.reportPostCommitError
157
157
  };
@@ -1,6 +1,6 @@
1
- import { type ActorRef, type RoutingId, type ZLinkActor, type ZLinkActorJoinOperationId, type ZLinkMessageSerializer, type ZLinkSpot, ZLinkMessage } from '../../contracts';
1
+ import { type ActorRef, type RoutingId, type ZLinkActor, type ZLinkMeshNodeDescriptor, type ZLinkActorJoinOperationId, type ZLinkMessageSerializer, type ZLinkSpot, ZLinkMessage } from '../../contracts';
2
2
  import type { Message } from '../../contracts/Common/Message';
3
- import { type ZLinkActorHandoffCoordinator, type ZLinkActorHandoffReplayPreparation, type ZLinkActorRoutedJoinTransport, type ZLinkActorTransferRegistry, type ZLinkDeferredJoinCompletion, type ZLinkRemoteBoundSessionTarget } from '../actors';
3
+ import { type ZLinkActorHandoffCoordinator, type ZLinkActorHandoffReplayPreparation, type ZLinkActorRoutedJoinTransport, type ZLinkDeferredJoinCompletion, type ZLinkRemoteBoundSessionTarget } from '../actors';
4
4
  import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult, ZLinkActorHandoffTerminalAcceptance, ZLinkActorHandoffTerminalAck } from '../actors/actor-handoff';
5
5
  import { type ZLinkActorMessageFollowOwnerFence } from '../actors/actor-message-follow-context';
6
6
  import type { ZLinkActorRuntimeState } from '../actors/actor-runtime-state';
@@ -32,7 +32,6 @@ export interface ZLinkActorTransferRuntimeActorManager {
32
32
  }): Promise<ZLinkActor>;
33
33
  publishRelocationActor(actorId: string): void;
34
34
  rollbackTransferredActor(actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
35
- completeCoreRelocationSource(actorId: string): Promise<void>;
36
35
  }
37
36
  export interface ZLinkActorTransferRuntimeOptions {
38
37
  readonly routeTransport: ZLinkActorRoutedJoinTransport;
@@ -41,36 +40,30 @@ export interface ZLinkActorTransferRuntimeOptions {
41
40
  readonly actorManager: () => ZLinkActorTransferRuntimeActorManager | undefined;
42
41
  readonly primaryMeshNode: () => ZLinkBackendMeshNode;
43
42
  readonly notifyEntrySpotActorLeft: (actor: ZLinkActor, signal?: AbortSignal) => Promise<void>;
44
- readonly restoreEntrySpotActorJoined: (actor: ZLinkActor, signal?: AbortSignal) => Promise<void>;
45
43
  readonly locationLifecycle: () => ZLinkLocationLifecycle | undefined;
46
44
  /** Resolves the authoritative Ready route for a target User/Instance Spot. */
47
45
  readonly spotRouteResolver?: () => ZLinkSpotRouteResolver | undefined;
48
46
  readonly actorHandoff: ZLinkActorHandoffCoordinator;
49
- readonly actorTransferRegistry: ZLinkActorTransferRegistry;
50
47
  readonly authorityStore: () => (ZLinkAuthorityStore & ZLinkObjectCreationStore & ZLinkOwnerLeaseStore) | undefined;
51
48
  readonly currentOwner: () => ZLinkLocationOwnerToken | undefined;
52
- /** Live admitted peers of a mesh; used to stop retries against a gone session owner. */
53
- readonly liveDescriptors?: (meshName: string, signal?: AbortSignal) => Promise<readonly import('../../contracts').ZLinkMeshNodeDescriptor[]>;
54
49
  /** Service-wire command 42/43/44 bridge, installed after the host runtime is assembled. */
55
50
  readonly sessionRelocationWire?: () => ZLinkSessionRelocationWirePort | undefined;
56
51
  readonly clearRemoteActorPacketTarget: (actorId: string) => void;
57
52
  /** Acquires that permit before the Actor FIFO claims the runnable child. */
58
53
  readonly prepareApplicationJob?: ZLinkActorHandoffReplayPreparation;
59
54
  readonly reportPostCommitError?: (error: unknown) => void;
60
- readonly onSourceDepartureCompleted?: (actorId: string) => void;
61
55
  readonly shutdownSignal?: () => AbortSignal | undefined;
62
- readonly metrics?: import('../diagnostics').ZLinkRuntimeMetrics;
63
56
  }
64
57
  export declare class ZLinkActorTransferRuntime {
65
58
  private readonly options;
66
- private readonly coreSourceLeaves;
67
59
  private readonly activeDeferredJoinTerminals;
68
60
  private readonly deferredJoinTerminals;
69
61
  constructor(options: ZLinkActorTransferRuntimeOptions);
70
62
  beginDeferredActorHandoff(actor: ZLinkActor, state: ZLinkActorRuntimeState): void;
71
- promoteDeferredActorHandoff(actor: ZLinkActor, _state: ZLinkActorRuntimeState): void;
63
+ /** Relocation activation owns admission; handler terminals are observed independently. */
64
+ admitRelocationPrefix(actor: ZLinkActor, objectGeneration: bigint, packets: readonly ZLinkActorHandoffPacket[], start: Promise<void>, onResult: (packet: ZLinkActorHandoffPacket, result: ZLinkActorHandoffResult) => Promise<void>): void;
72
65
  completeDeferredActorHandoff(actor: ZLinkActor, target: ZLinkSpotRouteTarget, _targetActorRef: ActorRef): Promise<void>;
73
- cancelDeferredActorHandoff(actor: ZLinkActor, state: ZLinkActorRuntimeState): Promise<void>;
66
+ cancelDeferredActorHandoff(actor: ZLinkActor, _state: ZLinkActorRuntimeState): Promise<void>;
74
67
  prepareDeferredJoinAccepted(actorId: string, operationId: ZLinkActorJoinOperationId, actorRef: ActorRef, rawReply: Uint8Array, replyContentType?: string): ZLinkDeferredJoinCompletion;
75
68
  /**
76
69
  * Runs the completion callback once in the target Actor mailbox.
@@ -80,43 +73,26 @@ export declare class ZLinkActorTransferRuntime {
80
73
  deliverDeferredJoinCompletion(completion: ZLinkDeferredJoinCompletion, actor: ZLinkActor, actorRef: ActorRef, submitMailbox: <T>(operation: () => Promise<T>) => Promise<T>, signal?: AbortSignal): Promise<void>;
81
74
  private deliverDeferredJoinCompletionCore;
82
75
  private prepareSourceActorLeave;
83
- private restoreSourceActor;
84
76
  private beginSourceActorMove;
85
77
  private cancelSourceActorMove;
86
78
  private admitCanceledSourcePrefix;
87
79
  private admitDeferredSourcePrefix;
88
80
  private observeHandoffReplay;
89
- private sourceHandoffPrefixQueue;
90
- prepareSource(actor: ZLinkActor, state: ZLinkActorRuntimeState, signal?: AbortSignal, lifecycleAuthority?: 'framework' | 'core', deferredJoin?: boolean, relocation?: ServiceWireOperationId): Promise<{
91
- handoffBacklog: readonly ZLinkActorHandoffPacket[];
92
- sourceLeaveCompletion: Promise<void> | undefined;
93
- sourceLeaveSubmitted: Promise<void> | undefined;
94
- onSourceLeaveSubmitted: (notify: () => Promise<void>) => void;
95
- observeTargetAuthority: (target: ZLinkSpotRouteTarget, targetActorRef: ActorRef, observeSignal?: AbortSignal) => Promise<void>;
96
- commit: (target: Parameters<ZLinkActorHandoffCoordinator["complete"]>[1], targetActorRef: ActorRef, results: Parameters<ZLinkActorHandoffCoordinator["complete"]>[3], releaseLocation?: boolean) => void;
97
- rollback: () => Promise<void>;
98
- adapterKey?: string;
99
- state: ZLinkMessage;
100
- }>;
101
- prepareMaintenanceSession(actor: ZLinkActor, state: ZLinkActorRuntimeState, signal?: AbortSignal, manageMembership?: boolean, relocation?: ServiceWireOperationId): Promise<{
81
+ prepareMaintenanceSession(actor: ZLinkActor, state: ZLinkActorRuntimeState, signal?: AbortSignal, manageMembership?: boolean, relocation?: ServiceWireOperationId, relocationTarget?: Pick<ZLinkMeshNodeDescriptor, 'rid' | 'lifecycleGeneration'>): Promise<{
102
82
  readonly target?: ZLinkRemoteBoundSessionTarget;
103
83
  readonly handoffBacklog: readonly import('../actors').ZLinkActorHandoffPacket[];
104
84
  takeRelocationRelay(): readonly import('../actors').ZLinkActorHandoffPacket[];
105
85
  setReplayResults(results: readonly import('../actors').ZLinkActorHandoffResult[]): void;
106
- commit(target: ZLinkSpotRouteTarget, targetActorRef: ActorRef, targetOwnerFence: ZLinkActorMessageFollowOwnerFence): Promise<void>;
86
+ commit(target: ZLinkSpotRouteTarget, targetActorRef: ActorRef, targetOwnerFence: ZLinkActorMessageFollowOwnerFence | null): Promise<void>;
107
87
  rollback(): Promise<void>;
108
88
  discard(reason: unknown): void;
109
89
  }>;
110
- notifyCoreSourceLeave(actor: ZLinkActor, callback: () => Promise<void>): Promise<void>;
111
90
  completeRelocationSourceLeave(actor: ZLinkActor, sourceSpotId: RoutingId | undefined, signal?: AbortSignal): Promise<void>;
112
91
  relayMaintenanceTerminal(actorId: string, packet: ZLinkActorHandoffPacket, result: ZLinkActorHandoffResult, sourceNodeRid: RoutingId, targetAuthorityOwnerGeneration?: bigint): ZLinkActorHandoffTerminalAck;
113
92
  relayCanonicalMaintenanceTerminal(operationId: string, replyRouteId: string, result: ZLinkActorHandoffResult, sourceNodeRid: RoutingId, targetAuthorityOwnerGeneration?: bigint): ZLinkActorHandoffTerminalAcceptance;
114
93
  private sealBoundSessionRoute;
115
94
  private abortBoundSessionRouteSeal;
116
95
  private observeBoundSessionSealAbort;
117
- private beginCoreSourceLeave;
118
- private scheduleSourceDeparture;
119
- private finishSourceDeparture;
120
96
  getOrCreateRoutedActor(actorId: string, actorType: string, actorRef?: ActorRef, remoteBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, actorCreateRequest?: Message, signal?: AbortSignal): Promise<{
121
97
  readonly actor: ZLinkActor;
122
98
  readonly actorRef: ZLinkBackendActorRef;