Skip to main content

synaps_cli/extensions/
info.rs

1//! Extension-provided capability and build information returned by `info.get`.
2
3use serde::{Deserialize, Serialize};
4
5/// Best-effort plugin information advertised after `initialize()`.
6#[derive(Debug, Clone, Default, PartialEq, Eq, Deserialize, Serialize)]
7pub struct PluginInfo {
8    /// Optional build metadata for sidecars/backends owned by the plugin.
9    #[serde(default, skip_serializing_if = "Option::is_none")]
10    pub build: Option<PluginBuildInfo>,
11    /// Human-readable capability inventory.
12    #[serde(default)]
13    pub capabilities: Vec<PluginCapabilityInfo>,
14    /// Optional model inventory advertised by the plugin.
15    #[serde(default)]
16    pub models: Vec<PluginModelInfo>,
17}
18
19/// Build metadata for a plugin-owned backend or sidecar.
20#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize)]
21pub struct PluginBuildInfo {
22    /// Active backend, e.g. `cpu`, `cuda`, `metal`, `vulkan`, `openblas`.
23    pub backend: String,
24    /// Compile/runtime feature flags reported by the plugin.
25    #[serde(default)]
26    pub features: Vec<String>,
27    /// Plugin or backend version string.
28    #[serde(default)]
29    pub version: String,
30}
31
32/// One advertised capability.
33#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize)]
34pub struct PluginCapabilityInfo {
35    /// Capability class, e.g. `capture`, `models`, `tasks`, `settings`.
36    pub kind: String,
37    /// Display name.
38    pub name: String,
39    /// Optional supported modes for this capability.
40    #[serde(default)]
41    pub modes: Vec<String>,
42}
43
44/// One model known to the plugin.
45#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize)]
46pub struct PluginModelInfo {
47    /// Stable model id.
48    pub id: String,
49    /// Optional display label.
50    #[serde(default, skip_serializing_if = "Option::is_none")]
51    pub display_name: Option<String>,
52    /// Whether the model is available locally.
53    #[serde(default)]
54    pub installed: bool,
55}