Build & Push Frontend Docker Image / build-and-push (push) Canceled after 0s
Build Validation / validate (push) Canceled after 6s
Build & Push Backend Docker Image / build-and-push (push) Failing after 10m10s
Build & Push Gateway Docker Image / build-and-push (push) Failing after 10m9s
A professional workspace for AI coding agents with: - Real-time streaming chat with SSE - Session management (fork, clone, tree navigation) - MCP tools browser & metadata panel - Skills browser (global, project, package sources) - Voice input & STT provider configuration - Integrated terminal & file explorer - Model selector with capability metadata - Keyboard-first UI with command palette - 8 languages (en, pt-BR, es, ja, zh-CN, ar, bn, hi) - Tauri 2 desktop app - React 19 + TypeScript + Vite 8 + Tailwind CSS 4 - Pi Agent extension runtime Originally forked from OpenCodeUI, now an independent project. License: GPL-3.0-only
5379 lines
209 KiB
JSON
5379 lines
209 KiB
JSON
{
|
|
"openapi": "3.1.1",
|
|
"info": { "title": "opencode", "description": "opencode api", "version": "0.0.3" },
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/global/config": {
|
|
"get": {
|
|
"operationId": "global.config.get",
|
|
"summary": "Get global configuration",
|
|
"description": "Retrieve the current global OpenCode configuration settings and preferences.",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Get global config info",
|
|
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/Config" } } }
|
|
}
|
|
}
|
|
},
|
|
"patch": {
|
|
"operationId": "global.config.update",
|
|
"summary": "Update global configuration",
|
|
"description": "Update global OpenCode configuration settings and preferences.",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully updated global 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" } } } }
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/auth/{providerID}": {
|
|
"put": {
|
|
"operationId": "auth.set",
|
|
"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" } } }
|
|
}
|
|
},
|
|
"parameters": [{ "in": "path", "name": "providerID", "schema": { "type": "string" }, "required": true }],
|
|
"requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Auth" } } } }
|
|
},
|
|
"delete": {
|
|
"operationId": "auth.remove",
|
|
"summary": "Remove auth credentials",
|
|
"description": "Remove authentication credentials",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully removed authentication credentials",
|
|
"content": { "application/json": { "schema": { "type": "boolean" } } }
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } }
|
|
}
|
|
},
|
|
"parameters": [{ "in": "path", "name": "providerID", "schema": { "type": "string" }, "required": true }]
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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 commands.",
|
|
"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" },
|
|
"override": { "type": "string" },
|
|
"color": { "type": "string" }
|
|
}
|
|
},
|
|
"commands": {
|
|
"type": "object",
|
|
"properties": {
|
|
"start": {
|
|
"description": "Startup script to run when creating a new workspace (worktree)",
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
},
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
},
|
|
"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" } } } }
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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 and run any configured startup scripts.",
|
|
"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" } } }
|
|
}
|
|
},
|
|
"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" } } } }
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"operationId": "worktree.remove",
|
|
"parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }],
|
|
"summary": "Remove worktree",
|
|
"description": "Remove a git worktree and delete its branch.",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Worktree removed",
|
|
"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/WorktreeRemoveInput" } } }
|
|
}
|
|
}
|
|
},
|
|
"/experimental/worktree/reset": {
|
|
"post": {
|
|
"operationId": "worktree.reset",
|
|
"parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }],
|
|
"summary": "Reset worktree",
|
|
"description": "Reset a worktree branch to the primary default branch.",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Worktree reset",
|
|
"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/WorktreeResetInput" } } }
|
|
}
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
},
|
|
"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" } } }
|
|
}
|
|
}
|
|
},
|
|
"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" } } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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.*" } } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
},
|
|
"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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
},
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
},
|
|
"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" } } } }
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
},
|
|
"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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"] }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"] }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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": {} } } }
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" },
|
|
"content": { "type": "string" }
|
|
},
|
|
"required": ["name", "description", "location", "content"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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" } } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"schemas": {
|
|
"Event.server.connected": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": { "type": "string", "const": "server.connected" },
|
|
"properties": { "type": "object", "properties": {} }
|
|
},
|
|
"required": ["type", "properties"]
|
|
},
|
|
"Event.global.disposed": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": { "type": "string", "const": "global.disposed" },
|
|
"properties": { "type": "object", "properties": {} }
|
|
},
|
|
"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.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" },
|
|
"override": { "type": "string" },
|
|
"color": { "type": "string" }
|
|
}
|
|
},
|
|
"commands": {
|
|
"type": "object",
|
|
"properties": {
|
|
"start": {
|
|
"description": "Startup script to run when creating a new workspace (worktree)",
|
|
"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.file.edited": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": { "type": "string", "const": "file.edited" },
|
|
"properties": { "type": "object", "properties": { "file": { "type": "string" } }, "required": ["file"] }
|
|
},
|
|
"required": ["type", "properties"]
|
|
},
|
|
"Event.worktree.ready": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": { "type": "string", "const": "worktree.ready" },
|
|
"properties": {
|
|
"type": "object",
|
|
"properties": { "name": { "type": "string" }, "branch": { "type": "string" } },
|
|
"required": ["name", "branch"]
|
|
}
|
|
},
|
|
"required": ["type", "properties"]
|
|
},
|
|
"Event.worktree.failed": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": { "type": "string", "const": "worktree.failed" },
|
|
"properties": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"] }
|
|
},
|
|
"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"]
|
|
},
|
|
"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" },
|
|
"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" },
|
|
"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"]
|
|
},
|
|
"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"]
|
|
},
|
|
"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.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.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.lsp.updated": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": { "type": "string", "const": "lsp.updated" },
|
|
"properties": { "type": "object", "properties": {} }
|
|
},
|
|
"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"]
|
|
},
|
|
"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"]
|
|
},
|
|
"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"]
|
|
},
|
|
"SubtaskPart": {
|
|
"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"]
|
|
},
|
|
"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" },
|
|
{ "$ref": "#/components/schemas/SubtaskPart" },
|
|
{ "$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"]
|
|
},
|
|
"Event.session.compacted": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": { "type": "string", "const": "session.compacted" },
|
|
"properties": {
|
|
"type": "object",
|
|
"properties": { "sessionID": { "type": "string" } },
|
|
"required": ["sessionID"]
|
|
}
|
|
},
|
|
"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": {
|
|
"anyOf": [
|
|
{ "$ref": "#/components/schemas/Event.server.connected" },
|
|
{ "$ref": "#/components/schemas/Event.global.disposed" },
|
|
{ "$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.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.file.edited" },
|
|
{ "$ref": "#/components/schemas/Event.worktree.ready" },
|
|
{ "$ref": "#/components/schemas/Event.worktree.failed" },
|
|
{ "$ref": "#/components/schemas/Event.lsp.client.diagnostics" },
|
|
{ "$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.todo.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.file.watcher.updated" },
|
|
{ "$ref": "#/components/schemas/Event.mcp.tools.changed" },
|
|
{ "$ref": "#/components/schemas/Event.mcp.browser.open.failed" },
|
|
{ "$ref": "#/components/schemas/Event.lsp.updated" },
|
|
{ "$ref": "#/components/schemas/Event.vcs.branch.updated" },
|
|
{ "$ref": "#/components/schemas/Event.command.executed" },
|
|
{ "$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.session.compacted" },
|
|
{ "$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" }
|
|
]
|
|
},
|
|
"GlobalEvent": {
|
|
"type": "object",
|
|
"properties": { "directory": { "type": "string" }, "payload": { "$ref": "#/components/schemas/Event" } },
|
|
"required": ["directory", "payload"]
|
|
},
|
|
"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,<leader>q", "type": "string" },
|
|
"editor_open": { "description": "Open external editor", "default": "<leader>e", "type": "string" },
|
|
"theme_list": { "description": "List available themes", "default": "<leader>t", "type": "string" },
|
|
"sidebar_toggle": { "description": "Toggle sidebar", "default": "<leader>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": "<leader>s", "type": "string" },
|
|
"session_export": { "description": "Export session to editor", "default": "<leader>x", "type": "string" },
|
|
"session_new": { "description": "Create a new session", "default": "<leader>n", "type": "string" },
|
|
"session_list": { "description": "List all sessions", "default": "<leader>l", "type": "string" },
|
|
"session_timeline": { "description": "Show session timeline", "default": "<leader>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": "<leader>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": "<leader>y", "type": "string" },
|
|
"messages_undo": { "description": "Undo message", "default": "<leader>u", "type": "string" },
|
|
"messages_redo": { "description": "Redo message", "default": "<leader>r", "type": "string" },
|
|
"messages_toggle_conceal": {
|
|
"description": "Toggle code block concealment in messages",
|
|
"default": "<leader>h",
|
|
"type": "string"
|
|
},
|
|
"tool_details": { "description": "Toggle tool details visibility", "default": "none", "type": "string" },
|
|
"model_list": { "description": "List available models", "default": "<leader>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": "<leader>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": "<leader>right", "type": "string" },
|
|
"session_child_cycle_reverse": {
|
|
"description": "Previous child session",
|
|
"default": "<leader>left",
|
|
"type": "string"
|
|
},
|
|
"session_parent": { "description": "Go to parent session", "default": "<leader>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": "<leader>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" },
|
|
"skill": { "$ref": "#/components/schemas/PermissionRuleConfig" }
|
|
},
|
|
"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"]
|
|
}
|
|
},
|
|
"skills": {
|
|
"description": "Additional skill folder paths",
|
|
"type": "object",
|
|
"properties": {
|
|
"paths": {
|
|
"description": "Additional paths to skill folders",
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
}
|
|
}
|
|
},
|
|
"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": {
|
|
"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
|
|
},
|
|
"BadRequestError": {
|
|
"type": "object",
|
|
"properties": {
|
|
"data": {},
|
|
"errors": {
|
|
"type": "array",
|
|
"items": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }
|
|
},
|
|
"success": { "type": "boolean", "const": false }
|
|
},
|
|
"required": ["data", "errors", "success"]
|
|
},
|
|
"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" }
|
|
]
|
|
},
|
|
"NotFoundError": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": { "type": "string", "const": "NotFoundError" },
|
|
"data": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"] }
|
|
},
|
|
"required": ["name", "data"]
|
|
},
|
|
"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": {
|
|
"description": "Additional startup script to run after the project's start command",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"WorktreeRemoveInput": {
|
|
"type": "object",
|
|
"properties": { "directory": { "type": "string" } },
|
|
"required": ["directory"]
|
|
},
|
|
"WorktreeResetInput": {
|
|
"type": "object",
|
|
"properties": { "directory": { "type": "string" } },
|
|
"required": ["directory"]
|
|
},
|
|
"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" },
|
|
"source": { "type": "string", "enum": ["command", "mcp", "skill"] },
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|