use serde::{Deserialize, Serialize};
use zerolaunch_plugin_api::host::PluginSdkConfig;
use zerolaunch_plugin_api::services::focus_monitor::FocusEvent;
use zerolaunch_plugin_api::services::hotkey::types::{HotkeyEvent, HotkeyEventFilter};
use zerolaunch_plugin_api::services::installation_monitor::types::InstallationEvent;
use zerolaunch_plugin_api::services::shell::CommandRunMode;
use zerolaunch_plugin_api::services::IconRequest;
use zerolaunch_plugin_api::{
CandidateCacheSnapshot, CandidateId, ExecutionContext, KeywordInputSource, PluginContext,
Query, ScoredCandidate, SearchCandidate, TargetType,
};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InitializeParams {
#[serde(rename = "hostVersion")]
pub host_version: String,
#[serde(rename = "protocolVersion")]
pub protocol_version: String,
#[serde(rename = "dataDir")]
pub data_dir: String,
#[serde(rename = "logDir")]
pub log_dir: String,
#[serde(rename = "pluginId")]
pub plugin_id: String,
#[serde(rename = "locale")]
pub locale: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InitializeResult {
#[serde(rename = "protocolVersion")]
pub protocol_version: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ComponentDescriptor {
#[serde(rename = "componentId")]
pub component_id: String,
#[serde(rename = "componentName")]
pub component_name: String,
#[serde(rename = "componentDescription", default)]
pub component_description: String,
#[serde(rename = "kind")]
pub kind: ComponentKind,
#[serde(rename = "priority", default = "default_component_priority")]
pub priority: u32,
}
fn default_component_priority() -> u32 {
50
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ComponentKind {
#[serde(rename = "plugin")]
Plugin,
#[serde(rename = "data_source")]
DataSource,
#[serde(rename = "action_executor")]
ActionExecutor {
#[serde(rename = "targetTypes")]
target_types: Vec<TargetType>,
},
#[serde(rename = "search_engine")]
SearchEngine,
#[serde(rename = "score_booster")]
ScoreBooster,
#[serde(rename = "keyword_optimizer")]
KeywordOptimizer,
#[serde(rename = "keyword_injector")]
KeywordInjector,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetSettingsSchemaParams {
#[serde(rename = "componentId")]
pub component_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetSettingsParams {
#[serde(rename = "componentId")]
pub component_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ApplySettingsParams {
#[serde(rename = "componentId")]
pub component_id: String,
#[serde(rename = "settings")]
pub settings: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidateSettingsParams {
#[serde(rename = "componentId")]
pub component_id: String,
#[serde(rename = "settings")]
pub settings: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidateSettingsResult {
#[serde(default)]
pub error: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConfigActionsParams {
#[serde(rename = "componentId")]
pub component_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecuteConfigActionParams {
#[serde(rename = "componentId")]
pub component_id: String,
#[serde(rename = "action")]
pub action: String,
#[serde(rename = "params")]
pub params: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QueryParams {
#[serde(rename = "pluginId")]
pub plugin_id: String,
#[serde(rename = "ctx")]
pub ctx: PluginContext,
#[serde(rename = "query")]
pub query: Query,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MatchQueryParams {
#[serde(rename = "rawQuery")]
pub raw_query: String,
#[serde(rename = "triggerKeywords")]
pub trigger_keywords: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecuteActionParams {
#[serde(rename = "pluginId")]
pub plugin_id: String,
#[serde(rename = "ctx")]
pub ctx: PluginContext,
#[serde(rename = "actionId")]
pub action_id: String,
#[serde(rename = "payload")]
pub payload: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FetchCandidatesParams {
#[serde(rename = "componentId")]
pub component_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FetchCandidatesResult {
#[serde(rename = "candidates")]
pub candidates: Vec<SearchCandidate>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SupportedTargetTypesParams {
#[serde(rename = "componentId")]
pub component_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SupportedActionsParams {
#[serde(rename = "componentId")]
pub component_id: String,
#[serde(rename = "targetType")]
pub target_type: TargetType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecutorExecuteParams {
#[serde(rename = "componentId")]
pub component_id: String,
#[serde(rename = "executionCtx")]
pub execution_ctx: ExecutionContext,
#[serde(rename = "actionId")]
pub action_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecutorExecuteResult {
#[serde(default)]
pub error: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CalculateScoresParams {
#[serde(rename = "componentId")]
pub component_id: String,
#[serde(rename = "candidates")]
pub candidates: CandidateCacheSnapshot,
#[serde(rename = "query")]
pub query: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BoosterBoostParams {
#[serde(rename = "componentId")]
pub component_id: String,
#[serde(rename = "candidates")]
pub candidates: CandidateCacheSnapshot,
#[serde(rename = "scored")]
pub scored: Vec<ScoredCandidate>,
#[serde(rename = "query")]
pub query: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BoosterRecordParams {
#[serde(rename = "componentId")]
pub component_id: String,
#[serde(rename = "candidateId")]
pub candidate_id: CandidateId,
#[serde(rename = "candidates")]
pub candidates: CandidateCacheSnapshot,
#[serde(rename = "query")]
pub query: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct KeywordOptimizerInfo {
#[serde(rename = "inputSource")]
pub input_source: KeywordInputSource,
#[serde(rename = "priority")]
pub priority: u32,
}
impl KeywordOptimizerInfo {
pub fn fallback(priority: u32) -> Self {
Self {
input_source: KeywordInputSource::Refined,
priority,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct KeywordOptimizerInfoParams {
#[serde(rename = "componentId")]
pub component_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct KeywordOptimizeParams {
#[serde(rename = "componentId")]
pub component_id: String,
#[serde(rename = "keyword")]
pub keyword: String,
#[serde(rename = "inputSource", default)]
pub input_source: KeywordInputSource,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct KeywordInjectParams {
#[serde(rename = "componentId")]
pub component_id: String,
#[serde(rename = "candidate")]
pub candidate: SearchCandidate,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InitParams {
#[serde(rename = "pluginId")]
pub plugin_id: String,
#[serde(rename = "ctx")]
pub ctx: PluginContext,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ShutdownParams {
#[serde(rename = "ctx")]
pub ctx: PluginContext,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InteractionPolicyParams {
#[serde(rename = "componentId")]
pub component_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetDefaultEnabledParams {
#[serde(rename = "componentId")]
pub component_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LogParams {
#[serde(rename = "level")]
pub level: String,
#[serde(rename = "message")]
pub message: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NotifyParams {
#[serde(rename = "title")]
pub title: String,
#[serde(rename = "message")]
pub message: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ShellOpenParams {
#[serde(rename = "target")]
pub target: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ShellOpenFolderParams {
#[serde(rename = "path")]
pub path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ShellExecuteElevationParams {
#[serde(rename = "path")]
pub path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ShellExecuteCommandParams {
#[serde(rename = "cmd")]
pub cmd: String,
#[serde(rename = "mode", default)]
pub mode: CommandRunMode,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WindowActivateParams {
#[serde(rename = "pid")]
pub pid: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IconRequestParams {
#[serde(rename = "request")]
pub request: IconRequest,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PathResolveParams {
#[serde(rename = "kind")]
pub kind: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceUploadParams {
#[serde(rename = "resourceId")]
pub resource_id: String,
#[serde(rename = "filePath")]
pub file_path: String,
#[serde(rename = "maxSize")]
#[serde(default)]
pub max_size: Option<usize>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourcePutParams {
#[serde(rename = "resourceId")]
pub resource_id: String,
#[serde(rename = "bytesB64")]
pub bytes_b64: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceGetParams {
#[serde(rename = "resourceId")]
pub resource_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceDeleteParams {
#[serde(rename = "resourceId")]
pub resource_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceListParams {}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ParameterResolveParams {
#[serde(rename = "userArgs")]
pub user_args: Vec<String>,
#[serde(rename = "template")]
pub template: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SdkConfigUpdateParams {
#[serde(rename = "config")]
pub config: PluginSdkConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IconOverrideCacheParams {
#[serde(rename = "request")]
pub request: IconRequest,
#[serde(rename = "customIconPath")]
pub custom_icon_path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WindowActivateByProcessParams {
#[serde(rename = "processName")]
pub process_name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WindowActivateByTitleParams {
#[serde(rename = "title")]
pub title: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ClipboardSetTextParams {
#[serde(rename = "text")]
pub text: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AppLaunchParams {
#[serde(rename = "appId")]
pub app_id: String,
#[serde(rename = "args")]
#[serde(default)]
pub args: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AppIconPathParams {
#[serde(rename = "name")]
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PathResolveLnkParams {
#[serde(rename = "lnkPath")]
pub lnk_path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PathLocalizedNamesParams {
#[serde(rename = "dirPath")]
pub dir_path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ParameterTemplateParams {
#[serde(rename = "template")]
pub template: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CachePutParams {
#[serde(rename = "domain")]
pub domain: String,
#[serde(rename = "key")]
pub key: String,
#[serde(rename = "bytesB64")]
pub bytes_b64: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CacheGetParams {
#[serde(rename = "domain")]
pub domain: String,
#[serde(rename = "key")]
pub key: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CacheDeleteParams {
#[serde(rename = "domain")]
pub domain: String,
#[serde(rename = "key")]
pub key: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CacheCleanupParams {
#[serde(rename = "domain")]
pub domain: String,
#[serde(rename = "maxEntries")]
pub max_entries: usize,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimerSetTimeoutParams {
#[serde(rename = "delayMs")]
pub delay_ms: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimerSetIntervalParams {
#[serde(rename = "intervalMs")]
pub interval_ms: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimerCancelParams {
#[serde(rename = "id")]
pub id: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimerCancelAllParams {}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimerFiredParams {
#[serde(rename = "id")]
pub id: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HotkeySubscribeParams {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "filter")]
pub filter: HotkeyEventFilter,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HotkeyUnsubscribeParams {
#[serde(rename = "id")]
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InstallationSubscribeParams {
#[serde(rename = "id")]
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InstallationUnsubscribeParams {
#[serde(rename = "id")]
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FocusSubscribeParams {
#[serde(rename = "id")]
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FocusUnsubscribeParams {
#[serde(rename = "id")]
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HotkeyEventParams {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "event")]
pub event: HotkeyEvent,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InstallationEventParams {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "event")]
pub event: InstallationEvent,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FocusEventParams {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "event")]
pub event: FocusEvent,
}