// GENERATED CODE! DO NOT MODIFY BY HAND!

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { FuzzyFileSearchParams } from "./FuzzyFileSearchParams.js";
import type { FuzzyFileSearchSessionStartParams } from "./FuzzyFileSearchSessionStartParams.js";
import type { FuzzyFileSearchSessionStopParams } from "./FuzzyFileSearchSessionStopParams.js";
import type { FuzzyFileSearchSessionUpdateParams } from "./FuzzyFileSearchSessionUpdateParams.js";
import type { GetAuthStatusParams } from "./GetAuthStatusParams.js";
import type { GetConversationSummaryParams } from "./GetConversationSummaryParams.js";
import type { GitDiffToRemoteParams } from "./GitDiffToRemoteParams.js";
import type { InitializeParams } from "./InitializeParams.js";
import type { RequestId } from "./RequestId.js";
import type { AppsListParams } from "./v2/AppsListParams.js";
import type { CancelLoginAccountParams } from "./v2/CancelLoginAccountParams.js";
import type { CollaborationModeListParams } from "./v2/CollaborationModeListParams.js";
import type { CommandExecParams } from "./v2/CommandExecParams.js";
import type { CommandExecResizeParams } from "./v2/CommandExecResizeParams.js";
import type { CommandExecTerminateParams } from "./v2/CommandExecTerminateParams.js";
import type { CommandExecWriteParams } from "./v2/CommandExecWriteParams.js";
import type { ConfigBatchWriteParams } from "./v2/ConfigBatchWriteParams.js";
import type { ConfigReadParams } from "./v2/ConfigReadParams.js";
import type { ConfigValueWriteParams } from "./v2/ConfigValueWriteParams.js";
import type { DeviceKeyCreateParams } from "./v2/DeviceKeyCreateParams.js";
import type { DeviceKeyPublicParams } from "./v2/DeviceKeyPublicParams.js";
import type { DeviceKeySignParams } from "./v2/DeviceKeySignParams.js";
import type { ExperimentalFeatureEnablementSetParams } from "./v2/ExperimentalFeatureEnablementSetParams.js";
import type { ExperimentalFeatureListParams } from "./v2/ExperimentalFeatureListParams.js";
import type { ExternalAgentConfigDetectParams } from "./v2/ExternalAgentConfigDetectParams.js";
import type { ExternalAgentConfigImportParams } from "./v2/ExternalAgentConfigImportParams.js";
import type { FeedbackUploadParams } from "./v2/FeedbackUploadParams.js";
import type { FsCopyParams } from "./v2/FsCopyParams.js";
import type { FsCreateDirectoryParams } from "./v2/FsCreateDirectoryParams.js";
import type { FsGetMetadataParams } from "./v2/FsGetMetadataParams.js";
import type { FsReadDirectoryParams } from "./v2/FsReadDirectoryParams.js";
import type { FsReadFileParams } from "./v2/FsReadFileParams.js";
import type { FsRemoveParams } from "./v2/FsRemoveParams.js";
import type { FsUnwatchParams } from "./v2/FsUnwatchParams.js";
import type { FsWatchParams } from "./v2/FsWatchParams.js";
import type { FsWriteFileParams } from "./v2/FsWriteFileParams.js";
import type { GetAccountParams } from "./v2/GetAccountParams.js";
import type { HooksListParams } from "./v2/HooksListParams.js";
import type { ListMcpServerStatusParams } from "./v2/ListMcpServerStatusParams.js";
import type { LoginAccountParams } from "./v2/LoginAccountParams.js";
import type { MarketplaceAddParams } from "./v2/MarketplaceAddParams.js";
import type { MarketplaceRemoveParams } from "./v2/MarketplaceRemoveParams.js";
import type { MarketplaceUpgradeParams } from "./v2/MarketplaceUpgradeParams.js";
import type { McpResourceReadParams } from "./v2/McpResourceReadParams.js";
import type { McpServerOauthLoginParams } from "./v2/McpServerOauthLoginParams.js";
import type { McpServerToolCallParams } from "./v2/McpServerToolCallParams.js";
import type { MockExperimentalMethodParams } from "./v2/MockExperimentalMethodParams.js";
import type { ModelListParams } from "./v2/ModelListParams.js";
import type { ModelProviderCapabilitiesReadParams } from "./v2/ModelProviderCapabilitiesReadParams.js";
import type { PluginInstallParams } from "./v2/PluginInstallParams.js";
import type { PluginListParams } from "./v2/PluginListParams.js";
import type { PluginReadParams } from "./v2/PluginReadParams.js";
import type { PluginShareDeleteParams } from "./v2/PluginShareDeleteParams.js";
import type { PluginShareListParams } from "./v2/PluginShareListParams.js";
import type { PluginShareSaveParams } from "./v2/PluginShareSaveParams.js";
import type { PluginSkillReadParams } from "./v2/PluginSkillReadParams.js";
import type { PluginUninstallParams } from "./v2/PluginUninstallParams.js";
import type { ReviewStartParams } from "./v2/ReviewStartParams.js";
import type { SendAddCreditsNudgeEmailParams } from "./v2/SendAddCreditsNudgeEmailParams.js";
import type { SkillsConfigWriteParams } from "./v2/SkillsConfigWriteParams.js";
import type { SkillsListParams } from "./v2/SkillsListParams.js";
import type { ThreadApproveGuardianDeniedActionParams } from "./v2/ThreadApproveGuardianDeniedActionParams.js";
import type { ThreadArchiveParams } from "./v2/ThreadArchiveParams.js";
import type { ThreadBackgroundTerminalsCleanParams } from "./v2/ThreadBackgroundTerminalsCleanParams.js";
import type { ThreadCompactStartParams } from "./v2/ThreadCompactStartParams.js";
import type { ThreadDecrementElicitationParams } from "./v2/ThreadDecrementElicitationParams.js";
import type { ThreadForkParams } from "./v2/ThreadForkParams.js";
import type { ThreadGoalClearParams } from "./v2/ThreadGoalClearParams.js";
import type { ThreadGoalGetParams } from "./v2/ThreadGoalGetParams.js";
import type { ThreadGoalSetParams } from "./v2/ThreadGoalSetParams.js";
import type { ThreadIncrementElicitationParams } from "./v2/ThreadIncrementElicitationParams.js";
import type { ThreadInjectItemsParams } from "./v2/ThreadInjectItemsParams.js";
import type { ThreadListParams } from "./v2/ThreadListParams.js";
import type { ThreadLoadedListParams } from "./v2/ThreadLoadedListParams.js";
import type { ThreadMemoryModeSetParams } from "./v2/ThreadMemoryModeSetParams.js";
import type { ThreadMetadataUpdateParams } from "./v2/ThreadMetadataUpdateParams.js";
import type { ThreadReadParams } from "./v2/ThreadReadParams.js";
import type { ThreadRealtimeAppendAudioParams } from "./v2/ThreadRealtimeAppendAudioParams.js";
import type { ThreadRealtimeAppendTextParams } from "./v2/ThreadRealtimeAppendTextParams.js";
import type { ThreadRealtimeListVoicesParams } from "./v2/ThreadRealtimeListVoicesParams.js";
import type { ThreadRealtimeStartParams } from "./v2/ThreadRealtimeStartParams.js";
import type { ThreadRealtimeStopParams } from "./v2/ThreadRealtimeStopParams.js";
import type { ThreadResumeParams } from "./v2/ThreadResumeParams.js";
import type { ThreadRollbackParams } from "./v2/ThreadRollbackParams.js";
import type { ThreadSetNameParams } from "./v2/ThreadSetNameParams.js";
import type { ThreadShellCommandParams } from "./v2/ThreadShellCommandParams.js";
import type { ThreadStartParams } from "./v2/ThreadStartParams.js";
import type { ThreadTurnsListParams } from "./v2/ThreadTurnsListParams.js";
import type { ThreadUnarchiveParams } from "./v2/ThreadUnarchiveParams.js";
import type { ThreadUnsubscribeParams } from "./v2/ThreadUnsubscribeParams.js";
import type { TurnInterruptParams } from "./v2/TurnInterruptParams.js";
import type { TurnStartParams } from "./v2/TurnStartParams.js";
import type { TurnSteerParams } from "./v2/TurnSteerParams.js";
import type { WindowsSandboxSetupStartParams } from "./v2/WindowsSandboxSetupStartParams.js";

