systemprompt_models/a2a/agent_card/
skill.rs1use crate::a2a::PROTOCOL_VERSION;
7use crate::a2a::security::SecurityRequirement;
8use crate::a2a::transport::ProtocolBinding;
9use serde::{Deserialize, Serialize};
10
11#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
12#[serde(rename_all = "camelCase")]
13pub struct AgentInterface {
14 pub url: String,
15 pub protocol_binding: ProtocolBinding,
16 #[serde(default, skip_serializing_if = "Option::is_none")]
17 pub tenant: Option<String>,
18 #[serde(default = "default_protocol_version")]
19 pub protocol_version: String,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
23pub struct AgentProvider {
24 pub organization: String,
25 pub url: String,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
29#[serde(rename_all = "camelCase")]
30pub struct AgentSkill {
31 pub id: String,
32 pub name: String,
33 pub description: String,
34 pub tags: Vec<String>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub examples: Option<Vec<String>>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub input_modes: Option<Vec<String>>,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub output_modes: Option<Vec<String>>,
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub security_requirements: Option<Vec<SecurityRequirement>>,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
46pub struct AgentCardSignature {
47 pub protected: String,
48 pub signature: String,
49 #[serde(skip_serializing_if = "Option::is_none")]
50 pub header: Option<serde_json::Value>,
52}
53
54fn default_protocol_version() -> String {
55 PROTOCOL_VERSION.to_owned()
56}