use serde::{Deserialize, Serialize};
use crate::json::RawJson;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InitInput {
pub manifest: RawJson,
pub settings: RawJson,
pub flags: RawJson,
}
impl Default for InitInput {
fn default() -> Self {
let empty = RawJson::from_json_value(&serde_json::Value::Object(serde_json::Map::new()));
Self {
manifest: empty.clone(),
settings: empty.clone(),
flags: empty,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolInvocation {
pub tool_call_id: String,
pub name: String,
pub args: RawJson,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub parent_tool_call_id: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CompletionItem {
pub value: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}