using System.Diagnostics; using System.Diagnostics.Metrics; namespace Nexus.Api.Observability; /// /// Low-cardinality diagnostics for the Nexus control plane. Content, prompts, /// tool arguments, entity names, credentials and caller-provided identifiers /// must never be recorded here. /// public static class NexusTelemetry { public const string SourceName = "Nexus.Api"; public static readonly ActivitySource ActivitySource = new(SourceName); public static readonly Meter Meter = new(SourceName); public static readonly Histogram BrowserDuration = Meter.CreateHistogram("nexus.browser.duration", unit: "ms"); public static readonly Histogram BrowserScore = Meter.CreateHistogram("nexus.browser.score", unit: "1"); public static readonly Histogram TaskBoardDuration = Meter.CreateHistogram("nexus.task.board.duration", unit: "ms"); public static readonly Histogram TaskBoardPayload = Meter.CreateHistogram("nexus.task.board.payload", unit: "By"); public static readonly Counter SseResyncs = Meter.CreateCounter("nexus.sse.resyncs"); public static readonly UpDownCounter SseSubscribers = Meter.CreateUpDownCounter("nexus.sse.subscribers"); public static readonly Histogram GatewayRpcDuration = Meter.CreateHistogram("nexus.gateway.rpc.duration", unit: "ms"); public static readonly UpDownCounter OutboxBacklog = Meter.CreateUpDownCounter("nexus.outbox.backlog"); public static readonly Counter OutboxPublished = Meter.CreateCounter("nexus.outbox.published"); public static readonly Histogram AgentProvisionDuration = Meter.CreateHistogram("nexus.agent.provision.duration", unit: "ms"); }