Packages
opencode_sdk
0.1.79
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/v2.ex
defmodule OpenCode.Generated.V2 do
@moduledoc """
Provides API endpoints related to v2
"""
@default_client OpenCode.Client
@doc """
Compact v2 session
Compact a v2 session conversation.
"""
@spec v2_session_compact(sessionID :: String.t(), opts :: keyword) ::
:ok
| {:error,
OpenCode.Generated.InvalidRequestError.t()
| OpenCode.Generated.ServiceUnavailableError.t()
| OpenCode.Generated.SessionNotFoundError.t()
| OpenCode.Generated.UnauthorizedError.t()}
def v2_session_compact(sessionID, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [sessionID: sessionID],
call: {OpenCode.Generated.V2, :v2_session_compact},
url: "/api/session/#{sessionID}/compact",
method: :post,
response: [
{204, :null},
{400, {OpenCode.Generated.InvalidRequestError, :t}},
{401, {OpenCode.Generated.UnauthorizedError, :t}},
{404, {OpenCode.Generated.SessionNotFoundError, :t}},
{503, {OpenCode.Generated.ServiceUnavailableError, :t}}
],
opts: opts
})
end
@type v2_session_context_200_json_resp :: %{
data: [
OpenCode.Generated.SessionMessageAgentSwitched.t()
| OpenCode.Generated.SessionMessageAssistant.t()
| OpenCode.Generated.SessionMessageCompaction.t()
| OpenCode.Generated.SessionMessageModelSwitched.t()
| OpenCode.Generated.SessionMessageShell.t()
| OpenCode.Generated.SessionMessageSynthetic.t()
| OpenCode.Generated.SessionMessageUser.t()
]
}
@doc """
Get v2 session context
Retrieve the active context messages for a v2 session (all messages after the last compaction).
"""
@spec v2_session_context(sessionID :: String.t(), opts :: keyword) ::
{:ok, OpenCode.Generated.V2.v2_session_context_200_json_resp()}
| {:error,
OpenCode.Generated.InvalidRequestError.t()
| OpenCode.Generated.SessionNotFoundError.t()
| OpenCode.Generated.UnauthorizedError.t()
| OpenCode.Generated.UnknownError1.t()}
def v2_session_context(sessionID, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [sessionID: sessionID],
call: {OpenCode.Generated.V2, :v2_session_context},
url: "/api/session/#{sessionID}/context",
method: :get,
response: [
{200, {OpenCode.Generated.V2, :v2_session_context_200_json_resp}},
{400, {OpenCode.Generated.InvalidRequestError, :t}},
{401, {OpenCode.Generated.UnauthorizedError, :t}},
{404, {OpenCode.Generated.SessionNotFoundError, :t}},
{500, {OpenCode.Generated.UnknownError1, :t}}
],
opts: opts
})
end
@doc """
List v2 sessions
Retrieve sessions in the requested order. Items keep that order across pages; use cursor.next or cursor.previous to move through the ordered list.
## Options
* `workspace`
* `limit`
* `order`
* `search`
* `directory`
* `project`
* `subpath`
* `cursor`
"""
@spec v2_session_list(opts :: keyword) ::
{:ok, OpenCode.Generated.V2SessionsResponse.t()}
| {:error,
OpenCode.Generated.InvalidCursorError.t()
| OpenCode.Generated.InvalidRequestError.t()
| OpenCode.Generated.UnauthorizedError.t()}
def v2_session_list(opts \\ []) do
client = opts[:client] || @default_client
query =
Keyword.take(opts, [
:cursor,
:directory,
:limit,
:order,
:project,
:search,
:subpath,
:workspace
])
client.request(%{
args: [],
call: {OpenCode.Generated.V2, :v2_session_list},
url: "/api/session",
method: :get,
query: query,
response: [
{200, {OpenCode.Generated.V2SessionsResponse, :t}},
{400,
{:union,
[
{OpenCode.Generated.InvalidCursorError, :t},
{OpenCode.Generated.InvalidRequestError, :t}
]}},
{401, {OpenCode.Generated.UnauthorizedError, :t}}
],
opts: opts
})
end
@type v2_session_prompt_200_json_resp :: %{data: OpenCode.Generated.SessionMessageUser.t()}
@doc """
Send v2 message
Durably admit one v2 session input and schedule agent-loop execution unless resume is false.
## Request Body
**Content Types**: `application/json`
"""
@spec v2_session_prompt(sessionID :: String.t(), body :: map, opts :: keyword) ::
{:ok, OpenCode.Generated.V2.v2_session_prompt_200_json_resp()}
| {:error,
OpenCode.Generated.ConflictError.t()
| OpenCode.Generated.InvalidRequestError.t()
| OpenCode.Generated.SessionNotFoundError.t()
| OpenCode.Generated.UnauthorizedError.t()}
def v2_session_prompt(sessionID, body, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [sessionID: sessionID, body: body],
call: {OpenCode.Generated.V2, :v2_session_prompt},
url: "/api/session/#{sessionID}/prompt",
body: body,
method: :post,
request: [{"application/json", :map}],
response: [
{200, {OpenCode.Generated.V2, :v2_session_prompt_200_json_resp}},
{400, {OpenCode.Generated.InvalidRequestError, :t}},
{401, {OpenCode.Generated.UnauthorizedError, :t}},
{404, {OpenCode.Generated.SessionNotFoundError, :t}},
{409, {OpenCode.Generated.ConflictError, :t}}
],
opts: opts
})
end
@doc """
Wait for v2 session
Wait for a v2 session agent loop to become idle.
"""
@spec v2_session_wait(sessionID :: String.t(), opts :: keyword) ::
:ok
| {:error,
OpenCode.Generated.InvalidRequestError.t()
| OpenCode.Generated.ServiceUnavailableError.t()
| OpenCode.Generated.SessionNotFoundError.t()
| OpenCode.Generated.UnauthorizedError.t()}
def v2_session_wait(sessionID, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [sessionID: sessionID],
call: {OpenCode.Generated.V2, :v2_session_wait},
url: "/api/session/#{sessionID}/wait",
method: :post,
response: [
{204, :null},
{400, {OpenCode.Generated.InvalidRequestError, :t}},
{401, {OpenCode.Generated.UnauthorizedError, :t}},
{404, {OpenCode.Generated.SessionNotFoundError, :t}},
{503, {OpenCode.Generated.ServiceUnavailableError, :t}}
],
opts: opts
})
end
@doc false
@spec __fields__(atom) :: keyword
def __fields__(:v2_session_context_200_json_resp) do
[
data: [
union: [
{OpenCode.Generated.SessionMessageAgentSwitched, :t},
{OpenCode.Generated.SessionMessageAssistant, :t},
{OpenCode.Generated.SessionMessageCompaction, :t},
{OpenCode.Generated.SessionMessageModelSwitched, :t},
{OpenCode.Generated.SessionMessageShell, :t},
{OpenCode.Generated.SessionMessageSynthetic, :t},
{OpenCode.Generated.SessionMessageUser, :t}
]
]
]
end
def __fields__(:v2_session_prompt_200_json_resp) do
[data: {OpenCode.Generated.SessionMessageUser, :t}]
end
end