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 input_tokens: Option<i32>,
56    pub output_tokens: Option<i32>,
57    pub cost_microdollars: i64,
58    pub latency_ms: Option<i32>,
59    pub task_id: Option<TaskId>,
60    pub trace_id: Option<TraceId>,
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize)]
64pub struct AuditToolCallRow {
65    pub tool_name: String,
66    pub tool_input: String,
67    pub sequence_number: i32,
68}
69
70#[derive(Debug, Clone, Serialize, Deserialize)]
71pub struct LinkedMcpCall {
72    pub tool_name: String,
73    pub server_name: String,
74    pub status: String,
75    pub execution_time_ms: Option<i32>,
76}
77
78#[derive(Debug, Clone, Serialize, Deserialize)]
79pub struct McpToolExecution {
80    pub mcp_execution_id: McpExecutionId,
81    pub tool_name: String,
82    pub server_name: String,
83    pub status: String,
84    pub execution_time_ms: Option<i32>,
85    pub error_message: Option<String>,
86    pub input: String,
87    pub output: Option<String>,
88}
89
90#[derive(Debug, Clone, Serialize, Deserialize)]
91pub struct ToolLogEntry {
92    pub timestamp: DateTime<Utc>,
93    pub level: String,
94    pub module: String,
95    pub message: String,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
99pub struct TaskArtifact {
100    pub artifact_id: ArtifactId,
101    pub artifact_type: String,
102    pub name: Option<String>,
103    pub source: Option<String>,
104    pub tool_name: Option<String>,
105    pub part_kind: Option<String>,
106    pub text_content: Option<String>,
107    pub data_content: Option<Value>,
108}