Packages
opencode_sdk
0.1.72
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/file.ex
defmodule OpenCode.Generated.File do
@moduledoc """
Provides API endpoints related to file
"""
@default_client OpenCode.Client
@doc """
List files
List files and directories in a specified path.
## Options
* `directory`
* `workspace`
* `path`
"""
@spec file_list(opts :: keyword) ::
{:ok, [OpenCode.Generated.FileNode.t()]}
| {:error, OpenCode.Generated.BadRequestError.t()}
def file_list(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :path, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.File, :file_list},
url: "/file",
method: :get,
query: query,
response: [
{200, [{OpenCode.Generated.FileNode, :t}]},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@doc """
Read file
Read the content of a specified file.
## Options
* `directory`
* `workspace`
* `path`
"""
@spec file_read(opts :: keyword) ::
{:ok, OpenCode.Generated.FileContent.t()}
| {:error, OpenCode.Generated.BadRequestError.t()}
def file_read(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :path, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.File, :file_read},
url: "/file/content",
method: :get,
query: query,
response: [
{200, {OpenCode.Generated.FileContent, :t}},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@doc """
Get file status
Get the git status of all files in the project.
## Options
* `directory`
* `workspace`
"""
@spec file_status(opts :: keyword) ::
{:ok, [OpenCode.Generated.File.t()]} | {:error, OpenCode.Generated.BadRequestError.t()}
def file_status(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.File, :file_status},
url: "/file/status",
method: :get,
query: query,
response: [
{200, [{OpenCode.Generated.File, :t}]},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@doc """
Find files
Search for files or directories by name or pattern in the project directory.
## Options
* `directory`
* `workspace`
* `query`
* `dirs`
* `type`
* `limit`
"""
@spec find_files(opts :: keyword) ::
{:ok, [String.t()]} | {:error, OpenCode.Generated.BadRequestError.t()}
def find_files(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :dirs, :limit, :query, :type, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.File, :find_files},
url: "/find/file",
method: :get,
query: query,
response: [{200, [:string]}, {400, {OpenCode.Generated.BadRequestError, :t}}],
opts: opts
})
end
@doc """
Find symbols
Search for workspace symbols like functions, classes, and variables using LSP.
## Options
* `directory`
* `workspace`
* `query`
"""
@spec find_symbols(opts :: keyword) ::
{:ok, [OpenCode.Generated.Symbol.t()]}
| {:error, OpenCode.Generated.BadRequestError.t()}
def find_symbols(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :query, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.File, :find_symbols},
url: "/find/symbol",
method: :get,
query: query,
response: [
{200, [{OpenCode.Generated.Symbol, :t}]},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@type find_text_200_json_resp :: %{
absolute_offset: integer,
line_number: integer,
lines: OpenCode.Generated.File.find_text_200_json_resp_lines(),
path: OpenCode.Generated.File.find_text_200_json_resp_path(),
submatches: [OpenCode.Generated.File.find_text_200_json_resp_submatches()]
}
@type find_text_200_json_resp_lines :: %{text: String.t()}
@type find_text_200_json_resp_path :: %{text: String.t()}
@type find_text_200_json_resp_submatches :: %{
end: integer,
match: OpenCode.Generated.File.find_text_200_json_resp_submatches_match(),
start: integer
}
@type find_text_200_json_resp_submatches_match :: %{text: String.t()}
@doc """
Find text
Search for text patterns across files in the project using ripgrep.
## Options
* `directory`
* `workspace`
* `pattern`
"""
@spec find_text(opts :: keyword) ::
{:ok, [OpenCode.Generated.File.find_text_200_json_resp()]}
| {:error, OpenCode.Generated.BadRequestError.t()}
def find_text(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :pattern, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.File, :find_text},
url: "/find",
method: :get,
query: query,
response: [
{200, [{OpenCode.Generated.File, :find_text_200_json_resp}]},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@type t :: %__MODULE__{added: integer, path: String.t(), removed: integer, status: String.t()}
defstruct [:added, :path, :removed, :status]
@doc false
@spec __fields__(atom) :: keyword
def __fields__(type \\ :t)
def __fields__(:find_text_200_json_resp) do
[
absolute_offset: :integer,
line_number: :integer,
lines: {OpenCode.Generated.File, :find_text_200_json_resp_lines},
path: {OpenCode.Generated.File, :find_text_200_json_resp_path},
submatches: [{OpenCode.Generated.File, :find_text_200_json_resp_submatches}]
]
end
def __fields__(:find_text_200_json_resp_lines) do
[text: :string]
end
def __fields__(:find_text_200_json_resp_path) do
[text: :string]
end
def __fields__(:find_text_200_json_resp_submatches) do
[
end: :integer,
match: {OpenCode.Generated.File, :find_text_200_json_resp_submatches_match},
start: :integer
]
end
def __fields__(:find_text_200_json_resp_submatches_match) do
[text: :string]
end
def __fields__(:t) do
[
added: :integer,
path: :string,
removed: :integer,
status: {:enum, ["added", "deleted", "modified"]}
]
end
end