Skip to main content

systemprompt_logging/trace/models/
tool.rs

1//! MCP tool execution DTOs and audit linkage rows.
2
3use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5use serde_json::Value;
6use systemprompt_identifiers::{AiRequestId, ArtifactId, McpExecutionId, TaskId, TraceId};
7
8#[derive(Debug, Clone)]
9pub struct ToolExecutionFilter {
10    pub limit: i64,
11    pub since: Option<DateTime<Utc>>,
12    pub name: Option<String>,
13    pub server: Option<String>,
14    pub status: Option<String>,
15}
16
17impl ToolExecutionFilter {
18    pub const fn new(limit: i64) -> Self {
19        Self {
20            limit,
21            since: None,
22            name: None,
23            server: None,
24            status: None,
25        }
26    }
27
28    pub const fn with_since(mut self, since: DateTime<Utc>) -> Self {
29        self.since = Some(since);
30        self
31    }
32
33    systemprompt_models::builder_methods! {
34        with_name(name) -> String,
35        with_server(server) -> String,
36        with_status(status) -> String,
37    }
38}
39
40#[derive(Debug, Clone, Serialize, Deserialize)]
41pub struct ToolExecutionItem {
42    pub timestamp: DateTime<Utc>,
43    pub trace_id: TraceId,
44    pub tool_name: String,
45    pub server_name: Option<String>,
46    pub status: String,
47    pub execution_time_ms: Option<i32>,
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize)]
51pub struct AuditLookupResult {
52    pub id: AiRequestId,
53    pub provider: String,
54    pub model: String,
55    pub requested_model: Option<String>,
56    pub input_tokens: Option<i32>,
57    pub output_tokens: Option<i32>,
58    pub cost_microdollars: i64,
59    pub latency_ms: Option<i32>,
60    pub task_id: Option<TaskId>,
61    pub trace_id: Option<TraceId>,
62}
63
64#[derive(Debug, Clone, Serialize, Deserialize)]
65pub struct AuditToolCallRow {
66    pub tool_name: String,
67    pub tool_input: String,
68    pub sequence_number: i32,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
72pub struct LinkedMcpCall {
73    pub tool_name: String,
74    pub server_name: String,
75    pub status: String,
76    pub execution_time_ms: Option<i32>,
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize)]
80pub struct McpToolExecution {
81    pub mcp_execution_id: McpExecutionId,
82    pub tool_name: String,
83    pub server_name: String,
84    pub status: String,
85    pub execution_time_ms: Option<i32>,
86    pub error_message: Option<String>,
87    pub input: String,
88    pub output: Option<String>,
89}
90
91#[derive(Debug, Clone, Serialize, Deserialize)]
92pub struct ToolLogEntry {
93    pub timestamp: DateTime<Utc>,
94    pub level: String,
95    pub module: String,
96    pub message: String,
97}
98
99#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct TaskArtifact {
101    pub artifact_id: ArtifactId,
102    pub artifact_type: String,
103    pub name: Option<String>,
104    pub source: Option<String>,
105    pub tool_name: Option<String>,
106    pub part_kind: Option<String>,
107    pub text_content: Option<String>,
108    pub data_content: Option<Value>,
109}