/**
 * Request from the client to the server.
 */
export type ClientRequest =
  | { method: "initialize"; id: RequestId; params: InitializeParams }
  | { method: "thread/start"; id: RequestId; params: ThreadStartParams }
  | { method: "thread/resume"; id: RequestId; params: ThreadResumeParams }
  | { method: "thread/fork"; id: RequestId; params: ThreadForkParams }
  | { method: "thread/archive"; id: RequestId; params: ThreadArchiveParams }
  | { method: "thread/unsubscribe"; id: RequestId; params: ThreadUnsubscribeParams }
  | {
      method: "thread/increment_elicitation";
      id: RequestId;
      params: ThreadIncrementElicitationParams;
    }
  | {
      method: "thread/decrement_elicitation";
      id: RequestId;
      params: ThreadDecrementElicitationParams;
    }
  | { method: "thread/name/set"; id: RequestId; params: ThreadSetNameParams }
  | { method: "thread/goal/set"; id: RequestId; params: ThreadGoalSetParams }
  | { method: "thread/goal/get"; id: RequestId; params: ThreadGoalGetParams }
  | { method: "thread/goal/clear"; id: RequestId; params: ThreadGoalClearParams }
  | { method: "thread/metadata/update"; id: RequestId; params: ThreadMetadataUpdateParams }
  | { method: "thread/memoryMode/set"; id: RequestId; params: ThreadMemoryModeSetParams }
  | { method: "memory/reset"; id: RequestId; params: undefined }
  | { method: "thread/unarchive"; id: RequestId; params: ThreadUnarchiveParams }
  | { method: "thread/compact/start"; id: RequestId; params: ThreadCompactStartParams }
  | { method: "thread/shellCommand"; id: RequestId; params: ThreadShellCommandParams }
  | {
      method: "thread/approveGuardianDeniedAction";
      id: RequestId;
      params: ThreadApproveGuardianDeniedActionParams;
    }
  | {
      method: "thread/backgroundTerminals/clean";
      id: RequestId;
      params: ThreadBackgroundTerminalsCleanParams;
    }
  | { method: "thread/rollback"; id: RequestId; params: ThreadRollbackParams }
  | { method: "thread/list"; id: RequestId; params: ThreadListParams }
  | { method: "thread/loaded/list"; id: RequestId; params: ThreadLoadedListParams }
  | { method: "thread/read"; id: RequestId; params: ThreadReadParams }
  | { method: "thread/turns/list"; id: RequestId; params: ThreadTurnsListParams }
  | { method: "thread/inject_items"; id: RequestId; params: ThreadInjectItemsParams }
  | { method: "skills/list"; id: RequestId; params: SkillsListParams }
  | { method: "hooks/list"; id: RequestId; params: HooksListParams }
  | { method: "marketplace/add"; id: RequestId; params: MarketplaceAddParams }
  | { method: "marketplace/remove"; id: RequestId; params: MarketplaceRemoveParams }
  | { method: "marketplace/upgrade"; id: RequestId; params: MarketplaceUpgradeParams }
  | { method: "plugin/list"; id: RequestId; params: PluginListParams }
  | { method: "plugin/read"; id: RequestId; params: PluginReadParams }
  | { method: "plugin/skill/read"; id: RequestId; params: PluginSkillReadParams }
  | { method: "plugin/share/save"; id: RequestId; params: PluginShareSaveParams }
  | { method: "plugin/share/list"; id: RequestId; params: PluginShareListParams }
  | { method: "plugin/share/delete"; id: RequestId; params: PluginShareDeleteParams }
  | { method: "app/list"; id: RequestId; params: AppsListParams }
  | { method: "device/key/create"; id: RequestId; params: DeviceKeyCreateParams }
  | { method: "device/key/public"; id: RequestId; params: DeviceKeyPublicParams }
  | { method: "device/key/sign"; id: RequestId; params: DeviceKeySignParams }
  | { method: "fs/readFile"; id: RequestId; params: FsReadFileParams }
  | { method: "fs/writeFile"; id: RequestId; params: FsWriteFileParams }
  | { method: "fs/createDirectory"; id: RequestId; params: FsCreateDirectoryParams }
  | { method: "fs/getMetadata"; id: RequestId; params: FsGetMetadataParams }
  | { method: "fs/readDirectory"; id: RequestId; params: FsReadDirectoryParams }
  | { method: "fs/remove"; id: RequestId; params: FsRemoveParams }
  | { method: "fs/copy"; id: RequestId; params: FsCopyParams }
  | { method: "fs/watch"; id: RequestId; params: FsWatchParams }
  | { method: "fs/unwatch"; id: RequestId; params: FsUnwatchParams }
  | { method: "skills/config/write"; id: RequestId; params: SkillsConfigWriteParams }
  | { method: "plugin/install"; id: RequestId; params: PluginInstallParams }
  | { method: "plugin/uninstall"; id: RequestId; params: PluginUninstallParams }
  | { method: "turn/start"; id: RequestId; params: TurnStartParams }
  | { method: "turn/steer"; id: RequestId; params: TurnSteerParams }
  | { method: "turn/interrupt"; id: RequestId; params: TurnInterruptParams }
  | { method: "thread/realtime/start"; id: RequestId; params: ThreadRealtimeStartParams }
  | {
      method: "thread/realtime/appendAudio";
      id: RequestId;
      params: ThreadRealtimeAppendAudioParams;
    }
  | { method: "thread/realtime/appendText"; id: RequestId; params: ThreadRealtimeAppendTextParams }
  | { method: "thread/realtime/stop"; id: RequestId; params: ThreadRealtimeStopParams }
  | { method: "thread/realtime/listVoices"; id: RequestId; params: ThreadRealtimeListVoicesParams }
  | { method: "review/start"; id: RequestId; params: ReviewStartParams }
  | { method: "model/list"; id: RequestId; params: ModelListParams }
  | {
      method: "modelProvider/capabilities/read";
      id: RequestId;
      params: ModelProviderCapabilitiesReadParams;
    }
  | { method: "experimentalFeature/list"; id: RequestId; params: ExperimentalFeatureListParams }
  | {
      method: "experimentalFeature/enablement/set";
      id: RequestId;
      params: ExperimentalFeatureEnablementSetParams;
    }
  | { method: "collaborationMode/list"; id: RequestId; params: CollaborationModeListParams }
  | { method: "mock/experimentalMethod"; id: RequestId; params: MockExperimentalMethodParams }
  | { method: "mcpServer/oauth/login"; id: RequestId; params: McpServerOauthLoginParams }
  | { method: "config/mcpServer/reload"; id: RequestId; params: undefined }
  | { method: "mcpServerStatus/list"; id: RequestId; params: ListMcpServerStatusParams }
  | { method: "mcpServer/resource/read"; id: RequestId; params: McpResourceReadParams }
  | { method: "mcpServer/tool/call"; id: RequestId; params: McpServerToolCallParams }
  | { method: "windowsSandbox/setupStart"; id: RequestId; params: WindowsSandboxSetupStartParams }
  | { method: "account/login/start"; id: RequestId; params: LoginAccountParams }
  | { method: "account/login/cancel"; id: RequestId; params: CancelLoginAccountParams }
  | { method: "account/logout"; id: RequestId; params: undefined }
  | { method: "account/rateLimits/read"; id: RequestId; params: undefined }
  | {
      method: "account/sendAddCreditsNudgeEmail";
      id: RequestId;
      params: SendAddCreditsNudgeEmailParams;
    }
  | { method: "feedback/upload"; id: RequestId; params: FeedbackUploadParams }
  | { method: "command/exec"; id: RequestId; params: CommandExecParams }
  | { method: "command/exec/write"; id: RequestId; params: CommandExecWriteParams }
  | { method: "command/exec/terminate"; id: RequestId; params: CommandExecTerminateParams }
  | { method: "command/exec/resize"; id: RequestId; params: CommandExecResizeParams }
  | { method: "config/read"; id: RequestId; params: ConfigReadParams }
  | { method: "externalAgentConfig/detect"; id: RequestId; params: ExternalAgentConfigDetectParams }
  | { method: "externalAgentConfig/import"; id: RequestId; params: ExternalAgentConfigImportParams }
  | { method: "config/value/write"; id: RequestId; params: ConfigValueWriteParams }
  | { method: "config/batchWrite"; id: RequestId; params: ConfigBatchWriteParams }
  | { method: "configRequirements/read"; id: RequestId; params: undefined }
  | { method: "account/read"; id: RequestId; params: GetAccountParams }
  | { method: "getConversationSummary"; id: RequestId; params: GetConversationSummaryParams }
  | { method: "gitDiffToRemote"; id: RequestId; params: GitDiffToRemoteParams }
  | { method: "getAuthStatus"; id: RequestId; params: GetAuthStatusParams }
  | { method: "fuzzyFileSearch"; id: RequestId; params: FuzzyFileSearchParams }
  | {
      method: "fuzzyFileSearch/sessionStart";
      id: RequestId;
      params: FuzzyFileSearchSessionStartParams;
    }
  | {
      method: "fuzzyFileSearch/sessionUpdate";
      id: RequestId;
      params: FuzzyFileSearchSessionUpdateParams;
    }
  | {
      method: "fuzzyFileSearch/sessionStop";
      id: RequestId;
      params: FuzzyFileSearchSessionStopParams;
    };
