Skip to main content

systemprompt_runtime/trace/
mod.rs

1//! Trace query services backing the `logs` CLI and audit surfaces.
2//!
3//! [`TraceQueryService`] reconstructs a request's timeline — log events, AI
4//! requests, MCP executions, and execution steps — from a trace id, while
5//! [`AiTraceService`] resolves per-task execution steps. Both read through
6//! [`TraceRepository`]; result shapes are re-exported from `models`.
7//!
8//! Copyright (c) systemprompt.io — Business Source License 1.1.
9//! See <https://systemprompt.io> for licensing details.
10
11mod ai_trace_service;
12mod models;
13mod repository;
14mod service;
15
16pub use ai_trace_service::AiTraceService;
17pub use models::{
18    AiRequestClientEvidence, AiRequestDetail, AiRequestFilter, AiRequestInfo, AiRequestListItem,
19    AiRequestStats, AiRequestSummary, AuditLookupResult, AuditPage, AuditToolCallRow,
20    ConversationMessage, ExecutionStep, ExecutionStepSummary, LevelCount, LinkedMcpCall,
21    LogSearchFilter, LogSearchItem, LogTimeRange, McpExecutionSummary, McpToolExecution,
22    ModelStatsRow, ModuleCount, ProviderStatsRow, RequestCursor, RequestCursorError, TaskArtifact,
23    TaskInfo, ToolExecutionFilter, ToolExecutionItem, ToolLogEntry, TraceEvent, TraceListFilter,
24    TraceListItem,
25};
26pub use repository::TraceRepository;
27pub use service::TraceQueryService;
28
29/// Why a trace lookup could not be answered.
30#[derive(Debug, thiserror::Error)]
31pub enum TraceError {
32    #[error("Database operation failed")]
33    Database(#[from] sqlx::Error),
34
35    #[error("Task not found: {partial_id}")]
36    TaskNotFound { partial_id: String },
37
38    #[error("Stored identifier is malformed")]
39    MalformedId(#[from] systemprompt_identifiers::error::IdValidationError),
40
41    #[error("Stored log level is malformed")]
42    MalformedLevel(#[from] systemprompt_logging::models::LoggingError),
43}