1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Serialize, Deserialize, Default)]
5pub struct TaskForceAIOptions {
6 #[serde(skip_serializing_if = "Option::is_none")]
7 pub api_key: Option<String>,
8 #[serde(skip_serializing_if = "Option::is_none")]
9 pub base_url: Option<String>,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub timeout: Option<u64>,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub mock_mode: Option<bool>,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize, Default)]
17#[serde(rename_all = "camelCase")]
18pub struct TaskSubmissionOptions {
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub model_id: Option<String>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub silent: Option<bool>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub mock: Option<bool>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub vercel_ai_key: Option<String>,
27 #[serde(flatten)]
28 pub additional_options: HashMap<String, serde_json::Value>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
32#[serde(rename_all = "lowercase")]
33pub enum TaskStatusValue {
34 Processing,
35 Completed,
36 Failed,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
40#[serde(rename_all = "camelCase")]
41pub struct TaskStatus {
42 pub task_id: String,
43 pub status: TaskStatusValue,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub result: Option<String>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub error: Option<String>,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub warnings: Option<Vec<String>>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub metadata: Option<HashMap<String, serde_json::Value>>,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
55pub struct SubmitTaskResponse {
56 #[serde(rename = "taskId")]
57 pub task_id: String,
58}