@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,3 +1,4 @@
1
+ import { FLOW_ORIGIN_VALUES } from '../diagnostics/flow-context';
1
2
  export const ZLINK_REMOTE_BOUND_SESSION_FENCE_NACK_CODE = 'zlink.bound_session.fence';
2
3
 
3
4
  /**
@@ -69,17 +70,10 @@ export function encodeRemoteBoundSessionSendPayload(input: {
69
70
  };
70
71
  }
71
72
 
72
- const WIRE_FLOW_ORIGIN: Record<import('../../contracts').ZLinkFlowOrigin, string> = {
73
- Inbound: 'inbound',
74
- Timer: 'timer',
75
- Application: 'application',
76
- Lifecycle: 'lifecycle'
77
- };
78
-
79
73
  function encodeWireFlowOrigin(
80
74
  origin: import('../../contracts').ZLinkFlowOrigin | undefined
81
75
  ): string | undefined {
82
- return origin === undefined ? undefined : WIRE_FLOW_ORIGIN[origin];
76
+ return origin === undefined ? undefined : FLOW_ORIGIN_VALUES[origin];
83
77
  }
84
78
 
85
79
  export function encodeRemoteBoundSessionResponsePayload(input: {
@@ -1,17 +1,20 @@
1
- import type { ActorRef, ZLinkActorJoinOperationId } from '../../contracts';
1
+ import type { ActorRef, ZLinkActorJoinOperationId, ZLinkFrameworkErrorKind } from '../../contracts';
2
2
 
3
3
  /**
4
- * The Accepted completion of a deferred cross-node Join. Spot Actor membership
5
- * sections 4-5: the public OperationId, the optional reply and the delivery
4
+ * The Accepted or Failed result of a deferred cross-node Join. Spot Actor
5
+ * membership sections 4-5: the public OperationId, optional reply and delivery
6
6
  * state live only while the current source and target processes run. The
7
- * completion is never written to a Store and never replayed after a restart.
7
+ * completion is never written to a Store or replayed after a restart.
8
8
  */
9
- export interface ZLinkDeferredJoinCompletion {
9
+ export type ZLinkDeferredJoinCompletion = {
10
10
  readonly operationId: ZLinkActorJoinOperationId;
11
11
  readonly actor: ActorRef;
12
12
  readonly rawReply: Buffer;
13
13
  readonly replyContentType?: string;
14
- }
14
+ } & (
15
+ | { readonly status: 'accepted' }
16
+ | { readonly status: 'failed'; readonly kind: ZLinkFrameworkErrorKind }
17
+ );
15
18
 
