@zlink-systems/framework 0.21.0 → 0.22.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 (487) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Handlers/JsonContract.js +23 -11
  13. package/dist/contracts/Spots/SpotKind.js +16 -8
  14. package/dist/location-store-integration.js +16 -16
  15. package/dist/nest-integration.js +17 -11
  16. package/dist/runtime/abort.js +9 -5
  17. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  18. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  19. package/dist/runtime/actors/actor-client.js +83 -63
  20. package/dist/runtime/actors/actor-context.js +24 -18
  21. package/dist/runtime/actors/actor-creation.js +4 -3
  22. package/dist/runtime/actors/actor-handoff.js +89 -92
  23. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  24. package/dist/runtime/actors/actor-mailbox.js +1 -1
  25. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  26. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  27. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  28. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  29. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  30. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  31. package/dist/runtime/actors/bound-session-wire.js +14 -9
  32. package/dist/runtime/actors/deferred-join-accepted-journal.js +158 -124
  33. package/dist/runtime/actors/index.js +2 -5
  34. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  35. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  36. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  37. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  38. package/dist/runtime/admission.js +2 -6
  39. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  40. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  41. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  42. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  43. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  44. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  45. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  46. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  47. package/dist/runtime/backend/node/node-raw-mesh-backend.js +116 -113
  48. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  49. package/dist/runtime/backend/runtime-message.js +3 -3
  50. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  51. package/dist/runtime/backend/runtime-values.js +4 -5
  52. package/dist/runtime/channels/channel-clients.js +27 -24
  53. package/dist/runtime/channels/channel-dispatch-pipeline.js +10 -18
  54. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  55. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  56. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  57. package/dist/runtime/channels/channel-envelope.js +83 -47
  58. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  59. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  60. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  61. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  62. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  63. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  64. package/dist/runtime/channels/channel-transports.js +43 -33
  65. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  66. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  67. package/dist/runtime/channels/dispatch-error-reporter.js +9 -7
  68. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  69. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  70. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  71. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  72. package/dist/runtime/channels/source-spot-router.js +6 -2
  73. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  74. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  75. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  76. package/dist/runtime/diagnostics/index.js +38 -10
  77. package/dist/runtime/diagnostics/message-flow.js +47 -39
  78. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  79. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  80. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  81. package/dist/runtime/execution/index.js +7 -6
  82. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  83. package/dist/runtime/execution/state-lane.js +2 -2
  84. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -23
  85. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  86. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  87. package/dist/runtime/foundation/raw-service-mesh-runtime.js +136 -136
  88. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  89. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  90. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  91. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  92. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  93. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  94. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  95. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  96. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  97. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  98. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  99. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  100. package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
  101. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  102. package/dist/runtime/foundation/service-topology-registry.js +96 -95
  103. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  104. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  105. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  106. package/dist/runtime/framework-errors-internal.js +7 -10
  107. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  108. package/dist/runtime/handlers/index.js +3 -1
  109. package/dist/runtime/host/actor-packet-relay.js +74 -70
  110. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  111. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  112. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  113. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  114. package/dist/runtime/host/application-job-queue.js +18 -22
  115. package/dist/runtime/host/bound-session-relay.js +3 -1
  116. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  117. package/dist/runtime/host/host-capacity-status.js +8 -4
  118. package/dist/runtime/host/index.js +244 -227
  119. package/dist/runtime/host/instance-activation-authority.js +93 -96
  120. package/dist/runtime/host/location-runtime-owner.js +16 -14
  121. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  122. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  123. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  124. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  125. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  126. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  127. package/dist/runtime/host/runtime-shutdown.js +1 -2
  128. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  129. package/dist/runtime/host/spot-address-transport.js +69 -71
  130. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  131. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  132. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  133. package/dist/runtime/locations/actor-location-claims.js +26 -20
  134. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  135. package/dist/runtime/locations/authority-key-codec.js +7 -7
  136. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  137. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  138. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  139. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  140. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  141. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  142. package/dist/runtime/locations/key-codec.js +1 -1
  143. package/dist/runtime/locations/lease-tracker.js +23 -21
  144. package/dist/runtime/locations/lifecycle.js +4 -5
  145. package/dist/runtime/locations/location-store-repository.js +368 -324
  146. package/dist/runtime/locations/opaque-record-key.js +2 -2
  147. package/dist/runtime/locations/resolvers.js +73 -82
  148. package/dist/runtime/locations/runtime.js +68 -63
  149. package/dist/runtime/locations/spot-location-claims.js +39 -35
  150. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  151. package/dist/runtime/messaging/packet-name.js +7 -6
  152. package/dist/runtime/messaging/payload-codec.js +21 -18
  153. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  154. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  155. package/dist/runtime/routing-id.js +3 -5
  156. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  157. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  158. package/dist/runtime/spots/index.js +208 -219
  159. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  160. package/dist/runtime/spots/spot-activation-state.js +17 -15
  161. package/dist/runtime/spots/spot-activation.js +33 -16
  162. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  163. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  164. package/dist/runtime/spots/spot-actor-packet-dispatch.js +23 -20
  165. package/dist/runtime/spots/spot-actor-packet-drain.js +12 -10
  166. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  167. package/dist/runtime/spots/spot-closing.js +3 -7
  168. package/dist/runtime/spots/spot-context.js +2 -2
  169. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  170. package/dist/runtime/spots/spot-handle.js +6 -3
  171. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  172. package/dist/runtime/spots/spot-manager-public.js +5 -6
  173. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  174. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  175. package/dist/runtime/spots/spot-node-runtime-manager.js +74 -85
  176. package/dist/runtime/spots/spot-outbound.js +10 -14
  177. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  178. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  179. package/dist/runtime/spots/spot-route-packet-dispatch.js +16 -14
  180. package/dist/runtime/spots/spot-route-replies.js +4 -6
  181. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  182. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +1 -2
  183. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  184. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  185. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  186. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  187. package/dist/runtime/spots/spot-subscription-dispatch.js +5 -5
  188. package/dist/runtime/spots/spot-timer.js +25 -29
  189. package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
  190. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  191. package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
  192. package/dist/runtime/streams/bound-session-service.js +8 -9
  193. package/dist/runtime/streams/index.js +20 -19
  194. package/dist/runtime/streams/managed-stream.js +32 -30
  195. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  196. package/dist/runtime/streams/protocol.js +29 -18
  197. package/dist/runtime/streams/session-actor-coordinator.js +34 -37
  198. package/dist/runtime/streams/session-context.js +30 -28
  199. package/dist/runtime/streams/session-provider.js +2 -2
  200. package/dist/runtime/streams/session-serial-executor.js +1 -2
  201. package/dist/runtime/streams/stream-frame-factory.js +11 -5
  202. package/dist/runtime/streams/stream-session-runtime.js +70 -66
  203. package/dist/runtime/workers/index.js +15 -4
  204. package/package.json +2 -2
  205. package/src/contracts/Channels/RouteCalls.ts +6 -1
  206. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  207. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  208. package/src/contracts/Configuration/Builders.ts +14 -14
  209. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  210. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  211. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  212. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  213. package/src/contracts/Configuration/Registration.ts +46 -17
  214. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  215. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  216. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  217. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  218. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  219. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  220. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  221. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  222. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  223. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  224. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -6
  225. package/src/contracts/Errors/index.ts +1 -4
  226. package/src/contracts/Handlers/Attributes.ts +15 -9
  227. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  228. package/src/contracts/Handlers/JsonContract.ts +53 -19
  229. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  230. package/src/contracts/Locations/Authority.ts +4 -11
  231. package/src/contracts/Locations/Keys.ts +6 -1
  232. package/src/contracts/Locations/Options.ts +3 -2
  233. package/src/contracts/Locations/RelocationStore.ts +1 -4
  234. package/src/contracts/Locations/Resolvers.ts +5 -5
  235. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  236. package/src/contracts/Locations/Stores.ts +1 -2
  237. package/src/contracts/Locations/index.ts +2 -8
  238. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  239. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  240. package/src/contracts/Spots/Contracts.ts +2 -8
  241. package/src/contracts/Spots/SpotKind.ts +16 -8
  242. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  243. package/src/contracts/Streams/IZLinkSession.ts +0 -1
  244. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  245. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  246. package/src/internal.ts +5 -4
  247. package/src/location-store-integration.ts +24 -16
  248. package/src/nest-integration.ts +40 -25
  249. package/src/runtime/abort.ts +10 -4
  250. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  251. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  252. package/src/runtime/actors/actor-client.ts +162 -133
  253. package/src/runtime/actors/actor-context.ts +138 -130
  254. package/src/runtime/actors/actor-creation.ts +47 -44
  255. package/src/runtime/actors/actor-execution-context.ts +6 -4
  256. package/src/runtime/actors/actor-handoff.ts +269 -293
  257. package/src/runtime/actors/actor-join-deferred-scope.ts +5 -4
  258. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  259. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  260. package/src/runtime/actors/actor-mailbox.ts +16 -19
  261. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  262. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  263. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  264. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  265. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  266. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  267. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  268. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  269. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  270. package/src/runtime/actors/bound-session-wire.ts +37 -17
  271. package/src/runtime/actors/deferred-join-accepted-journal.ts +351 -320
  272. package/src/runtime/actors/index.ts +43 -86
  273. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  274. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  275. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  276. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  277. package/src/runtime/admission.ts +9 -9
  278. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  279. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  280. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  281. package/src/runtime/backend/contracts/index.ts +73 -52
  282. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  283. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  284. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  285. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  286. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  287. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  288. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  289. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  290. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  291. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  292. package/src/runtime/backend/node/node-raw-mesh-backend.ts +335 -383
  293. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  294. package/src/runtime/backend/runtime-message.ts +5 -3
  295. package/src/runtime/backend/runtime-values.ts +10 -7
  296. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  297. package/src/runtime/channels/channel-clients.ts +93 -73
  298. package/src/runtime/channels/channel-dispatch-pipeline.ts +40 -42
  299. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  300. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  301. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  302. package/src/runtime/channels/channel-envelope.ts +256 -150
  303. package/src/runtime/channels/channel-multipart.ts +13 -5
  304. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  305. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  306. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  307. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  308. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  309. package/src/runtime/channels/channel-socket-options.ts +3 -10
  310. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  311. package/src/runtime/channels/channel-transports.ts +215 -197
  312. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  313. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  314. package/src/runtime/channels/dispatch-error-reporter.ts +11 -8
  315. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  316. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  317. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  318. package/src/runtime/channels/index.ts +1 -4
  319. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  320. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  321. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  322. package/src/runtime/channels/source-spot-router.ts +26 -22
  323. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  324. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  325. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  326. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  327. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  328. package/src/runtime/codecs/index.ts +3 -2
  329. package/src/runtime/diagnostics/flow-context.ts +12 -3
  330. package/src/runtime/diagnostics/index.ts +96 -61
  331. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  332. package/src/runtime/diagnostics/message-flow.ts +95 -76
  333. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  334. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  335. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  336. package/src/runtime/execution/index.ts +18 -26
  337. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  338. package/src/runtime/execution/state-lane.ts +2 -2
  339. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -51
  340. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  341. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  342. package/src/runtime/foundation/operation-identity.ts +1 -2
  343. package/src/runtime/foundation/operation-registry.ts +8 -2
  344. package/src/runtime/foundation/raw-service-mesh-runtime.ts +312 -385
  345. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  346. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  347. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  348. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  349. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  350. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  351. package/src/runtime/foundation/service-mailbox.ts +14 -14
  352. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  353. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  354. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  355. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  356. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  357. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  358. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  359. package/src/runtime/foundation/service-session-binding-ingress-port.ts +1 -4
  360. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  361. package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
  362. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  363. package/src/runtime/foundation/service-topology-registry.ts +157 -159
  364. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  365. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  366. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  367. package/src/runtime/framework-errors-internal.ts +31 -30
  368. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  369. package/src/runtime/handlers/index.ts +18 -8
  370. package/src/runtime/host/actor-packet-relay.ts +290 -261
  371. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  372. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  373. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  374. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  375. package/src/runtime/host/application-job-queue.ts +32 -48
  376. package/src/runtime/host/bound-session-relay.ts +7 -9
  377. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  378. package/src/runtime/host/host-capacity-status.ts +10 -9
  379. package/src/runtime/host/index.ts +861 -789
  380. package/src/runtime/host/instance-activation-authority.ts +125 -143
  381. package/src/runtime/host/location-runtime-owner.ts +38 -26
  382. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  383. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  384. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  385. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  386. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  387. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  388. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  389. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  390. package/src/runtime/host/runtime-shutdown.ts +4 -3
  391. package/src/runtime/host/service-relocation-control.ts +14 -5
  392. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  393. package/src/runtime/host/spot-address-transport.ts +284 -237
  394. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  395. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  396. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  397. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  398. package/src/runtime/locations/actor-location-claims.ts +61 -49
  399. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  400. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  401. package/src/runtime/locations/authority-key-codec.ts +13 -10
  402. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  403. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  404. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  405. package/src/runtime/locations/canonical-codec.ts +3 -1
  406. package/src/runtime/locations/creation-operation-id.ts +4 -3
  407. package/src/runtime/locations/domain-store-contract.ts +13 -7
  408. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  409. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  410. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  411. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  412. package/src/runtime/locations/key-codec.ts +3 -4
  413. package/src/runtime/locations/lease-tracker.ts +36 -27
  414. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  415. package/src/runtime/locations/lifecycle.ts +33 -28
  416. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  417. package/src/runtime/locations/opaque-record-key.ts +4 -9
  418. package/src/runtime/locations/resolvers.ts +201 -178
  419. package/src/runtime/locations/runtime.ts +251 -159
  420. package/src/runtime/locations/spot-location-claims.ts +110 -112
  421. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  422. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  423. package/src/runtime/messaging/packet-name.ts +8 -6
  424. package/src/runtime/messaging/payload-codec.ts +70 -50
  425. package/src/runtime/messaging/submission-result.ts +6 -9
  426. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  427. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  428. package/src/runtime/routing-id.ts +10 -7
  429. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  430. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  431. package/src/runtime/spots/index.ts +593 -563
  432. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  433. package/src/runtime/spots/spot-activation-state.ts +43 -51
  434. package/src/runtime/spots/spot-activation.ts +179 -116
  435. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  436. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  437. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  438. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  439. package/src/runtime/spots/spot-actor-packet-dispatch.ts +184 -153
  440. package/src/runtime/spots/spot-actor-packet-drain.ts +54 -42
  441. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  442. package/src/runtime/spots/spot-closing.ts +11 -12
  443. package/src/runtime/spots/spot-context.ts +46 -26
  444. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  445. package/src/runtime/spots/spot-handle.ts +17 -15
  446. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  447. package/src/runtime/spots/spot-location-claim.ts +5 -4
  448. package/src/runtime/spots/spot-manager-public.ts +62 -82
  449. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  450. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  451. package/src/runtime/spots/spot-node-runtime-manager.ts +230 -221
  452. package/src/runtime/spots/spot-outbound.ts +47 -59
  453. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  454. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  455. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  456. package/src/runtime/spots/spot-route-packet-dispatch.ts +128 -95
  457. package/src/runtime/spots/spot-route-replies.ts +23 -24
  458. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  459. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  460. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +11 -17
  461. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  462. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  463. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  464. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  465. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  466. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  467. package/src/runtime/spots/spot-subscription-dispatch.ts +56 -46
  468. package/src/runtime/spots/spot-timer.ts +98 -91
  469. package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
  470. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
  471. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  472. package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
  473. package/src/runtime/streams/bound-session-response-target.ts +29 -8
  474. package/src/runtime/streams/bound-session-service.ts +39 -39
  475. package/src/runtime/streams/index.ts +176 -100
  476. package/src/runtime/streams/managed-stream.ts +98 -87
  477. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  478. package/src/runtime/streams/protocol.ts +73 -43
  479. package/src/runtime/streams/session-actor-coordinator.ts +97 -89
  480. package/src/runtime/streams/session-calls.ts +2 -8
  481. package/src/runtime/streams/session-context.ts +66 -48
  482. package/src/runtime/streams/session-provider.ts +5 -7
  483. package/src/runtime/streams/session-serial-executor.ts +7 -6
  484. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  485. package/src/runtime/streams/stream-frame-factory.ts +55 -38
  486. package/src/runtime/streams/stream-session-runtime.ts +268 -210
  487. package/src/runtime/workers/index.ts +68 -29
