diff --git a/packages/opencode/src/tool/bash.ts b/packages/opencode/src/tool/bash.ts
index 8d4d068972..54fac44571 100644
--- a/packages/opencode/src/tool/bash.ts
+++ b/packages/opencode/src/tool/bash.ts
@@ -89,10 +89,10 @@ export const BashTool = Tool.define("bash", async () => {
parameters: z.object({
command: z.string().describe("The command to execute"),
timeout: z.number().describe("Optional timeout in milliseconds").optional(),
- dir_path: z
+ workdir: z
.string()
.describe(
- `The path of the directory to run the command in, defaults to ${Instance.directory}. Must be a directory that already exists`,
+ `The working directory to run the command in. Defaults to ${Instance.directory}. Use this instead of 'cd' commands.`,
)
.optional(),
description: z
@@ -102,7 +102,7 @@ export const BashTool = Tool.define("bash", async () => {
),
}),
async execute(params, ctx) {
- const cwd = params.dir_path || Instance.directory
+ const cwd = params.workdir || Instance.directory
if (params.timeout !== undefined && params.timeout < 0) {
throw new Error(`Invalid timeout value: ${params.timeout}. Timeout must be a positive number.`)
}
diff --git a/packages/opencode/src/tool/bash.txt b/packages/opencode/src/tool/bash.txt
index 3541249675..8c6e92fb8f 100644
--- a/packages/opencode/src/tool/bash.txt
+++ b/packages/opencode/src/tool/bash.txt
@@ -25,17 +25,20 @@ Usage notes:
- VERY IMPORTANT: You MUST avoid using search commands like `find` and `grep`. Instead use Grep, Glob, or Task to search. You MUST avoid read tools like `cat`, `head`, `tail`, and `ls`, and use Read and List to read files.
- If you _still_ need to run `grep`, STOP. ALWAYS USE ripgrep at `rg` (or /usr/bin/rg) first, which all opencode users have pre-installed.
- When issuing multiple commands, use the ';' or '&&' operator to separate them. DO NOT use newlines (newlines are ok in quoted strings).
- - Avoid using `cd` to change directories when possible. Instead, set the `workdir` parameter or use absolute paths in your commands.
-
- dir_path="/foo/bar", command="pytest tests"
-
-
- pytest /foo/bar/tests
-
-
- cd /foo/bar && pytest tests
-
+# Working Directory
+
+The `workdir` parameter sets the working directory for command execution. Prefer using `workdir` over `cd
&&` command chains when you simply need to run a command in a different directory.
+
+
+workdir="/foo/bar", command="pytest tests"
+
+
+command="pytest /foo/bar/tests"
+
+
+command="cd /foo/bar && pytest tests"
+
# Committing changes with git
diff --git a/packages/sdk/stainless/openapi.json b/packages/sdk/stainless/openapi.json
new file mode 100644
index 0000000000..0594be8f30
--- /dev/null
+++ b/packages/sdk/stainless/openapi.json
@@ -0,0 +1,6771 @@
+{
+ "openapi": "3.1.1",
+ "info": {
+ "title": "opencode",
+ "description": "opencode api",
+ "version": "1.0.0"
+ },
+ "paths": {
+ "/project": {
+ "get": {
+ "operationId": "project.list",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "description": "List all projects",
+ "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"
+ }
+ }
+ ],
+ "description": "Get the current project",
+ "responses": {
+ "200": {
+ "description": "Current project",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Project"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/config": {
+ "get": {
+ "operationId": "config.get",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "description": "Get config info",
+ "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"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "description": "Update config",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/experimental/tool/ids": {
+ "get": {
+ "operationId": "tool.ids",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "description": "List all tool IDs (including built-in and dynamically registered)",
+ "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": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "provider",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "in": "query",
+ "name": "model",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "description": "List tools with JSON schema parameters for a provider/model",
+ "responses": {
+ "200": {
+ "description": "Tools",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ToolList"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BadRequestError"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/path": {
+ "get": {
+ "operationId": "path.get",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "description": "Get the current path",
+ "responses": {
+ "200": {
+ "description": "Path",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Path"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/session": {
+ "get": {
+ "operationId": "session.list",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "description": "List all sessions",
+ "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"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "description": "Create a new session",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/session/{id}": {
+ "get": {
+ "operationId": "session.get",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "required": true
+ }
+ ],
+ "description": "Get 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": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "required": true
+ }
+ ],
+ "description": "Delete a session and all its data",
+ "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": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "description": "Update session properties",
+ "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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/session/{id}/children": {
+ "get": {
+ "operationId": "session.children",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "required": true
+ }
+ ],
+ "description": "Get a session's children",
+ "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/{id}/todo": {
+ "get": {
+ "operationId": "session.todo",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "Session ID"
+ }
+ ],
+ "description": "Get the todo list for a session",
+ "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/{id}/init": {
+ "post": {
+ "operationId": "session.init",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "Session ID"
+ }
+ ],
+ "description": "Analyze the app and create an AGENTS.md file",
+ "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/{id}/fork": {
+ "post": {
+ "operationId": "session.fork",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "required": true
+ }
+ ],
+ "description": "Fork an existing session at a specific message",
+ "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/{id}/abort": {
+ "post": {
+ "operationId": "session.abort",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "description": "Abort a session",
+ "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/{id}/share": {
+ "post": {
+ "operationId": "session.share",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "description": "Share a session",
+ "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": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "required": true
+ }
+ ],
+ "description": "Unshare the session",
+ "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/{id}/diff": {
+ "get": {
+ "operationId": "session.diff",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "required": true
+ },
+ {
+ "in": "query",
+ "name": "messageID",
+ "schema": {
+ "type": "string",
+ "pattern": "^msg.*"
+ }
+ }
+ ],
+ "description": "Get the diff that resulted from this user message",
+ "responses": {
+ "200": {
+ "description": "Successfully retrieved diff",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileDiff"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/session/{id}/summarize": {
+ "post": {
+ "operationId": "session.summarize",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "Session ID"
+ }
+ ],
+ "description": "Summarize the session",
+ "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"
+ }
+ },
+ "required": [
+ "providerID",
+ "modelID"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "/session/{id}/message": {
+ "get": {
+ "operationId": "session.messages",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "Session ID"
+ }
+ ],
+ "description": "List messages for a session",
+ "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": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "Session ID"
+ }
+ ],
+ "description": "Create and send a new message to a session",
+ "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"
+ },
+ "system": {
+ "type": "string"
+ },
+ "tools": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "type": "boolean"
+ }
+ },
+ "parts": {
+ "type": "array",
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/TextPartInput"
+ },
+ {
+ "$ref": "#/components/schemas/FilePartInput"
+ },
+ {
+ "$ref": "#/components/schemas/AgentPartInput"
+ }
+ ]
+ }
+ }
+ },
+ "required": [
+ "parts"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "/session/{id}/message/{messageID}": {
+ "get": {
+ "operationId": "session.message",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "Session ID"
+ },
+ {
+ "in": "path",
+ "name": "messageID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "Message ID"
+ }
+ ],
+ "description": "Get a message from a session",
+ "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/{id}/command": {
+ "post": {
+ "operationId": "session.command",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "Session ID"
+ }
+ ],
+ "description": "Send a new command to a session",
+ "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"
+ }
+ },
+ "required": [
+ "arguments",
+ "command"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "/session/{id}/shell": {
+ "post": {
+ "operationId": "session.shell",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "Session ID"
+ }
+ ],
+ "description": "Run a shell command",
+ "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"
+ },
+ "command": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "agent",
+ "command"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "/session/{id}/revert": {
+ "post": {
+ "operationId": "session.revert",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "description": "Revert a message",
+ "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/{id}/unrevert": {
+ "post": {
+ "operationId": "session.unrevert",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "description": "Restore all reverted messages",
+ "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/{id}/permissions/{permissionID}": {
+ "post": {
+ "operationId": "postSession:idPermissions:permissionID",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "in": "path",
+ "name": "permissionID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "description": "Respond to a permission request",
+ "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"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "/command": {
+ "get": {
+ "operationId": "command.list",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "description": "List all commands",
+ "responses": {
+ "200": {
+ "description": "List of commands",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Command"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/config/providers": {
+ "get": {
+ "operationId": "config.providers",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "description": "List all providers",
+ "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"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/find": {
+ "get": {
+ "operationId": "find.text",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "pattern",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "description": "Find text in files",
+ "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": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "query",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "description": "Find files",
+ "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": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "query",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "description": "Find workspace symbols",
+ "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": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "path",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "description": "List files and directories",
+ "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": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "path",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "description": "Read a 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"
+ }
+ }
+ ],
+ "description": "Get file status",
+ "responses": {
+ "200": {
+ "description": "File status",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/File"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/log": {
+ "post": {
+ "operationId": "app.log",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "description": "Write a log entry to the server logs",
+ "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"
+ }
+ }
+ ],
+ "description": "List all agents",
+ "responses": {
+ "200": {
+ "description": "List of agents",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Agent"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/mcp": {
+ "get": {
+ "operationId": "mcp.status",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "description": "Get MCP server status",
+ "responses": {
+ "200": {
+ "description": "MCP server status",
+ "content": {
+ "application/json": {
+ "schema": {}
+ }
+ }
+ }
+ }
+ }
+ },
+ "/tui/append-prompt": {
+ "post": {
+ "operationId": "tui.appendPrompt",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "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"
+ }
+ }
+ ],
+ "description": "Open the help dialog",
+ "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"
+ }
+ }
+ ],
+ "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"
+ }
+ }
+ ],
+ "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"
+ }
+ }
+ ],
+ "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"
+ }
+ }
+ ],
+ "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"
+ }
+ }
+ ],
+ "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"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "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"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "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"
+ ]
+ }
+ },
+ "required": [
+ "message",
+ "variant"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "/auth/{id}": {
+ "put": {
+ "operationId": "auth.set",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "description": "Set authentication credentials",
+ "responses": {
+ "200": {
+ "description": "Successfully set authentication credentials",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "boolean"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BadRequestError"
+ }
+ }
+ }
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Auth"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/event": {
+ "get": {
+ "operationId": "event.subscribe",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "description": "Get events",
+ "responses": {
+ "200": {
+ "description": "Event stream",
+ "content": {
+ "text/event-stream": {
+ "schema": {
+ "$ref": "#/components/schemas/Event"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "Project": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "worktree": {
+ "type": "string"
+ },
+ "vcs": {
+ "type": "string",
+ "const": "git"
+ },
+ "time": {
+ "type": "object",
+ "properties": {
+ "created": {
+ "type": "number"
+ },
+ "initialized": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "created"
+ ]
+ }
+ },
+ "required": [
+ "id",
+ "worktree",
+ "time"
+ ]
+ },
+ "KeybindsConfig": {
+ "description": "Custom keybind configurations",
+ "type": "object",
+ "properties": {
+ "leader": {
+ "description": "Leader key for keybind combinations",
+ "default": "ctrl+x",
+ "type": "string"
+ },
+ "app_help": {
+ "description": "Show help dialog",
+ "default": "h",
+ "type": "string"
+ },
+ "app_exit": {
+ "description": "Exit the application",
+ "default": "ctrl+c,q",
+ "type": "string"
+ },
+ "editor_open": {
+ "description": "Open external editor",
+ "default": "e",
+ "type": "string"
+ },
+ "theme_list": {
+ "description": "List available themes",
+ "default": "t",
+ "type": "string"
+ },
+ "project_init": {
+ "description": "Create/update AGENTS.md",
+ "default": "i",
+ "type": "string"
+ },
+ "tool_details": {
+ "description": "Toggle tool details",
+ "default": "d",
+ "type": "string"
+ },
+ "thinking_blocks": {
+ "description": "Toggle thinking blocks",
+ "default": "b",
+ "type": "string"
+ },
+ "session_export": {
+ "description": "Export session to editor",
+ "default": "x",
+ "type": "string"
+ },
+ "session_new": {
+ "description": "Create a new session",
+ "default": "n",
+ "type": "string"
+ },
+ "session_list": {
+ "description": "List all sessions",
+ "default": "l",
+ "type": "string"
+ },
+ "session_timeline": {
+ "description": "Show session timeline",
+ "default": "g",
+ "type": "string"
+ },
+ "session_share": {
+ "description": "Share current session",
+ "default": "s",
+ "type": "string"
+ },
+ "session_unshare": {
+ "description": "Unshare current session",
+ "default": "none",
+ "type": "string"
+ },
+ "session_interrupt": {
+ "description": "Interrupt current session",
+ "default": "esc",
+ "type": "string"
+ },
+ "session_compact": {
+ "description": "Compact the session",
+ "default": "c",
+ "type": "string"
+ },
+ "session_child_cycle": {
+ "description": "Cycle to next child session",
+ "default": "ctrl+right",
+ "type": "string"
+ },
+ "session_child_cycle_reverse": {
+ "description": "Cycle to previous child session",
+ "default": "ctrl+left",
+ "type": "string"
+ },
+ "messages_page_up": {
+ "description": "Scroll messages up by one page",
+ "default": "pgup",
+ "type": "string"
+ },
+ "messages_page_down": {
+ "description": "Scroll messages down by one page",
+ "default": "pgdown",
+ "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",
+ "type": "string"
+ },
+ "messages_last": {
+ "description": "Navigate to last message",
+ "default": "ctrl+alt+g",
+ "type": "string"
+ },
+ "messages_copy": {
+ "description": "Copy message",
+ "default": "y",
+ "type": "string"
+ },
+ "messages_undo": {
+ "description": "Undo message",
+ "default": "u",
+ "type": "string"
+ },
+ "messages_redo": {
+ "description": "Redo message",
+ "default": "r",
+ "type": "string"
+ },
+ "model_list": {
+ "description": "List available models",
+ "default": "m",
+ "type": "string"
+ },
+ "model_cycle_recent": {
+ "description": "Next recent model",
+ "default": "f2",
+ "type": "string"
+ },
+ "model_cycle_recent_reverse": {
+ "description": "Previous recent model",
+ "default": "shift+f2",
+ "type": "string"
+ },
+ "agent_list": {
+ "description": "List agents",
+ "default": "a",
+ "type": "string"
+ },
+ "agent_cycle": {
+ "description": "Next agent",
+ "default": "tab",
+ "type": "string"
+ },
+ "agent_cycle_reverse": {
+ "description": "Previous agent",
+ "default": "shift+tab",
+ "type": "string"
+ },
+ "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": "enter",
+ "type": "string"
+ },
+ "input_newline": {
+ "description": "Insert newline in input",
+ "default": "shift+enter,ctrl+j",
+ "type": "string"
+ },
+ "switch_mode": {
+ "description": "@deprecated use agent_cycle. Next mode",
+ "default": "none",
+ "type": "string"
+ },
+ "switch_mode_reverse": {
+ "description": "@deprecated use agent_cycle_reverse. Previous mode",
+ "default": "none",
+ "type": "string"
+ },
+ "switch_agent": {
+ "description": "@deprecated use agent_cycle. Next agent",
+ "default": "tab",
+ "type": "string"
+ },
+ "switch_agent_reverse": {
+ "description": "@deprecated use agent_cycle_reverse. Previous agent",
+ "default": "shift+tab",
+ "type": "string"
+ },
+ "file_list": {
+ "description": "@deprecated Currently not available. List files",
+ "default": "none",
+ "type": "string"
+ },
+ "file_close": {
+ "description": "@deprecated Close file",
+ "default": "none",
+ "type": "string"
+ },
+ "file_search": {
+ "description": "@deprecated Search file",
+ "default": "none",
+ "type": "string"
+ },
+ "file_diff_toggle": {
+ "description": "@deprecated Split/unified diff",
+ "default": "none",
+ "type": "string"
+ },
+ "messages_previous": {
+ "description": "@deprecated Navigate to previous message",
+ "default": "none",
+ "type": "string"
+ },
+ "messages_next": {
+ "description": "@deprecated Navigate to next message",
+ "default": "none",
+ "type": "string"
+ },
+ "messages_layout_toggle": {
+ "description": "@deprecated Toggle layout",
+ "default": "none",
+ "type": "string"
+ },
+ "messages_revert": {
+ "description": "@deprecated use messages_undo. Revert message",
+ "default": "none",
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "AgentConfig": {
+ "type": "object",
+ "properties": {
+ "model": {
+ "type": "string"
+ },
+ "temperature": {
+ "type": "number"
+ },
+ "top_p": {
+ "type": "number"
+ },
+ "prompt": {
+ "type": "string"
+ },
+ "tools": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "type": "boolean"
+ }
+ },
+ "disable": {
+ "type": "boolean"
+ },
+ "description": {
+ "description": "Description of when to use the agent",
+ "type": "string"
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "subagent"
+ },
+ {
+ "type": "string",
+ "const": "primary"
+ },
+ {
+ "type": "string",
+ "const": "all"
+ }
+ ]
+ },
+ "permission": {
+ "type": "object",
+ "properties": {
+ "edit": {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "ask"
+ },
+ {
+ "type": "string",
+ "const": "allow"
+ },
+ {
+ "type": "string",
+ "const": "deny"
+ }
+ ]
+ },
+ "bash": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "ask"
+ },
+ {
+ "type": "string",
+ "const": "allow"
+ },
+ {
+ "type": "string",
+ "const": "deny"
+ }
+ ]
+ },
+ {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "ask"
+ },
+ {
+ "type": "string",
+ "const": "allow"
+ },
+ {
+ "type": "string",
+ "const": "deny"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "webfetch": {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "ask"
+ },
+ {
+ "type": "string",
+ "const": "allow"
+ },
+ {
+ "type": "string",
+ "const": "deny"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "additionalProperties": {}
+ },
+ "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"
+ }
+ },
+ "required": [
+ "type",
+ "command"
+ ],
+ "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"
+ }
+ }
+ },
+ "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"
+ },
+ "tui": {
+ "description": "TUI specific settings",
+ "type": "object",
+ "properties": {
+ "scroll_speed": {
+ "description": "TUI scroll speed",
+ "default": 2,
+ "type": "number",
+ "minimum": 1
+ }
+ }
+ },
+ "command": {
+ "description": "Command configuration, see https://opencode.ai/docs/commands",
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "type": "object",
+ "properties": {
+ "template": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "agent": {
+ "type": "string"
+ },
+ "model": {
+ "type": "string"
+ },
+ "subtask": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "template"
+ ]
+ }
+ },
+ "watcher": {
+ "type": "object",
+ "properties": {
+ "ignore": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "plugin": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "snapshot": {
+ "type": "boolean"
+ },
+ "share": {
+ "description": "Control sharing behavior:'manual' allows manual sharing via commands, 'auto' enables automatic sharing, 'disabled' disables all sharing",
+ "type": "string",
+ "enum": [
+ "manual",
+ "auto",
+ "disabled"
+ ]
+ },
+ "autoshare": {
+ "description": "@deprecated Use 'share' field instead. Share newly created sessions automatically",
+ "type": "boolean"
+ },
+ "autoupdate": {
+ "description": "Automatically update to the latest version",
+ "type": "boolean"
+ },
+ "disabled_providers": {
+ "description": "Disable providers that are loaded automatically",
+ "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"
+ },
+ "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/agent",
+ "type": "object",
+ "properties": {
+ "plan": {
+ "$ref": "#/components/schemas/AgentConfig"
+ },
+ "build": {
+ "$ref": "#/components/schemas/AgentConfig"
+ },
+ "general": {
+ "$ref": "#/components/schemas/AgentConfig"
+ }
+ },
+ "additionalProperties": {
+ "$ref": "#/components/schemas/AgentConfig"
+ }
+ },
+ "provider": {
+ "description": "Custom provider configurations and model overrides",
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "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"
+ },
+ "release_date": {
+ "type": "string"
+ },
+ "attachment": {
+ "type": "boolean"
+ },
+ "reasoning": {
+ "type": "boolean"
+ },
+ "temperature": {
+ "type": "boolean"
+ },
+ "tool_call": {
+ "type": "boolean"
+ },
+ "cost": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "number"
+ },
+ "output": {
+ "type": "number"
+ },
+ "cache_read": {
+ "type": "number"
+ },
+ "cache_write": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "input",
+ "output"
+ ]
+ },
+ "limit": {
+ "type": "object",
+ "properties": {
+ "context": {
+ "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"
+ ]
+ },
+ "options": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {}
+ },
+ "provider": {
+ "type": "object",
+ "properties": {
+ "npm": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "npm"
+ ]
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "object",
+ "properties": {
+ "apiKey": {
+ "type": "string"
+ },
+ "baseURL": {
+ "type": "string"
+ },
+ "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
+ }
+ },
+ "mcp": {
+ "description": "MCP (Model Context Protocol) server configurations",
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/McpLocalConfig"
+ },
+ {
+ "$ref": "#/components/schemas/McpRemoteConfig"
+ }
+ ]
+ }
+ },
+ "formatter": {
+ "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": {
+ "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": {
+ "type": "object",
+ "properties": {
+ "edit": {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "ask"
+ },
+ {
+ "type": "string",
+ "const": "allow"
+ },
+ {
+ "type": "string",
+ "const": "deny"
+ }
+ ]
+ },
+ "bash": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "ask"
+ },
+ {
+ "type": "string",
+ "const": "allow"
+ },
+ {
+ "type": "string",
+ "const": "deny"
+ }
+ ]
+ },
+ {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "ask"
+ },
+ {
+ "type": "string",
+ "const": "allow"
+ },
+ {
+ "type": "string",
+ "const": "deny"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "webfetch": {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "ask"
+ },
+ {
+ "type": "string",
+ "const": "allow"
+ },
+ {
+ "type": "string",
+ "const": "deny"
+ }
+ ]
+ }
+ }
+ },
+ "tools": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "type": "boolean"
+ }
+ },
+ "experimental": {
+ "type": "object",
+ "properties": {
+ "hook": {
+ "type": "object",
+ "properties": {
+ "file_edited": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "command": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "environment": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "command"
+ ]
+ }
+ }
+ },
+ "session_completed": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "command": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "environment": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "command"
+ ]
+ }
+ }
+ }
+ },
+ "disable_paste_summary": {
+ "type": "boolean"
+ }
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "BadRequestError": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "anyOf": [
+ {},
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "errors": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {}
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "const": false
+ }
+ },
+ "required": [
+ "data",
+ "errors",
+ "success"
+ ]
+ },
+ "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"
+ }
+ },
+ "Path": {
+ "type": "object",
+ "properties": {
+ "state": {
+ "type": "string"
+ },
+ "config": {
+ "type": "string"
+ },
+ "worktree": {
+ "type": "string"
+ },
+ "directory": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "state",
+ "config",
+ "worktree",
+ "directory"
+ ]
+ },
+ "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"
+ ]
+ },
+ "Session": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "projectID": {
+ "type": "string"
+ },
+ "directory": {
+ "type": "string"
+ },
+ "parentID": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "summary": {
+ "type": "object",
+ "properties": {
+ "diffs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileDiff"
+ }
+ }
+ },
+ "required": [
+ "diffs"
+ ]
+ },
+ "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"
+ }
+ },
+ "required": [
+ "created",
+ "updated"
+ ]
+ },
+ "revert": {
+ "type": "object",
+ "properties": {
+ "messageID": {
+ "type": "string"
+ },
+ "partID": {
+ "type": "string"
+ },
+ "snapshot": {
+ "type": "string"
+ },
+ "diff": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "messageID"
+ ]
+ }
+ },
+ "required": [
+ "id",
+ "projectID",
+ "directory",
+ "title",
+ "version",
+ "time"
+ ]
+ },
+ "NotFoundError": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "const": "NotFoundError"
+ },
+ "data": {
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "message"
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "data"
+ ]
+ },
+ "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"
+ ]
+ },
+ "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"
+ ]
+ }
+ },
+ "required": [
+ "id",
+ "sessionID",
+ "role",
+ "time"
+ ]
+ },
+ "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"
+ }
+ },
+ "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"
+ }
+ ]
+ },
+ "system": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "parentID": {
+ "type": "string"
+ },
+ "modelID": {
+ "type": "string"
+ },
+ "providerID": {
+ "type": "string"
+ },
+ "mode": {
+ "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"
+ ]
+ }
+ },
+ "required": [
+ "id",
+ "sessionID",
+ "role",
+ "time",
+ "system",
+ "parentID",
+ "modelID",
+ "providerID",
+ "mode",
+ "path",
+ "cost",
+ "tokens"
+ ]
+ },
+ "Message": {
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/UserMessage"
+ },
+ {
+ "$ref": "#/components/schemas/AssistantMessage"
+ }
+ ]
+ },
+ "TextPart": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "sessionID": {
+ "type": "string"
+ },
+ "messageID": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "const": "text"
+ },
+ "text": {
+ "type": "string"
+ },
+ "synthetic": {
+ "type": "boolean"
+ },
+ "time": {
+ "type": "object",
+ "properties": {
+ "start": {
+ "type": "number"
+ },
+ "end": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "start"
+ ]
+ },
+ "metadata": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {}
+ }
+ },
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type",
+ "text"
+ ]
+ },
+ "ReasoningPart": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "sessionID": {
+ "type": "string"
+ },
+ "messageID": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "const": "reasoning"
+ },
+ "text": {
+ "type": "string"
+ },
+ "metadata": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {}
+ },
+ "time": {
+ "type": "object",
+ "properties": {
+ "start": {
+ "type": "number"
+ },
+ "end": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "start"
+ ]
+ }
+ },
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type",
+ "text",
+ "time"
+ ]
+ },
+ "FilePartSourceText": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "start": {
+ "type": "integer",
+ "minimum": -9007199254740991,
+ "maximum": 9007199254740991
+ },
+ "end": {
+ "type": "integer",
+ "minimum": -9007199254740991,
+ "maximum": 9007199254740991
+ }
+ },
+ "required": [
+ "value",
+ "start",
+ "end"
+ ]
+ },
+ "FileSource": {
+ "type": "object",
+ "properties": {
+ "text": {
+ "$ref": "#/components/schemas/FilePartSourceText"
+ },
+ "type": {
+ "type": "string",
+ "const": "file"
+ },
+ "path": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "text",
+ "type",
+ "path"
+ ]
+ },
+ "Range": {
+ "type": "object",
+ "properties": {
+ "start": {
+ "type": "object",
+ "properties": {
+ "line": {
+ "type": "number"
+ },
+ "character": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "line",
+ "character"
+ ]
+ },
+ "end": {
+ "type": "object",
+ "properties": {
+ "line": {
+ "type": "number"
+ },
+ "character": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "line",
+ "character"
+ ]
+ }
+ },
+ "required": [
+ "start",
+ "end"
+ ]
+ },
+ "SymbolSource": {
+ "type": "object",
+ "properties": {
+ "text": {
+ "$ref": "#/components/schemas/FilePartSourceText"
+ },
+ "type": {
+ "type": "string",
+ "const": "symbol"
+ },
+ "path": {
+ "type": "string"
+ },
+ "range": {
+ "$ref": "#/components/schemas/Range"
+ },
+ "name": {
+ "type": "string"
+ },
+ "kind": {
+ "type": "integer",
+ "minimum": -9007199254740991,
+ "maximum": 9007199254740991
+ }
+ },
+ "required": [
+ "text",
+ "type",
+ "path",
+ "range",
+ "name",
+ "kind"
+ ]
+ },
+ "FilePartSource": {
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/FileSource"
+ },
+ {
+ "$ref": "#/components/schemas/SymbolSource"
+ }
+ ]
+ },
+ "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"
+ }
+ },
+ "required": [
+ "status"
+ ]
+ },
+ "ToolStateRunning": {
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "string",
+ "const": "running"
+ },
+ "input": {},
+ "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"
+ ]
+ },
+ "Part": {
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/TextPart"
+ },
+ {
+ "$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"
+ }
+ ]
+ },
+ "TextPartInput": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "const": "text"
+ },
+ "text": {
+ "type": "string"
+ },
+ "synthetic": {
+ "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"
+ ]
+ },
+ "Command": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "agent": {
+ "type": "string"
+ },
+ "model": {
+ "type": "string"
+ },
+ "template": {
+ "type": "string"
+ },
+ "subtask": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "name",
+ "template"
+ ]
+ },
+ "Model": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "release_date": {
+ "type": "string"
+ },
+ "attachment": {
+ "type": "boolean"
+ },
+ "reasoning": {
+ "type": "boolean"
+ },
+ "temperature": {
+ "type": "boolean"
+ },
+ "tool_call": {
+ "type": "boolean"
+ },
+ "cost": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "number"
+ },
+ "output": {
+ "type": "number"
+ },
+ "cache_read": {
+ "type": "number"
+ },
+ "cache_write": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "input",
+ "output"
+ ]
+ },
+ "limit": {
+ "type": "object",
+ "properties": {
+ "context": {
+ "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"
+ ]
+ },
+ "options": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {}
+ },
+ "provider": {
+ "type": "object",
+ "properties": {
+ "npm": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "npm"
+ ]
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "release_date",
+ "attachment",
+ "reasoning",
+ "temperature",
+ "tool_call",
+ "cost",
+ "limit",
+ "options"
+ ]
+ },
+ "Provider": {
+ "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": {
+ "$ref": "#/components/schemas/Model"
+ }
+ }
+ },
+ "required": [
+ "name",
+ "env",
+ "id",
+ "models"
+ ]
+ },
+ "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"
+ ]
+ },
+ "Agent": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "subagent"
+ },
+ {
+ "type": "string",
+ "const": "primary"
+ },
+ {
+ "type": "string",
+ "const": "all"
+ }
+ ]
+ },
+ "builtIn": {
+ "type": "boolean"
+ },
+ "topP": {
+ "type": "number"
+ },
+ "temperature": {
+ "type": "number"
+ },
+ "permission": {
+ "type": "object",
+ "properties": {
+ "edit": {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "ask"
+ },
+ {
+ "type": "string",
+ "const": "allow"
+ },
+ {
+ "type": "string",
+ "const": "deny"
+ }
+ ]
+ },
+ "bash": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "ask"
+ },
+ {
+ "type": "string",
+ "const": "allow"
+ },
+ {
+ "type": "string",
+ "const": "deny"
+ }
+ ]
+ }
+ },
+ "webfetch": {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "ask"
+ },
+ {
+ "type": "string",
+ "const": "allow"
+ },
+ {
+ "type": "string",
+ "const": "deny"
+ }
+ ]
+ }
+ },
+ "required": [
+ "edit",
+ "bash"
+ ]
+ },
+ "model": {
+ "type": "object",
+ "properties": {
+ "modelID": {
+ "type": "string"
+ },
+ "providerID": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "modelID",
+ "providerID"
+ ]
+ },
+ "prompt": {
+ "type": "string"
+ },
+ "tools": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "type": "boolean"
+ }
+ },
+ "options": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {}
+ }
+ },
+ "required": [
+ "name",
+ "mode",
+ "builtIn",
+ "permission",
+ "tools",
+ "options"
+ ]
+ },
+ "OAuth": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "oauth"
+ },
+ "refresh": {
+ "type": "string"
+ },
+ "access": {
+ "type": "string"
+ },
+ "expires": {
+ "type": "number"
+ }
+ },
+ "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"
+ }
+ ]
+ },
+ "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.lsp.client.diagnostics": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "lsp.client.diagnostics"
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "serverID": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "serverID",
+ "path"
+ ]
+ }
+ },
+ "required": [
+ "type",
+ "properties"
+ ]
+ },
+ "Event.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"
+ ]
+ },
+ "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"
+ ]
+ },
+ "Permission": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "pattern": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ ]
+ },
+ "sessionID": {
+ "type": "string"
+ },
+ "messageID": {
+ "type": "string"
+ },
+ "callID": {
+ "type": "string"
+ },
+ "title": {
+ "type": "string"
+ },
+ "metadata": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {}
+ },
+ "time": {
+ "type": "object",
+ "properties": {
+ "created": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "created"
+ ]
+ }
+ },
+ "required": [
+ "id",
+ "type",
+ "sessionID",
+ "messageID",
+ "title",
+ "metadata",
+ "time"
+ ]
+ },
+ "Event.permission.updated": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "permission.updated"
+ },
+ "properties": {
+ "$ref": "#/components/schemas/Permission"
+ }
+ },
+ "required": [
+ "type",
+ "properties"
+ ]
+ },
+ "Event.permission.replied": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "permission.replied"
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "sessionID": {
+ "type": "string"
+ },
+ "permissionID": {
+ "type": "string"
+ },
+ "response": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "sessionID",
+ "permissionID",
+ "response"
+ ]
+ }
+ },
+ "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.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.todo.updated": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "todo.updated"
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "sessionID": {
+ "type": "string"
+ },
+ "todos": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Todo"
+ }
+ }
+ },
+ "required": [
+ "sessionID",
+ "todos"
+ ]
+ }
+ },
+ "required": [
+ "type",
+ "properties"
+ ]
+ },
+ "Event.session.idle": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "session.idle"
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "sessionID": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "sessionID"
+ ]
+ }
+ },
+ "required": [
+ "type",
+ "properties"
+ ]
+ },
+ "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.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.server.connected": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "server.connected"
+ },
+ "properties": {
+ "type": "object",
+ "properties": {}
+ }
+ },
+ "required": [
+ "type",
+ "properties"
+ ]
+ },
+ "Event.ide.installed": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "ide.installed"
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "ide": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "ide"
+ ]
+ }
+ },
+ "required": [
+ "type",
+ "properties"
+ ]
+ },
+ "Event": {
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/Event.installation.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.lsp.client.diagnostics"
+ },
+ {
+ "$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.permission.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.permission.replied"
+ },
+ {
+ "$ref": "#/components/schemas/Event.file.edited"
+ },
+ {
+ "$ref": "#/components/schemas/Event.file.watcher.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.todo.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.idle"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.created"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.deleted"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.error"
+ },
+ {
+ "$ref": "#/components/schemas/Event.server.connected"
+ },
+ {
+ "$ref": "#/components/schemas/Event.ide.installed"
+ }
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file