Skip to main content

systemprompt_agent/models/web/
card_input.rs

1//! Agent-card authoring input shapes.
2//!
3//! Copyright (c) systemprompt.io — Business Source License 1.1.
4//! See <https://systemprompt.io> for licensing details.
5
6use crate::models::a2a::{AgentCapabilities, SecurityScheme, TransportProtocol};
7use serde::Deserialize;
8use std::collections::HashMap;
9
10#[derive(Debug, Clone, Deserialize)]
11pub struct AgentCardInput {
12    #[serde(default = "default_protocol_version")]
13    pub protocol_version: String,
14    pub name: String,
15    pub description: String,
16    #[serde(default)]
17    pub url: Option<String>,
18    pub version: String,
19    #[serde(default)]
20    pub preferred_transport: Option<TransportProtocol>,
21    #[serde(default)]
22    pub capabilities: AgentCapabilities,
23    #[serde(default)]
24    pub default_input_modes: Vec<String>,
25    #[serde(default)]
26    pub default_output_modes: Vec<String>,
27    #[serde(default)]
28    pub skills: Vec<crate::models::a2a::AgentSkill>,
29    #[serde(default)]
30    pub security_schemes: Option<HashMap<String, SecurityScheme>>,
31    #[serde(default)]
32    pub security: Option<Vec<HashMap<String, Vec<String>>>>,
33}
34
35pub(super) fn default_protocol_version() -> String {
36    crate::A2A_PROTOCOL_VERSION.to_owned()
37}