@zlink-systems/framework 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
  13. package/dist/contracts/Handlers/JsonContract.js +23 -11
  14. package/dist/contracts/Spots/SpotKind.js +16 -8
  15. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
  16. package/dist/location-store-integration.js +16 -16
  17. package/dist/nest-integration.js +17 -11
  18. package/dist/runtime/abort.js +9 -5
  19. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  20. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  21. package/dist/runtime/actors/actor-client.js +83 -63
  22. package/dist/runtime/actors/actor-context.js +28 -22
  23. package/dist/runtime/actors/actor-creation.js +4 -3
  24. package/dist/runtime/actors/actor-handoff.js +89 -92
  25. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
  26. package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
  27. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  28. package/dist/runtime/actors/actor-mailbox.js +1 -1
  29. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  30. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  31. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  32. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  33. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  34. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  35. package/dist/runtime/actors/bound-session-wire.js +14 -9
  36. package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
  37. package/dist/runtime/actors/index.js +2 -5
  38. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  39. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  40. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  41. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  42. package/dist/runtime/admission.js +2 -6
  43. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  44. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  45. package/dist/runtime/backend/contracts/index.d.ts +1 -0
  46. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  47. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  48. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  49. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  50. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  51. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  52. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
  53. package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
  54. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  55. package/dist/runtime/backend/runtime-message.js +3 -3
  56. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  57. package/dist/runtime/backend/runtime-values.js +4 -5
  58. package/dist/runtime/channels/channel-clients.js +27 -24
  59. package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
  60. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  61. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  62. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  63. package/dist/runtime/channels/channel-envelope.js +83 -47
  64. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  65. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  66. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  67. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  68. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  69. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  70. package/dist/runtime/channels/channel-transports.js +46 -42
  71. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  72. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  73. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
  74. package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
  75. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  76. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  77. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  78. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  79. package/dist/runtime/channels/source-spot-router.js +6 -2
  80. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  81. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  82. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  83. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
  84. package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
  85. package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
  86. package/dist/runtime/diagnostics/flow-context.js +2 -2
  87. package/dist/runtime/diagnostics/index.js +38 -10
  88. package/dist/runtime/diagnostics/message-flow.js +58 -42
  89. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  90. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  91. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  92. package/dist/runtime/execution/index.js +7 -6
  93. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  94. package/dist/runtime/execution/state-lane.js +2 -2
  95. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
  96. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  97. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  98. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
  99. package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
  100. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  101. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  102. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  103. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  104. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  105. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  106. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  107. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  108. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  109. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  110. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  111. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
  112. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  113. package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
  114. package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
  115. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  116. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
  117. package/dist/runtime/foundation/service-topology-registry.js +105 -96
  118. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  119. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  120. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  121. package/dist/runtime/framework-errors-internal.js +7 -10
  122. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  123. package/dist/runtime/handlers/index.js +3 -1
  124. package/dist/runtime/host/actor-packet-relay.js +74 -70
  125. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  126. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  127. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  128. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  129. package/dist/runtime/host/application-job-queue.js +18 -22
  130. package/dist/runtime/host/bound-session-relay.js +3 -1
  131. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  132. package/dist/runtime/host/host-capacity-status.js +8 -4
  133. package/dist/runtime/host/index.js +245 -228
  134. package/dist/runtime/host/instance-activation-authority.js +93 -96
  135. package/dist/runtime/host/location-runtime-owner.js +16 -14
  136. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  137. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  138. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  139. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  140. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  141. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  142. package/dist/runtime/host/runtime-shutdown.js +1 -2
  143. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  144. package/dist/runtime/host/spot-address-transport.js +69 -71
  145. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  146. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  147. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  148. package/dist/runtime/locations/actor-location-claims.js +26 -20
  149. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  150. package/dist/runtime/locations/authority-key-codec.js +7 -7
  151. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  152. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  153. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  154. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  155. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  156. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  157. package/dist/runtime/locations/key-codec.js +1 -1
  158. package/dist/runtime/locations/lease-tracker.js +23 -21
  159. package/dist/runtime/locations/lifecycle.js +4 -5
  160. package/dist/runtime/locations/location-store-repository.js +368 -324
  161. package/dist/runtime/locations/opaque-record-key.js +2 -2
  162. package/dist/runtime/locations/resolvers.js +73 -82
  163. package/dist/runtime/locations/runtime.js +68 -63
  164. package/dist/runtime/locations/spot-location-claims.js +39 -35
  165. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  166. package/dist/runtime/messaging/packet-name.js +7 -6
  167. package/dist/runtime/messaging/payload-codec.js +21 -18
  168. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  169. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  170. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
  171. package/dist/runtime/routing-id.js +3 -5
  172. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  173. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  174. package/dist/runtime/spots/index.js +209 -220
  175. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  176. package/dist/runtime/spots/spot-activation-state.js +17 -15
  177. package/dist/runtime/spots/spot-activation.js +33 -16
  178. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  179. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  180. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
  181. package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
  182. package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
  183. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  184. package/dist/runtime/spots/spot-closing.js +3 -7
  185. package/dist/runtime/spots/spot-context.js +2 -2
  186. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  187. package/dist/runtime/spots/spot-handle.js +6 -3
  188. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  189. package/dist/runtime/spots/spot-manager-public.js +5 -6
  190. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  191. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  192. package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
  193. package/dist/runtime/spots/spot-outbound.js +10 -14
  194. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  195. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  196. package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
  197. package/dist/runtime/spots/spot-route-replies.js +4 -6
  198. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  199. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
  200. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  201. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  202. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  203. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  204. package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
  205. package/dist/runtime/spots/spot-timer.js +26 -30
  206. package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
  207. package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
  208. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
  209. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  210. package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
  211. package/dist/runtime/streams/bound-session-response-target.js +8 -1
  212. package/dist/runtime/streams/bound-session-service.d.ts +1 -0
  213. package/dist/runtime/streams/bound-session-service.js +14 -12
  214. package/dist/runtime/streams/index.js +28 -20
  215. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  216. package/dist/runtime/streams/managed-stream.js +52 -31
  217. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  218. package/dist/runtime/streams/protocol.d.ts +5 -1
  219. package/dist/runtime/streams/protocol.js +68 -20
  220. package/dist/runtime/streams/session-actor-coordinator.js +37 -41
  221. package/dist/runtime/streams/session-context.d.ts +9 -2
  222. package/dist/runtime/streams/session-context.js +50 -32
  223. package/dist/runtime/streams/session-local-actors.d.ts +3 -1
  224. package/dist/runtime/streams/session-local-actors.js +17 -2
  225. package/dist/runtime/streams/session-provider.js +2 -2
  226. package/dist/runtime/streams/session-serial-executor.js +1 -2
  227. package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
  228. package/dist/runtime/streams/stream-frame-factory.js +14 -7
  229. package/dist/runtime/streams/stream-session-runtime.js +112 -78
  230. package/dist/runtime/workers/index.js +15 -4
  231. package/package.json +3 -3
  232. package/src/contracts/Channels/RouteCalls.ts +6 -1
  233. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  234. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  235. package/src/contracts/Configuration/Builders.ts +14 -14
  236. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  237. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  238. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  239. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  240. package/src/contracts/Configuration/Registration.ts +46 -17
  241. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  242. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  243. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  244. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  245. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  246. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  247. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  248. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  249. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  250. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  251. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
  252. package/src/contracts/Errors/index.ts +1 -4
  253. package/src/contracts/Handlers/Attributes.ts +15 -9
  254. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  255. package/src/contracts/Handlers/JsonContract.ts +53 -19
  256. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  257. package/src/contracts/Locations/Authority.ts +4 -11
  258. package/src/contracts/Locations/Keys.ts +6 -1
  259. package/src/contracts/Locations/Options.ts +3 -2
  260. package/src/contracts/Locations/RelocationStore.ts +1 -4
  261. package/src/contracts/Locations/Resolvers.ts +5 -5
  262. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  263. package/src/contracts/Locations/Stores.ts +1 -2
  264. package/src/contracts/Locations/index.ts +2 -8
  265. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  266. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  267. package/src/contracts/Spots/Contracts.ts +2 -8
  268. package/src/contracts/Spots/SpotKind.ts +16 -8
  269. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  270. package/src/contracts/Streams/IZLinkSession.ts +2 -2
  271. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  272. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  273. package/src/internal.ts +5 -4
  274. package/src/location-store-integration.ts +24 -16
  275. package/src/nest-integration.ts +40 -25
  276. package/src/runtime/abort.ts +10 -4
  277. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  278. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  279. package/src/runtime/actors/actor-client.ts +162 -133
  280. package/src/runtime/actors/actor-context.ts +142 -134
  281. package/src/runtime/actors/actor-creation.ts +47 -44
  282. package/src/runtime/actors/actor-execution-context.ts +6 -4
  283. package/src/runtime/actors/actor-handoff.ts +269 -293
  284. package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
  285. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  286. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  287. package/src/runtime/actors/actor-mailbox.ts +16 -19
  288. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  289. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  290. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  291. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  292. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  293. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  294. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  295. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  296. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  297. package/src/runtime/actors/bound-session-wire.ts +37 -17
  298. package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
  299. package/src/runtime/actors/index.ts +43 -86
  300. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  301. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  302. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  303. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  304. package/src/runtime/admission.ts +9 -9
  305. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  306. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  307. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  308. package/src/runtime/backend/contracts/index.ts +77 -52
  309. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  310. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  311. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  312. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  313. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  314. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  315. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  316. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  317. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  318. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  319. package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
  320. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  321. package/src/runtime/backend/runtime-message.ts +5 -3
  322. package/src/runtime/backend/runtime-values.ts +10 -7
  323. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  324. package/src/runtime/channels/channel-clients.ts +93 -73
  325. package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
  326. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  327. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  328. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  329. package/src/runtime/channels/channel-envelope.ts +256 -150
  330. package/src/runtime/channels/channel-multipart.ts +13 -5
  331. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  332. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  333. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  334. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  335. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  336. package/src/runtime/channels/channel-socket-options.ts +3 -10
  337. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  338. package/src/runtime/channels/channel-transports.ts +218 -206
  339. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  340. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  341. package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
  342. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  343. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  344. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  345. package/src/runtime/channels/index.ts +1 -4
  346. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  347. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  348. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  349. package/src/runtime/channels/source-spot-router.ts +26 -22
  350. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  351. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  352. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  353. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  354. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  355. package/src/runtime/codecs/index.ts +3 -2
  356. package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
  357. package/src/runtime/diagnostics/flow-context.ts +18 -7
  358. package/src/runtime/diagnostics/index.ts +96 -61
  359. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  360. package/src/runtime/diagnostics/message-flow.ts +107 -79
  361. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  362. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  363. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  364. package/src/runtime/execution/index.ts +18 -26
  365. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  366. package/src/runtime/execution/state-lane.ts +2 -2
  367. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
  368. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  369. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  370. package/src/runtime/foundation/operation-identity.ts +1 -2
  371. package/src/runtime/foundation/operation-registry.ts +8 -2
  372. package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
  373. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  374. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  375. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  376. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  377. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  378. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  379. package/src/runtime/foundation/service-mailbox.ts +14 -14
  380. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  381. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  382. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  383. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  384. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  385. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  386. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  387. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
  388. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  389. package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
  390. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  391. package/src/runtime/foundation/service-topology-registry.ts +170 -159
  392. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  393. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  394. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  395. package/src/runtime/framework-errors-internal.ts +31 -30
  396. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  397. package/src/runtime/handlers/index.ts +18 -8
  398. package/src/runtime/host/actor-packet-relay.ts +290 -261
  399. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  400. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  401. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  402. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  403. package/src/runtime/host/application-job-queue.ts +32 -48
  404. package/src/runtime/host/bound-session-relay.ts +7 -9
  405. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  406. package/src/runtime/host/host-capacity-status.ts +10 -9
  407. package/src/runtime/host/index.ts +861 -789
  408. package/src/runtime/host/instance-activation-authority.ts +125 -143
  409. package/src/runtime/host/location-runtime-owner.ts +38 -26
  410. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  411. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  412. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  413. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  414. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  415. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  416. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  417. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  418. package/src/runtime/host/runtime-shutdown.ts +4 -3
  419. package/src/runtime/host/service-relocation-control.ts +14 -5
  420. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  421. package/src/runtime/host/spot-address-transport.ts +284 -237
  422. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  423. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  424. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  425. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  426. package/src/runtime/locations/actor-location-claims.ts +61 -49
  427. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  428. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  429. package/src/runtime/locations/authority-key-codec.ts +13 -10
  430. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  431. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  432. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  433. package/src/runtime/locations/canonical-codec.ts +3 -1
  434. package/src/runtime/locations/creation-operation-id.ts +4 -3
  435. package/src/runtime/locations/domain-store-contract.ts +13 -7
  436. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  437. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  438. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  439. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  440. package/src/runtime/locations/key-codec.ts +3 -4
  441. package/src/runtime/locations/lease-tracker.ts +36 -27
  442. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  443. package/src/runtime/locations/lifecycle.ts +33 -28
  444. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  445. package/src/runtime/locations/opaque-record-key.ts +4 -9
  446. package/src/runtime/locations/resolvers.ts +201 -178
  447. package/src/runtime/locations/runtime.ts +251 -159
  448. package/src/runtime/locations/spot-location-claims.ts +110 -112
  449. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  450. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  451. package/src/runtime/messaging/packet-name.ts +8 -6
  452. package/src/runtime/messaging/payload-codec.ts +70 -50
  453. package/src/runtime/messaging/submission-result.ts +6 -9
  454. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  455. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
  456. package/src/runtime/routing-id.ts +10 -7
  457. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  458. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  459. package/src/runtime/spots/index.ts +595 -564
  460. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  461. package/src/runtime/spots/spot-activation-state.ts +43 -51
  462. package/src/runtime/spots/spot-activation.ts +179 -116
  463. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  464. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  465. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  466. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  467. package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
  468. package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
  469. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  470. package/src/runtime/spots/spot-closing.ts +11 -12
  471. package/src/runtime/spots/spot-context.ts +46 -26
  472. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  473. package/src/runtime/spots/spot-handle.ts +17 -15
  474. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  475. package/src/runtime/spots/spot-location-claim.ts +5 -4
  476. package/src/runtime/spots/spot-manager-public.ts +62 -82
  477. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  478. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  479. package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
  480. package/src/runtime/spots/spot-outbound.ts +47 -59
  481. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  482. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  483. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  484. package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
  485. package/src/runtime/spots/spot-route-replies.ts +23 -24
  486. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  487. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  488. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
  489. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  490. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  491. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  492. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  493. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  494. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  495. package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
  496. package/src/runtime/spots/spot-timer.ts +103 -91
  497. package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
  498. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
  499. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  500. package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
  501. package/src/runtime/streams/bound-session-response-target.ts +39 -9
  502. package/src/runtime/streams/bound-session-service.ts +52 -42
  503. package/src/runtime/streams/index.ts +183 -100
  504. package/src/runtime/streams/managed-stream.ts +123 -90
  505. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  506. package/src/runtime/streams/protocol.ts +115 -46
  507. package/src/runtime/streams/session-actor-coordinator.ts +109 -93
  508. package/src/runtime/streams/session-calls.ts +2 -8
  509. package/src/runtime/streams/session-context.ts +96 -51
  510. package/src/runtime/streams/session-local-actors.ts +19 -3
  511. package/src/runtime/streams/session-provider.ts +5 -7
  512. package/src/runtime/streams/session-serial-executor.ts +7 -6
  513. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  514. package/src/runtime/streams/stream-frame-factory.ts +59 -40
  515. package/src/runtime/streams/stream-session-runtime.ts +317 -214
  516. package/src/runtime/workers/index.ts +68 -29
