{ "openapi": "3.1.1", "info": { "title": "opencode", "description": "opencode api", "version": "1.0.0" }, "paths": { "/global/health": { "get": { "operationId": "global.health", "summary": "Get health", "description": "Get health information about the OpenCode server.", "responses": { "200": { "description": "Health information", "content": { "application/json": { "schema": { "type": "object", "properties": { "healthy": { "type": "boolean", "const": true }, "version": { "type": "string" } }, "required": ["healthy", "version"] } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.global.health({\n ...\n})" } ] } }, "/global/event": { "get": { "operationId": "global.event", "summary": "Get global events", "description": "Subscribe to global events from the OpenCode system using server-sent events.", "responses": { "200": { "description": "Event stream", "content": { "text/event-stream": { "schema": { "$ref": "#/components/schemas/GlobalEvent" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.global.event({\n ...\n})" } ] } }, "/global/dispose": { "post": { "operationId": "global.dispose", "summary": "Dispose instance", "description": "Clean up and dispose all OpenCode instances, releasing all resources.", "responses": { "200": { "description": "Global disposed", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.global.dispose({\n ...\n})" } ] } }, "/project": { "get": { "operationId": "project.list", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "List all projects", "description": "Get a list of projects that have been opened with OpenCode.", "responses": { "200": { "description": "List of projects", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Project" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.project.list({\n ...\n})" } ] } }, "/project/current": { "get": { "operationId": "project.current", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Get current project", "description": "Retrieve the currently active project that OpenCode is working with.", "responses": { "200": { "description": "Current project information", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.project.current({\n ...\n})" } ] } }, "/project/{projectID}": { "patch": { "operationId": "project.update", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "projectID", "schema": { "type": "string" }, "required": true } ], "summary": "Update project", "description": "Update project properties such as name, icon and color.", "responses": { "200": { "description": "Updated project information", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "icon": { "type": "object", "properties": { "url": { "type": "string" }, "color": { "type": "string" } } } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.project.update({\n ...\n})" } ] } }, "/pty": { "get": { "operationId": "pty.list", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "List PTY sessions", "description": "Get a list of all active pseudo-terminal (PTY) sessions managed by OpenCode.", "responses": { "200": { "description": "List of sessions", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Pty" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.pty.list({\n ...\n})" } ] }, "post": { "operationId": "pty.create", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Create PTY session", "description": "Create a new pseudo-terminal (PTY) session for running shell commands and processes.", "responses": { "200": { "description": "Created session", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Pty" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "command": { "type": "string" }, "args": { "type": "array", "items": { "type": "string" } }, "cwd": { "type": "string" }, "title": { "type": "string" }, "env": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.pty.create({\n ...\n})" } ] } }, "/pty/{ptyID}": { "get": { "operationId": "pty.get", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "ptyID", "schema": { "type": "string" }, "required": true } ], "summary": "Get PTY session", "description": "Retrieve detailed information about a specific pseudo-terminal (PTY) session.", "responses": { "200": { "description": "Session info", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Pty" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.pty.get({\n ...\n})" } ] }, "put": { "operationId": "pty.update", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "ptyID", "schema": { "type": "string" }, "required": true } ], "summary": "Update PTY session", "description": "Update properties of an existing pseudo-terminal (PTY) session.", "responses": { "200": { "description": "Updated session", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Pty" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "title": { "type": "string" }, "size": { "type": "object", "properties": { "rows": { "type": "number" }, "cols": { "type": "number" } }, "required": ["rows", "cols"] } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.pty.update({\n ...\n})" } ] }, "delete": { "operationId": "pty.remove", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "ptyID", "schema": { "type": "string" }, "required": true } ], "summary": "Remove PTY session", "description": "Remove and terminate a specific pseudo-terminal (PTY) session.", "responses": { "200": { "description": "Session removed", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.pty.remove({\n ...\n})" } ] } }, "/pty/{ptyID}/connect": { "get": { "operationId": "pty.connect", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "ptyID", "schema": { "type": "string" }, "required": true } ], "summary": "Connect to PTY session", "description": "Establish a WebSocket connection to interact with a pseudo-terminal (PTY) session in real-time.", "responses": { "200": { "description": "Connected session", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.pty.connect({\n ...\n})" } ] } }, "/config": { "get": { "operationId": "config.get", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Get configuration", "description": "Retrieve the current OpenCode configuration settings and preferences.", "responses": { "200": { "description": "Get config info", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Config" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.config.get({\n ...\n})" } ] }, "patch": { "operationId": "config.update", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Update configuration", "description": "Update OpenCode configuration settings and preferences.", "responses": { "200": { "description": "Successfully updated config", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Config" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Config" } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.config.update({\n ...\n})" } ] } }, "/config/providers": { "get": { "operationId": "config.providers", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "List config providers", "description": "Get a list of all configured AI providers and their default models.", "responses": { "200": { "description": "List of providers", "content": { "application/json": { "schema": { "type": "object", "properties": { "providers": { "type": "array", "items": { "$ref": "#/components/schemas/Provider" } }, "default": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } } }, "required": ["providers", "default"] } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.config.providers({\n ...\n})" } ] } }, "/experimental/tool/ids": { "get": { "operationId": "tool.ids", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "List tool IDs", "description": "Get a list of all available tool IDs, including both built-in tools and dynamically registered tools.", "responses": { "200": { "description": "Tool IDs", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolIDs" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tool.ids({\n ...\n})" } ] } }, "/experimental/tool": { "get": { "operationId": "tool.list", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "query", "name": "provider", "schema": { "type": "string" }, "required": true }, { "in": "query", "name": "model", "schema": { "type": "string" }, "required": true } ], "summary": "List tools", "description": "Get a list of available tools with their JSON schema parameters for a specific provider and model combination.", "responses": { "200": { "description": "Tools", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolList" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tool.list({\n ...\n})" } ] } }, "/experimental/worktree": { "post": { "operationId": "worktree.create", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Create worktree", "description": "Create a new git worktree for the current project.", "responses": { "200": { "description": "Worktree created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Worktree" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorktreeCreateInput" } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.worktree.create({\n ...\n})" } ] }, "get": { "operationId": "worktree.list", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "List worktrees", "description": "List all sandbox worktrees for the current project.", "responses": { "200": { "description": "List of worktree directories", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.worktree.list({\n ...\n})" } ] } }, "/experimental/resource": { "get": { "operationId": "experimental.resource.list", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Get MCP resources", "description": "Get all available MCP resources from connected servers. Optionally filter by name.", "responses": { "200": { "description": "MCP resources", "content": { "application/json": { "schema": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "$ref": "#/components/schemas/McpResource" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.experimental.resource.list({\n ...\n})" } ] } }, "/session": { "get": { "operationId": "session.list", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" }, "description": "Filter sessions by project directory" }, { "in": "query", "name": "roots", "schema": { "type": "boolean" }, "description": "Only return root sessions (no parentID)" }, { "in": "query", "name": "start", "schema": { "type": "number" }, "description": "Filter sessions updated on or after this timestamp (milliseconds since epoch)" }, { "in": "query", "name": "search", "schema": { "type": "string" }, "description": "Filter sessions by title (case-insensitive)" }, { "in": "query", "name": "limit", "schema": { "type": "number" }, "description": "Maximum number of sessions to return" } ], "summary": "List sessions", "description": "Get a list of all OpenCode sessions, sorted by most recently updated.", "responses": { "200": { "description": "List of sessions", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Session" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.list({\n ...\n})" } ] }, "post": { "operationId": "session.create", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Create session", "description": "Create a new OpenCode session for interacting with AI assistants and managing conversations.", "responses": { "200": { "description": "Successfully created session", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "parentID": { "type": "string", "pattern": "^ses.*" }, "title": { "type": "string" }, "permission": { "$ref": "#/components/schemas/PermissionRuleset" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.create({\n ...\n})" } ] } }, "/session/status": { "get": { "operationId": "session.status", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Get session status", "description": "Retrieve the current status of all sessions, including active, idle, and completed states.", "responses": { "200": { "description": "Get session status", "content": { "application/json": { "schema": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "$ref": "#/components/schemas/SessionStatus" } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.status({\n ...\n})" } ] } }, "/session/{sessionID}": { "get": { "operationId": "session.get", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string", "pattern": "^ses.*" }, "required": true } ], "summary": "Get session", "description": "Retrieve detailed information about a specific OpenCode session.", "tags": ["Session"], "responses": { "200": { "description": "Get session", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.get({\n ...\n})" } ] }, "delete": { "operationId": "session.delete", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string", "pattern": "^ses.*" }, "required": true } ], "summary": "Delete session", "description": "Delete a session and permanently remove all associated data, including messages and history.", "responses": { "200": { "description": "Successfully deleted session", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.delete({\n ...\n})" } ] }, "patch": { "operationId": "session.update", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true } ], "summary": "Update session", "description": "Update properties of an existing session, such as title or other metadata.", "responses": { "200": { "description": "Successfully updated session", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "title": { "type": "string" }, "time": { "type": "object", "properties": { "archived": { "type": "number" } } } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.update({\n ...\n})" } ] } }, "/session/{sessionID}/children": { "get": { "operationId": "session.children", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string", "pattern": "^ses.*" }, "required": true } ], "summary": "Get session children", "tags": ["Session"], "description": "Retrieve all child sessions that were forked from the specified parent session.", "responses": { "200": { "description": "List of children", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Session" } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.children({\n ...\n})" } ] } }, "/session/{sessionID}/todo": { "get": { "operationId": "session.todo", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true, "description": "Session ID" } ], "summary": "Get session todos", "description": "Retrieve the todo list associated with a specific session, showing tasks and action items.", "responses": { "200": { "description": "Todo list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Todo" } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.todo({\n ...\n})" } ] } }, "/session/{sessionID}/init": { "post": { "operationId": "session.init", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true, "description": "Session ID" } ], "summary": "Initialize session", "description": "Analyze the current application and create an AGENTS.md file with project-specific agent configurations.", "responses": { "200": { "description": "200", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "modelID": { "type": "string" }, "providerID": { "type": "string" }, "messageID": { "type": "string", "pattern": "^msg.*" } }, "required": ["modelID", "providerID", "messageID"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.init({\n ...\n})" } ] } }, "/session/{sessionID}/fork": { "post": { "operationId": "session.fork", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string", "pattern": "^ses.*" }, "required": true } ], "summary": "Fork session", "description": "Create a new session by forking an existing session at a specific message point.", "responses": { "200": { "description": "200", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "messageID": { "type": "string", "pattern": "^msg.*" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.fork({\n ...\n})" } ] } }, "/session/{sessionID}/abort": { "post": { "operationId": "session.abort", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true } ], "summary": "Abort session", "description": "Abort an active session and stop any ongoing AI processing or command execution.", "responses": { "200": { "description": "Aborted session", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.abort({\n ...\n})" } ] } }, "/session/{sessionID}/share": { "post": { "operationId": "session.share", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true } ], "summary": "Share session", "description": "Create a shareable link for a session, allowing others to view the conversation.", "responses": { "200": { "description": "Successfully shared session", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.share({\n ...\n})" } ] }, "delete": { "operationId": "session.unshare", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string", "pattern": "^ses.*" }, "required": true } ], "summary": "Unshare session", "description": "Remove the shareable link for a session, making it private again.", "responses": { "200": { "description": "Successfully unshared session", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.unshare({\n ...\n})" } ] } }, "/session/{sessionID}/diff": { "get": { "operationId": "session.diff", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string", "pattern": "^ses.*" }, "required": true }, { "in": "query", "name": "messageID", "schema": { "type": "string", "pattern": "^msg.*" } } ], "summary": "Get message diff", "description": "Get the file changes (diff) that resulted from a specific user message in the session.", "responses": { "200": { "description": "Successfully retrieved diff", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FileDiff" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.diff({\n ...\n})" } ] } }, "/session/{sessionID}/summarize": { "post": { "operationId": "session.summarize", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true, "description": "Session ID" } ], "summary": "Summarize session", "description": "Generate a concise summary of the session using AI compaction to preserve key information.", "responses": { "200": { "description": "Summarized session", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" }, "auto": { "default": false, "type": "boolean" } }, "required": ["providerID", "modelID"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.summarize({\n ...\n})" } ] } }, "/session/{sessionID}/message": { "get": { "operationId": "session.messages", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true, "description": "Session ID" }, { "in": "query", "name": "limit", "schema": { "type": "number" } } ], "summary": "Get session messages", "description": "Retrieve all messages in a session, including user prompts and AI responses.", "responses": { "200": { "description": "List of messages", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "info": { "$ref": "#/components/schemas/Message" }, "parts": { "type": "array", "items": { "$ref": "#/components/schemas/Part" } } }, "required": ["info", "parts"] } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.messages({\n ...\n})" } ] }, "post": { "operationId": "session.prompt", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true, "description": "Session ID" } ], "summary": "Send message", "description": "Create and send a new message to a session, streaming the AI response.", "responses": { "200": { "description": "Created message", "content": { "application/json": { "schema": { "type": "object", "properties": { "info": { "$ref": "#/components/schemas/AssistantMessage" }, "parts": { "type": "array", "items": { "$ref": "#/components/schemas/Part" } } }, "required": ["info", "parts"] } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "messageID": { "type": "string", "pattern": "^msg.*" }, "model": { "type": "object", "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, "required": ["providerID", "modelID"] }, "agent": { "type": "string" }, "noReply": { "type": "boolean" }, "tools": { "description": "@deprecated tools and permissions have been merged, you can set permissions on the session itself now", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "boolean" } }, "system": { "type": "string" }, "variant": { "type": "string" }, "parts": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/TextPartInput" }, { "$ref": "#/components/schemas/FilePartInput" }, { "$ref": "#/components/schemas/AgentPartInput" }, { "$ref": "#/components/schemas/SubtaskPartInput" } ] } } }, "required": ["parts"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.prompt({\n ...\n})" } ] } }, "/session/{sessionID}/message/{messageID}": { "get": { "operationId": "session.message", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true, "description": "Session ID" }, { "in": "path", "name": "messageID", "schema": { "type": "string" }, "required": true, "description": "Message ID" } ], "summary": "Get message", "description": "Retrieve a specific message from a session by its message ID.", "responses": { "200": { "description": "Message", "content": { "application/json": { "schema": { "type": "object", "properties": { "info": { "$ref": "#/components/schemas/Message" }, "parts": { "type": "array", "items": { "$ref": "#/components/schemas/Part" } } }, "required": ["info", "parts"] } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.message({\n ...\n})" } ] } }, "/session/{sessionID}/message/{messageID}/part/{partID}": { "delete": { "operationId": "part.delete", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true, "description": "Session ID" }, { "in": "path", "name": "messageID", "schema": { "type": "string" }, "required": true, "description": "Message ID" }, { "in": "path", "name": "partID", "schema": { "type": "string" }, "required": true, "description": "Part ID" } ], "description": "Delete a part from a message", "responses": { "200": { "description": "Successfully deleted part", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.part.delete({\n ...\n})" } ] }, "patch": { "operationId": "part.update", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true, "description": "Session ID" }, { "in": "path", "name": "messageID", "schema": { "type": "string" }, "required": true, "description": "Message ID" }, { "in": "path", "name": "partID", "schema": { "type": "string" }, "required": true, "description": "Part ID" } ], "description": "Update a part in a message", "responses": { "200": { "description": "Successfully updated part", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Part" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Part" } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.part.update({\n ...\n})" } ] } }, "/session/{sessionID}/prompt_async": { "post": { "operationId": "session.prompt_async", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true, "description": "Session ID" } ], "summary": "Send async message", "description": "Create and send a new message to a session asynchronously, starting the session if needed and returning immediately.", "responses": { "204": { "description": "Prompt accepted" }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "messageID": { "type": "string", "pattern": "^msg.*" }, "model": { "type": "object", "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, "required": ["providerID", "modelID"] }, "agent": { "type": "string" }, "noReply": { "type": "boolean" }, "tools": { "description": "@deprecated tools and permissions have been merged, you can set permissions on the session itself now", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "boolean" } }, "system": { "type": "string" }, "variant": { "type": "string" }, "parts": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/TextPartInput" }, { "$ref": "#/components/schemas/FilePartInput" }, { "$ref": "#/components/schemas/AgentPartInput" }, { "$ref": "#/components/schemas/SubtaskPartInput" } ] } } }, "required": ["parts"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.prompt_async({\n ...\n})" } ] } }, "/session/{sessionID}/command": { "post": { "operationId": "session.command", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true, "description": "Session ID" } ], "summary": "Send command", "description": "Send a new command to a session for execution by the AI assistant.", "responses": { "200": { "description": "Created message", "content": { "application/json": { "schema": { "type": "object", "properties": { "info": { "$ref": "#/components/schemas/AssistantMessage" }, "parts": { "type": "array", "items": { "$ref": "#/components/schemas/Part" } } }, "required": ["info", "parts"] } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "messageID": { "type": "string", "pattern": "^msg.*" }, "agent": { "type": "string" }, "model": { "type": "string" }, "arguments": { "type": "string" }, "command": { "type": "string" }, "variant": { "type": "string" }, "parts": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "const": "file" }, "mime": { "type": "string" }, "filename": { "type": "string" }, "url": { "type": "string" }, "source": { "$ref": "#/components/schemas/FilePartSource" } }, "required": ["type", "mime", "url"] } ] } } }, "required": ["arguments", "command"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.command({\n ...\n})" } ] } }, "/session/{sessionID}/shell": { "post": { "operationId": "session.shell", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true, "description": "Session ID" } ], "summary": "Run shell command", "description": "Execute a shell command within the session context and return the AI's response.", "responses": { "200": { "description": "Created message", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssistantMessage" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "agent": { "type": "string" }, "model": { "type": "object", "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, "required": ["providerID", "modelID"] }, "command": { "type": "string" } }, "required": ["agent", "command"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.shell({\n ...\n})" } ] } }, "/session/{sessionID}/revert": { "post": { "operationId": "session.revert", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true } ], "summary": "Revert message", "description": "Revert a specific message in a session, undoing its effects and restoring the previous state.", "responses": { "200": { "description": "Updated session", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "messageID": { "type": "string", "pattern": "^msg.*" }, "partID": { "type": "string", "pattern": "^prt.*" } }, "required": ["messageID"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.revert({\n ...\n})" } ] } }, "/session/{sessionID}/unrevert": { "post": { "operationId": "session.unrevert", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true } ], "summary": "Restore reverted messages", "description": "Restore all previously reverted messages in a session.", "responses": { "200": { "description": "Updated session", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.session.unrevert({\n ...\n})" } ] } }, "/session/{sessionID}/permissions/{permissionID}": { "post": { "operationId": "permission.respond", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true }, { "in": "path", "name": "permissionID", "schema": { "type": "string" }, "required": true } ], "summary": "Respond to permission", "deprecated": true, "description": "Approve or deny a permission request from the AI assistant.", "responses": { "200": { "description": "Permission processed successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "response": { "type": "string", "enum": ["once", "always", "reject"] } }, "required": ["response"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.permission.respond({\n ...\n})" } ] } }, "/permission/{requestID}/reply": { "post": { "operationId": "permission.reply", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "requestID", "schema": { "type": "string" }, "required": true } ], "summary": "Respond to permission request", "description": "Approve or deny a permission request from the AI assistant.", "responses": { "200": { "description": "Permission processed successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "reply": { "type": "string", "enum": ["once", "always", "reject"] }, "message": { "type": "string" } }, "required": ["reply"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.permission.reply({\n ...\n})" } ] } }, "/permission": { "get": { "operationId": "permission.list", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "List pending permissions", "description": "Get all pending permission requests across all sessions.", "responses": { "200": { "description": "List of pending permissions", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PermissionRequest" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.permission.list({\n ...\n})" } ] } }, "/question": { "get": { "operationId": "question.list", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "List pending questions", "description": "Get all pending question requests across all sessions.", "responses": { "200": { "description": "List of pending questions", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/QuestionRequest" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.question.list({\n ...\n})" } ] } }, "/question/{requestID}/reply": { "post": { "operationId": "question.reply", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "requestID", "schema": { "type": "string" }, "required": true } ], "summary": "Reply to question request", "description": "Provide answers to a question request from the AI assistant.", "responses": { "200": { "description": "Question answered successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "answers": { "description": "User answers in order of questions (each answer is an array of selected labels)", "type": "array", "items": { "$ref": "#/components/schemas/QuestionAnswer" } } }, "required": ["answers"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.question.reply({\n ...\n})" } ] } }, "/question/{requestID}/reject": { "post": { "operationId": "question.reject", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "requestID", "schema": { "type": "string" }, "required": true } ], "summary": "Reject question request", "description": "Reject a question request from the AI assistant.", "responses": { "200": { "description": "Question rejected successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.question.reject({\n ...\n})" } ] } }, "/provider": { "get": { "operationId": "provider.list", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "List providers", "description": "Get a list of all available AI providers, including both available and connected ones.", "responses": { "200": { "description": "List of providers", "content": { "application/json": { "schema": { "type": "object", "properties": { "all": { "type": "array", "items": { "type": "object", "properties": { "api": { "type": "string" }, "name": { "type": "string" }, "env": { "type": "array", "items": { "type": "string" } }, "id": { "type": "string" }, "npm": { "type": "string" }, "models": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "family": { "type": "string" }, "release_date": { "type": "string" }, "attachment": { "type": "boolean" }, "reasoning": { "type": "boolean" }, "temperature": { "type": "boolean" }, "tool_call": { "type": "boolean" }, "interleaved": { "anyOf": [ { "type": "boolean", "const": true }, { "type": "object", "properties": { "field": { "type": "string", "enum": ["reasoning_content", "reasoning_details"] } }, "required": ["field"], "additionalProperties": false } ] }, "cost": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "cache_read": { "type": "number" }, "cache_write": { "type": "number" }, "context_over_200k": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "cache_read": { "type": "number" }, "cache_write": { "type": "number" } }, "required": ["input", "output"] } }, "required": ["input", "output"] }, "limit": { "type": "object", "properties": { "context": { "type": "number" }, "input": { "type": "number" }, "output": { "type": "number" } }, "required": ["context", "output"] }, "modalities": { "type": "object", "properties": { "input": { "type": "array", "items": { "type": "string", "enum": ["text", "audio", "image", "video", "pdf"] } }, "output": { "type": "array", "items": { "type": "string", "enum": ["text", "audio", "image", "video", "pdf"] } } }, "required": ["input", "output"] }, "experimental": { "type": "boolean" }, "status": { "type": "string", "enum": ["alpha", "beta", "deprecated"] }, "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "headers": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "provider": { "type": "object", "properties": { "npm": { "type": "string" } }, "required": ["npm"] }, "variants": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } } }, "required": [ "id", "name", "release_date", "attachment", "reasoning", "temperature", "tool_call", "limit", "options" ] } } }, "required": ["name", "env", "id", "models"] } }, "default": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "connected": { "type": "array", "items": { "type": "string" } } }, "required": ["all", "default", "connected"] } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.provider.list({\n ...\n})" } ] } }, "/provider/auth": { "get": { "operationId": "provider.auth", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Get provider auth methods", "description": "Retrieve available authentication methods for all AI providers.", "responses": { "200": { "description": "Provider auth methods", "content": { "application/json": { "schema": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "array", "items": { "$ref": "#/components/schemas/ProviderAuthMethod" } } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.provider.auth({\n ...\n})" } ] } }, "/provider/{providerID}/oauth/authorize": { "post": { "operationId": "provider.oauth.authorize", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "providerID", "schema": { "type": "string" }, "required": true, "description": "Provider ID" } ], "summary": "OAuth authorize", "description": "Initiate OAuth authorization for a specific AI provider to get an authorization URL.", "responses": { "200": { "description": "Authorization URL and method", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderAuthAuthorization" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "method": { "description": "Auth method index", "type": "number" } }, "required": ["method"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.provider.oauth.authorize({\n ...\n})" } ] } }, "/provider/{providerID}/oauth/callback": { "post": { "operationId": "provider.oauth.callback", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "providerID", "schema": { "type": "string" }, "required": true, "description": "Provider ID" } ], "summary": "OAuth callback", "description": "Handle the OAuth callback from a provider after user authorization.", "responses": { "200": { "description": "OAuth callback processed successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "method": { "description": "Auth method index", "type": "number" }, "code": { "description": "OAuth authorization code", "type": "string" } }, "required": ["method"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.provider.oauth.callback({\n ...\n})" } ] } }, "/find": { "get": { "operationId": "find.text", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "query", "name": "pattern", "schema": { "type": "string" }, "required": true } ], "summary": "Find text", "description": "Search for text patterns across files in the project using ripgrep.", "responses": { "200": { "description": "Matches", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "path": { "type": "object", "properties": { "text": { "type": "string" } }, "required": ["text"] }, "lines": { "type": "object", "properties": { "text": { "type": "string" } }, "required": ["text"] }, "line_number": { "type": "number" }, "absolute_offset": { "type": "number" }, "submatches": { "type": "array", "items": { "type": "object", "properties": { "match": { "type": "object", "properties": { "text": { "type": "string" } }, "required": ["text"] }, "start": { "type": "number" }, "end": { "type": "number" } }, "required": ["match", "start", "end"] } } }, "required": ["path", "lines", "line_number", "absolute_offset", "submatches"] } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.find.text({\n ...\n})" } ] } }, "/find/file": { "get": { "operationId": "find.files", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "query", "name": "query", "schema": { "type": "string" }, "required": true }, { "in": "query", "name": "dirs", "schema": { "type": "string", "enum": ["true", "false"] } }, { "in": "query", "name": "type", "schema": { "type": "string", "enum": ["file", "directory"] } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "minimum": 1, "maximum": 200 } } ], "summary": "Find files", "description": "Search for files or directories by name or pattern in the project directory.", "responses": { "200": { "description": "File paths", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.find.files({\n ...\n})" } ] } }, "/find/symbol": { "get": { "operationId": "find.symbols", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "query", "name": "query", "schema": { "type": "string" }, "required": true } ], "summary": "Find symbols", "description": "Search for workspace symbols like functions, classes, and variables using LSP.", "responses": { "200": { "description": "Symbols", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Symbol" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.find.symbols({\n ...\n})" } ] } }, "/file": { "get": { "operationId": "file.list", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "query", "name": "path", "schema": { "type": "string" }, "required": true } ], "summary": "List files", "description": "List files and directories in a specified path.", "responses": { "200": { "description": "Files and directories", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FileNode" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.file.list({\n ...\n})" } ] } }, "/file/content": { "get": { "operationId": "file.read", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "query", "name": "path", "schema": { "type": "string" }, "required": true } ], "summary": "Read file", "description": "Read the content of a specified file.", "responses": { "200": { "description": "File content", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileContent" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.file.read({\n ...\n})" } ] } }, "/file/status": { "get": { "operationId": "file.status", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Get file status", "description": "Get the git status of all files in the project.", "responses": { "200": { "description": "File status", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/File" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.file.status({\n ...\n})" } ] } }, "/mcp": { "get": { "operationId": "mcp.status", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Get MCP status", "description": "Get the status of all Model Context Protocol (MCP) servers.", "responses": { "200": { "description": "MCP server status", "content": { "application/json": { "schema": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "$ref": "#/components/schemas/MCPStatus" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.mcp.status({\n ...\n})" } ] }, "post": { "operationId": "mcp.add", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Add MCP server", "description": "Dynamically add a new Model Context Protocol (MCP) server to the system.", "responses": { "200": { "description": "MCP server added successfully", "content": { "application/json": { "schema": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "$ref": "#/components/schemas/MCPStatus" } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "config": { "anyOf": [ { "$ref": "#/components/schemas/McpLocalConfig" }, { "$ref": "#/components/schemas/McpRemoteConfig" } ] } }, "required": ["name", "config"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.mcp.add({\n ...\n})" } ] } }, "/mcp/{name}/auth": { "post": { "operationId": "mcp.auth.start", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "schema": { "type": "string" }, "in": "path", "name": "name", "required": true } ], "summary": "Start MCP OAuth", "description": "Start OAuth authentication flow for a Model Context Protocol (MCP) server.", "responses": { "200": { "description": "OAuth flow started", "content": { "application/json": { "schema": { "type": "object", "properties": { "authorizationUrl": { "description": "URL to open in browser for authorization", "type": "string" } }, "required": ["authorizationUrl"] } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.mcp.auth.start({\n ...\n})" } ] }, "delete": { "operationId": "mcp.auth.remove", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "schema": { "type": "string" }, "in": "path", "name": "name", "required": true } ], "summary": "Remove MCP OAuth", "description": "Remove OAuth credentials for an MCP server", "responses": { "200": { "description": "OAuth credentials removed", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "const": true } }, "required": ["success"] } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.mcp.auth.remove({\n ...\n})" } ] } }, "/mcp/{name}/auth/callback": { "post": { "operationId": "mcp.auth.callback", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "schema": { "type": "string" }, "in": "path", "name": "name", "required": true } ], "summary": "Complete MCP OAuth", "description": "Complete OAuth authentication for a Model Context Protocol (MCP) server using the authorization code.", "responses": { "200": { "description": "OAuth authentication completed", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCPStatus" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "description": "Authorization code from OAuth callback", "type": "string" } }, "required": ["code"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.mcp.auth.callback({\n ...\n})" } ] } }, "/mcp/{name}/auth/authenticate": { "post": { "operationId": "mcp.auth.authenticate", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "schema": { "type": "string" }, "in": "path", "name": "name", "required": true } ], "summary": "Authenticate MCP OAuth", "description": "Start OAuth flow and wait for callback (opens browser)", "responses": { "200": { "description": "OAuth authentication completed", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCPStatus" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.mcp.auth.authenticate({\n ...\n})" } ] } }, "/mcp/{name}/connect": { "post": { "operationId": "mcp.connect", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "name", "schema": { "type": "string" }, "required": true } ], "description": "Connect an MCP server", "responses": { "200": { "description": "MCP server connected successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.mcp.connect({\n ...\n})" } ] } }, "/mcp/{name}/disconnect": { "post": { "operationId": "mcp.disconnect", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "name", "schema": { "type": "string" }, "required": true } ], "description": "Disconnect an MCP server", "responses": { "200": { "description": "MCP server disconnected successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.mcp.disconnect({\n ...\n})" } ] } }, "/tui/append-prompt": { "post": { "operationId": "tui.appendPrompt", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Append TUI prompt", "description": "Append prompt to the TUI", "responses": { "200": { "description": "Prompt processed successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "text": { "type": "string" } }, "required": ["text"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tui.appendPrompt({\n ...\n})" } ] } }, "/tui/open-help": { "post": { "operationId": "tui.openHelp", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Open help dialog", "description": "Open the help dialog in the TUI to display user assistance information.", "responses": { "200": { "description": "Help dialog opened successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tui.openHelp({\n ...\n})" } ] } }, "/tui/open-sessions": { "post": { "operationId": "tui.openSessions", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Open sessions dialog", "description": "Open the session dialog", "responses": { "200": { "description": "Session dialog opened successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tui.openSessions({\n ...\n})" } ] } }, "/tui/open-themes": { "post": { "operationId": "tui.openThemes", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Open themes dialog", "description": "Open the theme dialog", "responses": { "200": { "description": "Theme dialog opened successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tui.openThemes({\n ...\n})" } ] } }, "/tui/open-models": { "post": { "operationId": "tui.openModels", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Open models dialog", "description": "Open the model dialog", "responses": { "200": { "description": "Model dialog opened successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tui.openModels({\n ...\n})" } ] } }, "/tui/submit-prompt": { "post": { "operationId": "tui.submitPrompt", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Submit TUI prompt", "description": "Submit the prompt", "responses": { "200": { "description": "Prompt submitted successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tui.submitPrompt({\n ...\n})" } ] } }, "/tui/clear-prompt": { "post": { "operationId": "tui.clearPrompt", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Clear TUI prompt", "description": "Clear the prompt", "responses": { "200": { "description": "Prompt cleared successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tui.clearPrompt({\n ...\n})" } ] } }, "/tui/execute-command": { "post": { "operationId": "tui.executeCommand", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Execute TUI command", "description": "Execute a TUI command (e.g. agent_cycle)", "responses": { "200": { "description": "Command executed successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "command": { "type": "string" } }, "required": ["command"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tui.executeCommand({\n ...\n})" } ] } }, "/tui/show-toast": { "post": { "operationId": "tui.showToast", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Show TUI toast", "description": "Show a toast notification in the TUI", "responses": { "200": { "description": "Toast notification shown successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "title": { "type": "string" }, "message": { "type": "string" }, "variant": { "type": "string", "enum": ["info", "success", "warning", "error"] }, "duration": { "description": "Duration in milliseconds", "default": 5000, "type": "number" } }, "required": ["message", "variant"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tui.showToast({\n ...\n})" } ] } }, "/tui/publish": { "post": { "operationId": "tui.publish", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Publish TUI event", "description": "Publish a TUI event", "responses": { "200": { "description": "Event published successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/Event.tui.prompt.append" }, { "$ref": "#/components/schemas/Event.tui.command.execute" }, { "$ref": "#/components/schemas/Event.tui.toast.show" }, { "$ref": "#/components/schemas/Event.tui.session.select" } ] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tui.publish({\n ...\n})" } ] } }, "/tui/select-session": { "post": { "operationId": "tui.selectSession", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Select session", "description": "Navigate the TUI to display the specified session.", "responses": { "200": { "description": "Session selected successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "sessionID": { "description": "Session ID to navigate to", "type": "string", "pattern": "^ses" } }, "required": ["sessionID"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tui.selectSession({\n ...\n})" } ] } }, "/tui/control/next": { "get": { "operationId": "tui.control.next", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Get next TUI request", "description": "Retrieve the next TUI (Terminal User Interface) request from the queue for processing.", "responses": { "200": { "description": "Next TUI request", "content": { "application/json": { "schema": { "type": "object", "properties": { "path": { "type": "string" }, "body": {} }, "required": ["path", "body"] } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tui.control.next({\n ...\n})" } ] } }, "/tui/control/response": { "post": { "operationId": "tui.control.response", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Submit TUI response", "description": "Submit a response to the TUI request queue to complete a pending request.", "responses": { "200": { "description": "Response submitted successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "requestBody": { "content": { "application/json": { "schema": {} } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.tui.control.response({\n ...\n})" } ] } }, "/instance/dispose": { "post": { "operationId": "instance.dispose", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Dispose instance", "description": "Clean up and dispose the current OpenCode instance, releasing all resources.", "responses": { "200": { "description": "Instance disposed", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.instance.dispose({\n ...\n})" } ] } }, "/path": { "get": { "operationId": "path.get", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Get paths", "description": "Retrieve the current working directory and related path information for the OpenCode instance.", "responses": { "200": { "description": "Path", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Path" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.path.get({\n ...\n})" } ] } }, "/vcs": { "get": { "operationId": "vcs.get", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Get VCS info", "description": "Retrieve version control system (VCS) information for the current project, such as git branch.", "responses": { "200": { "description": "VCS info", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VcsInfo" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.vcs.get({\n ...\n})" } ] } }, "/command": { "get": { "operationId": "command.list", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "List commands", "description": "Get a list of all available commands in the OpenCode system.", "responses": { "200": { "description": "List of commands", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Command" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.command.list({\n ...\n})" } ] } }, "/log": { "post": { "operationId": "app.log", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Write log", "description": "Write a log entry to the server logs with specified level and metadata.", "responses": { "200": { "description": "Log entry written successfully", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "service": { "description": "Service name for the log entry", "type": "string" }, "level": { "description": "Log level", "type": "string", "enum": ["debug", "info", "error", "warn"] }, "message": { "description": "Log message", "type": "string" }, "extra": { "description": "Additional metadata for the log entry", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["service", "level", "message"] } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.app.log({\n ...\n})" } ] } }, "/agent": { "get": { "operationId": "app.agents", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "List agents", "description": "Get a list of all available AI agents in the OpenCode system.", "responses": { "200": { "description": "List of agents", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Agent" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.app.agents({\n ...\n})" } ] } }, "/skill": { "get": { "operationId": "app.skills", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "List skills", "description": "Get a list of all available skills in the OpenCode system.", "responses": { "200": { "description": "List of skills", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "location": { "type": "string" } }, "required": ["name", "description", "location"] } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.app.skills({\n ...\n})" } ] } }, "/lsp": { "get": { "operationId": "lsp.status", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Get LSP status", "description": "Get LSP server status", "responses": { "200": { "description": "LSP server status", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LSPStatus" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.lsp.status({\n ...\n})" } ] } }, "/formatter": { "get": { "operationId": "formatter.status", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Get formatter status", "description": "Get formatter status", "responses": { "200": { "description": "Formatter status", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FormatterStatus" } } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.formatter.status({\n ...\n})" } ] } }, "/auth/{providerID}": { "put": { "operationId": "auth.set", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } }, { "in": "path", "name": "providerID", "schema": { "type": "string" }, "required": true } ], "summary": "Set auth credentials", "description": "Set authentication credentials", "responses": { "200": { "description": "Successfully set authentication credentials", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Auth" } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.auth.set({\n ...\n})" } ] } }, "/event": { "get": { "operationId": "event.subscribe", "parameters": [ { "in": "query", "name": "directory", "schema": { "type": "string" } } ], "summary": "Subscribe to events", "description": "Get events", "responses": { "200": { "description": "Event stream", "content": { "text/event-stream": { "schema": { "$ref": "#/components/schemas/Event" } } } } }, "x-codeSamples": [ { "lang": "js", "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.event.subscribe({\n ...\n})" } ] } } }, "components": { "schemas": { "Event.installation.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "installation.updated" }, "properties": { "type": "object", "properties": { "version": { "type": "string" } }, "required": ["version"] } }, "required": ["type", "properties"] }, "Event.installation.update-available": { "type": "object", "properties": { "type": { "type": "string", "const": "installation.update-available" }, "properties": { "type": "object", "properties": { "version": { "type": "string" } }, "required": ["version"] } }, "required": ["type", "properties"] }, "Project": { "type": "object", "properties": { "id": { "type": "string" }, "worktree": { "type": "string" }, "vcs": { "type": "string", "const": "git" }, "name": { "type": "string" }, "icon": { "type": "object", "properties": { "url": { "type": "string" }, "color": { "type": "string" } } }, "time": { "type": "object", "properties": { "created": { "type": "number" }, "updated": { "type": "number" }, "initialized": { "type": "number" } }, "required": ["created", "updated"] }, "sandboxes": { "type": "array", "items": { "type": "string" } } }, "required": ["id", "worktree", "time", "sandboxes"] }, "Event.project.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "project.updated" }, "properties": { "$ref": "#/components/schemas/Project" } }, "required": ["type", "properties"] }, "Event.server.instance.disposed": { "type": "object", "properties": { "type": { "type": "string", "const": "server.instance.disposed" }, "properties": { "type": "object", "properties": { "directory": { "type": "string" } }, "required": ["directory"] } }, "required": ["type", "properties"] }, "Event.lsp.client.diagnostics": { "type": "object", "properties": { "type": { "type": "string", "const": "lsp.client.diagnostics" }, "properties": { "type": "object", "properties": { "serverID": { "type": "string" }, "path": { "type": "string" } }, "required": ["serverID", "path"] } }, "required": ["type", "properties"] }, "Event.lsp.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "lsp.updated" }, "properties": { "type": "object", "properties": {} } }, "required": ["type", "properties"] }, "Event.file.edited": { "type": "object", "properties": { "type": { "type": "string", "const": "file.edited" }, "properties": { "type": "object", "properties": { "file": { "type": "string" } }, "required": ["file"] } }, "required": ["type", "properties"] }, "FileDiff": { "type": "object", "properties": { "file": { "type": "string" }, "before": { "type": "string" }, "after": { "type": "string" }, "additions": { "type": "number" }, "deletions": { "type": "number" } }, "required": ["file", "before", "after", "additions", "deletions"] }, "UserMessage": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "role": { "type": "string", "const": "user" }, "time": { "type": "object", "properties": { "created": { "type": "number" } }, "required": ["created"] }, "summary": { "type": "object", "properties": { "title": { "type": "string" }, "body": { "type": "string" }, "diffs": { "type": "array", "items": { "$ref": "#/components/schemas/FileDiff" } } }, "required": ["diffs"] }, "agent": { "type": "string" }, "model": { "type": "object", "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, "required": ["providerID", "modelID"] }, "system": { "type": "string" }, "tools": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "boolean" } }, "variant": { "type": "string" } }, "required": ["id", "sessionID", "role", "time", "agent", "model"] }, "ProviderAuthError": { "type": "object", "properties": { "name": { "type": "string", "const": "ProviderAuthError" }, "data": { "type": "object", "properties": { "providerID": { "type": "string" }, "message": { "type": "string" } }, "required": ["providerID", "message"] } }, "required": ["name", "data"] }, "UnknownError": { "type": "object", "properties": { "name": { "type": "string", "const": "UnknownError" }, "data": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"] } }, "required": ["name", "data"] }, "MessageOutputLengthError": { "type": "object", "properties": { "name": { "type": "string", "const": "MessageOutputLengthError" }, "data": { "type": "object", "properties": {} } }, "required": ["name", "data"] }, "MessageAbortedError": { "type": "object", "properties": { "name": { "type": "string", "const": "MessageAbortedError" }, "data": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"] } }, "required": ["name", "data"] }, "APIError": { "type": "object", "properties": { "name": { "type": "string", "const": "APIError" }, "data": { "type": "object", "properties": { "message": { "type": "string" }, "statusCode": { "type": "number" }, "isRetryable": { "type": "boolean" }, "responseHeaders": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "responseBody": { "type": "string" }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } } }, "required": ["message", "isRetryable"] } }, "required": ["name", "data"] }, "AssistantMessage": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "role": { "type": "string", "const": "assistant" }, "time": { "type": "object", "properties": { "created": { "type": "number" }, "completed": { "type": "number" } }, "required": ["created"] }, "error": { "anyOf": [ { "$ref": "#/components/schemas/ProviderAuthError" }, { "$ref": "#/components/schemas/UnknownError" }, { "$ref": "#/components/schemas/MessageOutputLengthError" }, { "$ref": "#/components/schemas/MessageAbortedError" }, { "$ref": "#/components/schemas/APIError" } ] }, "parentID": { "type": "string" }, "modelID": { "type": "string" }, "providerID": { "type": "string" }, "mode": { "type": "string" }, "agent": { "type": "string" }, "path": { "type": "object", "properties": { "cwd": { "type": "string" }, "root": { "type": "string" } }, "required": ["cwd", "root"] }, "summary": { "type": "boolean" }, "cost": { "type": "number" }, "tokens": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "reasoning": { "type": "number" }, "cache": { "type": "object", "properties": { "read": { "type": "number" }, "write": { "type": "number" } }, "required": ["read", "write"] } }, "required": ["input", "output", "reasoning", "cache"] }, "finish": { "type": "string" } }, "required": [ "id", "sessionID", "role", "time", "parentID", "modelID", "providerID", "mode", "agent", "path", "cost", "tokens" ] }, "Message": { "anyOf": [ { "$ref": "#/components/schemas/UserMessage" }, { "$ref": "#/components/schemas/AssistantMessage" } ] }, "Event.message.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "message.updated" }, "properties": { "type": "object", "properties": { "info": { "$ref": "#/components/schemas/Message" } }, "required": ["info"] } }, "required": ["type", "properties"] }, "Event.message.removed": { "type": "object", "properties": { "type": { "type": "string", "const": "message.removed" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "messageID": { "type": "string" } }, "required": ["sessionID", "messageID"] } }, "required": ["type", "properties"] }, "TextPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "text" }, "text": { "type": "string" }, "synthetic": { "type": "boolean" }, "ignored": { "type": "boolean" }, "time": { "type": "object", "properties": { "start": { "type": "number" }, "end": { "type": "number" } }, "required": ["start"] }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["id", "sessionID", "messageID", "type", "text"] }, "ReasoningPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "reasoning" }, "text": { "type": "string" }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "time": { "type": "object", "properties": { "start": { "type": "number" }, "end": { "type": "number" } }, "required": ["start"] } }, "required": ["id", "sessionID", "messageID", "type", "text", "time"] }, "FilePartSourceText": { "type": "object", "properties": { "value": { "type": "string" }, "start": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "end": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } }, "required": ["value", "start", "end"] }, "FileSource": { "type": "object", "properties": { "text": { "$ref": "#/components/schemas/FilePartSourceText" }, "type": { "type": "string", "const": "file" }, "path": { "type": "string" } }, "required": ["text", "type", "path"] }, "Range": { "type": "object", "properties": { "start": { "type": "object", "properties": { "line": { "type": "number" }, "character": { "type": "number" } }, "required": ["line", "character"] }, "end": { "type": "object", "properties": { "line": { "type": "number" }, "character": { "type": "number" } }, "required": ["line", "character"] } }, "required": ["start", "end"] }, "SymbolSource": { "type": "object", "properties": { "text": { "$ref": "#/components/schemas/FilePartSourceText" }, "type": { "type": "string", "const": "symbol" }, "path": { "type": "string" }, "range": { "$ref": "#/components/schemas/Range" }, "name": { "type": "string" }, "kind": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } }, "required": ["text", "type", "path", "range", "name", "kind"] }, "ResourceSource": { "type": "object", "properties": { "text": { "$ref": "#/components/schemas/FilePartSourceText" }, "type": { "type": "string", "const": "resource" }, "clientName": { "type": "string" }, "uri": { "type": "string" } }, "required": ["text", "type", "clientName", "uri"] }, "FilePartSource": { "anyOf": [ { "$ref": "#/components/schemas/FileSource" }, { "$ref": "#/components/schemas/SymbolSource" }, { "$ref": "#/components/schemas/ResourceSource" } ] }, "FilePart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "file" }, "mime": { "type": "string" }, "filename": { "type": "string" }, "url": { "type": "string" }, "source": { "$ref": "#/components/schemas/FilePartSource" } }, "required": ["id", "sessionID", "messageID", "type", "mime", "url"] }, "ToolStatePending": { "type": "object", "properties": { "status": { "type": "string", "const": "pending" }, "input": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "raw": { "type": "string" } }, "required": ["status", "input", "raw"] }, "ToolStateRunning": { "type": "object", "properties": { "status": { "type": "string", "const": "running" }, "input": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "title": { "type": "string" }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "time": { "type": "object", "properties": { "start": { "type": "number" } }, "required": ["start"] } }, "required": ["status", "input", "time"] }, "ToolStateCompleted": { "type": "object", "properties": { "status": { "type": "string", "const": "completed" }, "input": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "output": { "type": "string" }, "title": { "type": "string" }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "time": { "type": "object", "properties": { "start": { "type": "number" }, "end": { "type": "number" }, "compacted": { "type": "number" } }, "required": ["start", "end"] }, "attachments": { "type": "array", "items": { "$ref": "#/components/schemas/FilePart" } } }, "required": ["status", "input", "output", "title", "metadata", "time"] }, "ToolStateError": { "type": "object", "properties": { "status": { "type": "string", "const": "error" }, "input": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "error": { "type": "string" }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "time": { "type": "object", "properties": { "start": { "type": "number" }, "end": { "type": "number" } }, "required": ["start", "end"] } }, "required": ["status", "input", "error", "time"] }, "ToolState": { "anyOf": [ { "$ref": "#/components/schemas/ToolStatePending" }, { "$ref": "#/components/schemas/ToolStateRunning" }, { "$ref": "#/components/schemas/ToolStateCompleted" }, { "$ref": "#/components/schemas/ToolStateError" } ] }, "ToolPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "tool" }, "callID": { "type": "string" }, "tool": { "type": "string" }, "state": { "$ref": "#/components/schemas/ToolState" }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["id", "sessionID", "messageID", "type", "callID", "tool", "state"] }, "StepStartPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "step-start" }, "snapshot": { "type": "string" } }, "required": ["id", "sessionID", "messageID", "type"] }, "StepFinishPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "step-finish" }, "reason": { "type": "string" }, "snapshot": { "type": "string" }, "cost": { "type": "number" }, "tokens": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "reasoning": { "type": "number" }, "cache": { "type": "object", "properties": { "read": { "type": "number" }, "write": { "type": "number" } }, "required": ["read", "write"] } }, "required": ["input", "output", "reasoning", "cache"] } }, "required": ["id", "sessionID", "messageID", "type", "reason", "cost", "tokens"] }, "SnapshotPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "snapshot" }, "snapshot": { "type": "string" } }, "required": ["id", "sessionID", "messageID", "type", "snapshot"] }, "PatchPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "patch" }, "hash": { "type": "string" }, "files": { "type": "array", "items": { "type": "string" } } }, "required": ["id", "sessionID", "messageID", "type", "hash", "files"] }, "AgentPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "agent" }, "name": { "type": "string" }, "source": { "type": "object", "properties": { "value": { "type": "string" }, "start": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "end": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } }, "required": ["value", "start", "end"] } }, "required": ["id", "sessionID", "messageID", "type", "name"] }, "RetryPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "retry" }, "attempt": { "type": "number" }, "error": { "$ref": "#/components/schemas/APIError" }, "time": { "type": "object", "properties": { "created": { "type": "number" } }, "required": ["created"] } }, "required": ["id", "sessionID", "messageID", "type", "attempt", "error", "time"] }, "CompactionPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "compaction" }, "auto": { "type": "boolean" } }, "required": ["id", "sessionID", "messageID", "type", "auto"] }, "Part": { "anyOf": [ { "$ref": "#/components/schemas/TextPart" }, { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "subtask" }, "prompt": { "type": "string" }, "description": { "type": "string" }, "agent": { "type": "string" }, "model": { "type": "object", "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, "required": ["providerID", "modelID"] }, "command": { "type": "string" } }, "required": ["id", "sessionID", "messageID", "type", "prompt", "description", "agent"] }, { "$ref": "#/components/schemas/ReasoningPart" }, { "$ref": "#/components/schemas/FilePart" }, { "$ref": "#/components/schemas/ToolPart" }, { "$ref": "#/components/schemas/StepStartPart" }, { "$ref": "#/components/schemas/StepFinishPart" }, { "$ref": "#/components/schemas/SnapshotPart" }, { "$ref": "#/components/schemas/PatchPart" }, { "$ref": "#/components/schemas/AgentPart" }, { "$ref": "#/components/schemas/RetryPart" }, { "$ref": "#/components/schemas/CompactionPart" } ] }, "Event.message.part.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "message.part.updated" }, "properties": { "type": "object", "properties": { "part": { "$ref": "#/components/schemas/Part" }, "delta": { "type": "string" } }, "required": ["part"] } }, "required": ["type", "properties"] }, "Event.message.part.removed": { "type": "object", "properties": { "type": { "type": "string", "const": "message.part.removed" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "partID": { "type": "string" } }, "required": ["sessionID", "messageID", "partID"] } }, "required": ["type", "properties"] }, "PermissionRequest": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^per.*" }, "sessionID": { "type": "string", "pattern": "^ses.*" }, "permission": { "type": "string" }, "patterns": { "type": "array", "items": { "type": "string" } }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "always": { "type": "array", "items": { "type": "string" } }, "tool": { "type": "object", "properties": { "messageID": { "type": "string" }, "callID": { "type": "string" } }, "required": ["messageID", "callID"] } }, "required": ["id", "sessionID", "permission", "patterns", "metadata", "always"] }, "Event.permission.asked": { "type": "object", "properties": { "type": { "type": "string", "const": "permission.asked" }, "properties": { "$ref": "#/components/schemas/PermissionRequest" } }, "required": ["type", "properties"] }, "Event.permission.replied": { "type": "object", "properties": { "type": { "type": "string", "const": "permission.replied" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "requestID": { "type": "string" }, "reply": { "type": "string", "enum": ["once", "always", "reject"] } }, "required": ["sessionID", "requestID", "reply"] } }, "required": ["type", "properties"] }, "SessionStatus": { "anyOf": [ { "type": "object", "properties": { "type": { "type": "string", "const": "idle" } }, "required": ["type"] }, { "type": "object", "properties": { "type": { "type": "string", "const": "retry" }, "attempt": { "type": "number" }, "message": { "type": "string" }, "next": { "type": "number" } }, "required": ["type", "attempt", "message", "next"] }, { "type": "object", "properties": { "type": { "type": "string", "const": "busy" } }, "required": ["type"] } ] }, "Event.session.status": { "type": "object", "properties": { "type": { "type": "string", "const": "session.status" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "status": { "$ref": "#/components/schemas/SessionStatus" } }, "required": ["sessionID", "status"] } }, "required": ["type", "properties"] }, "Event.session.idle": { "type": "object", "properties": { "type": { "type": "string", "const": "session.idle" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" } }, "required": ["sessionID"] } }, "required": ["type", "properties"] }, "QuestionOption": { "type": "object", "properties": { "label": { "description": "Display text (1-5 words, concise)", "type": "string", "maxLength": 30 }, "description": { "description": "Explanation of choice", "type": "string" } }, "required": ["label", "description"] }, "QuestionInfo": { "type": "object", "properties": { "question": { "description": "Complete question", "type": "string" }, "header": { "description": "Very short label (max 30 chars)", "type": "string", "maxLength": 30 }, "options": { "description": "Available choices", "type": "array", "items": { "$ref": "#/components/schemas/QuestionOption" } }, "multiple": { "description": "Allow selecting multiple choices", "type": "boolean" }, "custom": { "description": "Allow typing a custom answer (default: true)", "type": "boolean" } }, "required": ["question", "header", "options"] }, "QuestionRequest": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^que.*" }, "sessionID": { "type": "string", "pattern": "^ses.*" }, "questions": { "description": "Questions to ask", "type": "array", "items": { "$ref": "#/components/schemas/QuestionInfo" } }, "tool": { "type": "object", "properties": { "messageID": { "type": "string" }, "callID": { "type": "string" } }, "required": ["messageID", "callID"] } }, "required": ["id", "sessionID", "questions"] }, "Event.question.asked": { "type": "object", "properties": { "type": { "type": "string", "const": "question.asked" }, "properties": { "$ref": "#/components/schemas/QuestionRequest" } }, "required": ["type", "properties"] }, "QuestionAnswer": { "type": "array", "items": { "type": "string" } }, "Event.question.replied": { "type": "object", "properties": { "type": { "type": "string", "const": "question.replied" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "requestID": { "type": "string" }, "answers": { "type": "array", "items": { "$ref": "#/components/schemas/QuestionAnswer" } } }, "required": ["sessionID", "requestID", "answers"] } }, "required": ["type", "properties"] }, "Event.question.rejected": { "type": "object", "properties": { "type": { "type": "string", "const": "question.rejected" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "requestID": { "type": "string" } }, "required": ["sessionID", "requestID"] } }, "required": ["type", "properties"] }, "Event.session.compacted": { "type": "object", "properties": { "type": { "type": "string", "const": "session.compacted" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" } }, "required": ["sessionID"] } }, "required": ["type", "properties"] }, "Todo": { "type": "object", "properties": { "content": { "description": "Brief description of the task", "type": "string" }, "status": { "description": "Current status of the task: pending, in_progress, completed, cancelled", "type": "string" }, "priority": { "description": "Priority level of the task: high, medium, low", "type": "string" }, "id": { "description": "Unique identifier for the todo item", "type": "string" } }, "required": ["content", "status", "priority", "id"] }, "Event.todo.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "todo.updated" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "todos": { "type": "array", "items": { "$ref": "#/components/schemas/Todo" } } }, "required": ["sessionID", "todos"] } }, "required": ["type", "properties"] }, "Event.file.watcher.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "file.watcher.updated" }, "properties": { "type": "object", "properties": { "file": { "type": "string" }, "event": { "anyOf": [ { "type": "string", "const": "add" }, { "type": "string", "const": "change" }, { "type": "string", "const": "unlink" } ] } }, "required": ["file", "event"] } }, "required": ["type", "properties"] }, "Event.tui.prompt.append": { "type": "object", "properties": { "type": { "type": "string", "const": "tui.prompt.append" }, "properties": { "type": "object", "properties": { "text": { "type": "string" } }, "required": ["text"] } }, "required": ["type", "properties"] }, "Event.tui.command.execute": { "type": "object", "properties": { "type": { "type": "string", "const": "tui.command.execute" }, "properties": { "type": "object", "properties": { "command": { "anyOf": [ { "type": "string", "enum": [ "session.list", "session.new", "session.share", "session.interrupt", "session.compact", "session.page.up", "session.page.down", "session.line.up", "session.line.down", "session.half.page.up", "session.half.page.down", "session.first", "session.last", "prompt.clear", "prompt.submit", "agent.cycle" ] }, { "type": "string" } ] } }, "required": ["command"] } }, "required": ["type", "properties"] }, "Event.tui.toast.show": { "type": "object", "properties": { "type": { "type": "string", "const": "tui.toast.show" }, "properties": { "type": "object", "properties": { "title": { "type": "string" }, "message": { "type": "string" }, "variant": { "type": "string", "enum": ["info", "success", "warning", "error"] }, "duration": { "description": "Duration in milliseconds", "default": 5000, "type": "number" } }, "required": ["message", "variant"] } }, "required": ["type", "properties"] }, "Event.tui.session.select": { "type": "object", "properties": { "type": { "type": "string", "const": "tui.session.select" }, "properties": { "type": "object", "properties": { "sessionID": { "description": "Session ID to navigate to", "type": "string", "pattern": "^ses" } }, "required": ["sessionID"] } }, "required": ["type", "properties"] }, "Event.mcp.tools.changed": { "type": "object", "properties": { "type": { "type": "string", "const": "mcp.tools.changed" }, "properties": { "type": "object", "properties": { "server": { "type": "string" } }, "required": ["server"] } }, "required": ["type", "properties"] }, "Event.mcp.browser.open.failed": { "type": "object", "properties": { "type": { "type": "string", "const": "mcp.browser.open.failed" }, "properties": { "type": "object", "properties": { "mcpName": { "type": "string" }, "url": { "type": "string" } }, "required": ["mcpName", "url"] } }, "required": ["type", "properties"] }, "Event.command.executed": { "type": "object", "properties": { "type": { "type": "string", "const": "command.executed" }, "properties": { "type": "object", "properties": { "name": { "type": "string" }, "sessionID": { "type": "string", "pattern": "^ses.*" }, "arguments": { "type": "string" }, "messageID": { "type": "string", "pattern": "^msg.*" } }, "required": ["name", "sessionID", "arguments", "messageID"] } }, "required": ["type", "properties"] }, "PermissionAction": { "type": "string", "enum": ["allow", "deny", "ask"] }, "PermissionRule": { "type": "object", "properties": { "permission": { "type": "string" }, "pattern": { "type": "string" }, "action": { "$ref": "#/components/schemas/PermissionAction" } }, "required": ["permission", "pattern", "action"] }, "PermissionRuleset": { "type": "array", "items": { "$ref": "#/components/schemas/PermissionRule" } }, "Session": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^ses.*" }, "slug": { "type": "string" }, "projectID": { "type": "string" }, "directory": { "type": "string" }, "parentID": { "type": "string", "pattern": "^ses.*" }, "summary": { "type": "object", "properties": { "additions": { "type": "number" }, "deletions": { "type": "number" }, "files": { "type": "number" }, "diffs": { "type": "array", "items": { "$ref": "#/components/schemas/FileDiff" } } }, "required": ["additions", "deletions", "files"] }, "share": { "type": "object", "properties": { "url": { "type": "string" } }, "required": ["url"] }, "title": { "type": "string" }, "version": { "type": "string" }, "time": { "type": "object", "properties": { "created": { "type": "number" }, "updated": { "type": "number" }, "compacting": { "type": "number" }, "archived": { "type": "number" } }, "required": ["created", "updated"] }, "permission": { "$ref": "#/components/schemas/PermissionRuleset" }, "revert": { "type": "object", "properties": { "messageID": { "type": "string" }, "partID": { "type": "string" }, "snapshot": { "type": "string" }, "diff": { "type": "string" } }, "required": ["messageID"] } }, "required": ["id", "slug", "projectID", "directory", "title", "version", "time"] }, "Event.session.created": { "type": "object", "properties": { "type": { "type": "string", "const": "session.created" }, "properties": { "type": "object", "properties": { "info": { "$ref": "#/components/schemas/Session" } }, "required": ["info"] } }, "required": ["type", "properties"] }, "Event.session.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "session.updated" }, "properties": { "type": "object", "properties": { "info": { "$ref": "#/components/schemas/Session" } }, "required": ["info"] } }, "required": ["type", "properties"] }, "Event.session.deleted": { "type": "object", "properties": { "type": { "type": "string", "const": "session.deleted" }, "properties": { "type": "object", "properties": { "info": { "$ref": "#/components/schemas/Session" } }, "required": ["info"] } }, "required": ["type", "properties"] }, "Event.session.diff": { "type": "object", "properties": { "type": { "type": "string", "const": "session.diff" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "diff": { "type": "array", "items": { "$ref": "#/components/schemas/FileDiff" } } }, "required": ["sessionID", "diff"] } }, "required": ["type", "properties"] }, "Event.session.error": { "type": "object", "properties": { "type": { "type": "string", "const": "session.error" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "error": { "anyOf": [ { "$ref": "#/components/schemas/ProviderAuthError" }, { "$ref": "#/components/schemas/UnknownError" }, { "$ref": "#/components/schemas/MessageOutputLengthError" }, { "$ref": "#/components/schemas/MessageAbortedError" }, { "$ref": "#/components/schemas/APIError" } ] } } } }, "required": ["type", "properties"] }, "Event.vcs.branch.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "vcs.branch.updated" }, "properties": { "type": "object", "properties": { "branch": { "type": "string" } } } }, "required": ["type", "properties"] }, "Pty": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^pty.*" }, "title": { "type": "string" }, "command": { "type": "string" }, "args": { "type": "array", "items": { "type": "string" } }, "cwd": { "type": "string" }, "status": { "type": "string", "enum": ["running", "exited"] }, "pid": { "type": "number" } }, "required": ["id", "title", "command", "args", "cwd", "status", "pid"] }, "Event.pty.created": { "type": "object", "properties": { "type": { "type": "string", "const": "pty.created" }, "properties": { "type": "object", "properties": { "info": { "$ref": "#/components/schemas/Pty" } }, "required": ["info"] } }, "required": ["type", "properties"] }, "Event.pty.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "pty.updated" }, "properties": { "type": "object", "properties": { "info": { "$ref": "#/components/schemas/Pty" } }, "required": ["info"] } }, "required": ["type", "properties"] }, "Event.pty.exited": { "type": "object", "properties": { "type": { "type": "string", "const": "pty.exited" }, "properties": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^pty.*" }, "exitCode": { "type": "number" } }, "required": ["id", "exitCode"] } }, "required": ["type", "properties"] }, "Event.pty.deleted": { "type": "object", "properties": { "type": { "type": "string", "const": "pty.deleted" }, "properties": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^pty.*" } }, "required": ["id"] } }, "required": ["type", "properties"] }, "Event.global.disposed": { "type": "object", "properties": { "type": { "type": "string", "const": "global.disposed" }, "properties": { "type": "object", "properties": {} } }, "required": ["type", "properties"] }, "Event.server.connected": { "type": "object", "properties": { "type": { "type": "string", "const": "server.connected" }, "properties": { "type": "object", "properties": {} } }, "required": ["type", "properties"] }, "Event": { "anyOf": [ { "$ref": "#/components/schemas/Event.installation.updated" }, { "$ref": "#/components/schemas/Event.installation.update-available" }, { "$ref": "#/components/schemas/Event.project.updated" }, { "$ref": "#/components/schemas/Event.server.instance.disposed" }, { "$ref": "#/components/schemas/Event.lsp.client.diagnostics" }, { "$ref": "#/components/schemas/Event.lsp.updated" }, { "$ref": "#/components/schemas/Event.file.edited" }, { "$ref": "#/components/schemas/Event.message.updated" }, { "$ref": "#/components/schemas/Event.message.removed" }, { "$ref": "#/components/schemas/Event.message.part.updated" }, { "$ref": "#/components/schemas/Event.message.part.removed" }, { "$ref": "#/components/schemas/Event.permission.asked" }, { "$ref": "#/components/schemas/Event.permission.replied" }, { "$ref": "#/components/schemas/Event.session.status" }, { "$ref": "#/components/schemas/Event.session.idle" }, { "$ref": "#/components/schemas/Event.question.asked" }, { "$ref": "#/components/schemas/Event.question.replied" }, { "$ref": "#/components/schemas/Event.question.rejected" }, { "$ref": "#/components/schemas/Event.session.compacted" }, { "$ref": "#/components/schemas/Event.todo.updated" }, { "$ref": "#/components/schemas/Event.file.watcher.updated" }, { "$ref": "#/components/schemas/Event.tui.prompt.append" }, { "$ref": "#/components/schemas/Event.tui.command.execute" }, { "$ref": "#/components/schemas/Event.tui.toast.show" }, { "$ref": "#/components/schemas/Event.tui.session.select" }, { "$ref": "#/components/schemas/Event.mcp.tools.changed" }, { "$ref": "#/components/schemas/Event.mcp.browser.open.failed" }, { "$ref": "#/components/schemas/Event.command.executed" }, { "$ref": "#/components/schemas/Event.session.created" }, { "$ref": "#/components/schemas/Event.session.updated" }, { "$ref": "#/components/schemas/Event.session.deleted" }, { "$ref": "#/components/schemas/Event.session.diff" }, { "$ref": "#/components/schemas/Event.session.error" }, { "$ref": "#/components/schemas/Event.vcs.branch.updated" }, { "$ref": "#/components/schemas/Event.pty.created" }, { "$ref": "#/components/schemas/Event.pty.updated" }, { "$ref": "#/components/schemas/Event.pty.exited" }, { "$ref": "#/components/schemas/Event.pty.deleted" }, { "$ref": "#/components/schemas/Event.global.disposed" }, { "$ref": "#/components/schemas/Event.server.connected" } ] }, "GlobalEvent": { "type": "object", "properties": { "directory": { "type": "string" }, "payload": { "$ref": "#/components/schemas/Event" } }, "required": ["directory", "payload"] }, "BadRequestError": { "type": "object", "properties": { "data": {}, "errors": { "type": "array", "items": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "success": { "type": "boolean", "const": false } }, "required": ["data", "errors", "success"] }, "NotFoundError": { "type": "object", "properties": { "name": { "type": "string", "const": "NotFoundError" }, "data": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"] } }, "required": ["name", "data"] }, "KeybindsConfig": { "description": "Custom keybind configurations", "type": "object", "properties": { "leader": { "description": "Leader key for keybind combinations", "default": "ctrl+x", "type": "string" }, "app_exit": { "description": "Exit the application", "default": "ctrl+c,ctrl+d,q", "type": "string" }, "editor_open": { "description": "Open external editor", "default": "e", "type": "string" }, "theme_list": { "description": "List available themes", "default": "t", "type": "string" }, "sidebar_toggle": { "description": "Toggle sidebar", "default": "b", "type": "string" }, "scrollbar_toggle": { "description": "Toggle session scrollbar", "default": "none", "type": "string" }, "username_toggle": { "description": "Toggle username visibility", "default": "none", "type": "string" }, "status_view": { "description": "View status", "default": "s", "type": "string" }, "session_export": { "description": "Export session to editor", "default": "x", "type": "string" }, "session_new": { "description": "Create a new session", "default": "n", "type": "string" }, "session_list": { "description": "List all sessions", "default": "l", "type": "string" }, "session_timeline": { "description": "Show session timeline", "default": "g", "type": "string" }, "session_fork": { "description": "Fork session from message", "default": "none", "type": "string" }, "session_rename": { "description": "Rename session", "default": "ctrl+r", "type": "string" }, "session_delete": { "description": "Delete session", "default": "ctrl+d", "type": "string" }, "stash_delete": { "description": "Delete stash entry", "default": "ctrl+d", "type": "string" }, "model_provider_list": { "description": "Open provider list from model dialog", "default": "ctrl+a", "type": "string" }, "model_favorite_toggle": { "description": "Toggle model favorite status", "default": "ctrl+f", "type": "string" }, "session_share": { "description": "Share current session", "default": "none", "type": "string" }, "session_unshare": { "description": "Unshare current session", "default": "none", "type": "string" }, "session_interrupt": { "description": "Interrupt current session", "default": "escape", "type": "string" }, "session_compact": { "description": "Compact the session", "default": "c", "type": "string" }, "messages_page_up": { "description": "Scroll messages up by one page", "default": "pageup,ctrl+alt+b", "type": "string" }, "messages_page_down": { "description": "Scroll messages down by one page", "default": "pagedown,ctrl+alt+f", "type": "string" }, "messages_line_up": { "description": "Scroll messages up by one line", "default": "ctrl+alt+y", "type": "string" }, "messages_line_down": { "description": "Scroll messages down by one line", "default": "ctrl+alt+e", "type": "string" }, "messages_half_page_up": { "description": "Scroll messages up by half page", "default": "ctrl+alt+u", "type": "string" }, "messages_half_page_down": { "description": "Scroll messages down by half page", "default": "ctrl+alt+d", "type": "string" }, "messages_first": { "description": "Navigate to first message", "default": "ctrl+g,home", "type": "string" }, "messages_last": { "description": "Navigate to last message", "default": "ctrl+alt+g,end", "type": "string" }, "messages_next": { "description": "Navigate to next message", "default": "none", "type": "string" }, "messages_previous": { "description": "Navigate to previous message", "default": "none", "type": "string" }, "messages_last_user": { "description": "Navigate to last user message", "default": "none", "type": "string" }, "messages_copy": { "description": "Copy message", "default": "y", "type": "string" }, "messages_undo": { "description": "Undo message", "default": "u", "type": "string" }, "messages_redo": { "description": "Redo message", "default": "r", "type": "string" }, "messages_toggle_conceal": { "description": "Toggle code block concealment in messages", "default": "h", "type": "string" }, "tool_details": { "description": "Toggle tool details visibility", "default": "none", "type": "string" }, "model_list": { "description": "List available models", "default": "m", "type": "string" }, "model_cycle_recent": { "description": "Next recently used model", "default": "f2", "type": "string" }, "model_cycle_recent_reverse": { "description": "Previous recently used model", "default": "shift+f2", "type": "string" }, "model_cycle_favorite": { "description": "Next favorite model", "default": "none", "type": "string" }, "model_cycle_favorite_reverse": { "description": "Previous favorite model", "default": "none", "type": "string" }, "command_list": { "description": "List available commands", "default": "ctrl+p", "type": "string" }, "agent_list": { "description": "List agents", "default": "a", "type": "string" }, "agent_cycle": { "description": "Next agent", "default": "tab", "type": "string" }, "agent_cycle_reverse": { "description": "Previous agent", "default": "shift+tab", "type": "string" }, "variant_cycle": { "description": "Cycle model variants", "default": "ctrl+t", "type": "string" }, "input_clear": { "description": "Clear input field", "default": "ctrl+c", "type": "string" }, "input_paste": { "description": "Paste from clipboard", "default": "ctrl+v", "type": "string" }, "input_submit": { "description": "Submit input", "default": "return", "type": "string" }, "input_newline": { "description": "Insert newline in input", "default": "shift+return,ctrl+return,alt+return,ctrl+j", "type": "string" }, "input_move_left": { "description": "Move cursor left in input", "default": "left,ctrl+b", "type": "string" }, "input_move_right": { "description": "Move cursor right in input", "default": "right,ctrl+f", "type": "string" }, "input_move_up": { "description": "Move cursor up in input", "default": "up", "type": "string" }, "input_move_down": { "description": "Move cursor down in input", "default": "down", "type": "string" }, "input_select_left": { "description": "Select left in input", "default": "shift+left", "type": "string" }, "input_select_right": { "description": "Select right in input", "default": "shift+right", "type": "string" }, "input_select_up": { "description": "Select up in input", "default": "shift+up", "type": "string" }, "input_select_down": { "description": "Select down in input", "default": "shift+down", "type": "string" }, "input_line_home": { "description": "Move to start of line in input", "default": "ctrl+a", "type": "string" }, "input_line_end": { "description": "Move to end of line in input", "default": "ctrl+e", "type": "string" }, "input_select_line_home": { "description": "Select to start of line in input", "default": "ctrl+shift+a", "type": "string" }, "input_select_line_end": { "description": "Select to end of line in input", "default": "ctrl+shift+e", "type": "string" }, "input_visual_line_home": { "description": "Move to start of visual line in input", "default": "alt+a", "type": "string" }, "input_visual_line_end": { "description": "Move to end of visual line in input", "default": "alt+e", "type": "string" }, "input_select_visual_line_home": { "description": "Select to start of visual line in input", "default": "alt+shift+a", "type": "string" }, "input_select_visual_line_end": { "description": "Select to end of visual line in input", "default": "alt+shift+e", "type": "string" }, "input_buffer_home": { "description": "Move to start of buffer in input", "default": "home", "type": "string" }, "input_buffer_end": { "description": "Move to end of buffer in input", "default": "end", "type": "string" }, "input_select_buffer_home": { "description": "Select to start of buffer in input", "default": "shift+home", "type": "string" }, "input_select_buffer_end": { "description": "Select to end of buffer in input", "default": "shift+end", "type": "string" }, "input_delete_line": { "description": "Delete line in input", "default": "ctrl+shift+d", "type": "string" }, "input_delete_to_line_end": { "description": "Delete to end of line in input", "default": "ctrl+k", "type": "string" }, "input_delete_to_line_start": { "description": "Delete to start of line in input", "default": "ctrl+u", "type": "string" }, "input_backspace": { "description": "Backspace in input", "default": "backspace,shift+backspace", "type": "string" }, "input_delete": { "description": "Delete character in input", "default": "ctrl+d,delete,shift+delete", "type": "string" }, "input_undo": { "description": "Undo in input", "default": "ctrl+-,super+z", "type": "string" }, "input_redo": { "description": "Redo in input", "default": "ctrl+.,super+shift+z", "type": "string" }, "input_word_forward": { "description": "Move word forward in input", "default": "alt+f,alt+right,ctrl+right", "type": "string" }, "input_word_backward": { "description": "Move word backward in input", "default": "alt+b,alt+left,ctrl+left", "type": "string" }, "input_select_word_forward": { "description": "Select word forward in input", "default": "alt+shift+f,alt+shift+right", "type": "string" }, "input_select_word_backward": { "description": "Select word backward in input", "default": "alt+shift+b,alt+shift+left", "type": "string" }, "input_delete_word_forward": { "description": "Delete word forward in input", "default": "alt+d,alt+delete,ctrl+delete", "type": "string" }, "input_delete_word_backward": { "description": "Delete word backward in input", "default": "ctrl+w,ctrl+backspace,alt+backspace", "type": "string" }, "history_previous": { "description": "Previous history item", "default": "up", "type": "string" }, "history_next": { "description": "Next history item", "default": "down", "type": "string" }, "session_child_cycle": { "description": "Next child session", "default": "right", "type": "string" }, "session_child_cycle_reverse": { "description": "Previous child session", "default": "left", "type": "string" }, "session_parent": { "description": "Go to parent session", "default": "up", "type": "string" }, "terminal_suspend": { "description": "Suspend terminal", "default": "ctrl+z", "type": "string" }, "terminal_title_toggle": { "description": "Toggle terminal title", "default": "none", "type": "string" }, "tips_toggle": { "description": "Toggle tips on home screen", "default": "h", "type": "string" } }, "additionalProperties": false }, "LogLevel": { "description": "Log level", "type": "string", "enum": ["DEBUG", "INFO", "WARN", "ERROR"] }, "ServerConfig": { "description": "Server configuration for opencode serve and web commands", "type": "object", "properties": { "port": { "description": "Port to listen on", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "hostname": { "description": "Hostname to listen on", "type": "string" }, "mdns": { "description": "Enable mDNS service discovery", "type": "boolean" }, "cors": { "description": "Additional domains to allow for CORS", "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "PermissionActionConfig": { "type": "string", "enum": ["ask", "allow", "deny"] }, "PermissionObjectConfig": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "$ref": "#/components/schemas/PermissionActionConfig" } }, "PermissionRuleConfig": { "anyOf": [ { "$ref": "#/components/schemas/PermissionActionConfig" }, { "$ref": "#/components/schemas/PermissionObjectConfig" } ] }, "PermissionConfig": { "anyOf": [ { "type": "object", "properties": { "__originalKeys": { "type": "array", "items": { "type": "string" } }, "read": { "$ref": "#/components/schemas/PermissionRuleConfig" }, "edit": { "$ref": "#/components/schemas/PermissionRuleConfig" }, "glob": { "$ref": "#/components/schemas/PermissionRuleConfig" }, "grep": { "$ref": "#/components/schemas/PermissionRuleConfig" }, "list": { "$ref": "#/components/schemas/PermissionRuleConfig" }, "bash": { "$ref": "#/components/schemas/PermissionRuleConfig" }, "task": { "$ref": "#/components/schemas/PermissionRuleConfig" }, "external_directory": { "$ref": "#/components/schemas/PermissionRuleConfig" }, "todowrite": { "$ref": "#/components/schemas/PermissionActionConfig" }, "todoread": { "$ref": "#/components/schemas/PermissionActionConfig" }, "question": { "$ref": "#/components/schemas/PermissionActionConfig" }, "webfetch": { "$ref": "#/components/schemas/PermissionActionConfig" }, "websearch": { "$ref": "#/components/schemas/PermissionActionConfig" }, "codesearch": { "$ref": "#/components/schemas/PermissionActionConfig" }, "lsp": { "$ref": "#/components/schemas/PermissionRuleConfig" }, "doom_loop": { "$ref": "#/components/schemas/PermissionActionConfig" } }, "additionalProperties": { "$ref": "#/components/schemas/PermissionRuleConfig" } }, { "$ref": "#/components/schemas/PermissionActionConfig" } ] }, "AgentConfig": { "type": "object", "properties": { "model": { "type": "string" }, "temperature": { "type": "number" }, "top_p": { "type": "number" }, "prompt": { "type": "string" }, "tools": { "description": "@deprecated Use 'permission' field instead", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "boolean" } }, "disable": { "type": "boolean" }, "description": { "description": "Description of when to use the agent", "type": "string" }, "mode": { "type": "string", "enum": ["subagent", "primary", "all"] }, "hidden": { "description": "Hide this subagent from the @ autocomplete menu (default: false, only applies to mode: subagent)", "type": "boolean" }, "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "color": { "description": "Hex color code for the agent (e.g., #FF5733)", "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" }, "steps": { "description": "Maximum number of agentic iterations before forcing text-only response", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "maxSteps": { "description": "@deprecated Use 'steps' field instead.", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "permission": { "$ref": "#/components/schemas/PermissionConfig" } }, "additionalProperties": {} }, "ProviderConfig": { "type": "object", "properties": { "api": { "type": "string" }, "name": { "type": "string" }, "env": { "type": "array", "items": { "type": "string" } }, "id": { "type": "string" }, "npm": { "type": "string" }, "models": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "family": { "type": "string" }, "release_date": { "type": "string" }, "attachment": { "type": "boolean" }, "reasoning": { "type": "boolean" }, "temperature": { "type": "boolean" }, "tool_call": { "type": "boolean" }, "interleaved": { "anyOf": [ { "type": "boolean", "const": true }, { "type": "object", "properties": { "field": { "type": "string", "enum": ["reasoning_content", "reasoning_details"] } }, "required": ["field"], "additionalProperties": false } ] }, "cost": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "cache_read": { "type": "number" }, "cache_write": { "type": "number" }, "context_over_200k": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "cache_read": { "type": "number" }, "cache_write": { "type": "number" } }, "required": ["input", "output"] } }, "required": ["input", "output"] }, "limit": { "type": "object", "properties": { "context": { "type": "number" }, "input": { "type": "number" }, "output": { "type": "number" } }, "required": ["context", "output"] }, "modalities": { "type": "object", "properties": { "input": { "type": "array", "items": { "type": "string", "enum": ["text", "audio", "image", "video", "pdf"] } }, "output": { "type": "array", "items": { "type": "string", "enum": ["text", "audio", "image", "video", "pdf"] } } }, "required": ["input", "output"] }, "experimental": { "type": "boolean" }, "status": { "type": "string", "enum": ["alpha", "beta", "deprecated"] }, "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "headers": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "provider": { "type": "object", "properties": { "npm": { "type": "string" } }, "required": ["npm"] }, "variants": { "description": "Variant-specific configuration", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object", "properties": { "disabled": { "description": "Disable this variant for the model", "type": "boolean" } }, "additionalProperties": {} } } } } }, "whitelist": { "type": "array", "items": { "type": "string" } }, "blacklist": { "type": "array", "items": { "type": "string" } }, "options": { "type": "object", "properties": { "apiKey": { "type": "string" }, "baseURL": { "type": "string" }, "enterpriseUrl": { "description": "GitHub Enterprise URL for copilot authentication", "type": "string" }, "setCacheKey": { "description": "Enable promptCacheKey for this provider (default false)", "type": "boolean" }, "timeout": { "description": "Timeout in milliseconds for requests to this provider. Default is 300000 (5 minutes). Set to false to disable timeout.", "anyOf": [ { "description": "Timeout in milliseconds for requests to this provider. Default is 300000 (5 minutes). Set to false to disable timeout.", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, { "description": "Disable timeout for this provider entirely.", "type": "boolean", "const": false } ] } }, "additionalProperties": {} } }, "additionalProperties": false }, "McpLocalConfig": { "type": "object", "properties": { "type": { "description": "Type of MCP server connection", "type": "string", "const": "local" }, "command": { "description": "Command and arguments to run the MCP server", "type": "array", "items": { "type": "string" } }, "environment": { "description": "Environment variables to set when running the MCP server", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "enabled": { "description": "Enable or disable the MCP server on startup", "type": "boolean" }, "timeout": { "description": "Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified.", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } }, "required": ["type", "command"], "additionalProperties": false }, "McpOAuthConfig": { "type": "object", "properties": { "clientId": { "description": "OAuth client ID. If not provided, dynamic client registration (RFC 7591) will be attempted.", "type": "string" }, "clientSecret": { "description": "OAuth client secret (if required by the authorization server)", "type": "string" }, "scope": { "description": "OAuth scopes to request during authorization", "type": "string" } }, "additionalProperties": false }, "McpRemoteConfig": { "type": "object", "properties": { "type": { "description": "Type of MCP server connection", "type": "string", "const": "remote" }, "url": { "description": "URL of the remote MCP server", "type": "string" }, "enabled": { "description": "Enable or disable the MCP server on startup", "type": "boolean" }, "headers": { "description": "Headers to send with the request", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "oauth": { "description": "OAuth authentication configuration for the MCP server. Set to false to disable OAuth auto-detection.", "anyOf": [ { "$ref": "#/components/schemas/McpOAuthConfig" }, { "type": "boolean", "const": false } ] }, "timeout": { "description": "Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified.", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } }, "required": ["type", "url"], "additionalProperties": false }, "LayoutConfig": { "description": "@deprecated Always uses stretch layout.", "type": "string", "enum": ["auto", "stretch"] }, "Config": { "type": "object", "properties": { "$schema": { "description": "JSON schema reference for configuration validation", "type": "string" }, "theme": { "description": "Theme name to use for the interface", "type": "string" }, "keybinds": { "$ref": "#/components/schemas/KeybindsConfig" }, "logLevel": { "$ref": "#/components/schemas/LogLevel" }, "tui": { "description": "TUI specific settings", "type": "object", "properties": { "scroll_speed": { "description": "TUI scroll speed", "type": "number", "minimum": 0.001 }, "scroll_acceleration": { "description": "Scroll acceleration settings", "type": "object", "properties": { "enabled": { "description": "Enable scroll acceleration", "type": "boolean" } }, "required": ["enabled"] }, "diff_style": { "description": "Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column", "type": "string", "enum": ["auto", "stacked"] } } }, "server": { "$ref": "#/components/schemas/ServerConfig" }, "command": { "description": "Command configuration, see https://opencode.ai/docs/commands", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object", "properties": { "template": { "type": "string" }, "description": { "type": "string" }, "agent": { "type": "string" }, "model": { "type": "string" }, "subtask": { "type": "boolean" } }, "required": ["template"] } }, "watcher": { "type": "object", "properties": { "ignore": { "type": "array", "items": { "type": "string" } } } }, "plugin": { "type": "array", "items": { "type": "string" } }, "snapshot": { "type": "boolean" }, "share": { "description": "Control sharing behavior:'manual' allows manual sharing via commands, 'auto' enables automatic sharing, 'disabled' disables all sharing", "type": "string", "enum": ["manual", "auto", "disabled"] }, "autoshare": { "description": "@deprecated Use 'share' field instead. Share newly created sessions automatically", "type": "boolean" }, "autoupdate": { "description": "Automatically update to the latest version. Set to true to auto-update, false to disable, or 'notify' to show update notifications", "anyOf": [ { "type": "boolean" }, { "type": "string", "const": "notify" } ] }, "disabled_providers": { "description": "Disable providers that are loaded automatically", "type": "array", "items": { "type": "string" } }, "enabled_providers": { "description": "When set, ONLY these providers will be enabled. All other providers will be ignored", "type": "array", "items": { "type": "string" } }, "model": { "description": "Model to use in the format of provider/model, eg anthropic/claude-2", "type": "string" }, "small_model": { "description": "Small model to use for tasks like title generation in the format of provider/model", "type": "string" }, "default_agent": { "description": "Default agent to use when none is specified. Must be a primary agent. Falls back to 'build' if not set or if the specified agent is invalid.", "type": "string" }, "username": { "description": "Custom username to display in conversations instead of system username", "type": "string" }, "mode": { "description": "@deprecated Use `agent` field instead.", "type": "object", "properties": { "build": { "$ref": "#/components/schemas/AgentConfig" }, "plan": { "$ref": "#/components/schemas/AgentConfig" } }, "additionalProperties": { "$ref": "#/components/schemas/AgentConfig" } }, "agent": { "description": "Agent configuration, see https://opencode.ai/docs/agents", "type": "object", "properties": { "plan": { "$ref": "#/components/schemas/AgentConfig" }, "build": { "$ref": "#/components/schemas/AgentConfig" }, "general": { "$ref": "#/components/schemas/AgentConfig" }, "explore": { "$ref": "#/components/schemas/AgentConfig" }, "title": { "$ref": "#/components/schemas/AgentConfig" }, "summary": { "$ref": "#/components/schemas/AgentConfig" }, "compaction": { "$ref": "#/components/schemas/AgentConfig" } }, "additionalProperties": { "$ref": "#/components/schemas/AgentConfig" } }, "provider": { "description": "Custom provider configurations and model overrides", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "$ref": "#/components/schemas/ProviderConfig" } }, "mcp": { "description": "MCP (Model Context Protocol) server configurations", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "anyOf": [ { "anyOf": [ { "$ref": "#/components/schemas/McpLocalConfig" }, { "$ref": "#/components/schemas/McpRemoteConfig" } ] }, { "type": "object", "properties": { "enabled": { "type": "boolean" } }, "required": ["enabled"], "additionalProperties": false } ] } }, "formatter": { "anyOf": [ { "type": "boolean", "const": false }, { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object", "properties": { "disabled": { "type": "boolean" }, "command": { "type": "array", "items": { "type": "string" } }, "environment": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "extensions": { "type": "array", "items": { "type": "string" } } } } } ] }, "lsp": { "anyOf": [ { "type": "boolean", "const": false }, { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "anyOf": [ { "type": "object", "properties": { "disabled": { "type": "boolean", "const": true } }, "required": ["disabled"] }, { "type": "object", "properties": { "command": { "type": "array", "items": { "type": "string" } }, "extensions": { "type": "array", "items": { "type": "string" } }, "disabled": { "type": "boolean" }, "env": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "initialization": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["command"] } ] } } ] }, "instructions": { "description": "Additional instruction files or patterns to include", "type": "array", "items": { "type": "string" } }, "layout": { "$ref": "#/components/schemas/LayoutConfig" }, "permission": { "$ref": "#/components/schemas/PermissionConfig" }, "tools": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "boolean" } }, "enterprise": { "type": "object", "properties": { "url": { "description": "Enterprise URL", "type": "string" } } }, "compaction": { "type": "object", "properties": { "auto": { "description": "Enable automatic compaction when context is full (default: true)", "type": "boolean" }, "prune": { "description": "Enable pruning of old tool outputs (default: true)", "type": "boolean" } } }, "experimental": { "type": "object", "properties": { "hook": { "type": "object", "properties": { "file_edited": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "array", "items": { "type": "object", "properties": { "command": { "type": "array", "items": { "type": "string" } }, "environment": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } } }, "required": ["command"] } } }, "session_completed": { "type": "array", "items": { "type": "object", "properties": { "command": { "type": "array", "items": { "type": "string" } }, "environment": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } } }, "required": ["command"] } } } }, "chatMaxRetries": { "description": "Number of retries for chat completions on failure", "type": "number" }, "disable_paste_summary": { "type": "boolean" }, "batch_tool": { "description": "Enable the batch tool", "type": "boolean" }, "openTelemetry": { "description": "Enable OpenTelemetry spans for AI SDK calls (using the 'experimental_telemetry' flag)", "type": "boolean" }, "primary_tools": { "description": "Tools that should only be available to primary agents.", "type": "array", "items": { "type": "string" } }, "continue_loop_on_deny": { "description": "Continue the agent loop when a tool call is denied", "type": "boolean" }, "mcp_timeout": { "description": "Timeout in milliseconds for model context protocol (MCP) requests", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } } } }, "additionalProperties": false }, "Model": { "type": "object", "properties": { "id": { "type": "string" }, "providerID": { "type": "string" }, "api": { "type": "object", "properties": { "id": { "type": "string" }, "url": { "type": "string" }, "npm": { "type": "string" } }, "required": ["id", "url", "npm"] }, "name": { "type": "string" }, "family": { "type": "string" }, "capabilities": { "type": "object", "properties": { "temperature": { "type": "boolean" }, "reasoning": { "type": "boolean" }, "attachment": { "type": "boolean" }, "toolcall": { "type": "boolean" }, "input": { "type": "object", "properties": { "text": { "type": "boolean" }, "audio": { "type": "boolean" }, "image": { "type": "boolean" }, "video": { "type": "boolean" }, "pdf": { "type": "boolean" } }, "required": ["text", "audio", "image", "video", "pdf"] }, "output": { "type": "object", "properties": { "text": { "type": "boolean" }, "audio": { "type": "boolean" }, "image": { "type": "boolean" }, "video": { "type": "boolean" }, "pdf": { "type": "boolean" } }, "required": ["text", "audio", "image", "video", "pdf"] }, "interleaved": { "anyOf": [ { "type": "boolean" }, { "type": "object", "properties": { "field": { "type": "string", "enum": ["reasoning_content", "reasoning_details"] } }, "required": ["field"] } ] } }, "required": ["temperature", "reasoning", "attachment", "toolcall", "input", "output", "interleaved"] }, "cost": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "cache": { "type": "object", "properties": { "read": { "type": "number" }, "write": { "type": "number" } }, "required": ["read", "write"] }, "experimentalOver200K": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "cache": { "type": "object", "properties": { "read": { "type": "number" }, "write": { "type": "number" } }, "required": ["read", "write"] } }, "required": ["input", "output", "cache"] } }, "required": ["input", "output", "cache"] }, "limit": { "type": "object", "properties": { "context": { "type": "number" }, "input": { "type": "number" }, "output": { "type": "number" } }, "required": ["context", "output"] }, "status": { "type": "string", "enum": ["alpha", "beta", "deprecated", "active"] }, "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "headers": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "release_date": { "type": "string" }, "variants": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } } }, "required": [ "id", "providerID", "api", "name", "capabilities", "cost", "limit", "status", "options", "headers", "release_date" ] }, "Provider": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "source": { "type": "string", "enum": ["env", "config", "custom", "api"] }, "env": { "type": "array", "items": { "type": "string" } }, "key": { "type": "string" }, "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "models": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "$ref": "#/components/schemas/Model" } } }, "required": ["id", "name", "source", "env", "options", "models"] }, "ToolIDs": { "type": "array", "items": { "type": "string" } }, "ToolListItem": { "type": "object", "properties": { "id": { "type": "string" }, "description": { "type": "string" }, "parameters": {} }, "required": ["id", "description", "parameters"] }, "ToolList": { "type": "array", "items": { "$ref": "#/components/schemas/ToolListItem" } }, "Worktree": { "type": "object", "properties": { "name": { "type": "string" }, "branch": { "type": "string" }, "directory": { "type": "string" } }, "required": ["name", "branch", "directory"] }, "WorktreeCreateInput": { "type": "object", "properties": { "name": { "type": "string" }, "startCommand": { "type": "string" } } }, "McpResource": { "type": "object", "properties": { "name": { "type": "string" }, "uri": { "type": "string" }, "description": { "type": "string" }, "mimeType": { "type": "string" }, "client": { "type": "string" } }, "required": ["name", "uri", "client"] }, "TextPartInput": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "const": "text" }, "text": { "type": "string" }, "synthetic": { "type": "boolean" }, "ignored": { "type": "boolean" }, "time": { "type": "object", "properties": { "start": { "type": "number" }, "end": { "type": "number" } }, "required": ["start"] }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["type", "text"] }, "FilePartInput": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "const": "file" }, "mime": { "type": "string" }, "filename": { "type": "string" }, "url": { "type": "string" }, "source": { "$ref": "#/components/schemas/FilePartSource" } }, "required": ["type", "mime", "url"] }, "AgentPartInput": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "const": "agent" }, "name": { "type": "string" }, "source": { "type": "object", "properties": { "value": { "type": "string" }, "start": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "end": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } }, "required": ["value", "start", "end"] } }, "required": ["type", "name"] }, "SubtaskPartInput": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "const": "subtask" }, "prompt": { "type": "string" }, "description": { "type": "string" }, "agent": { "type": "string" }, "model": { "type": "object", "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, "required": ["providerID", "modelID"] }, "command": { "type": "string" } }, "required": ["type", "prompt", "description", "agent"] }, "ProviderAuthMethod": { "type": "object", "properties": { "type": { "anyOf": [ { "type": "string", "const": "oauth" }, { "type": "string", "const": "api" } ] }, "label": { "type": "string" } }, "required": ["type", "label"] }, "ProviderAuthAuthorization": { "type": "object", "properties": { "url": { "type": "string" }, "method": { "anyOf": [ { "type": "string", "const": "auto" }, { "type": "string", "const": "code" } ] }, "instructions": { "type": "string" } }, "required": ["url", "method", "instructions"] }, "Symbol": { "type": "object", "properties": { "name": { "type": "string" }, "kind": { "type": "number" }, "location": { "type": "object", "properties": { "uri": { "type": "string" }, "range": { "$ref": "#/components/schemas/Range" } }, "required": ["uri", "range"] } }, "required": ["name", "kind", "location"] }, "FileNode": { "type": "object", "properties": { "name": { "type": "string" }, "path": { "type": "string" }, "absolute": { "type": "string" }, "type": { "type": "string", "enum": ["file", "directory"] }, "ignored": { "type": "boolean" } }, "required": ["name", "path", "absolute", "type", "ignored"] }, "FileContent": { "type": "object", "properties": { "type": { "type": "string", "const": "text" }, "content": { "type": "string" }, "diff": { "type": "string" }, "patch": { "type": "object", "properties": { "oldFileName": { "type": "string" }, "newFileName": { "type": "string" }, "oldHeader": { "type": "string" }, "newHeader": { "type": "string" }, "hunks": { "type": "array", "items": { "type": "object", "properties": { "oldStart": { "type": "number" }, "oldLines": { "type": "number" }, "newStart": { "type": "number" }, "newLines": { "type": "number" }, "lines": { "type": "array", "items": { "type": "string" } } }, "required": ["oldStart", "oldLines", "newStart", "newLines", "lines"] } }, "index": { "type": "string" } }, "required": ["oldFileName", "newFileName", "hunks"] }, "encoding": { "type": "string", "const": "base64" }, "mimeType": { "type": "string" } }, "required": ["type", "content"] }, "File": { "type": "object", "properties": { "path": { "type": "string" }, "added": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "removed": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "status": { "type": "string", "enum": ["added", "deleted", "modified"] } }, "required": ["path", "added", "removed", "status"] }, "MCPStatusConnected": { "type": "object", "properties": { "status": { "type": "string", "const": "connected" } }, "required": ["status"] }, "MCPStatusDisabled": { "type": "object", "properties": { "status": { "type": "string", "const": "disabled" } }, "required": ["status"] }, "MCPStatusFailed": { "type": "object", "properties": { "status": { "type": "string", "const": "failed" }, "error": { "type": "string" } }, "required": ["status", "error"] }, "MCPStatusNeedsAuth": { "type": "object", "properties": { "status": { "type": "string", "const": "needs_auth" } }, "required": ["status"] }, "MCPStatusNeedsClientRegistration": { "type": "object", "properties": { "status": { "type": "string", "const": "needs_client_registration" }, "error": { "type": "string" } }, "required": ["status", "error"] }, "MCPStatus": { "anyOf": [ { "$ref": "#/components/schemas/MCPStatusConnected" }, { "$ref": "#/components/schemas/MCPStatusDisabled" }, { "$ref": "#/components/schemas/MCPStatusFailed" }, { "$ref": "#/components/schemas/MCPStatusNeedsAuth" }, { "$ref": "#/components/schemas/MCPStatusNeedsClientRegistration" } ] }, "Path": { "type": "object", "properties": { "home": { "type": "string" }, "state": { "type": "string" }, "config": { "type": "string" }, "worktree": { "type": "string" }, "directory": { "type": "string" } }, "required": ["home", "state", "config", "worktree", "directory"] }, "VcsInfo": { "type": "object", "properties": { "branch": { "type": "string" } }, "required": ["branch"] }, "Command": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "agent": { "type": "string" }, "model": { "type": "string" }, "mcp": { "type": "boolean" }, "template": { "anyOf": [ { "type": "string" }, { "type": "string" } ] }, "subtask": { "type": "boolean" }, "hints": { "type": "array", "items": { "type": "string" } } }, "required": ["name", "template", "hints"] }, "Agent": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "mode": { "type": "string", "enum": ["subagent", "primary", "all"] }, "native": { "type": "boolean" }, "hidden": { "type": "boolean" }, "topP": { "type": "number" }, "temperature": { "type": "number" }, "color": { "type": "string" }, "permission": { "$ref": "#/components/schemas/PermissionRuleset" }, "model": { "type": "object", "properties": { "modelID": { "type": "string" }, "providerID": { "type": "string" } }, "required": ["modelID", "providerID"] }, "prompt": { "type": "string" }, "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "steps": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } }, "required": ["name", "mode", "permission", "options"] }, "LSPStatus": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "root": { "type": "string" }, "status": { "anyOf": [ { "type": "string", "const": "connected" }, { "type": "string", "const": "error" } ] } }, "required": ["id", "name", "root", "status"] }, "FormatterStatus": { "type": "object", "properties": { "name": { "type": "string" }, "extensions": { "type": "array", "items": { "type": "string" } }, "enabled": { "type": "boolean" } }, "required": ["name", "extensions", "enabled"] }, "OAuth": { "type": "object", "properties": { "type": { "type": "string", "const": "oauth" }, "refresh": { "type": "string" }, "access": { "type": "string" }, "expires": { "type": "number" }, "accountId": { "type": "string" }, "enterpriseUrl": { "type": "string" } }, "required": ["type", "refresh", "access", "expires"] }, "ApiAuth": { "type": "object", "properties": { "type": { "type": "string", "const": "api" }, "key": { "type": "string" } }, "required": ["type", "key"] }, "WellKnownAuth": { "type": "object", "properties": { "type": { "type": "string", "const": "wellknown" }, "key": { "type": "string" }, "token": { "type": "string" } }, "required": ["type", "key", "token"] }, "Auth": { "anyOf": [ { "$ref": "#/components/schemas/OAuth" }, { "$ref": "#/components/schemas/ApiAuth" }, { "$ref": "#/components/schemas/WellKnownAuth" } ] } } } }