OpenCode.Generated.Operations (opencode_sdk v0.1.2)

Copy Markdown View Source

Provides API endpoints related to operations

Summary

Functions

Remove auth credentials

List commands

Get configuration

List config providers

Update configuration

Subscribe to events

Get file status

Get formatter status

Get global configuration

Update global configuration

Dispose instance

Get global events

Dispose instance

Get LSP status

Add MCP server

post /mcp/{name}/connect

post /mcp/{name}/disconnect

Get MCP status

delete /session/{sessionID}/message/{messageID}/part/{partID}

patch /session/{sessionID}/message/{messageID}/part/{partID}

List pending permissions

Respond to permission request

Get current project

List all projects

Get provider auth methods

List providers

Connect to PTY session

Create PTY session

Get PTY session

List PTY sessions

Remove PTY session

List pending questions

Reject question request

List sessions

Get session status

Restore reverted messages

List tool IDs

Clear TUI prompt

Get next TUI request

Open help dialog

Open models dialog

Open sessions dialog

Open themes dialog

Publish TUI event

Submit TUI prompt

Get VCS info

List worktrees

Types

app_skills_200_json_resp()

@type app_skills_200_json_resp() :: %{
  content: String.t(),
  description: String.t(),
  location: String.t(),
  name: String.t()
}

config_providers_200_json_resp()

@type config_providers_200_json_resp() :: %{
  default: map(),
  providers: [OpenCode.Generated.Provider.t()]
}

find_text_200_json_resp()

@type find_text_200_json_resp() :: %{
  absolute_offset: number(),
  line_number: number(),
  lines: find_text_200_json_resp_lines(),
  path: find_text_200_json_resp_path(),
  submatches: [find_text_200_json_resp_submatches()]
}

find_text_200_json_resp_lines()

@type find_text_200_json_resp_lines() :: %{text: String.t()}

find_text_200_json_resp_path()

@type find_text_200_json_resp_path() :: %{text: String.t()}

find_text_200_json_resp_submatches()

@type find_text_200_json_resp_submatches() :: %{
  end: number(),
  match: find_text_200_json_resp_submatches_match(),
  start: number()
}

find_text_200_json_resp_submatches_match()

@type find_text_200_json_resp_submatches_match() :: %{text: String.t()}

global_health_200_json_resp()

@type global_health_200_json_resp() :: %{healthy: true, version: String.t()}

mcp_auth_remove_200_json_resp()

@type mcp_auth_remove_200_json_resp() :: %{success: true}

mcp_auth_start_200_json_resp()

@type mcp_auth_start_200_json_resp() :: %{authorization_url: String.t()}

provider_list_200_json_resp()

@type provider_list_200_json_resp() :: %{
  all: [provider_list_200_json_resp_all()],
  connected: [String.t()],
  default: map()
}

provider_list_200_json_resp_all()

@type provider_list_200_json_resp_all() :: %{
  api: String.t() | nil,
  env: [String.t()],
  id: String.t(),
  models: map(),
  name: String.t(),
  npm: String.t() | nil
}

session_command_200_json_resp()

session_message_200_json_resp()

session_messages_200_json_resp()

session_prompt_200_json_resp()

tui_control_next_200_json_resp()

@type tui_control_next_200_json_resp() :: %{body: map(), path: String.t()}

Functions

app_agents(opts \\ [])

@spec app_agents(opts :: keyword()) :: {:ok, [OpenCode.Generated.Agent.t()]} | :error

List agents

Get a list of all available AI agents in the OpenCode system.

Options

  • directory

app_log(body, opts \\ [])

@spec app_log(body :: map(), opts :: keyword()) ::
  {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t()}

Write log

Write a log entry to the server logs with specified level and metadata.

Options

  • directory

Request Body

Content Types: application/json

app_skills(opts \\ [])

@spec app_skills(opts :: keyword()) :: {:ok, [app_skills_200_json_resp()]} | :error

List skills

Get a list of all available skills in the OpenCode system.

Options

  • directory

auth_remove(providerID, opts \\ [])

@spec auth_remove(providerID :: String.t(), opts :: keyword()) ::
  {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t()}

Remove auth credentials

Remove authentication credentials

auth_set(providerID, body, opts \\ [])

@spec auth_set(
  providerID :: String.t(),
  body ::
    OpenCode.Generated.ApiAuth.t()
    | OpenCode.Generated.OAuth.t()
    | OpenCode.Generated.WellKnownAuth.t(),
  opts :: keyword()
) :: {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t()}