@@ -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,
@@ -38,6 +34,7 @@ export const DEFAULT_ZLINK_DIAGNOSTICS: ZLinkDiagnosticsOptions = {
38
34
 
39
35
  const telemetryLogger = openTelemetryLogs.getLogger('@zlink-systems/framework');
40
36
  const telemetryTracer = openTelemetryTrace.getTracer('@zlink-systems/framework');
37
+ const ERROR_MESSAGE_MAX_LENGTH = 512;
41
38
  let diagnosticsGeneration = 0n;
42
39
 
43
40
  interface ZLinkTelemetryRecord {
@@ -45,8 +42,15 @@ interface ZLinkTelemetryRecord {
45
42
  readonly timestamp: Date;
46
43
  readonly phase?: string;
47
44
  readonly outcome: ZLinkRuntimeMessageFlowResult;
48
- readonly surface: 'node' | 'channel' | 'spot' | 'instance_spot' | 'actor' | 'stream'
49
- | 'actor_relocation' | 'classic_fanout';
45
+ readonly surface:
46
+ | 'node'
47
+ | 'channel'
48
+ | 'spot'
49
+ | 'instance_spot'
50
+ | 'actor'
51
+ | 'stream'
52
+ | 'actor_relocation'
53
+ | 'classic_fanout';
50
54
  readonly messageKind: 'request' | 'send' | 'response' | 'error' | 'control';
51
55
  readonly reason?: string;
52
56
  readonly action?: string;
@@ -65,6 +69,7 @@ interface ZLinkTelemetryRecord {
65
69
  readonly instanceSpotType?: string;
66
70
  readonly activationState?: string;
67
71
  readonly actorId?: string;
72
+ readonly streamSessionId?: string;
68
73
  readonly commandId?: number;
69
74
  readonly messageSizeBytes?: number;
70
75
  readonly durationSeconds?: number;
@@ -102,10 +107,10 @@ function requiredMode(
102
107
  ): ZLinkMessageFlowLogMode {
103
108
  // succeeded가 아닌 terminal은 Errors level에서도 보여야 한다 — 기록 범위 설정
104
109
  // 절의 level 규칙.
105
- return outcome === ZLinkMessageFlowOutcome.Dropped
106
- || outcome === ZLinkMessageFlowOutcome.Backpressured
107
- || outcome === ZLinkMessageFlowOutcome.Error
108
- || (result !== undefined && result !== 'succeeded')
110
+ return outcome === ZLinkMessageFlowOutcome.Dropped ||
111
+ outcome === ZLinkMessageFlowOutcome.Backpressured ||
112
+ outcome === ZLinkMessageFlowOutcome.Error ||
113
+ (result !== undefined && result !== 'succeeded')
109
114
  ? 'errors'
110
115
  : 'normal';
111
116
  }
@@ -120,7 +125,9 @@ export function flowIfEnabled(
120
125
  if (flow === undefined) return undefined;
121
126
  return typeof flow.begin === 'function'
122
127
  ? flow.begin(outcome, result, flowId, sourceMeshGeneration)
123
- : flow.accepts(outcome) ? flow : undefined;
128
+ : flow.accepts(outcome)
129
+ ? flow
130
+ : undefined;
124
131
  }
125
132
 
126
133
  export interface ZLinkMessageFlowTracePoint {
@@ -174,17 +181,17 @@ export class ZLinkMessageFlowTracer {
174
181
  }
175
182
  switch (mode) {
176
183
  case 'errors':
177
- return this.errorsTracePoint ??= {
178
- trace: flowInput => this.traceAcceptedAtMode(flowInput, 'errors')
179
- };
184
+ return (this.errorsTracePoint ??= {
185
+ trace: (flowInput) => this.traceAcceptedAtMode(flowInput, 'errors')
186
+ });
180
187
  case 'normal':
181
- return this.normalTracePoint ??= {
182
- trace: flowInput => this.traceAcceptedAtMode(flowInput, 'normal')
183
- };
188
+ return (this.normalTracePoint ??= {
189
+ trace: (flowInput) => this.traceAcceptedAtMode(flowInput, 'normal')
190
+ });
184
191
  case 'detailed':
185
- return this.detailedTracePoint ??= {
186
- trace: flowInput => this.traceAcceptedAtMode(flowInput, 'detailed')
187
- };
192
+ return (this.detailedTracePoint ??= {
193
+ trace: (flowInput) => this.traceAcceptedAtMode(flowInput, 'detailed')
194
+ });
188
195
  case 'off':
189
196
  return undefined;
190
197
  }
@@ -197,17 +204,21 @@ export class ZLinkMessageFlowTracer {
197
204
  trace(flowInput: MessageFlowInput): void {
198
205
  const effectiveMode = effectiveMessageFlow(this.ctx);
199
206
  if (
200
- MESSAGE_FLOW_MODE_RANK[effectiveMode]
201
- < MESSAGE_FLOW_MODE_RANK[requiredMode(flowInput.outcome, flowInput.result)]
202
- ) return;
207
+ MESSAGE_FLOW_MODE_RANK[effectiveMode] <
208
+ MESSAGE_FLOW_MODE_RANK[requiredMode(flowInput.outcome, flowInput.result)]
209
+ )
210
+ return;
203
211
  const ambient = currentFlowContext();
204
212
  const flowId = flowInput.flowId ?? ambient?.flowId;
205
- if (!this.acceptsSample(
206
- flowInput.outcome,
207
- flowInput.result,
208
- flowId,
209
- flowInput.sourceMeshGeneration
210
- )) return;
213
+ if (
214
+ !this.acceptsSample(
215
+ flowInput.outcome,
216
+ flowInput.result,
217
+ flowId,
218
+ flowInput.sourceMeshGeneration
219
+ )
220
+ )
221
+ return;
211
222
  this.traceAcceptedAtMode(flowInput, effectiveMode, flowId, ambient?.flowOrigin);
212
223
  }
213
224
 
@@ -217,24 +228,27 @@ export class ZLinkMessageFlowTracer {
217
228
  acceptedFlowId?: string,
218
229
  acceptedFlowOrigin?: ZLinkFlowOrigin
219
230
  ): void {
220
- const ambient = acceptedFlowId === undefined ? currentFlowContext() : undefined;
231
+ const ambient = currentFlowContext();
221
232
  const flowId = flowInput.flowId ?? acceptedFlowId ?? ambient?.flowId;
222
233
  const flowOrigin = flowInput.flowOrigin ?? acceptedFlowOrigin ?? ambient?.flowOrigin;
223
234
  const flow: ZLinkRuntimeMessageFlowEvent = {
224
235
  ...flowInput,
225
236
  ...(flowId === undefined ? {} : { flowId, flowOrigin }),
237
+ streamSessionId: flowInput.streamSessionId ?? ambient?.streamSessionId,
226
238
  effectiveMode
227
239
  };
228
240
  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
- ));
241
+ this.publish(
242
+ toTelemetryRecord(
243
+ flow,
244
+ effectiveMode === 'detailed' && this.ctx.diagnostics.includeMessageSizes
245
+ ? flow.messageSize
246
+ : undefined,
247
+ // Spec 26 §4: terminal elapsed time is a Detailed-level addition; the
248
+ // other languages strip it below that level.
249
+ effectiveMode === 'detailed' ? flow.durationSeconds : undefined
250
+ )
251
+ );
238
252
  }
239
253
 
240
254
  private acceptsSample(
@@ -243,11 +257,13 @@ export class ZLinkMessageFlowTracer {
243
257
  flowId: string | undefined,
244
258
  sourceMeshGeneration: bigint | string | undefined
245
259
  ): boolean {
246
- return outcome === ZLinkMessageFlowOutcome.Dropped
247
- || outcome === ZLinkMessageFlowOutcome.Backpressured
248
- || outcome === ZLinkMessageFlowOutcome.Error
249
- || (result !== undefined && result !== 'succeeded')
250
- || this.sample(flowId, sourceMeshGeneration);
260
+ return (
261
+ outcome === ZLinkMessageFlowOutcome.Dropped ||
262
+ outcome === ZLinkMessageFlowOutcome.Backpressured ||
263
+ outcome === ZLinkMessageFlowOutcome.Error ||
264
+ (result !== undefined && result !== 'succeeded') ||
265
+ this.sample(flowId, sourceMeshGeneration)
266
+ );
251
267
  }
252
268
 
253
269
  get tracedCount(): number {
@@ -258,12 +274,16 @@ export class ZLinkMessageFlowTracer {
258
274
  return this.providerFailures;
259
275
  }
260
276
 
261
- private sample(flowId: string | undefined, sourceMeshGeneration: bigint | string | undefined): boolean {
277
+ private sample(
278
+ flowId: string | undefined,
279
+ sourceMeshGeneration: bigint | string | undefined
280
+ ): boolean {
262
281
  const rate = this.ctx.diagnostics.sampleRate;
263
282
  if (rate >= 1.0) return true;
264
283
  if (rate <= 0.0) return false;
265
- const samplingKey = flowId
266
- ?? `${sourceMeshGeneration ?? this.ctx.sourceMeshGeneration}:${this.nextSamplingSequence()}`;
284
+ const samplingKey =
285
+ flowId ??
286
+ `${sourceMeshGeneration ?? this.ctx.sourceMeshGeneration}:${this.nextSamplingSequence()}`;
267
287
  return hashFlowId(samplingKey) / 0x1_0000_0000 < rate;
268
288
  }
269
289
 
@@ -279,9 +299,8 @@ export class ZLinkMessageFlowTracer {
279
299
 
280
300
  private publishToLogger(record: ZLinkTelemetryRecord): void {
281
301
  try {
282
- const severityNumber = record.eventId === 'zlink.dispatch_error'
283
- ? SeverityNumber.ERROR
284
- : SeverityNumber.INFO;
302
+ const severityNumber =
303
+ record.eventId === 'zlink.dispatch_error' ? SeverityNumber.ERROR : SeverityNumber.INFO;
285
304
  telemetryLogger.emit({
286
305
  eventName: record.eventId,
287
306
  timestamp: record.timestamp,
@@ -337,9 +356,10 @@ function toTelemetryRecord(
337
356
  durationSeconds: number | undefined
338
357
  ): ZLinkTelemetryRecord {
339
358
  return {
340
- eventId: flow.outcome === ZLinkMessageFlowOutcome.Error
341
- ? 'zlink.dispatch_error'
342
- : 'zlink.message_flow',
359
+ eventId:
360
+ flow.outcome === ZLinkMessageFlowOutcome.Error
361
+ ? 'zlink.dispatch_error'
362
+ : 'zlink.message_flow',
343
363
  timestamp: new Date(),
344
364
  phase: messageFlowPhase(flow.outcome),
345
365
  outcome: flow.result ?? messageFlowOutcome(flow.outcome),
@@ -357,18 +377,18 @@ function toTelemetryRecord(
357
377
  targetRid: flow.targetRid,
358
378
  serverRid: flow.serverRid,
359
379
  flowId: flow.flowId,
360
- flowOrigin: flow.flowOrigin === undefined
361
- ? undefined
362
- : FLOW_ORIGIN_TELEMETRY_VALUES[flow.flowOrigin],
380
+ flowOrigin:
381
+ flow.flowOrigin === undefined ? undefined : FLOW_ORIGIN_TELEMETRY_VALUES[flow.flowOrigin],
363
382
  spotId: flow.spotId,
364
383
  instanceSpotType: flow.instanceSpotType,
365
384
  activationState: flow.activationState,
366
385
  actorId: flow.actorId,
386
+ streamSessionId: flow.streamSessionId,
367
387
  commandId: flow.commandId,
368
388
  messageSizeBytes,
369
389
  durationSeconds,
370
390
  errorType: flow.errorType,
371
- errorMessage: boundedText(flow.errorMessage),
391
+ errorMessage: flow.errorMessage,
372
392
  errorCauseType: flow.errorCauseType,
373
393
  errorCauseMessage: boundedText(flow.errorCauseMessage)
374
394
  };
@@ -405,6 +425,7 @@ function structuredLogAttributes(record: ZLinkTelemetryRecord): Attributes {
405
425
  instance_spot_type: record.instanceSpotType,
406
426
  activation_state: record.activationState,
407
427
  actor_id: record.actorId,
428
+ stream_session_id: record.streamSessionId,
408
429
  correlation_id: record.correlationId,
409
430
  flow_id: record.flowId,
410
431
  flow_origin: record.flowOrigin,
@@ -440,11 +461,15 @@ function structuredLogBodyAttributes(record: ZLinkTelemetryRecord): Attributes {
440
461
  instance_type: record.instanceSpotType,
441
462
  activation_state: record.activationState,
442
463
  actor: record.actorId,
464
+ session: record.streamSessionId,
443
465
  corr: record.correlationId,
444
466
  flow: record.flowId,
445
467
  origin: record.flowOrigin,
446
468
  outcome: record.outcome,
447
469
  reason: record.reason,
470
+ action: record.action,
471
+ error_type: record.errorType,
472
+ error_message: record.errorMessage,
448
473
  size: record.messageSizeBytes
449
474
  });
450
475
  }
@@ -455,7 +480,6 @@ function structuredLogBody(record: ZLinkTelemetryRecord): string {
455
480
  .join(' ')}`;
456
481
  }
457
482
 
458
-
459
483
  function compactAttributes(values: Record<string, string | number | undefined>): Attributes {
460
484
  const attributes: Attributes = {};
461
485
  for (const [key, value] of Object.entries(values)) {
@@ -466,31 +490,37 @@ function compactAttributes(values: Record<string, string | number | undefined>):
466
490
 
467
491
  function messageFlowPhase(outcome: ZLinkMessageFlowOutcome): string | undefined {
468
492
  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;
493
+ case ZLinkMessageFlowOutcome.Received:
494
+ return 'received';
495
+ case ZLinkMessageFlowOutcome.Admitted:
496
+ return 'admitted';
497
+ case ZLinkMessageFlowOutcome.Dispatched:
498
+ return 'dispatched';
499
+ case ZLinkMessageFlowOutcome.Completed:
500
+ return 'completed';
501
+ case ZLinkMessageFlowOutcome.Replied:
502
+ return 'replied';
503
+ case ZLinkMessageFlowOutcome.Dropped:
504
+ return 'dropped';
505
+ case ZLinkMessageFlowOutcome.Sent:
506
+ return 'sent';
507
+ case ZLinkMessageFlowOutcome.ReplyReceived:
508
+ return 'reply_received';
509
+ case ZLinkMessageFlowOutcome.Backpressured:
510
+ return 'backpressured';
511
+ case ZLinkMessageFlowOutcome.Error:
512
+ return undefined;
479
513
  }
480
514
  }
481
515
 
482
- function messageFlowOutcome(
483
- outcome: ZLinkMessageFlowOutcome
484
- ): ZLinkTelemetryRecord['outcome'] {
516
+ function messageFlowOutcome(outcome: ZLinkMessageFlowOutcome): ZLinkTelemetryRecord['outcome'] {
485
517
  if (outcome === ZLinkMessageFlowOutcome.Error) return 'failed';
486
518
  if (outcome === ZLinkMessageFlowOutcome.Backpressured) return 'backpressured';
487
519
  if (outcome === ZLinkMessageFlowOutcome.Dropped) return 'dropped';
488
520
  return 'succeeded';
489
521
  }
490
522
 
491
- function messageFlowSurface(
492
- surface: ZLinkDispatchErrorSurface
493
- ): ZLinkTelemetryRecord['surface'] {
523
+ function messageFlowSurface(surface: ZLinkDispatchErrorSurface): ZLinkTelemetryRecord['surface'] {
494
524
  switch (surface) {
495
525
  case ZLinkDispatchErrorSurface.Node:
496
526
  return 'node';
@@ -513,9 +543,7 @@ function messageFlowSurface(
513
543
  }
514
544
  }
515
545
 
516
- function messageFlowKind(
517
- kind: ZLinkDispatchMessageKind
518
- ): ZLinkTelemetryRecord['messageKind'] {
546
+ function messageFlowKind(kind: ZLinkDispatchMessageKind): ZLinkTelemetryRecord['messageKind'] {
519
547
  switch (kind) {
520
548
  case ZLinkDispatchMessageKind.Request:
521
549
  case ZLinkDispatchMessageKind.ActorRequest:
@@ -552,7 +580,7 @@ function hashFlowId(flowId: string): number {
552
580
  }
553
581
 
554
582
  function boundedText(value: string | undefined): string | undefined {
555
- return value === undefined ? undefined : value.slice(0, 512);
583
+ return value === undefined ? undefined : value.slice(0, ERROR_MESSAGE_MAX_LENGTH);
556
584
  }
557
585
 
558
586
  function toSnakeCase(value: string): string {
@@ -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 {