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");
}