1use serde::{Deserialize, Serialize};
2use zerolaunch_plugin_api::config::ComponentType;
3use zerolaunch_plugin_api::{
4 CandidateCacheSnapshot, CandidateId, ExecutionContext, KeywordInputSource, PluginContext,
5 Query, ScoredCandidate, SearchCandidate, TargetType,
6};
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct InitializeParams {
12 #[serde(rename = "hostVersion")]
13 pub host_version: String,
14 #[serde(rename = "protocolVersion")]
15 pub protocol_version: String,
16 #[serde(rename = "dataDir")]
17 pub data_dir: String,
18 #[serde(rename = "logDir")]
19 pub log_dir: String,
20 #[serde(rename = "pluginId")]
21 pub plugin_id: String,
22 #[serde(rename = "locale")]
23 pub locale: String,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct InitializeResult {
28 #[serde(rename = "protocolVersion")]
29 pub protocol_version: String,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct ComponentDescriptor {
36 #[serde(rename = "componentId")]
37 pub component_id: String,
38 #[serde(rename = "componentName")]
39 pub component_name: String,
40 #[serde(rename = "componentDescription", default)]
41 pub component_description: String,
42 #[serde(rename = "componentType")]
43 pub component_type: ComponentType,
44 #[serde(rename = "kind")]
45 pub kind: ComponentKind,
46 #[serde(rename = "priority", default = "default_component_priority")]
47 pub priority: u32,
48}
49
50fn default_component_priority() -> u32 {
52 50
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
59#[serde(tag = "type")]
60pub enum ComponentKind {
61 #[serde(rename = "plugin")]
63 Plugin,
64 #[serde(rename = "data_source")]
65 DataSource,
66 #[serde(rename = "action_executor")]
67 ActionExecutor {
68 #[serde(rename = "targetTypes")]
69 target_types: Vec<TargetType>,
70 },
71 #[serde(rename = "search_engine")]
73 SearchEngine,
74 #[serde(rename = "score_booster")]
76 ScoreBooster,
77 #[serde(rename = "keyword_optimizer")]
80 KeywordOptimizer,
81 #[serde(rename = "keyword_injector")]
83 KeywordInjector,
84}
85
86#[derive(Debug, Clone, Serialize, Deserialize)]
89pub struct GetSettingsSchemaParams {
90 #[serde(rename = "componentId")]
91 pub component_id: String,
92}
93
94#[derive(Debug, Clone, Serialize, Deserialize)]
97pub struct GetSettingsParams {
98 #[serde(rename = "componentId")]
99 pub component_id: String,
100}
101
102#[derive(Debug, Clone, Serialize, Deserialize)]
105pub struct ApplySettingsParams {
106 #[serde(rename = "componentId")]
107 pub component_id: String,
108 #[serde(rename = "settings")]
109 pub settings: serde_json::Value,
110}
111
112#[derive(Debug, Clone, Serialize, Deserialize)]
115pub struct ValidateSettingsParams {
116 #[serde(rename = "componentId")]
117 pub component_id: String,
118 #[serde(rename = "settings")]
119 pub settings: serde_json::Value,
120}
121
122#[derive(Debug, Clone, Serialize, Deserialize)]
123pub struct ValidateSettingsResult {
124 #[serde(default)]
125 pub error: Option<String>,
126}
127
128#[derive(Debug, Clone, Serialize, Deserialize)]
134pub struct ConfigActionsParams {
135 #[serde(rename = "componentId")]
136 pub component_id: String,
137}
138
139#[derive(Debug, Clone, Serialize, Deserialize)]
142pub struct ExecuteConfigActionParams {
143 #[serde(rename = "componentId")]
144 pub component_id: String,
145 #[serde(rename = "action")]
146 pub action: String,
147 #[serde(rename = "params")]
148 pub params: serde_json::Value,
149}
150
151#[derive(Debug, Clone, Serialize, Deserialize)]
154pub struct QueryParams {
155 #[serde(rename = "pluginId")]
156 pub plugin_id: String,
157 #[serde(rename = "ctx")]
158 pub ctx: PluginContext,
159 #[serde(rename = "query")]
160 pub query: Query,
161}
162
163#[derive(Debug, Clone, Serialize, Deserialize)]
166pub struct ExecuteActionParams {
167 #[serde(rename = "pluginId")]
168 pub plugin_id: String,
169 #[serde(rename = "ctx")]
170 pub ctx: PluginContext,
171 #[serde(rename = "actionId")]
172 pub action_id: String,
173 #[serde(rename = "payload")]
174 pub payload: serde_json::Value,
175}
176
177#[derive(Debug, Clone, Serialize, Deserialize)]
180pub struct FetchCandidatesParams {
181 #[serde(rename = "componentId")]
182 pub component_id: String,
183}
184
185#[derive(Debug, Clone, Serialize, Deserialize)]
188pub struct FetchCandidatesResult {
189 #[serde(rename = "candidates")]
190 pub candidates: Vec<SearchCandidate>,
191}
192
193#[derive(Debug, Clone, Serialize, Deserialize)]
196pub struct SupportedTargetTypesParams {
197 #[serde(rename = "componentId")]
198 pub component_id: String,
199}
200
201#[derive(Debug, Clone, Serialize, Deserialize)]
204pub struct SupportedActionsParams {
205 #[serde(rename = "componentId")]
206 pub component_id: String,
207 #[serde(rename = "targetType")]
208 pub target_type: TargetType,
209}
210
211#[derive(Debug, Clone, Serialize, Deserialize)]
214pub struct ExecutorExecuteParams {
215 #[serde(rename = "componentId")]
216 pub component_id: String,
217 #[serde(rename = "executionCtx")]
220 pub execution_ctx: ExecutionContext,
221 #[serde(rename = "actionId")]
222 pub action_id: String,
223}
224
225#[derive(Debug, Clone, Serialize, Deserialize)]
226pub struct ExecutorExecuteResult {
227 #[serde(default)]
228 pub error: Option<String>,
229}
230
231#[derive(Debug, Clone, Serialize, Deserialize)]
238pub struct CalculateScoresParams {
239 #[serde(rename = "componentId")]
241 pub component_id: String,
242 #[serde(rename = "candidates")]
244 pub candidates: CandidateCacheSnapshot,
245 #[serde(rename = "query")]
247 pub query: String,
248}
249
250#[derive(Debug, Clone, Serialize, Deserialize)]
256pub struct BoosterBoostParams {
257 #[serde(rename = "componentId")]
259 pub component_id: String,
260 #[serde(rename = "candidates")]
262 pub candidates: CandidateCacheSnapshot,
263 #[serde(rename = "scored")]
265 pub scored: Vec<ScoredCandidate>,
266 #[serde(rename = "query")]
268 pub query: String,
269}
270
271#[derive(Debug, Clone, Serialize, Deserialize)]
277pub struct BoosterRecordParams {
278 #[serde(rename = "componentId")]
280 pub component_id: String,
281 #[serde(rename = "candidateId")]
283 pub candidate_id: CandidateId,
284 #[serde(rename = "candidates")]
286 pub candidates: CandidateCacheSnapshot,
287 #[serde(rename = "query")]
289 pub query: String,
290}
291
292#[derive(Debug, Clone, Serialize, Deserialize)]
304pub struct KeywordOptimizerInfo {
305 #[serde(rename = "inputSource")]
307 pub input_source: KeywordInputSource,
308 #[serde(rename = "priority")]
310 pub priority: u32,
311}
312
313#[derive(Debug, Clone, Serialize, Deserialize)]
315pub struct KeywordOptimizerInfoParams {
316 #[serde(rename = "componentId")]
318 pub component_id: String,
319}
320
321#[derive(Debug, Clone, Serialize, Deserialize)]
329pub struct KeywordOptimizeParams {
330 #[serde(rename = "componentId")]
332 pub component_id: String,
333 #[serde(rename = "keyword")]
335 pub keyword: String,
336 #[serde(rename = "inputSource", default)]
340 pub input_source: KeywordInputSource,
341}
342
343#[derive(Debug, Clone, Serialize, Deserialize)]
349pub struct KeywordInjectParams {
350 #[serde(rename = "componentId")]
352 pub component_id: String,
353 #[serde(rename = "candidate")]
355 pub candidate: SearchCandidate,
356}
357
358#[derive(Debug, Clone, Serialize, Deserialize)]
366pub struct InitParams {
367 #[serde(rename = "pluginId")]
369 pub plugin_id: String,
370 #[serde(rename = "ctx")]
372 pub ctx: PluginContext,
373}
374
375#[derive(Debug, Clone, Serialize, Deserialize)]
382pub struct InteractionPolicyParams {
383 #[serde(rename = "componentId")]
385 pub component_id: String,
386}
387
388#[derive(Debug, Clone, Serialize, Deserialize)]
394pub struct GetDefaultEnabledParams {
395 #[serde(rename = "componentId")]
397 pub component_id: String,
398}
399
400#[derive(Debug, Clone, Serialize, Deserialize)]
403pub struct LogParams {
404 #[serde(rename = "level")]
405 pub level: String,
406 #[serde(rename = "message")]
407 pub message: String,
408}
409
410#[derive(Debug, Clone, Serialize, Deserialize)]
413pub struct NotifyParams {
414 #[serde(rename = "title")]
415 pub title: String,
416 #[serde(rename = "message")]
417 pub message: String,
418}
419
420#[derive(Debug, Clone, Serialize, Deserialize)]
423pub struct ShellOpenParams {
424 #[serde(rename = "target")]
425 pub target: String,
426}
427
428#[derive(Debug, Clone, Serialize, Deserialize)]
431pub struct ShellOpenFolderParams {
432 #[serde(rename = "path")]
433 pub path: String,
434}
435
436#[derive(Debug, Clone, Serialize, Deserialize)]
439pub struct ShellExecuteElevationParams {
440 #[serde(rename = "path")]
441 pub path: String,
442}
443
444#[derive(Debug, Clone, Serialize, Deserialize)]
447pub struct ShellExecuteCommandParams {
448 #[serde(rename = "cmd")]
449 pub cmd: String,
450}
451
452#[derive(Debug, Clone, Serialize, Deserialize)]
455pub struct WindowActivateParams {
456 #[serde(rename = "pid")]
457 pub pid: u32,
458}
459
460#[derive(Debug, Clone, Serialize, Deserialize)]
465pub struct IconGetParams {
466 #[serde(rename = "request")]
467 pub request: serde_json::Value,
468 #[serde(rename = "level")]
469 pub level: String,
470}
471
472#[derive(Debug, Clone, Serialize, Deserialize)]
475pub struct PathResolveParams {
476 #[serde(rename = "kind")]
477 pub kind: String,
478}
479
480#[derive(Debug, Clone, Serialize, Deserialize)]
483pub struct ResourceUploadParams {
484 #[serde(rename = "resourceId")]
485 pub resource_id: String,
486 #[serde(rename = "filePath")]
487 pub file_path: String,
488 #[serde(rename = "maxSize")]
489 #[serde(default)]
490 pub max_size: Option<usize>,
491}
492
493#[derive(Debug, Clone, Serialize, Deserialize)]
496pub struct ResourcePutParams {
497 #[serde(rename = "resourceId")]
498 pub resource_id: String,
499 #[serde(rename = "bytesB64")]
500 pub bytes_b64: String,
501}
502
503#[derive(Debug, Clone, Serialize, Deserialize)]
506pub struct ResourceGetParams {
507 #[serde(rename = "resourceId")]
508 pub resource_id: String,
509}
510
511#[derive(Debug, Clone, Serialize, Deserialize)]
514pub struct ResourceDeleteParams {
515 #[serde(rename = "resourceId")]
516 pub resource_id: String,
517}
518
519#[derive(Debug, Clone, Serialize, Deserialize)]
522pub struct ResourceListParams {}
523
524#[derive(Debug, Clone, Serialize, Deserialize)]
527pub struct ParameterResolveParams {
528 #[serde(rename = "userArgs")]
529 pub user_args: Vec<String>,
530 #[serde(rename = "template")]
533 pub template: String,
534}