summaryrefslogtreecommitdiffhomepage
path: root/packages/sdk/go/config.go
diff options
context:
space:
mode:
authorDax <[email protected]>2025-07-31 01:00:29 -0400
committerGitHub <[email protected]>2025-07-31 01:00:29 -0400
commit33cef075d228e80aefb44671ec68e1989c2855a8 (patch)
treed43a5c1bcc40d4d938eacccfd923c80301706cf1 /packages/sdk/go/config.go
parentb09ebf464552f3899120b22c7a8572669000a554 (diff)
downloadopencode-33cef075d228e80aefb44671ec68e1989c2855a8.tar.gz
opencode-33cef075d228e80aefb44671ec68e1989c2855a8.zip
ci: new publish method (#1451)
Diffstat (limited to 'packages/sdk/go/config.go')
-rw-r--r--packages/sdk/go/config.go887
1 files changed, 887 insertions, 0 deletions
diff --git a/packages/sdk/go/config.go b/packages/sdk/go/config.go
new file mode 100644
index 000000000..5fcfd1edc
--- /dev/null
+++ b/packages/sdk/go/config.go
@@ -0,0 +1,887 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+package opencode
+
+import (
+ "context"
+ "net/http"
+ "reflect"
+
+ "github.com/sst/opencode-sdk-go/internal/apijson"
+ "github.com/sst/opencode-sdk-go/internal/requestconfig"
+ "github.com/sst/opencode-sdk-go/option"
+ "github.com/tidwall/gjson"
+)
+
+// ConfigService contains methods and other services that help with interacting
+// with the opencode API.
+//
+// Note, unlike clients, this service does not read variables from the environment
+// automatically. You should not instantiate this service directly, and instead use
+// the [NewConfigService] method instead.
+type ConfigService struct {
+ Options []option.RequestOption
+}
+
+// NewConfigService generates a new service that applies the given options to each
+// request. These options are applied after the parent client's options (if there
+// is one), and before any request-specific options.
+func NewConfigService(opts ...option.RequestOption) (r *ConfigService) {
+ r = &ConfigService{}
+ r.Options = opts
+ return
+}
+
+// Get config info
+func (r *ConfigService) Get(ctx context.Context, opts ...option.RequestOption) (res *Config, err error) {
+ opts = append(r.Options[:], opts...)
+ path := "config"
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ return
+}
+
+type Config struct {
+ // JSON schema reference for configuration validation
+ Schema string `json:"$schema"`
+ // Modes configuration, see https://opencode.ai/docs/modes
+ Agent ConfigAgent `json:"agent"`
+ // @deprecated Use 'share' field instead. Share newly created sessions
+ // automatically
+ Autoshare bool `json:"autoshare"`
+ // Automatically update to the latest version
+ Autoupdate bool `json:"autoupdate"`
+ // Disable providers that are loaded automatically
+ DisabledProviders []string `json:"disabled_providers"`
+ Experimental ConfigExperimental `json:"experimental"`
+ // Additional instruction files or patterns to include
+ Instructions []string `json:"instructions"`
+ // Custom keybind configurations
+ Keybinds KeybindsConfig `json:"keybinds"`
+ // @deprecated Always uses stretch layout.
+ Layout ConfigLayout `json:"layout"`
+ // MCP (Model Context Protocol) server configurations
+ Mcp map[string]ConfigMcp `json:"mcp"`
+ // Modes configuration, see https://opencode.ai/docs/modes
+ Mode ConfigMode `json:"mode"`
+ // Model to use in the format of provider/model, eg anthropic/claude-2
+ Model string `json:"model"`
+ Permission ConfigPermission `json:"permission"`
+ // Custom provider configurations and model overrides
+ Provider map[string]ConfigProvider `json:"provider"`
+ // Control sharing behavior:'manual' allows manual sharing via commands, 'auto'
+ // enables automatic sharing, 'disabled' disables all sharing
+ Share ConfigShare `json:"share"`
+ // Small model to use for tasks like summarization and title generation in the
+ // format of provider/model
+ SmallModel string `json:"small_model"`
+ // Theme name to use for the interface
+ Theme string `json:"theme"`
+ // Custom username to display in conversations instead of system username
+ Username string `json:"username"`
+ JSON configJSON `json:"-"`
+}
+
+// configJSON contains the JSON metadata for the struct [Config]
+type configJSON struct {
+ Schema apijson.Field
+ Agent apijson.Field
+ Autoshare apijson.Field
+ Autoupdate apijson.Field
+ DisabledProviders apijson.Field
+ Experimental apijson.Field
+ Instructions apijson.Field
+ Keybinds apijson.Field
+ Layout apijson.Field
+ Mcp apijson.Field
+ Mode apijson.Field
+ Model apijson.Field
+ Permission apijson.Field
+ Provider apijson.Field
+ Share apijson.Field
+ SmallModel apijson.Field
+ Theme apijson.Field
+ Username apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *Config) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configJSON) RawJSON() string {
+ return r.raw
+}
+
+// Modes configuration, see https://opencode.ai/docs/modes
+type ConfigAgent struct {
+ General ConfigAgentGeneral `json:"general"`
+ ExtraFields map[string]ConfigAgent `json:"-,extras"`
+ JSON configAgentJSON `json:"-"`
+}
+
+// configAgentJSON contains the JSON metadata for the struct [ConfigAgent]
+type configAgentJSON struct {
+ General apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigAgent) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configAgentJSON) RawJSON() string {
+ return r.raw
+}
+
+type ConfigAgentGeneral struct {
+ Description string `json:"description,required"`
+ JSON configAgentGeneralJSON `json:"-"`
+ ModeConfig
+}
+
+// configAgentGeneralJSON contains the JSON metadata for the struct
+// [ConfigAgentGeneral]
+type configAgentGeneralJSON struct {
+ Description apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigAgentGeneral) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configAgentGeneralJSON) RawJSON() string {
+ return r.raw
+}
+
+type ConfigExperimental struct {
+ Hook ConfigExperimentalHook `json:"hook"`
+ JSON configExperimentalJSON `json:"-"`
+}
+
+// configExperimentalJSON contains the JSON metadata for the struct
+// [ConfigExperimental]
+type configExperimentalJSON struct {
+ Hook apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigExperimental) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configExperimentalJSON) RawJSON() string {
+ return r.raw
+}
+
+type ConfigExperimentalHook struct {
+ FileEdited map[string][]ConfigExperimentalHookFileEdited `json:"file_edited"`
+ SessionCompleted []ConfigExperimentalHookSessionCompleted `json:"session_completed"`
+ JSON configExperimentalHookJSON `json:"-"`
+}
+
+// configExperimentalHookJSON contains the JSON metadata for the struct
+// [ConfigExperimentalHook]
+type configExperimentalHookJSON struct {
+ FileEdited apijson.Field
+ SessionCompleted apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigExperimentalHook) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configExperimentalHookJSON) RawJSON() string {
+ return r.raw
+}
+
+type ConfigExperimentalHookFileEdited struct {
+ Command []string `json:"command,required"`
+ Environment map[string]string `json:"environment"`
+ JSON configExperimentalHookFileEditedJSON `json:"-"`
+}
+
+// configExperimentalHookFileEditedJSON contains the JSON metadata for the struct
+// [ConfigExperimentalHookFileEdited]
+type configExperimentalHookFileEditedJSON struct {
+ Command apijson.Field
+ Environment apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigExperimentalHookFileEdited) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configExperimentalHookFileEditedJSON) RawJSON() string {
+ return r.raw
+}
+
+type ConfigExperimentalHookSessionCompleted struct {
+ Command []string `json:"command,required"`
+ Environment map[string]string `json:"environment"`
+ JSON configExperimentalHookSessionCompletedJSON `json:"-"`
+}
+
+// configExperimentalHookSessionCompletedJSON contains the JSON metadata for the
+// struct [ConfigExperimentalHookSessionCompleted]
+type configExperimentalHookSessionCompletedJSON struct {
+ Command apijson.Field
+ Environment apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigExperimentalHookSessionCompleted) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configExperimentalHookSessionCompletedJSON) RawJSON() string {
+ return r.raw
+}
+
+// @deprecated Always uses stretch layout.
+type ConfigLayout string
+
+const (
+ ConfigLayoutAuto ConfigLayout = "auto"
+ ConfigLayoutStretch ConfigLayout = "stretch"
+)
+
+func (r ConfigLayout) IsKnown() bool {
+ switch r {
+ case ConfigLayoutAuto, ConfigLayoutStretch:
+ return true
+ }
+ return false
+}
+
+type ConfigMcp struct {
+ // Type of MCP server connection
+ Type ConfigMcpType `json:"type,required"`
+ // This field can have the runtime type of [[]string].
+ Command interface{} `json:"command"`
+ // Enable or disable the MCP server on startup
+ Enabled bool `json:"enabled"`
+ // This field can have the runtime type of [map[string]string].
+ Environment interface{} `json:"environment"`
+ // This field can have the runtime type of [map[string]string].
+ Headers interface{} `json:"headers"`
+ // URL of the remote MCP server
+ URL string `json:"url"`
+ JSON configMcpJSON `json:"-"`
+ union ConfigMcpUnion
+}
+
+// configMcpJSON contains the JSON metadata for the struct [ConfigMcp]
+type configMcpJSON struct {
+ Type apijson.Field
+ Command apijson.Field
+ Enabled apijson.Field
+ Environment apijson.Field
+ Headers apijson.Field
+ URL apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r configMcpJSON) RawJSON() string {
+ return r.raw
+}
+
+func (r *ConfigMcp) UnmarshalJSON(data []byte) (err error) {
+ *r = ConfigMcp{}
+ err = apijson.UnmarshalRoot(data, &r.union)
+ if err != nil {
+ return err
+ }
+ return apijson.Port(r.union, &r)
+}
+
+// AsUnion returns a [ConfigMcpUnion] interface which you can cast to the specific
+// types for more type safety.
+//
+// Possible runtime types of the union are [McpLocalConfig], [McpRemoteConfig].
+func (r ConfigMcp) AsUnion() ConfigMcpUnion {
+ return r.union
+}
+
+// Union satisfied by [McpLocalConfig] or [McpRemoteConfig].
+type ConfigMcpUnion interface {
+ implementsConfigMcp()
+}
+
+func init() {
+ apijson.RegisterUnion(
+ reflect.TypeOf((*ConfigMcpUnion)(nil)).Elem(),
+ "type",
+ apijson.UnionVariant{
+ TypeFilter: gjson.JSON,
+ Type: reflect.TypeOf(McpLocalConfig{}),
+ DiscriminatorValue: "local",
+ },
+ apijson.UnionVariant{
+ TypeFilter: gjson.JSON,
+ Type: reflect.TypeOf(McpRemoteConfig{}),
+ DiscriminatorValue: "remote",
+ },
+ )
+}
+
+// Type of MCP server connection
+type ConfigMcpType string
+
+const (
+ ConfigMcpTypeLocal ConfigMcpType = "local"
+ ConfigMcpTypeRemote ConfigMcpType = "remote"
+)
+
+func (r ConfigMcpType) IsKnown() bool {
+ switch r {
+ case ConfigMcpTypeLocal, ConfigMcpTypeRemote:
+ return true
+ }
+ return false
+}
+
+// Modes configuration, see https://opencode.ai/docs/modes
+type ConfigMode struct {
+ Build ModeConfig `json:"build"`
+ Plan ModeConfig `json:"plan"`
+ ExtraFields map[string]ModeConfig `json:"-,extras"`
+ JSON configModeJSON `json:"-"`
+}
+
+// configModeJSON contains the JSON metadata for the struct [ConfigMode]
+type configModeJSON struct {
+ Build apijson.Field
+ Plan apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigMode) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configModeJSON) RawJSON() string {
+ return r.raw
+}
+
+type ConfigPermission struct {
+ Bash ConfigPermissionBashUnion `json:"bash"`
+ Edit ConfigPermissionEdit `json:"edit"`
+ JSON configPermissionJSON `json:"-"`
+}
+
+// configPermissionJSON contains the JSON metadata for the struct
+// [ConfigPermission]
+type configPermissionJSON struct {
+ Bash apijson.Field
+ Edit apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigPermission) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configPermissionJSON) RawJSON() string {
+ return r.raw
+}
+
+// Union satisfied by [ConfigPermissionBashString] or [ConfigPermissionBashMap].
+type ConfigPermissionBashUnion interface {
+ implementsConfigPermissionBashUnion()
+}
+
+func init() {
+ apijson.RegisterUnion(
+ reflect.TypeOf((*ConfigPermissionBashUnion)(nil)).Elem(),
+ "",
+ apijson.UnionVariant{
+ TypeFilter: gjson.String,
+ Type: reflect.TypeOf(ConfigPermissionBashString("")),
+ },
+ apijson.UnionVariant{
+ TypeFilter: gjson.JSON,
+ Type: reflect.TypeOf(ConfigPermissionBashMap{}),
+ },
+ )
+}
+
+type ConfigPermissionBashString string
+
+const (
+ ConfigPermissionBashStringAsk ConfigPermissionBashString = "ask"
+ ConfigPermissionBashStringAllow ConfigPermissionBashString = "allow"
+)
+
+func (r ConfigPermissionBashString) IsKnown() bool {
+ switch r {
+ case ConfigPermissionBashStringAsk, ConfigPermissionBashStringAllow:
+ return true
+ }
+ return false
+}
+
+func (r ConfigPermissionBashString) implementsConfigPermissionBashUnion() {}
+
+type ConfigPermissionBashMap map[string]ConfigPermissionBashMapItem
+
+func (r ConfigPermissionBashMap) implementsConfigPermissionBashUnion() {}
+
+type ConfigPermissionBashMapItem string
+
+const (
+ ConfigPermissionBashMapAsk ConfigPermissionBashMapItem = "ask"
+ ConfigPermissionBashMapAllow ConfigPermissionBashMapItem = "allow"
+)
+
+func (r ConfigPermissionBashMapItem) IsKnown() bool {
+ switch r {
+ case ConfigPermissionBashMapAsk, ConfigPermissionBashMapAllow:
+ return true
+ }
+ return false
+}
+
+type ConfigPermissionEdit string
+
+const (
+ ConfigPermissionEditAsk ConfigPermissionEdit = "ask"
+ ConfigPermissionEditAllow ConfigPermissionEdit = "allow"
+)
+
+func (r ConfigPermissionEdit) IsKnown() bool {
+ switch r {
+ case ConfigPermissionEditAsk, ConfigPermissionEditAllow:
+ return true
+ }
+ return false
+}
+
+type ConfigProvider struct {
+ Models map[string]ConfigProviderModel `json:"models,required"`
+ ID string `json:"id"`
+ API string `json:"api"`
+ Env []string `json:"env"`
+ Name string `json:"name"`
+ Npm string `json:"npm"`
+ Options ConfigProviderOptions `json:"options"`
+ JSON configProviderJSON `json:"-"`
+}
+
+// configProviderJSON contains the JSON metadata for the struct [ConfigProvider]
+type configProviderJSON struct {
+ Models apijson.Field
+ ID apijson.Field
+ API apijson.Field
+ Env apijson.Field
+ Name apijson.Field
+ Npm apijson.Field
+ Options apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigProvider) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configProviderJSON) RawJSON() string {
+ return r.raw
+}
+
+type ConfigProviderModel struct {
+ ID string `json:"id"`
+ Attachment bool `json:"attachment"`
+ Cost ConfigProviderModelsCost `json:"cost"`
+ Limit ConfigProviderModelsLimit `json:"limit"`
+ Name string `json:"name"`
+ Options map[string]interface{} `json:"options"`
+ Reasoning bool `json:"reasoning"`
+ ReleaseDate string `json:"release_date"`
+ Temperature bool `json:"temperature"`
+ ToolCall bool `json:"tool_call"`
+ JSON configProviderModelJSON `json:"-"`
+}
+
+// configProviderModelJSON contains the JSON metadata for the struct
+// [ConfigProviderModel]
+type configProviderModelJSON struct {
+ ID apijson.Field
+ Attachment apijson.Field
+ Cost apijson.Field
+ Limit apijson.Field
+ Name apijson.Field
+ Options apijson.Field
+ Reasoning apijson.Field
+ ReleaseDate apijson.Field
+ Temperature apijson.Field
+ ToolCall apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigProviderModel) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configProviderModelJSON) RawJSON() string {
+ return r.raw
+}
+
+type ConfigProviderModelsCost struct {
+ Input float64 `json:"input,required"`
+ Output float64 `json:"output,required"`
+ CacheRead float64 `json:"cache_read"`
+ CacheWrite float64 `json:"cache_write"`
+ JSON configProviderModelsCostJSON `json:"-"`
+}
+
+// configProviderModelsCostJSON contains the JSON metadata for the struct
+// [ConfigProviderModelsCost]
+type configProviderModelsCostJSON struct {
+ Input apijson.Field
+ Output apijson.Field
+ CacheRead apijson.Field
+ CacheWrite apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigProviderModelsCost) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configProviderModelsCostJSON) RawJSON() string {
+ return r.raw
+}
+
+type ConfigProviderModelsLimit struct {
+ Context float64 `json:"context,required"`
+ Output float64 `json:"output,required"`
+ JSON configProviderModelsLimitJSON `json:"-"`
+}
+
+// configProviderModelsLimitJSON contains the JSON metadata for the struct
+// [ConfigProviderModelsLimit]
+type configProviderModelsLimitJSON struct {
+ Context apijson.Field
+ Output apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigProviderModelsLimit) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configProviderModelsLimitJSON) RawJSON() string {
+ return r.raw
+}
+
+type ConfigProviderOptions struct {
+ APIKey string `json:"apiKey"`
+ BaseURL string `json:"baseURL"`
+ ExtraFields map[string]interface{} `json:"-,extras"`
+ JSON configProviderOptionsJSON `json:"-"`
+}
+
+// configProviderOptionsJSON contains the JSON metadata for the struct
+// [ConfigProviderOptions]
+type configProviderOptionsJSON struct {
+ APIKey apijson.Field
+ BaseURL apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigProviderOptions) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configProviderOptionsJSON) RawJSON() string {
+ return r.raw
+}
+
+// Control sharing behavior:'manual' allows manual sharing via commands, 'auto'
+// enables automatic sharing, 'disabled' disables all sharing
+type ConfigShare string
+
+const (
+ ConfigShareManual ConfigShare = "manual"
+ ConfigShareAuto ConfigShare = "auto"
+ ConfigShareDisabled ConfigShare = "disabled"
+)
+
+func (r ConfigShare) IsKnown() bool {
+ switch r {
+ case ConfigShareManual, ConfigShareAuto, ConfigShareDisabled:
+ return true
+ }
+ return false
+}
+
+type KeybindsConfig struct {
+ // Exit the application
+ AppExit string `json:"app_exit,required"`
+ // Show help dialog
+ AppHelp string `json:"app_help,required"`
+ // Open external editor
+ EditorOpen string `json:"editor_open,required"`
+ // Close file
+ FileClose string `json:"file_close,required"`
+ // Split/unified diff
+ FileDiffToggle string `json:"file_diff_toggle,required"`
+ // List files
+ FileList string `json:"file_list,required"`
+ // Search file
+ FileSearch string `json:"file_search,required"`
+ // Clear input field
+ InputClear string `json:"input_clear,required"`
+ // Insert newline in input
+ InputNewline string `json:"input_newline,required"`
+ // Paste from clipboard
+ InputPaste string `json:"input_paste,required"`
+ // Submit input
+ InputSubmit string `json:"input_submit,required"`
+ // Leader key for keybind combinations
+ Leader string `json:"leader,required"`
+ // Copy message
+ MessagesCopy string `json:"messages_copy,required"`
+ // Navigate to first message
+ MessagesFirst string `json:"messages_first,required"`
+ // Scroll messages down by half page
+ MessagesHalfPageDown string `json:"messages_half_page_down,required"`
+ // Scroll messages up by half page
+ MessagesHalfPageUp string `json:"messages_half_page_up,required"`
+ // Navigate to last message
+ MessagesLast string `json:"messages_last,required"`
+ // Toggle layout
+ MessagesLayoutToggle string `json:"messages_layout_toggle,required"`
+ // Navigate to next message
+ MessagesNext string `json:"messages_next,required"`
+ // Scroll messages down by one page
+ MessagesPageDown string `json:"messages_page_down,required"`
+ // Scroll messages up by one page
+ MessagesPageUp string `json:"messages_page_up,required"`
+ // Navigate to previous message
+ MessagesPrevious string `json:"messages_previous,required"`
+ // Redo message
+ MessagesRedo string `json:"messages_redo,required"`
+ // @deprecated use messages_undo. Revert message
+ MessagesRevert string `json:"messages_revert,required"`
+ // Undo message
+ MessagesUndo string `json:"messages_undo,required"`
+ // List available models
+ ModelList string `json:"model_list,required"`
+ // Create/update AGENTS.md
+ ProjectInit string `json:"project_init,required"`
+ // Compact the session
+ SessionCompact string `json:"session_compact,required"`
+ // Export session to editor
+ SessionExport string `json:"session_export,required"`
+ // Interrupt current session
+ SessionInterrupt string `json:"session_interrupt,required"`
+ // List all sessions
+ SessionList string `json:"session_list,required"`
+ // Create a new session
+ SessionNew string `json:"session_new,required"`
+ // Share current session
+ SessionShare string `json:"session_share,required"`
+ // Unshare current session
+ SessionUnshare string `json:"session_unshare,required"`
+ // Next mode
+ SwitchMode string `json:"switch_mode,required"`
+ // Previous Mode
+ SwitchModeReverse string `json:"switch_mode_reverse,required"`
+ // List available themes
+ ThemeList string `json:"theme_list,required"`
+ // Toggle tool details
+ ToolDetails string `json:"tool_details,required"`
+ JSON keybindsConfigJSON `json:"-"`
+}
+
+// keybindsConfigJSON contains the JSON metadata for the struct [KeybindsConfig]
+type keybindsConfigJSON struct {
+ AppExit apijson.Field
+ AppHelp apijson.Field
+ EditorOpen apijson.Field
+ FileClose apijson.Field
+ FileDiffToggle apijson.Field
+ FileList apijson.Field
+ FileSearch apijson.Field
+ InputClear apijson.Field
+ InputNewline apijson.Field
+ InputPaste apijson.Field
+ InputSubmit apijson.Field
+ Leader apijson.Field
+ MessagesCopy apijson.Field
+ MessagesFirst apijson.Field
+ MessagesHalfPageDown apijson.Field
+ MessagesHalfPageUp apijson.Field
+ MessagesLast apijson.Field
+ MessagesLayoutToggle apijson.Field
+ MessagesNext apijson.Field
+ MessagesPageDown apijson.Field
+ MessagesPageUp apijson.Field
+ MessagesPrevious apijson.Field
+ MessagesRedo apijson.Field
+ MessagesRevert apijson.Field
+ MessagesUndo apijson.Field
+ ModelList apijson.Field
+ ProjectInit apijson.Field
+ SessionCompact apijson.Field
+ SessionExport apijson.Field
+ SessionInterrupt apijson.Field
+ SessionList apijson.Field
+ SessionNew apijson.Field
+ SessionShare apijson.Field
+ SessionUnshare apijson.Field
+ SwitchMode apijson.Field
+ SwitchModeReverse apijson.Field
+ ThemeList apijson.Field
+ ToolDetails apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *KeybindsConfig) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r keybindsConfigJSON) RawJSON() string {
+ return r.raw
+}
+
+type McpLocalConfig struct {
+ // Command and arguments to run the MCP server
+ Command []string `json:"command,required"`
+ // Type of MCP server connection
+ Type McpLocalConfigType `json:"type,required"`
+ // Enable or disable the MCP server on startup
+ Enabled bool `json:"enabled"`
+ // Environment variables to set when running the MCP server
+ Environment map[string]string `json:"environment"`
+ JSON mcpLocalConfigJSON `json:"-"`
+}
+
+// mcpLocalConfigJSON contains the JSON metadata for the struct [McpLocalConfig]
+type mcpLocalConfigJSON struct {
+ Command apijson.Field
+ Type apijson.Field
+ Enabled apijson.Field
+ Environment apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *McpLocalConfig) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r mcpLocalConfigJSON) RawJSON() string {
+ return r.raw
+}
+
+func (r McpLocalConfig) implementsConfigMcp() {}
+
+// Type of MCP server connection
+type McpLocalConfigType string
+
+const (
+ McpLocalConfigTypeLocal McpLocalConfigType = "local"
+)
+
+func (r McpLocalConfigType) IsKnown() bool {
+ switch r {
+ case McpLocalConfigTypeLocal:
+ return true
+ }
+ return false
+}
+
+type McpRemoteConfig struct {
+ // Type of MCP server connection
+ Type McpRemoteConfigType `json:"type,required"`
+ // URL of the remote MCP server
+ URL string `json:"url,required"`
+ // Enable or disable the MCP server on startup
+ Enabled bool `json:"enabled"`
+ // Headers to send with the request
+ Headers map[string]string `json:"headers"`
+ JSON mcpRemoteConfigJSON `json:"-"`
+}
+
+// mcpRemoteConfigJSON contains the JSON metadata for the struct [McpRemoteConfig]
+type mcpRemoteConfigJSON struct {
+ Type apijson.Field
+ URL apijson.Field
+ Enabled apijson.Field
+ Headers apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *McpRemoteConfig) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r mcpRemoteConfigJSON) RawJSON() string {
+ return r.raw
+}
+
+func (r McpRemoteConfig) implementsConfigMcp() {}
+
+// Type of MCP server connection
+type McpRemoteConfigType string
+
+const (
+ McpRemoteConfigTypeRemote McpRemoteConfigType = "remote"
+)
+
+func (r McpRemoteConfigType) IsKnown() bool {
+ switch r {
+ case McpRemoteConfigTypeRemote:
+ return true
+ }
+ return false
+}
+
+type ModeConfig struct {
+ Disable bool `json:"disable"`
+ Model string `json:"model"`
+ Prompt string `json:"prompt"`
+ Temperature float64 `json:"temperature"`
+ Tools map[string]bool `json:"tools"`
+ JSON modeConfigJSON `json:"-"`
+}
+
+// modeConfigJSON contains the JSON metadata for the struct [ModeConfig]
+type modeConfigJSON struct {
+ Disable apijson.Field
+ Model apijson.Field
+ Prompt apijson.Field
+ Temperature apijson.Field
+ Tools apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *ModeConfig) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r modeConfigJSON) RawJSON() string {
+ return r.raw
+}