@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,45 +1,51 @@
1
1
  import {
2
- ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException
4
- } from '../framework-errors-internal';
5
- import type {
6
- RoutingId,
7
- SpotId,
8
- ZLinkActor,
9
- ZLinkActorContext,
10
- ZLinkActorJoinCompletion,
11
- ZLinkActorJoinEntrySpotCall,
12
- ZLinkActorJoinSpotCall,
13
- ZLinkBoundSession,
14
- ZLinkBoundSessionSendCall
2
+ type RoutingId,
3
+ type SpotId,
4
+ type ZLinkActor,
5
+ type ZLinkActorContext,
6
+ type ZLinkActorJoinCompletion,
7
+ type ZLinkActorJoinEntrySpotCall,
8
+ type ZLinkActorJoinSpotCall,
9
+ type ZLinkBoundSession,
10
+ type ZLinkBoundSessionSendCall,
11
+ ZLinkEncodedPayload,
12
+ ZLinkFrameworkException,
13
+ ZLinkMessage,
14
+ type ZLinkMessageSerializer
15
15
  } from '../../contracts';
16
- import { ZLinkEncodedPayload, ZLinkFrameworkException, ZLinkMessage } from '../../contracts';
16
+
17
17
  import type { Message } from '../../contracts/Common/Message';
18
- import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
19
- import { type ZLinkMessageSerializer } from '../../contracts';
20
- import { ZLinkConfigurationException } from '../configuration';
21
18
  import {
22
- ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome,
23
19
  ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
24
20
  ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
25
21
  ZLinkDispatchErrorSurface,
26
- ZLinkDispatchMessageKind
22
+ ZLinkDispatchMessageKind,
23
+ ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome
27
24
  } from '../../contracts/Dispatch/ZLinkDispatchOptions';
25
+ import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
26
+ import { ZLinkConfigurationException } from '../configuration';
27
+ import { dispatchErrorDetails } from '../diagnostics/dispatch-error-details';
28
+ import { captureZLinkSpotSerialTurn } from '../execution';
29
+ import { createRandomOperationIdentity } from '../foundation/operation-identity';
30
+ import {
31
+ ZLinkFrameworkInternalErrorKind,
32
+ createInternalFrameworkException
33
+ } from '../framework-errors-internal';
28
34
  import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
29
- import { ZLinkActorRuntimeState, toFrameworkActorRef } from './actor-runtime-state';
30
- import type {
31
- ZLinkActorBoundSessionFactory,
32
- ZLinkActorJoinCoordinator
33
- } from './actor-runtime-contracts';
34
- import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
35
+ import { deferActorJoin } from './actor-join-deferred-scope';
35
36
  import {
36
37
  ZLINK_ACTOR_LIFECYCLE_SNAPSHOT,
37
38
  type ZLinkActorLifecycleSnapshotSource
38
39
  } from './actor-lifecycle-snapshot';
39
- import { createRandomOperationIdentity } from '../foundation/operation-identity';
40
- import { deferActorJoin } from './actor-join-deferred-scope';
41
- import { captureZLinkSpotSerialTurn } from '../execution';
42
- import { dispatchErrorDetails } from '../diagnostics/dispatch-error-details';
40
+ import type {
41
+ ZLinkActorBoundSessionFactory,
42
+ ZLinkActorJoinCoordinator,
43
+ ZLinkActorManagerOptions
44
+ } from './actor-runtime-contracts';
45
+ import { ZLinkActorRuntimeState, toFrameworkActorRef } from './actor-runtime-state';
46
+ const DEFAULT_ACTOR_JOIN_TIMEOUT_MS = 5_000;
47
+
48
+ const MAX_ACTOR_JOIN_TIMEOUT_MS = 2_147_483_647;
43
49
 
44
50
  export const ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME = Symbol('zlink.actor.join-entry-spot-runtime');
45
51
 
@@ -166,7 +172,7 @@ export class DefaultZLinkActorContext implements ZLinkActorContext {
166
172
  }
167
173
 
