@zlink-systems/framework 0.21.0 → 0.23.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 (516) 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/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
  13. package/dist/contracts/Handlers/JsonContract.js +23 -11
  14. package/dist/contracts/Spots/SpotKind.js +16 -8
  15. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
  16. package/dist/location-store-integration.js +16 -16
  17. package/dist/nest-integration.js +17 -11
  18. package/dist/runtime/abort.js +9 -5
  19. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  20. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  21. package/dist/runtime/actors/actor-client.js +83 -63
  22. package/dist/runtime/actors/actor-context.js +28 -22
  23. package/dist/runtime/actors/actor-creation.js +4 -3
  24. package/dist/runtime/actors/actor-handoff.js +89 -92
  25. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
  26. package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
  27. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  28. package/dist/runtime/actors/actor-mailbox.js +1 -1
  29. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  30. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  31. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  32. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  33. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  34. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  35. package/dist/runtime/actors/bound-session-wire.js +14 -9
  36. package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
  37. package/dist/runtime/actors/index.js +2 -5
  38. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  39. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  40. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  41. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  42. package/dist/runtime/admission.js +2 -6
  43. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  44. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  45. package/dist/runtime/backend/contracts/index.d.ts +1 -0
  46. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  47. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  48. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  49. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  50. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  51. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  52. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
  53. package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
  54. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  55. package/dist/runtime/backend/runtime-message.js +3 -3
  56. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  57. package/dist/runtime/backend/runtime-values.js +4 -5
  58. package/dist/runtime/channels/channel-clients.js +27 -24
  59. package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
  60. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  61. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  62. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  63. package/dist/runtime/channels/channel-envelope.js +83 -47
  64. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  65. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  66. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  67. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  68. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  69. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  70. package/dist/runtime/channels/channel-transports.js +46 -42
  71. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  72. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  73. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
  74. package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
  75. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  76. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  77. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  78. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  79. package/dist/runtime/channels/source-spot-router.js +6 -2
  80. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  81. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  82. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  83. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
  84. package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
  85. package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
  86. package/dist/runtime/diagnostics/flow-context.js +2 -2
  87. package/dist/runtime/diagnostics/index.js +38 -10
  88. package/dist/runtime/diagnostics/message-flow.js +58 -42
  89. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  90. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  91. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  92. package/dist/runtime/execution/index.js +7 -6
  93. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  94. package/dist/runtime/execution/state-lane.js +2 -2
  95. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
  96. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  97. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  98. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
  99. package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
  100. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  101. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  102. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  103. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  104. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  105. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  106. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  107. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  108. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  109. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  110. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  111. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
  112. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  113. package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
  114. package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
  115. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  116. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
  117. package/dist/runtime/foundation/service-topology-registry.js +105 -96
  118. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  119. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  120. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  121. package/dist/runtime/framework-errors-internal.js +7 -10
  122. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  123. package/dist/runtime/handlers/index.js +3 -1
  124. package/dist/runtime/host/actor-packet-relay.js +74 -70
  125. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  126. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  127. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  128. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  129. package/dist/runtime/host/application-job-queue.js +18 -22
  130. package/dist/runtime/host/bound-session-relay.js +3 -1
  131. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  132. package/dist/runtime/host/host-capacity-status.js +8 -4
  133. package/dist/runtime/host/index.js +245 -228
  134. package/dist/runtime/host/instance-activation-authority.js +93 -96
  135. package/dist/runtime/host/location-runtime-owner.js +16 -14
  136. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  137. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  138. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  139. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  140. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  141. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  142. package/dist/runtime/host/runtime-shutdown.js +1 -2
  143. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  144. package/dist/runtime/host/spot-address-transport.js +69 -71
  145. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  146. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  147. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  148. package/dist/runtime/locations/actor-location-claims.js +26 -20
  149. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  150. package/dist/runtime/locations/authority-key-codec.js +7 -7
  151. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  152. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  153. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  154. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  155. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  156. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  157. package/dist/runtime/locations/key-codec.js +1 -1
  158. package/dist/runtime/locations/lease-tracker.js +23 -21
  159. package/dist/runtime/locations/lifecycle.js +4 -5
  160. package/dist/runtime/locations/location-store-repository.js +368 -324
  161. package/dist/runtime/locations/opaque-record-key.js +2 -2
  162. package/dist/runtime/locations/resolvers.js +73 -82
  163. package/dist/runtime/locations/runtime.js +68 -63
  164. package/dist/runtime/locations/spot-location-claims.js +39 -35
  165. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  166. package/dist/runtime/messaging/packet-name.js +7 -6
  167. package/dist/runtime/messaging/payload-codec.js +21 -18
  168. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  169. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  170. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
  171. package/dist/runtime/routing-id.js +3 -5
  172. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  173. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  174. package/dist/runtime/spots/index.js +209 -220
  175. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  176. package/dist/runtime/spots/spot-activation-state.js +17 -15
  177. package/dist/runtime/spots/spot-activation.js +33 -16
  178. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  179. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  180. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
  181. package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
  182. package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
  183. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  184. package/dist/runtime/spots/spot-closing.js +3 -7
  185. package/dist/runtime/spots/spot-context.js +2 -2
  186. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  187. package/dist/runtime/spots/spot-handle.js +6 -3
  188. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  189. package/dist/runtime/spots/spot-manager-public.js +5 -6
  190. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  191. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  192. package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
  193. package/dist/runtime/spots/spot-outbound.js +10 -14
  194. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  195. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  196. package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
  197. package/dist/runtime/spots/spot-route-replies.js +4 -6
  198. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  199. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
  200. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  201. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  202. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  203. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  204. package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
  205. package/dist/runtime/spots/spot-timer.js +26 -30
  206. package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
  207. package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
  208. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
  209. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  210. package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
  211. package/dist/runtime/streams/bound-session-response-target.js +8 -1
  212. package/dist/runtime/streams/bound-session-service.d.ts +1 -0
  213. package/dist/runtime/streams/bound-session-service.js +14 -12
  214. package/dist/runtime/streams/index.js +28 -20
  215. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  216. package/dist/runtime/streams/managed-stream.js +52 -31
  217. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  218. package/dist/runtime/streams/protocol.d.ts +5 -1
  219. package/dist/runtime/streams/protocol.js +68 -20
  220. package/dist/runtime/streams/session-actor-coordinator.js +37 -41
  221. package/dist/runtime/streams/session-context.d.ts +9 -2
  222. package/dist/runtime/streams/session-context.js +50 -32
  223. package/dist/runtime/streams/session-local-actors.d.ts +3 -1
  224. package/dist/runtime/streams/session-local-actors.js +17 -2
  225. package/dist/runtime/streams/session-provider.js +2 -2
  226. package/dist/runtime/streams/session-serial-executor.js +1 -2
  227. package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
  228. package/dist/runtime/streams/stream-frame-factory.js +14 -7
  229. package/dist/runtime/streams/stream-session-runtime.js +112 -78
  230. package/dist/runtime/workers/index.js +15 -4
  231. package/package.json +3 -3
  232. package/src/contracts/Channels/RouteCalls.ts +6 -1
  233. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  234. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  235. package/src/contracts/Configuration/Builders.ts +14 -14
  236. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  237. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  238. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  239. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  240. package/src/contracts/Configuration/Registration.ts +46 -17
  241. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  242. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  243. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  244. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  245. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  246. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  247. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  248. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  249. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  250. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  251. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
  252. package/src/contracts/Errors/index.ts +1 -4
  253. package/src/contracts/Handlers/Attributes.ts +15 -9
  254. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  255. package/src/contracts/Handlers/JsonContract.ts +53 -19
  256. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  257. package/src/contracts/Locations/Authority.ts +4 -11
  258. package/src/contracts/Locations/Keys.ts +6 -1
  259. package/src/contracts/Locations/Options.ts +3 -2
  260. package/src/contracts/Locations/RelocationStore.ts +1 -4
  261. package/src/contracts/Locations/Resolvers.ts +5 -5
  262. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  263. package/src/contracts/Locations/Stores.ts +1 -2
  264. package/src/contracts/Locations/index.ts +2 -8
  265. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  266. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  267. package/src/contracts/Spots/Contracts.ts +2 -8
  268. package/src/contracts/Spots/SpotKind.ts +16 -8
  269. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  270. package/src/contracts/Streams/IZLinkSession.ts +2 -2
  271. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  272. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  273. package/src/internal.ts +5 -4
  274. package/src/location-store-integration.ts +24 -16
  275. package/src/nest-integration.ts +40 -25
  276. package/src/runtime/abort.ts +10 -4
  277. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  278. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  279. package/src/runtime/actors/actor-client.ts +162 -133
  280. package/src/runtime/actors/actor-context.ts +142 -134
  281. package/src/runtime/actors/actor-creation.ts +47 -44
  282. package/src/runtime/actors/actor-execution-context.ts +6 -4
  283. package/src/runtime/actors/actor-handoff.ts +269 -293
  284. package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
  285. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  286. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  287. package/src/runtime/actors/actor-mailbox.ts +16 -19
  288. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  289. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  290. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  291. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  292. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  293. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  294. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  295. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  296. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  297. package/src/runtime/actors/bound-session-wire.ts +37 -17
  298. package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
  299. package/src/runtime/actors/index.ts +43 -86
  300. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  301. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  302. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  303. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  304. package/src/runtime/admission.ts +9 -9
  305. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  306. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  307. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  308. package/src/runtime/backend/contracts/index.ts +77 -52
  309. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  310. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  311. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  312. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  313. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  314. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  315. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  316. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  317. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  318. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  319. package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
  320. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  321. package/src/runtime/backend/runtime-message.ts +5 -3
  322. package/src/runtime/backend/runtime-values.ts +10 -7
  323. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  324. package/src/runtime/channels/channel-clients.ts +93 -73
  325. package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
  326. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  327. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  328. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  329. package/src/runtime/channels/channel-envelope.ts +256 -150
  330. package/src/runtime/channels/channel-multipart.ts +13 -5
  331. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  332. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  333. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  334. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  335. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  336. package/src/runtime/channels/channel-socket-options.ts +3 -10
  337. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  338. package/src/runtime/channels/channel-transports.ts +218 -206
  339. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  340. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  341. package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
  342. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  343. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  344. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  345. package/src/runtime/channels/index.ts +1 -4
  346. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  347. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  348. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  349. package/src/runtime/channels/source-spot-router.ts +26 -22
  350. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  351. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  352. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  353. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  354. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  355. package/src/runtime/codecs/index.ts +3 -2
  356. package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
  357. package/src/runtime/diagnostics/flow-context.ts +18 -7
  358. package/src/runtime/diagnostics/index.ts +96 -61
  359. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  360. package/src/runtime/diagnostics/message-flow.ts +107 -79
  361. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  362. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  363. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  364. package/src/runtime/execution/index.ts +18 -26
  365. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  366. package/src/runtime/execution/state-lane.ts +2 -2
  367. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
  368. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  369. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  370. package/src/runtime/foundation/operation-identity.ts +1 -2
  371. package/src/runtime/foundation/operation-registry.ts +8 -2
  372. package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
  373. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  374. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  375. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  376. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  377. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  378. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  379. package/src/runtime/foundation/service-mailbox.ts +14 -14
  380. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  381. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  382. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  383. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  384. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  385. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  386. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  387. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
  388. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  389. package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
  390. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  391. package/src/runtime/foundation/service-topology-registry.ts +170 -159
  392. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  393. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  394. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  395. package/src/runtime/framework-errors-internal.ts +31 -30
  396. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  397. package/src/runtime/handlers/index.ts +18 -8
  398. package/src/runtime/host/actor-packet-relay.ts +290 -261
  399. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  400. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  401. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  402. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  403. package/src/runtime/host/application-job-queue.ts +32 -48
  404. package/src/runtime/host/bound-session-relay.ts +7 -9
  405. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  406. package/src/runtime/host/host-capacity-status.ts +10 -9
  407. package/src/runtime/host/index.ts +861 -789
  408. package/src/runtime/host/instance-activation-authority.ts +125 -143
  409. package/src/runtime/host/location-runtime-owner.ts +38 -26
  410. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  411. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  412. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  413. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  414. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  415. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  416. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  417. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  418. package/src/runtime/host/runtime-shutdown.ts +4 -3
  419. package/src/runtime/host/service-relocation-control.ts +14 -5
  420. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  421. package/src/runtime/host/spot-address-transport.ts +284 -237
  422. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  423. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  424. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  425. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  426. package/src/runtime/locations/actor-location-claims.ts +61 -49
  427. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  428. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  429. package/src/runtime/locations/authority-key-codec.ts +13 -10
  430. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  431. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  432. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  433. package/src/runtime/locations/canonical-codec.ts +3 -1
  434. package/src/runtime/locations/creation-operation-id.ts +4 -3
  435. package/src/runtime/locations/domain-store-contract.ts +13 -7
  436. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  437. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  438. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  439. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  440. package/src/runtime/locations/key-codec.ts +3 -4
  441. package/src/runtime/locations/lease-tracker.ts +36 -27
  442. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  443. package/src/runtime/locations/lifecycle.ts +33 -28
  444. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  445. package/src/runtime/locations/opaque-record-key.ts +4 -9
  446. package/src/runtime/locations/resolvers.ts +201 -178
  447. package/src/runtime/locations/runtime.ts +251 -159
  448. package/src/runtime/locations/spot-location-claims.ts +110 -112
  449. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  450. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  451. package/src/runtime/messaging/packet-name.ts +8 -6
  452. package/src/runtime/messaging/payload-codec.ts +70 -50
  453. package/src/runtime/messaging/submission-result.ts +6 -9
  454. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  455. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
  456. package/src/runtime/routing-id.ts +10 -7
  457. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  458. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  459. package/src/runtime/spots/index.ts +595 -564
  460. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  461. package/src/runtime/spots/spot-activation-state.ts +43 -51
  462. package/src/runtime/spots/spot-activation.ts +179 -116
  463. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  464. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  465. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  466. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  467. package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
  468. package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
  469. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  470. package/src/runtime/spots/spot-closing.ts +11 -12
  471. package/src/runtime/spots/spot-context.ts +46 -26
  472. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  473. package/src/runtime/spots/spot-handle.ts +17 -15
  474. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  475. package/src/runtime/spots/spot-location-claim.ts +5 -4
  476. package/src/runtime/spots/spot-manager-public.ts +62 -82
  477. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  478. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  479. package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
  480. package/src/runtime/spots/spot-outbound.ts +47 -59
  481. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  482. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  483. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  484. package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
  485. package/src/runtime/spots/spot-route-replies.ts +23 -24
  486. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  487. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  488. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
  489. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  490. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  491. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  492. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  493. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  494. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  495. package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
  496. package/src/runtime/spots/spot-timer.ts +103 -91
  497. package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
  498. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
  499. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  500. package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
  501. package/src/runtime/streams/bound-session-response-target.ts +39 -9
  502. package/src/runtime/streams/bound-session-service.ts +52 -42
  503. package/src/runtime/streams/index.ts +183 -100
  504. package/src/runtime/streams/managed-stream.ts +123 -90
  505. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  506. package/src/runtime/streams/protocol.ts +115 -46
  507. package/src/runtime/streams/session-actor-coordinator.ts +109 -93
  508. package/src/runtime/streams/session-calls.ts +2 -8
  509. package/src/runtime/streams/session-context.ts +96 -51
  510. package/src/runtime/streams/session-local-actors.ts +19 -3
  511. package/src/runtime/streams/session-provider.ts +5 -7
  512. package/src/runtime/streams/session-serial-executor.ts +7 -6
  513. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  514. package/src/runtime/streams/stream-frame-factory.ts +59 -40
  515. package/src/runtime/streams/stream-session-runtime.ts +317 -214
  516. package/src/runtime/workers/index.ts +68 -29
