use serde::{Deserialize, Serialize};
use zerolaunch_plugin_api::config::ComponentType;
use zerolaunch_plugin_api::{
CandidateCacheSnapshot, CandidateId, ExecutionContext, 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 = "pluginVersion")]
pub plugin_version: String,
#[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 = "componentType")]
pub component_type: ComponentType,
#[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 = "triggerKeywords")]
trigger_keywords: Vec<String>,
},
#[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 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 = "usesContext")]
pub uses_context: bool,
#[serde(rename = "priority")]
pub priority: u32,
}
#[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,
}
#[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 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,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WindowActivateParams {
#[serde(rename = "pid")]
pub pid: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IconGetParams {
#[serde(rename = "request")]
pub request: serde_json::Value,
#[serde(rename = "level")]
pub level: String,
}
#[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,
}