168
174
  class DefaultZLinkActorJoinSpotCall implements ZLinkActorJoinSpotCall {
169
- private timeoutMs = 5_000;
175
+ private timeoutMs: number = DEFAULT_ACTOR_JOIN_TIMEOUT_MS;
170
176
  private deferred = false;
171
177
  private readonly turn = captureZLinkSpotSerialTurn();
172
178
 
@@ -305,7 +311,7 @@ class DefaultZLinkActorJoinSpotCall implements ZLinkActorJoinSpotCall {
305
311
  }
306
312
 
307
313
  class DefaultZLinkActorJoinEntrySpotCall implements ZLinkActorJoinEntrySpotCall {
308
- private timeoutMs = 5_000;
314
+ private timeoutMs: number = DEFAULT_ACTOR_JOIN_TIMEOUT_MS;
309
315
  private deferred = false;
310
316
  private readonly turn = captureZLinkSpotSerialTurn();
311
317
 
@@ -480,9 +486,9 @@ function encodeJoinRequest(
480
486
 
481
487
  function validateJoinTimeout(timeoutMs: number): number {
482
488
  const rounded = Math.ceil(timeoutMs);
483
- if (!Number.isFinite(timeoutMs) || rounded < 1 || rounded > 2_147_483_647) {
489
+ if (!Number.isFinite(timeoutMs) || rounded < 1 || rounded > MAX_ACTOR_JOIN_TIMEOUT_MS) {
484
490
  throw new ZLinkConfigurationException(
485
- 'Actor join timeout must be a finite value from 1 through 2147483647 milliseconds.'
491
+ `Actor join timeout must be a finite value from 1 through ${MAX_ACTOR_JOIN_TIMEOUT_MS} milliseconds.`
486
492
  );
487
493
  }
488
494
  return rounded;
@@ -1,45 +1,47 @@
1
- import {
2
- ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException,
4
- internalFrameworkErrorKind
5
- } from '../framework-errors-internal';
6
- import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
7
- import type { ActorRef, RoutingId } from '../../contracts';
8
- import { ZLinkFrameworkException } from '../../contracts';
1
+ import { type ActorRef, type RoutingId, ZLinkFrameworkException } from '../../contracts';
2
+
9
3
  import type { Message } from '../../contracts/Common/Message';
10
- import type { ZLinkMessageFollowOrigin } from '../foundation/service-runtime-contracts';
4
+ import { zlinkDefaultLocationOptions } from '../../contracts/Locations/Options';
5
+ import { releaseApplicationJobPermitForDurableHandoff } from '../application-jobs/application-job-queue-scope';
6
+ import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
11
7
  import {
12
8
  MessageFollowSuppressionRegistry,
13
9
  type MessageFollowSuppressionFence
14
10
  } from '../foundation/message-follow-suppression-registry';
15
- import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
11
+ import type { ZLinkMessageFollowOrigin } from '../foundation/service-runtime-contracts';
12
+ import {
13
+ createInternalFrameworkException,
14
+ internalFrameworkErrorKind,
15
+ ZLinkFrameworkInternalErrorKind
16
+ } from '../framework-errors-internal';
16
17
  import { encodeRoutingIdStorageHex, routingIdsEqual } from '../routing-id';
17
- import { releaseApplicationJobPermitForDurableHandoff } from '../application-jobs/application-job-queue-scope';
18
+ import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
18
19
  import { decodeActorRequestDeadlineUnixMs, decodeStreamHeader } from '../streams/protocol';
19
- import type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
20
- import { requestRoutedJsonReply } from './actor-routed-json-request';
21
- import type { ZLinkRemoteBoundSessionTarget } from './actor-runtime-state';
22
- import {
23
- encodeMessageFollowRemoteActorPacketRelayPayload,
24
- ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
25
- } from './actor-packet-relay-wire';
26
20
  import {
27
21
  actorMessageFollowContext,
28
22
  actorMessageFollowPayloadChecksum,
29
- attachActorMessageFollowContext,
30
23
  advanceActorMessageFollowContext,
24
+ attachActorMessageFollowContext,
31
25
  createMessageFollowId,
32
26
  messageFollowOwnerFenceKey,
33
27
  messageFollowOwnerFencesEqual,
34
28
  messageFollowOwnerNodeRid,
35
29
  ownerFence,
36
30
  verifyActorMessageFollowPayload,
31
+ ZLINK_MESSAGE_FOLLOW_MAX_HOPS,
37
32
  type ZLinkActorMessageFollowContext,
38
33
  type ZLinkActorMessageFollowOwnerFence
39
34
  } from './actor-message-follow-context';
35
+ import {
36
+ encodeMessageFollowRemoteActorPacketRelayPayload,
37
+ ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
38
+ } from './actor-packet-relay-wire';
39
+ import type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
40
+ import { requestRoutedJsonReply } from './actor-routed-json-request';
41
+ import type { ZLinkRemoteBoundSessionTarget } from './actor-runtime-state';
40
42
 
41
- export const DEFAULT_MESSAGE_FOLLOW_DURATION_MS = 30_000;
42
- const MAX_MESSAGE_FOLLOW_HOPS = 8;
43
+ export const DEFAULT_MESSAGE_FOLLOW_DURATION_MS =
44
+ zlinkDefaultLocationOptions.messageFollowDurationMs;
43
45
  const RELOCATION_REPLY_RETENTION_MS = 24 * 60 * 60 * 1_000;
44
46
 
45
47
  export interface ZLinkActorHandoffPacket {
@@ -1445,7 +1447,7 @@ export class ZLinkActorHandoffCoordinator {
1445
1447
  return duplicate.result;
1446
1448
  }
1447
1449
  const bytes = packetBytes(packet);
1448
- if (context.hopCount >= MAX_MESSAGE_FOLLOW_HOPS) {
1450
+ if (context.hopCount >= ZLINK_MESSAGE_FOLLOW_MAX_HOPS) {
1449
1451
  this.options.onMarker?.('message_follow_rejected', actorId);
1450
1452
  return Promise.reject(actorLocationStale(actorId));
1451
1453
  }
@@ -1,5 +1,6 @@
1
1
  import type { ActorRef, ZLinkActor, ZLinkActorMembership } from '../../contracts';
2
2
  import { ZLinkConfigurationException } from '../configuration';
3
+ import { diagnosticTextOrAbsent } from '../diagnostics/diagnostic-text';
3
4
 
4
5
  export const ZLINK_ACTOR_LIFECYCLE_SNAPSHOT = Symbol('zlink.actor.lifecycle-snapshot');
5
6
 
@@ -63,7 +64,7 @@ function lifecycleSource(actor: ZLinkActor): ZLinkActorLifecycleSnapshotSource {
63
64
  : undefined;
64
65
  // A caller can hand in a value that carries no Framework context at all, so the
65
66
  // failure path reports the configuration error instead of dereferencing it.
66
- const actorId = context?.actorId ?? '<unknown>';
67
+ const actorId = diagnosticTextOrAbsent(context?.actorId);
67
68
  const snapshot = context?.[ZLINK_ACTOR_LIFECYCLE_SNAPSHOT];
68
69
  const source = snapshot === undefined ? undefined : snapshot.call(context);
69
70
  if (source === undefined) {
@@ -1,51 +1,73 @@
1
- import {
2
- ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException,
4
- wireReplyFailureException
5
- } from '../framework-errors-internal';
1
+ import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
6
2
  import { randomUUID } from 'node:crypto';
7
- import { isBackendNotConnectedError } from '../backend/runtime-values';
8
- import type {
9
- RoutingId,
10
- ZLinkActor,
11
- ZLinkActorJoinOperationId,
12
- ZLinkMessageSerializer
3
+ import {
4
+ type RoutingId,
5
+ type ZLinkActor,
6
+ type ZLinkActorJoinOperationId,
7
+ type ZLinkMessageSerializer,
8
+ type ZLinkSpot,
9
+ type ZLinkSpotActorJoinResult,
10
+ ZLinkSpotKind
13
11
  } from '../../contracts';
14
- import { ZLinkSpotKind } from '../../contracts';
15
- import type { ZLinkActorJoinRuntimeResult } from './actor-runtime-contracts';
12
+
16
13
  import type { Message } from '../../contracts/Common/Message';
14
+ import { createAbortError, throwIfAborted } from '../abort';
17
15
  import type { ZLinkBackendActorRef, ZLinkBackendMeshNode } from '../backend/contracts';
18
16
  import {
19
17
  closeMeshCompletion,
20
18
  type ZLinkMeshCompletion,
21
19
  type ZLinkMeshCompletionTable
22
20
  } from '../backend/mesh-completion-table';
23
- import { createAbortError, throwIfAborted } from '../abort';
21
+ import { isBackendNotConnectedError } from '../backend/runtime-values';
22
+ import { operationIdentityKey } from '../foundation/operation-identity';
23
+ import {
24
+ ZLinkFrameworkInternalErrorKind,
25
+ createInternalFrameworkException,
26
+ wireReplyFailureException
27
+ } from '../framework-errors-internal';
28
+ import type { ZLinkLocationLifecycle } from '../locations';
29
+ import { frameworkPayloadContentType } from '../messaging/payload-codec';
30
+ import { routingIdsEqual, toBackendRoutingId } from '../routing-id';
24
31
  import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
32
+ import type { ZLinkActorJoinRelocation } from './actor-join-relocation';
33
+ import { ZLINK_REMOTE_ACTOR_JOIN_PACKET } from './actor-remote-wire';
34
+ import type { ZLinkActorJoinRuntimeResult } from './actor-runtime-contracts';
25
35
  import {
26
36
  ZLinkActorRuntimeState,
27
37
  toFrameworkActorRef,
28
38
  toFrameworkRoutingId
29
39
  } from './actor-runtime-state';
30
40
  import type { ZLinkPostCommitActorBinder } from './post-commit-actor-binder';
31
- import type { ZLinkPostCommitActorLocation } from './post-commit-actor-location';
32
- import { toBackendRoutingId as toBackendRoutingId } from '../routing-id';
33
- import { routingIdsEqual } from '../routing-id';
34
- import { operationIdentityKey } from '../foundation/operation-identity';
35
- import { frameworkPayloadContentType } from '../messaging/payload-codec';
36
- import type { ZLinkActorJoinRelocation } from './actor-join-relocation';
41
+ const LOCAL_JOIN_RESOLUTION_TIMEOUT_MS = 5_000;
42
+ const LOCAL_JOIN_POLL_INTERVAL_MS = 10;
37
43
 
38
44
  const ZLINK_FRAMEWORK_ACTOR_JOIN_PACKET_NAME = 'ZLinkFrameworkActorJoinRequest';
39
45
 
40
46
  export interface ZLinkLocalNativeActorJoinOptions {
41
- readonly postCommitLocation?: ZLinkPostCommitActorLocation;
47
+ readonly locationLifecycle?: ZLinkLocationLifecycle;
48
+ readonly localSpotJoin?: (
49
+ spotId: RoutingId,
50
+ actor: ZLinkActor,
51
+ request: Message,
52
+ commit: (spot: ZLinkSpot) => Promise<void>,
53
+ signal?: AbortSignal,
54
+ leaveSource?: () => Promise<void>,
55
+ contentType?: string
56
+ ) => Promise<ZLinkSpotActorJoinResult>;
57
+ readonly localEntryJoin?: (actor: ZLinkActor, signal?: AbortSignal) => Promise<void>;
58
+ readonly localSourceLeave?: (
59
+ actor: ZLinkActor,
60
+ spotId: RoutingId | undefined,
61
+ signal?: AbortSignal
62
+ ) => Promise<void>;
63
+ readonly reportSourceLeaveError: (error: unknown) => void;
42
64
  readonly postCommitBinder?: ZLinkPostCommitActorBinder;
43
65
  readonly completionTableProvider: () => ZLinkMeshCompletionTable | undefined;
44
66
  readonly actorJoinRelocation?: ZLinkActorJoinRelocation;
45
67
  readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
46
68
  }
47
69
 
48
- /** Owns core-native actor joins and their local runtime state transition. */
70
+ /** Selects local membership commits or remote Actor relocation. */
49
71
  export class ZLinkLocalNativeActorJoin {
50
72
  constructor(private readonly options: ZLinkLocalNativeActorJoinOptions) {}
51
73
 
@@ -62,9 +84,7 @@ export class ZLinkLocalNativeActorJoin {
62
84
  completionOperationId?: ZLinkActorJoinOperationId
63
85
  ): Promise<ZLinkActorJoinRuntimeResult<Message>> {
64
86
  if (signal?.aborted === true) throw createAbortError();
65
- const completions = this.requireCompletions();
66
87
  const target = requireUserSpotRoute(spotRouteTarget, spotId);
67
- const actorMeshName = runtimeActorMeshName(actor, state, target.routerChannelId);
68
88
  const remote = !routingIdsEqual(
69
89
  toFrameworkRoutingId(node.status().routingId),
70
90
  target.targetNodeRid
@@ -83,88 +103,16 @@ export class ZLinkLocalNativeActorJoin {
83
103
  false
84
104
  );
85
105
  }
86
- const completion = await this.waitForJoinCompletion(
87
- () =>
88
- node.joinActorSpot(
89
- actorRef,
90
- toBackendRoutingId(target.targetNodeRid),
91
- toBackendRoutingId(target.spotId),
92
- target.targetSpotGeneration,
93
- actorJoinApplicationPayload(request),
94
- timeoutMs
95
- ),
96
- completions,
97
- timeoutMs,
106
+ return await this.joinLocal(
107
+ node,
108
+ actor,
109
+ state,
110
+ actorRef,
111
+ target,
112
+ target.spotId,
113
+ request,
98
114
  signal
99
115
  );
100
- const control = completion.kindData;
101
- if (control?.kind !== 'actorJoinCompletion' || control.actor === null) {
102
- closeMeshCompletion(completion);
103
- const message = `Actor join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`;
104
- // Classify the (terminal, fine) pair instead of collapsing every non-OK
105
- // or malformed join completion to NotFound (spec 32-framework-error-model:
106
- // 83-118). An OK terminal that carries no join control is a protocol
107
- // violation, not a missing route.
108
- throw completion.terminalResult !== 0 || completion.failureErrno !== 0
109
- ? wireReplyFailureException(completion.terminalResult, completion.failureErrno, message)
110
- : createInternalFrameworkException(
111
- ZLinkFrameworkInternalErrorKind.RequestProtocolError,
112
- message
113
- );
114
- }
115
- if (control.joinResult !== 0) {
116
- try {
117
- return {
118
- accepted: false,
119
- actor: toFrameworkActorRef(control.actor as never, actorMeshName),
120
- reply: completion.parts[0]
121
- };
122
- } finally {
123
- disposeParts(completion.parts.slice(1));
124
- }
125
- }
126
- if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
127
- closeMeshCompletion(completion);
128
- throw wireReplyFailureException(
129
- completion.terminalResult,
130
- completion.failureErrno,
131
- `Actor join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`
132
- );
133
- }
134
-
135
- state.setNativeActorRef(control.actor as never);
136
- state.setJoinedSpot(
137
- toFrameworkRoutingId(control.location.spotId ?? target.spotId),
138
- undefined,
139
- control.location.membershipEpoch,
140
- control.location.spotGeneration
141
- );
142
- // The Session owner relays from the verified Ready authority snapshot;
143
- // membership coordinates alone cannot recreate a User/Instance fence.
144
- state.setRemoteActorPacketTarget(target.spotKind === ZLinkSpotKind.Entry ? undefined : target);
145
- if (state.actorType !== undefined) {
146
- this.options.postCommitLocation?.joinedEventually(
147
- state.actorType,
148
- actor.context.actorId,
149
- spotRouteTarget?.routerChannelId ?? '',
150
- toFrameworkRoutingId(control.location.spotId ?? target.spotId),
151
- control.location.spotGeneration,
152
- control.location.membershipEpoch,
153
- node.status().lifecycleGeneration
154
- );
155
- }
156
- await this.options.postCommitBinder?.bind(
157
- toFrameworkActorRef(control.actor as never, actorMeshName)
158
- );
159
- try {
160
- return {
161
- accepted: true,
162
- actor: toFrameworkActorRef(control.actor as never, actorMeshName),
163
- reply: completion.parts[0]
164
- };
165
- } finally {
166
- disposeParts(completion.parts.slice(1));
167
- }
168
116
  }
169
117
 
170
118
  async joinEntrySpot(
@@ -180,8 +128,6 @@ export class ZLinkLocalNativeActorJoin {
180
128
  completionOperationId?: ZLinkActorJoinOperationId
181
129
  ): Promise<ZLinkActorJoinRuntimeResult<Message>> {
182
130
  if (signal?.aborted === true) throw createAbortError();
183
- const completions = this.requireCompletions();
184
- const actorMeshName = runtimeActorMeshName(actor, state, '');
185
131
  const targetNodeRid = spotRouteTarget?.targetNodeRid ?? nodeRid;
186
132
  const remote =
187
133
  spotRouteTarget !== undefined &&
@@ -204,77 +150,127 @@ export class ZLinkLocalNativeActorJoin {
204
150
  true
205
151
  );
206
152
  }
207
- const completion = await this.waitForJoinCompletion(
208
- () =>
209
- node.joinActorEntrySpot(
210
- actorRef,
211
- toBackendRoutingId(targetNodeRid),
212
- actorJoinApplicationPayload(request),
213
- timeoutMs
214
- ),
215
- completions,
216
- timeoutMs,
153
+ const target = {
154
+ routerChannelId: spotRouteTarget?.routerChannelId ?? runtimeActorMeshName(actor, state, ''),
155
+ targetNodeRid,
156
+ spotId: toFrameworkRoutingId(node.entrySpot().routingId),
157
+ spotKind: ZLinkSpotKind.Entry,
158
+ targetSpotGeneration: node.entrySpot().status().lifecycleGeneration
159
+ };
160
+ return await this.joinLocal(
161
+ node,
162
+ actor,
163
+ state,
164
+ actorRef,
165
+ target,
166
+ spotRouteTarget?.spotId ?? target.spotId,
167
+ request,
217
168
  signal
218
169
  );
219
- const control = completion.kindData;
220
- if (control?.kind !== 'actorJoinCompletion' || control.actor === null) {
221
- closeMeshCompletion(completion);
222
- const message = `Actor entry SPOT join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`;
223
- // Classify the (terminal, fine) pair instead of collapsing to NotFound
224
- // (spec 32-framework-error-model:83-118); an OK terminal with no join
225
- // control is a protocol violation.
226
- throw completion.terminalResult !== 0 || completion.failureErrno !== 0
227
- ? wireReplyFailureException(completion.terminalResult, completion.failureErrno, message)
228
- : createInternalFrameworkException(
229
- ZLinkFrameworkInternalErrorKind.RequestProtocolError,
230
- message
231
- );
232
- }
233
- if (control.joinResult !== 0) {
234
- try {
235
- return {
236
- accepted: false,
237
- actor: toFrameworkActorRef(control.actor as never, actorMeshName),
238
- reply: completion.parts[0]
239
- };
240
- } finally {
241
- disposeParts(completion.parts.slice(1));
242
- }
170
+ }
171
+
172
+ private async joinLocal(
173
+ node: ZLinkBackendMeshNode,
174
+ actor: ZLinkActor,
175
+ state: ZLinkActorRuntimeState,
176
+ actorRef: ZLinkBackendActorRef,
177
+ target: ZLinkSpotRouteTarget,
178
+ storeSpotId: RoutingId,
179
+ request: Message,
180
+ signal: AbortSignal | undefined
181
+ ): Promise<ZLinkActorJoinRuntimeResult<Message>> {
182
+ const location = node.actorLookup(actor.context.actorId);
183
+ const meshName = runtimeActorMeshName(actor, state, target.routerChannelId);
184
+ if (routingIdsEqual(toFrameworkRoutingId(location.spotId), target.spotId)) {
185
+ return { accepted: true, actor: toFrameworkActorRef(actorRef, meshName) };
243
186
  }
244
- if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
245
- closeMeshCompletion(completion);
246
- throw wireReplyFailureException(
247
- completion.terminalResult,
248
- completion.failureErrno,
249
- `Actor entry SPOT join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`
187
+ if (state.actorType === undefined)
188
+ throw new Error('Local Actor Join requires a registered Actor type.');
189
+ const actorType = state.actorType;
190
+ const previousSpotId = state.spotId;
191
+ const spotGeneration = target.targetSpotGeneration;
192
+ if (
193
+ spotGeneration === undefined ||
194
+ spotGeneration <= 0n ||
195
+ node.restoreActorAuthority === undefined
196
+ ) {
197
+ throw new Error(
198
+ 'Local Actor Join requires a valid target generation and stateful membership runtime.'
250
199
  );
251
200
  }
252
-
253
- state.setNativeActorRef(control.actor as never);
254
- state.clearJoinedSpot();
255
- state.setRemoteActorPacketTarget(undefined);
256
- if (state.actorType !== undefined) {
257
- this.options.postCommitLocation?.leftEventually(
258
- state.actorType,
201
+ const membershipEpoch = location.membershipEpoch + 1n;
202
+ const commit = async (spot?: ZLinkSpot): Promise<void> => {
203
+ throwIfAborted(signal);
204
+ if (target.spotKind === ZLinkSpotKind.Entry) {
205
+ await this.options.locationLifecycle?.notifyActorLeftSpot(
206
+ actorType,
207
+ actor.context.actorId,
208
+ storeSpotId,
209
+ spotGeneration,
210
+ membershipEpoch,
211
+ node.status().lifecycleGeneration
212
+ );
213
+ } else {
214
+ await this.options.locationLifecycle?.notifyActorJoinedSpot(
215
+ actorType,
216
+ actor.context.actorId,
217
+ meshName,
218
+ storeSpotId,
219
+ spotGeneration,
220
+ membershipEpoch,
221
+ node.status().lifecycleGeneration
222
+ );
223
+ }
224
+ const committedActor = node.restoreActorAuthority!(
259
225
  actor.context.actorId,
260
- toFrameworkRoutingId(control.location.spotId ?? spotRouteTarget?.spotId ?? nodeRid),
261
- control.location.spotGeneration,
262
- control.location.membershipEpoch,
263
- node.status().lifecycleGeneration
226
+ actorType,
227
+ actorRef.generation,
228
+ state.locationGeneration ?? actorRef.generation,
229
+ target.spotKind === ZLinkSpotKind.Entry ? undefined : String(target.spotId),
230
+ spotGeneration,
231
+ membershipEpoch
232
+ );
233
+ state.setNativeActorRef(committedActor);
234
+ if (target.spotKind === ZLinkSpotKind.Entry) state.clearJoinedSpot();
235
+ else state.setJoinedSpot(target.spotId, spot, membershipEpoch, spotGeneration);
236
+ state.setRemoteActorPacketTarget(
237
+ target.spotKind === ZLinkSpotKind.Entry ? undefined : target
238
+ );
239
+ };
240
+ const leaveSource = async (): Promise<void> => {
241
+ void this.options.localSourceLeave?.(actor, previousSpotId, signal).catch((error) => {
242
+ this.options.reportSourceLeaveError(error);
243
+ });
244
+ };
245
+ let response: ZLinkSpotActorJoinResult;
246
+ if (target.spotKind === ZLinkSpotKind.Entry) {
247
+ if (this.options.localEntryJoin === undefined)
248
+ throw new Error('Local Entry Actor Join runtime is not configured.');
249
+ await commit();
250
+ try {
251
+ await this.options.localEntryJoin(actor, signal);
252
+ } finally {
253
+ await leaveSource();
254
+ }
255
+ response = { accepted: true };
256
+ } else {
257
+ if (this.options.localSpotJoin === undefined)
258
+ throw new Error('Local Spot Actor Join runtime is not configured.');
259
+ response = await this.options.localSpotJoin(
260
+ target.spotId,
261
+ actor,
262
+ request,
263
+ commit,
264
+ signal,
265
+ leaveSource,
266
+ frameworkPayloadContentType(request)
264
267
  );
265
268
  }
266
- await this.options.postCommitBinder?.bind(
267
- toFrameworkActorRef(control.actor as never, actorMeshName)
268
- );
269
- try {
270
- return {
271
- accepted: true,
272
- actor: toFrameworkActorRef(control.actor as never, actorMeshName),
273
- reply: completion.parts[0]
274
- };
275
- } finally {
276
- disposeParts(completion.parts.slice(1));
277
- }
269
+ return {
270
+ accepted: response.accepted,
271
+ actor: toFrameworkActorRef(state.nativeActorRef ?? actorRef, meshName),
272
+ reply: response.reply as Message | undefined
273
+ };
278
274
  }
279
275
 
280
276
  private async waitForJoinCompletion(
@@ -463,7 +459,7 @@ export class ZLinkLocalNativeActorJoin {
463
459
  ...(completionOperationId === undefined
464
460
  ? {}
465
461
  : {
466
- replyContentType: control.replyContentType ?? 'application/octet-stream'
462
+ replyContentType: control.replyContentType ?? ZlinkStreamContentType.Raw
467
463
  }),
468
464
  reply:
469
465
  completionOperationId === undefined
@@ -569,7 +565,7 @@ function legacyRemoteActorJoinPayload(
569
565
  // authority fence.
570
566
  const payload = Buffer.from(
571
567
  JSON.stringify({
572
- packetName: '__zlink.actor.join_spot.request',
568
+ packetName: ZLINK_REMOTE_ACTOR_JOIN_PACKET,
573
569
  phase: 'admission',
574
570
  transferId,
575
571
  spotId: String(target.spotId),
@@ -585,7 +581,7 @@ function legacyRemoteActorJoinPayload(
585
581
  );
586
582
  return {
587
583
  packetName: ZLINK_FRAMEWORK_ACTOR_JOIN_PACKET_NAME,
588
- contentType: 'application/json',
584
+ contentType: ZlinkStreamContentType.Json,
589
585
  payload,
590
586
  // Older in-process MeshNode adapters consume the fallback as a Message.
591
587
  // Keep that structural view without changing the typed service payload.
@@ -624,7 +620,9 @@ async function submitJoinWhenConnected<T>(
624
620
  timeoutMs: number | undefined,
625
621
  signal: AbortSignal | undefined
626
622
  ): Promise<T> {
627
- const deadline = performance.now() + Math.min(timeoutMs ?? 5_000, 5_000);
623
+ const deadline =
624
+ performance.now() +
625
+ Math.min(timeoutMs ?? LOCAL_JOIN_RESOLUTION_TIMEOUT_MS, LOCAL_JOIN_RESOLUTION_TIMEOUT_MS);
628
626
  for (;;) {
629
627
  throwIfAborted(signal);
630
628
  try {
@@ -633,7 +631,7 @@ async function submitJoinWhenConnected<T>(
633
631
  if (!isBackendNotConnectedError(error) || performance.now() >= deadline) {
634
632
  throw error;
635
633
  }
636
- await new Promise<void>((resolve) => setTimeout(resolve, 10));
634
+ await new Promise<void>((resolve) => setTimeout(resolve, LOCAL_JOIN_POLL_INTERVAL_MS));
637
635
  }
638
636
  }
639
637
  }