@zlink-systems/framework 0.20.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
@@ -17,7 +17,9 @@ import type {
17
17
  ZLinkSpotLocationKey
18
18
  } from '../../contracts/Locations/Keys';
19
19
 
20
- export interface ZLinkLocationMonitoringRegistration { readonly sourceName: string; }
20
+ export interface ZLinkLocationMonitoringRegistration {
21
+ readonly sourceName: string;
22
+ }
21
23
 
22
24
  export interface ZLinkSocketMonitoringRegistration {
23
25
  readonly sourceName: string;
@@ -64,22 +66,21 @@ export enum ZLinkLocationRuntimeEventKind {
64
66
 
65
67
  export type ZLinkLocationRuntimeEvent =
66
68
  | (ZLinkRuntimeEvent & {
67
- readonly event: ZLinkLocationRuntimeEventKind.StatusChanged;
68
- readonly status: ZLinkLocationRuntimeStatus;
69
- })
69
+ readonly event: ZLinkLocationRuntimeEventKind.StatusChanged;
70
+ readonly status: ZLinkLocationRuntimeStatus;
71
+ })
70
72
  | (ZLinkRuntimeEvent & {
71
- readonly event: ZLinkLocationRuntimeEventKind.TopologyChanged;
72
- readonly topology: readonly ZLinkLocationTopologyEntry[];
73
- })
73
+ readonly event: ZLinkLocationRuntimeEventKind.TopologyChanged;
74
+ readonly topology: readonly ZLinkLocationTopologyEntry[];
75
+ })
74
76
  | (ZLinkRuntimeEvent & {
75
- readonly event: ZLinkLocationRuntimeEventKind.ServiceSummaryChanged;
76
- readonly serviceSummary: readonly ZLinkLocationServiceSummary[];
77
- })
77
+ readonly event: ZLinkLocationRuntimeEventKind.ServiceSummaryChanged;
78
+ readonly serviceSummary: readonly ZLinkLocationServiceSummary[];
79
+ })
78
80
  | (ZLinkRuntimeEvent & {
79
- readonly event:
80
- | ZLinkLocationRuntimeEventKind.StoreFailure
81
- | ZLinkLocationRuntimeEventKind.StoreRecovered;
82
- });
81
+ readonly event:
82
+ ZLinkLocationRuntimeEventKind.StoreFailure | ZLinkLocationRuntimeEventKind.StoreRecovered;
83
+ });
83
84
 
