@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
@@ -10,7 +10,6 @@ export interface ZLinkActivationConcurrency {
10
10
  }
11
11
 
12
12
  interface ZLinkActivationRecord {
13
- readonly meshName: string;
14
13
  readonly limit: number;
15
14
  active: number;
16
15
  }
@@ -27,10 +26,7 @@ interface ZLinkActivationRecord {
27
26
  export class ZLinkActivationAdmission {
28
27
  private readonly records = new Map<string, ZLinkActivationRecord>();
29
28
 
30
- constructor(
31
- private readonly limitOf: (meshName: string) => number,
32
- private readonly changed?: (meshName: string) => void
33
- ) {}
29
+ constructor(private readonly limitOf: (meshName: string) => number) {}
34
30
 
35
31
  current(meshName: string): ZLinkActivationConcurrency {
36
32
  const record = this.records.get(meshName);
@@ -57,20 +53,18 @@ export class ZLinkActivationAdmission {
57
53
  );
58
54
  }
59
55
  record.active += 1;
60
- this.changed?.(meshName);
61
56
  let released = false;
62
57
  return () => {
63
58
  if (released) return;
64
59
  released = true;
65
60
  record.active -= 1;
66
- this.changed?.(meshName);
67
61
  };
68
62
  }
69
63
 
70
64
  private record(meshName: string): ZLinkActivationRecord {
71
65
  let record = this.records.get(meshName);
72
66
  if (record === undefined) {
73
- record = { meshName, limit: this.limitOf(meshName), active: 0 };
67
+ record = { limit: this.limitOf(meshName), active: 0 };
74
68
  this.records.set(meshName, record);
75
69
  }
76
70
  return record;
@@ -1,13 +1,29 @@
1
- import type { RoutingId } from '../../contracts';
2
- import { ZLinkSpotKind, zlinkSpotKindFromWire, zlinkSpotKindToWire } from '../../contracts';
1
+ import { UINT64_MAX } from '@zlink-systems/stream-wire';
2
+ import {
3
+ type RoutingId,
4
+ ZLinkSpotKind,
5
+ zlinkSpotKindFromWire,
6
+ zlinkSpotKindToWire
7
+ } from '../../contracts';
8
+
9
+ import { ZLINK_MAX_ROUTING_ID_BYTES } from '../../contracts/Common/CoreTypes';
10
+ import { AUTHORITY_ENVELOPE_MAX_BYTES } from '../../contracts/Configuration/InternalDefaults';
3
11
  import { crc32c } from '../foundation/service-relocation-runtime';
12
+ import { SERVICE_WIRE_TEXT8_MAX_BYTES } from '../foundation/service-wire-binary-primitives';
4
13
  import { decodeRoutingId, encodeRoutingIdStorageHex } from '../routing-id';
5
14
 
6
15
  const AUTHORITY_MAGIC = Buffer.from([0x5a, 0x4c, 0x41, 0x55]);
7
16
  const AUTHORITY_VERSION = 1;
8
17
  const AUTHORITY_FLAGS = 0;
9
18
  const ACTOR_RELOCATION_MAGIC = Buffer.from([0x5a, 0x4c, 0x41, 0x50]);
10
- const MAXIMUM_BYTES = 1024 * 1024;
19
+ const AUTHORITY_MINIMUM_BYTES = 15;
20
+ const ACTOR_RELOCATION_MINIMUM_BYTES = 32;
21
+ const ACTOR_RELOCATION_VERSION_WITHOUT_SESSION_FENCE = 5;
22
+ const ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE = 6;
23
+ const ACTOR_RELOCATION_FIRST_PHASE = 1;
24
+ const ACTOR_RELOCATION_STEADY_PHASE = 4;
25
+ const ENTRY_SPOT_WIRE_KIND = zlinkSpotKindToWire(ZLinkSpotKind.Entry);
26
+ const USER_SPOT_WIRE_KIND = zlinkSpotKindToWire(ZLinkSpotKind.User);
11
27
  const FATAL_UTF8 = new TextDecoder('utf-8', { fatal: true });
12
28
 
13
29
  export type ZLinkActorAuthorityState = 'creating' | 'ready';
@@ -47,8 +63,10 @@ export function encodeCanonicalAuthorityPayload(value: ZLinkCanonicalAuthorityPa
47
63
  body
48
64
  );
49
65
  const encoded = concat(envelope, u32be(crc32c(envelope)));
50
- if (encoded.byteLength > MAXIMUM_BYTES) {
51
- throw new RangeError('Actor authority payload exceeds 1 MiB.');
66
+ if (encoded.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES) {
67
+ throw new RangeError(
68
+ `Actor authority payload exceeds ${AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`
69
+ );
52
70
  }
53
71
  return encoded;
54
72
  }
@@ -59,7 +77,10 @@ export function decodeCanonicalAuthorityPayload(
59
77
  ): ZLinkCanonicalAuthorityPayload | undefined {
60
78
  try {
61
79
  const reader = new BigEndianReader(payload);
62
- if (reader.bytes.byteLength < 15 || reader.bytes.byteLength > MAXIMUM_BYTES) {
80
+ if (
81
+ reader.bytes.byteLength < AUTHORITY_MINIMUM_BYTES ||
82
+ reader.bytes.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES
83
+ ) {
63
84
  return undefined;
64
85
  }
65
86
  reader.expect(AUTHORITY_MAGIC);
@@ -81,7 +102,7 @@ export function decodeCanonicalAuthorityPayload(
81
102
  /** Byte-exact Node counterpart of .NET ZLinkActorAuthorityPayloadCodec.Encode. */
82
103
  export function encodeActorAuthorityPayload(value: ZLinkActorAuthorityPayload): Buffer {
83
104
  const spotKind = zlinkSpotKindToWire(value.currentSpotKind);
84
- if (spotKind !== 1 && spotKind !== 2) {
105
+ if (spotKind !== ENTRY_SPOT_WIRE_KIND && spotKind !== USER_SPOT_WIRE_KIND) {
85
106
  throw new RangeError('Actor currentSpotKind must be Entry or User.');
86
107
  }
87
108
  const actor = concat(
@@ -173,7 +194,7 @@ export function actorRelocationAuthorityApplicationPayload(
173
194
  const current = decodeActorRelocationEnvelope(payload);
174
195
  return current === undefined
175
196
  ? Buffer.from(payload)
176
- : current.phase === 4
197
+ : current.phase === ACTOR_RELOCATION_STEADY_PHASE
177
198
  ? Buffer.from(current.applicationPayload)
178
199
  : undefined;
179
200
  }
@@ -196,8 +217,10 @@ export function replaceActorRelocationAuthorityApplicationPayload(
196
217
  applicationPayload
197
218
  );
198
219
  const encoded = concat(withoutChecksum, u32le(crc32c(withoutChecksum)));
199
- if (encoded.byteLength > MAXIMUM_BYTES) {
200
- throw new RangeError('Actor relocation authority payload exceeds 1 MiB.');
220
+ if (encoded.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES) {
221
+ throw new RangeError(
222
+ `Actor relocation authority payload exceeds ${AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`
223
+ );
201
224
  }
202
225
  return encoded;
203
226
  }
@@ -205,7 +228,11 @@ export function replaceActorRelocationAuthorityApplicationPayload(
205
228
  function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnvelope | undefined {
206
229
  try {
207
230
  const bytes = Buffer.from(payload);
208
- if (bytes.byteLength < 32 || bytes.byteLength > MAXIMUM_BYTES) return undefined;
231
+ if (
232
+ bytes.byteLength < ACTOR_RELOCATION_MINIMUM_BYTES ||
233
+ bytes.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES
234
+ )
235
+ return undefined;
209
236
  const checksumOffset = bytes.byteLength - 4;
210
237
  if (bytes.readUInt32LE(checksumOffset) !== crc32c(bytes.subarray(0, checksumOffset))) {
211
238
  return undefined;
@@ -213,10 +240,15 @@ function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnve
213
240
  const reader = new LittleEndianReader(bytes.subarray(0, checksumOffset));
214
241
  reader.expect(ACTOR_RELOCATION_MAGIC);
215
242
  const version = reader.u16();
216
- if (version !== 5 && version !== 6) return undefined;
243
+ if (
244
+ version !== ACTOR_RELOCATION_VERSION_WITHOUT_SESSION_FENCE &&
245
+ version !== ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE
246
+ )
247
+ return undefined;
217
248
  if (reader.take(16).every((byte) => byte === 0)) return undefined;
218
249
  const phase = reader.u8();
219
- if (phase < 1 || phase > 4) return undefined;
250
+ if (phase < ACTOR_RELOCATION_FIRST_PHASE || phase > ACTOR_RELOCATION_STEADY_PHASE)
251
+ return undefined;
220
252
  const isBound = reader.bool();
221
253
  if (isBound) {
222
254
  reader.bytes8();
@@ -230,7 +262,7 @@ function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnve
230
262
  const ownerLeaseGeneration = reader.u64();
231
263
  const sessionOwnerNodeGeneration = reader.u64();
232
264
  reader.u64();
233
- if (version === 6) {
265
+ if (version === ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE) {
234
266
  reader.text16();
235
267
  reader.u64();
236
268
  }
@@ -247,7 +279,7 @@ function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnve
247
279
  }
248
280
  const prefix = Buffer.from(reader.bytes.subarray(0, reader.offset));
249
281
  const applicationLength = reader.i32();
250
- if (applicationLength < 1 || applicationLength > MAXIMUM_BYTES) return undefined;
282
+ if (applicationLength < 1 || applicationLength > AUTHORITY_ENVELOPE_MAX_BYTES) return undefined;
251
283
  const applicationPayload = Buffer.from(reader.take(applicationLength));
252
284
  if (!reader.done) return undefined;
253
285
  return { prefix, phase, applicationPayload };
@@ -258,22 +290,28 @@ function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnve
258
290
 
259
291
  function text8(value: string, name: string): Buffer {
260
292
  const bytes = Buffer.from(value, 'utf8');
261
- if (bytes.byteLength < 1 || bytes.byteLength > 0xff || bytes.includes(0)) {
262
- throw new RangeError(`${name} must contain 1..255 UTF-8 bytes without NUL.`);
293
+ if (
294
+ bytes.byteLength < 1 ||
295
+ bytes.byteLength > SERVICE_WIRE_TEXT8_MAX_BYTES ||
296
+ bytes.includes(0)
297
+ ) {
298
+ throw new RangeError(
299
+ `${name} must contain 1..${SERVICE_WIRE_TEXT8_MAX_BYTES} UTF-8 bytes without NUL.`
300
+ );
263
301
  }
264
302
  return concat(Buffer.of(bytes.byteLength), bytes);
265
303
  }
266
304
 
267
305
  function rid(value: RoutingId, name: string): Buffer {
268
306
  const bytes = Buffer.from(encodeRoutingIdStorageHex(value), 'hex');
269
- if (bytes.byteLength < 1 || bytes.byteLength > 0xff) {
270
- throw new RangeError(`${name} must contain 1..255 bytes.`);
307
+ if (bytes.byteLength < 1 || bytes.byteLength > ZLINK_MAX_ROUTING_ID_BYTES) {
308
+ throw new RangeError(`${name} must contain 1..${ZLINK_MAX_ROUTING_ID_BYTES} bytes.`);
271
309
  }
272
310
  return concat(Buffer.of(bytes.byteLength), bytes);
273
311
  }
274
312
 
275
313
  function nonzeroU64be(value: bigint, name: string): Buffer {
276
- if (value === 0n || value < 0n || value > 0xffff_ffff_ffff_ffffn) {
314
+ if (value === 0n || value < 0n || value > UINT64_MAX) {
277
315
  throw new RangeError(`${name} must be a non-zero u64.`);
278
316
  }
279
317
  const result = Buffer.alloc(8);
@@ -1,41 +1,57 @@
1
+ import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
1
2
  import {
2
- ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException,
4
- internalFrameworkErrorKind
5
- } from '../framework-errors-internal';
3
+ type ActorRef,
4
+ type RoutingId,
5
+ type ZLinkActorClient,
6
+ type ZLinkActorRequestCall,
7
+ type ZLinkActorSendCall,
8
+ type ZLinkMessageSerializer,
9
+ ZLinkFrameworkErrorKind,
10
+ ZLinkFrameworkException,
11
+ ZLinkSpotKind
12
+ } from '../../contracts';
13
+
14
+ import { ZLINK_MAX_ACTOR_ID_BYTES } from '../../contracts/Common/CoreTypes';
15
+ import type { Message } from '../../contracts/Common/Message';
16
+ import { awaitWithAbort, throwIfAborted } from '../abort';
17
+ import {
18
+ type ZLinkBackendActorRef,
19
+ type ZLinkBackendMeshNode,
20
+ type ZLinkMeshCompletionTable,
21
+ closeMeshCompletion
22
+ } from '../backend';
23
+
6
24
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
7
25
  import {
26
+ isZLinkBackendResultError,
8
27
  RequestResult,
9
28
  SubmitResult,
10
- isZLinkBackendResultError,
11
29
  ZLINK_BACKEND_SEND_NONE
12
30
  } from '../backend/runtime-values';
13
- import type {
14
- ActorRef,
15
- RoutingId,
16
- ZLinkActorClient,
17
- ZLinkActorRequestCall,
18
- ZLinkActorSendCall,
19
- ZLinkMessageSerializer
20
- } from '../../contracts';
21
- import { ZLinkSpotKind } from '../../contracts';
22
- import { ZLinkFrameworkException, ZLinkFrameworkErrorKind } from '../../contracts';
31
+ import { ZLinkConfigurationException } from '../configuration';
32
+ import {
33
+ captureZLinkSpotSerialTurn,
34
+ currentZLinkSpotSerialSourceId,
35
+ requireZLinkYieldTurn,
36
+ type ZLinkSpotSerialTurn
37
+ } from '../execution';
38
+ import { remainingActorRequestTimeout, waitActorReply } from './actor-request-deadline';
23
39
  import {
40
+ createInternalFrameworkException,
41
+ internalFrameworkErrorKind,
42
+ internalFrameworkErrorKindFromWireFailureCode,
43
+ ZLinkFrameworkInternalErrorKind
44
+ } from '../framework-errors-internal';
45
+ import type { ZLinkResolvedActorRoute, ZLinkStoreLocationResolvers } from '../locations';
46
+ import { resolveFrameworkPacketName } from '../messaging/packet-name';
47
+ import { decodeFrameworkPayloadMessage, encodeFrameworkPayload } from '../messaging/payload-codec';
48
+ import {
49
+ classifySubmitResult,
24
50
  requireOneWayCompletion,
25
51
  throwAlreadySubmitted,
26
52
  ZLinkSubmitStatus,
27
53
  type ZLinkSubmitResult
28
54
  } from '../messaging/submission-result';
29
- import type { Message } from '../../contracts/Common/Message';
30
- import type {
31
- ZLinkBackendActorRef,
32
- ZLinkBackendMeshNode,
33
- ZLinkMeshCompletionTable
34
- } from '../backend';
35
- import { closeMeshCompletion } from '../backend';
36
- import { awaitWithAbort, throwIfAborted } from '../abort';
37
- import { encodeFrameworkPayload, decodeFrameworkPayloadMessage } from '../messaging/payload-codec';
38
- import { resolveFrameworkPacketName } from '../messaging/packet-name';
39
55
  import {
40
56
  actorRequestDeadlineMetadata,
41
57
  decodeStreamHeader,
@@ -45,11 +61,7 @@ import {
45
61
  ZLinkStreamHeaderFlags,
46
62
  ZLinkStreamMessageKind
47
63
  } from '../streams/protocol';
48
- import type { ZLinkStoreLocationResolvers } from '../locations';
49
- import type { ZLinkResolvedActorRoute } from '../locations';
50
- import type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
51
- import { encodeRemoteActorPacketRelayPayload } from './actor-packet-relay-wire';
52
- import { requestRoutedJsonReply } from './actor-routed-json-request';
64
+ import { currentZLinkActorExecution } from './actor-execution-context';
53
65
  import {
54
66
  attachActorMessageFollowContext,
55
67
  createInitialActorMessageFollowContext,
@@ -57,13 +69,11 @@ import {
57
69
  type ZLinkActorMessageFollowContext
58
70
  } from './actor-message-follow-context';
59
71
  import {
60
- captureZLinkSpotSerialTurn,
61
- currentZLinkSpotSerialSourceId,
62
- requireZLinkYieldTurn,
63
- type ZLinkSpotSerialTurn
64
- } from '../execution';
65
- import { ZLinkConfigurationException } from '../configuration';
66
- import { currentZLinkActorExecution } from './actor-execution-context';
72
+ encodeRemoteActorPacketRelayPayload,
73
+ ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
74
+ } from './actor-packet-relay-wire';
75
+ import type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
76
+ import { requestRoutedJsonReply } from './actor-routed-json-request';
67
77
 
68
78
  export interface ZLinkActorClientOptions {
69
79
  readonly nodeProvider: (meshName: string) => ZLinkBackendMeshNode | undefined;
@@ -163,7 +173,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
163
173
  if (duplicate !== undefined) submissions.push(duplicate);
164
174
  }
165
175
  await awaitWithAbort(Promise.all(submissions), signal);
166
- return submitted();
176
+ return { status: ZLinkSubmitStatus.Submitted };
167
177
  }
168
178
  const node = this.requireNode(meshName);
169
179
  if (
@@ -181,9 +191,9 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
181
191
  returnResponse: false,
182
192
  messageFollowContext: messageFollow
183
193
  }),
184
- { packetName: '__zlink.actor.packet.relay' }
194
+ { packetName: ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET }
185
195
  );
186
- return submitted();
196
+ return { status: ZLinkSubmitStatus.Submitted };
187
197
  }
188
198
  return await this.submitActorSend(meshName, toBackendActorRef(actor), parts);
189
199
  } catch (error) {
@@ -214,7 +224,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
214
224
  effectiveTimeoutMs === undefined ? undefined : performance.now() + effectiveTimeoutMs;
215
225
  const deadlineUnixMs =
216
226
  effectiveTimeoutMs === undefined ? undefined : Date.now() + effectiveTimeoutMs;
217
- const route = await this.resolveActorRoute(actorId, signal);
227
+ const route = await this.resolveActorRoute(actorId, signal, deadlineMs);
218
228
  if (
219
229
  waitPolicy === 'async' &&
220
230
  sourceSpotId !== undefined &&
@@ -248,10 +258,13 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
248
258
  );
249
259
  const routedActor = attachActorMessageFollowContext(actor, messageFollow);
250
260
  try {
261
+ const delivery = this.options
262
+ .transportDeliveryGate?.()
263
+ ?.waitBeforeSubmit(actorId, 'request', signal);
251
264
  const submissionCopies =
252
- (await this.options
253
- .transportDeliveryGate?.()
254
- ?.waitBeforeSubmit(actorId, 'request', signal)) ?? 1;
265
+ delivery === undefined
266
+ ? 1
267
+ : ((await waitActorReply(delivery, actorId, deadlineMs, signal)) ?? 1);
255
268
  const handoff = this.options.handoffCapture?.(
256
269
  meshName,
257
270
  actor.actorId,
@@ -273,9 +286,11 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
273
286
  );
274
287
  if (duplicate !== undefined) submissions.push(duplicate);
275
288
  }
276
- const replies = await waitHandoffReply<unknown[]>(
289
+ const replies = await waitActorReply<unknown[]>(
277
290
  Promise.all(submissions),
278
- remainingActorRequestTimeout(actorId, deadlineMs)
291
+ actorId,
292
+ deadlineMs,
293
+ signal
279
294
  );
280
295
  return replies[0] as TReply;
281
296
  }
@@ -302,7 +317,8 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
302
317
 
303
318
  private async resolveActorRoute(
304
319
  actorId: string,
305
- signal?: AbortSignal
320
+ signal?: AbortSignal,
321
+ deadlineMs?: number
306
322
  ): Promise<ZLinkResolvedActorRoute> {
307
323
  const resolver = this.options.locationResolver();
308
324
  if (resolver === undefined) {
@@ -311,7 +327,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
311
327
  'Actor direct messaging requires a Location Store.'
312
328
  );
313
329
  }
314
- const resolution = await resolver.resolveDirectActorRoute(actorId, signal);
330
+ const resolution = await resolver.resolveDirectActorRoute(actorId, signal, deadlineMs);
315
331
  if (resolution.kind === 'missing') {
316
332
  throw createInternalFrameworkException(
317
333
  ZLinkFrameworkInternalErrorKind.ActorRouteNotFound,
@@ -390,7 +406,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
390
406
  ): Promise<ZLinkSubmitResult> {
391
407
  const node = this.requireNode(meshName);
392
408
  try {
393
- return mapSubmitResult(
409
+ return classifySubmitResult(
394
410
  await node.sendToActor(actor, toMessageLikeParts(parts), {
395
411
  flags: ZLINK_BACKEND_SEND_NONE
396
412
  }),
@@ -398,11 +414,9 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
398
414
  );
399
415
  } catch (error) {
400
416
  if (isZLinkBackendResultError(error)) {
401
- return mapSubmitResult(error.result, 'Actor send');
417
+ return classifySubmitResult(error.result, 'Actor send', error.phase);
402
418
  }
403
- throw isZLinkBackendResultError(error)
404
- ? mapRequestError(error, 'Actor send')
405
- : mapSubmitError(error, 'Actor send');
419
+ throw mapSubmitError(error, 'Actor send');
406
420
  }
407
421
  }
408
422
 
@@ -560,53 +574,12 @@ function remoteRelayErrorKind(value: unknown): ZLinkFrameworkInternalErrorKind {
560
574
  : ZLinkFrameworkInternalErrorKind.RequestFailed;
561
575
  }
562
576
 
563
- function remainingActorRequestTimeout(
564
- actorId: string,
565
- deadlineMs: number | undefined
566
- ): number | undefined {
567
- if (deadlineMs === undefined) return undefined;
568
- const remaining = deadlineMs - performance.now();
569
- if (remaining <= 0) {
570
- throw createInternalFrameworkException(
571
- ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
572
- `Actor request '${actorId}' exceeded its deadline before submission.`
573
- );
574
- }
575
- return Math.max(1, Math.ceil(remaining));
576
- }
577
-
578
577
  function requireActorId(actorId: string): void {
579
578
  const byteLength = Buffer.byteLength(actorId, 'utf8');
580
- if (byteLength < 1 || byteLength > 255) {
581
- throw new ZLinkConfigurationException('Actor ID must contain 1..255 UTF-8 bytes.');
582
- }
583
- }
584
-
585
- async function waitHandoffReply<TReply>(
586
- reply: Promise<unknown>,
587
- timeoutMs: number | undefined
588
- ): Promise<TReply> {
589
- if (timeoutMs === undefined) return (await reply) as TReply;
590
- let deadline: ReturnType<typeof setTimeout> | undefined;
591
- try {
592
- return await Promise.race([
593
- reply as Promise<TReply>,
594
- new Promise<TReply>((_resolve, reject) => {
595
- deadline = setTimeout(
596
- () =>
597
- reject(
598
- createInternalFrameworkException(
599
- ZLinkFrameworkInternalErrorKind.RequestFailed,
600
- 'Actor handoff request timed out.',
601
- true
602
- )
603
- ),
604
- timeoutMs
605
- );
606
- })
607
- ]);
608
- } finally {
609
- if (deadline !== undefined) clearTimeout(deadline);
579
+ if (byteLength < 1 || byteLength > ZLINK_MAX_ACTOR_ID_BYTES) {
580
+ throw new ZLinkConfigurationException(
581
+ `Actor ID must contain 1..${ZLINK_MAX_ACTOR_ID_BYTES} UTF-8 bytes.`
582
+ );
610
583
  }
611
584
  }
612
585
 
@@ -861,7 +834,7 @@ function decodeActorReplyPayload<TReply>(
861
834
  payload,
862
835
  serializers,
863
836
  undefined,
864
- 'application/json',
837
+ ZlinkStreamContentType.Json,
865
838
  packetName,
866
839
  'reply'
867
840
  );
@@ -871,29 +844,6 @@ function mapSubmitError(error: unknown, operationName: string): Error {
871
844
  if (error instanceof ZLinkFrameworkException) {
872
845
  return error;
873
846
  }
874
- if (isZLinkBackendResultError(error)) {
875
- switch (error.result) {
876
- case SubmitResult.NotConnected:
877
- return routeNotConnected(
878
- `${operationName} failed because the target route is not connected.`,
879
- error
880
- );
881
- case SubmitResult.NotFound:
882
- return createInternalFrameworkException(
883
- ZLinkFrameworkInternalErrorKind.ActorRouteNotFound,
884
- `${operationName} failed because the actor route was not found.`,
885
- false,
886
- error
887
- );
888
- default:
889
- return createInternalFrameworkException(
890
- ZLinkFrameworkInternalErrorKind.RequestFailed,
891
- `${operationName} failed with submit result ${error.result}.`,
892
- false,
893
- error
894
- );
895
- }
896
- }
897
847
  return createInternalFrameworkException(
898
848
  ZLinkFrameworkInternalErrorKind.RouteNotConnected,
899
849
  `${operationName} failed before a reply was received.`,
@@ -902,79 +852,6 @@ function mapSubmitError(error: unknown, operationName: string): Error {
902
852
  );
903
853
  }
904
854
 
905
- function mapSubmitResult(result: number, operationName: string): ZLinkSubmitResult {
906
- switch (result) {
907
- case SubmitResult.Ok:
908
- return submitted();
909
- case SubmitResult.Backpressured:
910
- case SubmitResult.NotAdmitted:
911
- return { status: ZLinkSubmitStatus.Backpressured };
912
- case SubmitResult.NotConnected:
913
- return { status: ZLinkSubmitStatus.RouteNotConnected };
914
- case SubmitResult.NotFound:
915
- return { status: ZLinkSubmitStatus.TargetNotFound };
916
- case SubmitResult.Terminated:
917
- return { status: ZLinkSubmitStatus.Shutdown };
918
- default:
919
- throw createInternalFrameworkException(
920
- ZLinkFrameworkInternalErrorKind.RequestFailed,
921
- `${operationName} failed with submit result ${result}.`
922
- );
923
- }
924
- }
925
-
926
- function submitted(): ZLinkSubmitResult {
927
- return { status: ZLinkSubmitStatus.Submitted };
928
- }
929
-
930
- // Ownership-aware Actor remote-reply translator (spec 32:81-118, 99-103):
931
- // the reply comes from a remote target, so a fine framework failure code
932
- // refines the coarse terminal, and a terminal-only conflict/busy is the
933
- // target's owner/queue state (retryable stale/Unavailable), never a
934
- // source-owned queue exhaustion. Backpressure never appears on this reply
935
- // path. Internal kinds are preserved so the stale-actor re-resolve retry
936
- // (isStaleActorError) keeps working.
937
- function actorFailureCodeKind(failureErrno: number): ZLinkFrameworkInternalErrorKind | undefined {
938
- switch (failureErrno) {
939
- case 3:
940
- return ZLinkFrameworkInternalErrorKind.ActorAlreadyExists;
941
- case 4:
942
- return ZLinkFrameworkInternalErrorKind.ActorTypeMismatch;
943
- case 7:
944
- return ZLinkFrameworkInternalErrorKind.SpotTypeMismatch;
945
- case 8:
946
- return ZLinkFrameworkInternalErrorKind.ActorSessionNotBound;
947
- case 9:
948
- case 14:
949
- return ZLinkFrameworkInternalErrorKind.RequestTargetNotFound;
950
- case 12:
951
- case 16:
952
- return ZLinkFrameworkInternalErrorKind.RequestProtocolError;
953
- // routeNotConnected(13) and a remote worker queue full(18) are Unavailable.
954
- case 13:
955
- case 18:
956
- return ZLinkFrameworkInternalErrorKind.RouteNotConnected;
957
- case 15:
958
- return ZLinkFrameworkInternalErrorKind.RequestRejected;
959
- case 19:
960
- return ZLinkFrameworkInternalErrorKind.WorkerTimedOut;
961
- case 17:
962
- return ZLinkFrameworkInternalErrorKind.RequestFailed;
963
- case 20:
964
- return ZLinkFrameworkInternalErrorKind.WorkerFailed;
965
- case 21:
966
- return ZLinkFrameworkInternalErrorKind.ActorLocationStale;
967
- case 33:
968
- return ZLinkFrameworkInternalErrorKind.ActorGenerationStale;
969
- case 34:
970
- return ZLinkFrameworkInternalErrorKind.ActorMoving;
971
- case 35:
972
- return ZLinkFrameworkInternalErrorKind.RelocationDataLost;
973
- default:
974
- return undefined;
975
- }
976
- }
977
-
978
855
  function actorTerminalKind(result: number): ZLinkFrameworkInternalErrorKind {
979
856
  switch (result) {
980
857
  case RequestResult.TimedOut:
@@ -990,7 +867,7 @@ function actorTerminalKind(result: number): ZLinkFrameworkInternalErrorKind {
990
867
  case RequestResult.NotConnected:
991
868
  return ZLinkFrameworkInternalErrorKind.RouteNotConnected;
992
869
  // A terminal-only conflict/busy on a remote actor reply is the target's
993
- // stale/owner state: retryable ActorLocationStale (-> Unavailable).
870
+ // stale/owner state: ActorLocationStale (Unavailable).
994
871
  case RequestResult.Conflict:
995
872
  case RequestResult.Busy:
996
873
  return ZLinkFrameworkInternalErrorKind.ActorLocationStale;
@@ -999,8 +876,11 @@ function actorTerminalKind(result: number): ZLinkFrameworkInternalErrorKind {
999
876
  }
1000
877
  }
1001
878
 
879
+ // The shared table preserves Actor fine kinds; without a recognized fine code,
880
+ // the remote owner/queue terminal supplies the classification.
1002
881
  function mapRequestResult(result: number, failureErrno: number, operationName: string): Error {
1003
- const kind = actorFailureCodeKind(failureErrno) ?? actorTerminalKind(result);
882
+ const kind =
883
+ internalFrameworkErrorKindFromWireFailureCode(failureErrno) ?? actorTerminalKind(result);
1004
884
  return createInternalFrameworkException(
1005
885
  kind,
1006
886
  `${operationName} failed with request result ${result}` +
@@ -1008,13 +888,6 @@ function mapRequestResult(result: number, failureErrno: number, operationName: s
1008
888
  );
1009
889
  }
1010
890
 
1011
- function mapRequestError(
1012
- error: { readonly result: number; readonly failureErrno?: number },
1013
- operationName: string
1014
- ): Error {
1015
- return mapRequestResult(error.result, error.failureErrno ?? 0, operationName);
1016
- }
1017
-
1018
891
  function routeNotConnected(message: string, cause?: unknown): ZLinkFrameworkException {
1019
892
  return createInternalFrameworkException(
1020
893
  ZLinkFrameworkInternalErrorKind.RouteNotConnected,