Skip to main content

anakin/
types.rs

1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4/// Result of a successful scrape.
5#[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/// Result of a /map call: discovered links for a domain.
28#[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/// Result of a /crawl call: a batch of scraped pages.
39#[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/// Result of a synchronous /search call.
50#[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/// Result of an /agentic-search call.
69#[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/// Result of a Wire (Holocron) action execution.
88#[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/// A saved browser session.
99#[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}