opencode_sdk/types/
tool.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct Tool {
9 pub id: String,
11 pub name: String,
13 #[serde(default, skip_serializing_if = "Option::is_none")]
15 pub description: Option<String>,
16 #[serde(default, skip_serializing_if = "Option::is_none")]
18 pub input_schema: Option<serde_json::Value>,
19 #[serde(default)]
21 pub requires_approval: bool,
22 #[serde(default, skip_serializing_if = "Option::is_none")]
24 pub source: Option<String>,
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize)]
29#[serde(rename_all = "camelCase")]
30pub struct Agent {
31 pub name: String,
33 #[serde(default, skip_serializing_if = "Option::is_none")]
35 pub description: Option<String>,
36 #[serde(default, skip_serializing_if = "Option::is_none")]
38 pub system: Option<String>,
39 #[serde(default)]
41 pub tools: Vec<String>,
42 #[serde(default)]
44 pub builtin: bool,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize)]
49#[serde(rename_all = "camelCase")]
50pub struct Command {
51 pub name: String,
53 #[serde(default, skip_serializing_if = "Option::is_none")]
55 pub description: Option<String>,
56 #[serde(default, skip_serializing_if = "Option::is_none")]
58 pub shortcut: Option<String>,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize)]
63#[serde(rename_all = "camelCase")]
64pub struct ToolIds {
65 #[serde(default)]
67 pub ids: Vec<String>,
68}