1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Default, Deserialize, Serialize)]
6pub struct Document {
7 #[serde(default)]
8 pub url: Option<String>,
9 #[serde(default)]
10 pub status_code: Option<i64>,
11 #[serde(default)]
12 pub html: Option<String>,
13 #[serde(default)]
14 pub markdown: Option<String>,
15 #[serde(default)]
16 pub text: Option<String>,
17 #[serde(default)]
18 pub title: Option<String>,
19 #[serde(default)]
20 pub metadata: Option<HashMap<String, serde_json::Value>>,
21 #[serde(default)]
22 pub extraction: Option<serde_json::Value>,
23 #[serde(default)]
24 pub screenshot: Option<String>,
25}
26
27#[derive(Debug, Clone, Default, Deserialize, Serialize)]
29pub struct MapResult {
30 #[serde(default)]
31 pub url: Option<String>,
32 #[serde(default)]
33 pub links: Vec<String>,
34 #[serde(default)]
35 pub total: Option<i64>,
36}
37
38#[derive(Debug, Clone, Default, Deserialize, Serialize)]
40pub struct CrawlResult {
41 #[serde(default)]
42 pub url: Option<String>,
43 #[serde(default)]
44 pub pages: Vec<Document>,
45 #[serde(default)]
46 pub total: Option<i64>,
47}
48
49#[derive(Debug, Clone, Default, Deserialize, Serialize)]
51pub struct SearchResult {
52 #[serde(default)]
53 pub query: Option<String>,
54 #[serde(default)]
55 pub results: Vec<SearchHit>,
56}
57
58#[derive(Debug, Clone, Default, Deserialize, Serialize)]
59pub struct SearchHit {
60 #[serde(default)]
61 pub title: Option<String>,
62 #[serde(default)]
63 pub url: Option<String>,
64 #[serde(default)]
65 pub snippet: Option<String>,
66}
67
68#[derive(Debug, Clone, Default, Deserialize, Serialize)]
70pub struct AgenticSearchResult {
71 #[serde(default)]
72 pub answer: Option<String>,
73 #[serde(default)]
74 pub sources: Vec<AgenticSource>,
75 #[serde(default)]
76 pub data: Option<serde_json::Value>,
77}
78
79#[derive(Debug, Clone, Default, Deserialize, Serialize)]
80pub struct AgenticSource {
81 #[serde(default)]
82 pub url: Option<String>,
83 #[serde(default)]
84 pub title: Option<String>,
85}
86
87#[derive(Debug, Clone, Default, Deserialize, Serialize)]
89pub struct WireResult {
90 #[serde(default)]
91 pub action_id: Option<String>,
92 #[serde(default)]
93 pub output: Option<serde_json::Value>,
94 #[serde(default)]
95 pub error: Option<String>,
96}
97
98#[derive(Debug, Clone, Default, Deserialize, Serialize)]
100pub struct BrowserSession {
101 #[serde(default)]
102 pub id: Option<String>,
103 #[serde(default)]
104 pub name: Option<String>,
105 #[serde(default)]
106 pub description: Option<String>,
107 #[serde(default)]
108 pub created_at: Option<String>,
109 #[serde(default)]
110 pub updated_at: Option<String>,
111 #[serde(default)]
112 pub tags: Vec<String>,
113}