@zlink-systems/framework 0.25.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
  3. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  4. package/dist/contracts/Common/CoreTypes.js +7 -0
  5. package/dist/contracts/Common/index.d.ts +1 -1
  6. package/dist/contracts/Common/index.js +0 -1
  7. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  8. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  9. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  10. package/dist/contracts/Configuration/Registration.js +58 -36
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  14. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  15. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  16. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  17. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  18. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  19. package/dist/contracts/Handlers/JsonContract.js +10 -4
  20. package/dist/contracts/Locations/Authority.d.ts +1 -1
  21. package/dist/contracts/Locations/Authority.js +3 -2
  22. package/dist/contracts/Locations/Options.js +1 -1
  23. package/dist/contracts/Locations/Stores.d.ts +12 -0
  24. package/dist/contracts/Locations/Stores.js +9 -0
  25. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
  26. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  27. package/dist/internal.d.ts +5 -0
  28. package/dist/internal.js +16 -1
  29. package/dist/nest-integration.d.ts +4 -2
  30. package/dist/nest-integration.js +14 -4
  31. package/dist/runtime/abort.d.ts +1 -0
  32. package/dist/runtime/abort.js +8 -5
  33. package/dist/runtime/activation-admission.d.ts +28 -0
  34. package/dist/runtime/activation-admission.js +57 -0
  35. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  36. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  37. package/dist/runtime/actors/actor-client.d.ts +2 -2
  38. package/dist/runtime/actors/actor-client.js +42 -143
  39. package/dist/runtime/actors/actor-context.d.ts +3 -5
  40. package/dist/runtime/actors/actor-context.js +19 -17
  41. package/dist/runtime/actors/actor-handoff.d.ts +13 -7
  42. package/dist/runtime/actors/actor-handoff.js +36 -25
  43. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  44. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  45. package/dist/runtime/actors/actor-local-native-join.js +85 -123
  46. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  47. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  48. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  49. package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
  50. package/dist/runtime/actors/actor-remote-joiner.js +11 -17
  51. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  52. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  53. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  54. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  55. package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
  56. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  57. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  58. package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
  59. package/dist/runtime/actors/bound-session-wire.js +2 -7
  60. package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
  61. package/dist/runtime/actors/deferred-join-completion.js +21 -0
  62. package/dist/runtime/actors/index.d.ts +10 -8
  63. package/dist/runtime/actors/index.js +101 -73
  64. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  65. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  66. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  67. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  68. package/dist/runtime/admission.d.ts +7 -1
  69. package/dist/runtime/admission.js +11 -1
  70. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  71. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  72. package/dist/runtime/backend/contracts/index.d.ts +8 -33
  73. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
  74. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  75. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  76. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
  77. package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
  78. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
  79. package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
  80. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  81. package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
  82. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  83. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
  84. package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
  85. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
  86. package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
  87. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  88. package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
  89. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  90. package/dist/runtime/backend/runtime-values.js +2 -0
  91. package/dist/runtime/channels/channel-clients.d.ts +20 -9
  92. package/dist/runtime/channels/channel-clients.js +68 -60
  93. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  94. package/dist/runtime/channels/channel-envelope.js +47 -29
  95. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  96. package/dist/runtime/channels/channel-outbound-operations.js +9 -18
  97. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  98. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  99. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  100. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  101. package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
  102. package/dist/runtime/channels/channel-runtime-manager.js +4 -12
  103. package/dist/runtime/channels/channel-socket-options.js +3 -2
  104. package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
  105. package/dist/runtime/channels/channel-socket-registry.js +296 -235
  106. package/dist/runtime/channels/channel-transports.d.ts +11 -20
  107. package/dist/runtime/channels/channel-transports.js +68 -47
  108. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  109. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  110. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  111. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  112. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  113. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  114. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  115. package/dist/runtime/channels/fanout-location-runtime.js +133 -81
  116. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  117. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  118. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  119. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  120. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  121. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  122. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  123. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  124. package/dist/runtime/diagnostics/flow-context.js +16 -2
  125. package/dist/runtime/diagnostics/index.d.ts +4 -2
  126. package/dist/runtime/diagnostics/index.js +14 -4
  127. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  128. package/dist/runtime/diagnostics/message-flow.js +10 -19
  129. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  130. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  131. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  132. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  133. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  134. package/dist/runtime/disposal.d.ts +5 -0
  135. package/dist/runtime/disposal.js +22 -0
  136. package/dist/runtime/execution/index.d.ts +22 -9
  137. package/dist/runtime/execution/index.js +107 -37
  138. package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
  139. package/dist/runtime/execution/serial-execution-queue.js +99 -26
  140. package/dist/runtime/execution/state-lane.d.ts +8 -1
  141. package/dist/runtime/execution/state-lane.js +118 -3
  142. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  143. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  144. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  145. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  146. package/dist/runtime/foundation/listener-records.d.ts +11 -0
  147. package/dist/runtime/foundation/listener-records.js +20 -0
  148. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  149. package/dist/runtime/foundation/operation-identity.js +9 -5
  150. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  151. package/dist/runtime/foundation/operation-registry.js +34 -44
  152. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
  153. package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
  154. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  155. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  156. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
  157. package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
  158. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  159. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  160. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  161. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  162. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  163. package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
  164. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  165. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  166. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  167. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
  168. package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
  169. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
  170. package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
  171. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  172. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  173. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  174. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
  175. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  176. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  177. package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
  178. package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
  179. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
  180. package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
  181. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
  182. package/dist/runtime/foundation/service-topology-registry.js +22 -61
  183. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  184. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  185. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  186. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  187. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  188. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  189. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  190. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  191. package/dist/runtime/framework-errors-internal.js +343 -122
  192. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  193. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  194. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  195. package/dist/runtime/host/actor-packet-relay.js +48 -91
  196. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  197. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  198. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  199. package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
  200. package/dist/runtime/host/actor-transfer-runtime.js +210 -256
  201. package/dist/runtime/host/application-job-queue.js +16 -33
  202. package/dist/runtime/host/bound-session-relay.js +1 -1
  203. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  204. package/dist/runtime/host/index.d.ts +19 -14
  205. package/dist/runtime/host/index.js +234 -175
  206. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  207. package/dist/runtime/host/instance-activation-authority.js +17 -45
  208. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  209. package/dist/runtime/host/location-runtime-owner.js +2 -2
  210. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  211. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  212. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  213. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  214. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  215. package/dist/runtime/host/remote-bound-session-relay.js +11 -23
  216. package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
  217. package/dist/runtime/host/route-mesh-runtime.js +178 -257
  218. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  219. package/dist/runtime/host/runtime-shutdown.js +18 -21
  220. package/dist/runtime/host/service-relocation-control.js +6 -1
  221. package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
  222. package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
  223. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  224. package/dist/runtime/host/spot-address-transport.js +34 -136
  225. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  226. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  227. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
  228. package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
  229. package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
  230. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
  231. package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
  232. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  233. package/dist/runtime/locations/authority-key-codec.js +4 -3
  234. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  235. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  236. package/dist/runtime/locations/creation-operation-id.js +6 -4
  237. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  238. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  239. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  240. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  241. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  242. package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
  243. package/dist/runtime/locations/key-codec.js +3 -2
  244. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  245. package/dist/runtime/locations/lease-tracker.js +7 -11
  246. package/dist/runtime/locations/lifecycle.d.ts +5 -10
  247. package/dist/runtime/locations/lifecycle.js +4 -33
  248. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  249. package/dist/runtime/locations/location-store-failure.js +7 -0
  250. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  251. package/dist/runtime/locations/location-store-pages.js +13 -0
  252. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  253. package/dist/runtime/locations/location-store-repository.js +303 -332
  254. package/dist/runtime/locations/relocation-blob.js +18 -5
  255. package/dist/runtime/locations/resolvers.d.ts +5 -5
  256. package/dist/runtime/locations/resolvers.js +44 -30
  257. package/dist/runtime/locations/runtime.d.ts +5 -4
  258. package/dist/runtime/locations/runtime.js +123 -92
  259. package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
  260. package/dist/runtime/locations/spot-location-claims.js +40 -23
  261. package/dist/runtime/messaging/payload-codec.js +26 -20
  262. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  263. package/dist/runtime/messaging/submission-result.js +48 -0
  264. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
  265. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
  266. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
  267. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
  268. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
  269. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
  270. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
  271. package/dist/runtime/spots/index.d.ts +29 -29
  272. package/dist/runtime/spots/index.js +441 -313
  273. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
  274. package/dist/runtime/spots/spot-activation-registry.js +27 -60
  275. package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
  276. package/dist/runtime/spots/spot-activation-state.js +4 -17
  277. package/dist/runtime/spots/spot-activation.d.ts +10 -9
  278. package/dist/runtime/spots/spot-activation.js +103 -81
  279. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  280. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  281. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  282. package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
  283. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
  284. package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
  285. package/dist/runtime/spots/spot-actor-membership.js +44 -53
  286. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  287. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  288. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  289. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  290. package/dist/runtime/spots/spot-context.d.ts +2 -2
  291. package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
  292. package/dist/runtime/spots/spot-entry-activation.js +9 -21
  293. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  294. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  295. package/dist/runtime/spots/spot-manager-public.js +6 -5
  296. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  297. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
  298. package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
  299. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  300. package/dist/runtime/spots/spot-outbound.js +10 -37
  301. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  302. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  303. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  304. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  305. package/dist/runtime/spots/spot-route-replies.js +3 -1
  306. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
  307. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
  308. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
  309. package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
  310. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  311. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  312. package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
  313. package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
  314. package/dist/runtime/spots/spot-serial-executor.js +9 -2
  315. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
  316. package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
  317. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  318. package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
  319. package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
  320. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
  321. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  322. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  323. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  324. package/dist/runtime/streams/bound-session-service.js +12 -19
  325. package/dist/runtime/streams/index.d.ts +15 -14
  326. package/dist/runtime/streams/index.js +38 -39
  327. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  328. package/dist/runtime/streams/managed-stream.js +17 -8
  329. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  330. package/dist/runtime/streams/protocol.d.ts +6 -33
  331. package/dist/runtime/streams/protocol.js +38 -110
  332. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  333. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  334. package/dist/runtime/streams/session-calls.d.ts +1 -1
  335. package/dist/runtime/streams/session-calls.js +5 -4
  336. package/dist/runtime/streams/session-context.d.ts +6 -6
  337. package/dist/runtime/streams/session-context.js +22 -4
  338. package/dist/runtime/streams/session-requests.js +2 -1
  339. package/dist/runtime/streams/session-serial-executor.js +2 -2
  340. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  341. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  342. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  343. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  344. package/dist/runtime/workers/index.d.ts +2 -2
  345. package/dist/runtime/workers/index.js +5 -4
  346. package/package.json +3 -3
  347. package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
  348. package/src/contracts/Common/CoreTypes.ts +7 -0
  349. package/src/contracts/Common/index.ts +1 -1
  350. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  351. package/src/contracts/Configuration/Registration.ts +92 -48
  352. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  353. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  354. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  355. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  356. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  357. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  358. package/src/contracts/Handlers/JsonContract.ts +14 -4
  359. package/src/contracts/Locations/Authority.ts +7 -3
  360. package/src/contracts/Locations/Options.ts +1 -1
  361. package/src/contracts/Locations/Stores.ts +14 -0
  362. package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
  363. package/src/contracts/Spots/Contracts.ts +1 -1
  364. package/src/internal.ts +15 -0
  365. package/src/nest-integration.ts +28 -10
  366. package/src/runtime/abort.ts +6 -5
  367. package/src/runtime/activation-admission.ts +72 -0
  368. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  369. package/src/runtime/actors/actor-client.ts +77 -204
  370. package/src/runtime/actors/actor-context.ts +45 -39
  371. package/src/runtime/actors/actor-handoff.ts +55 -45
  372. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  373. package/src/runtime/actors/actor-local-native-join.ts +174 -215
  374. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  375. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  376. package/src/runtime/actors/actor-remote-joiner.ts +15 -36
  377. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  378. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  379. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  380. package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
  381. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  382. package/src/runtime/actors/actor-source-transfer.ts +5 -18
  383. package/src/runtime/actors/bound-session-wire.ts +2 -8
  384. package/src/runtime/actors/deferred-join-completion.ts +44 -0
  385. package/src/runtime/actors/index.ts +122 -88
  386. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  387. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  388. package/src/runtime/admission.ts +13 -2
  389. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  390. package/src/runtime/backend/contracts/index.ts +15 -42
  391. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
  392. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  393. package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
  394. package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
  395. package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
  396. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  397. package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
  398. package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
  399. package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
  400. package/src/runtime/backend/raw-binding-port.ts +14 -1
  401. package/src/runtime/backend/runtime-values.ts +4 -1
  402. package/src/runtime/channels/channel-clients.ts +132 -96
  403. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  404. package/src/runtime/channels/channel-envelope.ts +58 -29
  405. package/src/runtime/channels/channel-outbound-operations.ts +10 -31
  406. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  407. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  408. package/src/runtime/channels/channel-runtime-manager.ts +8 -15
  409. package/src/runtime/channels/channel-socket-options.ts +8 -2
  410. package/src/runtime/channels/channel-socket-registry.ts +369 -262
  411. package/src/runtime/channels/channel-transports.ts +161 -115
  412. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  413. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  414. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  415. package/src/runtime/channels/fanout-location-runtime.ts +175 -106
  416. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  417. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  418. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  419. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  420. package/src/runtime/diagnostics/flow-context.ts +16 -2
  421. package/src/runtime/diagnostics/index.ts +27 -17
  422. package/src/runtime/diagnostics/message-flow.ts +15 -25
  423. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  424. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  425. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  426. package/src/runtime/disposal.ts +19 -0
  427. package/src/runtime/execution/index.ts +116 -38
  428. package/src/runtime/execution/serial-execution-queue.ts +179 -34
  429. package/src/runtime/execution/state-lane.ts +142 -4
  430. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  431. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  432. package/src/runtime/foundation/listener-records.ts +21 -0
  433. package/src/runtime/foundation/operation-identity.ts +11 -5
  434. package/src/runtime/foundation/operation-registry.ts +33 -50
  435. package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
  436. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  437. package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
  438. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  439. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  440. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  441. package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
  442. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  443. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  444. package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
  445. package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
  446. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  447. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  448. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
  449. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  450. package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
  451. package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
  452. package/src/runtime/foundation/service-topology-registry.ts +30 -79
  453. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  454. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  455. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  456. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  457. package/src/runtime/framework-errors-internal.ts +380 -134
  458. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  459. package/src/runtime/host/actor-packet-relay.ts +57 -147
  460. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  461. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  462. package/src/runtime/host/actor-transfer-runtime.ts +266 -418
  463. package/src/runtime/host/application-job-queue.ts +28 -34
  464. package/src/runtime/host/bound-session-relay.ts +1 -2
  465. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  466. package/src/runtime/host/index.ts +408 -312
  467. package/src/runtime/host/instance-activation-authority.ts +89 -109
  468. package/src/runtime/host/location-runtime-owner.ts +4 -2
  469. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  470. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  471. package/src/runtime/host/remote-bound-session-relay.ts +12 -44
  472. package/src/runtime/host/route-mesh-runtime.ts +236 -275
  473. package/src/runtime/host/runtime-shutdown.ts +17 -21
  474. package/src/runtime/host/service-relocation-control.ts +14 -1
  475. package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
  476. package/src/runtime/host/spot-address-transport.ts +73 -195
  477. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  478. package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
  479. package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
  480. package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
  481. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  482. package/src/runtime/locations/authority-key-codec.ts +7 -3
  483. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  484. package/src/runtime/locations/creation-operation-id.ts +6 -3
  485. package/src/runtime/locations/domain-store-contract.ts +12 -3
  486. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  487. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  488. package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
  489. package/src/runtime/locations/key-codec.ts +3 -2
  490. package/src/runtime/locations/lease-tracker.ts +8 -14
  491. package/src/runtime/locations/lifecycle.ts +16 -45
  492. package/src/runtime/locations/location-store-failure.ts +4 -0
  493. package/src/runtime/locations/location-store-pages.ts +18 -0
  494. package/src/runtime/locations/location-store-repository.ts +450 -478
  495. package/src/runtime/locations/relocation-blob.ts +17 -6
  496. package/src/runtime/locations/resolvers.ts +90 -58
  497. package/src/runtime/locations/runtime.ts +220 -110
  498. package/src/runtime/locations/spot-location-claims.ts +54 -26
  499. package/src/runtime/messaging/payload-codec.ts +35 -24
  500. package/src/runtime/messaging/submission-result.ts +57 -1
  501. package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
  502. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
  503. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
  504. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
  505. package/src/runtime/spots/index.ts +687 -437
  506. package/src/runtime/spots/spot-activation-registry.ts +42 -71
  507. package/src/runtime/spots/spot-activation-state.ts +4 -16
  508. package/src/runtime/spots/spot-activation.ts +167 -115
  509. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  510. package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
  511. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
  512. package/src/runtime/spots/spot-actor-membership.ts +107 -75
  513. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  514. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  515. package/src/runtime/spots/spot-context.ts +3 -3
  516. package/src/runtime/spots/spot-entry-activation.ts +13 -33
  517. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  518. package/src/runtime/spots/spot-manager-public.ts +29 -21
  519. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  520. package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
  521. package/src/runtime/spots/spot-outbound.ts +47 -68
  522. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  523. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  524. package/src/runtime/spots/spot-route-replies.ts +6 -4
  525. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
  526. package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
  527. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  528. package/src/runtime/spots/spot-runtime-ports.ts +10 -43
  529. package/src/runtime/spots/spot-serial-executor.ts +10 -2
  530. package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
  531. package/src/runtime/spots/spot-timer.ts +3 -2
  532. package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
  533. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
  534. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  535. package/src/runtime/streams/bound-session-service.ts +23 -37
  536. package/src/runtime/streams/index.ts +102 -88
  537. package/src/runtime/streams/managed-stream.ts +29 -10
  538. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  539. package/src/runtime/streams/protocol.ts +34 -88
  540. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  541. package/src/runtime/streams/session-calls.ts +6 -5
  542. package/src/runtime/streams/session-context.ts +54 -10
  543. package/src/runtime/streams/session-requests.ts +2 -1
  544. package/src/runtime/streams/session-serial-executor.ts +2 -2
  545. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  546. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  547. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  548. package/src/runtime/workers/index.ts +13 -12
  549. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
  550. package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
  551. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  552. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  553. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  554. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  555. package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
  556. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  557. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -7,6 +7,8 @@ exports.decodeRemoteActorJoinPayload = decodeRemoteActorJoinPayload;
