Skip to main content

vv_agent/app_server/protocol/
model.rs

1use std::collections::BTreeMap;
2
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5use serde_json::Value;
6use ts_rs::TS;
7
8#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize, JsonSchema, TS)]
9#[serde(rename_all = "camelCase")]
10pub struct ModelListParams {
11    #[serde(default, skip_serializing_if = "Option::is_none")]
12    pub agent_key: Option<String>,
13    #[serde(default, skip_serializing_if = "Option::is_none")]
14    pub provider: Option<String>,
15}
16
17#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema, TS)]
18#[serde(rename_all = "camelCase")]
19pub struct ModelListResponse {
20    pub models: Vec<AppModelInfo>,
21}
22
23#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema, TS)]
24#[serde(rename_all = "camelCase")]
25pub struct AppModelInfo {
26    pub id: String,
27    #[serde(default, skip_serializing_if = "Option::is_none")]
28    pub provider: Option<String>,
29    #[serde(default, skip_serializing_if = "Option::is_none")]
30    pub display_name: Option<String>,
31    #[serde(default, skip_serializing_if = "Option::is_none")]
32    pub context_length: Option<u64>,
33    #[serde(default)]
34    pub supports_tools: bool,
35    #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
36    pub metadata: BTreeMap<String, Value>,
37}