16
19
  export function createDeferredJoinCompletion(
17
20
  actorId: string,
@@ -32,6 +35,7 @@ export function createDeferredJoinCompletion(
32
35
  throw new TypeError('Deferred Join reply content type must be non-empty.');
33
36
  }
34
37
  return {
38
+ status: 'accepted',
35
39
  operationId,
36
40
  actor,
37
41
  rawReply: Buffer.from(rawReply),
@@ -1,41 +1,52 @@
1
1
  import {
2
- ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException,
4
- wireReplyFailureException
5
- } from '../framework-errors-internal';
6
- import type {
7
- ActorRef,
8
- RoutingId,
9
- SpotRef,
10
- ZLinkActor,
11
- ZLinkActorCreateCall,
12
- ZLinkActorCreateResult,
13
- ZLinkActorGetOrCreateCall,
14
- ZLinkActorManager
2
+ type ActorRef,
3
+ type RoutingId,
4
+ type SpotRef,
5
+ type ZLinkActor,
6
+ type ZLinkActorCreateCall,
7
+ type ZLinkActorCreateResult,
8
+ type ZLinkActorGetOrCreateCall,
9
+ type ZLinkActorManager,
10
+ ZLinkEncodedPayload,
11
+ ZLinkFrameworkException,
12
+ ZLinkMessage
15
13
  } from '../../contracts';
16
- import { ZLinkEncodedPayload, ZLinkFrameworkException } from '../../contracts';
17
- import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
18
- import { ZLinkMessage } from '../../contracts';
19
- import { ZLinkConfigurationException } from '../configuration';
14
+ import { DEFAULT_REQUEST_TIMEOUT_MS } from '../../contracts/Configuration/Registration';
20
15
  import { throwIfAborted } from '../abort';
21
16
  import type { ZLinkBackendActorRef, ZLinkBackendSpotNode } from '../backend/contracts';
22
17
  import { closeMeshCompletion } from '../backend/mesh-completion-table';
18
+ import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
19
+ import { ZLinkConfigurationException } from '../configuration';
20
+ import { METRIC_NAMES } from '../diagnostics/runtime-metrics';
23
21
  import {
24
22
  captureZLinkSpotSerialTurn,
25
23
  requireZLinkYieldTurn,
26
24
  type ZLinkSpotSerialTurn
27
25
  } from '../execution';
26
+ import {
27
+ ZLinkFrameworkInternalErrorKind,
28
+ createInternalFrameworkException,
29
+ wireReplyFailureException
30
+ } from '../framework-errors-internal';
28
31
  import { disposeLifecycleHandlers } from '../handlers/handler-instance-scope';
32
+ import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
33
+ import { ZLinkActorCreationCoordinator, type ZLinkActorCreateRequest } from './actor-creation';
34
+ import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
35
+ import {
36
+ ZLinkActorRuntimeState,
37
+ toFrameworkActorRef,
38
+ type ZLinkActorCreationAttemptResult
39
+ } from './actor-runtime-state';
40
+ import { ZLinkTransferredActorRollbackCoordinator } from './transferred-actor-rollback';
41
+ const ACTOR_CREATION_RETRY_INTERVAL_MS = 5;
42
+ const LOCAL_DIAGNOSTIC_NODE_RID = 'local';
29
43
 
30
44
  export {
31
45
  DefaultZLinkActorClient,
32
46
  forwardEncodedActorPacket,
33
47
  type ZLinkActorClientOptions
34
48
  } from './actor-client';
35
-
36
- import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
37
49
  export { DefaultZLinkActorContext, ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME } from './actor-context';
38
- import { ZLinkActorCreationCoordinator, type ZLinkActorCreateRequest } from './actor-creation';
39
50
  export { ZLinkActorSerialExecutor } from './actor-mailbox';
40
51
  export {
41
52
  DEFAULT_MESSAGE_FOLLOW_DURATION_MS,
@@ -60,8 +71,6 @@ export {
60
71
  } from './actor-message-follow-context';
61
72
  export {
62
73
  ZLinkActorRuntimeState,
63
- mergeRemoteBoundSessionTarget,
64
- preferredRemoteBoundSessionTarget,
65
74
  toFrameworkActorRef,
66
75
  toFrameworkRoutingId,
67
76
  type ZLinkActorCreationOperation,
@@ -82,11 +91,6 @@ export {
82
91
  publishInitialActorAuthority,
83
92
  type ZLinkActorAuthorityIdentity
84
93
  } from './actor-authority-publication';
85
- import {
86
- ZLinkActorRuntimeState,
87
- toFrameworkActorRef,
88
- type ZLinkActorCreationAttemptResult
89
- } from './actor-runtime-state';
90
94
  export {
91
95
  ZLinkActorPacketKind,
92
96
  ZLinkSpotActorDispatcher,
@@ -104,8 +108,6 @@ export type {
104
108
  ZLinkActorJoinCoordinator,
105
109
  ZLinkActorManagerOptions
106
110
  } from './actor-runtime-contracts';
107
- import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
108
- import { ZLinkTransferredActorRollbackCoordinator } from './transferred-actor-rollback';
109
111
  export {
110
112
  ZLinkActorTransferRegistry,
111
113
  type ZLinkActorTransferPayloadState
@@ -143,11 +145,18 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
143
145
  private readonly creation: ZLinkActorCreationCoordinator;
144
146
  private readonly transferredActorRollback: ZLinkTransferredActorRollbackCoordinator;
145
147
 
146
- constructor(private readonly options: ZLinkActorManagerOptions) {
148
+ constructor(
149
+ private readonly options: ZLinkActorManagerOptions,
150
+ private readonly detachedTaskRunner: import('../spots/spot-actor-join-dispatch').ZLinkDetachedTaskRunner
151
+ ) {
152
+ if ((detachedTaskRunner as unknown) === undefined) {
153
+ throw new Error('Actor manager requires a detached task runner.');
154
+ }
147
155
  this.creation = new ZLinkActorCreationCoordinator(options);
148
156
  this.transferredActorRollback = new ZLinkTransferredActorRollbackCoordinator(
149
157
  this.states,
150
- options
158
+ options,
159
+ (actorId, state) => this.finalizeDestroyedActor(actorId, state)
151
160
  );
152
161
  }
153
162
 
@@ -204,7 +213,6 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
204
213
  `Actor '${actor.actorId}' is relocating.`
205
214
  );
206
215
  }
207
- const actorInstance = state.actor;
208
216
  const node = this.options.nativeActorNodeProvider?.() ?? this.options.nativeActorNode;
209
217
  const completions = this.options.nativeActorCompletionTableProvider?.();
210
218
  const entryNodeRid = state.entryNodeRid ?? current.nodeRid;
@@ -233,14 +241,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
233
241
  if (state.actorType !== undefined && state.ownsLocation) {
234
242
  await this.options.locationLifecycle?.releaseActor(state.actorType, actor.actorId, current);
235
243
  }
236
- this.options.actorDestroyedCleanup?.(actor.actorId);
237
- await disposeLifecycleHandlers(actorInstance);
238
- state.clearAfterDestroy();
239
- if (this.states.get(actor.actorId) === state) {
240
- this.states.delete(actor.actorId);
241
- this.actorMeshNames.delete(actor.actorId);
242
- }
243
- this.options.metrics?.change('zlink.actor.count', -1);
244
+ await this.finalizeDestroyedActor(actor.actorId, state);
244
245
  });
245
246
  try {
246
247
  await destroyTask;
@@ -262,7 +263,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
262
263
  const state = this.getOrCreateState(actorId);
263
264
  this.rememberActorMeshFromType(actorId, actorType);
264
265
  if (state.actor !== undefined) {
265
- await disposeLifecycleHandlers(state.actor);
266
+ await disposeLifecycleHandlers(state.actor, this.detachedTaskRunner);
266
267
  }
267
268
  state.prepareForRemoteReentry();
268
269
  const operation = state.getOrStartCreation(actorType, false, () =>
@@ -407,7 +408,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
407
408
  actorType: string,
408
409
  objectGeneration: bigint,
409
410
  authorityOwnerGeneration: bigint,
410
- spotId: RoutingId,
411
+ spotId: RoutingId | undefined,
411
412
  spotGeneration: bigint,
412
413
  membershipEpoch: bigint,
413
414
  signal?: AbortSignal,
@@ -433,7 +434,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
433
434
  actorType,
434
435
  objectGeneration,
435
436
  authorityOwnerGeneration,
436
- String(spotId),
437
+ spotId === undefined ? undefined : String(spotId),
437
438
  spotGeneration,
438
439
  membershipEpoch
439
440
  );
@@ -456,18 +457,13 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
456
457
  await registry.restore(transfer.adapterKey, actor, transfer.state, signal);
457
458
  }
458
459
  state.setLocationGeneration(authorityOwnerGeneration);
459
- state.setJoinedSpot(spotId, undefined, membershipEpoch);
460
+ if (spotId !== undefined) state.setJoinedSpot(spotId, undefined, membershipEpoch);
460
461
  return actor;
461
462
  } catch (error) {
462
463
  if (nativeRef !== undefined) node.discardRelocatedActor?.(nativeRef);
463
464
  this.relocationStaged.delete(actorId);
464
465
  const failedState = this.states.get(actorId);
465
- if (failedState?.actor !== undefined) {
466
- await disposeLifecycleHandlers(failedState.actor);
467
- }
468
- failedState?.clearAfterDestroy();
469
- this.states.delete(actorId);
470
- this.actorMeshNames.delete(actorId);
466
+ await this.finalizeActorState(actorId, failedState);
471
467
  throw error;
472
468
  }
473
469
  }
@@ -497,29 +493,61 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
497
493
  const state = this.states.get(actorId);
498
494
  const node = this.options.nativeActorNodeProvider?.() ?? this.options.nativeActorNode;
499
495
  const nativeActorRef = exactNativeActorRef ?? state?.nativeActorRef;
500
- if (nativeActorRef !== undefined) {
501
- node?.discardRelocatedActor?.(nativeActorRef);
496
+ const failures: unknown[] = [];
497
+ try {
498
+ if (nativeActorRef !== undefined) {
499
+ node?.discardRelocatedActor?.(nativeActorRef);
500
+ }
501
+ } catch (error) {
502
+ failures.push(error);
502
503
  }
503
- if (state?.actor !== undefined) {
504
- await disposeLifecycleHandlers(state.actor);
504
+ try {
505
+ await this.completeCoreRelocationSource(actorId);
506
+ } catch (error) {
507
+ failures.push(error);
508
+ }
509
+ if (failures.length > 0) {
510
+ throw failures.length === 1
511
+ ? failures[0]
512
+ : new AggregateError(failures, 'Actor relocation cleanup failed.');
505
513
  }
506
- state?.clearAfterDestroy();
507
- this.states.delete(actorId);
508
- this.actorMeshNames.delete(actorId);
509
- this.relocationStaged.delete(actorId);
510
514
  }
511
515
 
512
516
  async completeCoreRelocationSource(actorId: string): Promise<void> {
513
517
  const state = this.states.get(actorId);
514
- if (state?.actor !== undefined) {
515
- await disposeLifecycleHandlers(state.actor);
518
+ await this.finalizeActorState(actorId, state);
519
+ }
520
+
521
+ private async finalizeActorState(
522
+ actorId: string,
523
+ state: ZLinkActorRuntimeState | undefined
524
+ ): Promise<void> {
525
+ if (state === undefined || this.states.get(actorId) !== state) return;
526
+ try {
527
+ if (state.actor !== undefined)
528
+ await disposeLifecycleHandlers(state.actor, this.detachedTaskRunner);
529
+ } finally {
530
+ state.clearAfterDestroy();
531
+ if (this.states.get(actorId) === state) {
532
+ this.states.delete(actorId);
533
+ this.actorMeshNames.delete(actorId);
534
+ this.relocationStaged.delete(actorId);
535
+ }
516
536
  }
517
- state?.clearAfterDestroy();
518
- this.states.delete(actorId);
519
- this.actorMeshNames.delete(actorId);
520
- this.relocationStaged.delete(actorId);
521
537
  }
522
538
 
539
+ private async finalizeDestroyedActor(
540
+ actorId: string,
541
+ state: ZLinkActorRuntimeState
542
+ ): Promise<void> {
543
+ if (this.states.get(actorId) !== state) return;
544
+ try {
545
+ this.options.actorDestroyedCleanup?.(actorId);
546
+ } finally {
547
+ await this.finalizeActorState(actorId, state);
548
+ this.options.metrics?.change(METRIC_NAMES.ActorCount, -1);
549
+ }
550
+ }
523
551
  async getOrCreateActor(
524
552
  actorId: string,
525
553
  actorType: string,
@@ -569,7 +597,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
569
597
  createRequest,
570
598
  signal,
571
599
  false,
572
- 30_000,
600
+ DEFAULT_REQUEST_TIMEOUT_MS,
573
601
  nativeActorRef
574
602
  );
575
603
  }
@@ -634,14 +662,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
634
662
  destroyedActorRef
635
663
  );
636
664
  }