7
7
  exports.decodeHandoffBacklog = decodeHandoffBacklog;
8
8
  exports.decodeRemoteActorRef = decodeRemoteActorRef;
9
9
  exports.decodeRemoteBoundSessionTarget = decodeRemoteBoundSessionTarget;
10
+ const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
11
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
10
12
  const actors_1 = require("../actors");
11
13
  const runtime_message_1 = require("../backend/runtime-message");
12
14
  const routing_id_1 = require("../routing-id");
@@ -58,7 +60,7 @@ function decodeRemoteActorJoinPayload(payload, request, received, raw, envelope)
58
60
  request,
59
61
  requestContentType: typeof payload.requestContentType === 'string'
60
62
  ? payload.requestContentType
61
- : 'application/json'
63
+ : stream_wire_1.ZlinkStreamContentType.Json
62
64
  };
63
65
  }
64
66
  function decodeHandoffBacklog(value) {
@@ -179,8 +181,8 @@ function decodeBoundSessionServiceWireRelocation(value) {
179
181
  }
180
182
  function requireSpotId(value) {
181
183
  const bytes = Buffer.byteLength(value, 'utf8');
182
- if (bytes < 1 || bytes > 255) {
183
- throw new Error('Remote bound session SpotId must contain 1..255 UTF-8 bytes.');
184
+ if (bytes < 1 || bytes > CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES) {
185
+ throw new Error(`Remote bound session SpotId must contain 1..${CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes.`);
184
186
  }
185
187
  return value;
186
188
  }
@@ -1,10 +1,10 @@
1
- import type { ZLinkMessageSerializer, ZLinkSpot } from '../../contracts';
1
+ import { type ZLinkMessageSerializer, type ZLinkSpot } from '../../contracts';
2
2
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
3
+ import type { ZLinkApplicationWorkClaim } from '../admission';
3
4
  import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
4
5
  import type { ZLinkDispatchErrorReporter } from '../channels';
5
6
  import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
6
7
  import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
7
- import type { ZLinkApplicationWorkClaim } from '../admission';
8
8
  interface ZLinkSpotRoutePacketDispatchOptions {
9
9
  readonly packetHandlers: ReadonlyMap<string, readonly ZLinkSpotHandlerRegistration[]>;
10
10
  readonly nativeSpotId: string;
@@ -3,17 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkSpotRoutePacketDispatch = void 0;
4
4
  const contracts_1 = require("../../contracts");
5
5
  const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
6
+ const actors_1 = require("../actors");
7
+ const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
6
8
  const runtime_message_1 = require("../backend/runtime-message");
7
9
  const channel_envelope_1 = require("../channels/channel-envelope");
8
- const actors_1 = require("../actors");
9
- const handler_instance_scope_1 = require("../handlers/handler-instance-scope");
10
+ const spot_direct_envelope_1 = require("../channels/spot-direct-envelope");
11
+ const flow_context_1 = require("../diagnostics/flow-context");
10
12
  const serial_work_size_1 = require("../execution/serial-work-size");
13
+ const framework_errors_internal_1 = require("../framework-errors-internal");
14
+ const handler_instance_scope_1 = require("../handlers/handler-instance-scope");
11
15
  const spot_remote_codec_1 = require("./spot-remote-codec");
12
16
  const spot_route_replies_1 = require("./spot-route-replies");
13
- const flow_context_1 = require("../diagnostics/flow-context");
14
- const framework_errors_internal_1 = require("../framework-errors-internal");
15
- const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
16
- const SPOT_DIRECT_ENVELOPE = 'zlink.framework.spot-direct.v1';
17
17
  /** D5: reply metadata attached only to framework-self-generated errors. */
18
18
  const FRAMEWORK_ORIGIN_REPLY_METADATA = Object.freeze({
19
19
  [channel_envelope_1.ZLINK_FRAMEWORK_ORIGIN_METADATA_KEY]: channel_envelope_1.ZLINK_FRAMEWORK_ORIGIN_METADATA_VALUE
@@ -206,7 +206,7 @@ function decodeSpotDirectEnvelope(parts) {
206
206
  }
207
207
  try {
208
208
  const decoded = JSON.parse(parts[0].data().toString());
209
- if (decoded.marker !== SPOT_DIRECT_ENVELOPE ||
209
+ if (decoded.marker !== spot_direct_envelope_1.SPOT_DIRECT_ENVELOPE ||
210
210
  (decoded.kind !== 1 /* ZLinkChannelMessageKind.Request */ &&
211
211
  decoded.kind !== 3 /* ZLinkChannelMessageKind.Command */) ||
212
212
  typeof decoded.channelName !== 'string') {
@@ -232,7 +232,7 @@ function decodeSpotDirectEnvelope(parts) {
232
232
  }
233
233
  function encodeSpotDirectReply(ok, response, error) {
234
234
  return runtime_message_1.ZLinkBufferMessage.fromOwned(Buffer.from(JSON.stringify({
235
- marker: SPOT_DIRECT_ENVELOPE,
235
+ marker: spot_direct_envelope_1.SPOT_DIRECT_ENVELOPE,
236
236
  ok,
237
237
  response,
238
238
  error
@@ -1,7 +1,7 @@
1
- import type { ZLinkBackendMessageLike as MessageLike, ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
1
+ import type { ZLinkBackendReceived as BackendReceived, ZLinkBackendMessageLike as MessageLike } from '../backend/runtime-values';
2
2
  import { decodeChannelEnvelope } from '../channels/channel-envelope';
3
- import { encodeSpotRouteBridgeReply } from './spot-route-reply-wire';
4
3
  import type { ZLinkDecodedRemoteActorJoinRequest } from './spot-remote-codec';
4
+ import { encodeSpotRouteBridgeReply } from './spot-route-reply-wire';
5
5
  export interface ZLinkRouteReplySubmitOperation {
6
6
  message(message: MessageLike): ZLinkRouteReplySubmitOperation;
7
7
  submit(): void;
@@ -7,9 +7,11 @@ exports.submitRoutedActorJoinReply = submitRoutedActorJoinReply;
7
7
  exports.submitRoutedActorJoinError = submitRoutedActorJoinError;
8
8
  exports.appendRouteReplyParts = appendRouteReplyParts;
9
9
  exports.hasReplyToken = hasReplyToken;
10
+ const node_os_1 = require("node:os");
10
11
  const channel_envelope_1 = require("../channels/channel-envelope");
11
12
  const configuration_1 = require("../configuration");
12
13
  const spot_route_reply_wire_1 = require("./spot-route-reply-wire");
14
+ const nativeErrnoValues = node_os_1.constants.errno;
13
15
  function submitRouteReply(operation) {
14
16
  try {
15
17
  operation.submit();
@@ -70,5 +72,5 @@ function requireRoutedActorJoinEnvelope(decoded) {
70
72
  function isNativeBadAddress(error) {
71
73
  return (typeof error === 'object' &&
72
74
  error !== null &&
73
- Number(error.nativeErrno) === 14);
75
+ Number(error.nativeErrno) === nativeErrnoValues.EFAULT);
74
76
  }
@@ -1,8 +1,9 @@
1
1
  import type { ZLinkActor, ZLinkMessage, ZLinkMessageSerializer, ZLinkSpotActorJoinResult } from '../../contracts';
2
+ import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
3
+ import type { ZLinkRemoteBoundSessionTarget } from '../actors/actor-runtime-state';
2
4
  import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
3
5
  import { type ZLinkRoutedActorTransferProvider } from './spot-remote-codec';
4
6
  import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
5
- import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
6
7
  interface ZLinkRoutedActorAdmissionTarget {
7
8
  onActorJoin?(actorId: string, request: ZLinkMessage): Promise<ZLinkSpotActorJoinResult>;
8
9
  }
@@ -11,7 +12,7 @@ interface ZLinkSpotRoutedActorAdmissionOptions {
11
12
  readonly getTarget: () => ZLinkRoutedActorAdmissionTarget;
12
13
  readonly defaultAccept: boolean;
13
14
  readonly routedActorTransferProvider?: ZLinkRoutedActorTransferProvider;
14
- readonly commitTransferredActor?: (actor: ZLinkActor, backlog: readonly ZLinkActorHandoffPacket[]) => Promise<readonly ZLinkActorHandoffResult[]>;
15
+ readonly commitTransferredActor?: (actor: ZLinkActor, backlog: readonly ZLinkActorHandoffPacket[], sealedSession: ZLinkRemoteBoundSessionTarget | undefined) => Promise<readonly ZLinkActorHandoffResult[]>;
15
16
  readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
16
17
  readonly pendingAdmissionTimeoutMs?: number;
17
18
  /** Spec 27 §4: with tracing Off, inbound flow fields are neither validated nor carried forward. */
@@ -7,6 +7,7 @@ const payload_codec_1 = require("../messaging/payload-codec");
7
7
  const routing_id_1 = require("../routing-id");
8
8
  const spot_remote_codec_1 = require("./spot-remote-codec");
9
9
  const spot_route_replies_1 = require("./spot-route-replies");
10
+ const DEFAULT_PENDING_ADMISSION_TIMEOUT_MS = 30_000;
10
11
  class ZLinkSpotRoutedActorAdmission {
11
12
  options;
12
13
  pending = new Map();
@@ -139,7 +140,7 @@ class ZLinkSpotRoutedActorAdmission {
139
140
  throw new Error('Remote actor transfer commit cannot materialize the target actor.');
140
141
  }
141
142
  const { actor, actorRef } = await this.options.routedActorTransferProvider(decoded.actorId, decoded.actorType, decoded.transferAdapterKey, decoded.transferState, decoded.actorEntryNodeRid, decoded.remoteBoundSessionTarget);
142
- const handoffResults = (await this.options.commitTransferredActor?.(actor, decoded.handoffBacklog)) ?? [];
143
+ const handoffResults = (await this.options.commitTransferredActor?.(actor, decoded.handoffBacklog, decoded.remoteBoundSessionTarget)) ?? [];
143
144
  const commitReply = {
144
145
  accepted: true,
145
146
  actorNodeRid: String(actorRef.nodeRid),
@@ -183,7 +184,7 @@ class ZLinkSpotRoutedActorAdmission {
183
184
  pending.deadline = setTimeout(() => {
184
185
  if (this.pending.get(transferId) === pending)
185
186
  this.pending.delete(transferId);
186
- }, this.options.pendingAdmissionTimeoutMs ?? 30_000);
187
+ }, this.options.pendingAdmissionTimeoutMs ?? DEFAULT_PENDING_ADMISSION_TIMEOUT_MS);
187
188
  pending.deadline.unref();
188
189
  }
189
190
  closeDecoded(decoded) {
@@ -3,7 +3,7 @@ import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProvider
3
3
  import type { RoutingId } from '../../contracts';
4
4
  import type { ActorRef } from '../../contracts/Common/ActorRef';
5
5
  import type { ZLinkRemoteActorPacketTarget, ZLinkRemoteBoundSessionTarget } from '../actors';
6
- import type { ZLinkBackendReceived, ZLinkBackendSpot } from '../backend/contracts';
6
+ import type { ZLinkBackendReceived } from '../backend/contracts';
7
7
  import type { ZLinkDispatchErrorReporter } from '../channels';
8
8
  import type { ZLinkActorPacketDelivery, ZLinkActorResponseOptions } from './spot-actor-packet-dispatch';
9
9
  import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
@@ -15,15 +15,13 @@ interface ZLinkRoutedFrameAdmissionTarget {
15
15
  onActorJoin?(actorId: string, request: ZLinkMessage): Promise<ZLinkSpotActorJoinResult>;
16
16
  }
17
17
  interface ZLinkSpotRoutedFrameDispatchOptions {
18
- readonly nativeSpot: ZLinkBackendSpot;
19
- readonly createReceived: () => ZLinkBackendReceived;
20
18
  readonly nativeSpotId: string;
21
19
  readonly serial: ZLinkSpotSerialTurnExecutor;
22
20
  readonly resolveActor: (actorId: string) => ZLinkActor | undefined;
23
21
  readonly getTarget: () => ZLinkRoutedFrameAdmissionTarget & ZLinkSpot;
24
22
  readonly defaultAccept: boolean;
25
23
  readonly routedActorTransferProvider?: ZLinkRoutedActorTransferProvider;
26
- readonly commitTransferredActor?: (actor: ZLinkActor, backlog: readonly ZLinkActorHandoffPacket[]) => Promise<readonly ZLinkActorHandoffResult[]>;
24
+ readonly commitTransferredActor?: (actor: ZLinkActor, backlog: readonly ZLinkActorHandoffPacket[], sealedSession: ZLinkRemoteBoundSessionTarget | undefined) => Promise<readonly ZLinkActorHandoffResult[]>;
27
25
  readonly actorPacketHandler?: (delivery: ZLinkActorPacketDelivery) => Promise<unknown>;
28
26
  readonly routedBoundSessionReceiver?: (actorId: string, message: unknown, packetName: string | undefined, metadata: ReadonlyMap<string, string>, actorRef?: ActorRef, actorPacketTarget?: unknown, signal?: AbortSignal) => Promise<void>;
29
27
  readonly routedBoundSessionResponseReceiver?: (actorId: string, packetName: string, requestSeq: bigint, message: unknown, replyOptions: ZLinkActorResponseOptions, actorPacketTarget?: unknown, signal?: AbortSignal) => Promise<void>;
@@ -34,11 +32,9 @@ interface ZLinkSpotRoutedFrameDispatchOptions {
34
32
  readonly providerResolver?: ZLinkProviderResolver;
35
33
  readonly dispatchErrors?: ZLinkDispatchErrorReporter;
36
34
  readonly claimApplicationWork?: () => ZLinkApplicationWorkClaim;
37
- readonly waitIdle: () => Promise<void>;
38
35
  }
39
36
  export declare class ZLinkSpotRoutedFrameDispatch {
40
37
  private readonly options;
41
- private routeDraining;
42
38
  private readonly packetHandlers;
43
39
  private readonly routedBoundSessionDispatch;
44
40
  private readonly actorPacketRelayDispatch;
@@ -46,7 +42,6 @@ export declare class ZLinkSpotRoutedFrameDispatch {
46
42
  private readonly routedActorAdmission;
47
43
  constructor(options: ZLinkSpotRoutedFrameDispatchOptions);
48
44
  configurePacketHandlers(registrations: readonly ZLinkSpotHandlerRegistration[]): void;
49
- drain(received?: ZLinkBackendReceived | undefined, retryDeadlineMs?: number): Promise<void>;
50
45
  dispatchFromEvent(received: ZLinkBackendReceived): Promise<void>;
51
46
  private channelCodecs;
52
47
  private dispatch;
@@ -2,14 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkSpotRoutedFrameDispatch = void 0;
4
4
  const spot_remote_route_codec_1 = require("./spot-remote-route-codec");
5
- const spot_native_flags_1 = require("./spot-native-flags");
6
5
  const spot_actor_packet_relay_dispatch_1 = require("./spot-actor-packet-relay-dispatch");
7
6
  const spot_route_packet_dispatch_1 = require("./spot-route-packet-dispatch");
8
7
  const spot_routed_actor_admission_1 = require("./spot-routed-actor-admission");
9
8
  const spot_routed_bound_session_dispatch_1 = require("./spot-routed-bound-session-dispatch");
10
9
  class ZLinkSpotRoutedFrameDispatch {
11
10
  options;
12
- routeDraining = false;
13
11
  packetHandlers = new Map();
14
12
  routedBoundSessionDispatch;
15
13
  actorPacketRelayDispatch;
@@ -61,62 +59,6 @@ class ZLinkSpotRoutedFrameDispatch {
61
59
  this.packetHandlers.set(packetName, existing);
62
60
  }
63
61
  }
64
- async drain(received = undefined, retryDeadlineMs = performance.now()) {
65
- if (this.routeDraining) {
66
- if (received !== undefined) {
67
- try {
68
- await this.dispatch(received);
69
- }
70
- finally {
71
- received.close();
72
- }
73
- }
74
- return;
75
- }
76
- this.routeDraining = true;
77
- try {
78
- if (received !== undefined) {
79
- try {
80
- await this.dispatch(received);
81
- }
82
- finally {
83
- received.close();
84
- }
85
- received = undefined;
86
- }
87
- for (;;) {
88
- received ??= this.options.createReceived();
89
- try {
90
- if (!this.options.nativeSpot.recvRoute(received, spot_native_flags_1.ZLINK_RECV_DONT_WAIT)) {
91
- received.close();
92
- await this.options.waitIdle();
93
- return;
94
- }
95
- }
96
- catch (error) {
97
- if (isRouteRecvRetryable(error)) {
98
- closeReceivedQuietly(received);
99
- if (performance.now() < retryDeadlineMs) {
100
- setTimeout(() => void this.drain(undefined, retryDeadlineMs), 10);
101
- }
102
- return;
103
- }
104
- received.close();
105
- throw error;
106
- }
107
- try {
108
- await this.dispatch(received);
109
- }
110
- finally {
111
- received.close();
112
- }
113
- received = this.options.createReceived();
114
- }
115
- }
116
- finally {
117
- this.routeDraining = false;
118
- }
119
- }
120
62
  async dispatchFromEvent(received) {
121
63
  try {
122
64
  await this.dispatch(received);
@@ -145,18 +87,7 @@ class ZLinkSpotRoutedFrameDispatch {
145
87
  if (await this.routePacketDispatch.dispatch(received)) {
146
88
  return;
147
89
  }
148
- await this.routedActorAdmission.admit(received);
90
+ await this.options.serial.executeLifecycleOperation(() => this.routedActorAdmission.admit(received));
149
91
  }
150
92
  }
151
93
  exports.ZLinkSpotRoutedFrameDispatch = ZLinkSpotRoutedFrameDispatch;
152
- function isRouteRecvRetryable(error) {
153
- return (typeof error === 'object' &&
154
- error !== null &&
155
- [201, 202, 204].includes(Number(error.result)));
156
- }
157
- function closeReceivedQuietly(received) {
158
- try {
159
- received.close();
160
- }
161
- catch { }
162
- }
@@ -6,6 +6,7 @@ import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
6
6
  import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
7
7
  import type { ZLinkSerialWorkOptions } from '../execution/serial-execution-queue';
8
8
  interface ZLinkRoutedSpotPacketActivation {
9
+ readonly objectGeneration?: bigint;
9
10
  readonly meshName?: string;
10
11
  readonly spotId: RoutingId;
11
12
  readonly spot: ZLinkSpot;
@@ -28,6 +29,9 @@ interface ZLinkRoutedSpotPacketContext {
28
29
  readonly signal?: AbortSignal;
29
30
  /** Wait until a recovered activation has actually entered its first handler. */
30
31
  readonly awaitFirstHandlerTurn?: boolean;
32
+ readonly onOneWayError?: (error: unknown) => void;
33
+ /** Retains the caller's Instance address intent through an incarnation boundary. */
34
+ readonly activationRecord?: import('../foundation/service-runtime-contracts').ReceiveRecord;
31
35
  }
32
36
  export declare class ZLinkRoutedSpotPacketDispatch {
33
37
  private readonly options;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkRoutedSpotPacketDispatch = void 0;
4
+ const dispatch_error_details_1 = require("../diagnostics/dispatch-error-details");
4
5
  const contracts_1 = require("../../contracts");
5
6
  const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
6
7
  const configuration_1 = require("../configuration");
@@ -58,17 +59,42 @@ class ZLinkRoutedSpotPacketDispatch {
58
59
  const applicationClaim = activation.meshName === undefined
59
60
  ? undefined
60
61
  : this.options.claimApplicationWork?.(activation.meshName);
61
- const runHandler = async () => {
62
+ const originalRecord = context.activationRecord?.activationRecord;
63
+ const instanceIntent = originalRecord?.activation === 'missing' ||
64
+ (originalRecord?.activation === 'ready' && originalRecord.instanceIntent);
65
+ const runHandler = async (failure) => {
62
66
  try {
67
+ if (failure !== undefined)
68
+ throw failure;
69
+ const current = this.options.resolveActivation(spotId);
70
+ if (current === undefined ||
71
+ (!instanceIntent &&
72
+ (current !== activation ||
73
+ (originalRecord?.activation === 'ready' &&
74
+ originalRecord.route.objectGeneration !== current.objectGeneration)))) {
75
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, `Spot '${String(spotId)}' is not active.`);
76
+ }
77
+ if (context.activationRecord?.deadlineUnixMs !== undefined &&
78
+ context.activationRecord.deadlineUnixMs < BigInt(Date.now())) {
79
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded, `Spot '${String(spotId)}' request deadline has expired.`);
80
+ }
81
+ const currentRegistrations = current === activation
82
+ ? registrations
83
+ : current.handlers
84
+ .snapshot()
85
+ .filter((registration) => registration.kind === 'packet' &&
86
+ (registration.packetName ?? registration.handlerType.name) ===
87
+ (packetName ?? ''));
63
88
  // Decode only after the Spot has acquired both application admission
64
89
  // and its execution authority.
65
90
  const payload = decodePayload();
66
- for (const registration of registrations) {
67
- const handler = await (0, handler_instance_scope_1.resolveLifecycleHandler)(activation.spot, registration.handlerType, this.options.providerResolver);
91
+ for (const registration of currentRegistrations) {
92
+ const handler = await (0, handler_instance_scope_1.resolveLifecycleHandler)(current.spot, registration.handlerType, this.options.providerResolver);
68
93
  resolveFirstHandlerTurn?.();
69
94
  resolveFirstHandlerTurn = undefined;
95
+ context.activationRecord?.onHandlerTurnStarted?.();
70
96
  (0, application_job_queue_scope_1.releaseApplicationJobPermitBeforeHandler)();
71
- response = await handler.handle(activation.spot, payload, {
97
+ response = await handler.handle(current.spot, payload, {
72
98
  channelName: context.channelName,
73
99
  contentType: context.contentType,
74
100
  packetName: packetName,
@@ -94,8 +120,24 @@ class ZLinkRoutedSpotPacketDispatch {
94
120
  detachedApplicationPermit?.releaseAfterInternalProcessing();
95
121
  applicationClaim?.close();
96
122
  }
97
- }, (error) => this.reportFailure(spotId, packetName, context, false, error), context.workOptions, { signal: context.signal });
98
- await firstHandlerTurn;
123
+ }, (error) => {
124
+ if (context.onOneWayError === undefined) {
125
+ this.reportFailure(spotId, packetName, context, false, error);
126
+ }
127
+ else if (resolveFirstHandlerTurn === undefined) {
128
+ context.onOneWayError(error);
129
+ }
130
+ }, context.workOptions, { signal: context.signal }, instanceIntent
131
+ ? async (failure) => {
132
+ try {
133
+ await runHandler(failure);
134
+ }
135
+ finally {
136
+ detachedApplicationPermit?.releaseAfterInternalProcessing();
137
+ applicationClaim?.close();
138
+ }
139
+ }
140
+ : undefined);
99
141
  }
100
142
  catch (error) {
101
143
  detached = false;
@@ -103,16 +145,18 @@ class ZLinkRoutedSpotPacketDispatch {
103
145
  rejectFirstHandlerTurn?.(error);
104
146
  throw error;
105
147
  }
148
+ await firstHandlerTurn;
106
149
  }
107
150
  else {
108
151
  if (activation.serial.isCurrentTurn) {
109
152
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, `Spot '${spotId}' cannot await a request to its current serial turn.`);
110
153
  }
111
- await activation.serial.execute(runHandler, context.workOptions);
154
+ await activation.serial.execute(runHandler, context.workOptions, instanceIntent ? runHandler : undefined);
112
155
  }
113
156
  }
114
157
  catch (error) {
115
- this.reportFailure(spotId, packetName, context, returnResponse, error);
158
+ if (context.activationRecord?.activationRecord === undefined)
159
+ this.reportFailure(spotId, packetName, context, returnResponse, error);
116
160
  throw error;
117
161
  }
118
162
  finally {
@@ -122,16 +166,17 @@ class ZLinkRoutedSpotPacketDispatch {
122
166
  return returnResponse ? response : undefined;
123
167
  }
124
168
  reportFailure(spotId, packetName, context, returnResponse, error) {
125
- const frameworkErrorKind = error instanceof contracts_1.ZLinkFrameworkException ? (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) : undefined;
126
- this.options.dispatchErrors?.report({
127
- surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotRoute,
169
+ const reporter = this.options.dispatchErrors;
170
+ if (reporter?.captureEnabled() !== true)
171
+ return;
172
+ reporter.report({
173
+ surface: context.activationRecord?.activationRecord?.kind === 'instanceSpot'
174
+ ? ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.InstanceSpot
175
+ : ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotRoute,
128
176
  messageKind: returnResponse
129
177
  ? ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request
130
178
  : ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
131
- reason: frameworkErrorKind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.WorkerQueueFull ||
132
- frameworkErrorKind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded
133
- ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Backpressure
134
- : ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException,
179
+ reason: (0, dispatch_error_details_1.dispatchReasonFromError)(error),
135
180
  action: returnResponse ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.FailCaller : ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop,
136
181
  packetName,
137
182
  channelName: context.channelName,
@@ -140,6 +185,11 @@ class ZLinkRoutedSpotPacketDispatch {
140
185
  });
141
186
  }
142
187
  reportMissing(spotId, packetName, context, returnResponse) {
188
+ if (context.activationRecord?.activationRecord !== undefined) {
189
+ if (!returnResponse && context.onOneWayError !== undefined)
190
+ context.onOneWayError((0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.HandlerNotFound, `SPOT route handler not found: ${packetName}`));
191
+ return;
192
+ }
143
193
  this.options.dispatchErrors?.report({
144
194
  surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotRoute,
145
195
  messageKind: returnResponse
@@ -1,7 +1,7 @@
1
1
  import type { ActorRef, RoutingId, ZLinkActor, ZLinkActorJoinOperationId, ZLinkSpot } from '../../contracts';
2
2
  import type { Message } from '../../contracts/Common/Message';
3
3
  import type { ZLinkMessageFollowOrigin } from '../foundation/service-runtime-contracts';
4
- import type { ZLinkRemoteActorPacketTarget, ZLinkRemoteBoundSessionTarget, ZLinkDeferredJoinAcceptedRoot } from '../actors';
4
+ import type { ZLinkRemoteActorPacketTarget, ZLinkRemoteBoundSessionTarget, ZLinkDeferredJoinCompletion } from '../actors';
5
5
  import type { ZLinkActorHandoffDispatch } from '../actors/actor-handoff';
6
6
  import type { ZLinkActorResponseOptions } from './spot-actor-packet-dispatch';
7
7
  import type { ZLinkRemoteActorJoinActor, ZLinkRoutedActorTransferProvider } from './spot-remote-codec';
@@ -16,44 +16,28 @@ export interface ZLinkEntryActorRuntime {
16
16
  }>;
17
17
  }
18
18
  export interface ZLinkSpotActorTransferRuntime {
19
- prepareDeferredJoinAccepted(actorId: string, operationId: ZLinkActorJoinOperationId, actorRef: ActorRef, rawReply: Uint8Array, replyContentType?: string, signal?: AbortSignal, canonicalInventoryDigest?: string): Promise<ZLinkDeferredJoinAcceptedRoot>;
20
- discardDeferredJoinAccepted(root: ZLinkDeferredJoinAcceptedRoot, signal?: AbortSignal): Promise<void>;
21
- markDeferredJoinAcceptedCommitted(root: ZLinkDeferredJoinAcceptedRoot, actorRef: ActorRef, signal?: AbortSignal): Promise<ZLinkDeferredJoinAcceptedRoot>;
22
- commitAndDeliverDeferredJoinAccepted(root: ZLinkDeferredJoinAcceptedRoot, actor: ZLinkActor, actorRef: ActorRef, submitMailbox: <T>(operation: () => Promise<T>) => Promise<T>, signal?: AbortSignal): Promise<ZLinkDeferredJoinAcceptedRoot>;
19
+ prepareDeferredJoinAccepted(actorId: string, operationId: ZLinkActorJoinOperationId, actorRef: ActorRef, rawReply: Uint8Array, replyContentType?: string): ZLinkDeferredJoinCompletion;
20
+ deliverDeferredJoinCompletion(completion: ZLinkDeferredJoinCompletion, actor: ZLinkActor, actorRef: ActorRef, submitMailbox: <T>(operation: () => Promise<T>) => Promise<T>, signal?: AbortSignal): Promise<void>;
23
21
  getOrCreateRoutedActor(actorId: string, actorType: string, actorRef?: ActorRef, remoteBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, actorCreateRequest?: Message, signal?: AbortSignal): Promise<ZLinkRemoteActorJoinActor>;
24
22
  materializeRoutedActor: ZLinkRoutedActorTransferProvider;
25
23
  commitRoutedActorAuthority(actor: ZLinkActor, sourceActorRef: ActorRef, transferId: string, spotId: RoutingId, spotGeneration: bigint, membershipEpoch: bigint, deadlineAtMs: number, signal?: AbortSignal): Promise<import('../locations/internal-location-contracts').ZLinkAuthoritySnapshot>;
26
- rememberRoutedActorTransferTarget(actorId: string, target: ZLinkRemoteBoundSessionTarget | undefined): void;
27
- claimNativeActorLocation(actor: ZLinkActor, spotId: RoutingId, spotMeshName: string): Promise<ZLinkNativeActorJoinSnapshot>;
28
24
  claimRoutedActorLocation(actor: ZLinkActor, spotId: RoutingId, spotMeshName: string, joinedLocation?: {
29
25
  readonly spotGeneration: bigint;
30
26
  readonly membershipEpoch: bigint;
31
27
  }): Promise<void>;
32
- publishRoutedActorOwnership(actor: ZLinkActor): Promise<void>;
28
+ publishRoutedActorOwnership(actor: ZLinkActor, sealedSession: ZLinkRemoteBoundSessionTarget | undefined): Promise<void>;
33
29
  openRoutedActorSession(actor: ZLinkActor): Promise<void>;
34
30
  bindRoutedActorRef(actor: ZLinkActor, actorRef: ActorRef): void;
35
31
  commitRoutedActor(actor: ZLinkActor, spotId: RoutingId, spot: ZLinkSpot): void;
36
32
  clearRoutedActor(actor: ZLinkActor): void;
37
- rollbackNativeActorJoin(actor: ZLinkActor, snapshot: ZLinkNativeActorJoinSnapshot): Promise<void>;
38
33
  rollbackRoutedActor(actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
39
34
  notifyCoreSourceLeave(actor: ZLinkActor, callback: () => Promise<void>): Promise<void>;
40
35
  actorEntryNodeRid(actor: ZLinkActor): RoutingId | undefined;
41
36
  }
42
- export interface ZLinkNativeActorJoinSnapshot {
43
- readonly spotId?: RoutingId;
44
- readonly spot?: ZLinkSpot;
45
- readonly locationSpotId?: RoutingId;
46
- readonly spotMeshName?: string;
47
- readonly actorRef?: ActorRef;
48
- readonly spotGeneration?: bigint;
49
- readonly membershipEpoch?: bigint;
50
- readonly ownerNodeGeneration?: bigint;
51
- }
52
37
  export interface ZLinkSpotBoundSessionRuntime {
53
38
  receiveRoutedBoundSession(actorId: string, message: unknown, packetName: string | undefined, metadata: ReadonlyMap<string, string>, actorRef?: ActorRef, actorPacketTarget?: unknown, signal?: AbortSignal): Promise<void>;
54
39
  receiveRoutedBoundSessionResponse(actorId: string, packetName: string, requestSeq: bigint, message: unknown, replyOptions: ZLinkActorResponseOptions, actorPacketTarget?: unknown, signal?: AbortSignal): Promise<void>;
55
40
  receiveRoutedBoundSessionError(actorId: string, packetName: string, requestSeq: bigint, error: unknown, metadata: ReadonlyMap<string, string>, actorPacketTarget?: unknown, signal?: AbortSignal): Promise<void>;
56
- rememberRemoteBoundSessionTarget(actorId: string, target: ZLinkRemoteBoundSessionTarget | undefined): void;
57
41
  resolveRemoteBoundSessionTarget(sourceNodeRid: RoutingId, sourceSessionRid: RoutingId): ZLinkRemoteBoundSessionTarget | undefined;
58
42
  actorPacketTargetForState(actorId: string): ZLinkRemoteActorPacketTarget | undefined;
59
43
  sendActorResponse(actor: ZLinkActor, packetName: string, requestSeq: bigint, response: unknown, replyOptions: ZLinkActorResponseOptions, fallbackBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, fallbackActorRef?: ActorRef, signal?: AbortSignal): Promise<void>;
@@ -31,6 +31,11 @@ export declare class ZLinkSpotSerialExecutor {
31
31
  * ownership turn. Already accepted work remains drainable.
32
32
  */
33
33
  close(): Promise<void>;
34
+ /**
35
+ * Closes the Actor and timer queues. The Spot queue stays open for the Spot
36
+ * Close lifecycle item that owns it; that Close closes it when it finishes.
37
+ */
38
+ closeChildren(): Promise<void>;
34
39
  private actorExecutor;
35
40
  private actorSerial;
36
41
  private timerSerial;
@@ -70,6 +70,14 @@ class ZLinkSpotSerialExecutor {
70
70
  * ownership turn. Already accepted work remains drainable.
71
71
  */
72
72
  close() {
73
+ const children = this.closeChildren();
74
+ return Promise.all([children, this.spotSerial.whenIdle()]).then(() => undefined);
75
+ }
76
+ /**
77
+ * Closes the Actor and timer queues. The Spot queue stays open for the Spot
78
+ * Close lifecycle item that owns it; that Close closes it when it finishes.
79
+ */
80
+ closeChildren() {
73
81
  if (this.closePromise !== undefined)
74
82
  return this.closePromise;
75
83
  this.closing = true;
@@ -79,8 +87,7 @@ class ZLinkSpotSerialExecutor {
79
87
  this.timerSerials.clear();
80
88
  this.actorExecutors.clear();
81
89
  this.closePromise = Promise.all([
82
- this.spotSerial.close(),
83
- ...childSerials.map((serial) => serial.close()),
90
+ ...childSerials.map((serial) => serial.whenIdle()),
84
91
  ...actorExecutors.map((executor) => executor.close())
85
92
  ]).then(() => undefined);
86
93
  return this.closePromise;
@@ -1,6 +1,11 @@
1
- import { ZLinkExecutionBarrier, ZLinkSpotSerialTurn } from '../execution';
1
+ import { ZLinkExecutionBarrier, type ZLinkExecutionBarrierClaim, ZLinkSpotSerialTurn } from '../execution';
2
2
  import type { SpotId } from '../../contracts';
3
- import { type ZLinkSerialSchedulerOptions, type ZLinkSerialWorkOptions } from '../execution/serial-execution-queue';
3
+ import type { ZLinkFrameworkException } from '../../contracts/Errors/ZLinkFrameworkException';
4
+ import { type ZLinkSerialSchedulerOptions, type ZLinkSerialWorkOptions, type ZLinkSerialWorkRecord } from '../execution/serial-execution-queue';
5
+ import type { ZLinkSerialLifecycleContext } from '../execution/serial-execution-queue';
6
+ export type ZLinkSpotApplicationTurnContext = ZLinkExecutionBarrierClaim & {
7
+ readonly replay?: (failure?: unknown) => Promise<unknown> | unknown;
8
+ };
4
9
  export declare class ZLinkSpotSerialTurnExecutor {
5
10
  private readonly yieldAllowed;
6
11
  readonly sourceSpotId?: SpotId | undefined;
@@ -10,6 +15,7 @@ export declare class ZLinkSpotSerialTurnExecutor {
10
15
  private executionBarrier;
11
16
  private resumedOwnerTurn;
12
17
  private lastActivityAtMs;
18
+ private lifecycleAdmissionClosed;
13
19
  activeTurnId: number;
14
20
  constructor(yieldAllowed?: boolean, sourceSpotId?: SpotId | undefined, schedulerOptions?: ZLinkSerialSchedulerOptions);
15
21
  get isExecuting(): boolean;
@@ -17,13 +23,25 @@ export declare class ZLinkSpotSerialTurnExecutor {
17
23
  get hasPendingWork(): boolean;
18
24
  get lastActivityAt(): number;
19
25
  get currentTurn(): ZLinkSpotSerialTurn | undefined;
20
- /** Stops new turns while allowing turns accepted before close to complete. */
21
- close(): Promise<void>;
26
+ /** Waits for turns admitted through the execution barrier to complete. */
27
+ whenIdle(): Promise<void>;
28
+ closeAdmission(): void;
29
+ /**
30
+ * Spot messaging §7 step 3: after Close ends this queue's admission, an Instance
31
+ * intent message is refused before admission as a released owner fence, and any
32
+ * other message finds no incarnation. Undefined while admission is open.
33
+ */
34
+ applicationAdmissionRefusal(instanceIntent: boolean): ZLinkFrameworkException | undefined;
35
+ /**
36
+ * Spot messaging §7: once Close commits Closing, membership work can no longer
37
+ * enter this incarnation while Instance intent messages still queue behind Close.
38
+ */
39
+ setLifecycleAdmissionClosed(closed: boolean): void;
22
40
  /** Distinguishes a gate-owning turn from a suspended AsyncLocalStorage tail. */
23
41
  isActiveTurn(turn: ZLinkSpotSerialTurn, turnId: number): boolean;
24
42
  setExecutionBarrier(barrier: ZLinkExecutionBarrier): void;
25
43
  /** Runs `operation` in serial order, one turn at a time. */
26
- execute<T>(operation: () => Promise<T> | T, workOptions?: ZLinkSerialWorkOptions): Promise<T>;
44
+ execute<T>(operation: () => Promise<T> | T, workOptions?: ZLinkSerialWorkOptions, replay?: (failure?: unknown) => Promise<T>): Promise<T>;
27
45
  /**
28
46
  * Always enqueues `operation` as its own serial turn, even when called
29
47
  * from within the currently active turn. Detached completion callbacks use
@@ -36,13 +54,18 @@ export declare class ZLinkSpotSerialTurnExecutor {
36
54
  */
37
55
  postOneWay(operation: () => Promise<unknown> | unknown, onError: (error: unknown) => void, workOptions?: ZLinkSerialWorkOptions, admission?: {
38
56
  readonly signal?: AbortSignal;
39
- }): Promise<void>;
57
+ }, replay?: (failure?: unknown) => Promise<unknown>): Promise<void>;
40
58
  /**
41
59
  * Enqueues the framework-owned turn that completes a boundary while normal
42
60
  * application admission remains sealed. Callers must release the matching
43
61
  * barrier seal after this turn finishes.
44
62
  */
45
63
  postBarrierTurn<T>(operation: () => Promise<T> | T, workOptions?: ZLinkSerialWorkOptions): Promise<T>;
64
+ /** Admits membership work and holds the lifecycle FIFO until its result settles. */
65
+ executeLifecycleOperation<T>(operation: () => Promise<T> | T): Promise<T>;
66
+ /** Runs owner control work that establishes or completes its own admission seal. */
67
+ executeControlLifecycleOperation<T>(operation: () => Promise<T> | T, context?: ZLinkSerialLifecycleContext): Promise<T>;
68
+ visitPendingApplication(visitor: (record: ZLinkSerialWorkRecord<unknown>) => void): void;
46
69
  private enqueueApplicationTurn;
47
70
  private enqueueFrameworkTurn;
48
71
  private enqueueContinuationTurn;