systemprompt-analytics 0.53.0

Analytics for systemprompt.io AI governance infrastructure. Session, agent, tool, and microdollar-precision cost attribution across the MCP governance pipeline.
Documentation
//! Explicit version-one reporting source column contracts.
//!
//! Copyright (c) systemprompt.io — Business Source License 1.1.
//! See <https://systemprompt.io> for licensing details.

use super::{ReportingSource, SourceDefinition};

pub const SOURCE_DEFINITIONS: &[SourceDefinition] = &[
    SourceDefinition {
        source: ReportingSource::Users,
        table: "users",
        view: "reporting_source_users",
        target: "analytics_report_users",
        key: "id",
        key_type: "TEXT",
        columns: &["id", "name", "status", "roles", "created_at"],
    },
    SourceDefinition {
        source: ReportingSource::UserSessions,
        table: "user_sessions",
        view: "reporting_source_user_sessions",
        target: "analytics_report_user_sessions",
        key: "session_id",
        key_type: "TEXT",
        columns: &[
            "session_id",
            "user_id",
            "started_at",
            "last_activity_at",
            "ended_at",
            "duration_seconds",
            "user_type",
            "converted_at",
            "expires_at",
            "client_id",
            "client_type",
            "request_count",
            "avg_response_time_ms",
            "success_rate",
            "error_count",
            "task_count",
            "message_count",
            "ai_request_count",
            "total_tokens_used",
            "total_ai_cost_microdollars",
            "ip_address",
            "user_agent",
            "device_type",
            "browser",
            "os",
            "country",
            "region",
            "city",
            "preferred_locale",
            "referrer_source",
            "referrer_url",
            "landing_page",
            "entry_url",
            "utm_source",
            "utm_medium",
            "utm_campaign",
            "utm_content",
            "utm_term",
            "endpoints_accessed",
            "fingerprint_hash",
            "is_bot",
            "is_ai_crawler",
            "is_scanner",
            "is_behavioral_bot",
            "behavioral_bot_reason",
            "behavioral_bot_score",
            "session_source",
            "revoked_at",
        ],
    },
    SourceDefinition {
        source: ReportingSource::AgentTasks,
        table: "agent_tasks",
        view: "reporting_source_agent_tasks",
        target: "analytics_report_agent_tasks",
        key: "task_id",
        key_type: "TEXT",
        columns: &[
            "task_id",
            "context_id",
            "status",
            "status_timestamp",
            "user_id",
            "session_id",
            "trace_id",
            "agent_name",
            "started_at",
            "completed_at",
            "execution_time_ms",
            "error_message",
            "version",
            "created_at",
            "updated_at",
        ],
    },
    SourceDefinition {
        source: ReportingSource::TaskMessages,
        table: "task_messages",
        view: "reporting_source_task_messages",
        target: "analytics_report_task_messages",
        key: "id",
        key_type: "INTEGER",
        columns: &["id", "task_id", "created_at"],
    },
    SourceDefinition {
        source: ReportingSource::UserContexts,
        table: "user_contexts",
        view: "reporting_source_user_contexts",
        target: "analytics_report_user_contexts",
        key: "context_id",
        key_type: "TEXT",
        columns: &[
            "context_id",
            "user_id",
            "session_id",
            "name",
            "kind",
            "created_at",
            "updated_at",
        ],
    },
    SourceDefinition {
        source: ReportingSource::AiRequests,
        table: "ai_requests",
        view: "reporting_source_ai_requests",
        target: "analytics_report_ai_requests",
        key: "id",
        key_type: "TEXT",
        columns: &[
            "id",
            "request_id",
            "user_id",
            "session_id",
            "task_id",
            "context_id",
            "gateway_conversation_id",
            "client_session_id",
            "provider_request_id",
            "trace_id",
            "mcp_execution_id",
            "provider",
            "model",
            "requested_model",
            "route_match",
            "temperature",
            "top_p",
            "max_tokens",
            "tokens_used",
            "input_tokens",
            "output_tokens",
            "cost_microdollars",
            "latency_ms",
            "upstream_latency_ms",
            "cache_hit",
            "cache_read_tokens",
            "cache_creation_tokens",
            "reasoning_tokens",
            "is_streaming",
            "status",
            "error_message",
            "actor_kind",
            "actor_id",
            "synthetic",
            "request_kind",
            "instance_id",
            "created_at",
            "updated_at",
            "completed_at",
        ],
    },
    SourceDefinition {
        source: ReportingSource::AiRequestMessages,
        table: "ai_request_messages",
        view: "reporting_source_ai_request_messages",
        target: "analytics_report_ai_request_messages",
        key: "id",
        key_type: "TEXT",
        columns: &["id", "request_id", "created_at"],
    },
    SourceDefinition {
        source: ReportingSource::McpToolExecutions,
        table: "mcp_tool_executions",
        view: "reporting_source_mcp_tool_executions",
        target: "analytics_report_mcp_tool_executions",
        key: "mcp_execution_id",
        key_type: "TEXT",
        columns: &[
            "mcp_execution_id",
            "tool_name",
            "server_name",
            "started_at",
            "completed_at",
            "execution_time_ms",
            "status",
            "error_message",
            "user_id",
            "session_id",
            "context_id",
            "task_id",
            "trace_id",
            "request_method",
            "request_source",
            "actor_kind",
            "actor_id",
            "ai_tool_call_id",
            "created_at",
        ],
    },
    SourceDefinition {
        source: ReportingSource::MarkdownContent,
        table: "markdown_content",
        view: "reporting_source_markdown_content",
        target: "analytics_report_markdown_content",
        key: "id",
        key_type: "TEXT",
        columns: &["id", "slug", "title", "source_id"],
    },
    SourceDefinition {
        source: ReportingSource::Logs,
        table: "logs",
        view: "reporting_source_logs",
        target: "analytics_report_logs",
        key: "id",
        key_type: "TEXT",
        columns: &[
            "id",
            "timestamp",
            "level",
            "module",
            "message",
            "user_id",
            "session_id",
            "task_id",
        ],
    },
    SourceDefinition {
        source: ReportingSource::AnalyticsEvents,
        table: "analytics_events",
        view: "reporting_source_analytics_events",
        target: "analytics_report_analytics_events",
        key: "id",
        key_type: "TEXT",
        columns: &[
            "id",
            "user_id",
            "session_id",
            "context_id",
            "gateway_conversation_id",
            "provider_request_id",
            "event_type",
            "event_category",
            "severity",
            "endpoint",
            "error_code",
            "response_time_ms",
            "agent_id",
            "task_id",
            "message",
            "metadata",
            "event_data",
            "timestamp",
        ],
    },
];