1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
5#[serde(rename_all = "lowercase")]
6pub enum ToolType {
7 Skill,
8 Plugin,
9 Mcp,
10 Cli,
11 Doc,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
15pub struct ToolMeta {
16 pub id: String,
17 pub r#type: ToolType,
18 pub name: String,
19 pub source_repo: Option<String>,
20 pub install_path: Option<String>,
21 pub description: Option<String>,
22 pub long_description: Option<String>,
23 pub category: Option<String>,
24 pub triggers: Vec<String>,
25 pub examples: Vec<serde_json::Value>,
26 pub invocation: Option<String>,
27 pub requires: Vec<String>,
28 pub enabled: bool,
29 pub added_at: DateTime<Utc>,
30 pub last_seen_at: DateTime<Utc>,
31 pub last_used_at: Option<DateTime<Utc>>,
32}