Skip to main content

soma_codemode/types/
response.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use super::catalog::UiLink;
5
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7pub struct CodeModeExecutedCall {
8    pub id: String,
9    #[serde(default, skip_serializing_if = "Option::is_none")]
10    pub params: Option<Value>,
11    #[serde(default, skip_serializing_if = "Option::is_none")]
12    pub result: Option<Value>,
13}
14
15#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
16pub struct CodeModeExecutionError {
17    pub kind: String,
18    pub message: String,
19}
20
21#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
22pub struct CodeModeExecutionResponse {
23    #[serde(default, skip_serializing_if = "Option::is_none")]
24    pub result: Option<Value>,
25    #[serde(default, skip_serializing_if = "Vec::is_empty")]
26    pub calls: Vec<CodeModeExecutedCall>,
27    #[serde(default, skip_serializing_if = "Vec::is_empty")]
28    pub logs: Vec<String>,
29    #[serde(default, skip_serializing_if = "Option::is_none")]
30    pub error: Option<CodeModeExecutionError>,
31    #[serde(default, skip_serializing_if = "Option::is_none")]
32    pub ui: Option<UiLink>,
33}
34
35#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
36#[serde(rename_all = "snake_case")]
37pub enum CodeModeExecutionSource {
38    Inline,
39    Snippet,
40}
41
42#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
43pub struct CodeModeSourceLookup {
44    pub source: CodeModeExecutionSource,
45    pub key: String,
46}
47
48#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
49pub struct CodeModeSourceStore {
50    pub sources: Vec<CodeModeSourceLookup>,
51}