//! The wire schema for the app's RPC surface: every command name, its request //! payload, and its response type. //! //! This is the one place the frontend contract is declared. Each host — the //! desktop app, the bridge, anything that comes later — imports these types and //! implements the commands against them, so the shape of a request cannot //! drift between hosts and the TypeScript bindings are generated once. //! //! Nothing here depends on Tauri or on any host. Request structs are plain data //! and the few response types declared here (rather than in an engine crate) //! are too. Command *bodies* live with the host that runs them. use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::path::PathBuf; use ts_rs::TS; use yaak_git::{ BranchDeleteResult, CloneResult, GitBranchInfo, GitCommit, GitFileDiff, GitRemote, GitStatusSummary, GitWorktreeStatus, PullResult, PushResult, }; use yaak_grpc::ServiceDefinition; use yaak_models::models::{ AnyModel, GraphQlIntrospection, GrpcEvent, HttpRequest, HttpRequestHeader, HttpResponse, HttpResponseEvent, Plugin, Settings, WebsocketConnection, WebsocketEvent, WorkspaceMeta, }; use yaak_models::util::BatchUpsertResult; use yaak_plugins::api::{PluginNameVersion, PluginSearchResponse, PluginUpdatesResponse}; use yaak_plugins::events::{ CallFolderActionRequest, CallGrpcRequestActionRequest, CallHttpRequestActionRequest, CallWebsocketRequestActionRequest, CallWorkspaceActionRequest, FilterResponse, GetFolderActionsResponse, GetGrpcRequestActionsResponse, GetHttpAuthenticationConfigResponse, GetHttpAuthenticationSummaryResponse, GetHttpRequestActionsResponse, GetTemplateFunctionConfigResponse, GetTemplateFunctionSummaryResponse, GetThemesResponse, GetWebsocketRequestActionsResponse, GetWorkspaceActionsResponse, JsonPrimitive, RenderPurpose, }; use yaak_plugins::plugin_meta::PluginMetadata; use yaak_sse::sse::ServerSentEvent; use yaak_sync::sync::SyncOp; use yaak_templates::Tokens; // -- Response types that belong to the schema rather than to an engine crate -- /// What the frontend learns about the host it is talking to. #[derive(Debug, Default, Serialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct AppMetaData { pub is_dev: bool, pub version: String, pub cli_version: Option, pub name: String, pub app_data_dir: String, pub app_log_dir: String, pub vendored_plugin_dir: String, pub default_project_dir: String, pub feature_updater: bool, pub feature_license: bool, } /// Returned by the two watch commands: the name of the event to emit to stop /// the watcher. #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct GitWatchResult { pub unlisten_event: String, } #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct WatchResult { pub unlisten_event: String, } // -- Request payloads -- #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitWatchWorktreeStatusReq { pub dir: PathBuf, pub stream_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdSyncWatchReq { pub sync_dir: PathBuf, pub workspace_id: String, pub stream_id: String, } #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdMetadataReq {} #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdTemplateTokensToStringReq { pub tokens: Tokens, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdRenderTemplateReq { pub template: String, pub workspace_id: String, pub environment_id: Option, pub purpose: Option, pub ignore_error: Option, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdSendFeedbackReq { pub feature: String, pub text: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdDismissNotificationReq { pub notification_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGrpcReflectReq { pub request_id: String, pub environment_id: Option, pub proto_files: Vec, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGrpcGoReq { pub request_id: String, pub environment_id: Option, pub proto_files: Vec, } #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdRestartReq {} #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdSendEphemeralRequestReq { pub request: HttpRequest, pub environment_id: Option, pub cookie_jar_id: Option, } /// An unsaved response and its body. /// /// The body rides along because nothing stored it: there is no database row to /// look up later and no file for a host to read, so this is the caller's only /// copy. #[derive(Debug, Serialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct EphemeralHttpResponse { pub response: HttpResponse, pub body: Vec, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdFormatJsonReq { pub text: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdFormatGraphqlReq { pub text: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdHttpResponseBodyReq { pub response_id: String, pub filter: Option, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdHttpResponseBodyPathReq { pub response_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdHttpRequestBodyReq { pub response_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGetSseEventsReq { pub response_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGetHttpResponseEventsReq { pub response_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdImportDataReq { pub file_path: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdImportUrlReq { pub url: String, } #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdHttpRequestActionsReq {} #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdWebsocketRequestActionsReq {} #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdCallWebsocketRequestActionReq { pub req: CallWebsocketRequestActionRequest, } #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdWorkspaceActionsReq {} #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdCallWorkspaceActionReq { pub req: CallWorkspaceActionRequest, } #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdFolderActionsReq {} #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdCallFolderActionReq { pub req: CallFolderActionRequest, } #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGrpcRequestActionsReq {} #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdTemplateFunctionSummariesReq {} #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdTemplateFunctionConfigReq { pub function_name: String, pub values: HashMap, pub model: AnyModel, pub environment_id: Option, } #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGetHttpAuthenticationSummariesReq {} #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGetHttpAuthenticationConfigReq { pub auth_name: String, pub values: HashMap, pub model: AnyModel, pub environment_id: Option, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdCallHttpRequestActionReq { pub req: CallHttpRequestActionRequest, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdCallGrpcRequestActionReq { pub req: CallGrpcRequestActionRequest, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdCallHttpAuthenticationActionReq { pub auth_name: String, pub action_index: i32, pub values: HashMap, pub model: AnyModel, pub environment_id: Option, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdCurlToRequestReq { pub command: String, pub workspace_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdExportDataReq { pub export_path: String, pub workspace_ids: Vec, pub include_private_environments: bool, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdSaveBase64ToBinaryReq { pub filepath: String, pub data: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdSaveResponseReq { pub response_id: String, pub filepath: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdSendHttpRequestReq { pub environment_id: Option, pub cookie_jar_id: Option, pub request_id: String, } #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdReloadPluginsReq {} #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdPluginInfoReq { pub id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdDeleteAllGrpcConnectionsReq { pub request_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdDeleteSendHistoryReq { pub workspace_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdDeleteAllHttpResponsesReq { pub request_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGetWorkspaceMetaReq { pub workspace_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdNewChildWindowReq { pub url: String, pub label: String, pub title: String, pub inner_size: (f64, f64), } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdNewMainWindowReq { pub url: String, } #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdCheckForUpdatesReq {} #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdDecryptTemplateReq { pub template: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdSecureTemplateReq { pub template: String, } #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGetThemesReq {} #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdEnableEncryptionReq { pub workspace_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdRevealWorkspaceKeyReq { pub workspace_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdSetWorkspaceKeyReq { pub workspace_id: String, pub key: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdDisableEncryptionReq { pub workspace_id: String, } #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdDefaultHeadersReq {} #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct ModelsUpsertReq { pub model: AnyModel, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct ModelsDeleteReq { pub model: AnyModel, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct ModelsDuplicateReq { pub model_type: String, pub model_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct ModelsWebsocketEventsReq { pub connection_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct ModelsGrpcEventsReq { pub connection_id: String, } #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct ModelsGetSettingsReq {} #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct ModelsGetGraphqlIntrospectionReq { pub request_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct ModelsUpsertGraphqlIntrospectionReq { pub request_id: String, pub workspace_id: String, pub content: Option, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct ModelsWorkspaceModelsReq { pub workspace_id: Option, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitCheckoutReq { pub dir: PathBuf, pub branch: String, pub force: bool, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitBranchReq { pub dir: PathBuf, pub branch: String, pub base: Option, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitDeleteBranchReq { pub dir: PathBuf, pub branch: String, pub force: Option, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitDeleteRemoteBranchReq { pub dir: PathBuf, pub branch: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitMergeBranchReq { pub dir: PathBuf, pub branch: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitRenameBranchReq { pub dir: PathBuf, pub old_name: String, pub new_name: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitStatusReq { pub dir: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitBranchInfoReq { pub dir: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitWorktreeStatusReq { pub dir: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitLogReq { pub dir: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitLogForFileReq { pub dir: PathBuf, pub rela_path: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitFileDiffForCommitReq { pub dir: PathBuf, pub commit_oid: String, pub rela_path: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitInitializeReq { pub dir: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitCloneReq { pub url: String, pub dir: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitCommitReq { pub dir: PathBuf, pub message: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitFetchAllReq { pub dir: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitPushReq { pub dir: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitPullReq { pub dir: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitPullForceResetReq { pub dir: PathBuf, pub remote: String, pub branch: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitPullMergeReq { pub dir: PathBuf, pub remote: String, pub branch: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitAddReq { pub dir: PathBuf, pub rela_paths: Vec, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitUnstageReq { pub dir: PathBuf, pub rela_paths: Vec, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitResetChangesReq { pub dir: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitRestoreFilesReq { pub dir: PathBuf, pub rela_paths: Vec, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitRestoreFileFromCommitReq { pub dir: PathBuf, pub commit_oid: String, pub rela_path: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitAddCredentialReq { pub remote_url: String, pub username: String, pub password: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitRemotesReq { pub dir: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitAddRemoteReq { pub dir: PathBuf, pub name: String, pub url: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdGitRmRemoteReq { pub dir: PathBuf, pub name: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdSyncCalculateReq { pub workspace_id: String, pub sync_dir: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdSyncCalculateFsReq { pub dir: PathBuf, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdSyncApplyReq { pub sync_ops: Vec, pub sync_dir: PathBuf, pub workspace_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdWsDeleteConnectionsReq { pub request_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdWsSendReq { pub connection_id: String, pub environment_id: Option, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdWsCloseReq { pub connection_id: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdWsConnectReq { pub request_id: String, pub environment_id: Option, pub cookie_jar_id: Option, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdPluginsSearchReq { pub query: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdPluginsInstallReq { pub name: String, pub version: Option, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdPluginsInstallFromDirectoryReq { pub directory: String, } #[derive(Debug, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdPluginsUninstallReq { pub plugin_id: String, } #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdPluginInitErrorsReq {} #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdPluginsUpdatesReq {} #[derive(Debug, Deserialize, TS)] #[ts(export, export_to = "gen_rpc.ts")] pub struct CmdPluginsUpdateAllReq {} // -- The command list -- /// Declare the command list once, then hand it to a host. /// /// Every host builds its router from the same list by passing a macro of its /// own that receives `name(ReqType) -> ResType` triples: the schema stays the /// single source of truth for *what* commands exist, and each host decides /// *how* — which handler runs, or whether the command is unsupported there. /// /// ```ignore /// macro_rules! register { ( $( $name:ident ( $req:ty ) -> $res:ty ),* $(,)? ) => { ... } } /// yaak_rpc_schema::with_commands!(register); /// ``` #[macro_export] macro_rules! with_commands { ($callback:ident) => { $callback! { cmd_metadata(CmdMetadataReq) -> AppMetaData, cmd_template_tokens_to_string(CmdTemplateTokensToStringReq) -> String, cmd_render_template(CmdRenderTemplateReq) -> String, cmd_send_feedback(CmdSendFeedbackReq) -> (), cmd_dismiss_notification(CmdDismissNotificationReq) -> (), cmd_grpc_reflect(CmdGrpcReflectReq) -> Vec, cmd_grpc_go(CmdGrpcGoReq) -> String, cmd_restart(CmdRestartReq) -> (), cmd_send_ephemeral_request(CmdSendEphemeralRequestReq) -> EphemeralHttpResponse, cmd_format_json(CmdFormatJsonReq) -> String, cmd_format_graphql(CmdFormatGraphqlReq) -> String, cmd_http_response_body(CmdHttpResponseBodyReq) -> FilterResponse, cmd_http_response_body_path(CmdHttpResponseBodyPathReq) -> Option, cmd_http_request_body(CmdHttpRequestBodyReq) -> Option>, cmd_get_sse_events(CmdGetSseEventsReq) -> Vec, cmd_get_http_response_events(CmdGetHttpResponseEventsReq) -> Vec, cmd_import_data(CmdImportDataReq) -> BatchUpsertResult, cmd_import_url(CmdImportUrlReq) -> BatchUpsertResult, cmd_http_request_actions(CmdHttpRequestActionsReq) -> Vec, cmd_websocket_request_actions(CmdWebsocketRequestActionsReq) -> Vec, cmd_call_websocket_request_action(CmdCallWebsocketRequestActionReq) -> (), cmd_workspace_actions(CmdWorkspaceActionsReq) -> Vec, cmd_call_workspace_action(CmdCallWorkspaceActionReq) -> (), cmd_folder_actions(CmdFolderActionsReq) -> Vec, cmd_call_folder_action(CmdCallFolderActionReq) -> (), cmd_grpc_request_actions(CmdGrpcRequestActionsReq) -> Vec, cmd_template_function_summaries(CmdTemplateFunctionSummariesReq) -> Vec, cmd_template_function_config(CmdTemplateFunctionConfigReq) -> GetTemplateFunctionConfigResponse, cmd_get_http_authentication_summaries(CmdGetHttpAuthenticationSummariesReq) -> Vec, cmd_get_http_authentication_config(CmdGetHttpAuthenticationConfigReq) -> GetHttpAuthenticationConfigResponse, cmd_call_http_request_action(CmdCallHttpRequestActionReq) -> (), cmd_call_grpc_request_action(CmdCallGrpcRequestActionReq) -> (), cmd_call_http_authentication_action(CmdCallHttpAuthenticationActionReq) -> (), cmd_curl_to_request(CmdCurlToRequestReq) -> HttpRequest, cmd_export_data(CmdExportDataReq) -> (), cmd_save_base64_to_binary(CmdSaveBase64ToBinaryReq) -> (), cmd_save_response(CmdSaveResponseReq) -> (), cmd_send_http_request(CmdSendHttpRequestReq) -> HttpResponse, cmd_reload_plugins(CmdReloadPluginsReq) -> Vec<(String, String)>, cmd_plugin_info(CmdPluginInfoReq) -> PluginMetadata, cmd_delete_all_grpc_connections(CmdDeleteAllGrpcConnectionsReq) -> (), cmd_delete_send_history(CmdDeleteSendHistoryReq) -> (), cmd_delete_all_http_responses(CmdDeleteAllHttpResponsesReq) -> (), cmd_get_workspace_meta(CmdGetWorkspaceMetaReq) -> WorkspaceMeta, cmd_new_child_window(CmdNewChildWindowReq) -> (), cmd_new_main_window(CmdNewMainWindowReq) -> (), cmd_check_for_updates(CmdCheckForUpdatesReq) -> bool, cmd_decrypt_template(CmdDecryptTemplateReq) -> String, cmd_secure_template(CmdSecureTemplateReq) -> String, cmd_get_themes(CmdGetThemesReq) -> Vec, cmd_enable_encryption(CmdEnableEncryptionReq) -> (), cmd_reveal_workspace_key(CmdRevealWorkspaceKeyReq) -> String, cmd_set_workspace_key(CmdSetWorkspaceKeyReq) -> (), cmd_disable_encryption(CmdDisableEncryptionReq) -> (), cmd_default_headers(CmdDefaultHeadersReq) -> Vec, models_upsert(ModelsUpsertReq) -> String, models_delete(ModelsDeleteReq) -> String, models_duplicate(ModelsDuplicateReq) -> String, models_websocket_events(ModelsWebsocketEventsReq) -> Vec, models_grpc_events(ModelsGrpcEventsReq) -> Vec, models_get_settings(ModelsGetSettingsReq) -> Settings, models_get_graphql_introspection(ModelsGetGraphqlIntrospectionReq) -> Option, models_upsert_graphql_introspection(ModelsUpsertGraphqlIntrospectionReq) -> GraphQlIntrospection, models_workspace_models(ModelsWorkspaceModelsReq) -> String, cmd_git_checkout(CmdGitCheckoutReq) -> String, cmd_git_branch(CmdGitBranchReq) -> (), cmd_git_delete_branch(CmdGitDeleteBranchReq) -> BranchDeleteResult, cmd_git_delete_remote_branch(CmdGitDeleteRemoteBranchReq) -> (), cmd_git_merge_branch(CmdGitMergeBranchReq) -> (), cmd_git_rename_branch(CmdGitRenameBranchReq) -> (), cmd_git_status(CmdGitStatusReq) -> GitStatusSummary, cmd_git_branch_info(CmdGitBranchInfoReq) -> GitBranchInfo, cmd_git_worktree_status(CmdGitWorktreeStatusReq) -> GitWorktreeStatus, cmd_git_log(CmdGitLogReq) -> Vec, cmd_git_log_for_file(CmdGitLogForFileReq) -> Vec, cmd_git_file_diff_for_commit(CmdGitFileDiffForCommitReq) -> GitFileDiff, cmd_git_initialize(CmdGitInitializeReq) -> (), cmd_git_clone(CmdGitCloneReq) -> CloneResult, cmd_git_commit(CmdGitCommitReq) -> (), cmd_git_fetch_all(CmdGitFetchAllReq) -> (), cmd_git_push(CmdGitPushReq) -> PushResult, cmd_git_pull(CmdGitPullReq) -> PullResult, cmd_git_pull_force_reset(CmdGitPullForceResetReq) -> PullResult, cmd_git_pull_merge(CmdGitPullMergeReq) -> PullResult, cmd_git_add(CmdGitAddReq) -> (), cmd_git_unstage(CmdGitUnstageReq) -> (), cmd_git_reset_changes(CmdGitResetChangesReq) -> (), cmd_git_restore_files(CmdGitRestoreFilesReq) -> (), cmd_git_restore_file_from_commit(CmdGitRestoreFileFromCommitReq) -> (), cmd_git_add_credential(CmdGitAddCredentialReq) -> (), cmd_git_remotes(CmdGitRemotesReq) -> Vec, cmd_git_add_remote(CmdGitAddRemoteReq) -> GitRemote, cmd_git_rm_remote(CmdGitRmRemoteReq) -> (), cmd_sync_calculate(CmdSyncCalculateReq) -> Vec, cmd_sync_calculate_fs(CmdSyncCalculateFsReq) -> Vec, cmd_sync_apply(CmdSyncApplyReq) -> (), cmd_ws_delete_connections(CmdWsDeleteConnectionsReq) -> (), cmd_ws_send(CmdWsSendReq) -> WebsocketConnection, cmd_ws_close(CmdWsCloseReq) -> WebsocketConnection, cmd_ws_connect(CmdWsConnectReq) -> WebsocketConnection, cmd_plugins_search(CmdPluginsSearchReq) -> PluginSearchResponse, cmd_plugins_install(CmdPluginsInstallReq) -> (), cmd_plugins_install_from_directory(CmdPluginsInstallFromDirectoryReq) -> Plugin, cmd_plugins_uninstall(CmdPluginsUninstallReq) -> Plugin, cmd_plugin_init_errors(CmdPluginInitErrorsReq) -> Vec<(String, String)>, cmd_plugins_updates(CmdPluginsUpdatesReq) -> PluginUpdatesResponse, cmd_plugins_update_all(CmdPluginsUpdateAllReq) -> Vec, cmd_git_watch_worktree_status(CmdGitWatchWorktreeStatusReq) -> GitWatchResult, cmd_sync_watch(CmdSyncWatchReq) -> WatchResult, } }; } // The TypeScript export: field name = command name, tuple = (request, response). // Generated from the same list the hosts build their routers from. macro_rules! declare_schema { ( $( $name:ident ( $req:ty ) -> $res:ty ),* $(,)? ) => { #[derive(TS)] #[ts(export, export_to = "gen_rpc.ts")] #[allow(non_snake_case, unused)] pub struct RpcSchema { $( pub $name: ($req, $res), )* } }; } with_commands!(declare_schema);