1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct FlowModuleTool {
16 #[serde(rename = "input_transforms")]
17 pub input_transforms: std::collections::HashMap<String, models::InputTransform>,
18 #[serde(rename = "content")]
19 pub content: String,
20 #[serde(rename = "language")]
21 pub language: Language,
22 #[serde(rename = "path")]
23 pub path: String,
24 #[serde(rename = "lock", skip_serializing_if = "Option::is_none")]
25 pub lock: Option<String>,
26 #[serde(rename = "type")]
27 pub r#type: Type,
28 #[serde(rename = "tag", skip_serializing_if = "Option::is_none")]
29 pub tag: Option<String>,
30 #[serde(rename = "concurrent_limit", skip_serializing_if = "Option::is_none")]
31 pub concurrent_limit: Option<f64>,
32 #[serde(rename = "concurrency_time_window_s", skip_serializing_if = "Option::is_none")]
33 pub concurrency_time_window_s: Option<f64>,
34 #[serde(rename = "custom_concurrency_key", skip_serializing_if = "Option::is_none")]
35 pub custom_concurrency_key: Option<String>,
36 #[serde(rename = "is_trigger", skip_serializing_if = "Option::is_none")]
37 pub is_trigger: Option<bool>,
38 #[serde(rename = "assets", skip_serializing_if = "Option::is_none")]
39 pub assets: Option<Vec<models::RawScriptAssetsInner>>,
40 #[serde(rename = "hash", skip_serializing_if = "Option::is_none")]
41 pub hash: Option<String>,
42 #[serde(rename = "tag_override", skip_serializing_if = "Option::is_none")]
43 pub tag_override: Option<String>,
44 #[serde(rename = "modules")]
45 pub modules: Vec<models::FlowModule>,
46 #[serde(rename = "iterator")]
47 pub iterator: Box<models::InputTransform>,
48 #[serde(rename = "skip_failures")]
49 pub skip_failures: bool,
50 #[serde(rename = "parallel", skip_serializing_if = "Option::is_none")]
51 pub parallel: Option<bool>,
52 #[serde(rename = "parallelism", skip_serializing_if = "Option::is_none")]
53 pub parallelism: Option<Box<models::InputTransform>>,
54 #[serde(rename = "squash", skip_serializing_if = "Option::is_none")]
55 pub squash: Option<bool>,
56 #[serde(rename = "branches")]
57 pub branches: Vec<models::BranchAllBranchesInner>,
58 #[serde(rename = "default")]
59 pub default: Vec<models::FlowModule>,
60 #[serde(rename = "flow", skip_serializing_if = "Option::is_none")]
61 pub flow: Option<bool>,
62 #[serde(rename = "tools")]
63 pub tools: Vec<models::AgentTool>,
64 #[serde(rename = "tool_type")]
65 pub tool_type: ToolType,
66}
67
68impl FlowModuleTool {
69 pub fn new(input_transforms: std::collections::HashMap<String, models::InputTransform>, content: String, language: Language, path: String, r#type: Type, modules: Vec<models::FlowModule>, iterator: models::InputTransform, skip_failures: bool, branches: Vec<models::BranchAllBranchesInner>, default: Vec<models::FlowModule>, tools: Vec<models::AgentTool>, tool_type: ToolType) -> FlowModuleTool {
70 FlowModuleTool {
71 input_transforms,
72 content,
73 language,
74 path,
75 lock: None,
76 r#type,
77 tag: None,
78 concurrent_limit: None,
79 concurrency_time_window_s: None,
80 custom_concurrency_key: None,
81 is_trigger: None,
82 assets: None,
83 hash: None,
84 tag_override: None,
85 modules,
86 iterator: Box::new(iterator),
87 skip_failures,
88 parallel: None,
89 parallelism: None,
90 squash: None,
91 branches,
92 default,
93 flow: None,
94 tools,
95 tool_type,
96 }
97 }
98}
99#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
101pub enum Language {
102 #[serde(rename = "deno")]
103 Deno,
104 #[serde(rename = "bun")]
105 Bun,
106 #[serde(rename = "python3")]
107 Python3,
108 #[serde(rename = "go")]
109 Go,
110 #[serde(rename = "bash")]
111 Bash,
112 #[serde(rename = "powershell")]
113 Powershell,
114 #[serde(rename = "postgresql")]
115 Postgresql,
116 #[serde(rename = "mysql")]
117 Mysql,
118 #[serde(rename = "bigquery")]
119 Bigquery,
120 #[serde(rename = "snowflake")]
121 Snowflake,
122 #[serde(rename = "mssql")]
123 Mssql,
124 #[serde(rename = "oracledb")]
125 Oracledb,
126 #[serde(rename = "graphql")]
127 Graphql,
128 #[serde(rename = "nativets")]
129 Nativets,
130 #[serde(rename = "php")]
131 Php,
132}
133
134impl Default for Language {
135 fn default() -> Language {
136 Self::Deno
137 }
138}
139#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
141pub enum Type {
142 #[serde(rename = "aiagent")]
143 Aiagent,
144}
145
146impl Default for Type {
147 fn default() -> Type {
148 Self::Aiagent
149 }
150}
151#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
153pub enum ToolType {
154 #[serde(rename = "flowmodule")]
155 Flowmodule,
156}
157
158impl Default for ToolType {
159 fn default() -> ToolType {
160 Self::Flowmodule
161 }
162}
163