systemprompt_logging/trace/models/
tool.rs1use 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}