1use serde::{Deserialize, Serialize};
2use zerolaunch_plugin_api::config::ComponentType;
3use zerolaunch_plugin_api::host::PluginSdkConfig;
4use zerolaunch_plugin_api::services::focus_monitor::FocusEvent;
5use zerolaunch_plugin_api::services::hotkey::types::{HotkeyEvent, HotkeyEventFilter};
6use zerolaunch_plugin_api::services::installation_monitor::types::InstallationEvent;
7use zerolaunch_plugin_api::services::shell::CommandRunMode;
8use zerolaunch_plugin_api::services::IconRequest;
9use zerolaunch_plugin_api::{
10 CandidateCacheSnapshot, CandidateId, ExecutionContext, KeywordInputSource, PluginContext,
11 Query, ScoredCandidate, SearchCandidate, TargetType,
12};
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct InitializeParams {
18 #[serde(rename = "hostVersion")]
19 pub host_version: String,
20 #[serde(rename = "protocolVersion")]
21 pub protocol_version: String,
22 #[serde(rename = "dataDir")]
23 pub data_dir: String,
24 #[serde(rename = "logDir")]
25 pub log_dir: String,
26 #[serde(rename = "pluginId")]
27 pub plugin_id: String,
28 #[serde(rename = "locale")]
29 pub locale: String,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct InitializeResult {
34 #[serde(rename = "protocolVersion")]
35 pub protocol_version: String,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
41pub struct ComponentDescriptor {
42 #[serde(rename = "componentId")]
43 pub component_id: String,
44 #[serde(rename = "componentName")]
45 pub component_name: String,
46 #[serde(rename = "componentDescription", default)]
47 pub component_description: String,
48 #[serde(rename = "componentType")]
49 pub component_type: ComponentType,
50 #[serde(rename = "kind")]
51 pub kind: ComponentKind,
52 #[serde(rename = "priority", default = "default_component_priority")]
53 pub priority: u32,
54}
55
56fn default_component_priority() -> u32 {
58 50
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize)]
65#[serde(tag = "type")]
66pub enum ComponentKind {
67 #[serde(rename = "plugin")]
69 Plugin,
70 #[serde(rename = "data_source")]
71 DataSource,
72 #[serde(rename = "action_executor")]
73 ActionExecutor {
74 #[serde(rename = "targetTypes")]
75 target_types: Vec<TargetType>,
76 },
77 #[serde(rename = "search_engine")]
79 SearchEngine,
80 #[serde(rename = "score_booster")]
82 ScoreBooster,
83 #[serde(rename = "keyword_optimizer")]
86 KeywordOptimizer,
87 #[serde(rename = "keyword_injector")]
89 KeywordInjector,
90}
91
92#[derive(Debug, Clone, Serialize, Deserialize)]
95pub struct GetSettingsSchemaParams {
96 #[serde(rename = "componentId")]
97 pub component_id: String,
98}
99
100#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct GetSettingsParams {
104 #[serde(rename = "componentId")]
105 pub component_id: String,
106}
107
108#[derive(Debug, Clone, Serialize, Deserialize)]
111pub struct ApplySettingsParams {
112 #[serde(rename = "componentId")]
113 pub component_id: String,
114 #[serde(rename = "settings")]
115 pub settings: serde_json::Value,
116}
117
118#[derive(Debug, Clone, Serialize, Deserialize)]
121pub struct ValidateSettingsParams {
122 #[serde(rename = "componentId")]
123 pub component_id: String,
124 #[serde(rename = "settings")]
125 pub settings: serde_json::Value,
126}
127
128#[derive(Debug, Clone, Serialize, Deserialize)]
129pub struct ValidateSettingsResult {
130 #[serde(default)]
131 pub error: Option<String>,
132}
133
134#[derive(Debug, Clone, Serialize, Deserialize)]
140pub struct ConfigActionsParams {
141 #[serde(rename = "componentId")]
142 pub component_id: String,
143}
144
145#[derive(Debug, Clone, Serialize, Deserialize)]
148pub struct ExecuteConfigActionParams {
149 #[serde(rename = "componentId")]
150 pub component_id: String,
151 #[serde(rename = "action")]
152 pub action: String,
153 #[serde(rename = "params")]
154 pub params: serde_json::Value,
155}
156
157#[derive(Debug, Clone, Serialize, Deserialize)]
160pub struct QueryParams {
161 #[serde(rename = "pluginId")]
162 pub plugin_id: String,
163 #[serde(rename = "ctx")]
164 pub ctx: PluginContext,
165 #[serde(rename = "query")]
166 pub query: Query,
167}
168
169#[derive(Debug, Clone, Serialize, Deserialize)]
176pub struct MatchQueryParams {
177 #[serde(rename = "rawQuery")]
179 pub raw_query: String,
180 #[serde(rename = "triggerKeywords")]
183 pub trigger_keywords: Vec<String>,
184}
185
186#[derive(Debug, Clone, Serialize, Deserialize)]
189pub struct ExecuteActionParams {
190 #[serde(rename = "pluginId")]
191 pub plugin_id: String,
192 #[serde(rename = "ctx")]
193 pub ctx: PluginContext,
194 #[serde(rename = "actionId")]
195 pub action_id: String,
196 #[serde(rename = "payload")]
197 pub payload: serde_json::Value,
198}
199
200#[derive(Debug, Clone, Serialize, Deserialize)]
203pub struct FetchCandidatesParams {
204 #[serde(rename = "componentId")]
205 pub component_id: String,
206}
207
208#[derive(Debug, Clone, Serialize, Deserialize)]
211pub struct FetchCandidatesResult {
212 #[serde(rename = "candidates")]
213 pub candidates: Vec<SearchCandidate>,
214}
215
216#[derive(Debug, Clone, Serialize, Deserialize)]
219pub struct SupportedTargetTypesParams {
220 #[serde(rename = "componentId")]
221 pub component_id: String,
222}
223
224#[derive(Debug, Clone, Serialize, Deserialize)]
227pub struct SupportedActionsParams {
228 #[serde(rename = "componentId")]
229 pub component_id: String,
230 #[serde(rename = "targetType")]
231 pub target_type: TargetType,
232}
233
234#[derive(Debug, Clone, Serialize, Deserialize)]
237pub struct ExecutorExecuteParams {
238 #[serde(rename = "componentId")]
239 pub component_id: String,
240 #[serde(rename = "executionCtx")]
243 pub execution_ctx: ExecutionContext,
244 #[serde(rename = "actionId")]
245 pub action_id: String,
246}
247
248#[derive(Debug, Clone, Serialize, Deserialize)]
249pub struct ExecutorExecuteResult {
250 #[serde(default)]
251 pub error: Option<String>,
252}
253
254#[derive(Debug, Clone, Serialize, Deserialize)]
261pub struct CalculateScoresParams {
262 #[serde(rename = "componentId")]
264 pub component_id: String,
265 #[serde(rename = "candidates")]
267 pub candidates: CandidateCacheSnapshot,
268 #[serde(rename = "query")]
270 pub query: String,
271}
272
273#[derive(Debug, Clone, Serialize, Deserialize)]
279pub struct BoosterBoostParams {
280 #[serde(rename = "componentId")]
282 pub component_id: String,
283 #[serde(rename = "candidates")]
285 pub candidates: CandidateCacheSnapshot,
286 #[serde(rename = "scored")]
288 pub scored: Vec<ScoredCandidate>,
289 #[serde(rename = "query")]
291 pub query: String,
292}
293
294#[derive(Debug, Clone, Serialize, Deserialize)]
300pub struct BoosterRecordParams {
301 #[serde(rename = "componentId")]
303 pub component_id: String,
304 #[serde(rename = "candidateId")]
306 pub candidate_id: CandidateId,
307 #[serde(rename = "candidates")]
309 pub candidates: CandidateCacheSnapshot,
310 #[serde(rename = "query")]
312 pub query: String,
313}
314
315#[derive(Debug, Clone, Serialize, Deserialize)]
327pub struct KeywordOptimizerInfo {
328 #[serde(rename = "inputSource")]
330 pub input_source: KeywordInputSource,
331 #[serde(rename = "priority")]
333 pub priority: u32,
334}
335
336impl KeywordOptimizerInfo {
337 pub fn fallback(priority: u32) -> Self {
342 Self {
343 input_source: KeywordInputSource::Refined,
344 priority,
345 }
346 }
347}
348
349#[derive(Debug, Clone, Serialize, Deserialize)]
351pub struct KeywordOptimizerInfoParams {
352 #[serde(rename = "componentId")]
354 pub component_id: String,
355}
356
357#[derive(Debug, Clone, Serialize, Deserialize)]
365pub struct KeywordOptimizeParams {
366 #[serde(rename = "componentId")]
368 pub component_id: String,
369 #[serde(rename = "keyword")]
371 pub keyword: String,
372 #[serde(rename = "inputSource", default)]
376 pub input_source: KeywordInputSource,
377}
378
379#[derive(Debug, Clone, Serialize, Deserialize)]
385pub struct KeywordInjectParams {
386 #[serde(rename = "componentId")]
388 pub component_id: String,
389 #[serde(rename = "candidate")]
391 pub candidate: SearchCandidate,
392}
393
394#[derive(Debug, Clone, Serialize, Deserialize)]
402pub struct InitParams {
403 #[serde(rename = "pluginId")]
405 pub plugin_id: String,
406 #[serde(rename = "ctx")]
408 pub ctx: PluginContext,
409}
410
411#[derive(Debug, Clone, Serialize, Deserialize)]
418pub struct InteractionPolicyParams {
419 #[serde(rename = "componentId")]
421 pub component_id: String,
422}
423
424#[derive(Debug, Clone, Serialize, Deserialize)]
430pub struct GetDefaultEnabledParams {
431 #[serde(rename = "componentId")]
433 pub component_id: String,
434}
435
436#[derive(Debug, Clone, Serialize, Deserialize)]
439pub struct LogParams {
440 #[serde(rename = "level")]
441 pub level: String,
442 #[serde(rename = "message")]
443 pub message: String,
444}
445
446#[derive(Debug, Clone, Serialize, Deserialize)]
449pub struct NotifyParams {
450 #[serde(rename = "title")]
451 pub title: String,
452 #[serde(rename = "message")]
453 pub message: String,
454}
455
456#[derive(Debug, Clone, Serialize, Deserialize)]
459pub struct ShellOpenParams {
460 #[serde(rename = "target")]
461 pub target: String,
462}
463
464#[derive(Debug, Clone, Serialize, Deserialize)]
467pub struct ShellOpenFolderParams {
468 #[serde(rename = "path")]
469 pub path: String,
470}
471
472#[derive(Debug, Clone, Serialize, Deserialize)]
475pub struct ShellExecuteElevationParams {
476 #[serde(rename = "path")]
477 pub path: String,
478}
479
480#[derive(Debug, Clone, Serialize, Deserialize)]
485pub struct ShellExecuteCommandParams {
486 #[serde(rename = "cmd")]
488 pub cmd: String,
489 #[serde(rename = "mode", default)]
491 pub mode: CommandRunMode,
492}
493
494#[derive(Debug, Clone, Serialize, Deserialize)]
497pub struct WindowActivateParams {
498 #[serde(rename = "pid")]
499 pub pid: u32,
500}
501
502#[derive(Debug, Clone, Serialize, Deserialize)]
509pub struct IconRequestParams {
510 #[serde(rename = "request")]
512 pub request: IconRequest,
513}
514
515#[derive(Debug, Clone, Serialize, Deserialize)]
518pub struct PathResolveParams {
519 #[serde(rename = "kind")]
520 pub kind: String,
521}
522
523#[derive(Debug, Clone, Serialize, Deserialize)]
526pub struct ResourceUploadParams {
527 #[serde(rename = "resourceId")]
528 pub resource_id: String,
529 #[serde(rename = "filePath")]
530 pub file_path: String,
531 #[serde(rename = "maxSize")]
532 #[serde(default)]
533 pub max_size: Option<usize>,
534}
535
536#[derive(Debug, Clone, Serialize, Deserialize)]
539pub struct ResourcePutParams {
540 #[serde(rename = "resourceId")]
541 pub resource_id: String,
542 #[serde(rename = "bytesB64")]
543 pub bytes_b64: String,
544}
545
546#[derive(Debug, Clone, Serialize, Deserialize)]
549pub struct ResourceGetParams {
550 #[serde(rename = "resourceId")]
551 pub resource_id: String,
552}
553
554#[derive(Debug, Clone, Serialize, Deserialize)]
557pub struct ResourceDeleteParams {
558 #[serde(rename = "resourceId")]
559 pub resource_id: String,
560}
561
562#[derive(Debug, Clone, Serialize, Deserialize)]
565pub struct ResourceListParams {}
566
567#[derive(Debug, Clone, Serialize, Deserialize)]
570pub struct ParameterResolveParams {
571 #[serde(rename = "userArgs")]
572 pub user_args: Vec<String>,
573 #[serde(rename = "template")]
576 pub template: String,
577}
578
579#[derive(Debug, Clone, Serialize, Deserialize)]
586pub struct SdkConfigUpdateParams {
587 #[serde(rename = "config")]
589 pub config: PluginSdkConfig,
590}
591
592#[derive(Debug, Clone, Serialize, Deserialize)]
596pub struct IconOverrideCacheParams {
597 #[serde(rename = "request")]
599 pub request: IconRequest,
600 #[serde(rename = "customIconPath")]
602 pub custom_icon_path: String,
603}
604
605#[derive(Debug, Clone, Serialize, Deserialize)]
609pub struct WindowActivateByProcessParams {
610 #[serde(rename = "processName")]
612 pub process_name: String,
613}
614
615#[derive(Debug, Clone, Serialize, Deserialize)]
619pub struct WindowActivateByTitleParams {
620 #[serde(rename = "title")]
622 pub title: String,
623}
624
625#[derive(Debug, Clone, Serialize, Deserialize)]
629pub struct ClipboardSetTextParams {
630 #[serde(rename = "text")]
632 pub text: String,
633}
634
635#[derive(Debug, Clone, Serialize, Deserialize)]
640pub struct AppLaunchParams {
641 #[serde(rename = "appId")]
643 pub app_id: String,
644 #[serde(rename = "args")]
646 #[serde(default)]
647 pub args: Option<Vec<String>>,
648}
649
650#[derive(Debug, Clone, Serialize, Deserialize)]
654pub struct AppIconPathParams {
655 #[serde(rename = "name")]
657 pub name: String,
658}
659
660#[derive(Debug, Clone, Serialize, Deserialize)]
664pub struct PathResolveLnkParams {
665 #[serde(rename = "lnkPath")]
667 pub lnk_path: String,
668}
669
670#[derive(Debug, Clone, Serialize, Deserialize)]
674pub struct PathLocalizedNamesParams {
675 #[serde(rename = "dirPath")]
677 pub dir_path: String,
678}
679
680#[derive(Debug, Clone, Serialize, Deserialize)]
684pub struct ParameterTemplateParams {
685 #[serde(rename = "template")]
687 pub template: String,
688}
689
690#[derive(Debug, Clone, Serialize, Deserialize)]
694pub struct CachePutParams {
695 #[serde(rename = "domain")]
697 pub domain: String,
698 #[serde(rename = "key")]
700 pub key: String,
701 #[serde(rename = "bytesB64")]
703 pub bytes_b64: String,
704}
705
706#[derive(Debug, Clone, Serialize, Deserialize)]
710pub struct CacheGetParams {
711 #[serde(rename = "domain")]
713 pub domain: String,
714 #[serde(rename = "key")]
716 pub key: String,
717}
718
719#[derive(Debug, Clone, Serialize, Deserialize)]
723pub struct CacheDeleteParams {
724 #[serde(rename = "domain")]
726 pub domain: String,
727 #[serde(rename = "key")]
729 pub key: String,
730}
731
732#[derive(Debug, Clone, Serialize, Deserialize)]
736pub struct CacheCleanupParams {
737 #[serde(rename = "domain")]
739 pub domain: String,
740 #[serde(rename = "maxEntries")]
742 pub max_entries: usize,
743}
744
745#[derive(Debug, Clone, Serialize, Deserialize)]
750pub struct TimerSetTimeoutParams {
751 #[serde(rename = "delayMs")]
753 pub delay_ms: u64,
754}
755
756#[derive(Debug, Clone, Serialize, Deserialize)]
760pub struct TimerSetIntervalParams {
761 #[serde(rename = "intervalMs")]
763 pub interval_ms: u64,
764}
765
766#[derive(Debug, Clone, Serialize, Deserialize)]
770pub struct TimerCancelParams {
771 #[serde(rename = "id")]
773 pub id: u64,
774}
775
776#[derive(Debug, Clone, Serialize, Deserialize)]
780pub struct TimerCancelAllParams {}
781
782#[derive(Debug, Clone, Serialize, Deserialize)]
786pub struct TimerFiredParams {
787 #[serde(rename = "id")]
789 pub id: u64,
790}
791
792#[derive(Debug, Clone, Serialize, Deserialize)]
796pub struct HotkeySubscribeParams {
797 #[serde(rename = "id")]
799 pub id: String,
800 #[serde(rename = "filter")]
802 pub filter: HotkeyEventFilter,
803}
804
805#[derive(Debug, Clone, Serialize, Deserialize)]
809pub struct HotkeyUnsubscribeParams {
810 #[serde(rename = "id")]
812 pub id: String,
813}
814
815#[derive(Debug, Clone, Serialize, Deserialize)]
819pub struct InstallationSubscribeParams {
820 #[serde(rename = "id")]
822 pub id: String,
823}
824
825#[derive(Debug, Clone, Serialize, Deserialize)]
827pub struct InstallationUnsubscribeParams {
828 #[serde(rename = "id")]
830 pub id: String,
831}
832
833#[derive(Debug, Clone, Serialize, Deserialize)]
837pub struct FocusSubscribeParams {
838 #[serde(rename = "id")]
840 pub id: String,
841}
842
843#[derive(Debug, Clone, Serialize, Deserialize)]
845pub struct FocusUnsubscribeParams {
846 #[serde(rename = "id")]
848 pub id: String,
849}
850
851#[derive(Debug, Clone, Serialize, Deserialize)]
856pub struct HotkeyEventParams {
857 #[serde(rename = "id")]
859 pub id: String,
860 #[serde(rename = "event")]
862 pub event: HotkeyEvent,
863}
864
865#[derive(Debug, Clone, Serialize, Deserialize)]
867pub struct InstallationEventParams {
868 #[serde(rename = "id")]
870 pub id: String,
871 #[serde(rename = "event")]
873 pub event: InstallationEvent,
874}
875
876#[derive(Debug, Clone, Serialize, Deserialize)]
878pub struct FocusEventParams {
879 #[serde(rename = "id")]
881 pub id: String,
882 #[serde(rename = "event")]
884 pub event: FocusEvent,
885}