@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
@@ -1,8 +1,4 @@
1
- import type {
2
- Context,
3
- CoreHwmBudgetSnapshot,
4
- TopicMessage
5
- } from '@zlink-systems/zlink';
1
+ import type { Context, CoreHwmBudgetSnapshot, TopicMessage } from '@zlink-systems/zlink';
6
2
  import type { ZLinkCoreHwmOptions } from '../../../contracts/Configuration';
7
3
  import type {
8
4
  ZLinkBackendAdapterFactory,
@@ -81,7 +77,9 @@ class ZLinkNodeChannelBackendAdapter implements ZLinkChannelBackendAdapter {
81
77
  }
82
78
 
83
79
  createPublisherSocket(context: ZLinkBackendContext): ZLinkBackendPublisherSocket {
84
- return wrapSocket(zlink.createPubSocket(asNodeContext(context))) as unknown as ZLinkBackendPublisherSocket;
80
+ return wrapSocket(
81
+ zlink.createPubSocket(asNodeContext(context))
82
+ ) as unknown as ZLinkBackendPublisherSocket;
85
83
  }
86
84
 
87
85
  createSubscriberSocket(context: ZLinkBackendContext): ZLinkBackendSubscriberSocket {
@@ -115,7 +113,9 @@ class ZLinkNodeStreamBackendAdapter implements ZLinkStreamBackendAdapter {
115
113
  class ZLinkNodeMonitoringBackendAdapter implements ZLinkMonitoringBackendAdapter {
116
114
  openSocketMonitor(socket: ZLinkBackendSocket): ZLinkBackendSocketMonitor {
117
115
  const nativeSocket = socket.nativeInstance as {
118
- monitorOpen(): ReturnType<ZLinkBindingModule['createDealerSocket']>['monitorOpen'] extends (...args: never[]) => infer T
116
+ monitorOpen(): ReturnType<ZLinkBindingModule['createDealerSocket']>['monitorOpen'] extends (
117
+ ...args: never[]
118
+ ) => infer T
119
119
  ? T
120
120
  : never;
121
121
  };
@@ -133,8 +133,10 @@ class ZLinkNodeBackendContext implements ZLinkBackendContext {
133
133
  configureCoreHwm(options: ZLinkCoreHwmOptions | undefined): void {
134
134
  if (options === undefined) return;
135
135
  if (options.profile !== undefined) this.nativeInstance.options.coreHwmProfile = options.profile;
136
- if (options.memoryLimitBytes !== undefined) this.nativeInstance.options.coreHwmMemoryLimitBytes = options.memoryLimitBytes;
137
- if (options.budgetBytes !== undefined) this.nativeInstance.options.coreHwmBudgetBytes = options.budgetBytes;
136
+ if (options.memoryLimitBytes !== undefined)
137
+ this.nativeInstance.options.coreHwmMemoryLimitBytes = options.memoryLimitBytes;
138
+ if (options.budgetBytes !== undefined)
139
+ this.nativeInstance.options.coreHwmBudgetBytes = options.budgetBytes;
138
140
  }
139
141
 
140
142
  getCoreHwmBudgetSnapshot(): CoreHwmBudgetSnapshot {
@@ -170,18 +172,20 @@ function asNodeContext(context: ZLinkBackendContext): Context {
170
172
  return context.nativeInstance as Context;
171
173
  }
172
174
 
173
- function createNodeReadablePoller(
174
- socket: { readonly nativeInstance: unknown }
175
- ): ZLinkBackendReadablePoller {
175
+ function createNodeReadablePoller(socket: {
176
+ readonly nativeInstance: unknown;
177
+ }): ZLinkBackendReadablePoller {
176
178
  const eventLoopPoller = nodeEventLoopPollerOf(socket);
177
179
  let disposed = false;
178
180
  let readable = false;
179
- let pending: {
180
- readonly promise: Promise<boolean>;
181
- readonly resolve: (readable: boolean) => void;
182
- readonly signal?: AbortSignal;
183
- readonly onAbort?: () => void;
184
- } | undefined;
181
+ let pending:
182
+ | {
183
+ readonly promise: Promise<boolean>;
184
+ readonly resolve: (readable: boolean) => void;
185
+ readonly signal?: AbortSignal;
186
+ readonly onAbort?: () => void;
187
+ }
188
+ | undefined;
185
189
 
186
190
  const settlePending = (value: boolean): void => {
187
191
  const current = pending;
@@ -212,9 +216,7 @@ function createNodeReadablePoller(
212
216
  const promise = new Promise<boolean>((resolve) => {
213
217
  resolvePending = resolve;
214
218
  });
215
- const onAbort = signal === undefined
216
- ? undefined
217
- : (): void => settlePending(false);
219
+ const onAbort = signal === undefined ? undefined : (): void => settlePending(false);
218
220
  pending = { promise, resolve: resolvePending, signal, onAbort };
219
221
  if (signal !== undefined && onAbort !== undefined) {
220
222
  signal.addEventListener('abort', onAbort, { once: true });
@@ -54,10 +54,13 @@ function isNonBlockingRecvEmpty(error: unknown): boolean {
54
54
  }
55
55
 
56
56
  export function isRouteRecvRetryable(error: unknown): boolean {
57
- return isNonBlockingRecvEmpty(error) ||
57
+ return (
58
+ isNonBlockingRecvEmpty(error) ||
58
59
  (error instanceof zlink.RecvError &&
59
- (error.result === zlink.RecvResult.InternalError || error.result === zlink.RecvResult.InvalidHandle) &&
60
- isNativeBadAddress(error));
60
+ (error.result === zlink.RecvResult.InternalError ||
61
+ error.result === zlink.RecvResult.InvalidHandle) &&
62
+ isNativeBadAddress(error))
63
+ );
61
64
  }
62
65
 
63
66
  export function isPollerInterruptedError(error: unknown): boolean {
@@ -82,10 +85,12 @@ export function submitBindingPublish(
82
85
  current!.submit();
83
86
  } catch (error) {
84
87
  const translated = translateBindingResultError(error);
85
- if (translated instanceof ZLinkBackendResultError
86
- && translated.operation === 'submit'
87
- && (translated.result === SubmitResult.Backpressured
88
- || translated.result === SubmitResult.NotAdmitted)) {
88
+ if (
89
+ translated instanceof ZLinkBackendResultError &&
90
+ translated.operation === 'submit' &&
91
+ (translated.result === SubmitResult.Backpressured ||
92
+ translated.result === SubmitResult.NotAdmitted)
93
+ ) {
89
94
  requireOneWayCompletion(
90
95
  { status: ZLinkSubmitStatus.Backpressured },
91
96
  'Classic fanout publish'
@@ -95,10 +100,7 @@ export function submitBindingPublish(
95
100
  }
96
101
  }
97
102
 
98
- export function submitBindingReply(
99
- operation: ZLinkBindingReplyOperation,
100
- payload: unknown
101
- ): void {
103
+ export function submitBindingReply(operation: ZLinkBindingReplyOperation, payload: unknown): void {
102
104
  try {
103
105
  let current: ZLinkBindingReplySubmitOperation | undefined;
104
106
  const parts = Array.isArray(payload) ? payload : [payload];
@@ -158,7 +160,8 @@ export async function submitBindingRequest(
158
160
  if (Array.isArray(payload)) {
159
161
  for (const part of payload) {
160
162
  const nativePart = toNativeMessageLike(part);
161
- current = current === undefined ? operation.message(nativePart) : current.message(nativePart);
163
+ current =
164
+ current === undefined ? operation.message(nativePart) : current.message(nativePart);
162
165
  }
163
166
  } else {
164
167
  current = operation.message(toNativeMessageLike(payload));
@@ -187,19 +190,26 @@ export async function closeWithBusyRetry(target: { close(): void }): Promise<voi
187
190
  throw error;
188
191
  }
189
192
  lastError = error;
190
- await new Promise<void>(resolve => setImmediate(resolve));
193
+ await new Promise<void>((resolve) => setImmediate(resolve));
191
194
  }
192
195
  }
193
196
  throw lastError;
194
197
  }
195
198
 
196
199
  function isBusyCloseError(error: unknown): boolean {
197
- return error instanceof Error && 'code' in error && [401, 404].includes((error as { code: number }).code);
200
+ return (
201
+ error instanceof Error &&
202
+ 'code' in error &&
203
+ [401, 404].includes((error as { code: number }).code)
204
+ );
198
205
  }
199
206
 
200
207
  function isSuccessfulOrAlreadyShutdownCloseError(error: unknown): boolean {
201
- return isContextTerminatedError(error) || (
202
- error instanceof Error && 'code' in error && [0, 402, 403].includes((error as { code: number }).code)
208
+ return (
209
+ isContextTerminatedError(error) ||
210
+ (error instanceof Error &&
211
+ 'code' in error &&
212
+ [0, 402, 403].includes((error as { code: number }).code))
203
213
  );
204
214
  }
205
215
 
@@ -229,14 +239,16 @@ export function disableSocketLinger(target: unknown): void {
229
239
  export function toNativeRoutingId(routingId: unknown): unknown {
230
240
  if (typeof routingId === 'string') return zlink.RoutingId.from(routingId);
231
241
  const toHex = (routingId as { readonly toHex?: unknown } | null)?.toHex;
232
- return typeof toHex === 'function'
233
- ? zlink.RoutingId.fromHex(toHex.call(routingId))
234
- : routingId;
242
+ return typeof toHex === 'function' ? zlink.RoutingId.fromHex(toHex.call(routingId)) : routingId;
235
243
  }
236
244
 
237
245
  function toNativeMessageLike(message: unknown): unknown {
238
- if (message instanceof zlink.Message || Buffer.isBuffer(message)
239
- || message instanceof Uint8Array || typeof message === 'string') {
246
+ if (
247
+ message instanceof zlink.Message ||
248
+ Buffer.isBuffer(message) ||
249
+ message instanceof Uint8Array ||
250
+ typeof message === 'string'
251
+ ) {
240
252
  return message;
241
253
  }
242
254
  const data = (message as { readonly data?: unknown } | null)?.data;
@@ -252,7 +264,9 @@ export function translateBindingResultError(error: unknown): unknown {
252
264
  return new ZLinkBackendResultError('submit', error.result, error.nativeErrno, { cause: error });
253
265
  }
254
266
  if (error instanceof zlink.RequestError) {
255
- return new ZLinkBackendResultError('request', error.result, error.nativeErrno, { cause: error });
267
+ return new ZLinkBackendResultError('request', error.result, error.nativeErrno, {
268
+ cause: error
269
+ });
256
270
  }
257
271
  return error;
258
272
  }
@@ -1,23 +1,13 @@
1
- import type {
2
- DealerSocket,
3
- Message,
4
- PubSocket
5
- } from '@zlink-systems/zlink';
1
+ import type { DealerSocket, Message, PubSocket } from '@zlink-systems/zlink';
6
2
  import { ZLinkConfigurationException } from '../../configuration';
7
- import {
8
- ZLinkSubmitStatus,
9
- type ZLinkSubmitResult
10
- } from '../../messaging/submission-result';
3
+ import { ZLinkSubmitStatus, type ZLinkSubmitResult } from '../../messaging/submission-result';
11
4
  import {
12
5
  decodeChannelReply,
13
6
  encodeChannelEnvelopeParts,
14
7
  ZLinkChannelMessageKind
15
8
  } from '../../channels/channel-envelope';
16
9
  import { throwIfAborted } from '../../abort';
17
- import {
18
- appendParts,
19
- submitRequestOperation
20
- } from '../../channels/channel-multipart';
10
+ import { appendParts, submitRequestOperation } from '../../channels/channel-multipart';
21
11
  import type { ZLinkChannelClientTransport } from '../../channels/channel-transports';
22
12
  import { runWithOutboundFlow } from '../../diagnostics/flow-context';
23
13
 
@@ -40,21 +30,25 @@ export class ZLinkDealerChannelClientTransport implements ZLinkChannelClientTran
40
30
  throwIfAborted(signal);
41
31
  // Call-scoped flow (spec 27 §4): the envelope flow pair does not outlive
42
32
  // this outbound call.
43
- await runWithOutboundFlow(true, () => appendParts(
44
- this.dealer.send(),
45
- encodeChannelEnvelopeParts(
46
- ZLinkChannelMessageKind.Command,
47
- channelName,
48
- packetName,
49
- message,
50
- undefined,
51
- undefined,
52
- undefined,
53
- undefined,
54
- true,
55
- metadata
56
- )
57
- ).submit().admitted);
33
+ await runWithOutboundFlow(
34
+ true,
35
+ () =>
36
+ appendParts(
37
+ this.dealer.send(),
38
+ encodeChannelEnvelopeParts(
39
+ ZLinkChannelMessageKind.Command,
40
+ channelName,
41
+ packetName,
42
+ message,
43
+ undefined,
44
+ undefined,
45
+ undefined,
46
+ undefined,
47
+ true,
48
+ metadata
49
+ )
50
+ ).submit().admitted
51
+ );
58
52
  return { status: ZLinkSubmitStatus.Submitted };
59
53
  }
60
54
 
@@ -67,23 +61,28 @@ export class ZLinkDealerChannelClientTransport implements ZLinkChannelClientTran
67
61
  metadata: ReadonlyMap<string, string> = EMPTY_METADATA
68
62
  ): Promise<TReply> {
69
63
  throwIfAborted(signal);
70
- const operation = runWithOutboundFlow(true, () => appendParts(
71
- this.dealer.request(),
72
- encodeChannelEnvelopeParts(
73
- ZLinkChannelMessageKind.Request,
74
- channelName,
75
- packetName,
76
- request,
77
- timeoutMs,
78
- undefined,
79
- undefined,
80
- undefined,
81
- true,
82
- metadata
64
+ const operation = runWithOutboundFlow(true, () =>
65
+ appendParts(
66
+ this.dealer.request(),
67
+ encodeChannelEnvelopeParts(
68
+ ZLinkChannelMessageKind.Request,
69
+ channelName,
70
+ packetName,
71
+ request,
72
+ timeoutMs,
73
+ undefined,
74
+ undefined,
75
+ undefined,
76
+ true,
77
+ metadata
78
+ )
83
79
  )
84
- ));
80
+ );
85
81
  if (timeoutMs !== undefined) operation.timeout(timeoutMs);
86
- const reply = await submitRequestOperation({ submit: () => operation.submit().reply }, 'channel request');
82
+ const reply = await submitRequestOperation(
83
+ { submit: () => operation.submit().reply },
84
+ 'channel request'
85
+ );
87
86
  try {
88
87
  return decodeChannelReply<TReply>(reply);
89
88
  } finally {
@@ -101,21 +100,23 @@ export class ZLinkDealerChannelClientTransport implements ZLinkChannelClientTran
101
100
  if (this.publisher === undefined) {
102
101
  throw new ZLinkConfigurationException('Channel publisher runtime is not started.');
103
102
  }
104
- runWithOutboundFlow(true, () => appendParts(
105
- this.publisher!.publish(topic),
106
- encodeChannelEnvelopeParts(
107
- ZLinkChannelMessageKind.Publish,
108
- channelName,
109
- packetName,
110
- event,
111
- undefined,
112
- topic,
113
- undefined,
114
- undefined,
115
- true,
116
- metadata
117
- )
118
- ).submit());
103
+ runWithOutboundFlow(true, () =>
104
+ appendParts(
105
+ this.publisher!.publish(topic),
106
+ encodeChannelEnvelopeParts(
107
+ ZLinkChannelMessageKind.Publish,
108
+ channelName,
109
+ packetName,
110
+ event,
111
+ undefined,
112
+ topic,
113
+ undefined,
114
+ undefined,
115
+ true,
116
+ metadata
117
+ )
118
+ ).submit()
119
+ );
119
120
  return { status: ZLinkSubmitStatus.Submitted };
120
121
  }
121
122
 
@@ -1,8 +1,4 @@
1
- import type {
2
- BaseSocket,
3
- PollEventFlagValue,
4
- Socket
5
- } from '@zlink-systems/zlink';
1
+ import type { BaseSocket, PollEventFlagValue, Socket } from '@zlink-systems/zlink';
6
2
  import { zlink } from './node-backend-adapter-support';
7
3
 
8
4
  /**
@@ -16,11 +12,7 @@ export class ZLinkNodeEventLoopPoller {
16
12
  private readableHandler: () => void;
17
13
  private disposed = false;
18
14
 
19
- constructor(
20
- socket: Socket,
21
- pollCompletion: boolean,
22
- readableHandler: () => void
23
- ) {
15
+ constructor(socket: Socket, pollCompletion: boolean, readableHandler: () => void) {
24
16
  this.readableHandler = readableHandler;
25
17
  try {
26
18
  const pollEvents: PollEventFlagValue[] = [zlink.PollEventFlag.PollIn];
@@ -21,11 +21,15 @@ export class ZLinkNodeMeshBackendAdapter implements ZLinkMeshBackendAdapter {
21
21
  }
22
22
  ): ZLinkBackendMeshNode {
23
23
  if (options.trustProfile !== undefined) {
24
- throw new Error('M6A raw MeshNode trust profiles require the service admission security runtime.');
24
+ throw new Error(
25
+ 'M6A raw MeshNode trust profiles require the service admission security runtime.'
26
+ );
25
27
  }
26
28
  const bindingContext = context.nativeInstance;
27
29
  if (!isBindingContext(bindingContext)) {
28
- throw new TypeError('Node MeshNode creation requires the Node binding Context owned by the host.');
30
+ throw new TypeError(
31
+ 'Node MeshNode creation requires the Node binding Context owned by the host.'
32
+ );
29
33
  }
30
34
  return new ZLinkNodeRawMeshBackend(
31
35
  options.meshName,
@@ -39,7 +43,10 @@ export class ZLinkNodeMeshBackendAdapter implements ZLinkMeshBackendAdapter {
39
43
  }
40
44
 
41
45
  function isBindingContext(value: unknown): value is Context {
42
- return typeof value === 'object' && value !== null
43
- && typeof (value as { shutdown?: unknown }).shutdown === 'function'
44
- && typeof (value as { close?: unknown }).close === 'function';
46
+ return (
47
+ typeof value === 'object' &&
48
+ value !== null &&
49
+ typeof (value as { shutdown?: unknown }).shutdown === 'function' &&
50
+ typeof (value as { close?: unknown }).close === 'function'
51
+ );
45
52
  }
@@ -2,9 +2,10 @@ import type { MonitorEvent } from '@zlink-systems/zlink';
2
2
  import type { ZLinkBackendSocketMonitor, ZLinkBackendSocketMonitorEvent } from '../contracts';
3
3
  import { zlink } from './node-backend-adapter-support';
4
4
 
5
- export function wrapMonitorSocket(
6
- nativeInstance: { close(): void; recv(flags?: number): MonitorEvent | null }
7
- ): ZLinkBackendSocketMonitor {
5
+ export function wrapMonitorSocket(nativeInstance: {
6
+ close(): void;
7
+ recv(flags?: number): MonitorEvent | null;
8
+ }): ZLinkBackendSocketMonitor {
8
9
  const handlers = new Set<(event: ZLinkBackendSocketMonitorEvent) => void>();
9
10
  return {
10
11
  nativeInstance,
@@ -73,10 +73,9 @@ class NodeRawHostPort implements ZLinkRawHostPort {
73
73
 
74
74
  createRouter(): ZLinkRawRouterPort {
75
75
  this.requireOpen();
76
- return this.own(new NodeRawRouterPort(
77
- createRouterSocket(this.context),
78
- this.routerReceiveTimeoutMs
79
- ));
76
+ return this.own(
77
+ new NodeRawRouterPort(createRouterSocket(this.context), this.routerReceiveTimeoutMs)
78
+ );
80
79
  }
81
80
 
82
81
  createDealer(): ZLinkRawDealerPort {
@@ -133,11 +132,7 @@ abstract class NodeRawSocketPort<TSocket extends Socket> implements ZLinkRawSock
133
132
  private closed = false;
134
133
 
135
134
  protected constructor(protected readonly socket: TSocket) {
136
- this.eventLoopPoller = new ZLinkNodeEventLoopPoller(
137
- socket,
138
- true,
139
- () => {}
140
- );
135
+ this.eventLoopPoller = new ZLinkNodeEventLoopPoller(socket, true, () => {});
141
136
  }
142
137
 
143
138
  setReadableHandler(handler: () => void): void {
@@ -233,9 +228,11 @@ class NodeRawRouterPort extends NodeRawSocketPort<RouterSocket> implements ZLink
233
228
  private nextIncomingRequestSequence = 1n;
234
229
  disconnectRid(routingId: string): void {
235
230
  this.requireOpen();
236
- (this.socket as RouterSocket & {
237
- disconnectRid(value: BindingRoutingId): void;
238
- }).disconnectRid(bindingRoutingId(routingId));
231
+ (
232
+ this.socket as RouterSocket & {
233
+ disconnectRid(value: BindingRoutingId): void;
234
+ }
235
+ ).disconnectRid(bindingRoutingId(routingId));
239
236
  }
240
237
 
241
238
  constructor(socket: RouterSocket, receiveTimeoutMs?: number) {
@@ -282,7 +279,10 @@ class NodeRawRouterPort extends NodeRawSocketPort<RouterSocket> implements ZLink
282
279
  ): Promise<readonly Buffer[]> {
283
280
  this.requireOpen();
284
281
  try {
285
- const replies = await appendRequestParts(this.socket.request(bindingRoutingId(targetRid)), parts)
282
+ const replies = await appendRequestParts(
283
+ this.socket.request(bindingRoutingId(targetRid)),
284
+ parts
285
+ )
286
286
  .timeout(timeoutMs)
287
287
  .submit().reply;
288
288
  return copyAndClose(replies);
@@ -298,9 +298,8 @@ class NodeRawRouterPort extends NodeRawSocketPort<RouterSocket> implements ZLink
298
298
  dontWait,
299
299
  () => {
300
300
  const current = this.nextIncomingRequestSequence;
301
- this.nextIncomingRequestSequence = current === BigInt(Number.MAX_SAFE_INTEGER)
302
- ? 1n
303
- : current + 1n;
301
+ this.nextIncomingRequestSequence =
302
+ current === BigInt(Number.MAX_SAFE_INTEGER) ? 1n : current + 1n;
304
303
  return current;
305
304
  },
306
305
  (targetRid, replyToken, parts) => {
@@ -333,7 +332,9 @@ class NodeRawDealerPort extends NodeRawSocketPort<DealerSocket> implements ZLink
333
332
 
334
333
  async request(parts: readonly Uint8Array[], timeoutMs: number): Promise<readonly Buffer[]> {
335
334
  this.requireOpen();
336
- const replies = await appendRequestParts(this.socket.request(), parts).timeout(timeoutMs).submit().reply;
335
+ const replies = await appendRequestParts(this.socket.request(), parts)
336
+ .timeout(timeoutMs)
337
+ .submit().reply;
337
338
  return copyAndClose(replies);
338
339
  }
339
340
 
@@ -412,7 +413,8 @@ function appendReplyParts(
412
413
  }
413
414
 
414
415
  function requireParts(parts: readonly Uint8Array[]): [Uint8Array, ...Uint8Array[]] {
415
- if (parts.length === 0) throw new TypeError('Raw multipart operation requires at least one part.');
416
+ if (parts.length === 0)
417
+ throw new TypeError('Raw multipart operation requires at least one part.');
416
418
  return parts as [Uint8Array, ...Uint8Array[]];
417
419
  }
418
420
 
@@ -429,10 +431,7 @@ function receiveRecord(
429
431
  reply?: RawReceivedReply
430
432
  ): ZLinkRawReceivedRecord | undefined {
431
433
  const received = new Received();
432
- if (!socket.recv(
433
- received,
434
- dontWait ? RecvFlags.DontWait : RecvFlags.None
435
- )) {
434
+ if (!socket.recv(received, dontWait ? RecvFlags.DontWait : RecvFlags.None)) {
436
435
  received.close();
437
436
  return undefined;
438
437
  }
@@ -442,11 +441,12 @@ function receiveRecord(
442
441
  const sourceRoute = received.routingId?.toBytes() ?? Buffer.alloc(0);
443
442
  const requestSeq = received.replyToken === null ? undefined : nextRequestSequence?.();
444
443
  const replyToken = received.replyToken;
445
- const receivedReply = replyToken === null
446
- ? undefined
447
- : reply === undefined
448
- ? received.reply()
449
- : (parts: readonly Uint8Array[]) => reply(sourceRoute, replyToken, parts);
444
+ const receivedReply =
445
+ replyToken === null
446
+ ? undefined
447
+ : reply === undefined
448
+ ? received.reply()
449
+ : (parts: readonly Uint8Array[]) => reply(sourceRoute, replyToken, parts);
450
450
  return {
451
451
  sourceRid,
452
452
  sourceRoute,
@@ -462,7 +462,7 @@ function receiveRecord(
462
462
  appendReplyParts(receivedReply, parts).submit();
463
463
  }
464
464
  }),
465
- parts: received.parts.map(part => part.toBytes()),
465
+ parts: received.parts.map((part) => part.toBytes()),
466
466
  close: () => {
467
467
  if (closed) return;
468
468
  closed = true;
@@ -477,7 +477,7 @@ function receiveRecord(
477
477
 
478
478
  function copyAndClose(messages: readonly Message[]): readonly Buffer[] {
479
479
  try {
480
- return messages.map(message => message.toBytes());
480
+ return messages.map((message) => message.toBytes());
481
481
  } finally {
482
482
  for (const message of messages) message.close();
483
483
  }