Packages
opencode_sdk
0.1.81
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/workspace.ex
defmodule OpenCode.Generated.Workspace do
@moduledoc """
Provides API endpoints related to workspace
"""
@default_client OpenCode.Client
@type experimental_workspace_adapter_list_200_json_resp :: %{
description: String.t(),
name: String.t(),
type: String.t()
}
@doc """
List workspace adapters
List all available workspace adapters for the current project.
## Options
* `directory`
* `workspace`
"""
@spec experimental_workspace_adapter_list(opts :: keyword) ::
{:ok,
[OpenCode.Generated.Workspace.experimental_workspace_adapter_list_200_json_resp()]}
| {:error, OpenCode.Generated.BadRequestError.t()}
def experimental_workspace_adapter_list(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Workspace, :experimental_workspace_adapter_list},
url: "/experimental/workspace/adapter",
method: :get,
query: query,
response: [
{200,
[{OpenCode.Generated.Workspace, :experimental_workspace_adapter_list_200_json_resp}]},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@doc """
Create workspace
Create a workspace for the current project.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec experimental_workspace_create(body :: map, opts :: keyword) ::
{:ok, OpenCode.Generated.Workspace.t()}
| {:error,
OpenCode.Generated.EffectHttpApiErrorBadRequest.t()
| OpenCode.Generated.InvalidRequestError.t()
| OpenCode.Generated.WorkspaceCreateError.t()}
def experimental_workspace_create(body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [body: body],
call: {OpenCode.Generated.Workspace, :experimental_workspace_create},
url: "/experimental/workspace",
body: body,
method: :post,
query: query,
request: [{"application/json", :map}],
response: [
{200, {OpenCode.Generated.Workspace, :t}},
{400,
{:union,
[
{OpenCode.Generated.EffectHttpApiErrorBadRequest, :t},
{OpenCode.Generated.InvalidRequestError, :t},
{OpenCode.Generated.WorkspaceCreateError, :t}
]}}
],
opts: opts
})
end
@doc """
List workspaces
List all workspaces.
## Options
* `directory`
* `workspace`
"""
@spec experimental_workspace_list(opts :: keyword) ::
{:ok, [OpenCode.Generated.Workspace.t()]}
| {:error, OpenCode.Generated.BadRequestError.t()}
def experimental_workspace_list(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Workspace, :experimental_workspace_list},
url: "/experimental/workspace",
method: :get,
query: query,
response: [
{200, [{OpenCode.Generated.Workspace, :t}]},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@doc """
Remove workspace
Remove an existing workspace.
## Options
* `directory`
* `workspace`
"""
@spec experimental_workspace_remove(id :: String.t(), opts :: keyword) ::
{:ok, OpenCode.Generated.Workspace.t()}
| {:error,
OpenCode.Generated.EffectHttpApiErrorBadRequest.t()
| OpenCode.Generated.InvalidRequestError.t()}
def experimental_workspace_remove(id, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [id: id],
call: {OpenCode.Generated.Workspace, :experimental_workspace_remove},
url: "/experimental/workspace/#{id}",
method: :delete,
query: query,
response: [
{200, {OpenCode.Generated.Workspace, :t}},
{400,
{:union,
[
{OpenCode.Generated.EffectHttpApiErrorBadRequest, :t},
{OpenCode.Generated.InvalidRequestError, :t}
]}}
],
opts: opts
})
end
@type experimental_workspace_status_200_json_resp :: %{
status: String.t(),
workspace_id: String.t()
}
@doc """
Workspace status
Get connection status for workspaces in the current project.
## Options
* `directory`
* `workspace`
"""
@spec experimental_workspace_status(opts :: keyword) ::
{:ok, [OpenCode.Generated.Workspace.experimental_workspace_status_200_json_resp()]}
| {:error, OpenCode.Generated.BadRequestError.t()}
def experimental_workspace_status(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Workspace, :experimental_workspace_status},
url: "/experimental/workspace/status",
method: :get,
query: query,
response: [
{200, [{OpenCode.Generated.Workspace, :experimental_workspace_status_200_json_resp}]},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@doc """
Sync workspace list
Register missing workspaces returned by workspace adapters.
## Options
* `directory`
* `workspace`
"""
@spec experimental_workspace_sync_list(opts :: keyword) ::
:ok | {:error, OpenCode.Generated.BadRequestError.t()}
def experimental_workspace_sync_list(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Workspace, :experimental_workspace_sync_list},
url: "/experimental/workspace/sync-list",
method: :post,
query: query,
response: [{204, :null}, {400, {OpenCode.Generated.BadRequestError, :t}}],
opts: opts
})
end
@doc """
Warp session into workspace
Move a session's sync history into the target workspace, or detach it to the local project.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec experimental_workspace_warp(body :: map, opts :: keyword) ::
:ok
| {:error,
OpenCode.Generated.InvalidRequestError.t()
| OpenCode.Generated.NotFoundError.t()
| OpenCode.Generated.VcsApplyError.t()
| OpenCode.Generated.WorkspaceWarpError.t()}
def experimental_workspace_warp(body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [body: body],
call: {OpenCode.Generated.Workspace, :experimental_workspace_warp},
url: "/experimental/workspace/warp",
body: body,
method: :post,
query: query,
request: [{"application/json", :map}],
response: [
{204, :null},
{400,
{:union,
[
{OpenCode.Generated.InvalidRequestError, :t},
{OpenCode.Generated.VcsApplyError, :t},
{OpenCode.Generated.WorkspaceWarpError, :t}
]}},
{404, {OpenCode.Generated.NotFoundError, :t}}
],
opts: opts
})
end
@type t :: %__MODULE__{
branch: String.t() | nil,
directory: String.t() | nil,
extra: map | nil,
id: String.t(),
name: String.t(),
project_id: String.t(),
time_used: number | String.t(),
type: String.t()
}
defstruct [:branch, :directory, :extra, :id, :name, :project_id, :time_used, :type]
@doc false
@spec __fields__(atom) :: keyword
def __fields__(type \\ :t)
def __fields__(:experimental_workspace_adapter_list_200_json_resp) do
[description: :string, name: :string, type: :string]
end
def __fields__(:experimental_workspace_status_200_json_resp) do
[status: {:enum, ["connected", "connecting", "disconnected", "error"]}, workspace_id: :string]
end
def __fields__(:t) do
[
branch: {:union, [:string, :null]},
directory: {:union, [:string, :null]},
extra: {:union, [:map, :null]},
id: :string,
name: :string,
project_id: :string,
time_used:
{:union,
[
:number,
const: "-Infinity",
const: "Infinity",
const: "NaN",
enum: ["Infinity", "-Infinity", "NaN"]
]},
type: :string
]
end
end