84
85
  export enum ZLinkSpotEventKind {
85
86
  TimerHandlerFailed = 'timerHandlerFailed',
@@ -105,10 +106,26 @@ export enum ZLinkSocketNativeEventType {
105
106
  PeerAdmissionChanged = 0x8000
106
107
  }
107
108
 
108
- export enum ZLinkLocationPeerEventKind { RowUpdated = 0, RowRemoved = 1, DesiredSetChanged = 2 }
109
- export enum ZLinkLocationSpotEventKind { RowUpdated = 0, RowRemoved = 1, ResolveMiss = 2 }
110
- export enum ZLinkLocationActorEventKind { RowUpdated = 0, RowRemoved = 1, ResolveMiss = 2 }
111
- export enum ZLinkLocationRouteEventKind { RowUpdated = 0, RowRemoved = 1, ResolveMiss = 2 }
109
+ export enum ZLinkLocationPeerEventKind {
110
+ RowUpdated = 0,
111
+ RowRemoved = 1,
112
+ DesiredSetChanged = 2
113
+ }
114
+ export enum ZLinkLocationSpotEventKind {
115
+ RowUpdated = 0,
116
+ RowRemoved = 1,
117
+ ResolveMiss = 2
118
+ }
119
+ export enum ZLinkLocationActorEventKind {
120
+ RowUpdated = 0,
121
+ RowRemoved = 1,
122
+ ResolveMiss = 2
123
+ }
124
+ export enum ZLinkLocationRouteEventKind {
125
+ RowUpdated = 0,
126
+ RowRemoved = 1,
127
+ ResolveMiss = 2
128
+ }
112
129
 
113
130
  export interface ZLinkAutoConnectDesiredSetChange {
114
131
  readonly autoConnectType: ZLinkLocationAutoConnectType;
@@ -118,18 +135,55 @@ export interface ZLinkAutoConnectDesiredSetChange {
118
135
  }
119
136
 
120
137
  export type ZLinkLocationPeerEvent =
121
- | (ZLinkRuntimeEvent & { readonly event: ZLinkLocationPeerEventKind.RowUpdated; readonly key: string; readonly peer: ZLinkPeerLocation })
122
- | (ZLinkRuntimeEvent & { readonly event: ZLinkLocationPeerEventKind.RowRemoved; readonly key: string })
123
- | (ZLinkRuntimeEvent & { readonly event: ZLinkLocationPeerEventKind.DesiredSetChanged; readonly desiredSetChange: ZLinkAutoConnectDesiredSetChange });
124
- export type ZLinkLocationSpotEvent = ZLinkRuntimeEvent & (
125
- | { readonly event: ZLinkLocationSpotEventKind.RowUpdated; readonly key: ZLinkSpotLocationKey; readonly spot: ZLinkSpotLocation }
126
- | { readonly event: ZLinkLocationSpotEventKind.RowRemoved | ZLinkLocationSpotEventKind.ResolveMiss; readonly key: ZLinkSpotLocationKey }
127
- );
128
- export type ZLinkLocationActorEvent = ZLinkRuntimeEvent & (
129
- | { readonly event: ZLinkLocationActorEventKind.RowUpdated; readonly key: ZLinkActorLocationKey; readonly actor: ZLinkActorLocation }
130
- | { readonly event: ZLinkLocationActorEventKind.RowRemoved | ZLinkLocationActorEventKind.ResolveMiss; readonly key: ZLinkActorLocationKey }
131
- );
132
- export type ZLinkLocationRouteEvent = ZLinkRuntimeEvent & (
133
- | { readonly event: ZLinkLocationRouteEventKind.RowUpdated; readonly key: ZLinkRouteLocationKey; readonly route: ZLinkRouteLocation }
134
- | { readonly event: ZLinkLocationRouteEventKind.RowRemoved | ZLinkLocationRouteEventKind.ResolveMiss; readonly key: ZLinkRouteLocationKey }
135
- );
138
+ | (ZLinkRuntimeEvent & {
139
+ readonly event: ZLinkLocationPeerEventKind.RowUpdated;
140
+ readonly key: string;
141
+ readonly peer: ZLinkPeerLocation;
142
+ })
143
+ | (ZLinkRuntimeEvent & {
144
+ readonly event: ZLinkLocationPeerEventKind.RowRemoved;
145
+ readonly key: string;
146
+ })
147
+ | (ZLinkRuntimeEvent & {
148
+ readonly event: ZLinkLocationPeerEventKind.DesiredSetChanged;
149
+ readonly desiredSetChange: ZLinkAutoConnectDesiredSetChange;
150
+ });
151
+ export type ZLinkLocationSpotEvent = ZLinkRuntimeEvent &
152
+ (
153
+ | {
154
+ readonly event: ZLinkLocationSpotEventKind.RowUpdated;
155
+ readonly key: ZLinkSpotLocationKey;
156
+ readonly spot: ZLinkSpotLocation;
157
+ }
158
+ | {
159
+ readonly event:
160
+ ZLinkLocationSpotEventKind.RowRemoved | ZLinkLocationSpotEventKind.ResolveMiss;
161
+ readonly key: ZLinkSpotLocationKey;
162
+ }
163
+ );
164
+ export type ZLinkLocationActorEvent = ZLinkRuntimeEvent &
165
+ (
166
+ | {
167
+ readonly event: ZLinkLocationActorEventKind.RowUpdated;
168
+ readonly key: ZLinkActorLocationKey;
169
+ readonly actor: ZLinkActorLocation;
170
+ }
171
+ | {
172
+ readonly event:
173
+ ZLinkLocationActorEventKind.RowRemoved | ZLinkLocationActorEventKind.ResolveMiss;
174
+ readonly key: ZLinkActorLocationKey;
175
+ }
176
+ );
177
+ export type ZLinkLocationRouteEvent = ZLinkRuntimeEvent &
178
+ (
179
+ | {
180
+ readonly event: ZLinkLocationRouteEventKind.RowUpdated;
181
+ readonly key: ZLinkRouteLocationKey;
182
+ readonly route: ZLinkRouteLocation;
183
+ }
184
+ | {
185
+ readonly event:
186
+ ZLinkLocationRouteEventKind.RowRemoved | ZLinkLocationRouteEventKind.ResolveMiss;
187
+ readonly key: ZLinkRouteLocationKey;
188
+ }
189
+ );
@@ -1,8 +1,4 @@
1
- import {
2
- SpanStatusCode,
3
- trace as openTelemetryTrace,
4
- type Attributes
5
- } from '@opentelemetry/api';
1
+ import { SpanStatusCode, trace as openTelemetryTrace, type Attributes } from '@opentelemetry/api';
6
2
  import { logs as openTelemetryLogs, SeverityNumber } from '@opentelemetry/api-logs';
7
3
  import {
8
4
  MESSAGE_FLOW_MODE_RANK,
@@ -45,8 +41,15 @@ interface ZLinkTelemetryRecord {
45
41
  readonly timestamp: Date;
46
42
  readonly phase?: string;
47
43
  readonly outcome: ZLinkRuntimeMessageFlowResult;
48
- readonly surface: 'node' | 'channel' | 'spot' | 'instance_spot' | 'actor' | 'stream'
49
- | 'actor_relocation' | 'classic_fanout';
44
+ readonly surface:
45
+ | 'node'
46
+ | 'channel'
47
+ | 'spot'
48
+ | 'instance_spot'
49
+ | 'actor'
50
+ | 'stream'
51
+ | 'actor_relocation'
52
+ | 'classic_fanout';
50
53
  readonly messageKind: 'request' | 'send' | 'response' | 'error' | 'control';
51
54
  readonly reason?: string;
52
55
  readonly action?: string;
@@ -102,10 +105,10 @@ function requiredMode(
102
105
  ): ZLinkMessageFlowLogMode {
103
106
  // succeeded가 아닌 terminal은 Errors level에서도 보여야 한다 — 기록 범위 설정
104
107
  // 절의 level 규칙.
105
- return outcome === ZLinkMessageFlowOutcome.Dropped
106
- || outcome === ZLinkMessageFlowOutcome.Backpressured
107
- || outcome === ZLinkMessageFlowOutcome.Error
108
- || (result !== undefined && result !== 'succeeded')
108
+ return outcome === ZLinkMessageFlowOutcome.Dropped ||
109
+ outcome === ZLinkMessageFlowOutcome.Backpressured ||
110
+ outcome === ZLinkMessageFlowOutcome.Error ||
111
+ (result !== undefined && result !== 'succeeded')
109
112
  ? 'errors'
110
113
  : 'normal';
111
114
  }
@@ -120,7 +123,9 @@ export function flowIfEnabled(
120
123
  if (flow === undefined) return undefined;
121
124
  return typeof flow.begin === 'function'
122
125
  ? flow.begin(outcome, result, flowId, sourceMeshGeneration)
123
- : flow.accepts(outcome) ? flow : undefined;
126
+ : flow.accepts(outcome)
127
+ ? flow
128
+ : undefined;
124
129
  }
125
130
 
126
131
  export interface ZLinkMessageFlowTracePoint {
@@ -174,17 +179,17 @@ export class ZLinkMessageFlowTracer {
174
179
  }
175
180
  switch (mode) {
176
181
  case 'errors':
177
- return this.errorsTracePoint ??= {
178
- trace: flowInput => this.traceAcceptedAtMode(flowInput, 'errors')
179
- };
182
+ return (this.errorsTracePoint ??= {
183
+ trace: (flowInput) => this.traceAcceptedAtMode(flowInput, 'errors')
184
+ });
180
185
  case 'normal':
181
- return this.normalTracePoint ??= {
182
- trace: flowInput => this.traceAcceptedAtMode(flowInput, 'normal')
183
- };
186
+ return (this.normalTracePoint ??= {
187
+ trace: (flowInput) => this.traceAcceptedAtMode(flowInput, 'normal')
188
+ });
184
189
  case 'detailed':
185
- return this.detailedTracePoint ??= {
186
- trace: flowInput => this.traceAcceptedAtMode(flowInput, 'detailed')
187
- };
190
+ return (this.detailedTracePoint ??= {
191
+ trace: (flowInput) => this.traceAcceptedAtMode(flowInput, 'detailed')
192
+ });
188
193
  case 'off':
189
194
  return undefined;
190
195
  }
@@ -197,17 +202,21 @@ export class ZLinkMessageFlowTracer {
197
202
  trace(flowInput: MessageFlowInput): void {
198
203
  const effectiveMode = effectiveMessageFlow(this.ctx);
199
204
  if (
200
- MESSAGE_FLOW_MODE_RANK[effectiveMode]
201
- < MESSAGE_FLOW_MODE_RANK[requiredMode(flowInput.outcome, flowInput.result)]
202
- ) return;
205
+ MESSAGE_FLOW_MODE_RANK[effectiveMode] <
206
+ MESSAGE_FLOW_MODE_RANK[requiredMode(flowInput.outcome, flowInput.result)]
207
+ )
208
+ return;
203
209
  const ambient = currentFlowContext();
204
210
  const flowId = flowInput.flowId ?? ambient?.flowId;
205
- if (!this.acceptsSample(
206
- flowInput.outcome,
207
- flowInput.result,
208
- flowId,
209
- flowInput.sourceMeshGeneration
210
- )) return;
211
+ if (
212
+ !this.acceptsSample(
213
+ flowInput.outcome,
214
+ flowInput.result,
215
+ flowId,
216
+ flowInput.sourceMeshGeneration
217
+ )
218
+ )
219
+ return;
211
220
  this.traceAcceptedAtMode(flowInput, effectiveMode, flowId, ambient?.flowOrigin);
212
221
  }
213
222
 
@@ -226,15 +235,17 @@ export class ZLinkMessageFlowTracer {
226
235
  effectiveMode
227
236
  };
228
237
  this.tracedEvents += 1;
229
- this.publish(toTelemetryRecord(
230
- flow,
231
- effectiveMode === 'detailed' && this.ctx.diagnostics.includeMessageSizes
232
- ? flow.messageSize
233
- : undefined,
234
- // Spec 26 §4: terminal elapsed time is a Detailed-level addition; the
235
- // other languages strip it below that level.
236
- effectiveMode === 'detailed' ? flow.durationSeconds : undefined
237
- ));
238
+ this.publish(
239
+ toTelemetryRecord(
240
+ flow,
241
+ effectiveMode === 'detailed' && this.ctx.diagnostics.includeMessageSizes
242
+ ? flow.messageSize
243
+ : undefined,
244
+ // Spec 26 §4: terminal elapsed time is a Detailed-level addition; the
245
+ // other languages strip it below that level.
246
+ effectiveMode === 'detailed' ? flow.durationSeconds : undefined
247
+ )
248
+ );
238
249
  }
239
250
 
240
251
  private acceptsSample(
@@ -243,11 +254,13 @@ export class ZLinkMessageFlowTracer {
243
254
  flowId: string | undefined,
244
255
  sourceMeshGeneration: bigint | string | undefined
245
256
  ): boolean {
246
- return outcome === ZLinkMessageFlowOutcome.Dropped
247
- || outcome === ZLinkMessageFlowOutcome.Backpressured
248
- || outcome === ZLinkMessageFlowOutcome.Error
249
- || (result !== undefined && result !== 'succeeded')
250
- || this.sample(flowId, sourceMeshGeneration);
257
+ return (
258
+ outcome === ZLinkMessageFlowOutcome.Dropped ||
259
+ outcome === ZLinkMessageFlowOutcome.Backpressured ||
260
+ outcome === ZLinkMessageFlowOutcome.Error ||
261
+ (result !== undefined && result !== 'succeeded') ||
262
+ this.sample(flowId, sourceMeshGeneration)
263
+ );
251
264
  }
252
265
 
253
266
  get tracedCount(): number {
@@ -258,12 +271,16 @@ export class ZLinkMessageFlowTracer {
258
271
  return this.providerFailures;
259
272
  }
260
273
 
261
- private sample(flowId: string | undefined, sourceMeshGeneration: bigint | string | undefined): boolean {
274
+ private sample(
275
+ flowId: string | undefined,
276
+ sourceMeshGeneration: bigint | string | undefined
277
+ ): boolean {
262
278
  const rate = this.ctx.diagnostics.sampleRate;
263
279
  if (rate >= 1.0) return true;
264
280
  if (rate <= 0.0) return false;
265
- const samplingKey = flowId
266
- ?? `${sourceMeshGeneration ?? this.ctx.sourceMeshGeneration}:${this.nextSamplingSequence()}`;
281
+ const samplingKey =
282
+ flowId ??
283
+ `${sourceMeshGeneration ?? this.ctx.sourceMeshGeneration}:${this.nextSamplingSequence()}`;
267
284
  return hashFlowId(samplingKey) / 0x1_0000_0000 < rate;
268
285
  }
269
286
 
@@ -279,9 +296,8 @@ export class ZLinkMessageFlowTracer {
279
296
 
280
297
  private publishToLogger(record: ZLinkTelemetryRecord): void {
281
298
  try {
282
- const severityNumber = record.eventId === 'zlink.dispatch_error'
283
- ? SeverityNumber.ERROR
284
- : SeverityNumber.INFO;
299
+ const severityNumber =
300
+ record.eventId === 'zlink.dispatch_error' ? SeverityNumber.ERROR : SeverityNumber.INFO;
285
301
  telemetryLogger.emit({
286
302
  eventName: record.eventId,
287
303
  timestamp: record.timestamp,
@@ -337,9 +353,10 @@ function toTelemetryRecord(
337
353
  durationSeconds: number | undefined
338
354
  ): ZLinkTelemetryRecord {
339
355
  return {
340
- eventId: flow.outcome === ZLinkMessageFlowOutcome.Error
341
- ? 'zlink.dispatch_error'
342
- : 'zlink.message_flow',
356
+ eventId:
357
+ flow.outcome === ZLinkMessageFlowOutcome.Error
358
+ ? 'zlink.dispatch_error'
359
+ : 'zlink.message_flow',
343
360
  timestamp: new Date(),
344
361
  phase: messageFlowPhase(flow.outcome),
345
362
  outcome: flow.result ?? messageFlowOutcome(flow.outcome),
@@ -357,9 +374,8 @@ function toTelemetryRecord(
357
374
  targetRid: flow.targetRid,
358
375
  serverRid: flow.serverRid,
359
376
  flowId: flow.flowId,
360
- flowOrigin: flow.flowOrigin === undefined
361
- ? undefined
362
- : FLOW_ORIGIN_TELEMETRY_VALUES[flow.flowOrigin],
377
+ flowOrigin:
378
+ flow.flowOrigin === undefined ? undefined : FLOW_ORIGIN_TELEMETRY_VALUES[flow.flowOrigin],
363
379
  spotId: flow.spotId,
364
380
  instanceSpotType: flow.instanceSpotType,
365
381
  activationState: flow.activationState,
@@ -455,7 +471,6 @@ function structuredLogBody(record: ZLinkTelemetryRecord): string {
455
471
  .join(' ')}`;
456
472
  }
457
473
 
458
-
459
474
  function compactAttributes(values: Record<string, string | number | undefined>): Attributes {
460
475
  const attributes: Attributes = {};
461
476
  for (const [key, value] of Object.entries(values)) {
@@ -466,31 +481,37 @@ function compactAttributes(values: Record<string, string | number | undefined>):
466
481
 
467
482
  function messageFlowPhase(outcome: ZLinkMessageFlowOutcome): string | undefined {
468
483
  switch (outcome) {
469
- case ZLinkMessageFlowOutcome.Received: return 'received';
470
- case ZLinkMessageFlowOutcome.Admitted: return 'admitted';
471
- case ZLinkMessageFlowOutcome.Dispatched: return 'dispatched';
472
- case ZLinkMessageFlowOutcome.Completed: return 'completed';
473
- case ZLinkMessageFlowOutcome.Replied: return 'replied';
474
- case ZLinkMessageFlowOutcome.Dropped: return 'dropped';
475
- case ZLinkMessageFlowOutcome.Sent: return 'sent';
476
- case ZLinkMessageFlowOutcome.ReplyReceived: return 'reply_received';
477
- case ZLinkMessageFlowOutcome.Backpressured: return 'backpressured';
478
- case ZLinkMessageFlowOutcome.Error: return undefined;
484
+ case ZLinkMessageFlowOutcome.Received:
485
+ return 'received';
486
+ case ZLinkMessageFlowOutcome.Admitted:
487
+ return 'admitted';
488
+ case ZLinkMessageFlowOutcome.Dispatched:
489
+ return 'dispatched';
490
+ case ZLinkMessageFlowOutcome.Completed:
491
+ return 'completed';
492
+ case ZLinkMessageFlowOutcome.Replied:
493
+ return 'replied';
494
+ case ZLinkMessageFlowOutcome.Dropped:
495
+ return 'dropped';
496
+ case ZLinkMessageFlowOutcome.Sent:
497
+ return 'sent';
498
+ case ZLinkMessageFlowOutcome.ReplyReceived:
499
+ return 'reply_received';
500
+ case ZLinkMessageFlowOutcome.Backpressured:
501
+ return 'backpressured';
502
+ case ZLinkMessageFlowOutcome.Error:
503
+ return undefined;
479
504
  }
480
505
  }
481
506
 
482
- function messageFlowOutcome(
483
- outcome: ZLinkMessageFlowOutcome
484
- ): ZLinkTelemetryRecord['outcome'] {
507
+ function messageFlowOutcome(outcome: ZLinkMessageFlowOutcome): ZLinkTelemetryRecord['outcome'] {
485
508
  if (outcome === ZLinkMessageFlowOutcome.Error) return 'failed';
486
509
  if (outcome === ZLinkMessageFlowOutcome.Backpressured) return 'backpressured';
487
510
  if (outcome === ZLinkMessageFlowOutcome.Dropped) return 'dropped';
488
511
  return 'succeeded';
489
512
  }
490
513
 
491
- function messageFlowSurface(
492
- surface: ZLinkDispatchErrorSurface
493
- ): ZLinkTelemetryRecord['surface'] {
514
+ function messageFlowSurface(surface: ZLinkDispatchErrorSurface): ZLinkTelemetryRecord['surface'] {
494
515
  switch (surface) {
495
516
  case ZLinkDispatchErrorSurface.Node:
496
517
  return 'node';
@@ -513,9 +534,7 @@ function messageFlowSurface(
513
534
  }
514
535
  }
515
536
 
516
- function messageFlowKind(
517
- kind: ZLinkDispatchMessageKind
518
- ): ZLinkTelemetryRecord['messageKind'] {
537
+ function messageFlowKind(kind: ZLinkDispatchMessageKind): ZLinkTelemetryRecord['messageKind'] {
519
538
  switch (kind) {
520
539
  case ZLinkDispatchMessageKind.Request:
521
540
  case ZLinkDispatchMessageKind.ActorRequest:
@@ -24,10 +24,7 @@ interface ZLinkObservableMeter extends ZLinkMeter {
24
24
  name: string,
25
25
  options?: { readonly unit?: string }
26
26
  ): ZLinkObservableGauge;
27
- createObservableGauge?(
28
- name: string,
29
- options?: { readonly unit?: string }
30
- ): ZLinkObservableGauge;
27
+ createObservableGauge?(name: string, options?: { readonly unit?: string }): ZLinkObservableGauge;
31
28
  }
32
29
 
33
30
  export interface ZLinkRuntimeMetricCapacity {
@@ -193,10 +190,12 @@ class MetricRegistry {
193
190
  }
194
191
 
195
192
  private observe(name: string, result: ZLinkObservableResult): void {
196
- if (name === 'zlink.host.application_job_queue.pressure_state'
197
- || name === 'zlink.host.application_job_queue.pressure_transitions'
198
- || name === 'zlink.host.application_job_queue.pause_duration'
199
- || name === 'zlink.host.application_job_queue.flow_state_config_failures') {
193
+ if (
194
+ name === 'zlink.host.application_job_queue.pressure_state' ||
195
+ name === 'zlink.host.application_job_queue.pressure_transitions' ||
196
+ name === 'zlink.host.application_job_queue.pause_duration' ||
197
+ name === 'zlink.host.application_job_queue.flow_state_config_failures'
198
+ ) {
200
199
  for (const provider of this.applicationJobQueuePressures) {
201
200
  try {
202
201
  this.observeApplicationJobQueuePressure(name, provider(), result);
@@ -206,8 +205,10 @@ class MetricRegistry {
206
205
  }
207
206
  return;
208
207
  }
209
- if (name.startsWith('zlink.host.core_hwm.')
210
- || name.startsWith('zlink.host.application_job_queue.')) {
208
+ if (
209
+ name.startsWith('zlink.host.core_hwm.') ||
210
+ name.startsWith('zlink.host.application_job_queue.')
211
+ ) {
211
212
  for (const provider of this.hostCapacities) {
212
213
  try {
213
214
  this.observeHostCapacity(name, provider(), result);
@@ -299,17 +300,29 @@ class MetricRegistry {
299
300
  ): void {
300
301
  const mesh = { mesh_name: snapshot.meshName };
301
302
  const peer = { ...mesh, source: snapshot.source };
302
- if (name === 'zlink.mesh_node.peers.configured') result.observe(nonNegative(snapshot.configuredPeers), peer);
303
- else if (name === 'zlink.mesh_node.peers.connected') result.observe(nonNegative(snapshot.connectedPeers), peer);
304
- else if (name === 'zlink.mesh_node.peers.ready') result.observe(nonNegative(snapshot.readyPeers), peer);
303
+ if (name === 'zlink.mesh_node.peers.configured')
304
+ result.observe(nonNegative(snapshot.configuredPeers), peer);
305
+ else if (name === 'zlink.mesh_node.peers.connected')
306
+ result.observe(nonNegative(snapshot.connectedPeers), peer);
307
+ else if (name === 'zlink.mesh_node.peers.ready')
308
+ result.observe(nonNegative(snapshot.readyPeers), peer);
305
309
  else if (name === 'zlink.mesh_node.channels.ready_members') {
306
310
  for (const channel of snapshot.channels) {
307
- result.observe(nonNegative(channel.readyMembers), { ...mesh, channel_name: channel.channelName });
311
+ result.observe(nonNegative(channel.readyMembers), {
312
+ ...mesh,
313
+ channel_name: channel.channelName
314
+ });
308
315
  }
309
316
  } else if (name.startsWith('zlink.object.capacity.')) {
310
317
  const field = metricSuffix(name);
311
- result.observe(capacityValue(snapshot.actorCapacity, field), { ...mesh, capacity_scope: 'actor' });
312
- result.observe(capacityValue(snapshot.spotCapacity, field), { ...mesh, capacity_scope: 'spot' });
318
+ result.observe(capacityValue(snapshot.actorCapacity, field), {
319
+ ...mesh,
320
+ capacity_scope: 'actor'
321
+ });
322
+ result.observe(capacityValue(snapshot.spotCapacity, field), {
323
+ ...mesh,
324
+ capacity_scope: 'spot'
325
+ });
313
326
  } else if (name.startsWith('zlink.spot.type.capacity.')) {
314
327
  const field = metricSuffix(name);
315
328
  for (const capacity of snapshot.spotTypeCapacities) {
@@ -350,7 +363,9 @@ export class ZLinkRuntimeMetrics {
350
363
  const owner = (provider ?? openTelemetryMetrics) as object;
351
364
  let registry = registries.get(owner);
352
365
  if (registry === undefined) {
353
- const meter = (provider ?? openTelemetryMetrics).getMeter(ZLinkMeters.Framework) as ZLinkObservableMeter;
366
+ const meter = (provider ?? openTelemetryMetrics).getMeter(
367
+ ZLinkMeters.Framework
368
+ ) as ZLinkObservableMeter;
354
369
  registry = new MetricRegistry(meter);
355
370
  registries.set(owner, registry);
356
371
  }
@@ -365,7 +380,11 @@ export class ZLinkRuntimeMetrics {
365
380
  safe(() => this.registry.upDown.get(name)?.add(value, attributes));
366
381
  }
367
382
 
368
- duration(name: HistogramName | string, seconds: number, attributes?: ZLinkMetricAttributes): void {
383
+ duration(
384
+ name: HistogramName | string,
385
+ seconds: number,
386
+ attributes?: ZLinkMetricAttributes
387
+ ): void {
369
388
  this.histogram(name, Math.max(0, seconds), 's', attributes);
370
389
  }
371
390
 
@@ -390,9 +409,7 @@ export class ZLinkRuntimeMetrics {
390
409
  return registration(() => this.registry.hostStates.delete(provider));
391
410
  }
392
411
 
393
- registerHostCapacity(
394
- provider: () => ZLinkHostCapacityStatus
395
- ): ZLinkRuntimeMetricRegistration {
412
+ registerHostCapacity(provider: () => ZLinkHostCapacityStatus): ZLinkRuntimeMetricRegistration {
396
413
  this.registry.hostCapacities.add(provider);
397
414
  return registration(() => this.registry.hostCapacities.delete(provider));
398
415
  }
@@ -404,8 +421,10 @@ export class ZLinkRuntimeMetrics {
404
421
  return registration(() => this.registry.applicationJobQueuePressures.delete(provider));
405
422
  }
406
423
 
407
- startRequest(meshName: string, surface: 'node' | 'channel' | 'spot' | 'instance_spot' | 'actor'):
408
- ZLinkRequestMetricOperation {
424
+ startRequest(
425
+ meshName: string,
426
+ surface: 'node' | 'channel' | 'spot' | 'instance_spot' | 'actor'
427
+ ): ZLinkRequestMetricOperation {
409
428
  return new ZLinkRequestMetricOperation(this, meshName, surface);
410
429
  }
411
430
 
@@ -453,7 +472,10 @@ export class ZLinkRuntimeMetrics {
453
472
  });
454
473
  }
455
474
 
456
- startInstanceSpotActivation(meshName: string, instanceSpotType: string): ZLinkRuntimeMetricOperation {
475
+ startInstanceSpotActivation(
476
+ meshName: string,
477
+ instanceSpotType: string
478
+ ): ZLinkRuntimeMetricOperation {
457
479
  const started = process.hrtime.bigint();
458
480
  let completed = false;
459
481
  return {
@@ -1,7 +1,4 @@
1
- import type {
2
- ZLinkObservationLoss,
3
- ZLinkObservedStatus
4
- } from '../../contracts';
1
+ import type { ZLinkObservationLoss, ZLinkObservedStatus } from '../../contracts';
5
2
 
6
3
  export const ZLINK_DEFAULT_TERMINAL_OBSERVATION_CAPACITY = 64;
7
4
  export const ZLINK_SIGNED_OBSERVATION_LOSS_MAXIMUM = 9_223_372_036_854_775_807n;
@@ -55,9 +52,7 @@ class RuntimeObservationLossState {
55
52
  }
56
53
 
57
54
  recordDiscardedTerminal(): void {
58
- this.discardedTerminal = saturatingObservationLossIncrement(
59
- this.discardedTerminal
60
- );
55
+ this.discardedTerminal = saturatingObservationLossIncrement(this.discardedTerminal);
61
56
  }
62
57
 
63
58
  snapshot(): ZLinkObservationLoss {
@@ -74,8 +69,11 @@ class RuntimeObservationLossState {
74
69
  * dispatcher; they never invoke an iterator continuation directly.
75
70
  */
76
71
  export class RuntimeEventQueue<T>
77
- implements AsyncIterable<ZLinkObservedStatus<T>>, AsyncIterator<ZLinkObservedStatus<T>>,
78
- RuntimeObservationDispatchTarget {
72
+ implements
73
+ AsyncIterable<ZLinkObservedStatus<T>>,
74
+ AsyncIterator<ZLinkObservedStatus<T>>,
75
+ RuntimeObservationDispatchTarget
76
+ {
79
77
  private readonly intermediateBySource = new Map<unknown, RetainedObservation<T>>();
80
78
  private readonly terminalFifo: Array<RetainedObservation<T> | undefined> = [];
81
79
  private readonly terminalCountBySource = new Map<unknown, number>();
@@ -108,7 +106,9 @@ export class RuntimeEventQueue<T>
108
106
  }
109
107
  }
110
108
 
111
- [Symbol.asyncIterator](): AsyncIterator<ZLinkObservedStatus<T>> { return this; }
109
+ [Symbol.asyncIterator](): AsyncIterator<ZLinkObservedStatus<T>> {
110
+ return this;
111
+ }
112
112
 
113
113
  next(): Promise<IteratorResult<ZLinkObservedStatus<T>>> {
114
114
  if (this.waitersCount === 0) {
@@ -126,7 +126,7 @@ export class RuntimeEventQueue<T>
126
126
  return Promise.resolve({ done: true, value: undefined });
127
127
  }
128
128
  }
129
- return new Promise(resolve => {
129
+ return new Promise((resolve) => {
130
130
  this.waiters.push(resolve);
131
131
  this.waitersCount += 1;
132
132
  if (this.hasRetained() || this.closed || this.completeWhenDrained) {
@@ -217,10 +217,7 @@ export class RuntimeEventQueue<T>
217
217
  }
218
218
  this.terminalFifo.push(this.retain(value, source));
219
219
  this.terminalCount += 1;
220
- this.terminalCountBySource.set(
221
- source,
222
- (this.terminalCountBySource.get(source) ?? 0) + 1
223
- );
220
+ this.terminalCountBySource.set(source, (this.terminalCountBySource.get(source) ?? 0) + 1);
224
221
  this.signalDispatcher();
225
222
  }
226
223
 
@@ -236,9 +233,8 @@ export class RuntimeEventQueue<T>
236
233
  const terminal = this.peekTerminal();
237
234
  const intermediate = this.oldestIntermediate();
238
235
  if (
239
- terminal !== undefined
240
- && (intermediate === undefined
241
- || terminal.publishOrdinal <= intermediate.publishOrdinal)
236
+ terminal !== undefined &&
237
+ (intermediate === undefined || terminal.publishOrdinal <= intermediate.publishOrdinal)
242
238
  ) {
243
239
  return this.takeTerminal();
244
240
  }
@@ -248,9 +244,7 @@ export class RuntimeEventQueue<T>
248
244
  }
249
245
 
250
246
  private peekTerminal(): RetainedObservation<T> | undefined {
251
- return this.terminalCount === 0
252
- ? undefined
253
- : this.terminalFifo[this.terminalHead];
247
+ return this.terminalCount === 0 ? undefined : this.terminalFifo[this.terminalHead];
254
248
  }
255
249
 
256
250
  private oldestIntermediate(): RetainedObservation<T> | undefined {
@@ -297,10 +291,7 @@ export class RuntimeEventQueue<T>
297
291
  if (this.terminalCount === 0) {
298
292
  this.terminalFifo.length = 0;
299
293
  this.terminalHead = 0;
300
- } else if (
301
- this.terminalHead >= 1024
302
- && this.terminalHead * 2 >= this.terminalFifo.length
303
- ) {
294
+ } else if (this.terminalHead >= 1024 && this.terminalHead * 2 >= this.terminalFifo.length) {
304
295
  this.terminalFifo.splice(0, this.terminalHead);
305
296
  this.terminalHead = 0;
306
297
  }
@@ -333,9 +324,7 @@ export class RuntimeEventQueue<T>
333
324
  return { status, loss: this.loss.snapshot() };
334
325
  }
335
326
 
336
- private takeWaiter():
337
- | ((result: IteratorResult<ZLinkObservedStatus<T>>) => void)
338
- | undefined {
327
+ private takeWaiter(): ((result: IteratorResult<ZLinkObservedStatus<T>>) => void) | undefined {
339
328
  if (this.waitersCount === 0) return undefined;
340
329
  const waiter = this.waiters[this.waitersHead];
341
330
  this.waiters[this.waitersHead] = undefined;