@@ -14,9 +14,7 @@ import {
14
14
  ZLinkDispatchMessageKind
15
15
  } from '../../contracts/Dispatch/ZLinkDispatchOptions';
16
16
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
17
- import type {
18
- ZLinkBackendReceived as BackendReceived
19
- } from '../backend/runtime-values';
17
+ import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
20
18
  import type { Message } from '../../contracts/Common/Message';
21
19
  import type { ZLinkDispatchErrorReporter } from '../channels';
22
20
  import {
@@ -41,11 +39,7 @@ import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
41
39
  import type { ZLinkApplicationWorkClaim } from '../admission';
42
40
  import { zlinkMetadataByteLength, zlinkSerialWorkOptions } from '../execution/serial-work-size';
43
41
  import { REMOTE_ACTOR_JOIN_PACKET } from './spot-remote-codec';
44
- import {
45
- appendRouteReplyParts,
46
- hasReplyToken,
47
- submitRouteReply
48
- } from './spot-route-replies';
42
+ import { appendRouteReplyParts, hasReplyToken, submitRouteReply } from './spot-route-replies';
49
43
  import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
50
44
  import {
51
45
  ZLinkFrameworkInternalErrorKind,
@@ -115,9 +109,7 @@ export class ZLinkSpotRoutePacketDispatch {
115
109
  }
116
110
  const registrations = this.options.packetHandlers.get(envelope.packetName ?? '');
117
111
  const replyable = hasReplyToken(received.replyToken);
118
- const action = replyable
119
- ? ZLinkDispatchErrorAction.ReplyError
120
- : ZLinkDispatchErrorAction.Drop;
112
+ const action = replyable ? ZLinkDispatchErrorAction.ReplyError : ZLinkDispatchErrorAction.Drop;
121
113
  if (registrations === undefined || registrations.length === 0) {
122
114
  this.options.dispatchErrors?.report({
123
115
  surface: ZLinkDispatchErrorSurface.SpotRoute,
@@ -136,14 +128,16 @@ export class ZLinkSpotRoutePacketDispatch {
136
128
  // D5: this error is generated by the framework itself, so the reply
137
129
  // carries the framework-origin marker (never set for application
138
130
  // handler failures).
139
- submitRouteReply(appendRouteReplyParts(
140
- received.reply(),
141
- encodeChannelErrorReplyParts(
142
- envelope.header,
143
- `SPOT route handler not found: ${envelope.packetName}`,
144
- FRAMEWORK_ORIGIN_REPLY_METADATA
131
+ submitRouteReply(
132
+ appendRouteReplyParts(
133
+ received.reply(),
134
+ encodeChannelErrorReplyParts(
135
+ envelope.header,
136
+ `SPOT route handler not found: ${envelope.packetName}`,
137
+ FRAMEWORK_ORIGIN_REPLY_METADATA
138
+ )
145
139
  )
146
- ));
140
+ );
147
141
  }
148
142
  return true;
149
143
  }
@@ -158,43 +152,55 @@ export class ZLinkSpotRoutePacketDispatch {
158
152
  let response: unknown;
159
153
  const applicationClaim = this.options.claimApplicationWork?.();
160
154
  try {
161
- await runWithFlow(createInboundFlow(
162
- envelope.header.flowId,
163
- envelope.header.flowOrigin,
164
- this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true
165
- ), () =>
166
- this.options.serial.execute(async () => {
167
- const spot = this.options.getTarget();
168
- // Keep the wire payload raw until this Spot has acquired its
169
- // execution authority. A rejected or superseded work item must not
170
- // pay the deserialization cost.
171
- const payload = decodeChannelPayload(envelope, this.channelCodecs());
172
- for (const registration of registrations) {
173
- const handler = await resolveLifecycleHandler(
174
- spot,
175
- registration.handlerType as Type<ZLinkSpotPacketHandler<ZLinkSpot, unknown> | ZLinkSpotRequestHandler<ZLinkSpot, unknown, unknown>>,
176
- this.options.providerResolver
177
- );
178
- releaseApplicationJobPermitBeforeHandler();
179
- response = await handler.handle(spot, payload, context);
180
- }
181
- }, zlinkSerialWorkOptions(
182
- envelope.payload.byteLength,
183
- zlinkMetadataByteLength(envelope.header.metadata)
184
- )));
155
+ await runWithFlow(
156
+ createInboundFlow(
157
+ envelope.header.flowId,
158
+ envelope.header.flowOrigin,
159
+ this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true
160
+ ),
161
+ () =>
162
+ this.options.serial.execute(
163
+ async () => {
164
+ const spot = this.options.getTarget();
165
+ // Keep the wire payload raw until this Spot has acquired its
166
+ // execution authority. A rejected or superseded work item must not
167
+ // pay the deserialization cost.
168
+ const payload = decodeChannelPayload(envelope, this.channelCodecs());
169
+ for (const registration of registrations) {
170
+ const handler = await resolveLifecycleHandler(
171
+ spot,
172
+ registration.handlerType as Type<
173
+ | ZLinkSpotPacketHandler<ZLinkSpot, unknown>
174
+ | ZLinkSpotRequestHandler<ZLinkSpot, unknown, unknown>
175
+ >,
176
+ this.options.providerResolver
177
+ );
178
+ releaseApplicationJobPermitBeforeHandler();
179
+ response = await handler.handle(spot, payload, context);
180
+ }
181
+ },
182
+ zlinkSerialWorkOptions(
183
+ envelope.payload.byteLength,
184
+ zlinkMetadataByteLength(envelope.header.metadata)
185
+ )
186
+ )
187
+ );
185
188
  } finally {
186
189
  applicationClaim?.close();
187
190
  }
188
191
  if (replyable) {
189
- submitRouteReply(appendRouteReplyParts(
190
- received.reply(),
191
- encodeChannelReplyParts(envelope.header, response)
192
- ));
192
+ submitRouteReply(
193
+ appendRouteReplyParts(
194
+ received.reply(),
195
+ encodeChannelReplyParts(envelope.header, response)
196
+ )
197
+ );
193
198
  }
194
199
  return true;
195
200
  } catch (error) {
196
- const payloadDecodeFailed = error instanceof ZLinkFrameworkException
197
- && internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed;
201
+ const payloadDecodeFailed =
202
+ error instanceof ZLinkFrameworkException &&
203
+ internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed;
198
204
  this.options.dispatchErrors?.report({
199
205
  surface: ZLinkDispatchErrorSurface.SpotRoute,
200
206
  messageKind: replyable ? ZLinkDispatchMessageKind.Request : ZLinkDispatchMessageKind.Send,
@@ -215,14 +221,16 @@ export class ZLinkSpotRoutePacketDispatch {
215
221
  // D5: only a decode failure created by the framework's own payload
216
222
  // decoding carries the framework-origin marker; application handler
217
223
  // failures never do.
218
- submitRouteReply(appendRouteReplyParts(
219
- received.reply(),
220
- encodeChannelErrorReplyParts(
221
- envelope.header,
222
- error,
223
- payloadDecodeFailed ? FRAMEWORK_ORIGIN_REPLY_METADATA : undefined
224
+ submitRouteReply(
225
+ appendRouteReplyParts(
226
+ received.reply(),
227
+ encodeChannelErrorReplyParts(
228
+ envelope.header,
229
+ error,
230
+ payloadDecodeFailed ? FRAMEWORK_ORIGIN_REPLY_METADATA : undefined
231
+ )
224
232
  )
225
- ));
233
+ );
226
234
  }
227
235
  return true;
228
236
  }
@@ -232,8 +240,11 @@ export class ZLinkSpotRoutePacketDispatch {
232
240
  received: BackendReceived,
233
241
  envelope: ZLinkSpotDirectEnvelope
234
242
  ): Promise<void> {
235
- const replyable = envelope.kind === ZLinkChannelMessageKind.Request && hasReplyToken(received.replyToken);
236
- const messageKind = replyable ? ZLinkDispatchMessageKind.Request : ZLinkDispatchMessageKind.Send;
243
+ const replyable =
244
+ envelope.kind === ZLinkChannelMessageKind.Request && hasReplyToken(received.replyToken);
245
+ const messageKind = replyable
246
+ ? ZLinkDispatchMessageKind.Request
247
+ : ZLinkDispatchMessageKind.Send;
237
248
  const action = replyable ? ZLinkDispatchErrorAction.ReplyError : ZLinkDispatchErrorAction.Drop;
238
249
  const registrations = this.options.packetHandlers.get(envelope.packetName ?? '');
239
250
  if (registrations === undefined || registrations.length === 0) {
@@ -247,39 +258,49 @@ export class ZLinkSpotRoutePacketDispatch {
247
258
  });
248
259
  if (replyable) {
249
260
  submitRouteReply(
250
- received.reply()
251
- .message(encodeSpotDirectReply(false, undefined, `SPOT route handler not found: ${envelope.packetName}`))
261
+ received
262
+ .reply()
263
+ .message(
264
+ encodeSpotDirectReply(
265
+ false,
266
+ undefined,
267
+ `SPOT route handler not found: ${envelope.packetName}`
268
+ )
269
+ )
252
270
  );
253
271
  }
254
272
  return;
255
273
  }
256
274
  try {
257
275
  let response: unknown;
258
- await this.options.serial.execute(async () => {
259
- const spot = this.options.getTarget();
260
- for (const registration of registrations) {
261
- const handler = await resolveLifecycleHandler(
262
- spot,
263
- registration.handlerType as Type<ZLinkSpotPacketHandler<ZLinkSpot, unknown> | ZLinkSpotRequestHandler<ZLinkSpot, unknown, unknown>>,
264
- this.options.providerResolver
265
- );
266
- releaseApplicationJobPermitBeforeHandler();
267
- response = await handler.handle(spot, envelope.payload, {
268
- channelName: envelope.channelName,
269
- packetName: envelope.packetName!,
270
- metadata: zlinkMessageMetadata(envelope.metadata),
271
- correlationId: undefined
272
- });
273
- }
274
- }, zlinkSerialWorkOptions(
275
- received.parts[0]?.size() ?? 0,
276
- zlinkMetadataByteLength(envelope.metadata)
277
- ));
276
+ await this.options.serial.execute(
277
+ async () => {
278
+ const spot = this.options.getTarget();
279
+ for (const registration of registrations) {
280
+ const handler = await resolveLifecycleHandler(
281
+ spot,
282
+ registration.handlerType as Type<
283
+ | ZLinkSpotPacketHandler<ZLinkSpot, unknown>
284
+ | ZLinkSpotRequestHandler<ZLinkSpot, unknown, unknown>
285
+ >,
286
+ this.options.providerResolver
287
+ );
288
+ releaseApplicationJobPermitBeforeHandler();
289
+ response = await handler.handle(spot, envelope.payload, {
290
+ channelName: envelope.channelName,
291
+ packetName: envelope.packetName!,
292
+ metadata: zlinkMessageMetadata(envelope.metadata),
293
+ correlationId: undefined
294
+ });
295
+ }
296
+ },
297
+ zlinkSerialWorkOptions(
298
+ received.parts[0]?.size() ?? 0,
299
+ zlinkMetadataByteLength(envelope.metadata)
300
+ )
301
+ );
278
302
  if (replyable) {
279
- submitRouteReply(
280
- received.reply()
281
- .message(encodeSpotDirectReply(true, response))
282
- );
303
+ submitRouteReply(received.reply().message(encodeSpotDirectReply(true, response)));
283
304
  }
284
305
  } catch (error) {
285
306
  this.options.dispatchErrors?.report({
@@ -293,8 +314,15 @@ export class ZLinkSpotRoutePacketDispatch {
293
314
  });
294
315
  if (replyable) {
295
316
  submitRouteReply(
296
- received.reply()
297
- .message(encodeSpotDirectReply(false, undefined, error instanceof Error ? error.message : String(error)))
317
+ received
318
+ .reply()
319
+ .message(
320
+ encodeSpotDirectReply(
321
+ false,
322
+ undefined,
323
+ error instanceof Error ? error.message : String(error)
324
+ )
325
+ )
298
326
  );
299
327
  return;
300
328
  }
@@ -324,16 +352,17 @@ function decodeSpotDirectEnvelope(parts: readonly Message[]): ZLinkSpotDirectEnv
324
352
  };
325
353
  if (
326
354
  decoded.marker !== SPOT_DIRECT_ENVELOPE ||
327
- (decoded.kind !== ZLinkChannelMessageKind.Request && decoded.kind !== ZLinkChannelMessageKind.Command) ||
355
+ (decoded.kind !== ZLinkChannelMessageKind.Request &&
356
+ decoded.kind !== ZLinkChannelMessageKind.Command) ||
328
357
  typeof decoded.channelName !== 'string'
329
358
  ) {
330
359
  return undefined;
331
360
  }
332
361
  const metadata = decoded.metadata ?? {};
333
362
  if (
334
- typeof metadata !== 'object'
335
- || Array.isArray(metadata)
336
- || !Object.values(metadata).every(value => typeof value === 'string')
363
+ typeof metadata !== 'object' ||
364
+ Array.isArray(metadata) ||
365
+ !Object.values(metadata).every((value) => typeof value === 'string')
337
366
  ) {
338
367
  return undefined;
339
368
  }
@@ -350,10 +379,14 @@ function decodeSpotDirectEnvelope(parts: readonly Message[]): ZLinkSpotDirectEnv
350
379
  }
351
380
 
352
381
  function encodeSpotDirectReply(ok: boolean, response?: unknown, error?: string): Message {
353
- return RuntimeMessage.fromOwned(Buffer.from(JSON.stringify({
354
- marker: SPOT_DIRECT_ENVELOPE,
355
- ok,
356
- response,
357
- error
358
- })));
382
+ return RuntimeMessage.fromOwned(
383
+ Buffer.from(
384
+ JSON.stringify({
385
+ marker: SPOT_DIRECT_ENVELOPE,
386
+ ok,
387
+ response,
388
+ error
389
+ })
390
+ )
391
+ );
359
392
  }
@@ -34,15 +34,11 @@ export function submitRoutePayloadReply(
34
34
  payload: unknown
35
35
  ): boolean {
36
36
  if (envelope === undefined) {
37
- return submitRouteReply(
38
- received.reply()
39
- .message(Buffer.from(JSON.stringify(payload)))
40
- );
37
+ return submitRouteReply(received.reply().message(Buffer.from(JSON.stringify(payload))));
41
38
  }
42
- return submitRouteReply(appendRouteReplyParts(
43
- received.reply(),
44
- encodeChannelReplyParts(envelope.header, payload)
45
- ));
39
+ return submitRouteReply(
40
+ appendRouteReplyParts(received.reply(), encodeChannelReplyParts(envelope.header, payload))
41
+ );
46
42
  }
47
43
 
48
44
  export function submitSpotRouteBridgeReply(
@@ -59,15 +55,14 @@ export function submitRoutedActorJoinReply(
59
55
  payload: unknown
60
56
  ): boolean {
61
57
  if (decoded.raw) {
62
- return submitRouteReply(
63
- received.reply()
64
- .message(Buffer.from(JSON.stringify(payload)))
65
- );
58
+ return submitRouteReply(received.reply().message(Buffer.from(JSON.stringify(payload))));
66
59
  }
67
- return submitRouteReply(appendRouteReplyParts(
68
- received.reply(),
69
- encodeChannelReplyParts(requireRoutedActorJoinEnvelope(decoded).header, payload)
70
- ));
60
+ return submitRouteReply(
61
+ appendRouteReplyParts(
62
+ received.reply(),
63
+ encodeChannelReplyParts(requireRoutedActorJoinEnvelope(decoded).header, payload)
64
+ )
65
+ );
71
66
  }
72
67
 
73
68
  export function submitRoutedActorJoinError(
@@ -83,13 +78,15 @@ export function submitRoutedActorJoinError(
83
78
  actorGeneration: '0'
84
79
  });
85
80
  }
86
- return submitRouteReply(appendRouteReplyParts(
87
- received.reply(),
88
- encodeChannelErrorReplyParts(
89
- requireRoutedActorJoinEnvelope(decoded).header,
90
- error instanceof Error ? error.message : String(error)
81
+ return submitRouteReply(
82
+ appendRouteReplyParts(
83
+ received.reply(),
84
+ encodeChannelErrorReplyParts(
85
+ requireRoutedActorJoinEnvelope(decoded).header,
86
+ error instanceof Error ? error.message : String(error)
87
+ )
91
88
  )
92
- ));
89
+ );
93
90
  }
94
91
 
95
92
  export function appendRouteReplyParts(
@@ -120,7 +117,9 @@ function requireRoutedActorJoinEnvelope(
120
117
  }
121
118
 
122
119
  function isNativeBadAddress(error: unknown): boolean {
123
- return typeof error === 'object' &&
120
+ return (
121
+ typeof error === 'object' &&
124
122
  error !== null &&
125
- Number((error as { nativeErrno?: unknown }).nativeErrno) === 14;
123
+ Number((error as { nativeErrno?: unknown }).nativeErrno) === 14
124
+ );
126
125
  }
@@ -9,7 +9,8 @@ export interface ZLinkSpotRouteBridgeReplyPayload {
9
9
  readonly actorPacketTarget?: ZLinkRemoteActorPacketTargetWire;
10
10
  }
11
11
 
12
- export function encodeSpotRouteBridgeReply(payload: ZLinkSpotRouteBridgeReplyPayload): ZLinkSpotRouteBridgeReplyPayload {
12
+ export function encodeSpotRouteBridgeReply(
13
+ payload: ZLinkSpotRouteBridgeReplyPayload
14
+ ): ZLinkSpotRouteBridgeReplyPayload {
13
15
  return payload;
14
16
  }
15
-
@@ -26,10 +26,7 @@ import {
26
26
  type ZLinkRoutedActorTransferProvider,
27
27
  type ZLinkRemoteActorJoinWirePayload
28
28
  } from './spot-remote-codec';
29
- import {
30
- submitRoutedActorJoinError,
31
- submitRoutedActorJoinReply
32
- } from './spot-route-replies';
29
+ import { submitRoutedActorJoinError, submitRoutedActorJoinReply } from './spot-route-replies';
33
30
  import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
34
31
  import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
35
32
 
@@ -107,8 +104,9 @@ export class ZLinkSpotRoutedActorAdmission {
107
104
  const existing = this.pending.get(decoded.transferId);
108
105
  if (existing !== undefined) {
109
106
  this.requireMatchingTransfer(existing, decoded);
110
- const reply = existing.admissionReply ?? await existing.admissionTask;
111
- if (reply === undefined) throw new Error(`Remote actor transfer '${decoded.transferId}' has no admission result.`);
107
+ const reply = existing.admissionReply ?? (await existing.admissionTask);
108
+ if (reply === undefined)
109
+ throw new Error(`Remote actor transfer '${decoded.transferId}' has no admission result.`);
112
110
  submitRoutedActorJoinReply(received, decoded, reply);
113
111
  return;
114
112
  }
@@ -138,8 +136,14 @@ export class ZLinkSpotRoutedActorAdmission {
138
136
  throw new Error('Remote actor transfer commit requires a transfer id.');
139
137
  }
140
138
  const pending = this.pending.get(transferId);
141
- if (pending === undefined || pending.actorId !== decoded.actorId || pending.actorType !== decoded.actorType) {
142
- throw new Error(`Remote actor transfer '${transferId}' does not have a matching admission.`);
139
+ if (
140
+ pending === undefined ||
141
+ pending.actorId !== decoded.actorId ||
142
+ pending.actorType !== decoded.actorType
143
+ ) {
144
+ throw new Error(
145
+ `Remote actor transfer '${transferId}' does not have a matching admission.`
146
+ );
143
147
  }
144
148
  if (pending.phase === 'rejected') {
145
149
  throw new Error(`Remote actor transfer '${transferId}' admission was rejected.`);
@@ -152,7 +156,7 @@ export class ZLinkSpotRoutedActorAdmission {
152
156
  if (pending.deadline !== undefined) clearTimeout(pending.deadline);
153
157
  pending.commitTask = this.evaluateCommit(decoded, transferId, pending);
154
158
  }
155
- const commitReply = pending.commitReply ?? await pending.commitTask;
159
+ const commitReply = pending.commitReply ?? (await pending.commitTask);
156
160
  submitRoutedActorJoinReply(received, decoded, commitReply);
157
161
  } catch (error) {
158
162
  submitRoutedActorJoinError(received, decoded, error);
@@ -167,15 +171,17 @@ export class ZLinkSpotRoutedActorAdmission {
167
171
  ): Promise<Record<string, unknown>> {
168
172
  try {
169
173
  const response = await this.runJoinCallback(decoded, decoded.request);
170
- const reply = response.reply === undefined
171
- ? undefined
172
- : encodeFrameworkPayloadMessage(response.reply, this.options.messageSerializers);
174
+ const reply =
175
+ response.reply === undefined
176
+ ? undefined
177
+ : encodeFrameworkPayloadMessage(response.reply, this.options.messageSerializers);
173
178
  try {
174
179
  const actorRef = decoded.actorRef;
175
180
  const admissionReply = {
176
181
  accepted: response.accepted,
177
182
  actorNodeRid: String(actorRef?.nodeRid ?? ''),
178
- actorNodeRidHex: actorRef?.nodeRid === undefined ? undefined : encodeRoutingIdHex(actorRef.nodeRid),
183
+ actorNodeRidHex:
184
+ actorRef?.nodeRid === undefined ? undefined : encodeRoutingIdHex(actorRef.nodeRid),
179
185
  actorId: decoded.actorId,
180
186
  actorGeneration: (actorRef?.generation ?? 0n).toString(),
181
187
  reply: reply?.data().toString('base64')
@@ -199,7 +205,10 @@ export class ZLinkSpotRoutedActorAdmission {
199
205
  pending: ZLinkPendingRoutedActorTransfer
200
206
  ): Promise<Record<string, unknown>> {
201
207
  try {
202
- if (decoded.transferState === undefined || this.options.routedActorTransferProvider === undefined) {
208
+ if (
209
+ decoded.transferState === undefined ||
210
+ this.options.routedActorTransferProvider === undefined
211
+ ) {
203
212
  throw new Error('Remote actor transfer commit cannot materialize the target actor.');
204
213
  }
205
214
  const { actor, actorRef } = await this.options.routedActorTransferProvider(
@@ -210,7 +219,8 @@ export class ZLinkSpotRoutedActorAdmission {
210
219
  decoded.actorEntryNodeRid,
211
220
  decoded.remoteBoundSessionTarget
212
221
  );
213
- const handoffResults = await this.options.commitTransferredActor?.(actor, decoded.handoffBacklog) ?? [];
222
+ const handoffResults =
223
+ (await this.options.commitTransferredActor?.(actor, decoded.handoffBacklog)) ?? [];
214
224
  const commitReply = {
215
225
  accepted: true,
216
226
  actorNodeRid: String(actorRef.nodeRid),
@@ -258,18 +268,17 @@ export class ZLinkSpotRoutedActorAdmission {
258
268
  decoded: ZLinkDecodedRemoteActorJoinRequest
259
269
  ): void {
260
270
  if (pending.actorId !== decoded.actorId || pending.actorType !== decoded.actorType) {
261
- throw new Error(`Remote actor transfer '${decoded.transferId}' identity does not match its first request.`);
271
+ throw new Error(
272
+ `Remote actor transfer '${decoded.transferId}' identity does not match its first request.`
273
+ );
262
274
  }
263
275
  }
264
276
 
265
277
  private scheduleExpiration(transferId: string, pending: ZLinkPendingRoutedActorTransfer): void {
266
278
  if (pending.deadline !== undefined) clearTimeout(pending.deadline);
267
- pending.deadline = setTimeout(
268
- () => {
269
- if (this.pending.get(transferId) === pending) this.pending.delete(transferId);
270
- },
271
- this.options.pendingAdmissionTimeoutMs ?? 30_000
272
- );
279
+ pending.deadline = setTimeout(() => {
280
+ if (this.pending.get(transferId) === pending) this.pending.delete(transferId);
281
+ }, this.options.pendingAdmissionTimeoutMs ?? 30_000);
273
282
  pending.deadline.unref();
274
283
  }
275
284
 
@@ -289,10 +298,7 @@ export class ZLinkSpotRoutedActorAdmission {
289
298
  }
290
299
  try {
291
300
  const payload = JSON.parse(parts[0].data().toString()) as ZLinkRemoteActorJoinWirePayload;
292
- if (
293
- payload.packetName !== REMOTE_ACTOR_JOIN_PACKET ||
294
- !isRemoteActorJoinPayload(payload)
295
- ) {
301
+ if (payload.packetName !== REMOTE_ACTOR_JOIN_PACKET || !isRemoteActorJoinPayload(payload)) {
296
302
  return undefined;
297
303
  }
298
304
  return decodeRemoteActorJoinPayload(
@@ -306,7 +312,11 @@ export class ZLinkSpotRoutedActorAdmission {
306
312
  }
307
313
  }
308
314
  try {
309
- const envelope = decodeChannelEnvelope(parts, undefined, this.options.flowEnabled?.() ?? true);
315
+ const envelope = decodeChannelEnvelope(
316
+ parts,
317
+ undefined,
318
+ this.options.flowEnabled?.() ?? true
319
+ );
310
320
  if (envelope.packetName !== REMOTE_ACTOR_JOIN_PACKET) {
311
321
  return undefined;
312
322
  }
@@ -6,11 +6,7 @@ import {
6
6
  decodeRemoteBoundSessionResponse,
7
7
  decodeRemoteBoundSessionSend
8
8
  } from './spot-remote-route-codec';
9
- import {
10
- hasReplyToken,
11
- submitRoutePayloadReply,
12
- submitRouteReply
13
- } from './spot-route-replies';
9
+ import { hasReplyToken, submitRoutePayloadReply, submitRouteReply } from './spot-route-replies';
14
10
  import type { ZLinkActorResponseOptions } from './spot-actor-packet-dispatch';
15
11
  import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
16
12
  import type { ZLinkDispatchErrorReporter } from '../channels';
@@ -63,14 +59,15 @@ export class ZLinkSpotRoutedBoundSessionDispatch {
63
59
  boundSessionSend.flowOrigin ?? boundSessionSend.envelope?.header.flowOrigin,
64
60
  this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true
65
61
  ),
66
- () => this.options.routedBoundSessionReceiver?.(
67
- boundSessionSend.actorId,
68
- boundSessionSend.message,
69
- boundSessionSend.packetName,
70
- boundSessionSend.metadata,
71
- boundSessionSend.actorRef,
72
- boundSessionSend.actorPacketTarget
73
- )
62
+ () =>
63
+ this.options.routedBoundSessionReceiver?.(
64
+ boundSessionSend.actorId,
65
+ boundSessionSend.message,
66
+ boundSessionSend.packetName,
67
+ boundSessionSend.metadata,
68
+ boundSessionSend.actorRef,
69
+ boundSessionSend.actorPacketTarget
70
+ )
74
71
  );
75
72
  if (hasReplyToken(received.replyToken)) {
76
73
  submitRoutePayloadReply(received, boundSessionSend.envelope, { ok: true });
@@ -124,9 +121,6 @@ export class ZLinkSpotRoutedBoundSessionDispatch {
124
121
  if (!hasReplyToken(received.replyToken)) {
125
122
  return;
126
123
  }
127
- submitRouteReply(
128
- received.reply()
129
- .message(Buffer.from(JSON.stringify({ ok: true })))
130
- );
124
+ submitRouteReply(received.reply().message(Buffer.from(JSON.stringify({ ok: true }))));
131
125
  }
132
126
  }
@@ -8,14 +8,8 @@ import type {
8
8
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
9
9
  import type { RoutingId } from '../../contracts';
10
10
  import type { ActorRef } from '../../contracts/Common/ActorRef';
11
- import type {
12
- ZLinkRemoteActorPacketTarget,
13
- ZLinkRemoteBoundSessionTarget
14
- } from '../actors';
15
- import type {
16
- ZLinkBackendReceived,
17
- ZLinkBackendSpot
18
- } from '../backend/contracts';
11
+ import type { ZLinkRemoteActorPacketTarget, ZLinkRemoteBoundSessionTarget } from '../actors';
12
+ import type { ZLinkBackendReceived, ZLinkBackendSpot } from '../backend/contracts';
19
13
  import type { ZLinkDispatchErrorReporter } from '../channels';
20
14
  import type { ZLinkChannelEnvelopeCodecRegistry } from '../channels/channel-envelope';
21
15
  import { decodeRemoteActorPacketRelay } from './spot-remote-route-codec';
@@ -79,7 +73,9 @@ interface ZLinkSpotRoutedFrameDispatchOptions {
79
73
  actorPacketTarget?: unknown,
80
74
  signal?: AbortSignal
81
75
  ) => Promise<void>;
82
- readonly actorPacketTargetProvider?: (actorId: string) => ZLinkRemoteActorPacketTarget | undefined;
76
+ readonly actorPacketTargetProvider?: (
77
+ actorId: string
78
+ ) => ZLinkRemoteActorPacketTarget | undefined;
83
79
  readonly bindRemoteSession?: (
84
80
  actor: ActorRef,
85
81
  sourceNodeRid: RoutingId,
@@ -148,7 +144,10 @@ export class ZLinkSpotRoutedFrameDispatch {
148
144
  }
149
145
  }
150
146
 
151
- async drain(received: ZLinkBackendReceived | undefined = undefined, retryDeadlineMs = performance.now()): Promise<void> {
147
+ async drain(
148
+ received: ZLinkBackendReceived | undefined = undefined,
149
+ retryDeadlineMs = performance.now()
150
+ ): Promise<void> {
152
151
  if (this.routeDraining) {
153
152
  if (received !== undefined) {
154
153
  try {
@@ -226,7 +225,10 @@ export class ZLinkSpotRoutedFrameDispatch {
226
225
  this.channelCodecs(),
227
226
  this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true
228
227
  );
229
- if (actorPacketRelay !== undefined && await this.actorPacketRelayDispatch.dispatch(received, actorPacketRelay)) {
228
+ if (
229
+ actorPacketRelay !== undefined &&
230
+ (await this.actorPacketRelayDispatch.dispatch(received, actorPacketRelay))
231
+ ) {
230
232
  return;
231
233
  }
232
234
  if (await this.routePacketDispatch.dispatch(received)) {
@@ -237,14 +239,15 @@ export class ZLinkSpotRoutedFrameDispatch {
237
239
  }
238
240
 
239
241
  function isRouteRecvRetryable(error: unknown): boolean {
240
- return typeof error === 'object' &&
242
+ return (
243
+ typeof error === 'object' &&
241
244
  error !== null &&
242
- [201, 202, 204].includes(Number((error as { result?: unknown }).result));
245
+ [201, 202, 204].includes(Number((error as { result?: unknown }).result))
246
+ );
243
247
  }
244
248
 
245
249
  function closeReceivedQuietly(received: ZLinkBackendReceived): void {
246
250
  try {
247
251
  received.close();
248
- } catch {
249
- }
252
+ } catch {}
250
253
  }