@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,5 @@
1
+ import { ZLINK_MAX_SPOT_ID_BYTES } from '../../contracts/Common/CoreTypes';
2
+ import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
1
3
  import type { ZLinkBackendActorRef } from '../backend/contracts';
2
4
  import { decodeActorMessageFollowContext, type ZLinkRemoteBoundSessionTarget } from '../actors';
3
5
  import type { RoutingId, ZLinkActor } from '../../contracts';
@@ -146,7 +148,7 @@ export function decodeRemoteActorJoinPayload(
146
148
  requestContentType:
147
149
  typeof payload.requestContentType === 'string'
148
150
  ? payload.requestContentType
149
- : 'application/json'
151
+ : ZlinkStreamContentType.Json
150
152
  };
151
153
  }
152
154
 
@@ -302,8 +304,10 @@ function decodeBoundSessionServiceWireRelocation(
302
304
 
303
305
  function requireSpotId(value: string): string {
304
306
  const bytes = Buffer.byteLength(value, 'utf8');
305
- if (bytes < 1 || bytes > 255) {
306
- throw new Error('Remote bound session SpotId must contain 1..255 UTF-8 bytes.');
307
+ if (bytes < 1 || bytes > ZLINK_MAX_SPOT_ID_BYTES) {
308
+ throw new Error(
309
+ `Remote bound session SpotId must contain 1..${ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes.`
310
+ );
307
311
  }
308
312
  return value;
309
313
  }
@@ -1,21 +1,31 @@
1
- import type {
2
- Type,
3
- ZLinkMessageSerializer,
4
- ZLinkSpot,
5
- ZLinkSpotPacketHandler,
6
- ZLinkSpotRequestHandler
1
+ import {
2
+ type Type,
3
+ type ZLinkMessageSerializer,
4
+ type ZLinkSpot,
5
+ type ZLinkSpotPacketHandler,
6
+ type ZLinkSpotRequestHandler,
7
+ ZLinkFrameworkException,
8
+ zlinkMessageMetadata
7
9
  } from '../../contracts';
10
+
11
+ import type { Message } from '../../contracts/Common/Message';
8
12
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
9
- import { ZLinkFrameworkException, zlinkMessageMetadata } from '../../contracts';
10
13
  import {
11
14
  ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
12
15
  ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
13
16
  ZLinkDispatchErrorSurface,
14
17
  ZLinkDispatchMessageKind
15
18
  } from '../../contracts/Dispatch/ZLinkDispatchOptions';
19
+ import {
20
+ ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET,
21
+ ZLINK_REMOTE_BOUND_SESSION_ERROR_PACKET,
22
+ ZLINK_REMOTE_BOUND_SESSION_RESPONSE_PACKET,
23
+ ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET
24
+ } from '../actors';
25
+ import type { ZLinkApplicationWorkClaim } from '../admission';
26
+ import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
16
27
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
17
28
  import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
18
- import type { Message } from '../../contracts/Common/Message';
19
29
  import type { ZLinkDispatchErrorReporter } from '../channels';
20
30
  import {
21
31
  decodeChannelEnvelope,
@@ -27,25 +37,18 @@ import {
27
37
  ZLinkChannelMessageKind,
28
38
  type ZLinkChannelEnvelopeCodecRegistry
29
39
  } from '../channels/channel-envelope';
40
+ import { SPOT_DIRECT_ENVELOPE } from '../channels/spot-direct-envelope';
41
+ import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
42
+ import { zlinkMetadataByteLength, zlinkSerialWorkOptions } from '../execution/serial-work-size';
30
43
  import {
31
- ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET,
32
- ZLINK_REMOTE_BOUND_SESSION_ERROR_PACKET,
33
- ZLINK_REMOTE_BOUND_SESSION_RESPONSE_PACKET,
34
- ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET
35
- } from '../actors';
44
+ internalFrameworkErrorKind,
45
+ ZLinkFrameworkInternalErrorKind
46
+ } from '../framework-errors-internal';
36
47
  import { resolveLifecycleHandler } from '../handlers/handler-instance-scope';
37
48
  import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
38
- import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
39
- import type { ZLinkApplicationWorkClaim } from '../admission';
40
- import { zlinkMetadataByteLength, zlinkSerialWorkOptions } from '../execution/serial-work-size';
41
49
  import { REMOTE_ACTOR_JOIN_PACKET } from './spot-remote-codec';
42
50
  import { appendRouteReplyParts, hasReplyToken, submitRouteReply } from './spot-route-replies';
43
- import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
44
- import {
45
- ZLinkFrameworkInternalErrorKind,
46
- internalFrameworkErrorKind
47
- } from '../framework-errors-internal';
48
- import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
51
+ import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
49
52
 
50
53
  interface ZLinkSpotRoutePacketDispatchOptions {
51
54
  readonly packetHandlers: ReadonlyMap<string, readonly ZLinkSpotHandlerRegistration[]>;
@@ -58,8 +61,6 @@ interface ZLinkSpotRoutePacketDispatchOptions {
58
61
  readonly claimApplicationWork?: () => ZLinkApplicationWorkClaim;
59
62
  }
60
63
 
61
- const SPOT_DIRECT_ENVELOPE = 'zlink.framework.spot-direct.v1';
62
-
63
64
  /** D5: reply metadata attached only to framework-self-generated errors. */
64
65
  const FRAMEWORK_ORIGIN_REPLY_METADATA: Readonly<Record<string, string>> = Object.freeze({
65
66
  [ZLINK_FRAMEWORK_ORIGIN_METADATA_KEY]: ZLINK_FRAMEWORK_ORIGIN_METADATA_VALUE
@@ -1,6 +1,7 @@
1
+ import { constants as osConstants } from 'node:os';
1
2
  import type {
2
- ZLinkBackendMessageLike as MessageLike,
3
- ZLinkBackendReceived as BackendReceived
3
+ ZLinkBackendReceived as BackendReceived,
4
+ ZLinkBackendMessageLike as MessageLike
4
5
  } from '../backend/runtime-values';
5
6
  import {
6
7
  decodeChannelEnvelope,
@@ -8,8 +9,9 @@ import {
8
9
  encodeChannelReplyParts
9
10
  } from '../channels/channel-envelope';
10
11
  import { ZLinkConfigurationException } from '../configuration';
11
- import { encodeSpotRouteBridgeReply } from './spot-route-reply-wire';
12
12
  import type { ZLinkDecodedRemoteActorJoinRequest } from './spot-remote-codec';
13
+ import { encodeSpotRouteBridgeReply } from './spot-route-reply-wire';
14
+ const nativeErrnoValues = osConstants.errno;
13
15
 
14
16
  export interface ZLinkRouteReplySubmitOperation {
15
17
  message(message: MessageLike): ZLinkRouteReplySubmitOperation;
@@ -120,6 +122,6 @@ function isNativeBadAddress(error: unknown): boolean {
120
122
  return (
121
123
  typeof error === 'object' &&
122
124
  error !== null &&
123
- Number((error as { nativeErrno?: unknown }).nativeErrno) === 14
125
+ Number((error as { nativeErrno?: unknown }).nativeErrno) === nativeErrnoValues.EFAULT
124
126
  );
125
127
  }
@@ -5,6 +5,8 @@ import type {
5
5
  ZLinkSpotActorJoinResult
6
6
  } from '../../contracts';
7
7
  import type { Message } from '../../contracts/Common/Message';
8
+ import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
9
+ import type { ZLinkRemoteBoundSessionTarget } from '../actors/actor-runtime-state';
8
10
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
9
11
  import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
10
12
  import {
@@ -23,16 +25,12 @@ import {
23
25
  hasRemoteActorJoinIdentity,
24
26
  isRemoteActorJoinPayload,
25
27
  type ZLinkDecodedRemoteActorJoinRequest,
26
- type ZLinkRoutedActorTransferProvider,
27
- type ZLinkRemoteActorJoinWirePayload
28
+ type ZLinkRemoteActorJoinWirePayload,
29
+ type ZLinkRoutedActorTransferProvider
28
30
  } from './spot-remote-codec';
29
31
  import { submitRoutedActorJoinError, submitRoutedActorJoinReply } from './spot-route-replies';
30
32
  import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
31
- import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
32
- import {
33
- ZLinkFrameworkInternalErrorKind,
34
- createInternalFrameworkException
35
- } from '../framework-errors-internal';
33
+ const DEFAULT_PENDING_ADMISSION_TIMEOUT_MS = 30_000;
36
34
 
37
35
  interface ZLinkRoutedActorAdmissionTarget {
38
36
  onActorJoin?(actorId: string, request: ZLinkMessage): Promise<ZLinkSpotActorJoinResult>;
@@ -40,13 +38,13 @@ interface ZLinkRoutedActorAdmissionTarget {
40
38
 
41
39
  interface ZLinkSpotRoutedActorAdmissionOptions {
42
40
  readonly serial: ZLinkSpotSerialTurnExecutor;
43
- readonly isSpotClosing?: () => boolean;
44
41
  readonly getTarget: () => ZLinkRoutedActorAdmissionTarget;
45
42
  readonly defaultAccept: boolean;
46
43
  readonly routedActorTransferProvider?: ZLinkRoutedActorTransferProvider;
47
44
  readonly commitTransferredActor?: (
48
45
  actor: ZLinkActor,
49
- backlog: readonly ZLinkActorHandoffPacket[]
46
+ backlog: readonly ZLinkActorHandoffPacket[],
47
+ sealedSession: ZLinkRemoteBoundSessionTarget | undefined
50
48
  ) => Promise<readonly ZLinkActorHandoffResult[]>;
51
49
  readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
52
50
  readonly pendingAdmissionTimeoutMs?: number;
@@ -78,21 +76,6 @@ export class ZLinkSpotRoutedActorAdmission {
78
76
  if (decoded === undefined) {
79
77
  return false;
80
78
  }
81
- if (this.options.isSpotClosing?.() === true) {
82
- try {
83
- submitRoutedActorJoinError(
84
- received,
85
- decoded,
86
- createInternalFrameworkException(
87
- ZLinkFrameworkInternalErrorKind.RequestRejected,
88
- `Actor '${decoded.actorId}' target Spot is closing.`
89
- )
90
- );
91
- } finally {
92
- this.closeDecoded(decoded);
93
- }
94
- return true;
95
- }
96
79
  if (decoded.phase === 'admission') {
97
80
  await this.admitTransfer(decoded, received);
98
81
  return true;
@@ -240,7 +223,11 @@ export class ZLinkSpotRoutedActorAdmission {
240
223
  decoded.remoteBoundSessionTarget
241
224
  );
242
225
  const handoffResults =
243
- (await this.options.commitTransferredActor?.(actor, decoded.handoffBacklog)) ?? [];
226
+ (await this.options.commitTransferredActor?.(
227
+ actor,
228
+ decoded.handoffBacklog,
229
+ decoded.remoteBoundSessionTarget
230
+ )) ?? [];
244
231
  const commitReply = {
245
232
  accepted: true,
246
233
  actorNodeRid: String(actorRef.nodeRid),
@@ -298,7 +285,7 @@ export class ZLinkSpotRoutedActorAdmission {
298
285
  if (pending.deadline !== undefined) clearTimeout(pending.deadline);
299
286
  pending.deadline = setTimeout(() => {
300
287
  if (this.pending.get(transferId) === pending) this.pending.delete(transferId);
301
- }, this.options.pendingAdmissionTimeoutMs ?? 30_000);
288
+ }, this.options.pendingAdmissionTimeoutMs ?? DEFAULT_PENDING_ADMISSION_TIMEOUT_MS);
302
289
  pending.deadline.unref();
303
290
  }
304
291
 
@@ -34,14 +34,14 @@ interface ZLinkRoutedFrameAdmissionTarget {
34
34
  interface ZLinkSpotRoutedFrameDispatchOptions {
35
35
  readonly nativeSpotId: string;
36
36
  readonly serial: ZLinkSpotSerialTurnExecutor;
37
- readonly isSpotClosing?: () => boolean;
38
37
  readonly resolveActor: (actorId: string) => ZLinkActor | undefined;
39
38
  readonly getTarget: () => ZLinkRoutedFrameAdmissionTarget & ZLinkSpot;
40
39
  readonly defaultAccept: boolean;
41
40
  readonly routedActorTransferProvider?: ZLinkRoutedActorTransferProvider;
42
41
  readonly commitTransferredActor?: (
43
42
  actor: ZLinkActor,
44
- backlog: readonly ZLinkActorHandoffPacket[]
43
+ backlog: readonly ZLinkActorHandoffPacket[],
44
+ sealedSession: ZLinkRemoteBoundSessionTarget | undefined
45
45
  ) => Promise<readonly ZLinkActorHandoffResult[]>;
46
46
  readonly actorPacketHandler?: (delivery: ZLinkActorPacketDelivery) => Promise<unknown>;
47
47
  readonly routedBoundSessionReceiver?: (
@@ -119,7 +119,6 @@ export class ZLinkSpotRoutedFrameDispatch {
119
119
  });
120
120
  this.routedActorAdmission = new ZLinkSpotRoutedActorAdmission({
121
121
  serial: options.serial,
122
- isSpotClosing: options.isSpotClosing,
123
122
  getTarget: options.getTarget,
124
123
  defaultAccept: options.defaultAccept,
125
124
  routedActorTransferProvider: options.routedActorTransferProvider,
@@ -1,3 +1,4 @@
1
+ import { dispatchReasonFromError } from '../diagnostics/dispatch-error-details';
1
2
  import type {
2
3
  RoutingId,
3
4
  Type,
@@ -7,7 +8,7 @@ import type {
7
8
  } from '../../contracts';
8
9
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
9
10
  import type { ZLinkApplicationWorkClaim } from '../admission';
10
- import { ZLinkFrameworkException, zlinkMessageMetadata } from '../../contracts';
11
+ import { zlinkMessageMetadata } from '../../contracts';
11
12
  import {
12
13
  ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
13
14
  ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
@@ -18,8 +19,7 @@ import type { ZLinkDispatchErrorReporter } from '../channels';
18
19
  import { ZLinkConfigurationException } from '../configuration';
19
20
  import {
20
21
  ZLinkFrameworkInternalErrorKind,
21
- createInternalFrameworkException,
22
- internalFrameworkErrorKind
22
+ createInternalFrameworkException
23
23
  } from '../framework-errors-internal';
24
24
  import { resolveLifecycleHandler } from '../handlers/handler-instance-scope';
25
25
  import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
@@ -31,6 +31,7 @@ import {
31
31
  } from '../application-jobs/application-job-queue-scope';
32
32
 
33
33
  interface ZLinkRoutedSpotPacketActivation {
34
+ readonly objectGeneration?: bigint;
34
35
  readonly meshName?: string;
35
36
  readonly spotId: RoutingId;
36
37
  readonly spot: ZLinkSpot;
@@ -55,6 +56,9 @@ interface ZLinkRoutedSpotPacketContext {
55
56
  readonly signal?: AbortSignal;
56
57
  /** Wait until a recovered activation has actually entered its first handler. */
57
58
  readonly awaitFirstHandlerTurn?: boolean;
59
+ readonly onOneWayError?: (error: unknown) => void;
60
+ /** Retains the caller's Instance address intent through an incarnation boundary. */
61
+ readonly activationRecord?: import('../foundation/service-runtime-contracts').ReceiveRecord;
58
62
  }
59
63
 
60
64
  export class ZLinkRoutedSpotPacketDispatch {
@@ -143,14 +147,52 @@ export class ZLinkRoutedSpotPacketDispatch {
143
147
  activation.meshName === undefined
144
148
  ? undefined
145
149
  : this.options.claimApplicationWork?.(activation.meshName);
146
- const runHandler = async () => {
150
+ const originalRecord = context.activationRecord?.activationRecord;
151
+ const instanceIntent =
152
+ originalRecord?.activation === 'missing' ||
153
+ (originalRecord?.activation === 'ready' && originalRecord.instanceIntent);
154
+ const runHandler = async (failure?: unknown) => {
147
155
  try {
156
+ if (failure !== undefined) throw failure;
157
+ const current = this.options.resolveActivation(spotId);
158
+ if (
159
+ current === undefined ||
160
+ (!instanceIntent &&
161
+ (current !== activation ||
162
+ (originalRecord?.activation === 'ready' &&
163
+ originalRecord.route.objectGeneration !== current.objectGeneration)))
164
+ ) {
165
+ throw createInternalFrameworkException(
166
+ ZLinkFrameworkInternalErrorKind.RequestTargetNotFound,
167
+ `Spot '${String(spotId)}' is not active.`
168
+ );
169
+ }
170
+ if (
171
+ context.activationRecord?.deadlineUnixMs !== undefined &&
172
+ context.activationRecord.deadlineUnixMs < BigInt(Date.now())
173
+ ) {
174
+ throw createInternalFrameworkException(
175
+ ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
176
+ `Spot '${String(spotId)}' request deadline has expired.`
177
+ );
178
+ }
179
+ const currentRegistrations =
180
+ current === activation
181
+ ? registrations
182
+ : current.handlers
183
+ .snapshot()
184
+ .filter(
185
+ (registration) =>
186
+ registration.kind === 'packet' &&
187
+ (registration.packetName ?? registration.handlerType.name) ===
188
+ (packetName ?? '')
189
+ );
148
190
  // Decode only after the Spot has acquired both application admission
149
191
  // and its execution authority.
150
192
  const payload = decodePayload();
151
- for (const registration of registrations) {
193
+ for (const registration of currentRegistrations) {
152
194
  const handler = await resolveLifecycleHandler(
153
- activation.spot,
195
+ current.spot,
154
196
  registration.handlerType as Type<
155
197
  | ZLinkSpotPacketHandler<ZLinkSpot, unknown>
156
198
  | ZLinkSpotRequestHandler<ZLinkSpot, unknown, unknown>
@@ -159,8 +201,9 @@ export class ZLinkRoutedSpotPacketDispatch {
159
201
  );
160
202
  resolveFirstHandlerTurn?.();
161
203
  resolveFirstHandlerTurn = undefined;
204
+ context.activationRecord?.onHandlerTurnStarted?.();
162
205
  releaseApplicationJobPermitBeforeHandler();
163
- response = await handler.handle(activation.spot, payload, {
206
+ response = await handler.handle(current.spot, payload, {
164
207
  channelName: context.channelName,
165
208
  contentType: context.contentType,
166
209
  packetName: packetName!,
@@ -186,17 +229,33 @@ export class ZLinkRoutedSpotPacketDispatch {
186
229
  applicationClaim?.close();
187
230
  }
188
231
  },
189
- (error) => this.reportFailure(spotId, packetName, context, false, error),
232
+ (error) => {
233
+ if (context.onOneWayError === undefined) {
234
+ this.reportFailure(spotId, packetName, context, false, error);
235
+ } else if (resolveFirstHandlerTurn === undefined) {
236
+ context.onOneWayError(error);
237
+ }
238
+ },
190
239
  context.workOptions,
191
- { signal: context.signal }
240
+ { signal: context.signal },
241
+ instanceIntent
242
+ ? async (failure?: unknown) => {
243
+ try {
244
+ await runHandler(failure);
245
+ } finally {
246
+ detachedApplicationPermit?.releaseAfterInternalProcessing();
247
+ applicationClaim?.close();
248
+ }
249
+ }
250
+ : undefined
192
251
  );
193
- await firstHandlerTurn;
194
252
  } catch (error) {
195
253
  detached = false;
196
254
  detachedApplicationPermit?.releaseAfterInternalProcessing();
197
255
  rejectFirstHandlerTurn?.(error);
198
256
  throw error;
199
257
  }
258
+ await firstHandlerTurn;
200
259
  } else {
201
260
  if (activation.serial.isCurrentTurn) {
202
261
  throw createInternalFrameworkException(
@@ -204,10 +263,15 @@ export class ZLinkRoutedSpotPacketDispatch {
204
263
  `Spot '${spotId}' cannot await a request to its current serial turn.`
205
264
  );
206
265
  }
207
- await activation.serial.execute(runHandler, context.workOptions);
266
+ await activation.serial.execute(
267
+ runHandler,
268
+ context.workOptions,
269
+ instanceIntent ? runHandler : undefined
270
+ );
208
271
  }
209
272
  } catch (error) {
210
- this.reportFailure(spotId, packetName, context, returnResponse, error);
273
+ if (context.activationRecord?.activationRecord === undefined)
274
+ this.reportFailure(spotId, packetName, context, returnResponse, error);
211
275
  throw error;
212
276
  } finally {
213
277
  if (!detached) applicationClaim?.close();
@@ -222,18 +286,17 @@ export class ZLinkRoutedSpotPacketDispatch {
222
286
  returnResponse: boolean,
223
287
  error: unknown
224
288
  ): void {
225
- const frameworkErrorKind =
226
- error instanceof ZLinkFrameworkException ? internalFrameworkErrorKind(error) : undefined;
227
- this.options.dispatchErrors?.report({
228
- surface: ZLinkDispatchErrorSurface.SpotRoute,
289
+ const reporter = this.options.dispatchErrors;
290
+ if (reporter?.captureEnabled() !== true) return;
291
+ reporter.report({
292
+ surface:
293
+ context.activationRecord?.activationRecord?.kind === 'instanceSpot'
294
+ ? ZLinkDispatchErrorSurface.InstanceSpot
295
+ : ZLinkDispatchErrorSurface.SpotRoute,
229
296
  messageKind: returnResponse
230
297
  ? ZLinkDispatchMessageKind.Request
231
298
  : ZLinkDispatchMessageKind.Send,
232
- reason:
233
- frameworkErrorKind === ZLinkFrameworkInternalErrorKind.WorkerQueueFull ||
234
- frameworkErrorKind === ZLinkFrameworkInternalErrorKind.DeadlineExceeded
235
- ? ZLinkDispatchErrorReason.Backpressure
236
- : ZLinkDispatchErrorReason.HandlerException,
299
+ reason: dispatchReasonFromError(error),
237
300
  action: returnResponse ? ZLinkDispatchErrorAction.FailCaller : ZLinkDispatchErrorAction.Drop,
238
301
  packetName,
239
302
  channelName: context.channelName,
@@ -245,9 +308,19 @@ export class ZLinkRoutedSpotPacketDispatch {
245
308
  private reportMissing(
246
309
  spotId: RoutingId,
247
310
  packetName: string | undefined,
248
- context: { readonly channelName: string },
311
+ context: ZLinkRoutedSpotPacketContext,
249
312
  returnResponse: boolean
250
313
  ): void {
314
+ if (context.activationRecord?.activationRecord !== undefined) {
315
+ if (!returnResponse && context.onOneWayError !== undefined)
316
+ context.onOneWayError(
317
+ createInternalFrameworkException(
318
+ ZLinkFrameworkInternalErrorKind.HandlerNotFound,
319
+ `SPOT route handler not found: ${packetName}`
320
+ )
321
+ );
322
+ return;
323
+ }
251
324
  this.options.dispatchErrors?.report({
252
325
  surface: ZLinkDispatchErrorSurface.SpotRoute,
253
326
  messageKind: returnResponse
@@ -46,7 +46,7 @@ export interface ZLinkSpotActorTransferRuntime {
46
46
  rawReply: Uint8Array,
47
47
  replyContentType?: string
48
48
  ): ZLinkDeferredJoinCompletion;
49
- deliverDeferredJoinAccepted(
49
+ deliverDeferredJoinCompletion(
50
50
  completion: ZLinkDeferredJoinCompletion,
51
51
  actor: ZLinkActor,
52
52
  actorRef: ActorRef,
@@ -72,15 +72,6 @@ export interface ZLinkSpotActorTransferRuntime {
72
72
  deadlineAtMs: number,
73
73
  signal?: AbortSignal
74
74
  ): Promise<import('../locations/internal-location-contracts').ZLinkAuthoritySnapshot>;
75
- rememberRoutedActorTransferTarget(
76
- actorId: string,
77
- target: ZLinkRemoteBoundSessionTarget | undefined
78
- ): void;
79
- claimNativeActorLocation(
80
- actor: ZLinkActor,
81
- spotId: RoutingId,
82
- spotMeshName: string
83
- ): Promise<ZLinkNativeActorJoinSnapshot>;
84
75
  claimRoutedActorLocation(
85
76
  actor: ZLinkActor,
86
77
  spotId: RoutingId,
@@ -90,28 +81,19 @@ export interface ZLinkSpotActorTransferRuntime {
90
81
  readonly membershipEpoch: bigint;
91
82
  }
92
83
  ): Promise<void>;
93
- publishRoutedActorOwnership(actor: ZLinkActor): Promise<void>;
84
+ publishRoutedActorOwnership(
85
+ actor: ZLinkActor,
86
+ sealedSession: ZLinkRemoteBoundSessionTarget | undefined
87
+ ): Promise<void>;
94
88
  openRoutedActorSession(actor: ZLinkActor): Promise<void>;
95
89
  bindRoutedActorRef(actor: ZLinkActor, actorRef: ActorRef): void;
96
90
  commitRoutedActor(actor: ZLinkActor, spotId: RoutingId, spot: ZLinkSpot): void;
97
91
  clearRoutedActor(actor: ZLinkActor): void;
98
- rollbackNativeActorJoin(actor: ZLinkActor, snapshot: ZLinkNativeActorJoinSnapshot): Promise<void>;
99
92
  rollbackRoutedActor(actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
100
93
  notifyCoreSourceLeave(actor: ZLinkActor, callback: () => Promise<void>): Promise<void>;
101
94
  actorEntryNodeRid(actor: ZLinkActor): RoutingId | undefined;
102
95
  }
103
96
 
104
- export interface ZLinkNativeActorJoinSnapshot {
105
- readonly spotId?: RoutingId;
106
- readonly spot?: ZLinkSpot;
107
- readonly locationSpotId?: RoutingId;
108
- readonly spotMeshName?: string;
109
- readonly actorRef?: ActorRef;
110
- readonly spotGeneration?: bigint;
111
- readonly membershipEpoch?: bigint;
112
- readonly ownerNodeGeneration?: bigint;
113
- }
114
-
115
97
  export interface ZLinkSpotBoundSessionRuntime {
116
98
  receiveRoutedBoundSession(
117
99
  actorId: string,
@@ -140,10 +122,6 @@ export interface ZLinkSpotBoundSessionRuntime {
140
122
  actorPacketTarget?: unknown,
141
123
  signal?: AbortSignal
142
124
  ): Promise<void>;
143
- rememberRemoteBoundSessionTarget(
144
- actorId: string,
145
- target: ZLinkRemoteBoundSessionTarget | undefined
146
- ): void;
147
125
  resolveRemoteBoundSessionTarget(
148
126
  sourceNodeRid: RoutingId,
149
127
  sourceSessionRid: RoutingId
@@ -108,7 +108,7 @@ export class ZLinkSpotSerialExecutor {
108
108
  */
109
109
  close(): Promise<void> {
110
110
  const children = this.closeChildren();
111
- return Promise.all([children, this.spotSerial.close()]).then(() => undefined);
111
+ return Promise.all([children, this.spotSerial.whenIdle()]).then(() => undefined);
112
112
  }
113
113
 
114
114
  /**
@@ -124,7 +124,7 @@ export class ZLinkSpotSerialExecutor {
124
124
  this.timerSerials.clear();
125
125
  this.actorExecutors.clear();
126
126
  this.closePromise = Promise.all([
127
- ...childSerials.map((serial) => serial.close()),
127
+ ...childSerials.map((serial) => serial.whenIdle()),
128
128
  ...actorExecutors.map((executor) => executor.close())
129
129
  ]).then(() => undefined);
130
130
  return this.closePromise;