@zlink-systems/framework 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  3. package/dist/contracts/Common/CoreTypes.js +7 -0
  4. package/dist/contracts/Common/index.d.ts +1 -1
  5. package/dist/contracts/Common/index.js +0 -1
  6. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  7. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  8. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  9. package/dist/contracts/Configuration/Registration.js +58 -36
  10. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  12. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  16. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  17. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  18. package/dist/contracts/Handlers/JsonContract.js +10 -4
  19. package/dist/contracts/Locations/Authority.d.ts +1 -1
  20. package/dist/contracts/Locations/Authority.js +3 -2
  21. package/dist/contracts/Locations/Options.js +1 -1
  22. package/dist/contracts/Locations/Stores.d.ts +12 -0
  23. package/dist/contracts/Locations/Stores.js +9 -0
  24. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  25. package/dist/internal.d.ts +4 -0
  26. package/dist/internal.js +15 -1
  27. package/dist/nest-integration.d.ts +4 -2
  28. package/dist/nest-integration.js +14 -4
  29. package/dist/runtime/abort.d.ts +1 -0
  30. package/dist/runtime/abort.js +8 -5
  31. package/dist/runtime/activation-admission.d.ts +1 -2
  32. package/dist/runtime/activation-admission.js +2 -6
  33. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  34. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  35. package/dist/runtime/actors/actor-client.d.ts +2 -2
  36. package/dist/runtime/actors/actor-client.js +42 -143
  37. package/dist/runtime/actors/actor-context.d.ts +3 -5
  38. package/dist/runtime/actors/actor-context.js +13 -11
  39. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  40. package/dist/runtime/actors/actor-handoff.js +8 -8
  41. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  42. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  43. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  44. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  45. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  46. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  47. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  48. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  49. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  50. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  51. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  52. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  53. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  54. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  55. package/dist/runtime/actors/bound-session-wire.js +2 -7
  56. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  57. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  58. package/dist/runtime/actors/index.d.ts +9 -7
  59. package/dist/runtime/actors/index.js +87 -69
  60. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  61. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  62. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  63. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  64. package/dist/runtime/admission.d.ts +2 -0
  65. package/dist/runtime/admission.js +7 -1
  66. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  67. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  68. package/dist/runtime/backend/contracts/index.d.ts +6 -23
  69. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  70. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  71. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  72. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
  73. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
  74. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  75. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  76. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  77. package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
  78. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  79. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  80. package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
  81. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  82. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  83. package/dist/runtime/backend/runtime-values.js +2 -0
  84. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  85. package/dist/runtime/channels/channel-clients.js +68 -52
  86. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  87. package/dist/runtime/channels/channel-envelope.js +47 -29
  88. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  89. package/dist/runtime/channels/channel-outbound-operations.js +9 -10
  90. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  91. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  94. package/dist/runtime/channels/channel-runtime-manager.js +5 -2
  95. package/dist/runtime/channels/channel-socket-options.js +3 -2
  96. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  97. package/dist/runtime/channels/channel-socket-registry.js +248 -174
  98. package/dist/runtime/channels/channel-transports.d.ts +11 -17
  99. package/dist/runtime/channels/channel-transports.js +68 -47
  100. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  101. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  102. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  103. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  104. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  105. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  106. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  107. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  108. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  109. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  110. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  111. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  112. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  113. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  114. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  115. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  116. package/dist/runtime/diagnostics/flow-context.js +16 -2
  117. package/dist/runtime/diagnostics/index.d.ts +4 -2
  118. package/dist/runtime/diagnostics/index.js +14 -4
  119. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  120. package/dist/runtime/diagnostics/message-flow.js +10 -19
  121. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  122. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  123. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  124. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  125. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  126. package/dist/runtime/disposal.d.ts +5 -0
  127. package/dist/runtime/disposal.js +22 -0
  128. package/dist/runtime/execution/index.d.ts +12 -9
  129. package/dist/runtime/execution/index.js +58 -14
  130. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  131. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  132. package/dist/runtime/execution/state-lane.d.ts +8 -1
  133. package/dist/runtime/execution/state-lane.js +118 -3
  134. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  135. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  136. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  137. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  138. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  139. package/dist/runtime/foundation/operation-identity.js +9 -5
  140. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  141. package/dist/runtime/foundation/operation-registry.js +34 -44
  142. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  143. package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
  144. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  145. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  146. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  147. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  148. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  149. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  150. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  151. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  152. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  153. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  154. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  155. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  156. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  157. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  158. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  159. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  160. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  161. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  162. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  163. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  164. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  165. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  166. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  167. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  168. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  169. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  170. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  171. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  172. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  173. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  174. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  175. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  176. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  177. package/dist/runtime/framework-errors-internal.js +343 -122
  178. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  179. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  180. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  181. package/dist/runtime/host/actor-packet-relay.js +48 -91
  182. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  183. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  184. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  185. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  186. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  187. package/dist/runtime/host/application-job-queue.js +16 -33
  188. package/dist/runtime/host/bound-session-relay.js +1 -1
  189. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  190. package/dist/runtime/host/index.d.ts +14 -13
  191. package/dist/runtime/host/index.js +190 -157
  192. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  193. package/dist/runtime/host/instance-activation-authority.js +17 -45
  194. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  195. package/dist/runtime/host/location-runtime-owner.js +2 -2
  196. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  197. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  198. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  199. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  200. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  201. package/dist/runtime/host/remote-bound-session-relay.js +7 -20
  202. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  203. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  204. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  205. package/dist/runtime/host/runtime-shutdown.js +18 -21
  206. package/dist/runtime/host/service-relocation-control.js +6 -1
  207. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  208. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  209. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  210. package/dist/runtime/host/spot-address-transport.js +34 -136
  211. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  212. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  213. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  214. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  215. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  216. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  217. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  218. package/dist/runtime/locations/authority-key-codec.js +4 -3
  219. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  220. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  221. package/dist/runtime/locations/creation-operation-id.js +6 -4
  222. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  223. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  224. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  225. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  226. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  227. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  228. package/dist/runtime/locations/key-codec.js +3 -2
  229. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  230. package/dist/runtime/locations/lease-tracker.js +7 -11
  231. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  232. package/dist/runtime/locations/lifecycle.js +2 -31
  233. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  234. package/dist/runtime/locations/location-store-failure.js +7 -0
  235. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  236. package/dist/runtime/locations/location-store-pages.js +13 -0
  237. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  238. package/dist/runtime/locations/location-store-repository.js +303 -332
  239. package/dist/runtime/locations/relocation-blob.js +18 -5
  240. package/dist/runtime/locations/resolvers.d.ts +5 -5
  241. package/dist/runtime/locations/resolvers.js +37 -28
  242. package/dist/runtime/locations/runtime.d.ts +5 -4
  243. package/dist/runtime/locations/runtime.js +123 -92
  244. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  245. package/dist/runtime/locations/spot-location-claims.js +42 -1
  246. package/dist/runtime/messaging/payload-codec.js +26 -20
  247. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  248. package/dist/runtime/messaging/submission-result.js +48 -0
  249. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  250. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  251. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  252. package/dist/runtime/spots/index.d.ts +14 -20
  253. package/dist/runtime/spots/index.js +302 -176
  254. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  255. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  256. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  257. package/dist/runtime/spots/spot-activation-state.js +2 -2
  258. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  259. package/dist/runtime/spots/spot-activation.js +49 -32
  260. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  261. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  262. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  263. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  264. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  265. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  266. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  267. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  268. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  269. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  270. package/dist/runtime/spots/spot-context.d.ts +2 -2
  271. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  272. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  273. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  274. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  275. package/dist/runtime/spots/spot-manager-public.js +5 -4
  276. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  277. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  278. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  279. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  280. package/dist/runtime/spots/spot-outbound.js +9 -8
  281. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  282. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  283. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  284. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  285. package/dist/runtime/spots/spot-route-replies.js +3 -1
  286. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  287. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  288. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  289. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  290. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  291. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  292. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  293. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  294. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  295. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  296. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  297. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  298. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  299. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  300. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  301. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  302. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  303. package/dist/runtime/streams/bound-session-service.js +11 -1
  304. package/dist/runtime/streams/index.d.ts +14 -15
  305. package/dist/runtime/streams/index.js +20 -21
  306. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  307. package/dist/runtime/streams/managed-stream.js +17 -8
  308. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  309. package/dist/runtime/streams/protocol.d.ts +6 -33
  310. package/dist/runtime/streams/protocol.js +38 -110
  311. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  312. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  313. package/dist/runtime/streams/session-calls.d.ts +1 -1
  314. package/dist/runtime/streams/session-calls.js +5 -4
  315. package/dist/runtime/streams/session-context.d.ts +6 -6
  316. package/dist/runtime/streams/session-context.js +22 -4
  317. package/dist/runtime/streams/session-requests.js +2 -1
  318. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  319. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  320. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  321. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  322. package/dist/runtime/workers/index.d.ts +2 -2
  323. package/dist/runtime/workers/index.js +5 -4
  324. package/package.json +3 -3
  325. package/src/contracts/Common/CoreTypes.ts +7 -0
  326. package/src/contracts/Common/index.ts +1 -1
  327. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  328. package/src/contracts/Configuration/Registration.ts +92 -48
  329. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  330. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  331. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  332. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  333. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  334. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  335. package/src/contracts/Handlers/JsonContract.ts +14 -4
  336. package/src/contracts/Locations/Authority.ts +7 -3
  337. package/src/contracts/Locations/Options.ts +1 -1
  338. package/src/contracts/Locations/Stores.ts +14 -0
  339. package/src/contracts/Spots/Contracts.ts +1 -1
  340. package/src/internal.ts +14 -0
  341. package/src/nest-integration.ts +28 -10
  342. package/src/runtime/abort.ts +6 -5
  343. package/src/runtime/activation-admission.ts +2 -8
  344. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  345. package/src/runtime/actors/actor-client.ts +77 -204
  346. package/src/runtime/actors/actor-context.ts +39 -33
  347. package/src/runtime/actors/actor-handoff.ts +24 -22
  348. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  349. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  350. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  351. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  352. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  353. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  354. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  355. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  356. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  357. package/src/runtime/actors/bound-session-wire.ts +2 -8
  358. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  359. package/src/runtime/actors/index.ts +100 -79
  360. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  361. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  362. package/src/runtime/admission.ts +8 -1
  363. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  364. package/src/runtime/backend/contracts/index.ts +13 -29
  365. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  366. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  367. package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
  368. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  369. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  370. package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
  371. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  372. package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
  373. package/src/runtime/backend/raw-binding-port.ts +1 -1
  374. package/src/runtime/backend/runtime-values.ts +4 -1
  375. package/src/runtime/channels/channel-clients.ts +132 -85
  376. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  377. package/src/runtime/channels/channel-envelope.ts +58 -29
  378. package/src/runtime/channels/channel-outbound-operations.ts +10 -23
  379. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  380. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  381. package/src/runtime/channels/channel-runtime-manager.ts +6 -2
  382. package/src/runtime/channels/channel-socket-options.ts +8 -2
  383. package/src/runtime/channels/channel-socket-registry.ts +301 -192
  384. package/src/runtime/channels/channel-transports.ts +161 -112
  385. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  386. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  387. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  388. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  389. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  390. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  391. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  392. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  393. package/src/runtime/diagnostics/flow-context.ts +16 -2
  394. package/src/runtime/diagnostics/index.ts +27 -17
  395. package/src/runtime/diagnostics/message-flow.ts +15 -25
  396. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  397. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  398. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  399. package/src/runtime/disposal.ts +19 -0
  400. package/src/runtime/execution/index.ts +60 -20
  401. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  402. package/src/runtime/execution/state-lane.ts +142 -4
  403. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  404. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  405. package/src/runtime/foundation/operation-identity.ts +11 -5
  406. package/src/runtime/foundation/operation-registry.ts +33 -50
  407. package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
  408. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  409. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  410. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  411. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  412. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  413. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  414. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  415. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  416. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  417. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  418. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  419. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  420. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  421. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  422. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  423. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  424. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  425. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  426. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  427. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  428. package/src/runtime/framework-errors-internal.ts +380 -134
  429. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  430. package/src/runtime/host/actor-packet-relay.ts +57 -147
  431. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  432. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  433. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  434. package/src/runtime/host/application-job-queue.ts +28 -34
  435. package/src/runtime/host/bound-session-relay.ts +1 -2
  436. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  437. package/src/runtime/host/index.ts +327 -296
  438. package/src/runtime/host/instance-activation-authority.ts +89 -109
  439. package/src/runtime/host/location-runtime-owner.ts +4 -2
  440. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  441. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  442. package/src/runtime/host/remote-bound-session-relay.ts +8 -41
  443. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  444. package/src/runtime/host/runtime-shutdown.ts +17 -21
  445. package/src/runtime/host/service-relocation-control.ts +14 -1
  446. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  447. package/src/runtime/host/spot-address-transport.ts +73 -195
  448. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  449. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  450. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  451. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  452. package/src/runtime/locations/authority-key-codec.ts +7 -3
  453. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  454. package/src/runtime/locations/creation-operation-id.ts +6 -3
  455. package/src/runtime/locations/domain-store-contract.ts +12 -3
  456. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  457. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  458. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  459. package/src/runtime/locations/key-codec.ts +3 -2
  460. package/src/runtime/locations/lease-tracker.ts +8 -14
  461. package/src/runtime/locations/lifecycle.ts +13 -43
  462. package/src/runtime/locations/location-store-failure.ts +4 -0
  463. package/src/runtime/locations/location-store-pages.ts +18 -0
  464. package/src/runtime/locations/location-store-repository.ts +450 -478
  465. package/src/runtime/locations/relocation-blob.ts +17 -6
  466. package/src/runtime/locations/resolvers.ts +75 -49
  467. package/src/runtime/locations/runtime.ts +220 -110
  468. package/src/runtime/locations/spot-location-claims.ts +58 -1
  469. package/src/runtime/messaging/payload-codec.ts +35 -24
  470. package/src/runtime/messaging/submission-result.ts +57 -1
  471. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  472. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  473. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  474. package/src/runtime/spots/index.ts +433 -229
  475. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  476. package/src/runtime/spots/spot-activation-state.ts +2 -2
  477. package/src/runtime/spots/spot-activation.ts +67 -37
  478. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  479. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  480. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  481. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  482. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  483. package/src/runtime/spots/spot-context.ts +3 -3
  484. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  485. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  486. package/src/runtime/spots/spot-manager-public.ts +21 -17
  487. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  488. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  489. package/src/runtime/spots/spot-outbound.ts +45 -23
  490. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  491. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  492. package/src/runtime/spots/spot-route-replies.ts +6 -4
  493. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  494. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  495. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  496. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  497. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  498. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  499. package/src/runtime/spots/spot-timer.ts +3 -2
  500. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  501. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  502. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  503. package/src/runtime/streams/bound-session-service.ts +21 -1
  504. package/src/runtime/streams/index.ts +76 -64
  505. package/src/runtime/streams/managed-stream.ts +29 -10
  506. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  507. package/src/runtime/streams/protocol.ts +34 -88
  508. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  509. package/src/runtime/streams/session-calls.ts +6 -5
  510. package/src/runtime/streams/session-context.ts +54 -10
  511. package/src/runtime/streams/session-requests.ts +2 -1
  512. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  513. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  514. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  515. package/src/runtime/workers/index.ts +13 -12
  516. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  517. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  518. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  519. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  520. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  521. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,86 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkActorRuntimeState = void 0;
