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)]
170pub struct MatchQueryParams {
171 #[serde(rename = "rawQuery")]
173 pub raw_query: String,
174 #[serde(rename = "triggerKeywords")]
177 pub trigger_keywords: Vec<String>,
178}
179
180#[derive(Debug, Clone, Serialize, Deserialize)]
183pub struct ExecuteActionParams {
184 #[serde(rename = "pluginId")]
185 pub plugin_id: String,
186 #[serde(rename = "ctx")]
187 pub ctx: PluginContext,
188 #[serde(rename = "actionId")]
189 pub action_id: String,
190 #[serde(rename = "payload")]
191 pub payload: serde_json::Value,
192}
193
194#[derive(Debug, Clone, Serialize, Deserialize)]
197pub struct FetchCandidatesParams {
198 #[serde(rename = "componentId")]
199 pub component_id: String,
200}
201
202#[derive(Debug, Clone, Serialize, Deserialize)]
205pub struct FetchCandidatesResult {
206 #[serde(rename = "candidates")]
207 pub candidates: Vec<SearchCandidate>,
208}
209
210#[derive(Debug, Clone, Serialize, Deserialize)]
213pub struct SupportedTargetTypesParams {
214 #[serde(rename = "componentId")]
215 pub component_id: String,
216}
217
218#[derive(Debug, Clone, Serialize, Deserialize)]
221pub struct SupportedActionsParams {
222 #[serde(rename = "componentId")]
223 pub component_id: String,
224 #[serde(rename = "targetType")]
225 pub target_type: TargetType,
226}
227
228#[derive(Debug, Clone, Serialize, Deserialize)]
231pub struct ExecutorExecuteParams {
232 #[serde(rename = "componentId")]
233 pub component_id: String,
234 #[serde(rename = "executionCtx")]
237 pub execution_ctx: ExecutionContext,
238 #[serde(rename = "actionId")]
239 pub action_id: String,
240}
241
242#[derive(Debug, Clone, Serialize, Deserialize)]
243pub struct ExecutorExecuteResult {
244 #[serde(default)]
245 pub error: Option<String>,
246}
247
248#[derive(Debug, Clone, Serialize, Deserialize)]
255pub struct CalculateScoresParams {
256 #[serde(rename = "componentId")]
258 pub component_id: String,
259 #[serde(rename = "candidates")]
261 pub candidates: CandidateCacheSnapshot,
262 #[serde(rename = "query")]
264 pub query: String,
265}
266
267#[derive(Debug, Clone, Serialize, Deserialize)]
273pub struct BoosterBoostParams {
274 #[serde(rename = "componentId")]
276 pub component_id: String,
277 #[serde(rename = "candidates")]
279 pub candidates: CandidateCacheSnapshot,
280 #[serde(rename = "scored")]
282 pub scored: Vec<ScoredCandidate>,
283 #[serde(rename = "query")]
285 pub query: String,
286}
287
288#[derive(Debug, Clone, Serialize, Deserialize)]
294pub struct BoosterRecordParams {
295 #[serde(rename = "componentId")]
297 pub component_id: String,
298 #[serde(rename = "candidateId")]
300 pub candidate_id: CandidateId,
301 #[serde(rename = "candidates")]
303 pub candidates: CandidateCacheSnapshot,
304 #[serde(rename = "query")]
306 pub query: String,
307}
308
309#[derive(Debug, Clone, Serialize, Deserialize)]
321pub struct KeywordOptimizerInfo {
322 #[serde(rename = "inputSource")]
324 pub input_source: KeywordInputSource,
325 #[serde(rename = "priority")]
327 pub priority: u32,
328}
329
330#[derive(Debug, Clone, Serialize, Deserialize)]
332pub struct KeywordOptimizerInfoParams {
333 #[serde(rename = "componentId")]
335 pub component_id: String,
336}
337
338#[derive(Debug, Clone, Serialize, Deserialize)]
346pub struct KeywordOptimizeParams {
347 #[serde(rename = "componentId")]
349 pub component_id: String,
350 #[serde(rename = "keyword")]
352 pub keyword: String,
353 #[serde(rename = "inputSource", default)]
357 pub input_source: KeywordInputSource,
358}
359
360#[derive(Debug, Clone, Serialize, Deserialize)]
366pub struct KeywordInjectParams {
367 #[serde(rename = "componentId")]
369 pub component_id: String,
370 #[serde(rename = "candidate")]
372 pub candidate: SearchCandidate,
373}
374
375#[derive(Debug, Clone, Serialize, Deserialize)]
383pub struct InitParams {
384 #[serde(rename = "pluginId")]
386 pub plugin_id: String,
387 #[serde(rename = "ctx")]
389 pub ctx: PluginContext,
390}
391
392#[derive(Debug, Clone, Serialize, Deserialize)]
399pub struct InteractionPolicyParams {
400 #[serde(rename = "componentId")]
402 pub component_id: String,
403}
404
405#[derive(Debug, Clone, Serialize, Deserialize)]
411pub struct GetDefaultEnabledParams {
412 #[serde(rename = "componentId")]
414 pub component_id: String,
415}
416
417#[derive(Debug, Clone, Serialize, Deserialize)]
420pub struct LogParams {
421 #[serde(rename = "level")]
422 pub level: String,
423 #[serde(rename = "message")]
424 pub message: String,
425}
426
427#[derive(Debug, Clone, Serialize, Deserialize)]
430pub struct NotifyParams {
431 #[serde(rename = "title")]
432 pub title: String,
433 #[serde(rename = "message")]
434 pub message: String,
435}
436
437#[derive(Debug, Clone, Serialize, Deserialize)]
440pub struct ShellOpenParams {
441 #[serde(rename = "target")]
442 pub target: String,
443}
444
445#[derive(Debug, Clone, Serialize, Deserialize)]
448pub struct ShellOpenFolderParams {
449 #[serde(rename = "path")]
450 pub path: String,
451}
452
453#[derive(Debug, Clone, Serialize, Deserialize)]
456pub struct ShellExecuteElevationParams {
457 #[serde(rename = "path")]
458 pub path: String,
459}
460
461#[derive(Debug, Clone, Serialize, Deserialize)]
464pub struct ShellExecuteCommandParams {
465 #[serde(rename = "cmd")]
466 pub cmd: String,
467}
468
469#[derive(Debug, Clone, Serialize, Deserialize)]
472pub struct WindowActivateParams {
473 #[serde(rename = "pid")]
474 pub pid: u32,
475}
476
477#[derive(Debug, Clone, Serialize, Deserialize)]
482pub struct IconGetParams {
483 #[serde(rename = "request")]
484 pub request: serde_json::Value,
485 #[serde(rename = "level")]
486 pub level: String,
487}
488
489#[derive(Debug, Clone, Serialize, Deserialize)]
492pub struct PathResolveParams {
493 #[serde(rename = "kind")]
494 pub kind: String,
495}
496
497#[derive(Debug, Clone, Serialize, Deserialize)]
500pub struct ResourceUploadParams {
501 #[serde(rename = "resourceId")]
502 pub resource_id: String,
503 #[serde(rename = "filePath")]
504 pub file_path: String,
505 #[serde(rename = "maxSize")]
506 #[serde(default)]
507 pub max_size: Option<usize>,
508}
509
510#[derive(Debug, Clone, Serialize, Deserialize)]
513pub struct ResourcePutParams {
514 #[serde(rename = "resourceId")]
515 pub resource_id: String,
516 #[serde(rename = "bytesB64")]
517 pub bytes_b64: String,
518}
519
520#[derive(Debug, Clone, Serialize, Deserialize)]
523pub struct ResourceGetParams {
524 #[serde(rename = "resourceId")]
525 pub resource_id: String,
526}
527
528#[derive(Debug, Clone, Serialize, Deserialize)]
531pub struct ResourceDeleteParams {
532 #[serde(rename = "resourceId")]
533 pub resource_id: String,
534}
535
536#[derive(Debug, Clone, Serialize, Deserialize)]
539pub struct ResourceListParams {}
540
541#[derive(Debug, Clone, Serialize, Deserialize)]
544pub struct ParameterResolveParams {
545 #[serde(rename = "userArgs")]
546 pub user_args: Vec<String>,
547 #[serde(rename = "template")]
550 pub template: String,
551}