soma_codemode/types/
response.rs1use 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}