637
- this.options.actorDestroyedCleanup?.(actor.context.actorId);
638
- await disposeLifecycleHandlers(actor);
639
- state.clearAfterDestroy();
640
- if (this.states.get(actor.context.actorId) === state) {
641
- this.states.delete(actor.context.actorId);
642
- this.actorMeshNames.delete(actor.context.actorId);
643
- }
644
- this.options.metrics?.change('zlink.actor.count', -1);
665
+ await this.finalizeDestroyedActor(actor.context.actorId, state);
645
666
  });
646
667
 
647
668
  try {
@@ -659,7 +680,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
659
680
  request: unknown,
660
681
  signal?: AbortSignal,
661
682
  claimLocation = true,
662
- timeoutMs = 30_000,
683
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS,
663
684
  nativeActorRef?: ZLinkBackendActorRef
664
685
  ): Promise<ZLinkActorLocalCreateResult> {
665
686
  const deadline = performance.now() + timeoutMs;
@@ -766,7 +787,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
766
787
  if (this.states.get(actorId) === state) {
767
788
  this.states.delete(actorId);
768
789
  this.actorMeshNames.delete(actorId);
769
- this.options.metrics?.change('zlink.actor.count', -1);
790
+ this.options.metrics?.change(METRIC_NAMES.ActorCount, -1);
770
791
  }
771
792
  }
