Packages
opencode_sdk
0.1.64
0.1.84
0.1.83
0.1.82
0.1.81
0.1.80
0.1.79
0.1.78
0.1.77
0.1.76
0.1.75
0.1.74
0.1.73
0.1.72
0.1.71
0.1.70
0.1.69
0.1.68
0.1.67
0.1.66
0.1.65
0.1.64
0.1.63
0.1.62
0.1.61
0.1.60
0.1.59
0.1.58
0.1.57
0.1.56
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.48
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.41
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Unofficial OpenCode SDK for Elixir. A complete Elixir SDK for OpenCode, providing server creation, session management, messaging, file operations, and more. Mirrors the functionality of the official JavaScript SDK (@opencode-ai/sdk). Not affiliated with or built by the OpenCode team.
Current section
Files
Jump to
Current section
Files
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.WorktreeError.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.WorktreeError, :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, OpenCode.Generated.WorktreeError.t()}
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]}, {400, {OpenCode.Generated.WorktreeError, :t}}],
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.WorktreeError.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.WorktreeError, :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.WorktreeError.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.WorktreeError, :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