oxios_kernel/skill/clawhub/
types.rs1#![allow(missing_docs)]
2use std::collections::HashMap;
7
8use serde::Deserialize;
9
10#[derive(Debug, Clone, serde::Serialize, Deserialize)]
12pub struct ClawHubSearchResult {
13 pub score: f64,
14 pub slug: String,
15 #[serde(rename = "displayName", default)]
16 pub display_name: String,
17 pub summary: Option<String>,
18 pub version: Option<String>,
19 #[serde(rename = "updatedAt", default)]
20 pub updated_at: Option<i64>,
21}
22
23#[derive(Debug, Clone, serde::Serialize, Deserialize)]
25#[serde(deny_unknown_fields)]
26pub struct ClawHubSkillDetail {
27 #[serde(default)]
28 pub skill: Option<ClawHubSkillMeta>,
29 #[serde(rename = "latestVersion", default)]
30 pub latest_version: Option<ClawHubVersion>,
31 #[serde(default)]
32 pub metadata: Option<ClawHubMetadata>,
33 #[serde(default)]
34 pub owner: Option<ClawHubOwner>,
35}
36
37#[derive(Debug, Clone, serde::Serialize, Deserialize)]
39#[serde(deny_unknown_fields)]
40pub struct ClawHubSkillMeta {
41 pub slug: String,
42 #[serde(rename = "displayName", default)]
43 pub display_name: String,
44 pub summary: Option<String>,
45 #[serde(default)]
46 pub tags: Option<HashMap<String, String>>,
47 #[serde(rename = "createdAt", default)]
48 pub created_at: i64,
49 #[serde(rename = "updatedAt", default)]
50 pub updated_at: i64,
51}
52
53#[derive(Debug, Clone, serde::Serialize, Deserialize)]
55#[serde(deny_unknown_fields)]
56pub struct ClawHubVersion {
57 pub version: String,
58 #[serde(rename = "createdAt", default)]
59 pub created_at: i64,
60 pub changelog: Option<String>,
61}
62
63#[derive(Debug, Clone, serde::Serialize, Deserialize)]
65#[serde(deny_unknown_fields)]
66pub struct ClawHubMetadata {
67 #[serde(default)]
68 pub os: Option<Vec<String>>,
69 #[serde(default)]
70 pub systems: Option<Vec<String>>,
71}
72
73#[derive(Debug, Clone, serde::Serialize, Deserialize)]
75#[serde(deny_unknown_fields)]
76pub struct ClawHubOwner {
77 #[serde(default)]
78 pub handle: Option<String>,
79 #[serde(rename = "displayName", default)]
80 pub display_name: Option<String>,
81 #[serde(default)]
82 pub image: Option<String>,
83}
84
85#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
87pub struct ClawHubOrigin {
88 pub version: u32,
89 pub registry: String,
90 pub slug: String,
91 #[serde(rename = "installedVersion")]
92 pub installed_version: String,
93 #[serde(rename = "installedAt")]
94 pub installed_at: String,
95 #[serde(rename = "sha256", skip_serializing_if = "Option::is_none")]
97 pub sha256: Option<String>,
98}
99
100#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
102pub struct ClawHubLockfile {
103 pub version: u32,
104 pub skills: HashMap<String, ClawHubLockEntry>,
105}
106
107#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
109pub struct ClawHubLockEntry {
110 pub version: String,
111 #[serde(rename = "installedAt")]
112 pub installed_at: String,
113}
114
115#[derive(Debug, Clone, Deserialize)]
117pub struct SearchResponse {
118 pub results: Vec<ClawHubSearchResult>,
119}