772
793
 
@@ -797,7 +818,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
797
818
  state.rememberMeshName(remembered);
798
819
  }
799
820
  this.states.set(actorId, state);
800
- this.options.metrics?.change('zlink.actor.count', 1);
821
+ this.options.metrics?.change(METRIC_NAMES.ActorCount, 1);
801
822
  return state;
802
823
  }
803
824
 
@@ -810,7 +831,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
810
831
  actorId: state.actorId,
811
832
  objectGeneration: 1n,
812
833
  meshName: state.meshName ?? '',
813
- nodeRid: this.options.actorCreatedNodeRidProvider?.() ?? 'local'
834
+ nodeRid: this.options.actorCreatedNodeRidProvider?.() ?? LOCAL_DIAGNOSTIC_NODE_RID
814
835
  };
815
836
  }
816
837
  }
@@ -830,7 +851,7 @@ class ZLinkActorCreateCallRuntime implements ZLinkActorCreateCall {
830
851
  private meshNameValue: string | undefined;
831
852
  private requestValue: unknown;
832
853
  private requestConfigured = false;
833
- private timeoutMsValue = 30_000;
854
+ private timeoutMsValue: number = DEFAULT_REQUEST_TIMEOUT_MS;
834
855
  private timeoutConfigured = false;
835
856
  private submitted = false;
836
857
  private readonly turn: ZLinkSpotSerialTurn | undefined = captureZLinkSpotSerialTurn();
@@ -955,7 +976,7 @@ async function waitForCreationRetry(signal?: AbortSignal): Promise<void> {
955
976
  if (error === undefined) resolve();
956
977
  else reject(error);
957
978
  };
958
- const timer = setTimeout(() => finish(), 5);
979
+ const timer = setTimeout(() => finish(), ACTOR_CREATION_RETRY_INTERVAL_MS);
959
980
  const onAbort = () => {
960
981
  finish(signal?.reason ?? new Error('Actor creation was aborted.'));
961
982
  };
@@ -1,28 +1,31 @@
1
+ import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
1
2
  import {
2
- ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException
4
- } from '../framework-errors-internal';
5
- import type {
6
- Type,
7
- ZLinkActor,
8
- ZLinkActorHandlerRegistry,
9
- ZLinkSpot,
10
- ZLinkSpotActorJoinResult,
11
- ZLinkMessageContext,
12
- ZLinkSpotActorRequestHandler,
13
- ZLinkSpotActorSendHandler
3
+ type Type,
4
+ type ZLinkActor,
5
+ type ZLinkActorHandlerRegistry,
6
+ type ZLinkMessageContext,
7
+ type ZLinkMessageSerializer,
8
+ type ZLinkSpot,
9
+ type ZLinkSpotActorJoinResult,
10
+ type ZLinkSpotActorRequestHandler,
11
+ type ZLinkSpotActorSendHandler,
12
+ ZLinkFrameworkException,
13
+ ZLinkMessageMetadataEmpty
14
14
  } from '../../contracts';
15
- import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
16
- import { ZLinkFrameworkException, ZLinkMessageMetadataEmpty } from '../../contracts';
15
+
17
16
  import type { Message } from '../../contracts/Common/Message';
18
- import { ZLinkConfigurationException } from '../configuration';
17
+ import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
19
18
  import { readZLinkDecoratorMetadata } from '../../contracts/Handlers/Attributes';
19
+ import { ZLinkConfigurationException } from '../configuration';
20
+ import type { ZLinkSerialWorkOptions } from '../execution/serial-execution-queue';
21
+ import {
22
+ ZLinkFrameworkInternalErrorKind,
23
+ createInternalFrameworkException
24
+ } from '../framework-errors-internal';
25
+ import { runWithLifecycleHandler } from '../handlers/handler-instance-scope';
20
26
  import { wrapFrameworkPayloadMessage } from '../messaging/payload-codec';
21
- import type { ZLinkMessageSerializer } from '../../contracts';
22
- import { actorJoinIdentity } from './actor-lifecycle-snapshot';
23
27
  import { runActorHandlerWithDeferredJoins } from './actor-join-deferred-scope';
24
- import { runWithLifecycleHandler } from '../handlers/handler-instance-scope';
25
- import type { ZLinkSerialWorkOptions } from '../execution/serial-execution-queue';
28
+ import { actorJoinIdentity } from './actor-lifecycle-snapshot';
26
29
 
27
30
  export enum ZLinkActorPacketKind {
28
31
  Send = 'send',
@@ -34,6 +37,7 @@ export interface ZLinkActorPacketDescriptor {
34
37
  readonly packetName: string;
35
38
  readonly actorType: Type<ZLinkActor>;
36
39
  readonly handlerType: Type;
40
+ readonly methodName?: string;
37
41
  }
38
42
 
39
43
  export class ZLinkSpotActorHandlerRegistryRuntime implements ZLinkActorHandlerRegistry {
@@ -56,7 +60,8 @@ export class ZLinkSpotActorHandlerRegistryRuntime implements ZLinkActorHandlerRe
56
60
  : ZLinkActorPacketKind.Request,
57
61
  packetName: resolvedPacketName,
58
62
  actorType: Object as unknown as Type<ZLinkActor>,
59
- handlerType
63
+ handlerType,
64
+ methodName: metadata.methodName
60
65
  });
61
66
  }