Set auth credentials

Set authentication credentials

Request Body

Content Types: application/json

command_list(opts \\ [])

@spec command_list(opts :: keyword()) ::
  {:ok, [OpenCode.Generated.Command.t()]} | :error

List commands

Get a list of all available commands in the OpenCode system.

Options

  • directory

config_get(opts \\ [])

@spec config_get(opts :: keyword()) :: {:ok, OpenCode.Generated.Config.t()} | :error

Get configuration

Retrieve the current OpenCode configuration settings and preferences.

Options

  • directory

config_providers(opts \\ [])

@spec config_providers(opts :: keyword()) ::
  {:ok, config_providers_200_json_resp()} | :error

List config providers

Get a list of all configured AI providers and their default models.

Options

  • directory

config_update(body, opts \\ [])

@spec config_update(body :: OpenCode.Generated.Config.t(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.Config.t()}
  | {:error, OpenCode.Generated.BadRequestError.t()}

Update configuration

Update OpenCode configuration settings and preferences.

Options

  • directory

Request Body

Content Types: application/json

event_subscribe(opts \\ [])

@spec event_subscribe(opts :: keyword()) ::
  {:ok,
   OpenCode.Generated.EventCommandExecuted.t()
   | OpenCode.Generated.EventFileEdited.t()
   | OpenCode.Generated.EventFileWatcherUpdated.t()
   | OpenCode.Generated.EventGlobalDisposed.t()
   | OpenCode.Generated.EventInstallationUpdateAvailable.t()
   | OpenCode.Generated.EventInstallationUpdated.t()
   | OpenCode.Generated.EventLspClientDiagnostics.t()
   | OpenCode.Generated.EventLspUpdated.t()
   | OpenCode.Generated.EventMcpBrowserOpenFailed.t()
   | OpenCode.Generated.EventMcpToolsChanged.t()
   | OpenCode.Generated.EventMessagePartRemoved.t()
   | OpenCode.Generated.EventMessagePartUpdated.t()
   | OpenCode.Generated.EventMessageRemoved.t()
   | OpenCode.Generated.EventMessageUpdated.t()
   | OpenCode.Generated.EventPermissionAsked.t()
   | OpenCode.Generated.EventPermissionReplied.t()
   | OpenCode.Generated.EventProjectUpdated.t()
   | OpenCode.Generated.EventPtyCreated.t()
   | OpenCode.Generated.EventPtyDeleted.t()
   | OpenCode.Generated.EventPtyExited.t()
   | OpenCode.Generated.EventPtyUpdated.t()
   | OpenCode.Generated.EventQuestionAsked.t()
   | OpenCode.Generated.EventQuestionRejected.t()
   | OpenCode.Generated.EventQuestionReplied.t()
   | OpenCode.Generated.EventServerConnected.t()
   | OpenCode.Generated.EventServerInstanceDisposed.t()
   | OpenCode.Generated.EventSessionCompacted.t()
   | OpenCode.Generated.EventSessionCreated.t()
   | OpenCode.Generated.EventSessionDeleted.t()
   | OpenCode.Generated.EventSessionDiff.t()
   | OpenCode.Generated.EventSessionError.t()
   | OpenCode.Generated.EventSessionIdle.t()
   | OpenCode.Generated.EventSessionStatus.t()
   | OpenCode.Generated.EventSessionUpdated.t()
   | OpenCode.Generated.EventTodoUpdated.t()
   | OpenCode.Generated.EventTuiCommandExecute.t()
   | OpenCode.Generated.EventTuiPromptAppend.t()
   | OpenCode.Generated.EventTuiSessionSelect.t()
   | OpenCode.Generated.EventTuiToastShow.t()
   | OpenCode.Generated.EventVcsBranchUpdated.t()
   | OpenCode.Generated.EventWorktreeFailed.t()
   | OpenCode.Generated.EventWorktreeReady.t()}
  | :error

Subscribe to events

Get events

Options

  • directory

experimental_resource_list(opts \\ [])

@spec experimental_resource_list(opts :: keyword()) :: {:ok, map()} | :error

Get MCP resources

Get all available MCP resources from connected servers. Optionally filter by name.

Options

  • directory

file_list(opts \\ [])

@spec file_list(opts :: keyword()) ::
  {:ok, [OpenCode.Generated.FileNode.t()]} | :error

List files

List files and directories in a specified path.

Options

  • directory
  • path

file_read(opts \\ [])

@spec file_read(opts :: keyword()) ::
  {:ok, OpenCode.Generated.FileContent.t()} | :error

Read file

Read the content of a specified file.

Options

  • directory
  • path

file_status(opts \\ [])

@spec file_status(opts :: keyword()) :: {:ok, [OpenCode.Generated.File.t()]} | :error

Get file status

Get the git status of all files in the project.

Options

  • directory

find_files(opts \\ [])

@spec find_files(opts :: keyword()) :: {:ok, [String.t()]} | :error

Find files

Search for files or directories by name or pattern in the project directory.

Options

  • directory
  • query
  • dirs
  • type
  • limit

find_symbols(opts \\ [])

@spec find_symbols(opts :: keyword()) ::
  {:ok, [OpenCode.Generated.Symbol.t()]} | :error

Find symbols

Search for workspace symbols like functions, classes, and variables using LSP.

Options

  • directory
  • query

find_text(opts \\ [])

@spec find_text(opts :: keyword()) :: {:ok, [find_text_200_json_resp()]} | :error

Find text

Search for text patterns across files in the project using ripgrep.

Options

  • directory
  • pattern

formatter_status(opts \\ [])

@spec formatter_status(opts :: keyword()) ::
  {:ok, [OpenCode.Generated.FormatterStatus.t()]} | :error

Get formatter status

Get formatter status

Options

  • directory

global_config_get(opts \\ [])

@spec global_config_get(opts :: keyword()) ::
  {:ok, OpenCode.Generated.Config.t()} | :error

Get global configuration

Retrieve the current global OpenCode configuration settings and preferences.

global_config_update(body, opts \\ [])

@spec global_config_update(body :: OpenCode.Generated.Config.t(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.Config.t()}
  | {:error, OpenCode.Generated.BadRequestError.t()}

Update global configuration

Update global OpenCode configuration settings and preferences.

Request Body

Content Types: application/json

global_dispose(opts \\ [])

@spec global_dispose(opts :: keyword()) :: {:ok, boolean()} | :error

Dispose instance

Clean up and dispose all OpenCode instances, releasing all resources.

global_event(opts \\ [])

@spec global_event(opts :: keyword()) ::
  {:ok, OpenCode.Generated.GlobalEvent.t()} | :error

Get global events

Subscribe to global events from the OpenCode system using server-sent events.

global_health(opts \\ [])

@spec global_health(opts :: keyword()) ::
  {:ok, global_health_200_json_resp()} | :error

Get health

Get health information about the OpenCode server.

instance_dispose(opts \\ [])

@spec instance_dispose(opts :: keyword()) :: {:ok, boolean()} | :error

Dispose instance

Clean up and dispose the current OpenCode instance, releasing all resources.

Options

  • directory

lsp_status(opts \\ [])

@spec lsp_status(opts :: keyword()) ::
  {:ok, [OpenCode.Generated.LSPStatus.t()]} | :error

Get LSP status

Get LSP server status

Options

  • directory

mcp_add(body, opts \\ [])

@spec mcp_add(body :: map(), opts :: keyword()) ::
  {:ok, map()} | {:error, OpenCode.Generated.BadRequestError.t()}

Add MCP server

Dynamically add a new Model Context Protocol (MCP) server to the system.

Options

  • directory

Request Body

Content Types: application/json

mcp_auth_authenticate(name, opts \\ [])

Authenticate MCP OAuth

Start OAuth flow and wait for callback (opens browser)

Options

  • directory

mcp_auth_callback(name, body, opts \\ [])

Complete MCP OAuth

Complete OAuth authentication for a Model Context Protocol (MCP) server using the authorization code.

Options

  • directory

Request Body

Content Types: application/json

mcp_auth_remove(name, opts \\ [])

@spec mcp_auth_remove(name :: String.t(), opts :: keyword()) ::
  {:ok, mcp_auth_remove_200_json_resp()}
  | {:error, OpenCode.Generated.NotFoundError.t()}

Remove MCP OAuth

Remove OAuth credentials for an MCP server

Options

  • directory

mcp_auth_start(name, opts \\ [])

@spec mcp_auth_start(name :: String.t(), opts :: keyword()) ::
  {:ok, mcp_auth_start_200_json_resp()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Start MCP OAuth

Start OAuth authentication flow for a Model Context Protocol (MCP) server.

Options

  • directory

mcp_connect(name, opts \\ [])

@spec mcp_connect(name :: String.t(), opts :: keyword()) :: {:ok, boolean()} | :error

post /mcp/{name}/connect

Connect an MCP server

Options

  • directory

mcp_disconnect(name, opts \\ [])

@spec mcp_disconnect(name :: String.t(), opts :: keyword()) ::
  {:ok, boolean()} | :error

post /mcp/{name}/disconnect

Disconnect an MCP server

Options

  • directory

mcp_status(opts \\ [])

@spec mcp_status(opts :: keyword()) :: {:ok, map()} | :error

Get MCP status

Get the status of all Model Context Protocol (MCP) servers.

Options

  • directory

part_delete(sessionID, messageID, partID, opts \\ [])

@spec part_delete(
  sessionID :: String.t(),
  messageID :: String.t(),
  partID :: String.t(),
  opts :: keyword()
) ::
  {:ok, boolean()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

delete /session/{sessionID}/message/{messageID}/part/{partID}

Delete a part from a message

Options

  • directory

part_update(sessionID, messageID, partID, body, opts \\ [])

patch /session/{sessionID}/message/{messageID}/part/{partID}

Update a part in a message

Options

  • directory

Request Body

Content Types: application/json

path_get(opts \\ [])

@spec path_get(opts :: keyword()) :: {:ok, OpenCode.Generated.Path.t()} | :error

Get paths

Retrieve the current working directory and related path information for the OpenCode instance.

Options

  • directory

permission_list(opts \\ [])

@spec permission_list(opts :: keyword()) ::
  {:ok, [OpenCode.Generated.PermissionRequest.t()]} | :error

List pending permissions

Get all pending permission requests across all sessions.

Options

  • directory

permission_reply(requestID, body, opts \\ [])

@spec permission_reply(requestID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, boolean()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Respond to permission request

Approve or deny a permission request from the AI assistant.

Options

  • directory

Request Body

Content Types: application/json

permission_respond(sessionID, permissionID, body, opts \\ [])

@spec permission_respond(
  sessionID :: String.t(),
  permissionID :: String.t(),
  body :: map(),
  opts :: keyword()
) ::
  {:ok, boolean()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Respond to permission

Approve or deny a permission request from the AI assistant.

Options

  • directory

Request Body

Content Types: application/json

project_current(opts \\ [])

@spec project_current(opts :: keyword()) ::
  {:ok, OpenCode.Generated.Project.t()} | :error

Get current project

Retrieve the currently active project that OpenCode is working with.

Options

  • directory

project_list(opts \\ [])

@spec project_list(opts :: keyword()) ::
  {:ok, [OpenCode.Generated.Project.t()]} | :error

List all projects

Get a list of projects that have been opened with OpenCode.

Options

  • directory

project_update(projectID, body, opts \\ [])

@spec project_update(projectID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.Project.t()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Update project

Update project properties such as name, icon, and commands.

Options

  • directory

Request Body

Content Types: application/json

provider_auth(opts \\ [])

@spec provider_auth(opts :: keyword()) :: {:ok, map()} | :error

Get provider auth methods

Retrieve available authentication methods for all AI providers.

Options

  • directory

provider_list(opts \\ [])

@spec provider_list(opts :: keyword()) ::
  {:ok, provider_list_200_json_resp()} | :error

List providers

Get a list of all available AI providers, including both available and connected ones.

Options

  • directory

provider_oauth_authorize(providerID, body, opts \\ [])

@spec provider_oauth_authorize(
  providerID :: String.t(),
  body :: map(),
  opts :: keyword()
) ::
  {:ok, OpenCode.Generated.ProviderAuthAuthorization.t()}
  | {:error, OpenCode.Generated.BadRequestError.t()}

OAuth authorize

Initiate OAuth authorization for a specific AI provider to get an authorization URL.

Options

  • directory

Request Body

Content Types: application/json

provider_oauth_callback(providerID, body, opts \\ [])

@spec provider_oauth_callback(
  providerID :: String.t(),
  body :: map(),
  opts :: keyword()
) ::
  {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t()}

OAuth callback

Handle the OAuth callback from a provider after user authorization.

Options

  • directory

Request Body

Content Types: application/json

pty_connect(ptyID, opts \\ [])

@spec pty_connect(ptyID :: String.t(), opts :: keyword()) ::
  {:ok, boolean()} | {:error, OpenCode.Generated.NotFoundError.t()}

Connect to PTY session

Establish a WebSocket connection to interact with a pseudo-terminal (PTY) session in real-time.

Options

  • directory

pty_create(body, opts \\ [])

@spec pty_create(body :: map(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.Pty.t()}
  | {:error, OpenCode.Generated.BadRequestError.t()}

Create PTY session

Create a new pseudo-terminal (PTY) session for running shell commands and processes.

Options

  • directory

Request Body

Content Types: application/json

pty_get(ptyID, opts \\ [])

@spec pty_get(ptyID :: String.t(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.Pty.t()}
  | {:error, OpenCode.Generated.NotFoundError.t()}

Get PTY session

Retrieve detailed information about a specific pseudo-terminal (PTY) session.

Options

  • directory

pty_list(opts \\ [])

@spec pty_list(opts :: keyword()) :: {:ok, [OpenCode.Generated.Pty.t()]} | :error

List PTY sessions

Get a list of all active pseudo-terminal (PTY) sessions managed by OpenCode.

Options

  • directory

pty_remove(ptyID, opts \\ [])

@spec pty_remove(ptyID :: String.t(), opts :: keyword()) ::
  {:ok, boolean()} | {:error, OpenCode.Generated.NotFoundError.t()}

Remove PTY session

Remove and terminate a specific pseudo-terminal (PTY) session.

Options

  • directory

pty_update(ptyID, body, opts \\ [])

@spec pty_update(ptyID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.Pty.t()}
  | {:error, OpenCode.Generated.BadRequestError.t()}

Update PTY session

Update properties of an existing pseudo-terminal (PTY) session.

Options

  • directory

Request Body

Content Types: application/json

question_list(opts \\ [])

@spec question_list(opts :: keyword()) ::
  {:ok, [OpenCode.Generated.QuestionRequest.t()]} | :error

List pending questions

Get all pending question requests across all sessions.

Options

  • directory

question_reject(requestID, opts \\ [])

@spec question_reject(requestID :: String.t(), opts :: keyword()) ::
  {:ok, boolean()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Reject question request

Reject a question request from the AI assistant.

Options

  • directory

question_reply(requestID, body, opts \\ [])

@spec question_reply(requestID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, boolean()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Reply to question request

Provide answers to a question request from the AI assistant.

Options

  • directory

Request Body

Content Types: application/json

session_abort(sessionID, opts \\ [])

@spec session_abort(sessionID :: String.t(), opts :: keyword()) ::
  {:ok, boolean()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Abort session

Abort an active session and stop any ongoing AI processing or command execution.

Options

  • directory

session_command(sessionID, body, opts \\ [])

@spec session_command(sessionID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, session_command_200_json_resp()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Send command

Send a new command to a session for execution by the AI assistant.

Options

  • directory

Request Body

Content Types: application/json

session_create(body, opts \\ [])

@spec session_create(body :: map(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.Session.t()}
  | {:error, OpenCode.Generated.BadRequestError.t()}

Create session

Create a new OpenCode session for interacting with AI assistants and managing conversations.

Options

  • directory

Request Body

Content Types: application/json

session_delete(sessionID, opts \\ [])

@spec session_delete(sessionID :: String.t(), opts :: keyword()) ::
  {:ok, boolean()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Delete session

Delete a session and permanently remove all associated data, including messages and history.

Options

  • directory

session_diff(sessionID, opts \\ [])

@spec session_diff(sessionID :: String.t(), opts :: keyword()) ::
  {:ok, [OpenCode.Generated.FileDiff.t()]} | :error

Get message diff

Get the file changes (diff) that resulted from a specific user message in the session.

Options

  • directory
  • messageID

session_fork(sessionID, body, opts \\ [])

@spec session_fork(sessionID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.Session.t()} | :error

Fork session

Create a new session by forking an existing session at a specific message point.

Options

  • directory

Request Body

Content Types: application/json

session_init(sessionID, body, opts \\ [])

@spec session_init(sessionID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, boolean()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Initialize session

Analyze the current application and create an AGENTS.md file with project-specific agent configurations.

Options

  • directory

Request Body

Content Types: application/json

session_list(opts \\ [])

@spec session_list(opts :: keyword()) ::
  {:ok, [OpenCode.Generated.Session.t()]} | :error

List sessions

Get a list of all OpenCode sessions, sorted by most recently updated.

Options

  • directory: Filter sessions by project directory
  • roots: Only return root sessions (no parentID)
  • start: Filter sessions updated on or after this timestamp (milliseconds since epoch)
  • search: Filter sessions by title (case-insensitive)
  • limit: Maximum number of sessions to return

session_message(sessionID, messageID, opts \\ [])

@spec session_message(
  sessionID :: String.t(),
  messageID :: String.t(),
  opts :: keyword()
) ::
  {:ok, session_message_200_json_resp()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Get message

Retrieve a specific message from a session by its message ID.

Options

  • directory

session_messages(sessionID, opts \\ [])

@spec session_messages(sessionID :: String.t(), opts :: keyword()) ::
  {:ok, [session_messages_200_json_resp()]}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Get session messages

Retrieve all messages in a session, including user prompts and AI responses.

Options

  • directory
  • limit

session_prompt(sessionID, body, opts \\ [])

@spec session_prompt(sessionID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, session_prompt_200_json_resp()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Send message

Create and send a new message to a session, streaming the AI response.

Options

  • directory

Request Body

Content Types: application/json

session_prompt_async(sessionID, body, opts \\ [])

@spec session_prompt_async(sessionID :: String.t(), body :: map(), opts :: keyword()) ::
  :ok
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Send async message

Create and send a new message to a session asynchronously, starting the session if needed and returning immediately.

Options

  • directory

Request Body

Content Types: application/json

session_revert(sessionID, body, opts \\ [])

@spec session_revert(sessionID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.Session.t()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Revert message

Revert a specific message in a session, undoing its effects and restoring the previous state.

Options

  • directory

Request Body

Content Types: application/json

session_share(sessionID, opts \\ [])

@spec session_share(sessionID :: String.t(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.Session.t()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Share session

Create a shareable link for a session, allowing others to view the conversation.

Options

  • directory

session_shell(sessionID, body, opts \\ [])

@spec session_shell(sessionID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.AssistantMessage.t()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Run shell command

Execute a shell command within the session context and return the AI's response.

Options

  • directory

Request Body

Content Types: application/json

session_status(opts \\ [])

@spec session_status(opts :: keyword()) ::
  {:ok, map()} | {:error, OpenCode.Generated.BadRequestError.t()}

Get session status

Retrieve the current status of all sessions, including active, idle, and completed states.

Options

  • directory

session_summarize(sessionID, body, opts \\ [])

@spec session_summarize(sessionID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, boolean()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Summarize session

Generate a concise summary of the session using AI compaction to preserve key information.

Options

  • directory

Request Body

Content Types: application/json

session_todo(sessionID, opts \\ [])

@spec session_todo(sessionID :: String.t(), opts :: keyword()) ::
  {:ok, [OpenCode.Generated.Todo.t()]}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Get session todos

Retrieve the todo list associated with a specific session, showing tasks and action items.

Options

  • directory

session_unrevert(sessionID, opts \\ [])

@spec session_unrevert(sessionID :: String.t(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.Session.t()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Restore reverted messages

Restore all previously reverted messages in a session.

Options

  • directory

session_unshare(sessionID, opts \\ [])

@spec session_unshare(sessionID :: String.t(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.Session.t()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Unshare session

Remove the shareable link for a session, making it private again.

Options

  • directory

session_update(sessionID, body, opts \\ [])

@spec session_update(sessionID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, OpenCode.Generated.Session.t()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Update session

Update properties of an existing session, such as title or other metadata.

Options

  • directory

Request Body

Content Types: application/json

tool_ids(opts \\ [])

@spec tool_ids(opts :: keyword()) ::
  {:ok, [String.t()]} | {:error, OpenCode.Generated.BadRequestError.t()}

List tool IDs

Get a list of all available tool IDs, including both built-in tools and dynamically registered tools.

Options

  • directory

tool_list(opts \\ [])

@spec tool_list(opts :: keyword()) ::
  {:ok, [OpenCode.Generated.ToolListItem.t()]}
  | {:error, OpenCode.Generated.BadRequestError.t()}

List tools

Get a list of available tools with their JSON schema parameters for a specific provider and model combination.

Options

  • directory
  • provider
  • model

tui_append_prompt(body, opts \\ [])

@spec tui_append_prompt(body :: map(), opts :: keyword()) ::
  {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t()}

Append TUI prompt

Append prompt to the TUI

Options

  • directory

Request Body

Content Types: application/json

tui_clear_prompt(opts \\ [])

@spec tui_clear_prompt(opts :: keyword()) :: {:ok, boolean()} | :error

Clear TUI prompt

Clear the prompt

Options

  • directory

tui_control_next(opts \\ [])

@spec tui_control_next(opts :: keyword()) ::
  {:ok, tui_control_next_200_json_resp()} | :error

Get next TUI request

Retrieve the next TUI (Terminal User Interface) request from the queue for processing.

Options

  • directory

tui_control_response(body, opts \\ [])

@spec tui_control_response(body :: map(), opts :: keyword()) ::
  {:ok, boolean()} | :error

Submit TUI response

Submit a response to the TUI request queue to complete a pending request.

Options

  • directory

Request Body

Content Types: application/json

tui_execute_command(body, opts \\ [])

@spec tui_execute_command(body :: map(), opts :: keyword()) ::
  {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t()}

Execute TUI command

Execute a TUI command (e.g. agent_cycle)

Options

  • directory

Request Body

Content Types: application/json

tui_open_help(opts \\ [])

@spec tui_open_help(opts :: keyword()) :: {:ok, boolean()} | :error

Open help dialog

Open the help dialog in the TUI to display user assistance information.

Options

  • directory

tui_open_models(opts \\ [])

@spec tui_open_models(opts :: keyword()) :: {:ok, boolean()} | :error

Open models dialog

Open the model dialog

Options

  • directory

tui_open_sessions(opts \\ [])

@spec tui_open_sessions(opts :: keyword()) :: {:ok, boolean()} | :error

Open sessions dialog

Open the session dialog

Options

  • directory

tui_open_themes(opts \\ [])

@spec tui_open_themes(opts :: keyword()) :: {:ok, boolean()} | :error

Open themes dialog

Open the theme dialog

Options

  • directory

tui_publish(body, opts \\ [])

Publish TUI event

Publish a TUI event

Options

  • directory

Request Body

Content Types: application/json

tui_select_session(body, opts \\ [])

@spec tui_select_session(body :: map(), opts :: keyword()) ::
  {:ok, boolean()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.NotFoundError.t()}

Select session

Navigate the TUI to display the specified session.

Options

  • directory

Request Body

Content Types: application/json

tui_show_toast(body, opts \\ [])

@spec tui_show_toast(body :: map(), opts :: keyword()) :: {:ok, boolean()} | :error

Show TUI toast

Show a toast notification in the TUI

Options

  • directory

Request Body

Content Types: application/json

tui_submit_prompt(opts \\ [])

@spec tui_submit_prompt(opts :: keyword()) :: {:ok, boolean()} | :error

Submit TUI prompt

Submit the prompt

Options

  • directory

vcs_get(opts \\ [])

@spec vcs_get(opts :: keyword()) :: {:ok, OpenCode.Generated.VcsInfo.t()} | :error

Get VCS info

Retrieve version control system (VCS) information for the current project, such as git branch.

Options

  • directory

worktree_create(body, opts \\ [])

@spec worktree_create(
  body :: OpenCode.Generated.WorktreeCreateInput.t(),
  opts :: keyword()
) ::
  {:ok, OpenCode.Generated.Worktree.t()}
  | {:error, OpenCode.Generated.BadRequestError.t()}

Create worktree

Create a new git worktree for the current project and run any configured startup scripts.

Options

  • directory

Request Body

Content Types: application/json

worktree_list(opts \\ [])

@spec worktree_list(opts :: keyword()) :: {:ok, [String.t()]} | :error

List worktrees

List all sandbox worktrees for the current project.

Options

  • directory

worktree_remove(body, opts \\ [])

@spec worktree_remove(
  body :: OpenCode.Generated.WorktreeRemoveInput.t(),
  opts :: keyword()
) ::
  {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t()}

Remove worktree

Remove a git worktree and delete its branch.

Options

  • directory

Request Body

Content Types: application/json

worktree_reset(body, opts \\ [])

@spec worktree_reset(
  body :: OpenCode.Generated.WorktreeResetInput.t(),
  opts :: keyword()
) ::
  {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t()}

Reset worktree

Reset a worktree branch to the primary default branch.

Options

  • directory

Request Body

Content Types: application/json