@@ -4,6 +4,7 @@ exports.ZLinkNodeRawMeshBackend = void 0;
4
4
  exports.genericOperationFailure = genericOperationFailure;
5
5
  const node_crypto_1 = require("node:crypto");
6
6
  const promises_1 = require("node:timers/promises");
7
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
7
8
  const node_socket_backend_adapter_1 = require("./node-socket-backend-adapter");
8
9
  const contracts_1 = require("../../../contracts");
9
10
  const framework_errors_internal_1 = require("../../framework-errors-internal");
@@ -80,6 +81,7 @@ class ZLinkNodeRawMeshBackend {
80
81
  mailboxRecordDropped;
81
82
  protocolError;
82
83
  messageFollowHandler;
84
+ dispatchErrors;
83
85
  peerDisconnectedHandlers = new Set();
84
86
  constructor(meshName, routingId, bindingPort, applicationJobQueue, applicationJobReceiveFlowFailureSink, peerAdmissionSealed) {
85
87
  this.meshName = meshName;
@@ -108,6 +110,10 @@ class ZLinkNodeRawMeshBackend {
108
110
  this.mailboxRecordDropped = handler;
109
111
  this.stateful?.setMailboxDropHandler(handler);
110
112
  }
113
+ setDispatchErrorReporter(reporter) {
114
+ this.dispatchErrors = reporter;
115
+ this.stateful?.setDispatchErrorReporter(reporter, this.meshName);
116
+ }
111
117
  setProtocolErrorHandler(handler) {
112
118
  this.protocolError = handler;
113
119
  }
@@ -117,12 +123,12 @@ class ZLinkNodeRawMeshBackend {
117
123
  selectObjectPlacement(stableType) {
118
124
  const runtime = this.requireRuntime();
119
125
  const localNodeRid = runtime.topology.localDescriptor().nodeRoutingId;
120
- const status = runtime.topology.objectPlacementStatus(stableType, candidate => candidate.nodeRoutingId === localNodeRid
121
- || runtime.isPeerRouteReady(candidate.nodeRoutingId));
126
+ const status = runtime.topology.objectPlacementStatus(stableType, (candidate) => candidate.nodeRoutingId === localNodeRid ||
127
+ runtime.isPeerRouteReady(candidate.nodeRoutingId));
122
128
  if (status !== 'available')
123
129
  return { kind: status };
124
- const descriptor = runtime.topology.selectObjectPlacement(stableType, candidate => candidate.nodeRoutingId === localNodeRid
125
- || runtime.isPeerRouteReady(candidate.nodeRoutingId));
130
+ const descriptor = runtime.topology.selectObjectPlacement(stableType, (candidate) => candidate.nodeRoutingId === localNodeRid ||
131
+ runtime.isPeerRouteReady(candidate.nodeRoutingId));
126
132
  return descriptor === undefined
127
133
  ? { kind: 'unavailable' }
128
134
  : {
@@ -171,7 +177,7 @@ class ZLinkNodeRawMeshBackend {
171
177
  const descriptor = this.createDescriptor();
172
178
  const runtime = new raw_service_mesh_runtime_1.RawServiceMeshRuntime({
173
179
  descriptor,
174
- resolveAdvertisedEndpoint: boundEndpoint => this.resolveAdvertisedEndpoint(boundEndpoint),
180
+ resolveAdvertisedEndpoint: (boundEndpoint) => this.resolveAdvertisedEndpoint(boundEndpoint),
175
181
  bindingPort: this.bindingPort,
176
182
  applicationJobQueue: this.requireApplicationJobQueue(),
177
183
  peerAdmissionSealed: this.peerAdmissionSealed,
@@ -185,17 +191,16 @@ class ZLinkNodeRawMeshBackend {
185
191
  }),
186
192
  onPeerNotRequired: (nodeRoutingId, endpoint) => {
187
193
  for (const [intent, peer] of this.peerIntents) {
188
- if ((peer.nodeRoutingId === undefined
189
- || peer.nodeRoutingId === nodeRoutingId)
190
- && peer.endpoint === endpoint) {
194
+ if ((peer.nodeRoutingId === undefined || peer.nodeRoutingId === nodeRoutingId) &&
195
+ peer.endpoint === endpoint) {
191
196
  this.peerIntents.delete(intent);
192
197
  }
193
198
  }
194
199
  },
195
200
  onPeerDisconnected: (nodeRoutingId, endpoint) => {
196
201
  for (const [intentId, peer] of this.peerIntents) {
197
- if (peer.endpoint === endpoint
198
- && (peer.nodeRoutingId === undefined || peer.nodeRoutingId === nodeRoutingId)) {
202
+ if (peer.endpoint === endpoint &&
203
+ (peer.nodeRoutingId === undefined || peer.nodeRoutingId === nodeRoutingId)) {
199
204
  this.peerIntents.delete(intentId);
200
205
  }
201
206
  }
@@ -205,6 +210,9 @@ class ZLinkNodeRawMeshBackend {
205
210
  });
206
211
  runtime.start();
207
212
  this.stateful = new service_stateful_runtime_1.ServiceStatefulRuntime(runtime, descriptor.nodeRoutingId, descriptor.lifecycleGeneration);
213
+ if (this.dispatchErrors !== undefined) {
214
+ this.stateful.setDispatchErrorReporter(this.dispatchErrors, this.meshName);
215
+ }
208
216
  if (this.mailboxRecordDropped !== undefined) {
209
217
  this.stateful.setMailboxDropHandler(this.mailboxRecordDropped);
210
218
  }
@@ -278,23 +286,22 @@ class ZLinkNodeRawMeshBackend {
278
286
  }
279
287
  async connectPeer(options) {
280
288
  const runtime = this.requireRuntime();
281
- const nodeRoutingId = options.expectedRid === undefined
282
- ? undefined
283
- : String(options.expectedRid);
289
+ const nodeRoutingId = options.expectedRid === undefined ? undefined : String(options.expectedRid);
284
290
  if (nodeRoutingId === undefined) {
285
291
  runtime.connectPeerEndpoint(options.endpoint);
286
292
  }
287
293
  else {
288
- runtime.connectPeerByRoutingId(options.endpoint, nodeRoutingId, options.expectedSecurityIdentity
289
- ?? runtime.topology.localDescriptor().securityIdentity, options.expectedLifecycleGeneration);
294
+ runtime.connectPeerByRoutingId(options.endpoint, nodeRoutingId, options.expectedSecurityIdentity ?? runtime.topology.localDescriptor().securityIdentity, options.expectedLifecycleGeneration);
290
295
  }
291
296
  const intent = this.nextPeerIntent++;
292
297
  this.peerIntents.set(intent, {
293
298
  endpoint: options.endpoint,
294
- ...(nodeRoutingId === undefined ? {} : {
295
- nodeRoutingId,
296
- lifecycleGeneration: options.expectedLifecycleGeneration
297
- })
299
+ ...(nodeRoutingId === undefined
300
+ ? {}
301
+ : {
302
+ nodeRoutingId,
303
+ lifecycleGeneration: options.expectedLifecycleGeneration
304
+ })
298
305
  });
299
306
  if (nodeRoutingId !== undefined)
300
307
  await runtime.announcePeer(nodeRoutingId);
@@ -318,18 +325,16 @@ class ZLinkNodeRawMeshBackend {
318
325
  disconnectPeer(peerRid, lifecycleGeneration) {
319
326
  const nodeRoutingId = String(peerRid);
320
327
  const admitted = this.runtime?.topology.peer(nodeRoutingId);
321
- if (admitted !== undefined
322
- && admitted.descriptor.lifecycleGeneration !== lifecycleGeneration) {
328
+ if (admitted !== undefined && admitted.descriptor.lifecycleGeneration !== lifecycleGeneration) {
323
329
  return;
324
330
  }
325
331
  const admittedEndpoint = admitted?.descriptor.advertisedEndpoint;
326
- const found = [...this.peerIntents.entries()]
327
- .find(([, intent]) => (intent.nodeRoutingId === nodeRoutingId
328
- && (intent.lifecycleGeneration === undefined
329
- || intent.lifecycleGeneration === lifecycleGeneration))
330
- || (intent.nodeRoutingId === undefined
331
- && admittedEndpoint !== undefined
332
- && intent.endpoint === admittedEndpoint));
332
+ const found = [...this.peerIntents.entries()].find(([, intent]) => (intent.nodeRoutingId === nodeRoutingId &&
333
+ (intent.lifecycleGeneration === undefined ||
334
+ intent.lifecycleGeneration === lifecycleGeneration)) ||
335
+ (intent.nodeRoutingId === undefined &&
336
+ admittedEndpoint !== undefined &&
337
+ intent.endpoint === admittedEndpoint));
333
338
  if (found === undefined) {
334
339
  if (admitted !== undefined) {
335
340
  this.runtime?.disconnectPeer(admitted.descriptor.advertisedEndpoint, nodeRoutingId, lifecycleGeneration);
@@ -340,7 +345,7 @@ class ZLinkNodeRawMeshBackend {
340
345
  }
341
346
  replaceDiscoveredNotRequiredPeers(peers) {
342
347
  const local = this.requireRuntime().topology.localDescriptor();
343
- this.requireRuntime().replaceDiscoveredNotRequired(peers.map(peer => ({
348
+ this.requireRuntime().replaceDiscoveredNotRequired(peers.map((peer) => ({
344
349
  ...local,
345
350
  nodeRoutingId: peer.nodeRoutingId,
346
351
  lifecycleGeneration: peer.lifecycleGeneration,
@@ -357,29 +362,32 @@ class ZLinkNodeRawMeshBackend {
357
362
  return this.requireRuntime().isPeerRouteReady(String(targetRid), lifecycleGeneration);
358
363
  }
359
364
  async sendToNode(targetRid, parts) {
360
- return await this.requireRuntime().sendToNode(String(targetRid), encodeMultipartApplicationFrame(parts)) ? zlink_1.SubmitResult.Ok : zlink_1.SubmitResult.NotConnected;
365
+ return (await this.requireRuntime().sendToNode(String(targetRid), encodeMultipartApplicationFrame(parts)))
366
+ ? zlink_1.SubmitResult.Ok
367
+ : zlink_1.SubmitResult.NotConnected;
361
368
  }
362
369
  async sendInfrastructureControl(targetRid, record) {
363
- return await this.requireRuntime().sendService(String(targetRid), (Array.isArray(record) ? record : [record]).map(value => Buffer.from(value))) ? zlink_1.SubmitResult.Ok : zlink_1.SubmitResult.NotConnected;
370
+ return (await this.requireRuntime().sendService(String(targetRid), (Array.isArray(record) ? record : [record]).map((value) => Buffer.from(value))))
371
+ ? zlink_1.SubmitResult.Ok
372
+ : zlink_1.SubmitResult.NotConnected;
364
373
  }
365
374
  async sendInfrastructureControlFrames(targetRid, frames) {
366
- return await this.requireRuntime().sendService(String(targetRid), frames.map(frame => Buffer.from(frame))) ? zlink_1.SubmitResult.Ok : zlink_1.SubmitResult.NotConnected;
375
+ return (await this.requireRuntime().sendService(String(targetRid), frames.map((frame) => Buffer.from(frame))))
376
+ ? zlink_1.SubmitResult.Ok
377
+ : zlink_1.SubmitResult.NotConnected;
367
378
  }
368
379
  async requestInfrastructureControlFrames(targetRid, frames, options) {
369
- return await this.requireRuntime().requestService(String(targetRid), frames.map(frame => Buffer.from(frame)), options?.timeoutMs ?? 30_000);
380
+ return await this.requireRuntime().requestService(String(targetRid), frames.map((frame) => Buffer.from(frame)), options?.timeoutMs ?? 30_000);
370
381
  }
371
382
  requestToNode(targetRid, parts, options) {
372
383
  const pending = this.requireRuntime().requestToNode(String(targetRid), encodeMultipartApplicationFrame(parts), options?.timeoutMs ?? 30_000);
373
384
  return this.observeCompletion(pending.id, service_runtime_contracts_1.OperationKind.NodeRequest, pending.promise);
374
385
  }
375
386
  async sendToChannel(channelName, parts) {
376
- return await this.requireRuntime().sendToChannel(channelName, encodeMultipartApplicationFrame(parts)) ? zlink_1.SubmitResult.Ok : zlink_1.SubmitResult.NotConnected;
387
+ return this.requireRuntime().sendToChannel(channelName, encodeMultipartApplicationFrame(parts));
377
388
  }
378
389
  requestToChannel(channelName, parts, options) {
379
390
  const pending = this.requireRuntime().requestToChannel(channelName, encodeMultipartApplicationFrame(parts), options?.timeoutMs ?? 30_000);
380
- if (pending === undefined) {
381
- return this.enqueueImmediateFailure(service_runtime_contracts_1.OperationKind.ChannelRequest, zlink_1.RequestResult.NotFound);
382
- }
383
391
  return this.observeCompletion(pending.id, service_runtime_contracts_1.OperationKind.ChannelRequest, pending.promise);
384
392
  }
385
393
  status() {
@@ -395,11 +403,11 @@ class ZLinkNodeRawMeshBackend {
395
403
  channelCount: descriptor.channels.length,
396
404
  configuredPeerCount: this.peerIntents.size,
397
405
  admittedPeerCount: peers.length,
398
- drainingPeerCount: peers.filter(peer => peer.descriptor.state === 'draining').length,
406
+ drainingPeerCount: peers.filter((peer) => peer.descriptor.state === 'draining').length,
399
407
  pendingApplicationMessages: BigInt(this.runtime?.mailbox.pendingMessages('application') ?? 0),
400
408
  pendingInfrastructureMessages: BigInt((this.runtime?.mailbox.pendingMessages('infrastructure') ?? 0) + this.completionCount),
401
- pendingBytes: BigInt((this.runtime?.mailbox.pendingBytes('application') ?? 0)
402
- + (this.runtime?.mailbox.pendingBytes('infrastructure') ?? 0)),
409
+ pendingBytes: BigInt((this.runtime?.mailbox.pendingBytes('application') ?? 0) +
410
+ (this.runtime?.mailbox.pendingBytes('infrastructure') ?? 0)),
403
411
  lastError: 0,
404
412
  lastChangedMs: BigInt(Math.trunc(performance.now()))
405
413
  };
@@ -409,10 +417,9 @@ class ZLinkNodeRawMeshBackend {
409
417
  id,
410
418
  ...intent
411
419
  }));
412
- const findIntent = (nodeRoutingId, endpoint) => intents.find(intent => intent.nodeRoutingId === nodeRoutingId
413
- || (intent.nodeRoutingId === undefined
414
- && intent.endpoint === endpoint));
415
- const admitted = (this.runtime?.topology.peers() ?? []).map(peer => ({
420
+ const findIntent = (nodeRoutingId, endpoint) => intents.find((intent) => intent.nodeRoutingId === nodeRoutingId ||
421
+ (intent.nodeRoutingId === undefined && intent.endpoint === endpoint));
422
+ const admitted = (this.runtime?.topology.peers() ?? []).map((peer) => ({
416
423
  connectionIntentId: findIntent(peer.descriptor.nodeRoutingId, peer.descriptor.advertisedEndpoint)?.id ?? 0n,
417
424
  source: 1,
418
425
  state: this.runtime?.isPeerRouteReady(peer.descriptor.nodeRoutingId) === false
@@ -426,7 +433,7 @@ class ZLinkNodeRawMeshBackend {
426
433
  lastError: 0,
427
434
  lastChangedMs: BigInt(Math.trunc(performance.now()))
428
435
  }));
429
- const notRequired = (this.runtime?.topology.notRequiredPeers() ?? []).map(descriptor => ({
436
+ const notRequired = (this.runtime?.topology.notRequiredPeers() ?? []).map((descriptor) => ({
430
437
  connectionIntentId: findIntent(descriptor.nodeRoutingId, descriptor.advertisedEndpoint)?.id ?? 0n,
431
438
  source: 1,
432
439
  state: 6,
@@ -439,13 +446,12 @@ class ZLinkNodeRawMeshBackend {
439
446
  lastChangedMs: BigInt(Math.trunc(performance.now()))
440
447
  }));
441
448
  const projected = new Set([
442
- ...admitted.map(peer => peer.connectionIntentId),
443
- ...notRequired.map(peer => peer.connectionIntentId)
449
+ ...admitted.map((peer) => peer.connectionIntentId),
450
+ ...notRequired.map((peer) => peer.connectionIntentId)
444
451
  ]);
445
452
  const disconnected = intents
446
- .filter(intent => intent.nodeRoutingId !== undefined
447
- && !projected.has(intent.id))
448
- .map(intent => {
453
+ .filter((intent) => intent.nodeRoutingId !== undefined && !projected.has(intent.id))
454
+ .map((intent) => {
449
455
  const descriptor = this.runtime?.topology.knownDescriptor(intent.nodeRoutingId);
450
456
  return {
451
457
  connectionIntentId: intent.id,
@@ -462,8 +468,7 @@ class ZLinkNodeRawMeshBackend {
462
468
  lastChangedMs: BigInt(Math.trunc(performance.now()))
463
469
  };
464
470
  });
465
- return [...admitted, ...notRequired, ...disconnected]
466
- .sort((left, right) => String(left.routingId).localeCompare(String(right.routingId)));
471
+ return [...admitted, ...notRequired, ...disconnected].sort((left, right) => String(left.routingId).localeCompare(String(right.routingId)));
467
472
  }
468
473
  peerChannels(peerRid, lifecycleGeneration) {
469
474
  const descriptor = this.runtime?.topology.knownDescriptor(String(peerRid));
@@ -471,8 +476,8 @@ class ZLinkNodeRawMeshBackend {
471
476
  return { names: [], weights: [] };
472
477
  }
473
478
  return {
474
- names: descriptor.channels.map(channel => channel.name),
475
- weights: descriptor.channels.map(channel => channel.weight)
479
+ names: descriptor.channels.map((channel) => channel.name),
480
+ weights: descriptor.channels.map((channel) => channel.weight)
476
481
  };
477
482
  }
478
483
  createPublisher() {
@@ -513,11 +518,10 @@ class ZLinkNodeRawMeshBackend {
513
518
  this.drainMailbox('application', target);
514
519
  }
515
520
  const runtime = this.runtime;
516
- const infrastructureResidue = (domains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0
517
- && (this.completionCount > 0
518
- || (runtime?.mailbox.pendingMessages('infrastructure') ?? 0) > 0);
519
- const applicationResidue = (domains & service_runtime_contracts_1.ReadyDomain.Application) !== 0
520
- && (runtime?.mailbox.pendingMessages('application') ?? 0) > 0;
521
+ const infrastructureResidue = (domains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0 &&
522
+ (this.completionCount > 0 || (runtime?.mailbox.pendingMessages('infrastructure') ?? 0) > 0);
523
+ const applicationResidue = (domains & service_runtime_contracts_1.ReadyDomain.Application) !== 0 &&
524
+ (runtime?.mailbox.pendingMessages('application') ?? 0) > 0;
521
525
  return {
522
526
  ok: true,
523
527
  // Residue is scoped to the requested lane. The pump drains lanes in
@@ -676,13 +680,13 @@ class ZLinkNodeRawMeshBackend {
676
680
  return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorRequest, this.requireStateful().requestToActor(actor, this.peerGeneration(String(actor.nodeRid)), actor.generation, encodeMultipart(parts), options?.timeoutMs ?? 30_000));
677
681
  }
678
682
  async actorSendToActor(source, target, parts) {
679
- return await this.requireStateful().sendToActor(target, this.peerGeneration(String(target.nodeRid)), target.generation, encodeMultipart(parts), source);
683
+ return (await this.requireStateful().sendToActor(target, this.peerGeneration(String(target.nodeRid)), target.generation, encodeMultipart(parts), source));
680
684
  }
681
685
  actorRequestToActor(source, target, parts, options) {
682
686
  return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorRequest, this.requireStateful().requestToActor(target, this.peerGeneration(String(target.nodeRid)), target.generation, encodeMultipart(parts), options?.timeoutMs ?? 30_000, source));
683
687
  }
684
688
  async sendActorBoundSession(actor, expectedBindingGeneration, parts, _flags, actorFence) {
685
- return await this.requireStateful().sendBoundSession(actor, expectedBindingGeneration, encodeMultipart(parts), actorFence);
689
+ return (await this.requireStateful().sendBoundSession(actor, expectedBindingGeneration, encodeMultipart(parts), actorFence));
686
690
  }
687
691
  closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs = 30_000) {
688
692
  const binding = this.requireStateful().registry.binding(actor);
@@ -698,7 +702,7 @@ class ZLinkNodeRawMeshBackend {
698
702
  return new RawStreamSessionService(this.requireStateful(), stream, (kind, pending) => this.observeStateful(kind, pending));
699
703
  }
700
704
  async sendFromSpot(source, target, parts) {
701
- return await this.requireStateful().sendToSpot(source.ref.spotId, target, encodeMultipart(parts));
705
+ return (await this.requireStateful().sendToSpot(source.ref.spotId, target, encodeMultipart(parts)));
702
706
  }
703
707
  requestFromSpot(source, target, parts, timeoutMs) {
704
708
  return this.observeStateful(service_runtime_contracts_1.OperationKind.SpotRequest, this.requireStateful().requestToSpot(source.ref.spotId, target, encodeMultipart(parts), timeoutMs));
@@ -734,10 +738,7 @@ class ZLinkNodeRawMeshBackend {
734
738
  securityIdentity: 'default',
735
739
  applicationVersion: 0n,
736
740
  ...(this.maintenanceWave === undefined ? {} : { maintenanceWave: this.maintenanceWave }),
737
- protocolCapabilities: [
738
- service_wire_constants_generated_1.SERVICE_WIRE_REQUIRED_CAPABILITY,
739
- ...this.objectCapabilities
740
- ].sort(),
741
+ protocolCapabilities: [service_wire_constants_generated_1.SERVICE_WIRE_REQUIRED_CAPABILITY, ...this.objectCapabilities].sort(),
741
742
  objectRole: this.objectRole,
742
743
  placementWeight: this.placementWeight,
743
744
  activeCapacityLimit: this.activeCapacityLimit,
@@ -800,12 +801,12 @@ class ZLinkNodeRawMeshBackend {
800
801
  }
801
802
  observeCompletion(low, operationKind, promise) {
802
803
  const id = { high: 1n, low };
803
- void promise.then(result => this.enqueueCompletion(id, operationKind, result), error => this.enqueueCompletion(id, operationKind, genericOperationFailure(error)));
804
+ void promise.then((result) => this.enqueueCompletion(id, operationKind, result), (error) => this.enqueueCompletion(id, operationKind, genericOperationFailure(error)));
804
805
  return id;
805
806
  }
806
807
  observeStateful(operationKind, pending) {
807
808
  const id = { high: 2n, low: pending.id };
808
- void pending.promise.then(result => this.enqueueCompletion(id, operationKind, result), error => this.enqueueCompletion(id, operationKind, statefulOperationFailure(error)));
809
+ void pending.promise.then((result) => this.enqueueCompletion(id, operationKind, result), (error) => this.enqueueCompletion(id, operationKind, statefulOperationFailure(error)));
809
810
  return id;
810
811
  }
811
812
  enqueueImmediateFailure(operationKind, terminalResult) {
@@ -845,8 +846,7 @@ class ZLinkNodeRawMeshBackend {
845
846
  if (this.completionCount === 0) {
846
847
  this.clearCompletions();
847
848
  }
848
- else if (this.completionHead >= 1024
849
- && this.completionHead * 2 >= this.completions.length) {
849
+ else if (this.completionHead >= 1024 && this.completionHead * 2 >= this.completions.length) {
850
850
  this.completions.splice(0, this.completionHead);
851
851
  this.completionHead = 0;
852
852
  }
@@ -982,10 +982,10 @@ function requireDirectSpotRouteFence(route, targetNodeRid, targetSpotId, targetS
982
982
  if (route === undefined && entryRoute !== undefined) {
983
983
  return entryRoute;
984
984
  }
985
- if (route === undefined
986
- || route.targetNodeRid !== targetNodeRid
987
- || route.spot.spotId !== targetSpotId
988
- || route.spot.generation !== targetSpotGeneration) {
985
+ if (route === undefined ||
986
+ route.targetNodeRid !== targetNodeRid ||
987
+ route.spot.spotId !== targetSpotId ||
988
+ route.spot.generation !== targetSpotGeneration) {
989
989
  throw new TypeError('Direct Spot submission requires the exact resolved authority fence.');
990
990
  }
991
991
  return route;
@@ -1026,7 +1026,7 @@ class RawStreamSessionService {
1026
1026
  return {
1027
1027
  state: this.state,
1028
1028
  lifecycleGeneration: 1n,
1029
- sessionCount: BigInt(new Set(bindings.map(value => value.sessionRid)).size),
1029
+ sessionCount: BigInt(new Set(bindings.map((value) => value.sessionRid)).size),
1030
1030
  bindingCount: BigInt(bindings.length),
1031
1031
  pendingMessageCount: 0n,
1032
1032
  pendingByteCount: 0n,
@@ -1041,7 +1041,7 @@ class RawStreamSessionService {
1041
1041
  this.requireStarted();
1042
1042
  const sessionKey = String(sessionRid);
1043
1043
  this.sessionTargets.set(sessionKey, sessionRid);
1044
- return this.observe(service_runtime_contracts_1.OperationKind.StreamBind, this.stateful.bindSession(sessionKey, actor, timeoutMs, (targetSessionRid, payloadFrame) => this.deliver(targetSessionRid, payloadFrame), onBindingReplaced, (0, service_session_binding_ingress_port_1.serviceSessionBindingIngressPortIfRegistered)(this), actorAuthority));
1044
+ return this.observe(service_runtime_contracts_1.OperationKind.StreamBind, this.stateful.bindSession(sessionKey, actor, timeoutMs, (targetSessionRid, payloadFrame) => this.deliver(targetSessionRid, actor.actorId, payloadFrame), onBindingReplaced, (0, service_session_binding_ingress_port_1.serviceSessionBindingIngressPortIfRegistered)(this), actorAuthority));
1045
1045
  }
1046
1046
  unbindActor(sessionRid, actor, expectedBindingGeneration, timeoutMs = 30_000) {
1047
1047
  this.requireStarted();
@@ -1052,9 +1052,9 @@ class RawStreamSessionService {
1052
1052
  }
1053
1053
  async sendToActor(sessionRid, actor, parts) {
1054
1054
  this.requireStarted();
1055
- return await this.stateful.sendSessionToActor(String(sessionRid), actor, encodeMultipart(parts));
1055
+ return (await this.stateful.sendSessionToActor(String(sessionRid), actor, encodeMultipart(parts)));
1056
1056
  }
1057
- async deliver(sessionRid, payload) {
1057
+ async deliver(sessionRid, actorId, payload) {
1058
1058
  const target = this.sessionTargets.get(sessionRid);
1059
1059
  if (target === undefined)
1060
1060
  return false;
@@ -1062,6 +1062,10 @@ class RawStreamSessionService {
1062
1062
  const parts = decodeMultipartBuffers((0, service_wire_m6a_codec_1.decodeApplicationPayloadView)(payload).payload);
1063
1063
  if (parts.length === 0)
1064
1064
  return false;
1065
+ const actorSlot = await (0, service_session_binding_ingress_port_1.serviceSessionBindingIngressPortIfRegistered)(this)?.actorSlot(actorId, sessionRid);
1066
+ if (actorSlot === undefined)
1067
+ return false;
1068
+ parts[0] = Buffer.from(streamFrameWithActorSlot(parts[0], actorSlot));
1065
1069
  let submit = operation.message(parts[0]);
1066
1070
  for (let index = 1; index < parts.length; index++) {
1067
1071
  submit = submit.message(parts[index]);
@@ -1080,10 +1084,14 @@ class RawStreamSessionService {
1080
1084
  // Let the socket monitor drive the existing STREAM close/unbind
1081
1085
  // lifecycle instead of maintaining a second session-close state.
1082
1086
  (0, node_socket_backend_adapter_1.disconnectStreamPeer)(this.stream, target);
1083
- throw new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, { cause: error });
1087
+ throw new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, {
1088
+ cause: error
1089
+ });
1084
1090
  case zlink_1.SubmitResult.Backpressured:
1085
1091
  case zlink_1.SubmitResult.NotAdmitted:
1086
- throw new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, { cause: error });
1092
+ throw new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, {
1093
+ cause: error
1094
+ });
1087
1095
  default:
1088
1096
  throw error;
1089
1097
  }
@@ -1095,6 +1103,11 @@ class RawStreamSessionService {
1095
1103
  }
1096
1104
  }
1097
1105
  }
1106
+ function streamFrameWithActorSlot(frame, actorSlot) {
1107
+ const decodedFrame = (0, stream_wire_1.decodeStreamWireFrame)(frame);
1108
+ const decodedHeader = (0, stream_wire_1.decodeStreamWireHeader)(decodedFrame.header);
1109
+ return (0, stream_wire_1.encodeStreamWireFrame)((0, stream_wire_1.encodeStreamWireHeader)({ ...decodedHeader, actorSlot }), decodedFrame.payload);
1110
+ }
1098
1111
  class RawReadyBatch {
1099
1112
  capacity;
1100
1113
  records = [];
@@ -1134,7 +1147,7 @@ class RawReceiveBatch {
1134
1147
  constructor(capacity, partCapacity) {
1135
1148
  this.capacity = capacity;
1136
1149
  this.partCapacity = partCapacity;
1137
- if ([capacity, partCapacity].some(value => !Number.isInteger(value) || value < 1)) {
1150
+ if ([capacity, partCapacity].some((value) => !Number.isInteger(value) || value < 1)) {
1138
1151
  throw new RangeError('Receive batch capacities must be positive.');
1139
1152
  }
1140
1153
  this.receiveCapacity = capacity;
@@ -1143,7 +1156,9 @@ class RawReceiveBatch {
1143
1156
  return this.receiveCapacity;
1144
1157
  }
1145
1158
  reset(messageCapacity = this.capacity) {
1146
- if (!Number.isInteger(messageCapacity) || messageCapacity < 1 || messageCapacity > this.capacity) {
1159
+ if (!Number.isInteger(messageCapacity) ||
1160
+ messageCapacity < 1 ||
1161
+ messageCapacity > this.capacity) {
1147
1162
  throw new RangeError('Receive limit must be within the batch capacity.');
1148
1163
  }
1149
1164
  this.receiveCapacity = messageCapacity;
@@ -1191,8 +1206,7 @@ class MailboxClaim {
1191
1206
  throw error;
1192
1207
  }
1193
1208
  const nextParts = decoded.parts.length;
1194
- if (records.length >= capacity.messageCapacity
1195
- || parts + nextParts > capacity.partCapacity) {
1209
+ if (records.length >= capacity.messageCapacity || parts + nextParts > capacity.partCapacity) {
1196
1210
  for (const part of decoded.parts)
1197
1211
  part.close();
1198
1212
  this.remaining = this.claim.records.slice(index);
@@ -1224,7 +1238,8 @@ class CompletionClaim {
1224
1238
  const payload = this.completion.result.payload;
1225
1239
  return {
1226
1240
  ok: true,
1227
- records: [{
1241
+ records: [
1242
+ {
1228
1243
  kind: service_runtime_contracts_1.ReceiveKind.Completion,
1229
1244
  domain: service_runtime_contracts_1.ReadyDomain.Infrastructure,
1230
1245
  sourceNodeRid: null,
@@ -1236,9 +1251,7 @@ class CompletionClaim {
1236
1251
  channelName: null,
1237
1252
  topic: null,
1238
1253
  applicationMetadata: null,
1239
- kindData: 'kindData' in this.completion.result
1240
- ? this.completion.result.kindData ?? null
1241
- : null,
1254
+ kindData: 'kindData' in this.completion.result ? (this.completion.result.kindData ?? null) : null,
1242
1255
  terminalResult: this.completion.result.terminalResult,
1243
1256
  failureErrno: this.completion.result.failureCode,
1244
1257
  parts: payload === undefined
@@ -1248,7 +1261,8 @@ class CompletionClaim {
1248
1261
  : [zlink_1.Message.from(payload.payload)],
1249
1262
  reply: () => zlink_1.SubmitResult.InvalidState,
1250
1263
  replyActorJoin: () => zlink_1.SubmitResult.NotSupported
1251
- }]
1264
+ }
1265
+ ]
1252
1266
  };
1253
1267
  }
1254
1268
  release() { }
@@ -1271,8 +1285,7 @@ function decodeMultipartRecord(runtime, record) {
1271
1285
  // multi-frame infrastructure control (Prepare + sideband) from being
1272
1286
  // misread as a 2-frame application envelope and dropped as invalid_frame.
1273
1287
  if (record.parts.length === 1 || record.domain === 'infrastructure') {
1274
- const request = record.requestSequence !== undefined
1275
- && record.sourceRoutingId !== undefined;
1288
+ const request = record.requestSequence !== undefined && record.sourceRoutingId !== undefined;
1276
1289
  return {
1277
1290
  kind: request ? service_runtime_contracts_1.ReceiveKind.NodeRequest : service_runtime_contracts_1.ReceiveKind.NodeSend,
1278
1291
  domain: readyDomain(record.domain),
@@ -1291,7 +1304,7 @@ function decodeMultipartRecord(runtime, record) {
1291
1304
  terminalResult: 0,
1292
1305
  failureErrno: 0,
1293
1306
  ...receiveIngressLifecycle(record),
1294
- parts: record.parts.map(part => zlink_1.Message.from(part)),
1307
+ parts: record.parts.map((part) => zlink_1.Message.from(part)),
1295
1308
  reply(parts) {
1296
1309
  if (!request)
1297
1310
  return zlink_1.SubmitResult.InvalidState;
@@ -1303,7 +1316,7 @@ function decodeMultipartRecord(runtime, record) {
1303
1316
  ...(record.sourceRoute === undefined ? {} : { sourceRoute: record.sourceRoute }),
1304
1317
  requestSequence: record.requestSequence,
1305
1318
  ...(record.reply === undefined ? {} : { reply: record.reply })
1306
- }, values.map(value => Buffer.from(messageBytesView(value))));
1319
+ }, values.map((value) => Buffer.from(messageBytesView(value))));
1307
1320
  return zlink_1.SubmitResult.Ok;
1308
1321
  },
1309
1322
  replyActorJoin: () => zlink_1.SubmitResult.NotSupported
@@ -1313,7 +1326,9 @@ function decodeMultipartRecord(runtime, record) {
1313
1326
  const command = header[3];
1314
1327
  const payloadFrame = record.parts[1];
1315
1328
  const application = decodeApplicationEnvelope(payloadFrame);
1316
- const channelName = record.owner.startsWith('channel:') ? record.owner.slice('channel:'.length) : null;
1329
+ const channelName = record.owner.startsWith('channel:')
1330
+ ? record.owner.slice('channel:'.length)
1331
+ : null;
1317
1332
  const operationId = record.correlation === undefined
1318
1333
  ? { high: 0n, low: 0n }
1319
1334
  : { high: 1n, low: record.correlation };
@@ -1360,13 +1375,15 @@ function decodeMultipartRecord(runtime, record) {
1360
1375
  }
1361
1376
  function decodeStatefulRecord(record, stateful) {
1362
1377
  const payloadFrame = record.parts.length < 2 ? undefined : record.parts[1];
1363
- const canonicalActorJoin = stateful.kindData?.kind === 'actorControl'
1364
- && stateful.kindData.canonicalActorJoin !== undefined;
1365
- const canonicalActorJoinPayload = stateful.operationKind === service_runtime_contracts_1.OperationKind.ActorJoin
1366
- && stateful.canonicalApplicationPayload !== undefined;
1378
+ const canonicalActorJoin = stateful.kindData?.kind === 'actorControl' &&
1379
+ stateful.kindData.canonicalActorJoin !== undefined;
1380
+ const canonicalActorJoinPayload = stateful.operationKind === service_runtime_contracts_1.OperationKind.ActorJoin &&
1381
+ stateful.canonicalApplicationPayload !== undefined;
1367
1382
  const application = canonicalActorJoinPayload
1368
1383
  ? stateful.canonicalApplicationPayload
1369
- : (payloadFrame === undefined ? undefined : decodeApplicationEnvelope(payloadFrame));
1384
+ : payloadFrame === undefined
1385
+ ? undefined
1386
+ : decodeApplicationEnvelope(payloadFrame);
1370
1387
  const operationId = record.correlation === undefined
1371
1388
  ? { high: 0n, low: 0n }
1372
1389
  : { high: 2n, low: record.correlation };
@@ -1409,7 +1426,9 @@ function decodeStatefulRecord(record, stateful) {
1409
1426
  reply(parts) {
1410
1427
  if (stateful.reply === undefined)
1411
1428
  return zlink_1.SubmitResult.InvalidState;
1412
- return stateful.reply(zlink_1.RequestResult.Ok, 0, encodeMultipart(parts)) ? zlink_1.SubmitResult.Ok : zlink_1.SubmitResult.InvalidState;
1429
+ return stateful.reply(zlink_1.RequestResult.Ok, 0, encodeMultipart(parts))
1430
+ ? zlink_1.SubmitResult.Ok
1431
+ : zlink_1.SubmitResult.InvalidState;
1413
1432
  },
1414
1433
  replyActorJoin(joinResult, parts, _flags, _replyContentType) {
1415
1434
  if (stateful.reply === undefined || stateful.targetSpot === undefined) {
@@ -1425,9 +1444,7 @@ function decodeStatefulRecord(record, stateful) {
1425
1444
  if (canonicalActorJoin && replyParts.length > 1) {
1426
1445
  return zlink_1.SubmitResult.InvalidState;
1427
1446
  }
1428
- const replyPayload = replyParts.length === 0
1429
- ? undefined
1430
- : encodeMultipart(replyParts);
1447
+ const replyPayload = replyParts.length === 0 ? undefined : encodeMultipart(replyParts);
1431
1448
  const accepted = stateful.reply(zlink_1.RequestResult.Ok, 0, replyPayload, {
1432
1449
  kind: 'actorJoin',
1433
1450
  joinResult: joinResult === 0 ? 0 : 1,
@@ -1472,9 +1489,7 @@ function readyOwner(owner, nodeRid, stateful, domain) {
1472
1489
  }
1473
1490
  if (owner.startsWith('actor:')) {
1474
1491
  const separator = owner.indexOf('\0', 'actor:'.length);
1475
- const actorId = separator < 0
1476
- ? owner.slice('actor:'.length)
1477
- : owner.slice('actor:'.length, separator);
1492
+ const actorId = separator < 0 ? owner.slice('actor:'.length) : owner.slice('actor:'.length, separator);
1478
1493
  const generation = separator < 0 ? 0n : BigInt(owner.slice(separator + 1));
1479
1494
  const current = stateful?.actor(actorId);
1480
1495
  return {
@@ -1498,9 +1513,7 @@ function readyOwner(owner, nodeRid, stateful, domain) {
1498
1513
  };
1499
1514
  }
1500
1515
  function readyDomain(domain) {
1501
- return domain === 'infrastructure'
1502
- ? service_runtime_contracts_1.ReadyDomain.Infrastructure
1503
- : service_runtime_contracts_1.ReadyDomain.Application;
1516
+ return domain === 'infrastructure' ? service_runtime_contracts_1.ReadyDomain.Infrastructure : service_runtime_contracts_1.ReadyDomain.Application;
1504
1517
  }
1505
1518
  /**
1506
1519
  * Classifies a generic node/channel request rejection into a completion
@@ -1602,9 +1615,9 @@ function decodeApplicationEnvelope(frame) {
1602
1615
  offset += contentLength;
1603
1616
  const payloadLength = bytes.readUInt32BE(offset);
1604
1617
  offset += 4;
1605
- if (packetName !== MULTIPART_PACKET_NAME
1606
- || contentType !== MULTIPART_CONTENT_TYPE
1607
- || payloadLength !== bytes.length - offset) {
1618
+ if (packetName !== MULTIPART_PACKET_NAME ||
1619
+ contentType !== MULTIPART_CONTENT_TYPE ||
1620
+ payloadLength !== bytes.length - offset) {
1608
1621
  throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Unexpected M6A application payload.');
1609
1622
  }
1610
1623
  return { packetName, contentType, payload: bytes.subarray(offset) };
@@ -1670,20 +1683,23 @@ function stateCode(state) {
1670
1683
  }
1671
1684
  function peerStateCode(state) {
1672
1685
  switch (state) {
1673
- case 'preparing': return 2;
1686
+ case 'preparing':
1687
+ return 2;
1674
1688
  case 'serving':
1675
- case 'retiring': return 3;
1676
- case 'draining': return 4;
1689
+ case 'retiring':
1690
+ return 3;
1691
+ case 'draining':
1692
+ return 4;
1677
1693
  case 'stopped':
1678
- case 'error': return 5;
1694
+ case 'error':
1695
+ return 5;
1679
1696
  }
1680
1697
  }
1681
1698
  function createLifecycleGeneration() {
1682
1699
  // Node's public Spot context exposes this lifecycle token as a number. Keep
1683
1700
  // the opaque equality token within the exact range that surface can carry;
1684
1701
  // lifecycle ordering is never inferred from its numeric value.
1685
- const generation = (0, node_crypto_1.randomBytes)(8).readBigUInt64BE()
1686
- & BigInt(Number.MAX_SAFE_INTEGER);
1702
+ const generation = (0, node_crypto_1.randomBytes)(8).readBigUInt64BE() & BigInt(Number.MAX_SAFE_INTEGER);
1687
1703
  return generation === 0n ? 1n : generation;
1688
1704
  }
1689
1705
  function requirePositivePlacementValue(value, name) {