Current section

Files

Jump to
opencode_sdk lib opencode generated experimental.ex
Raw

lib/opencode/generated/experimental.ex

defmodule OpenCode.Generated.Experimental do
@moduledoc """
Provides API endpoints related to experimental
"""
@default_client OpenCode.Client
@doc """
Get active Console provider metadata
Get the active Console org name and the set of provider IDs managed by that Console org.
## Options
* `directory`
* `workspace`
"""
@spec experimental_console_get(opts :: keyword) ::
{:ok, OpenCode.Generated.ConsoleState.t()}
| {:error, OpenCode.Generated.EffectHttpApiErrorInternalServerError.t()}
def experimental_console_get(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Experimental, :experimental_console_get},
url: "/experimental/console",
method: :get,
query: query,
response: [
{200, {OpenCode.Generated.ConsoleState, :t}},
{500, {OpenCode.Generated.EffectHttpApiErrorInternalServerError, :t}}
],
opts: opts
})
end
@type experimental_console_list_orgs_200_json_resp :: %{
orgs: [
OpenCode.Generated.Experimental.experimental_console_list_orgs_200_json_resp_orgs()
]
}
@type experimental_console_list_orgs_200_json_resp_orgs :: %{
account_email: String.t(),
account_id: String.t(),
account_url: String.t(),
active: boolean,
org_id: String.t(),
org_name: String.t()
}
@doc """
List switchable Console orgs
Get the available Console orgs across logged-in accounts, including the current active org.
## Options
* `directory`
* `workspace`
"""
@spec experimental_console_list_orgs(opts :: keyword) ::
{:ok, OpenCode.Generated.Experimental.experimental_console_list_orgs_200_json_resp()}
| {:error, OpenCode.Generated.EffectHttpApiErrorInternalServerError.t()}
def experimental_console_list_orgs(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Experimental, :experimental_console_list_orgs},
url: "/experimental/console/orgs",
method: :get,
query: query,
response: [
{200, {OpenCode.Generated.Experimental, :experimental_console_list_orgs_200_json_resp}},
{500, {OpenCode.Generated.EffectHttpApiErrorInternalServerError, :t}}
],
opts: opts
})
end
@doc """
Switch active Console org
Persist a new active Console account/org selection for the current local OpenCode state.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec experimental_console_switch_org(body :: map, opts :: keyword) :: {:ok, boolean} | :error
def experimental_console_switch_org(body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [body: body],
call: {OpenCode.Generated.Experimental, :experimental_console_switch_org},
url: "/experimental/console/switch",
body: body,
method: :post,
query: query,
request: [{"application/json", :map}],
response: [{200, :boolean}],
opts: opts
})
end
@doc """
Get MCP resources
Get all available MCP resources from connected servers. Optionally filter by name.
## Options
* `directory`
* `workspace`
"""
@spec experimental_resource_list(opts :: keyword) :: {:ok, map} | :error
def experimental_resource_list(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Experimental, :experimental_resource_list},
url: "/experimental/resource",
method: :get,
query: query,
response: [{200, :map}],
opts: opts
})
end
@doc """
List sessions
Get a list of all OpenCode sessions across projects, sorted by most recently updated. Archived sessions are excluded by default.
## Options
* `directory`
* `workspace`
* `roots`
* `start`
* `cursor`
* `search`
* `limit`
* `archived`
"""
@spec experimental_session_list(opts :: keyword) ::
{:ok, [OpenCode.Generated.GlobalSession.t()]} | :error
def experimental_session_list(opts \\ []) do
client = opts[:client] || @default_client
query =
Keyword.take(opts, [
:archived,
:cursor,
:directory,
:limit,
:roots,
:search,
:start,
:workspace
])
client.request(%{
args: [],
call: {OpenCode.Generated.Experimental, :experimental_session_list},
url: "/experimental/session",
method: :get,
query: query,
response: [{200, [{OpenCode.Generated.GlobalSession, :t}]}],
opts: opts
})
end
@doc """
List tool IDs
Get a list of all available tool IDs, including both built-in tools and dynamically registered tools.
## Options
* `directory`
* `workspace`
"""
@spec tool_ids(opts :: keyword) ::
{:ok, [String.t()]} | {:error, OpenCode.Generated.BadRequestError.t()}
def tool_ids(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Experimental, :tool_ids},
url: "/experimental/tool/ids",
method: :get,
query: query,
response: [{200, [:string]}, {400, {OpenCode.Generated.BadRequestError, :t}}],
opts: opts
})
end
@doc """
List tools
Get a list of available tools with their JSON schema parameters for a specific provider and model combination.
## Options
* `directory`
* `workspace`
* `provider`
* `model`
"""
@spec tool_list(opts :: keyword) ::
{:ok, [OpenCode.Generated.ToolListItem.t()]}
| {:error, OpenCode.Generated.BadRequestError.t()}
def tool_list(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :model, :provider, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Experimental, :tool_list},
url: "/experimental/tool",
method: :get,
query: query,
response: [
{200, [{OpenCode.Generated.ToolListItem, :t}]},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@doc """
Create worktree
Create a new git worktree for the current project and run any configured startup scripts.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec worktree_create(body :: OpenCode.Generated.WorktreeCreateInput.t(), opts :: keyword) ::
{:ok, OpenCode.Generated.Worktree.t()}
| {:error, OpenCode.Generated.BadRequestError.t()}
def worktree_create(body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [body: body],
call: {OpenCode.Generated.Experimental, :worktree_create},
url: "/experimental/worktree",
body: body,
method: :post,
query: query,
request: [{"application/json", {OpenCode.Generated.WorktreeCreateInput, :t}}],
response: [
{200, {OpenCode.Generated.Worktree, :t}},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@doc """
List worktrees
List all sandbox worktrees for the current project.
## Options
* `directory`
* `workspace`
"""
@spec worktree_list(opts :: keyword) :: {:ok, [String.t()]} | :error
def worktree_list(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Experimental, :worktree_list},
url: "/experimental/worktree",
method: :get,
query: query,
response: [{200, [:string]}],
opts: opts
})
end
@doc """
Remove worktree
Remove a git worktree and delete its branch.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec worktree_remove(body :: OpenCode.Generated.WorktreeRemoveInput.t(), opts :: keyword) ::
{:ok, boolean} | {:error, OpenCode.Generated.BadRequestError.t()}
def worktree_remove(body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [body: body],
call: {OpenCode.Generated.Experimental, :worktree_remove},
url: "/experimental/worktree",
body: body,
method: :delete,
query: query,
request: [{"application/json", {OpenCode.Generated.WorktreeRemoveInput, :t}}],
response: [{200, :boolean}, {400, {OpenCode.Generated.BadRequestError, :t}}],
opts: opts
})
end
@doc """
Reset worktree
Reset a worktree branch to the primary default branch.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec worktree_reset(body :: OpenCode.Generated.WorktreeResetInput.t(), opts :: keyword) ::
{:ok, boolean} | {:error, OpenCode.Generated.BadRequestError.t()}
def worktree_reset(body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [body: body],
call: {OpenCode.Generated.Experimental, :worktree_reset},
url: "/experimental/worktree/reset",
body: body,
method: :post,
query: query,
request: [{"application/json", {OpenCode.Generated.WorktreeResetInput, :t}}],
response: [{200, :boolean}, {400, {OpenCode.Generated.BadRequestError, :t}}],
opts: opts
})
end
@doc false
@spec __fields__(atom) :: keyword
def __fields__(:experimental_console_list_orgs_200_json_resp) do
[
orgs: [
{OpenCode.Generated.Experimental, :experimental_console_list_orgs_200_json_resp_orgs}
]
]
end
def __fields__(:experimental_console_list_orgs_200_json_resp_orgs) do
[
account_email: :string,
account_id: :string,
account_url: :string,
active: :boolean,
org_id: :string,
org_name: :string
]
end
end