// GENERATED CODE! DO NOT MODIFY BY HAND!
// Run `pnpm --filter @cradle/server generate:codex-app-server-capabilities` after regenerating Codex app-server protocol bindings.

export interface CodexAppServerMethodCapability {
  method: string
  paramsType: string | null
  category: string
  operation: string
  interaction: 'request' | 'stream'
}

export interface CodexAppServerServerMessageCapability {
  method: string
  paramsType: string
  category: string
}

export interface CodexAppServerCapabilityManifest {
  protocol: string
  generatorVersion: string
  generatedDate: string
  clientMethods: CodexAppServerMethodCapability[]
  serverRequests: CodexAppServerServerMessageCapability[]
  serverNotifications: CodexAppServerServerMessageCapability[]
}

const CODEX_APP_SERVER_PROTOCOL = 'codex-app-server'
const CODEX_APP_SERVER_GENERATOR_VERSION = 'codex-cli 0.146.0'
const CODEX_APP_SERVER_GENERATED_DATE = '2026-07-31'

export const CODEX_APP_SERVER_CLIENT_METHODS = [
  { method: 'initialize', paramsType: 'InitializeParams', category: 'initialize', operation: 'initialize', interaction: 'request' },
  { method: 'thread/start', paramsType: 'ThreadStartParams', category: 'thread', operation: 'start', interaction: 'request' },
  { method: 'thread/resume', paramsType: 'ThreadResumeParams', category: 'thread', operation: 'resume', interaction: 'request' },
  { method: 'thread/fork', paramsType: 'ThreadForkParams', category: 'thread', operation: 'fork', interaction: 'request' },
  { method: 'thread/archive', paramsType: 'ThreadArchiveParams', category: 'thread', operation: 'archive', interaction: 'request' },
  { method: 'thread/delete', paramsType: 'ThreadDeleteParams', category: 'thread', operation: 'delete', interaction: 'request' },
  { method: 'thread/unsubscribe', paramsType: 'ThreadUnsubscribeParams', category: 'thread', operation: 'unsubscribe', interaction: 'request' },
  { method: 'thread/increment_elicitation', paramsType: 'ThreadIncrementElicitationParams', category: 'thread', operation: 'increment_elicitation', interaction: 'request' },
  { method: 'thread/decrement_elicitation', paramsType: 'ThreadDecrementElicitationParams', category: 'thread', operation: 'decrement_elicitation', interaction: 'request' },
  { method: 'thread/name/set', paramsType: 'ThreadSetNameParams', category: 'thread', operation: 'name/set', interaction: 'request' },
  { method: 'thread/goal/set', paramsType: 'ThreadGoalSetParams', category: 'thread', operation: 'goal/set', interaction: 'request' },
  { method: 'thread/goal/get', paramsType: 'ThreadGoalGetParams', category: 'thread', operation: 'goal/get', interaction: 'request' },
  { method: 'thread/goal/clear', paramsType: 'ThreadGoalClearParams', category: 'thread', operation: 'goal/clear', interaction: 'request' },
  { method: 'thread/metadata/update', paramsType: 'ThreadMetadataUpdateParams', category: 'thread', operation: 'metadata/update', interaction: 'request' },
  { method: 'thread/settings/update', paramsType: 'ThreadSettingsUpdateParams', category: 'thread', operation: 'settings/update', interaction: 'request' },
  { method: 'thread/memoryMode/set', paramsType: 'ThreadMemoryModeSetParams', category: 'thread', operation: 'memoryMode/set', interaction: 'request' },
  { method: 'memory/reset', paramsType: null, category: 'memory', operation: 'reset', interaction: 'request' },
  { method: 'thread/unarchive', paramsType: 'ThreadUnarchiveParams', category: 'thread', operation: 'unarchive', interaction: 'request' },
  { method: 'thread/compact/start', paramsType: 'ThreadCompactStartParams', category: 'thread', operation: 'compact/start', interaction: 'request' },
  { method: 'thread/shellCommand', paramsType: 'ThreadShellCommandParams', category: 'thread', operation: 'shellCommand', interaction: 'request' },
  { method: 'thread/approveGuardianDeniedAction', paramsType: 'ThreadApproveGuardianDeniedActionParams', category: 'thread', operation: 'approveGuardianDeniedAction', interaction: 'request' },
  { method: 'thread/backgroundTerminals/clean', paramsType: 'ThreadBackgroundTerminalsCleanParams', category: 'thread', operation: 'backgroundTerminals/clean', interaction: 'request' },
  { method: 'thread/backgroundTerminals/list', paramsType: 'ThreadBackgroundTerminalsListParams', category: 'thread', operation: 'backgroundTerminals/list', interaction: 'request' },
  { method: 'thread/backgroundTerminals/terminate', paramsType: 'ThreadBackgroundTerminalsTerminateParams', category: 'thread', operation: 'backgroundTerminals/terminate', interaction: 'request' },
  { method: 'thread/rollback', paramsType: 'ThreadRollbackParams', category: 'thread', operation: 'rollback', interaction: 'request' },
  { method: 'thread/list', paramsType: 'ThreadListParams', category: 'thread', operation: 'list', interaction: 'request' },
  { method: 'thread/search', paramsType: 'ThreadSearchParams', category: 'thread', operation: 'search', interaction: 'request' },
  { method: 'thread/searchOccurrences', paramsType: 'ThreadSearchOccurrencesParams', category: 'thread', operation: 'searchOccurrences', interaction: 'request' },
  { method: 'thread/loaded/list', paramsType: 'ThreadLoadedListParams', category: 'thread', operation: 'loaded/list', interaction: 'request' },
  { method: 'thread/read', paramsType: 'ThreadReadParams', category: 'thread', operation: 'read', interaction: 'request' },
  { method: 'thread/turns/list', paramsType: 'ThreadTurnsListParams', category: 'thread', operation: 'turns/list', interaction: 'request' },
  { method: 'thread/items/list', paramsType: 'ThreadItemsListParams', category: 'thread', operation: 'items/list', interaction: 'request' },
  { method: 'thread/inject_items', paramsType: 'ThreadInjectItemsParams', category: 'thread', operation: 'inject_items', interaction: 'request' },
  { method: 'skills/list', paramsType: 'SkillsListParams', category: 'skills', operation: 'list', interaction: 'request' },
  { method: 'skills/extraRoots/set', paramsType: 'SkillsExtraRootsSetParams', category: 'skills', operation: 'extraRoots/set', interaction: 'request' },
  { method: 'hooks/list', paramsType: 'HooksListParams', category: 'hooks', operation: 'list', interaction: 'request' },
  { method: 'marketplace/add', paramsType: 'MarketplaceAddParams', category: 'marketplace', operation: 'add', interaction: 'request' },
  { method: 'marketplace/remove', paramsType: 'MarketplaceRemoveParams', category: 'marketplace', operation: 'remove', interaction: 'request' },
  { method: 'marketplace/upgrade', paramsType: 'MarketplaceUpgradeParams', category: 'marketplace', operation: 'upgrade', interaction: 'request' },
  { method: 'plugin/list', paramsType: 'PluginListParams', category: 'plugin', operation: 'list', interaction: 'request' },
  { method: 'plugin/installed', paramsType: 'PluginInstalledParams', category: 'plugin', operation: 'installed', interaction: 'request' },
  { method: 'plugin/read', paramsType: 'PluginReadParams', category: 'plugin', operation: 'read', interaction: 'request' },
  { method: 'plugin/skill/read', paramsType: 'PluginSkillReadParams', category: 'plugin', operation: 'skill/read', interaction: 'request' },
  { method: 'plugin/share/save', paramsType: 'PluginShareSaveParams', category: 'plugin', operation: 'share/save', interaction: 'request' },
  { method: 'plugin/share/updateTargets', paramsType: 'PluginShareUpdateTargetsParams', category: 'plugin', operation: 'share/updateTargets', interaction: 'request' },
  { method: 'plugin/share/list', paramsType: 'PluginShareListParams', category: 'plugin', operation: 'share/list', interaction: 'request' },
  { method: 'plugin/share/checkout', paramsType: 'PluginShareCheckoutParams', category: 'plugin', operation: 'share/checkout', interaction: 'request' },
  { method: 'plugin/share/delete', paramsType: 'PluginShareDeleteParams', category: 'plugin', operation: 'share/delete', interaction: 'request' },
  { method: 'app/read', paramsType: 'AppsReadParams', category: 'app', operation: 'read', interaction: 'request' },
  { method: 'app/list', paramsType: 'AppsListParams', category: 'app', operation: 'list', interaction: 'request' },
  { method: 'app/installed', paramsType: 'AppsInstalledParams', category: 'app', operation: 'installed', interaction: 'request' },
  { method: 'fs/readFile', paramsType: 'FsReadFileParams', category: 'fs', operation: 'readFile', interaction: 'request' },
  { method: 'fs/writeFile', paramsType: 'FsWriteFileParams', category: 'fs', operation: 'writeFile', interaction: 'request' },
  { method: 'fs/createDirectory', paramsType: 'FsCreateDirectoryParams', category: 'fs', operation: 'createDirectory', interaction: 'request' },
  { method: 'fs/getMetadata', paramsType: 'FsGetMetadataParams', category: 'fs', operation: 'getMetadata', interaction: 'request' },
  { method: 'fs/readDirectory', paramsType: 'FsReadDirectoryParams', category: 'fs', operation: 'readDirectory', interaction: 'request' },
  { method: 'fs/remove', paramsType: 'FsRemoveParams', category: 'fs', operation: 'remove', interaction: 'request' },
  { method: 'fs/copy', paramsType: 'FsCopyParams', category: 'fs', operation: 'copy', interaction: 'request' },
  { method: 'fs/watch', paramsType: 'FsWatchParams', category: 'fs', operation: 'watch', interaction: 'stream' },
  { method: 'fs/unwatch', paramsType: 'FsUnwatchParams', category: 'fs', operation: 'unwatch', interaction: 'request' },
  { method: 'skills/config/write', paramsType: 'SkillsConfigWriteParams', category: 'skills', operation: 'config/write', interaction: 'request' },
  { method: 'plugin/install', paramsType: 'PluginInstallParams', category: 'plugin', operation: 'install', interaction: 'request' },
  { method: 'plugin/uninstall', paramsType: 'PluginUninstallParams', category: 'plugin', operation: 'uninstall', interaction: 'request' },
  { method: 'turn/start', paramsType: 'TurnStartParams', category: 'turn', operation: 'start', interaction: 'stream' },
  { method: 'turn/steer', paramsType: 'TurnSteerParams', category: 'turn', operation: 'steer', interaction: 'request' },
  { method: 'turn/interrupt', paramsType: 'TurnInterruptParams', category: 'turn', operation: 'interrupt', interaction: 'request' },
  { method: 'thread/realtime/start', paramsType: 'ThreadRealtimeStartParams', category: 'thread', operation: 'realtime/start', interaction: 'stream' },
  { method: 'thread/realtime/appendAudio', paramsType: 'ThreadRealtimeAppendAudioParams', category: 'thread', operation: 'realtime/appendAudio', interaction: 'stream' },
  { method: 'thread/realtime/appendText', paramsType: 'ThreadRealtimeAppendTextParams', category: 'thread', operation: 'realtime/appendText', interaction: 'stream' },
  { method: 'thread/realtime/appendSpeech', paramsType: 'ThreadRealtimeAppendSpeechParams', category: 'thread', operation: 'realtime/appendSpeech', interaction: 'request' },
  { method: 'thread/realtime/stop', paramsType: 'ThreadRealtimeStopParams', category: 'thread', operation: 'realtime/stop', interaction: 'stream' },
  { method: 'thread/realtime/listVoices', paramsType: 'ThreadRealtimeListVoicesParams', category: 'thread', operation: 'realtime/listVoices', interaction: 'request' },
  { method: 'review/start', paramsType: 'ReviewStartParams', category: 'review', operation: 'start', interaction: 'request' },
  { method: 'model/list', paramsType: 'ModelListParams', category: 'model', operation: 'list', interaction: 'request' },
  { method: 'modelProvider/capabilities/read', paramsType: 'ModelProviderCapabilitiesReadParams', category: 'model-provider', operation: 'capabilities/read', interaction: 'request' },
  { method: 'experimentalFeature/list', paramsType: 'ExperimentalFeatureListParams', category: 'experimental-feature', operation: 'list', interaction: 'request' },
  { method: 'permissionProfile/list', paramsType: 'PermissionProfileListParams', category: 'permission-profile', operation: 'list', interaction: 'request' },
  { method: 'experimentalFeature/enablement/set', paramsType: 'ExperimentalFeatureEnablementSetParams', category: 'experimental-feature', operation: 'enablement/set', interaction: 'request' },
  { method: 'remoteControl/enable', paramsType: 'RemoteControlEnableParams | null', category: 'remote-control', operation: 'enable', interaction: 'request' },
  { method: 'remoteControl/disable', paramsType: 'RemoteControlDisableParams | null', category: 'remote-control', operation: 'disable', interaction: 'request' },
  { method: 'remoteControl/status/read', paramsType: null, category: 'remote-control', operation: 'status/read', interaction: 'request' },
  { method: 'remoteControl/pairing/start', paramsType: 'RemoteControlPairingStartParams', category: 'remote-control', operation: 'pairing/start', interaction: 'request' },
  { method: 'remoteControl/pairing/status', paramsType: 'RemoteControlPairingStatusParams', category: 'remote-control', operation: 'pairing/status', interaction: 'request' },
  { method: 'remoteControl/client/list', paramsType: 'RemoteControlClientsListParams', category: 'remote-control', operation: 'client/list', interaction: 'request' },
  { method: 'remoteControl/client/revoke', paramsType: 'RemoteControlClientsRevokeParams', category: 'remote-control', operation: 'client/revoke', interaction: 'request' },
  { method: 'collaborationMode/list', paramsType: 'CollaborationModeListParams', category: 'collaboration-mode', operation: 'list', interaction: 'request' },
  { method: 'mock/experimentalMethod', paramsType: 'MockExperimentalMethodParams', category: 'mock', operation: 'experimentalMethod', interaction: 'request' },
  { method: 'environment/add', paramsType: 'EnvironmentAddParams', category: 'environment', operation: 'add', interaction: 'request' },
  { method: 'environment/info', paramsType: 'EnvironmentInfoParams', category: 'environment', operation: 'info', interaction: 'request' },
  { method: 'environment/status', paramsType: 'EnvironmentStatusParams', category: 'environment', operation: 'status', interaction: 'request' },
  { method: 'mcpServer/oauth/login', paramsType: 'McpServerOauthLoginParams', category: 'mcp-server', operation: 'oauth/login', interaction: 'request' },
  { method: 'config/mcpServer/reload', paramsType: null, category: 'config', operation: 'mcpServer/reload', interaction: 'request' },
  { method: 'mcpServerStatus/list', paramsType: 'ListMcpServerStatusParams', category: 'mcp-server-status', operation: 'list', interaction: 'request' },
  { method: 'mcpServer/resource/read', paramsType: 'McpResourceReadParams', category: 'mcp-server', operation: 'resource/read', interaction: 'request' },
  { method: 'mcpServer/tool/call', paramsType: 'McpServerToolCallParams', category: 'mcp-server', operation: 'tool/call', interaction: 'request' },
  { method: 'windowsSandbox/setupStart', paramsType: 'WindowsSandboxSetupStartParams', category: 'windows-sandbox', operation: 'setupStart', interaction: 'stream' },
  { method: 'windowsSandbox/readiness', paramsType: null, category: 'windows-sandbox', operation: 'readiness', interaction: 'request' },
  { method: 'account/login/start', paramsType: 'LoginAccountParams', category: 'account', operation: 'login/start', interaction: 'stream' },
  { method: 'account/login/cancel', paramsType: 'CancelLoginAccountParams', category: 'account', operation: 'login/cancel', interaction: 'request' },
  { method: 'account/logout', paramsType: null, category: 'account', operation: 'logout', interaction: 'request' },
  { method: 'account/rateLimits/read', paramsType: null, category: 'account', operation: 'rateLimits/read', interaction: 'request' },
  { method: 'account/rateLimitResetCredit/consume', paramsType: 'ConsumeAccountRateLimitResetCreditParams', category: 'account', operation: 'rateLimitResetCredit/consume', interaction: 'request' },
  { method: 'account/usage/read', paramsType: null, category: 'account', operation: 'usage/read', interaction: 'request' },
  { method: 'account/workspaceMessages/read', paramsType: null, category: 'account', operation: 'workspaceMessages/read', interaction: 'request' },
  { method: 'account/sendAddCreditsNudgeEmail', paramsType: 'SendAddCreditsNudgeEmailParams', category: 'account', operation: 'sendAddCreditsNudgeEmail', interaction: 'request' },
  { method: 'feedback/upload', paramsType: 'FeedbackUploadParams', category: 'feedback', operation: 'upload', interaction: 'request' },
  { method: 'command/exec', paramsType: 'CommandExecParams', category: 'command', operation: 'exec', interaction: 'stream' },
  { method: 'command/exec/write', paramsType: 'CommandExecWriteParams', category: 'command', operation: 'exec/write', interaction: 'request' },
  { method: 'command/exec/terminate', paramsType: 'CommandExecTerminateParams', category: 'command', operation: 'exec/terminate', interaction: 'request' },
  { method: 'command/exec/resize', paramsType: 'CommandExecResizeParams', category: 'command', operation: 'exec/resize', interaction: 'request' },
  { method: 'process/spawn', paramsType: 'ProcessSpawnParams', category: 'process', operation: 'spawn', interaction: 'stream' },
  { method: 'process/writeStdin', paramsType: 'ProcessWriteStdinParams', category: 'process', operation: 'writeStdin', interaction: 'request' },
  { method: 'process/kill', paramsType: 'ProcessKillParams', category: 'process', operation: 'kill', interaction: 'request' },
  { method: 'process/resizePty', paramsType: 'ProcessResizePtyParams', category: 'process', operation: 'resizePty', interaction: 'request' },
  { method: 'config/read', paramsType: 'ConfigReadParams', category: 'config', operation: 'read', interaction: 'request' },
  { method: 'externalAgentConfig/detect', paramsType: 'ExternalAgentConfigDetectParams', category: 'external-agent-config', operation: 'detect', interaction: 'request' },
  { method: 'externalAgentConfig/import', paramsType: 'ExternalAgentConfigImportParams', category: 'external-agent-config', operation: 'import', interaction: 'stream' },
  { method: 'externalAgentConfig/import/recordHistory', paramsType: 'ExternalAgentConfigImportHistoryRecordParams', category: 'external-agent-config', operation: 'import/recordHistory', interaction: 'request' },
  { method: 'externalAgentConfig/import/readHistories', paramsType: null, category: 'external-agent-config', operation: 'import/readHistories', interaction: 'request' },
  { method: 'config/value/write', paramsType: 'ConfigValueWriteParams', category: 'config', operation: 'value/write', interaction: 'request' },
  { method: 'config/batchWrite', paramsType: 'ConfigBatchWriteParams', category: 'config', operation: 'batchWrite', interaction: 'request' },
  { method: 'configRequirements/read', paramsType: null, category: 'config-requirements', operation: 'read', interaction: 'request' },
  { method: 'account/read', paramsType: 'GetAccountParams', category: 'account', operation: 'read', interaction: 'request' },
  { method: 'getConversationSummary', paramsType: 'GetConversationSummaryParams', category: 'get-conversation-summary', operation: 'getConversationSummary', interaction: 'request' },
  { method: 'gitDiffToRemote', paramsType: 'GitDiffToRemoteParams', category: 'git-diff-to-remote', operation: 'gitDiffToRemote', interaction: 'request' },
  { method: 'getAuthStatus', paramsType: 'GetAuthStatusParams', category: 'get-auth-status', operation: 'getAuthStatus', interaction: 'request' },
  { method: 'fuzzyFileSearch', paramsType: 'FuzzyFileSearchParams', category: 'fuzzy-file-search', operation: 'fuzzyFileSearch', interaction: 'request' },
  { method: 'fuzzyFileSearch/sessionStart', paramsType: 'FuzzyFileSearchSessionStartParams', category: 'fuzzy-file-search', operation: 'sessionStart', interaction: 'stream' },
  { method: 'fuzzyFileSearch/sessionUpdate', paramsType: 'FuzzyFileSearchSessionUpdateParams', category: 'fuzzy-file-search', operation: 'sessionUpdate', interaction: 'stream' },
  { method: 'fuzzyFileSearch/sessionStop', paramsType: 'FuzzyFileSearchSessionStopParams', category: 'fuzzy-file-search', operation: 'sessionStop', interaction: 'request' },
] as const satisfies readonly CodexAppServerMethodCapability[]

