Skip to main content

toolhub_core/
tool.rs

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}