Skip to main content

mika_a2a/
params.rs

1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4use crate::types::{Message, TaskPushNotificationConfig};
5
6/// Parameters for `message/send` and `message/stream`.
7#[derive(Debug, Clone, Serialize, Deserialize)]
8#[serde(rename_all = "camelCase")]
9pub struct MessageSendParams {
10    pub message: Message,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub configuration: Option<SendMessageConfiguration>,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub metadata: Option<HashMap<String, serde_json::Value>>,
15}
16
17/// Configuration for sending a message.
18#[derive(Debug, Clone, Serialize, Deserialize)]
19#[serde(rename_all = "camelCase")]
20pub struct SendMessageConfiguration {
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub accepted_output_modes: Option<Vec<String>>,
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub task_push_notification_config: Option<TaskPushNotificationConfig>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub history_length: Option<i32>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub return_immediately: Option<bool>,
29}
30
31/// Parameters for `tasks/get`.
32#[derive(Debug, Clone, Serialize, Deserialize)]
33#[serde(rename_all = "camelCase")]
34pub struct TaskQueryParams {
35    pub id: String,
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub history_length: Option<i32>,
38}
39
40/// Parameters for `tasks/cancel`.
41#[derive(Debug, Clone, Serialize, Deserialize)]
42#[serde(rename_all = "camelCase")]
43pub struct TaskIdParams {
44    pub id: String,
45}