Packages
opencode_sdk
0.1.77
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/pty.ex
defmodule OpenCode.Generated.Pty do
@moduledoc """
Provides API endpoints related to pty
"""
@default_client OpenCode.Client
@doc """
Connect to PTY session
Establish a WebSocket connection to interact with a pseudo-terminal (PTY) session in real-time.
## Options
* `directory`
* `workspace`
* `cursor`
* `ticket`
"""
@spec pty_connect(ptyID :: String.t(), opts :: keyword) ::
{:ok, boolean}
| {:error,
OpenCode.Generated.EffectHttpApiErrorForbidden.t()
| OpenCode.Generated.NotFoundError.t()}
def pty_connect(ptyID, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:cursor, :directory, :ticket, :workspace])
client.request(%{
args: [ptyID: ptyID],
call: {OpenCode.Generated.Pty, :pty_connect},
url: "/pty/#{ptyID}/connect",
method: :get,
query: query,
response: [
{200, :boolean},
{403, {OpenCode.Generated.EffectHttpApiErrorForbidden, :t}},
{404, {OpenCode.Generated.NotFoundError, :t}}
],
opts: opts
})
end
@type pty_connect_token_200_json_resp :: %{expires_in: integer, ticket: String.t()}
@doc """
Create PTY WebSocket token
Create a short-lived ticket for opening a PTY WebSocket connection.
## Options
* `directory`
* `workspace`
"""
@spec pty_connect_token(ptyID :: String.t(), opts :: keyword) ::
{:ok, OpenCode.Generated.Pty.pty_connect_token_200_json_resp()}
| {:error,
OpenCode.Generated.BadRequestError.t()
| OpenCode.Generated.PtyForbiddenError.t()
| OpenCode.Generated.PtyNotFoundError.t()}
def pty_connect_token(ptyID, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [ptyID: ptyID],
call: {OpenCode.Generated.Pty, :pty_connect_token},
url: "/pty/#{ptyID}/connect-token",
method: :post,
query: query,
response: [
{200, {OpenCode.Generated.Pty, :pty_connect_token_200_json_resp}},
{400, {OpenCode.Generated.BadRequestError, :t}},
{403, {OpenCode.Generated.PtyForbiddenError, :t}},
{404, {OpenCode.Generated.PtyNotFoundError, :t}}
],
opts: opts
})
end
@doc """
Create PTY session
Create a new pseudo-terminal (PTY) session for running shell commands and processes.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec pty_create(body :: map, opts :: keyword) ::
{:ok, OpenCode.Generated.Pty.t()}
| {:error,
OpenCode.Generated.EffectHttpApiErrorBadRequest.t()
| OpenCode.Generated.InvalidRequestError.t()}
def pty_create(body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [body: body],
call: {OpenCode.Generated.Pty, :pty_create},
url: "/pty",
body: body,
method: :post,
query: query,
request: [{"application/json", :map}],
response: [
{200, {OpenCode.Generated.Pty, :t}},
{400,
{:union,
[
{OpenCode.Generated.EffectHttpApiErrorBadRequest, :t},
{OpenCode.Generated.InvalidRequestError, :t}
]}}
],
opts: opts
})
end
@doc """
Get PTY session
Retrieve detailed information about a specific pseudo-terminal (PTY) session.
## Options
* `directory`
* `workspace`
"""
@spec pty_get(ptyID :: String.t(), opts :: keyword) ::
{:ok, OpenCode.Generated.Pty.t()}
| {:error,
OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.PtyNotFoundError.t()}
def pty_get(ptyID, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [ptyID: ptyID],
call: {OpenCode.Generated.Pty, :pty_get},
url: "/pty/#{ptyID}",
method: :get,
query: query,
response: [
{200, {OpenCode.Generated.Pty, :t}},
{400, {OpenCode.Generated.BadRequestError, :t}},
{404, {OpenCode.Generated.PtyNotFoundError, :t}}
],
opts: opts
})
end
@doc """
List PTY sessions
Get a list of all active pseudo-terminal (PTY) sessions managed by OpenCode.
## Options
* `directory`
* `workspace`
"""
@spec pty_list(opts :: keyword) ::
{:ok, [OpenCode.Generated.Pty.t()]} | {:error, OpenCode.Generated.BadRequestError.t()}
def pty_list(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Pty, :pty_list},
url: "/pty",
method: :get,
query: query,
response: [
{200, [{OpenCode.Generated.Pty, :t}]},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@doc """
Remove PTY session
Remove and terminate a specific pseudo-terminal (PTY) session.
## Options
* `directory`
* `workspace`
"""
@spec pty_remove(ptyID :: String.t(), opts :: keyword) ::
{:ok, boolean}
| {:error,
OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.PtyNotFoundError.t()}
def pty_remove(ptyID, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [ptyID: ptyID],
call: {OpenCode.Generated.Pty, :pty_remove},
url: "/pty/#{ptyID}",
method: :delete,
query: query,
response: [
{200, :boolean},
{400, {OpenCode.Generated.BadRequestError, :t}},
{404, {OpenCode.Generated.PtyNotFoundError, :t}}
],
opts: opts
})
end
@type pty_shells_200_json_resp :: %{acceptable: boolean, name: String.t(), path: String.t()}
@doc """
List available shells
Get a list of available shells on the system.
## Options
* `directory`
* `workspace`
"""
@spec pty_shells(opts :: keyword) ::
{:ok, [OpenCode.Generated.Pty.pty_shells_200_json_resp()]}
| {:error, OpenCode.Generated.BadRequestError.t()}
def pty_shells(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Pty, :pty_shells},
url: "/pty/shells",
method: :get,
query: query,
response: [
{200, [{OpenCode.Generated.Pty, :pty_shells_200_json_resp}]},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@doc """
Update PTY session
Update properties of an existing pseudo-terminal (PTY) session.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec pty_update(ptyID :: String.t(), body :: map, opts :: keyword) ::
{:ok, OpenCode.Generated.Pty.t()}
| {:error,
OpenCode.Generated.EffectHttpApiErrorBadRequest.t()
| OpenCode.Generated.InvalidRequestError.t()
| OpenCode.Generated.PtyNotFoundError.t()}
def pty_update(ptyID, body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [ptyID: ptyID, body: body],
call: {OpenCode.Generated.Pty, :pty_update},
url: "/pty/#{ptyID}",
body: body,
method: :put,
query: query,
request: [{"application/json", :map}],
response: [
{200, {OpenCode.Generated.Pty, :t}},
{400,
{:union,
[
{OpenCode.Generated.EffectHttpApiErrorBadRequest, :t},
{OpenCode.Generated.InvalidRequestError, :t}
]}},
{404, {OpenCode.Generated.PtyNotFoundError, :t}}
],
opts: opts
})
end
@type t :: %__MODULE__{
args: [String.t()],
command: String.t(),
cwd: String.t(),
id: String.t(),
pid: integer,
status: String.t(),
title: String.t()
}
defstruct [:args, :command, :cwd, :id, :pid, :status, :title]
@doc false
@spec __fields__(atom) :: keyword
def __fields__(type \\ :t)
def __fields__(:pty_connect_token_200_json_resp) do
[expires_in: :integer, ticket: :string]
end
def __fields__(:pty_shells_200_json_resp) do
[acceptable: :boolean, name: :string, path: :string]
end
def __fields__(:t) do
[
args: [:string],
command: :string,
cwd: :string,
id: :string,
pid: :integer,
status: {:enum, ["running", "exited"]},
title: :string
]
end
end