62
67
 
@@ -67,7 +72,16 @@ export class ZLinkSpotActorHandlerRegistryRuntime implements ZLinkActorHandlerRe
67
72
  `Actor packet '${descriptor.packetName}' for '${descriptor.actorType.name}' is already registered.`
68
73
  );
69
74
  }
70
- this.packets.set(key, descriptor);
75
+ const metadata = readZLinkDecoratorMetadata(descriptor.handlerType).find(
76
+ (entry) =>
77
+ entry.kind ===
78
+ (descriptor.kind === ZLinkActorPacketKind.Send ? 'spotActorSend' : 'spotActorRequest') &&
79
+ entry.packetName === descriptor.packetName
80
+ );
81
+ this.packets.set(key, {
82
+ ...descriptor,
83
+ methodName: descriptor.methodName ?? metadata?.methodName
84
+ });
71
85
  return this;
72
86
  }
73
87
 
@@ -144,9 +158,10 @@ export class ZLinkSpotActorDispatcher {
144
158
  await this.invokeHandler<ZLinkSpotActorSendHandler<ZLinkSpot, ZLinkActor, TMessage>, void>(
145
159
  actor,
146
160
  descriptor,
147
- (handler) =>
161
+ (handler, method) =>
148
162
  runActorHandlerWithDeferredJoins(() =>
149
- handler.handle(
163
+ method.call(
164
+ handler,
150
165
  this.options.spot,
151
166
  actor,
152
167
  this.createContext(packetName, context),
@@ -232,10 +247,11 @@ export class ZLinkSpotActorDispatcher {
232
247
  return await this.invokeHandler<
233
248
  ZLinkSpotActorRequestHandler<ZLinkSpot, ZLinkActor, TRequest, TReply>,
234
249
  TResult
235
- >(actor, descriptor, (handler) =>
250
+ >(actor, descriptor, (handler, method) =>
236
251
  runActorHandlerWithDeferredJoins(
237
252
  () =>
238
- handler.handle(
253
+ method.call(
254
+ handler,
239
255
  this.options.spot,
240
256
  actor,
241
257
  this.createContext(packetName, context),
@@ -274,7 +290,7 @@ export class ZLinkSpotActorDispatcher {
274
290
  evaluateActorJoin(
275
291
  actor: ZLinkActor,
276
292
  request: Message,
277
- contentType = 'application/json'
293
+ contentType: string = ZlinkStreamContentType.Json
278
294
  ): Promise<ZLinkSpotActorJoinResult> {
279
295
  return this.execute(async () => {
280
296
  const payload = wrapFrameworkPayloadMessage(
@@ -337,14 +353,29 @@ export class ZLinkSpotActorDispatcher {
337
353
 
338
354
  private async invokeHandler<THandler, TResult>(
339
355
  actor: ZLinkActor,
340
- descriptor: Pick<ZLinkActorPacketDescriptor, 'handlerType'>,
341
- callback: (handler: THandler) => Promise<TResult>
356
+ descriptor: Pick<ZLinkActorPacketDescriptor, 'handlerType' | 'methodName'>,
357
+ callback: (
358
+ handler: THandler,
359
+ method: THandler extends { handle: infer TMethod } ? TMethod : never
360
+ ) => Promise<TResult>
342
361
  ): Promise<TResult> {
343
362
  return await runWithLifecycleHandler(
344
363
  actor,
345
364
  descriptor.handlerType,
346
365
  this.options.providerResolver,
347
- (resolved) => callback(resolved as THandler)
366
+ (resolved) => {
367
+ const methodName = descriptor.methodName ?? 'handle';
368
+ const method = (resolved as Record<string, unknown>)[methodName];
369
+ if (typeof method !== 'function') {
370
+ throw new ZLinkConfigurationException(
371
+ `Actor handler '${descriptor.handlerType.name}.${methodName}' is not callable.`
372
+ );
373
+ }
374
+ return callback(
375
+ resolved as THandler,
376
+ method as THandler extends { handle: infer TMethod } ? TMethod : never
377
+ );
378
+ }
348
379
  );
349
380
  }
350
381
 
@@ -4,24 +4,18 @@ import { closeMeshCompletion } from '../backend';
4
4
  import { RequestResult } from '../backend/runtime-values';
5
5
  import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
6
6
  import type { ZLinkActorRuntimeState } from './actor-runtime-state';
7
- import { ZLinkActorRetryDelay } from './actor-retry-delay';
7
+ import { createActorMembership } from './actor-lifecycle-snapshot';
8
8
 
9
9
  type ZLinkTransferredActorRollbackOptions = Pick<
10
10
  ZLinkActorManagerOptions,
11
- | 'actorDestroyedCleanup'
12
- | 'nativeActorNode'
13
- | 'nativeActorNodeProvider'
14
- | 'nativeActorCompletionTableProvider'
15
- | 'shutdownSignal'
16
- | 'metrics'
11
+ 'nativeActorNode' | 'nativeActorNodeProvider' | 'nativeActorCompletionTableProvider'
17
12
  >;
18
13
 
19
14
  export class ZLinkTransferredActorRollbackCoordinator {
20
- private readonly tasks = new Map<string, Promise<void>>();
21
-
22
15
  constructor(
23
16
  private readonly states: Map<string, ZLinkActorRuntimeState>,
24
- private readonly options: ZLinkTransferredActorRollbackOptions
17
+ private readonly options: ZLinkTransferredActorRollbackOptions,
18
+ private readonly finalize: (actorId: string, state: ZLinkActorRuntimeState) => Promise<void>
25
19
  ) {}
26
20
 
27
21
  async rollback(actor: ZLinkActor, signal?: AbortSignal): Promise<void> {
@@ -37,54 +31,10 @@ export class ZLinkTransferredActorRollbackCoordinator {
37
31
 
38
32
  const actorRef = state.nativeActorRef;
39
33
  const node = this.options.nativeActorNode ?? this.options.nativeActorNodeProvider?.();
40
- try {
41
- if (node !== undefined && actorRef !== undefined) {
42
- await this.destroyNativeActor(node, actorRef, signal);
43
- }
44
- } catch (error) {
45
- this.schedule(actor, state, node, actorRef);
46
- throw error;
47
- }
48
- this.complete(actor, state);
49
- }
50
-
51
- private schedule(
52
- actor: ZLinkActor,
53
- state: ZLinkActorRuntimeState,
54
- node: ZLinkBackendMeshNode | undefined,
55
- actorRef: ZLinkBackendActorRef | undefined
56
- ): void {
57
- if (this.tasks.has(actor.context.actorId)) {
58
- return;
59
- }
60
- const task = this.retry(actor, state, node, actorRef).finally(() =>
61
- this.tasks.delete(actor.context.actorId)
62
- );
63
- this.tasks.set(actor.context.actorId, task);
64
- }
65
-
66
- private async retry(
67
- actor: ZLinkActor,
68
- state: ZLinkActorRuntimeState,
69
- node: ZLinkBackendMeshNode | undefined,
70
- actorRef: ZLinkBackendActorRef | undefined
71
- ): Promise<void> {
72
- const retryDelay = new ZLinkActorRetryDelay();
73
- while (
74
- this.states.get(actor.context.actorId) === state &&
75
- this.options.shutdownSignal?.aborted !== true
76
- ) {
77
- if (!(await retryDelay.wait(this.options.shutdownSignal))) return;
78
- try {
79
- if (node !== undefined && actorRef !== undefined) {
80
- await this.destroyNativeActor(node, actorRef);
81
- }
82
- this.complete(actor, state);
83
- return;
84
- } catch {
85
- // The tombstone prevents dispatch while the next retry is pending.
86
- }
34
+ if (node !== undefined && actorRef !== undefined) {
35
+ await this.destroyNativeActor(node, actorRef, signal);
87
36
  }
37
+ await this.complete(actor, state);
88
38
  }
89
39
 
90
40
  private async destroyNativeActor(
@@ -116,13 +66,12 @@ export class ZLinkTransferredActorRollbackCoordinator {
116
66
  }
117
67
  }
118
68
 
119
- private complete(actor: ZLinkActor, state: ZLinkActorRuntimeState): void {
69
+ private async complete(actor: ZLinkActor, state: ZLinkActorRuntimeState): Promise<void> {
120
70
  if (this.states.get(actor.context.actorId) !== state) {
121
71
  return;
122
72
  }
123
- this.options.actorDestroyedCleanup?.(actor.context.actorId);
124
- state.clearAfterDestroy();
125
- this.states.delete(actor.context.actorId);
126
- this.options.metrics?.change('zlink.actor.count', -1);
73
+ await state.getOrStartDestroy(createActorMembership(actor).actor.nodeRid, () =>
74
+ this.finalize(actor.context.actorId, state)
75
+ );
127
76
  }
128
77
  }