@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
@@ -91,13 +91,12 @@ class RawServiceMeshRuntime {
91
91
  router = host.createRouter();
92
92
  const receiveFlowRouter = router;
93
93
  router.setRoutingId(this.descriptor.nodeRoutingId);
94
- this.applicationJobQueue.registerReceiveFlowTarget?.(router, state => receiveFlowRouter.setReceiveFlowState(state), this.onReceiveFlowConfigFailure);
94
+ this.applicationJobQueue.registerReceiveFlowTarget?.(router, (state) => receiveFlowRouter.setReceiveFlowState(state), this.onReceiveFlowConfigFailure);
95
95
  router.bind(this.descriptor.advertisedEndpoint);
96
96
  const boundEndpoint = router.localEndpoint();
97
97
  const next = {
98
98
  ...this.descriptor,
99
- advertisedEndpoint: this.resolveAdvertisedEndpoint?.(boundEndpoint)
100
- ?? boundEndpoint,
99
+ advertisedEndpoint: this.resolveAdvertisedEndpoint?.(boundEndpoint) ?? boundEndpoint,
101
100
  descriptorRevision: this.descriptor.descriptorRevision + 1n,
102
101
  state: 'serving'
103
102
  };
@@ -152,20 +151,16 @@ class RawServiceMeshRuntime {
152
151
  disconnectPeer(endpoint, nodeRoutingId, lifecycleGeneration) {
153
152
  const current = this.topology.peer(nodeRoutingId);
154
153
  const expected = this.expectedPeers.get(nodeRoutingId);
155
- if (lifecycleGeneration !== undefined
156
- && (
154
+ if (lifecycleGeneration !== undefined &&
157
155
  // Discovery has already fenced this RID to a replacement process.
158
156
  // The old auto-connect intent must not use disconnectRid here: that
159
157
  // is RID-wide and can close the provisional replacement before its
160
158
  // Hello/admission promotes it. admitPeer owns exact old-pair teardown
161
159
  // after the replacement descriptor is accepted.
162
- (expected?.lifecycleGeneration !== undefined
163
- && expected.lifecycleGeneration !== lifecycleGeneration)
164
- ||
165
- (current !== undefined
166
- && current.descriptor.lifecycleGeneration !== lifecycleGeneration)
167
- || (current === undefined
168
- && expected?.lifecycleGeneration !== lifecycleGeneration))) {
160
+ ((expected?.lifecycleGeneration !== undefined &&
161
+ expected.lifecycleGeneration !== lifecycleGeneration) ||
162
+ (current !== undefined && current.descriptor.lifecycleGeneration !== lifecycleGeneration) ||
163
+ (current === undefined && expected?.lifecycleGeneration !== lifecycleGeneration))) {
169
164
  return;
170
165
  }
171
166
  try {
@@ -185,9 +180,9 @@ class RawServiceMeshRuntime {
185
180
  if (current !== undefined)
186
181
  this.removePeer(current);
187
182
  this.topology.forgetNotRequired(nodeRoutingId);
188
- if (lifecycleGeneration === undefined
189
- || expected?.lifecycleGeneration === undefined
190
- || expected.lifecycleGeneration === lifecycleGeneration) {
183
+ if (lifecycleGeneration === undefined ||
184
+ expected?.lifecycleGeneration === undefined ||
185
+ expected.lifecycleGeneration === lifecycleGeneration) {
191
186
  this.expectedPeers.delete(nodeRoutingId);
192
187
  }
193
188
  this.notifyPeerConnectionIntentRemoved(nodeRoutingId);
@@ -222,7 +217,9 @@ class RawServiceMeshRuntime {
222
217
  }
223
218
  observePeerConnectionIntentRemoved(listener) {
224
219
  this.peerConnectionIntentRemoved.add(listener);
225
- return () => { this.peerConnectionIntentRemoved.delete(listener); };
220
+ return () => {
221
+ this.peerConnectionIntentRemoved.delete(listener);
222
+ };
226
223
  }
227
224
  notifyPeerConnectionIntentRemoved(nodeRoutingId) {
228
225
  // Only the logical owner's removal publishes lifecycle termination.
@@ -235,18 +232,19 @@ class RawServiceMeshRuntime {
235
232
  async announcePeer(nodeRoutingId) {
236
233
  if (!this.expectedPeers.has(nodeRoutingId) || this.peerAdmissionSealed?.() === true)
237
234
  return false;
238
- return this.send(nodeRoutingId, [(0, service_wire_m6a_codec_1.encodeRouteMeshAdmission)(service_wire_m6a_codec_1.M6aServiceWireCommand.hello, this.topology.localDescriptor())]);
235
+ return this.send(nodeRoutingId, [
236
+ (0, service_wire_m6a_codec_1.encodeRouteMeshAdmission)(service_wire_m6a_codec_1.M6aServiceWireCommand.hello, this.topology.localDescriptor())
237
+ ]);
239
238
  }
240
239
  isPeerRouteReady(nodeRoutingId, lifecycleGeneration) {
241
240
  const peer = this.topology.peer(nodeRoutingId);
242
241
  const monitorConnection = this.monitorConnectionStates.get(nodeRoutingId);
243
- const applicationRouteReady = monitorConnection === undefined
244
- || monitorConnection === peer?.connectionId;
245
- const ready = peer !== undefined
246
- && (lifecycleGeneration === undefined
247
- || peer.descriptor.lifecycleGeneration === lifecycleGeneration)
248
- && applicationRouteReady
249
- && this.liveness.isReady(nodeRoutingId, peer.connectionId);
242
+ const applicationRouteReady = monitorConnection === undefined || monitorConnection === peer?.connectionId;
243
+ const ready = peer !== undefined &&
244
+ (lifecycleGeneration === undefined ||
245
+ peer.descriptor.lifecycleGeneration === lifecycleGeneration) &&
246
+ applicationRouteReady &&
247
+ this.liveness.isReady(nodeRoutingId, peer.connectionId);
250
248
  return ready;
251
249
  }
252
250
  async announceExpectedPeers() {
@@ -267,10 +265,10 @@ class RawServiceMeshRuntime {
267
265
  async updateLocalDescriptor(options) {
268
266
  const current = this.topology.localDescriptor();
269
267
  const channels = options.state === 'draining'
270
- ? current.channels.map(channel => ({ ...channel, weight: 0 }))
268
+ ? current.channels.map((channel) => ({ ...channel, weight: 0 }))
271
269
  : options.channelName === undefined
272
270
  ? current.channels
273
- : current.channels.map(channel => channel.name === options.channelName
271
+ : current.channels.map((channel) => channel.name === options.channelName
274
272
  ? { ...channel, weight: options.channelWeight }
275
273
  : channel);
276
274
  const next = {
@@ -305,7 +303,7 @@ class RawServiceMeshRuntime {
305
303
  return this.send(targetNodeRoutingId, [(0, service_wire_m6a_codec_1.encodeNodeSendHeader)(), this.applicationFrame(payload)]);
306
304
  }
307
305
  async sendToChannel(channelName, payload) {
308
- const selected = this.topology.selectChannel(channelName, peer => this.isLocalOrReadyPeer(peer.descriptor.nodeRoutingId));
306
+ const selected = this.topology.selectChannel(channelName, (peer) => this.isLocalOrReadyPeer(peer.descriptor.nodeRoutingId));
309
307
  if (selected === undefined)
310
308
  return false;
311
309
  const applicationFrame = this.applicationFrame(payload);
@@ -337,14 +335,13 @@ class RawServiceMeshRuntime {
337
335
  return this.requestToTarget(targetNodeRoutingId, payload, timeoutMs);
338
336
  }
339
337
  requestToChannel(channelName, payload, timeoutMs) {
340
- const selected = this.topology.selectChannel(channelName, peer => this.isLocalOrReadyPeer(peer.descriptor.nodeRoutingId));
338
+ const selected = this.topology.selectChannel(channelName, (peer) => this.isLocalOrReadyPeer(peer.descriptor.nodeRoutingId));
341
339
  return selected === undefined
342
340
  ? undefined
343
341
  : this.requestToTarget(selected.descriptor.nodeRoutingId, payload, timeoutMs, channelName);
344
342
  }
345
343
  isLocalOrReadyPeer(nodeRoutingId) {
346
- return nodeRoutingId === this.descriptor.nodeRoutingId
347
- || this.isPeerRouteReady(nodeRoutingId);
344
+ return nodeRoutingId === this.descriptor.nodeRoutingId || this.isPeerRouteReady(nodeRoutingId);
348
345
  }
349
346
  setServiceIngress(handler) {
350
347
  if (this.serviceIngress !== undefined && this.serviceIngress !== handler) {
@@ -400,7 +397,9 @@ class RawServiceMeshRuntime {
400
397
  const startedAtMs = performance.now();
401
398
  let messages = 0;
402
399
  let bytes = 0;
403
- const observe = (_source, byteCount) => { bytes += byteCount; };
400
+ const observe = (_source, byteCount) => {
401
+ bytes += byteCount;
402
+ };
404
403
  while (receiveReady && messages < 64 && !this.closed) {
405
404
  const result = await this.receiveOne(performance.now(), observe);
406
405
  if (result === 'noData') {
@@ -460,13 +459,13 @@ class RawServiceMeshRuntime {
460
459
  }
461
460
  }
462
461
  pullMonitorEvents() {
463
- this.monitor?.drain(event => {
462
+ this.monitor?.drain((event) => {
464
463
  this.observeMonitorEvent(event);
465
464
  if (this.monitorEvents.length < MAX_PENDING_MONITOR_EVENTS) {
466
465
  this.monitorEvents.push(event);
467
466
  return;
468
467
  }
469
- const existingIndex = this.monitorEvents.findIndex(candidate => sameMonitorConnection(candidate, event));
468
+ const existingIndex = this.monitorEvents.findIndex((candidate) => sameMonitorConnection(candidate, event));
470
469
  if (existingIndex >= 0)
471
470
  this.monitorEvents[existingIndex] = event;
472
471
  else {
@@ -497,7 +496,9 @@ class RawServiceMeshRuntime {
497
496
  : undefined;
498
497
  if (correlation === undefined)
499
498
  return false;
500
- const reply = [(0, service_wire_m6a_codec_1.encodeReplyHeader)(correlation, runtime_values_1.RequestResult.ProtocolError, service_wire_constants_generated_1.ServiceWireFrameworkErrorCode.requestProtocolError)];
499
+ const reply = [
500
+ (0, service_wire_m6a_codec_1.encodeReplyHeader)(correlation, runtime_values_1.RequestResult.ProtocolError, service_wire_constants_generated_1.ServiceWireFrameworkErrorCode.requestProtocolError)
501
+ ];
501
502
  if (received.reply === undefined)
502
503
  return false;
503
504
  received.reply(reply);
@@ -510,12 +511,13 @@ class RawServiceMeshRuntime {
510
511
  }
511
512
  }
512
513
  async processReceived(received, nowMs, applicationJobOwner) {
513
- if (received.parts.length === 0
514
- || (received.parts.length === 1
515
- && received.parts[0].byteLength === 0)) {
514
+ if (received.parts.length === 0 ||
515
+ (received.parts.length === 1 && received.parts[0].byteLength === 0)) {
516
516
  if (this.peerAdmissionSealed?.() === true)
517
517
  return 'dropped';
518
- return await this.send(received.sourceRid, [(0, service_wire_m6a_codec_1.encodeRouteMeshAdmission)(service_wire_m6a_codec_1.M6aServiceWireCommand.hello, this.topology.localDescriptor())])
518
+ return (await this.send(received.sourceRid, [
519
+ (0, service_wire_m6a_codec_1.encodeRouteMeshAdmission)(service_wire_m6a_codec_1.M6aServiceWireCommand.hello, this.topology.localDescriptor())
520
+ ]))
519
521
  ? 'infrastructure'
520
522
  : 'dropped';
521
523
  }
@@ -524,16 +526,16 @@ class RawServiceMeshRuntime {
524
526
  if (header.command === service_wire_m6a_codec_1.M6aServiceWireCommand.hello && this.peerAdmissionSealed?.() === true) {
525
527
  return 'dropped';
526
528
  }
527
- if (header.command === service_wire_m6a_codec_1.M6aServiceWireCommand.hello
528
- || header.command === service_wire_m6a_codec_1.M6aServiceWireCommand.admit
529
- || header.command === service_wire_m6a_codec_1.M6aServiceWireCommand.update) {
529
+ if (header.command === service_wire_m6a_codec_1.M6aServiceWireCommand.hello ||
530
+ header.command === service_wire_m6a_codec_1.M6aServiceWireCommand.admit ||
531
+ header.command === service_wire_m6a_codec_1.M6aServiceWireCommand.update) {
530
532
  if (received.parts.length !== 1)
531
533
  return 'protocolError';
532
534
  const descriptor = (0, service_wire_m6a_codec_1.decodeRouteMeshAdmission)(received.parts[0], header.command, received.sourceRid);
533
535
  const expected = this.expectedPeers.get(received.sourceRid);
534
- if (expected !== undefined
535
- && (expected.meshName !== descriptor.meshName
536
- || expected.nodeRoutingId !== descriptor.nodeRoutingId)) {
536
+ if (expected !== undefined &&
537
+ (expected.meshName !== descriptor.meshName ||
538
+ expected.nodeRoutingId !== descriptor.nodeRoutingId)) {
537
539
  await this.send(received.sourceRid, [(0, service_wire_m6a_codec_1.encodeReject)(3)]);
538
540
  return 'infrastructure';
539
541
  }
@@ -543,8 +545,8 @@ class RawServiceMeshRuntime {
543
545
  const detail = result === 'invalidDescriptor'
544
546
  ? describeInvalidAdmissionDescriptor(descriptor, expected, this.topology.peer(descriptor.nodeRoutingId)?.descriptor)
545
547
  : undefined;
546
- console.warn(`RouteMesh admission rejected peer '${received.sourceRid}' as ${result}`
547
- + (detail === undefined ? '.' : ` (${detail}).`));
548
+ console.warn(`RouteMesh admission rejected peer '${received.sourceRid}' as ${result}` +
549
+ (detail === undefined ? '.' : ` (${detail}).`));
548
550
  await this.send(received.sourceRid, [(0, service_wire_m6a_codec_1.encodeReject)(admissionReason(result))]);
549
551
  return 'infrastructure';
550
552
  }
@@ -554,7 +556,9 @@ class RawServiceMeshRuntime {
554
556
  // Hello supplies only the sender's descriptor. Even NotRequired
555
557
  // peers must receive ours before the intent owner closes transport;
556
558
  // submitting a response does not guarantee delivery before close.
557
- await this.send(received.sourceRid, [(0, service_wire_m6a_codec_1.encodeRouteMeshAdmission)(service_wire_m6a_codec_1.M6aServiceWireCommand.admit, this.topology.localDescriptor())]);
559
+ await this.send(received.sourceRid, [
560
+ (0, service_wire_m6a_codec_1.encodeRouteMeshAdmission)(service_wire_m6a_codec_1.M6aServiceWireCommand.admit, this.topology.localDescriptor())
561
+ ]);
558
562
  }
559
563
  else if (result === 'notRequired') {
560
564
  this.retireNotRequiredExpectedPeer(received.sourceRid, descriptor.advertisedEndpoint);
@@ -588,17 +592,20 @@ class RawServiceMeshRuntime {
588
592
  const peer = this.topology.peer(received.sourceRid);
589
593
  if (peer === undefined)
590
594
  return 'protocolError';
591
- if (header.command === service_wire_m6a_codec_1.M6aServiceWireCommand.livenessProbe
592
- || header.command === service_wire_m6a_codec_1.M6aServiceWireCommand.livenessAck) {
595
+ if (header.command === service_wire_m6a_codec_1.M6aServiceWireCommand.livenessProbe ||
596
+ header.command === service_wire_m6a_codec_1.M6aServiceWireCommand.livenessAck) {
593
597
  if (received.parts.length !== 1)
594
598
  return 'protocolError';
595
599
  const record = livenessCodec.decodeLivenessRecord(received.parts[0]);
596
600
  if (record.command === service_wire_m6a_codec_1.M6aServiceWireCommand.livenessProbe) {
597
601
  const ack = this.liveness.acknowledgeProbe(received.sourceRid, peer.connectionId, record.probeId);
598
- const sent = ack !== undefined && await this.send(received.sourceRid, [livenessCodec.encodeLivenessRecord({
599
- command: service_wire_m6a_codec_1.M6aServiceWireCommand.livenessAck,
600
- probeId: record.probeId
601
- })]);
602
+ const sent = ack !== undefined &&
603
+ (await this.send(received.sourceRid, [
604
+ livenessCodec.encodeLivenessRecord({
605
+ command: service_wire_m6a_codec_1.M6aServiceWireCommand.livenessAck,
606
+ probeId: record.probeId
607
+ })
608
+ ]));
602
609
  if (!sent) {
603
610
  return 'protocolError';
604
611
  }
@@ -621,7 +628,7 @@ class RawServiceMeshRuntime {
621
628
  });
622
629
  if (stateful !== undefined)
623
630
  return stateful;
624
- if (header.flags === 0
631
+ if (header.flags === 0 &&
625
632
  // A bare infrastructure control is normally exactly one frame, but a
626
633
  // relocation Prepare now rides its bound-session journal as
627
634
  // node-internal ZLNI frames trailing the canonical command frame
@@ -633,8 +640,8 @@ class RawServiceMeshRuntime {
633
640
  // protocolError (surfaced downstream as `invalid_frame`, stalling
634
641
  // the source's Prepare resend loop past the relocation admission
635
642
  // budget).
636
- && received.parts.length >= 1
637
- && isBareInfrastructureControl(header.command)) {
643
+ received.parts.length >= 1 &&
644
+ isBareInfrastructureControl(header.command)) {
638
645
  const accepted = this.mailbox.tryEnqueue({
639
646
  owner: `node:${this.descriptor.nodeRoutingId}`,
640
647
  domain: 'infrastructure',
@@ -646,9 +653,9 @@ class RawServiceMeshRuntime {
646
653
  });
647
654
  return accepted ? 'infrastructure' : 'dropped';
648
655
  }
649
- if (header.flags !== 0
650
- || received.parts.length !== 2
651
- || ![
656
+ if (header.flags !== 0 ||
657
+ received.parts.length !== 2 ||
658
+ ![
652
659
  service_wire_m6a_codec_1.M6aServiceWireCommand.nodeSend,
653
660
  service_wire_m6a_codec_1.M6aServiceWireCommand.nodeRequest,
654
661
  service_wire_m6a_codec_1.M6aServiceWireCommand.channelSend,
@@ -694,9 +701,7 @@ class RawServiceMeshRuntime {
694
701
  sourceRoute: received.sourceRoute,
695
702
  requestSequence: received.requestSeq,
696
703
  ...(received.reply === undefined ? {} : { reply: received.reply })
697
- }, [
698
- (0, service_wire_m6a_codec_1.encodeReplyHeader)(correlation, runtime_values_1.RequestResult.NotConnected, 0)
699
- ]);
704
+ }, [(0, service_wire_m6a_codec_1.encodeReplyHeader)(correlation, runtime_values_1.RequestResult.NotConnected, 0)]);
700
705
  return 'infrastructure';
701
706
  }
702
707
  return 'dropped';
@@ -711,10 +716,12 @@ class RawServiceMeshRuntime {
711
716
  const result = this.liveness.tick(nowMs);
712
717
  this.requireStarted();
713
718
  for (const probe of result.probes) {
714
- await this.send(probe.nodeRoutingId, [livenessCodec.encodeLivenessRecord({
719
+ await this.send(probe.nodeRoutingId, [
720
+ livenessCodec.encodeLivenessRecord({
715
721
  command: service_wire_m6a_codec_1.M6aServiceWireCommand.livenessProbe,
716
722
  probeId: probe.probeId
717
- })]);
723
+ })
724
+ ]);
718
725
  }
719
726
  for (const nodeRoutingId of result.timedOutNodes) {
720
727
  const peer = this.topology.peer(nodeRoutingId);
@@ -739,13 +746,13 @@ class RawServiceMeshRuntime {
739
746
  this.monitorEvents.length = 0;
740
747
  for (const event of events) {
741
748
  handled++;
742
- const nodeRoutingId = event.routingId
743
- ?? this.expectedPeerRoutingId(event.remoteAddress);
749
+ const nodeRoutingId = event.routingId ?? this.expectedPeerRoutingId(event.remoteAddress);
744
750
  if (event.event === MONITOR_CONNECTION_READY && isConnectionReadyEdge(event)) {
745
751
  if (nodeRoutingId === undefined) {
746
752
  const candidate = this.createUnresolvedConnectionCandidate(event);
747
- const alreadyQueued = this.unresolvedConnectionCandidates.some(value => value.connectionId === candidate.connectionId);
748
- if (!alreadyQueued && this.unresolvedConnectionCandidates.length < MAX_UNRESOLVED_CONNECTION_CANDIDATES) {
753
+ const alreadyQueued = this.unresolvedConnectionCandidates.some((value) => value.connectionId === candidate.connectionId);
754
+ if (!alreadyQueued &&
755
+ this.unresolvedConnectionCandidates.length < MAX_UNRESOLVED_CONNECTION_CANDIDATES) {
749
756
  this.unresolvedConnectionCandidates.push(candidate);
750
757
  }
751
758
  continue;
@@ -762,7 +769,8 @@ class RawServiceMeshRuntime {
762
769
  if (existingPeer !== undefined) {
763
770
  if (this.liveness.isReady(nodeRoutingId, existingPeer.connectionId)) {
764
771
  const existingCandidate = this.connectionCandidates
765
- .get(nodeRoutingId)?.get(existingPeer.connectionId);
772
+ .get(nodeRoutingId)
773
+ ?.get(existingPeer.connectionId);
766
774
  if (this.isDiscoveredLifecycleReplacement(existingPeer, nodeRoutingId)) {
767
775
  // A current discovery descriptor with the same RID but a
768
776
  // different lifecycle token denotes a replacement process.
@@ -816,8 +824,7 @@ class RawServiceMeshRuntime {
816
824
  this.connectionIds.set(nodeRoutingId, candidate.connectionId);
817
825
  await this.announcePeer(nodeRoutingId);
818
826
  }
819
- else if (event.event === MONITOR_DISCONNECTED
820
- && nodeRoutingId !== undefined) {
827
+ else if (event.event === MONITOR_DISCONNECTED && nodeRoutingId !== undefined) {
821
828
  const peer = this.topology.peer(nodeRoutingId);
822
829
  const disconnectedId = monitorConnectionId(event, nodeRoutingId);
823
830
  this.removeConnectionCandidate(nodeRoutingId, disconnectedId);
@@ -827,7 +834,7 @@ class RawServiceMeshRuntime {
827
834
  }
828
835
  else if (event.event === MONITOR_DISCONNECTED) {
829
836
  const disconnectedId = monitorConnectionId(event);
830
- const index = this.unresolvedConnectionCandidates.findIndex(candidate => candidate.connectionId === disconnectedId);
837
+ const index = this.unresolvedConnectionCandidates.findIndex((candidate) => candidate.connectionId === disconnectedId);
831
838
  if (index >= 0)
832
839
  this.unresolvedConnectionCandidates.splice(index, 1);
833
840
  }
@@ -864,8 +871,8 @@ class RawServiceMeshRuntime {
864
871
  const encodedPayload = this.applicationFrame(payload);
865
872
  const pending = this.operations.register(timeoutMs);
866
873
  let selectedTargetNodeRoutingId = targetNodeRoutingId;
867
- if (selectedTargetNodeRoutingId !== this.descriptor.nodeRoutingId
868
- && !this.isPeerRouteReady(selectedTargetNodeRoutingId)) {
874
+ if (selectedTargetNodeRoutingId !== this.descriptor.nodeRoutingId &&
875
+ !this.isPeerRouteReady(selectedTargetNodeRoutingId)) {
869
876
  // Channel selection happens before native admission. If that selection
870
877
  // becomes stale during a peer drain, choose another ready channel peer
871
878
  // while no request has been submitted yet. Reusing the same pending
@@ -874,16 +881,15 @@ class RawServiceMeshRuntime {
874
881
  if (channelName !== undefined) {
875
882
  const excludedTargets = new Set([selectedTargetNodeRoutingId]);
876
883
  for (;;) {
877
- const alternate = this.topology.selectChannel(channelName, peer => {
884
+ const alternate = this.topology.selectChannel(channelName, (peer) => {
878
885
  const candidate = peer.descriptor.nodeRoutingId;
879
- return !excludedTargets.has(candidate)
880
- && this.isLocalOrReadyPeer(candidate);
886
+ return !excludedTargets.has(candidate) && this.isLocalOrReadyPeer(candidate);
881
887
  });
882
888
  if (alternate === undefined)
883
889
  break;
884
890
  selectedTargetNodeRoutingId = alternate.descriptor.nodeRoutingId;
885
- if (selectedTargetNodeRoutingId === this.descriptor.nodeRoutingId
886
- || this.isPeerRouteReady(selectedTargetNodeRoutingId)) {
891
+ if (selectedTargetNodeRoutingId === this.descriptor.nodeRoutingId ||
892
+ this.isPeerRouteReady(selectedTargetNodeRoutingId)) {
887
893
  break;
888
894
  }
889
895
  excludedTargets.add(selectedTargetNodeRoutingId);
@@ -930,7 +936,7 @@ class RawServiceMeshRuntime {
930
936
  finally {
931
937
  applicationJobOwner.close();
932
938
  }
933
- })().catch(error => this.operations.fail(pending.id, error));
939
+ })().catch((error) => this.operations.fail(pending.id, error));
934
940
  return pending;
935
941
  }
936
942
  if (!this.isPeerRouteReady(selectedTargetNodeRoutingId)) {
@@ -938,12 +944,10 @@ class RawServiceMeshRuntime {
938
944
  // topology has never observed. A known peer without a usable route is
939
945
  // a Framework NotConnected result; an unknown RID is completed locally
940
946
  // as RequestTargetNotFound without submitting an application frame.
941
- const knownTarget = this.topology.peer(selectedTargetNodeRoutingId) !== undefined
942
- || this.topology.knownDescriptor(selectedTargetNodeRoutingId) !== undefined;
947
+ const knownTarget = this.topology.peer(selectedTargetNodeRoutingId) !== undefined ||
948
+ this.topology.knownDescriptor(selectedTargetNodeRoutingId) !== undefined;
943
949
  this.operations.complete(pending.id, {
944
- terminalResult: knownTarget
945
- ? runtime_values_1.RequestResult.NotConnected
946
- : runtime_values_1.RequestResult.NotFound,
950
+ terminalResult: knownTarget ? runtime_values_1.RequestResult.NotConnected : runtime_values_1.RequestResult.NotFound,
947
951
  failureCode: knownTarget ? 0 : REQUEST_TARGET_NOT_FOUND_FAILURE_CODE
948
952
  });
949
953
  return pending;
@@ -959,7 +963,7 @@ class RawServiceMeshRuntime {
959
963
  this.operations.fail(pending.id, error);
960
964
  return pending;
961
965
  }
962
- void request.then(replyParts => {
966
+ void request.then((replyParts) => {
963
967
  try {
964
968
  if (replyParts.length < 1 || replyParts.length > 2) {
965
969
  throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Invalid reply parts.');
@@ -987,7 +991,7 @@ class RawServiceMeshRuntime {
987
991
  catch (error) {
988
992
  this.operations.fail(pending.id, error);
989
993
  }
990
- }, error => {
994
+ }, (error) => {
991
995
  this.operations.fail(pending.id, error);
992
996
  });
993
997
  return pending;
@@ -1004,11 +1008,11 @@ class RawServiceMeshRuntime {
1004
1008
  }
1005
1009
  admitPeer(descriptor, connection, nowMs, expected) {
1006
1010
  const previous = this.topology.peer(descriptor.nodeRoutingId);
1007
- if (previous !== undefined
1008
- && previous.descriptor.lifecycleGeneration === descriptor.lifecycleGeneration
1009
- && (descriptor.descriptorRevision < previous.descriptor.descriptorRevision
1010
- || (descriptor.descriptorRevision === previous.descriptor.descriptorRevision
1011
- && !(0, service_topology_registry_1.sameServiceNodeDescriptor)(previous.descriptor, descriptor)))) {
1011
+ if (previous !== undefined &&
1012
+ previous.descriptor.lifecycleGeneration === descriptor.lifecycleGeneration &&
1013
+ (descriptor.descriptorRevision < previous.descriptor.descriptorRevision ||
1014
+ (descriptor.descriptorRevision === previous.descriptor.descriptorRevision &&
1015
+ !(0, service_topology_registry_1.sameServiceNodeDescriptor)(previous.descriptor, descriptor)))) {
1012
1016
  throw new service_wire_m6a_codec_1.ServiceWireProtocolError(`RouteMesh peer '${descriptor.nodeRoutingId}' descriptor revision is stale or conflicting.`);
1013
1017
  }
1014
1018
  const result = this.topology.admit(descriptor, connection.connectionId, expected, connection.discriminator);
@@ -1019,7 +1023,8 @@ class RawServiceMeshRuntime {
1019
1023
  this.monitorConnectionStates.set(descriptor.nodeRoutingId, connection.connectionId);
1020
1024
  if (previous !== undefined && previous.connectionId !== connection.connectionId) {
1021
1025
  const previousCandidate = this.connectionCandidates
1022
- .get(descriptor.nodeRoutingId)?.get(previous.connectionId);
1026
+ .get(descriptor.nodeRoutingId)
1027
+ ?.get(previous.connectionId);
1023
1028
  if (previousCandidate !== undefined) {
1024
1029
  this.removeConnectionCandidate(descriptor.nodeRoutingId, previousCandidate.connectionId);
1025
1030
  }
@@ -1106,8 +1111,8 @@ class RawServiceMeshRuntime {
1106
1111
  createUnresolvedConnectionCandidate(event) {
1107
1112
  const connectionId = monitorConnectionId(event);
1108
1113
  const local = this.topology.localDescriptor();
1109
- const direction = this.endpointOnlyPeers.has(event.remoteAddress)
1110
- || this.expectedPeerRoutingId(event.remoteAddress) !== undefined
1114
+ const direction = this.endpointOnlyPeers.has(event.remoteAddress) ||
1115
+ this.expectedPeerRoutingId(event.remoteAddress) !== undefined
1111
1116
  ? 'outbound'
1112
1117
  : event.localAddress === local.advertisedEndpoint
1113
1118
  ? 'inbound'
@@ -1123,21 +1128,18 @@ class RawServiceMeshRuntime {
1123
1128
  promoteUnresolvedConnectionCandidate(nodeRoutingId, advertisedEndpoint) {
1124
1129
  const relevant = this.unresolvedConnectionCandidates
1125
1130
  .map((candidate, index) => ({ candidate, index }))
1126
- .filter(({ candidate }) => candidate.remoteAddress === advertisedEndpoint
1127
- || candidate.direction === 'inbound');
1131
+ .filter(({ candidate }) => candidate.remoteAddress === advertisedEndpoint || candidate.direction === 'inbound');
1128
1132
  if (relevant.length === 0)
1129
1133
  return undefined;
1130
- const directions = new Set(relevant.map(value => value.candidate.direction));
1134
+ const directions = new Set(relevant.map((value) => value.candidate.direction));
1131
1135
  const localRid = this.topology.localDescriptor().nodeRoutingId;
1132
1136
  const preferredDirection = directions.has('inbound') && directions.has('outbound')
1133
1137
  ? localRid.localeCompare(nodeRoutingId) <= 0
1134
1138
  ? 'outbound'
1135
1139
  : 'inbound'
1136
1140
  : relevant.at(-1).candidate.direction;
1137
- const selected = [...relevant]
1138
- .reverse()
1139
- .find(value => value.candidate.direction === preferredDirection)
1140
- ?? relevant.at(-1);
1141
+ const selected = [...relevant].reverse().find((value) => value.candidate.direction === preferredDirection) ??
1142
+ relevant.at(-1);
1141
1143
  this.unresolvedConnectionCandidates.splice(selected.index, 1);
1142
1144
  const initiator = selected.candidate.direction === 'outbound'
1143
1145
  ? localRid
@@ -1173,10 +1175,10 @@ class RawServiceMeshRuntime {
1173
1175
  // A same-RID replacement is permitted only from a complete discovery
1174
1176
  // fence. Manual/endpoint-only intent has no authority to replace a ready
1175
1177
  // peer, and lifecycle generations are opaque equality tokens.
1176
- return expected?.endpoint !== undefined
1177
- && expected.securityIdentity !== undefined
1178
- && expected.lifecycleGeneration !== undefined
1179
- && admitted.descriptor.lifecycleGeneration !== expected.lifecycleGeneration;
1178
+ return (expected?.endpoint !== undefined &&
1179
+ expected.securityIdentity !== undefined &&
1180
+ expected.lifecycleGeneration !== undefined &&
1181
+ admitted.descriptor.lifecycleGeneration !== expected.lifecycleGeneration);
1180
1182
  }
1181
1183
  expectedPeerRoutingId(endpoint) {
1182
1184
  for (const [nodeRoutingId, expected] of this.expectedPeers) {
@@ -1193,14 +1195,14 @@ class RawServiceMeshRuntime {
1193
1195
  if (event.routingId === nodeRoutingId)
1194
1196
  return true;
1195
1197
  const expected = this.expectedPeers.get(nodeRoutingId);
1196
- return expected === undefined || expected.endpoint === undefined
1197
- || expected.endpoint === event.remoteAddress;
1198
+ return (expected === undefined ||
1199
+ expected.endpoint === undefined ||
1200
+ expected.endpoint === event.remoteAddress);
1198
1201
  }
1199
1202
  retireNotRequiredExpectedPeer(nodeRoutingId, advertisedEndpoint) {
1200
1203
  const expected = this.expectedPeers.get(nodeRoutingId);
1201
- const endpoint = expected?.endpoint
1202
- ?? (advertisedEndpoint !== undefined
1203
- && this.endpointOnlyPeers.has(advertisedEndpoint)
1204
+ const endpoint = expected?.endpoint ??
1205
+ (advertisedEndpoint !== undefined && this.endpointOnlyPeers.has(advertisedEndpoint)
1204
1206
  ? advertisedEndpoint
1205
1207
  : undefined);
1206
1208
  if (endpoint !== undefined) {
@@ -1235,8 +1237,7 @@ class RawServiceMeshRuntime {
1235
1237
  this.onPeerDisconnected?.(peer.descriptor.nodeRoutingId, peer.descriptor.advertisedEndpoint, peer.descriptor.lifecycleGeneration);
1236
1238
  }
1237
1239
  observeMonitorEvent(event) {
1238
- const nodeRoutingId = event.routingId
1239
- ?? this.expectedPeerRoutingId(event.remoteAddress);
1240
+ const nodeRoutingId = event.routingId ?? this.expectedPeerRoutingId(event.remoteAddress);
1240
1241
  if (nodeRoutingId === undefined)
1241
1242
  return;
1242
1243
  const connectionId = monitorConnectionId(event, nodeRoutingId);
@@ -1247,9 +1248,9 @@ class RawServiceMeshRuntime {
1247
1248
  // allow a late stale READY to overwrite the admitted replacement.
1248
1249
  return;
1249
1250
  }
1250
- if (event.event === MONITOR_DISCONNECTED
1251
- && this.monitorConnectionStates.get(nodeRoutingId) === connectionId
1252
- && this.topology.peer(nodeRoutingId)?.connectionId === connectionId) {
1251
+ if (event.event === MONITOR_DISCONNECTED &&
1252
+ this.monitorConnectionStates.get(nodeRoutingId) === connectionId &&
1253
+ this.topology.peer(nodeRoutingId)?.connectionId === connectionId) {
1253
1254
  this.monitorConnectionStates.set(nodeRoutingId, null);
1254
1255
  }
1255
1256
  }
@@ -1307,11 +1308,7 @@ function isAlreadyDisconnectedError(error) {
1307
1308
  }
1308
1309
  function monitorConnectionId(event, resolvedNodeRoutingId = event.routingId ?? '') {
1309
1310
  if (event.connectionId !== undefined && event.connectionId !== 0n) {
1310
- return JSON.stringify([
1311
- resolvedNodeRoutingId,
1312
- 'connection',
1313
- event.connectionId.toString()
1314
- ]);
1311
+ return JSON.stringify([resolvedNodeRoutingId, 'connection', event.connectionId.toString()]);
1315
1312
  }
1316
1313
  return JSON.stringify([
1317
1314
  // Monitor `value` is event-specific: CONNECTION_READY reports the
@@ -1324,8 +1321,8 @@ function monitorConnectionId(event, resolvedNodeRoutingId = event.routingId ?? '
1324
1321
  ]);
1325
1322
  }
1326
1323
  function sameMonitorConnection(left, right) {
1327
- return monitorConnectionId(left) === monitorConnectionId(right)
1328
- && left.remoteAddress === right.remoteAddress;
1324
+ return (monitorConnectionId(left) === monitorConnectionId(right) &&
1325
+ left.remoteAddress === right.remoteAddress);
1329
1326
  }
1330
1327
  function isConnectionReadyEdge(event) {
1331
1328
  return event.flags === undefined
@@ -1339,21 +1336,20 @@ function describeInvalidAdmissionDescriptor(descriptor, expected, current) {
1339
1336
  catch (error) {
1340
1337
  return `descriptor validation: ${error instanceof Error ? error.message : String(error)}`;
1341
1338
  }
1342
- if (expected?.endpoint !== undefined
1343
- && descriptor.advertisedEndpoint !== expected.endpoint) {
1339
+ if (expected?.endpoint !== undefined && descriptor.advertisedEndpoint !== expected.endpoint) {
1344
1340
  return `advertisedEndpoint expected='${expected.endpoint}' actual='${descriptor.advertisedEndpoint}'`;
1345
1341
  }
1346
- if (expected?.securityIdentity !== undefined
1347
- && descriptor.securityIdentity !== expected.securityIdentity) {
1342
+ if (expected?.securityIdentity !== undefined &&
1343
+ descriptor.securityIdentity !== expected.securityIdentity) {
1348
1344
  return `securityIdentity expected='${expected.securityIdentity}' actual='${descriptor.securityIdentity}'`;
1349
1345
  }
1350
- if (expected?.lifecycleGeneration !== undefined
1351
- && descriptor.lifecycleGeneration !== expected.lifecycleGeneration) {
1346
+ if (expected?.lifecycleGeneration !== undefined &&
1347
+ descriptor.lifecycleGeneration !== expected.lifecycleGeneration) {
1352
1348
  return `lifecycleGeneration expected=${expected.lifecycleGeneration} actual=${descriptor.lifecycleGeneration}`;
1353
1349
  }
1354
- if (current !== undefined
1355
- && current.lifecycleGeneration === descriptor.lifecycleGeneration
1356
- && descriptor.descriptorRevision > current.descriptorRevision) {
1350
+ if (current !== undefined &&
1351
+ current.lifecycleGeneration === descriptor.lifecycleGeneration &&
1352
+ descriptor.descriptorRevision > current.descriptorRevision) {
1357
1353
  const immutableField = immutableDescriptorMismatch(current, descriptor);
1358
1354
  if (immutableField !== undefined)
1359
1355
  return immutableField;
@@ -1362,8 +1358,12 @@ function describeInvalidAdmissionDescriptor(descriptor, expected, current) {
1362
1358
  }
1363
1359
  function immutableDescriptorMismatch(current, descriptor) {
1364
1360
  const fields = [
1365
- 'advertisedEndpoint', 'securityIdentity', 'applicationVersion', 'objectRole',
1366
- 'activeCapacityLimit', 'pendingCapacityLimit'
1361
+ 'advertisedEndpoint',
1362
+ 'securityIdentity',
1363
+ 'applicationVersion',
1364
+ 'objectRole',
1365
+ 'activeCapacityLimit',
1366
+ 'pendingCapacityLimit'
1367
1367
  ];
1368
1368
  for (const field of fields) {
1369
1369
  if (current[field] !== descriptor[field]) {
@@ -1373,8 +1373,8 @@ function immutableDescriptorMismatch(current, descriptor) {
1373
1373
  if (JSON.stringify(current.protocolCapabilities) !== JSON.stringify(descriptor.protocolCapabilities)) {
1374
1374
  return `protocolCapabilities changed within lifecycle expected=${JSON.stringify(current.protocolCapabilities)} actual=${JSON.stringify(descriptor.protocolCapabilities)}`;
1375
1375
  }
1376
- if (JSON.stringify(current.channels.map(channel => channel.name))
1377
- !== JSON.stringify(descriptor.channels.map(channel => channel.name))) {
1376
+ if (JSON.stringify(current.channels.map((channel) => channel.name)) !==
1377
+ JSON.stringify(descriptor.channels.map((channel) => channel.name))) {
1378
1378
  return 'channels changed within lifecycle';
1379
1379
  }
1380
1380
  return undefined;
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.routeMeshConnectionNotRequired = routeMeshConnectionNotRequired;
4
4
  exports.descriptorConnectionNotRequired = descriptorConnectionNotRequired;
5
5
  function routeMeshConnectionNotRequired(localObjectRole, localHasServerChannel, remoteObjectRole, remoteHasServerChannel) {
6
- return localObjectRole === 'client'
7
- && !localHasServerChannel
8
- && remoteObjectRole === 'client'
9
- && !remoteHasServerChannel;
6
+ return (localObjectRole === 'client' &&
7
+ !localHasServerChannel &&
8
+ remoteObjectRole === 'client' &&
9
+ !remoteHasServerChannel);
10
10
  }
11
11
  function descriptorConnectionNotRequired(local, remote) {
12
12
  return routeMeshConnectionNotRequired(local.objectRole, local.channels.length > 0, remote.objectRole, remote.channels.length > 0);