Packages
opencode_sdk
0.1.55
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/project.ex
defmodule OpenCode.Generated.Project do
@moduledoc """
Provides API endpoints related to project
"""
@default_client OpenCode.Client
@doc """
Get current project
Retrieve the currently active project that OpenCode is working with.
## Options
* `directory`
* `workspace`
"""
@spec project_current(opts :: keyword) :: {:ok, OpenCode.Generated.Project.t()} | :error
def project_current(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Project, :project_current},
url: "/project/current",
method: :get,
query: query,
response: [{200, {OpenCode.Generated.Project, :t}}],
opts: opts
})
end
@doc """
Initialize git repository
Create a git repository for the current project and return the refreshed project info.
## Options
* `directory`
* `workspace`
"""
@spec project_init_git(opts :: keyword) :: {:ok, OpenCode.Generated.Project.t()} | :error
def project_init_git(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Project, :project_init_git},
url: "/project/git/init",
method: :post,
query: query,
response: [{200, {OpenCode.Generated.Project, :t}}],
opts: opts
})
end
@doc """
List all projects
Get a list of projects that have been opened with OpenCode.
## Options
* `directory`
* `workspace`
"""
@spec project_list(opts :: keyword) :: {:ok, [OpenCode.Generated.Project.t()]} | :error
def project_list(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Project, :project_list},
url: "/project",
method: :get,
query: query,
response: [{200, [{OpenCode.Generated.Project, :t}]}],
opts: opts
})
end
@doc """
Update project
Update project properties such as name, icon, and commands.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec project_update(projectID :: String.t(), body :: map, opts :: keyword) ::
{:ok, OpenCode.Generated.Project.t()}
| {:error,
OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
def project_update(projectID, body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [projectID: projectID, body: body],
call: {OpenCode.Generated.Project, :project_update},
url: "/project/#{projectID}",
body: body,
method: :patch,
query: query,
request: [{"application/json", :map}],
response: [
{200, {OpenCode.Generated.Project, :t}},
{400, {OpenCode.Generated.BadRequestError, :t}},
{404, {OpenCode.Generated.NotFoundError, :t}}
],
opts: opts
})
end
@type t :: %__MODULE__{
commands: OpenCode.Generated.ProjectCommands.t() | nil,
icon: OpenCode.Generated.ProjectIcon.t() | nil,
id: String.t(),
name: String.t() | nil,
sandboxes: [String.t()],
time: OpenCode.Generated.ProjectTime.t(),
vcs: String.t() | nil,
worktree: String.t()
}
defstruct [:commands, :icon, :id, :name, :sandboxes, :time, :vcs, :worktree]
@doc false
@spec __fields__(atom) :: keyword
def __fields__(type \\ :t)
def __fields__(:t) do
[
commands: {OpenCode.Generated.ProjectCommands, :t},
icon: {OpenCode.Generated.ProjectIcon, :t},
id: :string,
name: :string,
sandboxes: [:string],
time: {OpenCode.Generated.ProjectTime, :t},
vcs: {:const, "git"},
worktree: :string
]
end
end