export const CODEX_APP_SERVER_SERVER_REQUESTS = [
  { method: 'item/commandExecution/requestApproval', paramsType: 'CommandExecutionRequestApprovalParams', category: 'item' },
  { method: 'item/fileChange/requestApproval', paramsType: 'FileChangeRequestApprovalParams', category: 'item' },
  { method: 'item/tool/requestUserInput', paramsType: 'ToolRequestUserInputParams', category: 'item' },
  { method: 'mcpServer/elicitation/request', paramsType: 'McpServerElicitationRequestParams', category: 'mcp-server' },
  { method: 'item/permissions/requestApproval', paramsType: 'PermissionsRequestApprovalParams', category: 'item' },
  { method: 'item/tool/call', paramsType: 'DynamicToolCallParams', category: 'item' },
  { method: 'account/chatgptAuthTokens/refresh', paramsType: 'ChatgptAuthTokensRefreshParams', category: 'account' },
  { method: 'attestation/generate', paramsType: 'AttestationGenerateParams', category: 'attestation' },
  { method: 'currentTime/read', paramsType: 'CurrentTimeReadParams', category: 'current-time' },
  { method: 'applyPatchApproval', paramsType: 'ApplyPatchApprovalParams', category: 'apply-patch-approval' },
  { method: 'execCommandApproval', paramsType: 'ExecCommandApprovalParams', category: 'exec-command-approval' },
] as const satisfies readonly CodexAppServerServerMessageCapability[]

