//! Centralised metric name constants for Prometheus instrumentation.
//!
//! All metric names used across ironflow operations are defined here so that
//! typos are caught at compile time and renaming is a single-place change.

// ── Agent metrics ───────────────────────────────────────────────────
/// Counter: total agent invocations (labels: model, status).
pub const AGENT_TOTAL: &str = "ironflow_agent_total";
/// Histogram: agent invocation duration in seconds (label: model).
pub const AGENT_DURATION_SECONDS: &str = "ironflow_agent_duration_seconds";
/// Gauge: cumulative agent cost in USD (label: model).
pub const AGENT_COST_USD_TOTAL: &str = "ironflow_agent_cost_usd_total";
/// Counter: total input tokens consumed by agents (label: model).
pub const AGENT_TOKENS_INPUT_TOTAL: &str = "ironflow_agent_tokens_input_total";
/// Counter: total output tokens generated by agents (label: model).
pub const AGENT_TOKENS_OUTPUT_TOTAL: &str = "ironflow_agent_tokens_output_total";

// ── Shell metrics ───────────────────────────────────────────────────
/// Counter: total shell command executions (label: status).
pub const SHELL_TOTAL: &str = "ironflow_shell_total";
/// Histogram: shell command duration in seconds.
pub const SHELL_DURATION_SECONDS: &str = "ironflow_shell_duration_seconds";

// ── HTTP metrics ────────────────────────────────────────────────────
/// Counter: total HTTP requests (labels: method, status).
pub const HTTP_TOTAL: &str = "ironflow_http_total";
/// Histogram: HTTP request duration in seconds.
pub const HTTP_DURATION_SECONDS: &str = "ironflow_http_duration_seconds";

// ── Status labels ───────────────────────────────────────────────────
/// Label value for successful operations.
pub const STATUS_SUCCESS: &str = "success";
/// Label value for failed operations.
pub const STATUS_ERROR: &str = "error";
