OpenCode.Generated.Session (opencode_sdk v0.1.57)

Copy Markdown View Source

Provides API endpoints related to session

Summary

Functions

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

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

List sessions

Get session status

Restore reverted messages

Types

session_command_200_json_resp()

session_message_200_json_resp()

session_messages_200_json_resp()

session_prompt_200_json_resp()

session_shell_200_json_resp()

t()

@type t() :: %OpenCode.Generated.Session{
  agent: String.t() | nil,
  directory: String.t(),
  id: String.t(),
  model: OpenCode.Generated.SessionModel.t() | nil,
  parent_id: String.t() | nil,
  path: String.t() | nil,
  permission: [OpenCode.Generated.PermissionRule.t()] | nil,
  project_id: String.t(),
  revert: OpenCode.Generated.SessionRevert.t() | nil,
  share: OpenCode.Generated.SessionShare.t() | nil,
  slug: String.t(),
  summary: OpenCode.Generated.SessionSummary.t() | nil,
  time: OpenCode.Generated.SessionTime.t(),
  title: String.t(),
  version: String.t(),
  workspace_id: String.t() | nil
}

Functions

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
  • workspace

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

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

Update a part in a message.

Options

  • directory
  • workspace

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
  • workspace

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
  • workspace

session_children(sessionID, opts \\ [])

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

Get session children

Retrieve all child sessions that were forked from the specified parent session.

Options

  • directory
  • workspace

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
  • workspace

Request Body

Content Types: application/json

session_create(body, opts \\ [])

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

Create session

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

Options

  • directory
  • workspace

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
  • workspace

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

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

Delete message

Permanently delete a specific message and all of its parts from a session without reverting file changes.

Options

  • directory
  • workspace

session_diff(sessionID, opts \\ [])

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

Get message diff

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

Options

  • directory
  • workspace
  • messageID

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

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

Fork session

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

Options

  • directory
  • workspace

Request Body

Content Types: application/json

session_get(sessionID, opts \\ [])

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

Get session

Retrieve detailed information about a specific OpenCode session.

Options

  • directory
  • workspace

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
  • workspace

Request Body

Content Types: application/json

session_list(opts \\ [])

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

List sessions

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

Options

  • directory
  • workspace
  • scope
  • path
  • roots
  • start
  • search
  • limit

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
  • workspace

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
  • workspace
  • limit
  • before

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
  • workspace

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
  • workspace

Request Body

Content Types: application/json

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

@spec session_revert(sessionID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, 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
  • workspace

Request Body

Content Types: application/json

session_share(sessionID, opts \\ [])

@spec session_share(sessionID :: String.t(), opts :: keyword()) ::
  {:ok, 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
  • workspace

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

@spec session_shell(sessionID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, session_shell_200_json_resp()}
  | {: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
  • workspace

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
  • workspace

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
  • workspace

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
  • workspace

session_unrevert(sessionID, opts \\ [])

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

Restore reverted messages

Restore all previously reverted messages in a session.

Options

  • directory
  • workspace

session_unshare(sessionID, opts \\ [])

@spec session_unshare(sessionID :: String.t(), opts :: keyword()) ::
  {:ok, 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
  • workspace

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

@spec session_update(sessionID :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok, 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
  • workspace

Request Body

Content Types: application/json