export const CODEX_APP_SERVER_SERVER_NOTIFICATIONS = [
  { method: 'error', paramsType: 'ErrorNotification', category: 'error' },
  { method: 'thread/started', paramsType: 'ThreadStartedNotification', category: 'thread' },
  { method: 'thread/status/changed', paramsType: 'ThreadStatusChangedNotification', category: 'thread' },
  { method: 'thread/archived', paramsType: 'ThreadArchivedNotification', category: 'thread' },
  { method: 'thread/deleted', paramsType: 'ThreadDeletedNotification', category: 'thread' },
  { method: 'thread/unarchived', paramsType: 'ThreadUnarchivedNotification', category: 'thread' },
  { method: 'thread/closed', paramsType: 'ThreadClosedNotification', category: 'thread' },
  { method: 'skills/changed', paramsType: 'SkillsChangedNotification', category: 'skills' },
  { method: 'thread/name/updated', paramsType: 'ThreadNameUpdatedNotification', category: 'thread' },
  { method: 'thread/goal/updated', paramsType: 'ThreadGoalUpdatedNotification', category: 'thread' },
  { method: 'thread/goal/cleared', paramsType: 'ThreadGoalClearedNotification', category: 'thread' },
  { method: 'thread/environment/connected', paramsType: 'EnvironmentConnectionNotification', category: 'thread' },
  { method: 'thread/environment/disconnected', paramsType: 'EnvironmentConnectionNotification', category: 'thread' },
  { method: 'thread/settings/updated', paramsType: 'ThreadSettingsUpdatedNotification', category: 'thread' },
  { method: 'thread/tokenUsage/updated', paramsType: 'ThreadTokenUsageUpdatedNotification', category: 'thread' },
  { method: 'turn/started', paramsType: 'TurnStartedNotification', category: 'turn' },
  { method: 'hook/started', paramsType: 'HookStartedNotification', category: 'hook' },
  { method: 'turn/completed', paramsType: 'TurnCompletedNotification', category: 'turn' },
  { method: 'hook/completed', paramsType: 'HookCompletedNotification', category: 'hook' },
  { method: 'turn/diff/updated', paramsType: 'TurnDiffUpdatedNotification', category: 'turn' },
  { method: 'turn/plan/updated', paramsType: 'TurnPlanUpdatedNotification', category: 'turn' },
  { method: 'item/started', paramsType: 'ItemStartedNotification', category: 'item' },
  { method: 'item/autoApprovalReview/started', paramsType: 'ItemGuardianApprovalReviewStartedNotification', category: 'item' },
  { method: 'item/autoApprovalReview/completed', paramsType: 'ItemGuardianApprovalReviewCompletedNotification', category: 'item' },
  { method: 'item/completed', paramsType: 'ItemCompletedNotification', category: 'item' },
  { method: 'rawResponseItem/completed', paramsType: 'RawResponseItemCompletedNotification', category: 'raw-response-item' },
  { method: 'rawResponse/completed', paramsType: 'RawResponseCompletedNotification', category: 'raw-response' },
  { method: 'item/agentMessage/delta', paramsType: 'AgentMessageDeltaNotification', category: 'item' },
  { method: 'item/plan/delta', paramsType: 'PlanDeltaNotification', category: 'item' },
  { method: 'command/exec/outputDelta', paramsType: 'CommandExecOutputDeltaNotification', category: 'command' },
  { method: 'process/outputDelta', paramsType: 'ProcessOutputDeltaNotification', category: 'process' },
  { method: 'process/exited', paramsType: 'ProcessExitedNotification', category: 'process' },
  { method: 'item/commandExecution/outputDelta', paramsType: 'CommandExecutionOutputDeltaNotification', category: 'item' },
  { method: 'item/commandExecution/terminalInteraction', paramsType: 'TerminalInteractionNotification', category: 'item' },
  { method: 'item/fileChange/outputDelta', paramsType: 'FileChangeOutputDeltaNotification', category: 'item' },
  { method: 'item/fileChange/patchUpdated', paramsType: 'FileChangePatchUpdatedNotification', category: 'item' },
  { method: 'serverRequest/resolved', paramsType: 'ServerRequestResolvedNotification', category: 'server-request' },
  { method: 'item/mcpToolCall/progress', paramsType: 'McpToolCallProgressNotification', category: 'item' },
  { method: 'mcpServer/oauthLogin/completed', paramsType: 'McpServerOauthLoginCompletedNotification', category: 'mcp-server' },
  { method: 'mcpServer/startupStatus/updated', paramsType: 'McpServerStatusUpdatedNotification', category: 'mcp-server' },
  { method: 'account/updated', paramsType: 'AccountUpdatedNotification', category: 'account' },
  { method: 'account/rateLimits/updated', paramsType: 'AccountRateLimitsUpdatedNotification', category: 'account' },
  { method: 'app/list/updated', paramsType: 'AppListUpdatedNotification', category: 'app' },
  { method: 'remoteControl/status/changed', paramsType: 'RemoteControlStatusChangedNotification', category: 'remote-control' },
  { method: 'externalAgentConfig/import/progress', paramsType: 'ExternalAgentConfigImportProgressNotification', category: 'external-agent-config' },
  { method: 'externalAgentConfig/import/completed', paramsType: 'ExternalAgentConfigImportCompletedNotification', category: 'external-agent-config' },
  { method: 'fs/changed', paramsType: 'FsChangedNotification', category: 'fs' },
  { method: 'item/reasoning/summaryTextDelta', paramsType: 'ReasoningSummaryTextDeltaNotification', category: 'item' },
  { method: 'item/reasoning/summaryPartAdded', paramsType: 'ReasoningSummaryPartAddedNotification', category: 'item' },
  { method: 'item/reasoning/textDelta', paramsType: 'ReasoningTextDeltaNotification', category: 'item' },
  { method: 'thread/compacted', paramsType: 'ContextCompactedNotification', category: 'thread' },
  { method: 'model/rerouted', paramsType: 'ModelReroutedNotification', category: 'model' },
  { method: 'model/verification', paramsType: 'ModelVerificationNotification', category: 'model' },
  { method: 'turn/moderationMetadata', paramsType: 'TurnModerationMetadataNotification', category: 'turn' },
  { method: 'model/safetyBuffering/updated', paramsType: 'ModelSafetyBufferingUpdatedNotification', category: 'model' },
  { method: 'warning', paramsType: 'WarningNotification', category: 'warning' },
  { method: 'guardianWarning', paramsType: 'GuardianWarningNotification', category: 'guardian-warning' },
  { method: 'deprecationNotice', paramsType: 'DeprecationNoticeNotification', category: 'deprecation-notice' },
  { method: 'configWarning', paramsType: 'ConfigWarningNotification', category: 'config-warning' },
  { method: 'fuzzyFileSearch/sessionUpdated', paramsType: 'FuzzyFileSearchSessionUpdatedNotification', category: 'fuzzy-file-search' },
  { method: 'fuzzyFileSearch/sessionCompleted', paramsType: 'FuzzyFileSearchSessionCompletedNotification', category: 'fuzzy-file-search' },
  { method: 'thread/realtime/started', paramsType: 'ThreadRealtimeStartedNotification', category: 'thread' },
  { method: 'thread/realtime/itemAdded', paramsType: 'ThreadRealtimeItemAddedNotification', category: 'thread' },
  { method: 'thread/realtime/transcript/delta', paramsType: 'ThreadRealtimeTranscriptDeltaNotification', category: 'thread' },
  { method: 'thread/realtime/transcript/done', paramsType: 'ThreadRealtimeTranscriptDoneNotification', category: 'thread' },
  { method: 'thread/realtime/outputAudio/delta', paramsType: 'ThreadRealtimeOutputAudioDeltaNotification', category: 'thread' },
  { method: 'thread/realtime/sdp', paramsType: 'ThreadRealtimeSdpNotification', category: 'thread' },
  { method: 'thread/realtime/error', paramsType: 'ThreadRealtimeErrorNotification', category: 'thread' },
  { method: 'thread/realtime/closed', paramsType: 'ThreadRealtimeClosedNotification', category: 'thread' },
  { method: 'windows/worldWritableWarning', paramsType: 'WindowsWorldWritableWarningNotification', category: 'windows' },
  { method: 'windowsSandbox/setupCompleted', paramsType: 'WindowsSandboxSetupCompletedNotification', category: 'windows-sandbox' },
  { method: 'account/login/completed', paramsType: 'AccountLoginCompletedNotification', category: 'account' },
] as const satisfies readonly CodexAppServerServerMessageCapability[]

export const CODEX_APP_SERVER_CLIENT_METHOD_SET = new Set<string>(
  CODEX_APP_SERVER_CLIENT_METHODS.map(method => method.method),
)

export const CODEX_APP_SERVER_CAPABILITIES = {
  protocol: CODEX_APP_SERVER_PROTOCOL,
  generatorVersion: CODEX_APP_SERVER_GENERATOR_VERSION,
  generatedDate: CODEX_APP_SERVER_GENERATED_DATE,
  clientMethods: [...CODEX_APP_SERVER_CLIENT_METHODS],
  serverRequests: [...CODEX_APP_SERVER_SERVER_REQUESTS],
  serverNotifications: [...CODEX_APP_SERVER_SERVER_NOTIFICATIONS],
} satisfies CodexAppServerCapabilityManifest

export function readCodexAppServerMethodCapability(method: string): CodexAppServerMethodCapability | null {
  return CODEX_APP_SERVER_CLIENT_METHODS.find(capability => capability.method === method) ?? null
}
