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 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}