Current section

Files

Jump to
opencode_sdk lib opencode generated config.ex
Raw

lib/opencode/generated/config.ex

defmodule OpenCode.Generated.Config do
@moduledoc """
Provides API endpoints related to config
"""
@default_client OpenCode.Client
@doc """
Get configuration
Retrieve the current OpenCode configuration settings and preferences.
## Options
* `directory`
* `workspace`
"""
@spec config_get(opts :: keyword) :: {:ok, OpenCode.Generated.Config.t()} | :error
def config_get(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Config, :config_get},
url: "/config",
method: :get,
query: query,
response: [{200, {OpenCode.Generated.Config, :t}}],
opts: opts
})
end
@type config_providers_200_json_resp :: %{
default: map,
providers: [OpenCode.Generated.Provider.t()]
}
@doc """
List config providers
Get a list of all configured AI providers and their default models.
## Options
* `directory`
* `workspace`
"""
@spec config_providers(opts :: keyword) ::
{:ok, OpenCode.Generated.Config.config_providers_200_json_resp()} | :error
def config_providers(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Config, :config_providers},
url: "/config/providers",
method: :get,
query: query,
response: [{200, {OpenCode.Generated.Config, :config_providers_200_json_resp}}],
opts: opts
})
end
@doc """
Update configuration
Update OpenCode configuration settings and preferences.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec config_update(body :: OpenCode.Generated.Config.t(), opts :: keyword) ::
{:ok, OpenCode.Generated.Config.t()} | {:error, OpenCode.Generated.BadRequestError.t()}
def config_update(body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [body: body],
call: {OpenCode.Generated.Config, :config_update},
url: "/config",
body: body,
method: :patch,
query: query,
request: [{"application/json", {OpenCode.Generated.Config, :t}}],
response: [
{200, {OpenCode.Generated.Config, :t}},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@type t :: %__MODULE__{
agent: OpenCode.Generated.ConfigAgent.t() | nil,
autoshare: boolean | nil,
autoupdate: boolean | String.t() | nil,
command: map | nil,
compaction: OpenCode.Generated.ConfigCompaction.t() | nil,
default_agent: String.t() | nil,
disabled_providers: [String.t()] | nil,
enabled_providers: [String.t()] | nil,
enterprise: OpenCode.Generated.ConfigEnterprise.t() | nil,
experimental: OpenCode.Generated.ConfigExperimental.t() | nil,
formatter: boolean | map | nil,
instructions: [String.t()] | nil,
layout: String.t() | nil,
log_level: String.t() | nil,
lsp: boolean | map | nil,
mcp: map | nil,
mode: OpenCode.Generated.ConfigMode.t() | nil,
model: String.t() | nil,
permission: map | String.t() | nil,
plugin: [String.t() | [any]] | nil,
provider: map | nil,
reference: map | nil,
schema: String.t() | nil,
server: OpenCode.Generated.ServerConfig.t() | nil,
share: String.t() | nil,
shell: String.t() | nil,
skills: OpenCode.Generated.ConfigSkills.t() | nil,
small_model: String.t() | nil,
snapshot: boolean | nil,
tool_output: OpenCode.Generated.ConfigToolOutput.t() | nil,
tools: map | nil,
username: String.t() | nil,
watcher: OpenCode.Generated.ConfigWatcher.t() | nil
}
defstruct [
:agent,
:autoshare,
:autoupdate,
:command,
:compaction,
:default_agent,
:disabled_providers,
:enabled_providers,
:enterprise,
:experimental,
:formatter,
:instructions,
:layout,
:log_level,
:lsp,
:mcp,
:mode,
:model,
:permission,
:plugin,
:provider,
:reference,
:schema,
:server,
:share,
:shell,
:skills,
:small_model,
:snapshot,
:tool_output,
:tools,
:username,
:watcher
]
@doc false
@spec __fields__(atom) :: keyword
def __fields__(type \\ :t)
def __fields__(:config_providers_200_json_resp) do
[default: :map, providers: [{OpenCode.Generated.Provider, :t}]]
end
def __fields__(:t) do
[
agent: {OpenCode.Generated.ConfigAgent, :t},
autoshare: :boolean,
autoupdate: {:union, [:boolean, const: "notify"]},
command: :map,
compaction: {OpenCode.Generated.ConfigCompaction, :t},
default_agent: :string,
disabled_providers: [:string],
enabled_providers: [:string],
enterprise: {OpenCode.Generated.ConfigEnterprise, :t},
experimental: {OpenCode.Generated.ConfigExperimental, :t},
formatter: {:union, [:boolean, :map]},
instructions: [:string],
layout: {:enum, ["auto", "stretch"]},
log_level: {:enum, ["DEBUG", "INFO", "WARN", "ERROR"]},
lsp: {:union, [:boolean, :map]},
mcp: :map,
mode: {OpenCode.Generated.ConfigMode, :t},
model: :string,
permission: {:union, [:map, enum: ["ask", "allow", "deny"]]},
plugin: [union: [:string, [:unknown]]],
provider: :map,
reference: :map,
schema: :string,
server: {OpenCode.Generated.ServerConfig, :t},
share: {:enum, ["manual", "auto", "disabled"]},
shell: :string,
skills: {OpenCode.Generated.ConfigSkills, :t},
small_model: :string,
snapshot: :boolean,
tool_output: {OpenCode.Generated.ConfigToolOutput, :t},
tools: :map,
username: :string,
watcher: {OpenCode.Generated.ConfigWatcher, :t}
]
end
end