gitdataai/libs/models/ai/mod.rs
2026-04-14 19:02:01 +08:00

47 lines
1.4 KiB
Rust

use serde::{Deserialize, Serialize};
/// AI tool call execution status. Stored as `"pending"`, `"running"`, `"success"`,
/// `"failed"`, or `"retrying"`.
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum ToolCallStatus {
Pending,
Running,
Success,
Failed,
Retrying,
}
impl std::fmt::Display for ToolCallStatus {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
ToolCallStatus::Pending => write!(f, "pending"),
ToolCallStatus::Running => write!(f, "running"),
ToolCallStatus::Success => write!(f, "success"),
ToolCallStatus::Failed => write!(f, "failed"),
ToolCallStatus::Retrying => write!(f, "retrying"),
}
}
}
impl std::str::FromStr for ToolCallStatus {
type Err = &'static str;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"pending" => Ok(ToolCallStatus::Pending),
"running" => Ok(ToolCallStatus::Running),
"success" => Ok(ToolCallStatus::Success),
"failed" => Ok(ToolCallStatus::Failed),
"retrying" => Ok(ToolCallStatus::Retrying),
_ => Err("unknown tool call status"),
}
}
}
pub use ai_session::Entity as AiSession;
pub use ai_tool_auth::Entity as AiToolAuth;
pub use ai_tool_call::Entity as AiToolCall;
pub mod ai_session;
pub mod ai_tool_auth;
pub mod ai_tool_call;