vtcode_core/marketplace/
manifest.rs1use std::path::PathBuf;
4
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Deserialize, Serialize)]
9pub struct MarketplaceManifest {
10 pub name: String,
12
13 pub description: String,
15
16 pub plugins: Vec<PluginManifest>,
18}
19
20#[derive(Debug, Clone, Deserialize, Serialize)]
22pub struct PluginManifest {
23 pub id: String,
25
26 pub name: String,
28
29 pub version: String,
31
32 pub description: String,
34
35 pub entrypoint: PathBuf,
37
38 pub capabilities: Vec<String>,
40
41 pub source: String,
43
44 pub trust_level: Option<crate::config::PluginTrustLevel>,
46
47 #[serde(default)]
49 pub dependencies: Vec<String>,
50
51 #[serde(default)]
53 pub author: String,
54
55 #[serde(default)]
57 pub license: String,
58
59 #[serde(default)]
61 pub homepage: String,
62
63 #[serde(default)]
65 pub repository: String,
66}
67
68impl PluginManifest {
69 pub fn new(id: String, name: String, version: String) -> Self {
70 Self {
71 id,
72 name,
73 version,
74 description: String::new(),
75 entrypoint: PathBuf::new(),
76 capabilities: Vec::new(),
77 source: String::new(),
78 trust_level: None,
79 dependencies: Vec::new(),
80 author: String::new(),
81 license: String::new(),
82 homepage: String::new(),
83 repository: String::new(),
84 }
85 }
86}