1use serde::{Deserialize, Serialize};
2use zerolaunch_plugin_api::config::ComponentType;
3use zerolaunch_plugin_api::{
4 CandidateCacheSnapshot, CandidateId, ExecutionContext, PluginContext, Query, ScoredCandidate,
5 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 = "pluginVersion")]
29 pub plugin_version: String,
30 #[serde(rename = "protocolVersion")]
31 pub protocol_version: String,
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
37pub struct ComponentDescriptor {
38 #[serde(rename = "componentId")]
39 pub component_id: String,
40 #[serde(rename = "componentName")]
41 pub component_name: String,
42 #[serde(rename = "componentDescription", default)]
43 pub component_description: String,
44 #[serde(rename = "componentType")]
45 pub component_type: ComponentType,
46 #[serde(rename = "kind")]
47 pub kind: ComponentKind,
48 #[serde(rename = "priority", default = "default_component_priority")]
49 pub priority: u32,
50}
51
52fn default_component_priority() -> u32 {
54 50
55}
56
57#[derive(Debug, Clone, Serialize, Deserialize)]
61#[serde(tag = "type")]
62pub enum ComponentKind {
63 #[serde(rename = "plugin")]
64 Plugin {
65 #[serde(rename = "triggerKeywords")]
66 trigger_keywords: Vec<String>,
67 },
68 #[serde(rename = "data_source")]
69 DataSource,
70 #[serde(rename = "action_executor")]
71 ActionExecutor {
72 #[serde(rename = "targetTypes")]
73 target_types: Vec<TargetType>,
74 },
75 #[serde(rename = "search_engine")]
77 SearchEngine,
78 #[serde(rename = "score_booster")]
80 ScoreBooster,
81 #[serde(rename = "keyword_optimizer")]
84 KeywordOptimizer,
85 #[serde(rename = "keyword_injector")]
87 KeywordInjector,
88}
89
90#[derive(Debug, Clone, Serialize, Deserialize)]
93pub struct GetSettingsSchemaParams {
94 #[serde(rename = "componentId")]
95 pub component_id: String,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
101pub struct GetSettingsParams {
102 #[serde(rename = "componentId")]
103 pub component_id: String,
104}
105
106#[derive(Debug, Clone, Serialize, Deserialize)]
109pub struct ApplySettingsParams {
110 #[serde(rename = "componentId")]
111 pub component_id: String,
112 #[serde(rename = "settings")]
113 pub settings: serde_json::Value,
114}
115
116#[derive(Debug, Clone, Serialize, Deserialize)]
119pub struct ValidateSettingsParams {
120 #[serde(rename = "componentId")]
121 pub component_id: String,
122 #[serde(rename = "settings")]
123 pub settings: serde_json::Value,
124}
125
126#[derive(Debug, Clone, Serialize, Deserialize)]
127pub struct ValidateSettingsResult {
128 #[serde(default)]
129 pub error: Option<String>,
130}
131
132#[derive(Debug, Clone, Serialize, Deserialize)]
138pub struct ConfigActionsParams {
139 #[serde(rename = "componentId")]
140 pub component_id: String,
141}
142
143#[derive(Debug, Clone, Serialize, Deserialize)]
146pub struct ExecuteConfigActionParams {
147 #[serde(rename = "componentId")]
148 pub component_id: String,
149 #[serde(rename = "action")]
150 pub action: String,
151 #[serde(rename = "params")]
152 pub params: serde_json::Value,
153}
154
155#[derive(Debug, Clone, Serialize, Deserialize)]
158pub struct QueryParams {
159 #[serde(rename = "pluginId")]
160 pub plugin_id: String,
161 #[serde(rename = "ctx")]
162 pub ctx: PluginContext,
163 #[serde(rename = "query")]
164 pub query: Query,
165}
166
167#[derive(Debug, Clone, Serialize, Deserialize)]
170pub struct ExecuteActionParams {
171 #[serde(rename = "pluginId")]
172 pub plugin_id: String,
173 #[serde(rename = "ctx")]
174 pub ctx: PluginContext,
175 #[serde(rename = "actionId")]
176 pub action_id: String,
177 #[serde(rename = "payload")]
178 pub payload: serde_json::Value,
179}
180
181#[derive(Debug, Clone, Serialize, Deserialize)]
184pub struct FetchCandidatesParams {
185 #[serde(rename = "componentId")]
186 pub component_id: String,
187}
188
189#[derive(Debug, Clone, Serialize, Deserialize)]
192pub struct FetchCandidatesResult {
193 #[serde(rename = "candidates")]
194 pub candidates: Vec<SearchCandidate>,
195}
196
197#[derive(Debug, Clone, Serialize, Deserialize)]
200pub struct SupportedTargetTypesParams {
201 #[serde(rename = "componentId")]
202 pub component_id: String,
203}
204
205#[derive(Debug, Clone, Serialize, Deserialize)]
208pub struct SupportedActionsParams {
209 #[serde(rename = "componentId")]
210 pub component_id: String,
211 #[serde(rename = "targetType")]
212 pub target_type: TargetType,
213}
214
215#[derive(Debug, Clone, Serialize, Deserialize)]
218pub struct ExecutorExecuteParams {
219 #[serde(rename = "componentId")]
220 pub component_id: String,
221 #[serde(rename = "executionCtx")]
224 pub execution_ctx: ExecutionContext,
225 #[serde(rename = "actionId")]
226 pub action_id: String,
227}
228
229#[derive(Debug, Clone, Serialize, Deserialize)]
230pub struct ExecutorExecuteResult {
231 #[serde(default)]
232 pub error: Option<String>,
233}
234
235#[derive(Debug, Clone, Serialize, Deserialize)]
242pub struct CalculateScoresParams {
243 #[serde(rename = "componentId")]
245 pub component_id: String,
246 #[serde(rename = "candidates")]
248 pub candidates: CandidateCacheSnapshot,
249 #[serde(rename = "query")]
251 pub query: String,
252}
253
254#[derive(Debug, Clone, Serialize, Deserialize)]
260pub struct BoosterBoostParams {
261 #[serde(rename = "componentId")]
263 pub component_id: String,
264 #[serde(rename = "candidates")]
266 pub candidates: CandidateCacheSnapshot,
267 #[serde(rename = "scored")]
269 pub scored: Vec<ScoredCandidate>,
270 #[serde(rename = "query")]
272 pub query: String,
273}
274
275#[derive(Debug, Clone, Serialize, Deserialize)]
281pub struct BoosterRecordParams {
282 #[serde(rename = "componentId")]
284 pub component_id: String,
285 #[serde(rename = "candidateId")]
287 pub candidate_id: CandidateId,
288 #[serde(rename = "candidates")]
290 pub candidates: CandidateCacheSnapshot,
291 #[serde(rename = "query")]
293 pub query: String,
294}
295
296#[derive(Debug, Clone, Serialize, Deserialize)]
305pub struct KeywordOptimizerInfo {
306 #[serde(rename = "usesContext")]
308 pub uses_context: bool,
309 #[serde(rename = "priority")]
311 pub priority: u32,
312}
313
314#[derive(Debug, Clone, Serialize, Deserialize)]
316pub struct KeywordOptimizerInfoParams {
317 #[serde(rename = "componentId")]
319 pub component_id: String,
320}
321
322#[derive(Debug, Clone, Serialize, Deserialize)]
330pub struct KeywordOptimizeParams {
331 #[serde(rename = "componentId")]
333 pub component_id: String,
334 #[serde(rename = "keyword")]
336 pub keyword: String,
337}
338
339#[derive(Debug, Clone, Serialize, Deserialize)]
345pub struct KeywordInjectParams {
346 #[serde(rename = "componentId")]
348 pub component_id: String,
349 #[serde(rename = "candidate")]
351 pub candidate: SearchCandidate,
352}
353
354#[derive(Debug, Clone, Serialize, Deserialize)]
362pub struct InitParams {
363 #[serde(rename = "pluginId")]
365 pub plugin_id: String,
366 #[serde(rename = "ctx")]
368 pub ctx: PluginContext,
369}
370
371#[derive(Debug, Clone, Serialize, Deserialize)]
378pub struct InteractionPolicyParams {
379 #[serde(rename = "componentId")]
381 pub component_id: String,
382}
383
384#[derive(Debug, Clone, Serialize, Deserialize)]
390pub struct GetDefaultEnabledParams {
391 #[serde(rename = "componentId")]
393 pub component_id: String,
394}
395
396#[derive(Debug, Clone, Serialize, Deserialize)]
399pub struct LogParams {
400 #[serde(rename = "level")]
401 pub level: String,
402 #[serde(rename = "message")]
403 pub message: String,
404}
405
406#[derive(Debug, Clone, Serialize, Deserialize)]
409pub struct NotifyParams {
410 #[serde(rename = "title")]
411 pub title: String,
412 #[serde(rename = "message")]
413 pub message: String,
414}
415
416#[derive(Debug, Clone, Serialize, Deserialize)]
419pub struct ShellOpenParams {
420 #[serde(rename = "target")]
421 pub target: String,
422}
423
424#[derive(Debug, Clone, Serialize, Deserialize)]
427pub struct ShellOpenFolderParams {
428 #[serde(rename = "path")]
429 pub path: String,
430}
431
432#[derive(Debug, Clone, Serialize, Deserialize)]
435pub struct ShellExecuteElevationParams {
436 #[serde(rename = "path")]
437 pub path: String,
438}
439
440#[derive(Debug, Clone, Serialize, Deserialize)]
443pub struct ShellExecuteCommandParams {
444 #[serde(rename = "cmd")]
445 pub cmd: String,
446}
447
448#[derive(Debug, Clone, Serialize, Deserialize)]
451pub struct WindowActivateParams {
452 #[serde(rename = "pid")]
453 pub pid: u32,
454}
455
456#[derive(Debug, Clone, Serialize, Deserialize)]
461pub struct IconGetParams {
462 #[serde(rename = "request")]
463 pub request: serde_json::Value,
464 #[serde(rename = "level")]
465 pub level: String,
466}
467
468#[derive(Debug, Clone, Serialize, Deserialize)]
471pub struct PathResolveParams {
472 #[serde(rename = "kind")]
473 pub kind: String,
474}
475
476#[derive(Debug, Clone, Serialize, Deserialize)]
479pub struct ResourceUploadParams {
480 #[serde(rename = "resourceId")]
481 pub resource_id: String,
482 #[serde(rename = "filePath")]
483 pub file_path: String,
484 #[serde(rename = "maxSize")]
485 #[serde(default)]
486 pub max_size: Option<usize>,
487}
488
489#[derive(Debug, Clone, Serialize, Deserialize)]
492pub struct ResourcePutParams {
493 #[serde(rename = "resourceId")]
494 pub resource_id: String,
495 #[serde(rename = "bytesB64")]
496 pub bytes_b64: String,
497}
498
499#[derive(Debug, Clone, Serialize, Deserialize)]
502pub struct ResourceGetParams {
503 #[serde(rename = "resourceId")]
504 pub resource_id: String,
505}
506
507#[derive(Debug, Clone, Serialize, Deserialize)]
510pub struct ResourceDeleteParams {
511 #[serde(rename = "resourceId")]
512 pub resource_id: String,
513}
514
515#[derive(Debug, Clone, Serialize, Deserialize)]
518pub struct ResourceListParams {}
519
520#[derive(Debug, Clone, Serialize, Deserialize)]
523pub struct ParameterResolveParams {
524 #[serde(rename = "userArgs")]
525 pub user_args: Vec<String>,
526 #[serde(rename = "template")]
529 pub template: String,
530}