4
- exports.mergeRemoteBoundSessionTarget = mergeRemoteBoundSessionTarget;
5
- exports.preferredRemoteBoundSessionTarget = preferredRemoteBoundSessionTarget;
6
4
  exports.toFrameworkRoutingId = toFrameworkRoutingId;
7
5
  exports.toFrameworkActorRef = toFrameworkActorRef;
6
+ const state_lane_1 = require("../execution/state-lane");
8
7
  const framework_errors_internal_1 = require("../framework-errors-internal");
9
8
  const routing_id_1 = require("../routing-id");
10
9
  const actor_native_lookup_1 = require("./actor-native-lookup");
11
10
  /**
12
- * Applies a lightweight Session binding refresh without discarding the
13
- * relocation fence that was staged for the same route. Core emits the bind
14
- * refresh with routing coordinates only; the relocation owner retains the
15
- * service-wire relocation identity until command 44 releases the owner seal.
11
+ * Session–Actor binding §5·§6: the Actor owner keeps one current binding. The
12
+ * stored value is the binding identity and the route to its Session owner; a
13
+ * relocation fence belongs to the relocation operation that created it.
16
14
  */
17
- function mergeRemoteBoundSessionTarget(target, fallback) {
18
- if (fallback === undefined ||
19
- fallback.routerChannelId !== target.routerChannelId ||
20
- !(0, routing_id_1.routingIdsEqual)(fallback.targetNodeRid, target.targetNodeRid) ||
21
- (!(0, routing_id_1.routingIdsEqual)(fallback.spotId, target.spotId) &&
22
- !samePhysicalRemoteSession(fallback, target)) ||
23
- isSuccessorSessionBinding(fallback, target)) {
24
- return target;
25
- }
26
- const merged = {
27
- ...fallback,
28
- ...target,
29
- sessionNodeRid: target.sessionNodeRid ?? fallback.sessionNodeRid,
30
- sessionRid: target.sessionRid ?? fallback.sessionRid,
31
- sessionOwnerNodeGeneration: target.sessionOwnerNodeGeneration ?? fallback.sessionOwnerNodeGeneration,
32
- sessionOwnerId: target.sessionOwnerId ?? fallback.sessionOwnerId,
33
- sessionOwnerLeaseGeneration: target.sessionOwnerLeaseGeneration ?? fallback.sessionOwnerLeaseGeneration,
34
- bindingGeneration: target.bindingGeneration ?? fallback.bindingGeneration,
35
- previousAuthorityOwnerGeneration: target.previousAuthorityOwnerGeneration ?? fallback.previousAuthorityOwnerGeneration,
36
- previousOwnerLeaseGeneration: target.previousOwnerLeaseGeneration ?? fallback.previousOwnerLeaseGeneration,
37
- relocationSealId: target.relocationSealId ?? fallback.relocationSealId,
38
- serviceWireRelocation: target.serviceWireRelocation ?? fallback.serviceWireRelocation
15
+ function boundSessionIdentity(target) {
16
+ return {
17
+ routerChannelId: target.routerChannelId,
18
+ targetNodeRid: target.targetNodeRid,
19
+ spotId: target.spotId,
20
+ sessionNodeRid: target.sessionNodeRid,
21
+ sessionRid: target.sessionRid,
22
+ sessionOwnerNodeGeneration: target.sessionOwnerNodeGeneration,
23
+ sessionOwnerId: target.sessionOwnerId,
24
+ sessionOwnerLeaseGeneration: target.sessionOwnerLeaseGeneration,
25
+ bindingGeneration: target.bindingGeneration
39
26
  };
40
- return merged;
41
- }
42
- /**
43
- * Spec 48 §125: reconnection creates a new Session; the previous Session's
44
- * binding — and its staged relocation fence — is never inherited by a
45
- * successor. A Core bind refresh only omits routing coordinates it did not
46
- * recompute, so an explicit Session identity on both sides that disagrees
47
- * marks the refresh as belonging to a different Session binding, not a
48
- * same-Session coordinate/generation-only refresh (a bindingGeneration bump
49
- * with the same sessionNodeRid/sessionRid is a legitimate same-Session
50
- * refresh and must keep the fence — see the transfer-target generation test
51
- * below).
52
- *
53
- * NOTE: this identity check is a no-op on the path exercised by
54
- * `remoteBoundSessionTargetForSource` (mesh-router-resolver.ts), which never
55
- * populates sessionNodeRid/sessionRid on the refresh it emits. Confirmed via
56
- * TTT reproduction (2026-08-22, run-dir preserved) that a rejected successor
57
- * bound-session send still occurs through that path after this change; see
58
- * session report for the STOP writeup.
59
- */
60
- function isSuccessorSessionBinding(fallback, target) {
61
- return ((fallback.sessionNodeRid !== undefined &&
62
- target.sessionNodeRid !== undefined &&
63
- !(0, routing_id_1.routingIdsEqual)(fallback.sessionNodeRid, target.sessionNodeRid)) ||
64
- (fallback.sessionRid !== undefined &&
65
- target.sessionRid !== undefined &&
66
- !(0, routing_id_1.routingIdsEqual)(fallback.sessionRid, target.sessionRid)) ||
67
- (fallback.sessionOwnerNodeGeneration !== undefined &&
68
- target.sessionOwnerNodeGeneration !== undefined &&
69
- fallback.sessionOwnerNodeGeneration !== target.sessionOwnerNodeGeneration) ||
70
- (fallback.sessionOwnerId !== undefined &&
71
- target.sessionOwnerId !== undefined &&
72
- fallback.sessionOwnerId !== target.sessionOwnerId) ||
73
- (fallback.sessionOwnerLeaseGeneration !== undefined &&
74
- target.sessionOwnerLeaseGeneration !== undefined &&
75
- fallback.sessionOwnerLeaseGeneration !== target.sessionOwnerLeaseGeneration));
76
- }
77
- function samePhysicalRemoteSession(left, right) {
78
- return (left.sessionNodeRid !== undefined &&
79
- right.sessionNodeRid !== undefined &&
80
- left.sessionRid !== undefined &&
81
- right.sessionRid !== undefined &&
82
- (0, routing_id_1.routingIdsEqual)(left.sessionNodeRid, right.sessionNodeRid) &&
83
- (0, routing_id_1.routingIdsEqual)(left.sessionRid, right.sessionRid));
84
27
  }
85
28
  function sameRemoteSessionOwnerLifecycle(left, right) {
86
29
  return (left.sessionNodeRid !== undefined &&
@@ -108,20 +51,6 @@ function sameRemoteSessionBinding(left, right) {
108
51
  right.bindingGeneration !== undefined &&
109
52
  left.bindingGeneration === right.bindingGeneration);
110
53
  }
111
- /**
112
- * Selects the route that still carries the relocation fence when a Core
113
- * binding refresh and a formal transfer target temporarily coexist.
114
- */
115
- function preferredRemoteBoundSessionTarget(remote, transfer) {
116
- if (remote === undefined)
117
- return transfer;
118
- if (hasRelocationFence(remote) || transfer === undefined)
119
- return remote;
120
- return transfer;
121
- }
122
- function hasRelocationFence(target) {
123
- return target.relocationSealId !== undefined || target.serviceWireRelocation !== undefined;
124
- }
125
54
  class ZLinkActorRuntimeState {
126
55
  actorId;
127
56
  creationTask;
@@ -135,10 +64,8 @@ class ZLinkActorRuntimeState {
135
64
  spotGenerationValue;
136
65
  spotMembershipEpochValue = 0n;
137
66
  nativeActorRefValue;
138
- boundSessionBindingGenerationValue = 0n;
139
67
  entryNodeRidValue;
140
- remoteBoundSessionTargetValue;
141
- boundSessionTransferTargetValue;
68
+ boundSessionValue;
142
69
  remoteActorPacketTargetValue;
143
70
  createRequestPayloadValue;
144
71
  ownsLocationValue = false;
@@ -149,6 +76,9 @@ class ZLinkActorRuntimeState {
149
76
  destroyTask;
150
77
  constructor(actorId) {
151
78
  this.actorId = actorId;
79
+ if ((0, state_lane_1.isStructuralGuardEnabled)()) {
80
+ guardBoundSessionTargetWrites(this);
81
+ }
152
82
  }
153
83
  get actorType() {
154
84
  return this.actorTypeValue;
@@ -180,16 +110,28 @@ class ZLinkActorRuntimeState {
180
110
  return this.nativeActorRefValue;
181
111
  }
182
112
  get boundSessionBindingGeneration() {
183
- return this.boundSessionBindingGenerationValue;
113
+ return this.boundSessionValue?.bindingGeneration ?? 0n;
184
114
  }
185
115
  get entryNodeRid() {
186
116
  return this.entryNodeRidValue;
187
117
  }
188
- get remoteBoundSessionTarget() {
189
- return this.remoteBoundSessionTargetValue;
118
+ /** The one current Session binding of this Actor (Session–Actor binding §6). */
119
+ get boundSession() {
120
+ return this.boundSessionValue;
190
121
  }
191
- get boundSessionTransferTarget() {
192
- return this.boundSessionTransferTargetValue;
122
+ /**
123
+ * The current binding when its Session owner is another node. A same-node
124
+ * binding is served by the local Session registry, so remote routing sees
125
+ * no target for it.
126
+ */
127
+ get remoteBoundSessionTarget() {
128
+ const binding = this.boundSessionValue;
129
+ const actorNodeRid = this.nativeActorRefValue?.nodeRid;
130
+ return binding?.sessionNodeRid !== undefined &&
131
+ actorNodeRid !== undefined &&
132
+ (0, routing_id_1.routingIdsEqual)(binding.sessionNodeRid, toFrameworkRoutingId(actorNodeRid))
133
+ ? undefined
134
+ : binding;
193
135
  }
194
136
  get remoteActorPacketTarget() {
195
137
  return this.remoteActorPacketTargetValue;
@@ -344,23 +286,6 @@ class ZLinkActorRuntimeState {
344
286
  this.nativeActorRefValue = actorRef;
345
287
  this.entryNodeRidValue ??= toFrameworkRoutingId(actorRef.nodeRid);
346
288
  }
347
- setBoundSessionBindingGeneration(generation) {
348
- if (generation > this.boundSessionBindingGenerationValue) {
349
- this.boundSessionBindingGenerationValue = generation;
350
- if (this.remoteBoundSessionTargetValue !== undefined) {
351
- this.remoteBoundSessionTargetValue = {
352
- ...this.remoteBoundSessionTargetValue,
353
- bindingGeneration: generation
354
- };
355
- }
356
- if (this.boundSessionTransferTargetValue !== undefined) {
357
- this.boundSessionTransferTargetValue = {
358
- ...this.boundSessionTransferTargetValue,
359
- bindingGeneration: generation
360
- };
361
- }
362
- }
363
- }
364
289
  /** @internal Installs one authority-confirmed binding inside its Actor owner turn. */
365
290
  installBoundSessionBinding(target) {
366
291
  if (target.sessionNodeRid === undefined ||
@@ -369,28 +294,22 @@ class ZLinkActorRuntimeState {
369
294
  target.sessionOwnerId === undefined ||
370
295
  target.sessionOwnerLeaseGeneration === undefined ||
371
296
  target.bindingGeneration === undefined) {
372
- throw new TypeError('An installed bound Session target requires its complete binding identity.');
297
+ throw new TypeError('An installed bound Session target requires its binding identity.');
373
298
  }
374
- const current = preferredRemoteBoundSessionTarget(this.remoteBoundSessionTargetValue, this.boundSessionTransferTargetValue);
299
+ const current = this.boundSessionValue;
375
300
  if (current !== undefined && sameRemoteSessionOwnerLifecycle(current, target)) {
376
- // A duplicate command for the exact physical Session is idempotent. A
377
- // different Session in the same owner lifecycle must advance that
378
- // lifecycle's generation; a late equal/lower generation is stale.
379
- if (sameRemoteSessionOwner(current, target))
380
- return true;
381
- if (current.bindingGeneration !== undefined &&
382
- current.bindingGeneration >= target.bindingGeneration)
383
- return false;
301
+ // A duplicate or late older command for the exact physical Session
302
+ // leaves the current binding; a newer generation of the same Session
303
+ // replaces it. A different Session in the same owner lifecycle must
304
+ // advance that lifecycle's generation; a late equal/lower one is stale.
305
+ const advances = current.bindingGeneration === undefined ||
306
+ target.bindingGeneration > current.bindingGeneration;
307
+ if (!advances)
308
+ return sameRemoteSessionOwner(current, target);
384
309
  }
385
- const installed = mergeRemoteBoundSessionTarget(target, current);
386
310
  // Binding generations are scoped to a Session-owner lifecycle. A restarted
387
311
  // owner can legitimately reset its counter below the predecessor value.
388
- this.boundSessionBindingGenerationValue = target.bindingGeneration;
389
- this.remoteBoundSessionTargetValue = undefined;
390
- this.boundSessionTransferTargetValue = {
391
- ...installed,
392
- bindingGeneration: target.bindingGeneration
393
- };
312
+ this.boundSessionValue = boundSessionIdentity(target);
394
313
  return true;
395
314
  }
396
315
  /** @internal Removes only the exact authority-confirmed Session incarnation. */
@@ -401,51 +320,17 @@ class ZLinkActorRuntimeState {
401
320
  target.sessionOwnerId === undefined ||
402
321
  target.sessionOwnerLeaseGeneration === undefined ||
403
322
  target.bindingGeneration === undefined) {
404
- throw new TypeError('A retired bound Session target requires its complete binding identity.');
405
- }
406
- let retired = false;
407
- if (this.remoteBoundSessionTargetValue !== undefined &&
408
- sameRemoteSessionBinding(this.remoteBoundSessionTargetValue, target)) {
409
- this.remoteBoundSessionTargetValue = undefined;
410
- retired = true;
411
- }
412
- if (this.boundSessionTransferTargetValue !== undefined &&
413
- sameRemoteSessionBinding(this.boundSessionTransferTargetValue, target)) {
414
- this.boundSessionTransferTargetValue = undefined;
415
- retired = true;
416
- }
417
- if (retired) {
418
- this.boundSessionBindingGenerationValue =
419
- preferredRemoteBoundSessionTarget(this.remoteBoundSessionTargetValue, this.boundSessionTransferTargetValue)?.bindingGeneration ?? 0n;
323
+ throw new TypeError('A retired bound Session target requires its binding identity.');
420
324
  }
421
- return retired;
325
+ const current = this.boundSessionValue;
326
+ if (current === undefined || !sameRemoteSessionBinding(current, target))
327
+ return false;
328
+ this.boundSessionValue = undefined;
329
+ return true;
422
330
  }
423
331
  setEntryNodeRid(entryNodeRid) {
424
332
  this.entryNodeRidValue = entryNodeRid;
425
333
  }
426
- setRemoteBoundSessionTarget(target) {
427
- const current = preferredRemoteBoundSessionTarget(this.remoteBoundSessionTargetValue, this.boundSessionTransferTargetValue);
428
- const merged = target === undefined ? undefined : mergeRemoteBoundSessionTarget(target, current);
429
- const bindingGeneration = maxBindingGeneration(merged?.bindingGeneration, this.remoteBoundSessionTargetValue?.bindingGeneration, this.boundSessionBindingGenerationValue);
430
- this.remoteBoundSessionTargetValue =
431
- merged === undefined
432
- ? undefined
433
- : bindingGeneration === undefined
434
- ? merged
435
- : { ...merged, bindingGeneration };
436
- }
437
- setBoundSessionTransferTarget(target) {
438
- const merged = target === undefined
439
- ? undefined
440
- : mergeRemoteBoundSessionTarget(target, this.boundSessionTransferTargetValue);
441
- const bindingGeneration = maxBindingGeneration(merged?.bindingGeneration, this.boundSessionTransferTargetValue?.bindingGeneration, this.boundSessionBindingGenerationValue);
442
- this.boundSessionTransferTargetValue =
443
- merged === undefined
444
- ? undefined
445
- : bindingGeneration === undefined
446
- ? merged
447
- : { ...merged, bindingGeneration };
448
- }
449
334
  setRemoteActorPacketTarget(target) {
450
335
  this.remoteActorPacketTargetValue = target;
451
336
  }
@@ -477,10 +362,8 @@ class ZLinkActorRuntimeState {
477
362
  this.spotGenerationValue = undefined;
478
363
  this.spotMembershipEpochValue = 0n;
479
364
  this.nativeActorRefValue = undefined;
480
- this.boundSessionBindingGenerationValue = 0n;
481
365
  this.entryNodeRidValue = undefined;
482
- this.remoteBoundSessionTargetValue = undefined;
483
- this.boundSessionTransferTargetValue = undefined;
366
+ this.boundSessionValue = undefined;
484
367
  this.remoteActorPacketTargetValue = undefined;
485
368
  this.createRequestPayloadValue = undefined;
486
369
  this.ownsLocationValue = false;
@@ -493,10 +376,6 @@ class ZLinkActorRuntimeState {
493
376
  prepareForRemoteReentry() {
494
377
  if (this.remoteActorPacketTargetValue === undefined)
495
378
  return;
496
- const relocationTransferTarget = this.boundSessionTransferTargetValue !== undefined &&
497
- hasRelocationFence(this.boundSessionTransferTargetValue)
498
- ? this.boundSessionTransferTargetValue
499
- : undefined;
500
379
  this.creationTask = undefined;
501
380
  this.configured = false;
502
381
  this.context = undefined;
@@ -505,9 +384,8 @@ class ZLinkActorRuntimeState {
505
384
  this.spotValue = undefined;
506
385
  this.spotIdValue = undefined;
507
386
  this.nativeActorRefValue = undefined;
508
- this.boundSessionBindingGenerationValue = relocationTransferTarget?.bindingGeneration ?? 0n;
509
- this.remoteBoundSessionTargetValue = undefined;
510
- this.boundSessionTransferTargetValue = relocationTransferTarget;
387
+ // The arriving relocation installs the binding it carries.
388
+ this.boundSessionValue = undefined;
511
389
  this.remoteActorPacketTargetValue = undefined;
512
390
  this.createRequestPayloadValue = undefined;
513
391
  this.ownsLocationValue = false;
@@ -519,15 +397,20 @@ class ZLinkActorRuntimeState {
519
397
  }
520
398
  }
521
399
  exports.ZLinkActorRuntimeState = ZLinkActorRuntimeState;
522
- function maxBindingGeneration(...values) {
523
- let maximum;
524
- for (const value of values) {
525
- if (value === undefined || value <= 0n)
526
- continue;
527
- if (maximum === undefined || value > maximum)
528
- maximum = value;
529
- }
530
- return maximum;
400
+ function guardBoundSessionTargetWrites(actor) {
401
+ let current;
402
+ Object.defineProperty(actor, 'boundSessionValue', {
403
+ configurable: true,
404
+ enumerable: true,
405
+ get: () => current,
406
+ set: (target) => {
407
+ if (target !== undefined &&
408
+ new Error().stack?.includes('installBoundSessionBinding') !== true) {
409
+ throw new Error('Bound Session target must be installed by installBoundSessionBinding.');
410
+ }
411
+ current = target;
412
+ }
413
+ });
531
414
  }
532
415
  function toFrameworkRoutingId(routingId) {
533
416
  // Runtime routing identities are opaque binary values. Preserve binding
@@ -10,6 +10,7 @@ exports.decodeRemoteBoundSessionSendPayload = decodeRemoteBoundSessionSendPayloa
10
10
  exports.decodeRemoteBoundSessionResponsePayload = decodeRemoteBoundSessionResponsePayload;
11
11
  exports.decodeRemoteBoundSessionErrorPayload = decodeRemoteBoundSessionErrorPayload;
12
12
  exports.streamMetadataMap = streamMetadataMap;
13
+ const flow_context_1 = require("../diagnostics/flow-context");
13
14
  exports.ZLINK_REMOTE_BOUND_SESSION_FENCE_NACK_CODE = 'zlink.bound_session.fence';
14
15
  /**
15
16
  * Permanent command 42/44/45 fence rejection from the session owner. The
@@ -61,14 +62,8 @@ function encodeRemoteBoundSessionSendPayload(input) {
61
62
  flowOrigin: encodeWireFlowOrigin(input.flowOrigin)
62
63
  };
63
64
  }
64
- const WIRE_FLOW_ORIGIN = {
65
- Inbound: 'inbound',
66
- Timer: 'timer',
67
- Application: 'application',
68
- Lifecycle: 'lifecycle'
69
- };
70
65
  function encodeWireFlowOrigin(origin) {
71
- return origin === undefined ? undefined : WIRE_FLOW_ORIGIN[origin];
66
+ return origin === undefined ? undefined : flow_context_1.FLOW_ORIGIN_VALUES[origin];
72
67
  }
73
68
  function encodeRemoteBoundSessionResponsePayload(input) {
74
69
  return {
@@ -1,14 +1,19 @@
1
- import type { ActorRef, ZLinkActorJoinOperationId } from '../../contracts';
1
+ import type { ActorRef, ZLinkActorJoinOperationId, ZLinkFrameworkErrorKind } from '../../contracts';
2
2
  /**
3
- * The Accepted completion of a deferred cross-node Join. Spot Actor membership
4
- * sections 4-5: the public OperationId, the optional reply and the delivery
3
+ * The Accepted or Failed result of a deferred cross-node Join. Spot Actor
4
+ * membership sections 4-5: the public OperationId, optional reply and delivery
5
5
  * state live only while the current source and target processes run. The
6
- * completion is never written to a Store and never replayed after a restart.
6
+ * completion is never written to a Store or replayed after a restart.
7
7
  */
8
- export interface ZLinkDeferredJoinCompletion {
8
+ export type ZLinkDeferredJoinCompletion = {
9
9
  readonly operationId: ZLinkActorJoinOperationId;
10
10
  readonly actor: ActorRef;
11
11
  readonly rawReply: Buffer;
12
12
  readonly replyContentType?: string;
13
- }
13
+ } & ({
14
+ readonly status: 'accepted';
15
+ } | {
16
+ readonly status: 'failed';
17
+ readonly kind: ZLinkFrameworkErrorKind;
18
+ });
14
19
  export declare function createDeferredJoinCompletion(actorId: string, operationId: ZLinkActorJoinOperationId, actor: ActorRef, rawReply: Uint8Array, replyContentType?: string): ZLinkDeferredJoinCompletion;
@@ -12,6 +12,7 @@ function createDeferredJoinCompletion(actorId, operationId, actor, rawReply, rep
12
12
  throw new TypeError('Deferred Join reply content type must be non-empty.');
13
13
  }
14
14
  return {
15
+ status: 'accepted',
15
16
  operationId,
16
17
  actor,
17
18
  rawReply: Buffer.from(rawReply),
@@ -1,20 +1,19 @@
1
- import type { ActorRef, RoutingId, SpotRef, ZLinkActor, ZLinkActorCreateCall, ZLinkActorGetOrCreateCall, ZLinkActorManager } from '../../contracts';
2
- import { ZLinkMessage } from '../../contracts';
1
+ import { type ActorRef, type RoutingId, type SpotRef, type ZLinkActor, type ZLinkActorCreateCall, type ZLinkActorGetOrCreateCall, type ZLinkActorManager, ZLinkMessage } from '../../contracts';
3
2
  import type { ZLinkBackendActorRef, ZLinkBackendSpotNode } from '../backend/contracts';
3
+ import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
4
+ import { ZLinkActorRuntimeState } from './actor-runtime-state';
4
5
  export { DefaultZLinkActorClient, forwardEncodedActorPacket, type ZLinkActorClientOptions } from './actor-client';
5
6
  export { DefaultZLinkActorContext, ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME } from './actor-context';
6
7
  export { ZLinkActorSerialExecutor } from './actor-mailbox';
7
8
  export { DEFAULT_MESSAGE_FOLLOW_DURATION_MS, ZLinkActorHandoffCoordinator, decodeHandoffPacket, type ZLinkActorHandoffPacket, type ZLinkActorHandoffDispatch, type ZLinkActorHandoffPrefixAdmission, type ZLinkActorHandoffPrefixQueue, type ZLinkActorHandoffPrefixRecord, type ZLinkActorHandoffPreparedReplayAdmission, type ZLinkActorHandoffReplayAdmission, type ZLinkActorHandoffReplayPreparation, type ZLinkActorHandoffResult } from './actor-handoff';
8
9
  export { actorMessageFollowContext, attachActorMessageFollowContext, decodeActorMessageFollowContext, type ZLinkActorMessageFollowContext, type ZLinkActorMessageFollowOwnerFence } from './actor-message-follow-context';
9
- export { ZLinkActorRuntimeState, mergeRemoteBoundSessionTarget, preferredRemoteBoundSessionTarget, toFrameworkActorRef, toFrameworkRoutingId, type ZLinkActorCreationOperation, type ZLinkRemoteActorPacketTarget, type ZLinkRemoteBoundSessionTarget } from './actor-runtime-state';
10
+ export { ZLinkActorRuntimeState, toFrameworkActorRef, toFrameworkRoutingId, type ZLinkActorCreationOperation, type ZLinkRemoteActorPacketTarget, type ZLinkRemoteBoundSessionTarget } from './actor-runtime-state';
10
11
  export { createDeferredJoinCompletion, type ZLinkDeferredJoinCompletion } from './deferred-join-completion';
11
12
  export { decodeActorAuthorityIdentity, decodeRelocatingActorAuthorityIdentity, encodeActorAuthorityIdentity, isActorAuthorityPayload, rewriteActorAuthorityRoute, rewriteActorAuthorityOwner, publishInitialActorAuthority, type ZLinkActorAuthorityIdentity } from './actor-authority-publication';
12
- import { ZLinkActorRuntimeState } from './actor-runtime-state';
13
13
  export { ZLinkActorPacketKind, ZLinkSpotActorDispatcher, ZLinkSpotActorHandlerRegistryRuntime, type ZLinkActorPacketDescriptor, type ZLinkSpotActorDispatcherOptions } from './spot-actor-dispatch';
14
14
  export { ZLinkActorNativeJoinCoordinator, type ZLinkActorNativeJoinCoordinatorOptions } from './actor-remote-joiner';
15
15
  export type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
16
16
  export type { ZLinkActorBoundSessionFactory, ZLinkActorJoinCoordinator, ZLinkActorManagerOptions } from './actor-runtime-contracts';
17
- import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
18
17
  export { ZLinkActorTransferRegistry, type ZLinkActorTransferPayloadState } from './actor-transfer-registry';
19
18
  export { ZLINK_REMOTE_ACTOR_JOIN_PACKET, ZLINK_REMOTE_ACTOR_SOURCE_LEAVE_TERMINAL, decodeRemoteActorSourceLeaveTerminal } from './actor-remote-wire';
20
19
  export { ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET, ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET } from './actor-packet-relay-wire';
@@ -22,12 +21,13 @@ export { ZLINK_REMOTE_BOUND_SESSION_ERROR_PACKET, ZLINK_REMOTE_BOUND_SESSION_FEN
22
21
  export { actorJoinIdentity, createActorJoinRequest, createActorMembership, ZLINK_ACTOR_LIFECYCLE_SNAPSHOT, type ZLinkActorLifecycleSnapshotSource } from './actor-lifecycle-snapshot';
23
22
  export declare class DefaultZLinkActorManager implements ZLinkActorManager {
24
23
  private readonly options;
24
+ private readonly detachedTaskRunner;
25
25
  private readonly states;
26
26
  private readonly actorMeshNames;
27
27
  private readonly relocationStaged;
28
28
  private readonly creation;
29
29
  private readonly transferredActorRollback;
30
- constructor(options: ZLinkActorManagerOptions);
30
+ constructor(options: ZLinkActorManagerOptions, detachedTaskRunner: import('../spots/spot-actor-join-dispatch').ZLinkDetachedTaskRunner);
31
31
  create(actorId: string, actorType: string): ZLinkActorCreateCall;
32
32
  find(actorId: string, signal?: AbortSignal): Promise<ActorRef | undefined>;
33
33
  getOrCreate(actorId: string, actorType: string): ZLinkActorGetOrCreateCall;
@@ -44,7 +44,7 @@ export declare class DefaultZLinkActorManager implements ZLinkActorManager {
44
44
  private rememberActorMeshFromType;
45
45
  findActor(actorId: string, signal?: AbortSignal): Promise<ZLinkActor | undefined>;
46
46
  requireRelocationActorFactory(actorType: string): void;
47
- prepareRelocationActor(actorId: string, actorType: string, objectGeneration: bigint, authorityOwnerGeneration: bigint, spotId: RoutingId, spotGeneration: bigint, membershipEpoch: bigint, signal?: AbortSignal, transfer?: {
47
+ prepareRelocationActor(actorId: string, actorType: string, objectGeneration: bigint, authorityOwnerGeneration: bigint, spotId: RoutingId | undefined, spotGeneration: bigint, membershipEpoch: bigint, signal?: AbortSignal, transfer?: {
48
48
  readonly adapterKey: string;
49
49
  readonly state: ZLinkMessage;
50
50
  }): Promise<ZLinkActor>;
@@ -53,6 +53,8 @@ export declare class DefaultZLinkActorManager implements ZLinkActorManager {
53
53
  completeRelocationSource(actorId: string, sourceActorRef?: ZLinkBackendActorRef): Promise<void>;
54
54
  private removeRelocationActor;
55
55
  completeCoreRelocationSource(actorId: string): Promise<void>;
56
+ private finalizeActorState;
57
+ private finalizeDestroyedActor;
56
58
  getOrCreateActor(actorId: string, actorType: string, signal?: AbortSignal): Promise<ZLinkActor>;
57
59
  getOrCreateWithNativeRef(actorId: string, actorType: string, actorRef: ZLinkBackendActorRef, createRequest?: unknown, signal?: AbortSignal): Promise<ZLinkActor>;
58
60
  getOrCreateActorResult(actorId: string, actorType: string, createRequest?: unknown, signal?: AbortSignal): Promise<ZLinkActorLocalCreateResult>;