1use serde::{Deserialize, Serialize};
2use zerolaunch_plugin_api::host::PluginSdkConfig;
3use zerolaunch_plugin_api::services::focus_monitor::FocusEvent;
4use zerolaunch_plugin_api::services::hotkey::types::{HotkeyEvent, HotkeyEventFilter};
5use zerolaunch_plugin_api::services::installation_monitor::types::InstallationEvent;
6use zerolaunch_plugin_api::services::shell::CommandRunMode;
7use zerolaunch_plugin_api::services::IconRequest;
8use zerolaunch_plugin_api::{
9 CandidateCacheSnapshot, CandidateId, ExecutionContext, KeywordInputSource, PluginContext,
10 Query, ScoredCandidate, SearchCandidate, TargetType,
11};
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct InitializeParams {
17 #[serde(rename = "hostVersion")]
18 pub host_version: String,
19 #[serde(rename = "protocolVersion")]
20 pub protocol_version: String,
21 #[serde(rename = "dataDir")]
22 pub data_dir: String,
23 #[serde(rename = "logDir")]
24 pub log_dir: String,
25 #[serde(rename = "pluginId")]
26 pub plugin_id: String,
27 #[serde(rename = "locale")]
28 pub locale: String,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct InitializeResult {
33 #[serde(rename = "protocolVersion")]
34 pub protocol_version: String,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
40pub struct ComponentDescriptor {
41 #[serde(rename = "componentId")]
42 pub component_id: String,
43 #[serde(rename = "componentName")]
44 pub component_name: String,
45 #[serde(rename = "componentDescription", default)]
46 pub component_description: String,
47 #[serde(rename = "kind")]
49 pub kind: ComponentKind,
50 #[serde(rename = "priority", default = "default_component_priority")]
51 pub priority: u32,
52}
53
54fn default_component_priority() -> u32 {
56 50
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
63#[serde(tag = "type")]
64pub enum ComponentKind {
65 #[serde(rename = "plugin")]
67 Plugin,
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)]
174pub struct MatchQueryParams {
175 #[serde(rename = "rawQuery")]
177 pub raw_query: String,
178 #[serde(rename = "triggerKeywords")]
181 pub trigger_keywords: Vec<String>,
182}
183
184#[derive(Debug, Clone, Serialize, Deserialize)]
187pub struct ExecuteActionParams {
188 #[serde(rename = "pluginId")]
189 pub plugin_id: String,
190 #[serde(rename = "ctx")]
191 pub ctx: PluginContext,
192 #[serde(rename = "actionId")]
193 pub action_id: String,
194 #[serde(rename = "payload")]
195 pub payload: serde_json::Value,
196}
197
198#[derive(Debug, Clone, Serialize, Deserialize)]
201pub struct FetchCandidatesParams {
202 #[serde(rename = "componentId")]
203 pub component_id: String,
204}
205
206#[derive(Debug, Clone, Serialize, Deserialize)]
209pub struct FetchCandidatesResult {
210 #[serde(rename = "candidates")]
211 pub candidates: Vec<SearchCandidate>,
212}
213
214#[derive(Debug, Clone, Serialize, Deserialize)]
217pub struct SupportedTargetTypesParams {
218 #[serde(rename = "componentId")]
219 pub component_id: String,
220}
221
222#[derive(Debug, Clone, Serialize, Deserialize)]
225pub struct SupportedActionsParams {
226 #[serde(rename = "componentId")]
227 pub component_id: String,
228 #[serde(rename = "targetType")]
229 pub target_type: TargetType,
230}
231
232#[derive(Debug, Clone, Serialize, Deserialize)]
235pub struct ExecutorExecuteParams {
236 #[serde(rename = "componentId")]
237 pub component_id: String,
238 #[serde(rename = "executionCtx")]
241 pub execution_ctx: ExecutionContext,
242 #[serde(rename = "actionId")]
243 pub action_id: String,
244}
245
246#[derive(Debug, Clone, Serialize, Deserialize)]
247pub struct ExecutorExecuteResult {
248 #[serde(default)]
249 pub error: Option<String>,
250}
251
252#[derive(Debug, Clone, Serialize, Deserialize)]
259pub struct CalculateScoresParams {
260 #[serde(rename = "componentId")]
262 pub component_id: String,
263 #[serde(rename = "candidates")]
265 pub candidates: CandidateCacheSnapshot,
266 #[serde(rename = "query")]
268 pub query: String,
269}
270
271#[derive(Debug, Clone, Serialize, Deserialize)]
277pub struct BoosterBoostParams {
278 #[serde(rename = "componentId")]
280 pub component_id: String,
281 #[serde(rename = "candidates")]
283 pub candidates: CandidateCacheSnapshot,
284 #[serde(rename = "scored")]
286 pub scored: Vec<ScoredCandidate>,
287 #[serde(rename = "query")]
289 pub query: String,
290}
291
292#[derive(Debug, Clone, Serialize, Deserialize)]
298pub struct BoosterRecordParams {
299 #[serde(rename = "componentId")]
301 pub component_id: String,
302 #[serde(rename = "candidateId")]
304 pub candidate_id: CandidateId,
305 #[serde(rename = "candidates")]
307 pub candidates: CandidateCacheSnapshot,
308 #[serde(rename = "query")]
310 pub query: String,
311}
312
313#[derive(Debug, Clone, Serialize, Deserialize)]
325pub struct KeywordOptimizerInfo {
326 #[serde(rename = "inputSource")]
328 pub input_source: KeywordInputSource,
329 #[serde(rename = "priority")]
331 pub priority: u32,
332}
333
334impl KeywordOptimizerInfo {
335 pub fn fallback(priority: u32) -> Self {
340 Self {
341 input_source: KeywordInputSource::Refined,
342 priority,
343 }
344 }
345}
346
347#[derive(Debug, Clone, Serialize, Deserialize)]
349pub struct KeywordOptimizerInfoParams {
350 #[serde(rename = "componentId")]
352 pub component_id: String,
353}
354
355#[derive(Debug, Clone, Serialize, Deserialize)]
363pub struct KeywordOptimizeParams {
364 #[serde(rename = "componentId")]
366 pub component_id: String,
367 #[serde(rename = "keyword")]
369 pub keyword: String,
370 #[serde(rename = "inputSource", default)]
374 pub input_source: KeywordInputSource,
375}
376
377#[derive(Debug, Clone, Serialize, Deserialize)]
383pub struct KeywordInjectParams {
384 #[serde(rename = "componentId")]
386 pub component_id: String,
387 #[serde(rename = "candidate")]
389 pub candidate: SearchCandidate,
390}
391
392#[derive(Debug, Clone, Serialize, Deserialize)]
400pub struct InitParams {
401 #[serde(rename = "pluginId")]
403 pub plugin_id: String,
404 #[serde(rename = "ctx")]
406 pub ctx: PluginContext,
407}
408
409#[derive(Debug, Clone, Serialize, Deserialize)]
420pub struct ShutdownParams {
421 #[serde(rename = "ctx")]
424 pub ctx: PluginContext,
425}
426
427#[derive(Debug, Clone, Serialize, Deserialize)]
434pub struct InteractionPolicyParams {
435 #[serde(rename = "componentId")]
437 pub component_id: String,
438}
439
440#[derive(Debug, Clone, Serialize, Deserialize)]
446pub struct GetDefaultEnabledParams {
447 #[serde(rename = "componentId")]
449 pub component_id: String,
450}
451
452#[derive(Debug, Clone, Serialize, Deserialize)]
455pub struct LogParams {
456 #[serde(rename = "level")]
457 pub level: String,
458 #[serde(rename = "message")]
459 pub message: String,
460}
461
462#[derive(Debug, Clone, Serialize, Deserialize)]
465pub struct NotifyParams {
466 #[serde(rename = "title")]
467 pub title: String,
468 #[serde(rename = "message")]
469 pub message: String,
470}
471
472#[derive(Debug, Clone, Serialize, Deserialize)]
475pub struct ShellOpenParams {
476 #[serde(rename = "target")]
477 pub target: String,
478}
479
480#[derive(Debug, Clone, Serialize, Deserialize)]
483pub struct ShellOpenFolderParams {
484 #[serde(rename = "path")]
485 pub path: String,
486}
487
488#[derive(Debug, Clone, Serialize, Deserialize)]
491pub struct ShellExecuteElevationParams {
492 #[serde(rename = "path")]
493 pub path: String,
494}
495
496#[derive(Debug, Clone, Serialize, Deserialize)]
501pub struct ShellExecuteCommandParams {
502 #[serde(rename = "cmd")]
504 pub cmd: String,
505 #[serde(rename = "mode", default)]
507 pub mode: CommandRunMode,
508}
509
510#[derive(Debug, Clone, Serialize, Deserialize)]
513pub struct WindowActivateParams {
514 #[serde(rename = "pid")]
515 pub pid: u32,
516}
517
518#[derive(Debug, Clone, Serialize, Deserialize)]
525pub struct IconRequestParams {
526 #[serde(rename = "request")]
528 pub request: IconRequest,
529}
530
531#[derive(Debug, Clone, Serialize, Deserialize)]
534pub struct PathResolveParams {
535 #[serde(rename = "kind")]
536 pub kind: String,
537}
538
539#[derive(Debug, Clone, Serialize, Deserialize)]
542pub struct ResourceUploadParams {
543 #[serde(rename = "resourceId")]
544 pub resource_id: String,
545 #[serde(rename = "filePath")]
546 pub file_path: String,
547 #[serde(rename = "maxSize")]
548 #[serde(default)]
549 pub max_size: Option<usize>,
550}
551
552#[derive(Debug, Clone, Serialize, Deserialize)]
555pub struct ResourcePutParams {
556 #[serde(rename = "resourceId")]
557 pub resource_id: String,
558 #[serde(rename = "bytesB64")]
559 pub bytes_b64: String,
560}
561
562#[derive(Debug, Clone, Serialize, Deserialize)]
565pub struct ResourceGetParams {
566 #[serde(rename = "resourceId")]
567 pub resource_id: String,
568}
569
570#[derive(Debug, Clone, Serialize, Deserialize)]
573pub struct ResourceDeleteParams {
574 #[serde(rename = "resourceId")]
575 pub resource_id: String,
576}
577
578#[derive(Debug, Clone, Serialize, Deserialize)]
581pub struct ResourceListParams {}
582
583#[derive(Debug, Clone, Serialize, Deserialize)]
586pub struct ParameterResolveParams {
587 #[serde(rename = "userArgs")]
588 pub user_args: Vec<String>,
589 #[serde(rename = "template")]
592 pub template: String,
593}
594
595#[derive(Debug, Clone, Serialize, Deserialize)]
602pub struct SdkConfigUpdateParams {
603 #[serde(rename = "config")]
605 pub config: PluginSdkConfig,
606}
607
608#[derive(Debug, Clone, Serialize, Deserialize)]
612pub struct IconOverrideCacheParams {
613 #[serde(rename = "request")]
615 pub request: IconRequest,
616 #[serde(rename = "customIconPath")]
618 pub custom_icon_path: String,
619}
620
621#[derive(Debug, Clone, Serialize, Deserialize)]
625pub struct WindowActivateByProcessParams {
626 #[serde(rename = "processName")]
628 pub process_name: String,
629}
630
631#[derive(Debug, Clone, Serialize, Deserialize)]
635pub struct WindowActivateByTitleParams {
636 #[serde(rename = "title")]
638 pub title: String,
639}
640
641#[derive(Debug, Clone, Serialize, Deserialize)]
645pub struct ClipboardSetTextParams {
646 #[serde(rename = "text")]
648 pub text: String,
649}
650
651#[derive(Debug, Clone, Serialize, Deserialize)]
656pub struct AppLaunchParams {
657 #[serde(rename = "appId")]
659 pub app_id: String,
660 #[serde(rename = "args")]
662 #[serde(default)]
663 pub args: Option<Vec<String>>,
664}
665
666#[derive(Debug, Clone, Serialize, Deserialize)]
670pub struct AppIconPathParams {
671 #[serde(rename = "name")]
673 pub name: String,
674}
675
676#[derive(Debug, Clone, Serialize, Deserialize)]
680pub struct PathResolveLnkParams {
681 #[serde(rename = "lnkPath")]
683 pub lnk_path: String,
684}
685
686#[derive(Debug, Clone, Serialize, Deserialize)]
690pub struct PathLocalizedNamesParams {
691 #[serde(rename = "dirPath")]
693 pub dir_path: String,
694}
695
696#[derive(Debug, Clone, Serialize, Deserialize)]
700pub struct ParameterTemplateParams {
701 #[serde(rename = "template")]
703 pub template: String,
704}
705
706#[derive(Debug, Clone, Serialize, Deserialize)]
710pub struct CachePutParams {
711 #[serde(rename = "domain")]
713 pub domain: String,
714 #[serde(rename = "key")]
716 pub key: String,
717 #[serde(rename = "bytesB64")]
719 pub bytes_b64: String,
720}
721
722#[derive(Debug, Clone, Serialize, Deserialize)]
726pub struct CacheGetParams {
727 #[serde(rename = "domain")]
729 pub domain: String,
730 #[serde(rename = "key")]
732 pub key: String,
733}
734
735#[derive(Debug, Clone, Serialize, Deserialize)]
739pub struct CacheDeleteParams {
740 #[serde(rename = "domain")]
742 pub domain: String,
743 #[serde(rename = "key")]
745 pub key: String,
746}
747
748#[derive(Debug, Clone, Serialize, Deserialize)]
752pub struct CacheCleanupParams {
753 #[serde(rename = "domain")]
755 pub domain: String,
756 #[serde(rename = "maxEntries")]
758 pub max_entries: usize,
759}
760
761#[derive(Debug, Clone, Serialize, Deserialize)]
766pub struct TimerSetTimeoutParams {
767 #[serde(rename = "delayMs")]
769 pub delay_ms: u64,
770}
771
772#[derive(Debug, Clone, Serialize, Deserialize)]
776pub struct TimerSetIntervalParams {
777 #[serde(rename = "intervalMs")]
779 pub interval_ms: u64,
780}
781
782#[derive(Debug, Clone, Serialize, Deserialize)]
786pub struct TimerCancelParams {
787 #[serde(rename = "id")]
789 pub id: u64,
790}
791
792#[derive(Debug, Clone, Serialize, Deserialize)]
796pub struct TimerCancelAllParams {}
797
798#[derive(Debug, Clone, Serialize, Deserialize)]
802pub struct TimerFiredParams {
803 #[serde(rename = "id")]
805 pub id: u64,
806}
807
808#[derive(Debug, Clone, Serialize, Deserialize)]
812pub struct HotkeySubscribeParams {
813 #[serde(rename = "id")]
815 pub id: String,
816 #[serde(rename = "filter")]
818 pub filter: HotkeyEventFilter,
819}
820
821#[derive(Debug, Clone, Serialize, Deserialize)]
825pub struct HotkeyUnsubscribeParams {
826 #[serde(rename = "id")]
828 pub id: String,
829}
830
831#[derive(Debug, Clone, Serialize, Deserialize)]
835pub struct InstallationSubscribeParams {
836 #[serde(rename = "id")]
838 pub id: String,
839}
840
841#[derive(Debug, Clone, Serialize, Deserialize)]
843pub struct InstallationUnsubscribeParams {
844 #[serde(rename = "id")]
846 pub id: String,
847}
848
849#[derive(Debug, Clone, Serialize, Deserialize)]
853pub struct FocusSubscribeParams {
854 #[serde(rename = "id")]
856 pub id: String,
857}
858
859#[derive(Debug, Clone, Serialize, Deserialize)]
861pub struct FocusUnsubscribeParams {
862 #[serde(rename = "id")]
864 pub id: String,
865}
866
867#[derive(Debug, Clone, Serialize, Deserialize)]
872pub struct HotkeyEventParams {
873 #[serde(rename = "id")]
875 pub id: String,
876 #[serde(rename = "event")]
878 pub event: HotkeyEvent,
879}
880
881#[derive(Debug, Clone, Serialize, Deserialize)]
883pub struct InstallationEventParams {
884 #[serde(rename = "id")]
886 pub id: String,
887 #[serde(rename = "event")]
889 pub event: InstallationEvent,
890}
891
892#[derive(Debug, Clone, Serialize, Deserialize)]
894pub struct FocusEventParams {
895 #[serde(rename = "id")]
897 pub id: String,
898 #[serde(rename = "event")]
900 pub event: FocusEvent,
901}