{
  "openapi": "3.0.0",
  "info": {
    "title": "opencode",
    "description": "opencode api",
    "version": "1.0.0"
  },
  "paths": {
    "/event": {
      "get": {
        "responses": {
          "200": {
            "description": "Event stream",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Event"
                }
              }
            }
          }
        },
        "operationId": "getEvent",
        "parameters": [],
        "description": "Get events"
      }
    },
    "/app_info": {
      "post": {
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/App.Info"
                }
              }
            }
          }
        },
        "operationId": "postApp_info",
        "parameters": [],
        "description": "Get app info"
      }
    },
    "/config_get": {
      "post": {
        "responses": {
          "200": {
            "description": "Get config info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Config.Info"
                }
              }
            }
          }
        },
        "operationId": "postConfig_get",
        "parameters": [],
        "description": "Get config info"
      }
    },
    "/app_initialize": {
      "post": {
        "responses": {
          "200": {
            "description": "Initialize the app",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          }
        },
        "operationId": "postApp_initialize",
        "parameters": [],
        "description": "Initialize the app"
      }
    },
    "/session_initialize": {
      "post": {
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          }
        },
        "operationId": "postSession_initialize",
        "parameters": [],
        "description": "Analyze the app and create an AGENTS.md file",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sessionID": {
                    "type": "string"
                  },
                  "providerID": {
                    "type": "string"
                  },
                  "modelID": {
                    "type": "string"
                  }
                },
                "required": [
                  "sessionID",
                  "providerID",
                  "modelID"
                ]
              }
            }
          }
        }
      }
    },
    "/path_get": {
      "post": {
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "root": {
                      "type": "string"
                    },
                    "data": {
                      "type": "string"
                    },
                    "cwd": {
                      "type": "string"
                    },
                    "config": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "root",
                    "data",
                    "cwd",
                    "config"
                  ]
                }
              }
            }
          }
        },
        "operationId": "postPath_get",
        "parameters": [],
        "description": "Get paths"
      }
    },
    "/session_create": {
      "post": {
        "responses": {
          "200": {
            "description": "Successfully created session",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/session.info"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "operationId": "postSession_create",
        "parameters": [],
        "description": "Create a new session"
      }
    },
    "/session_share": {
      "post": {
        "responses": {
          "200": {
            "description": "Successfully shared session",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/session.info"
                }
              }
            }
          }
        },
        "operationId": "postSession_share",
        "parameters": [],
        "description": "Share the session",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sessionID": {
                    "type": "string"
                  }
                },
                "required": [
                  "sessionID"
                ]
              }
            }
          }
        }
      }
    },
    "/session_messages": {
      "post": {
        "responses": {
          "200": {
            "description": "Successfully created session",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Message.Info"
                  }
                }
              }
            }
          }
        },
        "operationId": "postSession_messages",
        "parameters": [],
        "description": "Get messages for a session",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sessionID": {
                    "type": "string"
                  }
                },
                "required": [
                  "sessionID"
                ]
              }
            }
          }
        }
      }
    },
    "/session_list": {
      "post": {
        "responses": {
          "200": {
            "description": "List of sessions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/session.info"
                  }
                }
              }
            }
          }
        },
        "operationId": "postSession_list",
        "parameters": [],
        "description": "List all sessions"
      }
    },
    "/session_abort": {
      "post": {
        "responses": {
          "200": {
            "description": "Aborted session",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          }
        },
        "operationId": "postSession_abort",
        "parameters": [],
        "description": "Abort a session",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sessionID": {
                    "type": "string"
                  }
                },
                "required": [
                  "sessionID"
                ]
              }
            }
          }
        }
      }
    },
    "/session_summarize": {
      "post": {
        "responses": {
          "200": {
            "description": "Summarize the session",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          }
        },
        "operationId": "postSession_summarize",
        "parameters": [],
        "description": "Summarize the session",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sessionID": {
                    "type": "string"
                  },
                  "providerID": {
                    "type": "string"
                  },
                  "modelID": {
                    "type": "string"
                  }
                },
                "required": [
                  "sessionID",
                  "providerID",
                  "modelID"
                ]
              }
            }
          }
        }
      }
    },
    "/session_chat": {
      "post": {
        "responses": {
          "200": {
            "description": "Chat with a model",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Message.Info"
                }
              }
            }
          }
        },
        "operationId": "postSession_chat",
        "parameters": [],
        "description": "Chat with a model",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sessionID": {
                    "type": "string"
                  },
                  "providerID": {
                    "type": "string"
                  },
                  "modelID": {
                    "type": "string"
                  },
                  "parts": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Message.Part"
                    }
                  }
                },
                "required": [
                  "sessionID",
                  "providerID",
                  "modelID",
                  "parts"
                ]
              }
            }
          }
        }
      }
    },
    "/provider_list": {
      "post": {
        "responses": {
          "200": {
            "description": "List of providers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "providers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Provider.Info"
                      }
                    },
                    "default": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "providers",
                    "default"
                  ]
                }
              }
            }
          }
        },
        "operationId": "postProvider_list",
        "parameters": [],
        "description": "List all providers"
      }
    },
    "/file_search": {
      "post": {
        "responses": {
          "200": {
            "description": "Search for files",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "operationId": "postFile_search",
        "parameters": [],
        "description": "Search for files",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ]
              }
            }
          }
        }
      }
    },
    "/installation_info": {
      "post": {
        "responses": {
          "200": {
            "description": "Get installation info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstallationInfo"
                }
              }
            }
          }
        },
        "operationId": "postInstallation_info",
        "parameters": [],
        "description": "Get installation info"
      }
    }
  },
  "components": {
    "schemas": {
      "Event": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/Event.storage.write"
          },
          {
            "$ref": "#/components/schemas/Event.installation.updated"
          },
          {
            "$ref": "#/components/schemas/Event.lsp.client.diagnostics"
          },
          {
            "$ref": "#/components/schemas/Event.permission.updated"
          },
          {
            "$ref": "#/components/schemas/Event.message.updated"
          },
          {
            "$ref": "#/components/schemas/Event.message.part.updated"
          },
          {
            "$ref": "#/components/schemas/Event.session.updated"
          },
          {
            "$ref": "#/components/schemas/Event.session.error"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "storage.write": "#/components/schemas/Event.storage.write",
            "installation.updated": "#/components/schemas/Event.installation.updated",
            "lsp.client.diagnostics": "#/components/schemas/Event.lsp.client.diagnostics",
            "permission.updated": "#/components/schemas/Event.permission.updated",
            "message.updated": "#/components/schemas/Event.message.updated",
            "message.part.updated": "#/components/schemas/Event.message.part.updated",
            "session.updated": "#/components/schemas/Event.session.updated",
            "session.error": "#/components/schemas/Event.session.error"
          }
        }
      },
      "Event.storage.write": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "storage.write"
          },
          "properties": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "content": {}
            },
            "required": [
              "key"
            ]
          }
        },
        "required": [
          "type",
          "properties"
        ]
      },
      "Event.installation.updated": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "installation.updated"
          },
          "properties": {
            "type": "object",
            "properties": {
              "version": {
                "type": "string"
              }
            },
            "required": [
              "version"
            ]
          }
        },
        "required": [
          "type",
          "properties"
        ]
      },
      "Event.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.permission.updated": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "permission.updated"
          },
          "properties": {
            "$ref": "#/components/schemas/permission.info"
          }
        },
        "required": [
          "type",
          "properties"
        ]
      },
      "permission.info": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "sessionID": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {}
          },
          "time": {
            "type": "object",
            "properties": {
              "created": {
                "type": "number"
              }
            },
            "required": [
              "created"
            ]
          }
        },
        "required": [
          "id",
          "sessionID",
          "title",
          "metadata",
          "time"
        ]
      },
      "Event.message.updated": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "message.updated"
          },
          "properties": {
            "type": "object",
            "properties": {
              "info": {
                "$ref": "#/components/schemas/Message.Info"
              }
            },
            "required": [
              "info"
            ]
          }
        },
        "required": [
          "type",
          "properties"
        ]
      },
      "Message.Info": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "enum": [
              "user",
              "assistant"
            ]
          },
          "parts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Message.Part"
            }
          },
          "metadata": {
            "type": "object",
            "properties": {
              "time": {
                "type": "object",
                "properties": {
                  "created": {
                    "type": "number"
                  },
                  "completed": {
                    "type": "number"
                  }
                },
                "required": [
                  "created"
                ]
              },
              "error": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ProviderAuthError"
                  },
                  {
                    "$ref": "#/components/schemas/UnknownError"
                  }
                ],
                "discriminator": {
                  "propertyName": "name",
                  "mapping": {
                    "ProviderAuthError": "#/components/schemas/ProviderAuthError",
                    "UnknownError": "#/components/schemas/UnknownError"
                  }
                }
              },
              "sessionID": {
                "type": "string"
              },
              "tool": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "time": {
                      "type": "object",
                      "properties": {
                        "start": {
                          "type": "number"
                        },
                        "end": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "start",
                        "end"
                      ]
                    }
                  },
                  "required": [
                    "title",
                    "time"
                  ],
                  "additionalProperties": {}
                }
              },
              "assistant": {
                "type": "object",
                "properties": {
                  "system": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "modelID": {
                    "type": "string"
                  },
                  "providerID": {
                    "type": "string"
                  },
                  "path": {
                    "type": "object",
                    "properties": {
                      "cwd": {
                        "type": "string"
                      },
                      "root": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "cwd",
                      "root"
                    ]
                  },
                  "cost": {
                    "type": "number"
                  },
                  "summary": {
                    "type": "boolean"
                  },
                  "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": [
                  "system",
                  "modelID",
                  "providerID",
                  "path",
                  "cost",
                  "tokens"
                ]
              }
            },
            "required": [
              "time",
              "sessionID",
              "tool"
            ]
          }
        },
        "required": [
          "id",
          "role",
          "parts",
          "metadata"
        ]
      },
      "Message.Part": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/Message.Part.Text"
          },
          {
            "$ref": "#/components/schemas/Message.Part.Reasoning"
          },
          {
            "$ref": "#/components/schemas/Message.Part.ToolInvocation"
          },
          {
            "$ref": "#/components/schemas/Message.Part.SourceUrl"
          },
          {
            "$ref": "#/components/schemas/Message.Part.File"
          },
          {
            "$ref": "#/components/schemas/Message.Part.StepStart"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "text": "#/components/schemas/Message.Part.Text",
            "reasoning": "#/components/schemas/Message.Part.Reasoning",
            "tool-invocation": "#/components/schemas/Message.Part.ToolInvocation",
            "source-url": "#/components/schemas/Message.Part.SourceUrl",
            "file": "#/components/schemas/Message.Part.File",
            "step-start": "#/components/schemas/Message.Part.StepStart"
          }
        }
      },
      "Message.Part.Text": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "text"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "text"
        ]
      },
      "Message.Part.Reasoning": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "reasoning"
          },
          "text": {
            "type": "string"
          },
          "providerMetadata": {
            "type": "object",
            "additionalProperties": {}
          }
        },
        "required": [
          "type",
          "text"
        ]
      },
      "Message.Part.ToolInvocation": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "tool-invocation"
          },
          "toolInvocation": {
            "$ref": "#/components/schemas/Message.ToolInvocation"
          }
        },
        "required": [
          "type",
          "toolInvocation"
        ]
      },
      "Message.ToolInvocation": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/Message.ToolInvocation.ToolCall"
          },
          {
            "$ref": "#/components/schemas/Message.ToolInvocation.ToolPartialCall"
          },
          {
            "$ref": "#/components/schemas/Message.ToolInvocation.ToolResult"
          }
        ],
        "discriminator": {
          "propertyName": "state",
          "mapping": {
            "call": "#/components/schemas/Message.ToolInvocation.ToolCall",
            "partial-call": "#/components/schemas/Message.ToolInvocation.ToolPartialCall",
            "result": "#/components/schemas/Message.ToolInvocation.ToolResult"
          }
        }
      },
      "Message.ToolInvocation.ToolCall": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "const": "call"
          },
          "step": {
            "type": "number"
          },
          "toolCallId": {
            "type": "string"
          },
          "toolName": {
            "type": "string"
          },
          "args": {}
        },
        "required": [
          "state",
          "toolCallId",
          "toolName"
        ]
      },
      "Message.ToolInvocation.ToolPartialCall": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "const": "partial-call"
          },
          "step": {
            "type": "number"
          },
          "toolCallId": {
            "type": "string"
          },
          "toolName": {
            "type": "string"
          },
          "args": {}
        },
        "required": [
          "state",
          "toolCallId",
          "toolName"
        ]
      },
      "Message.ToolInvocation.ToolResult": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "const": "result"
          },
          "step": {
            "type": "number"
          },
          "toolCallId": {
            "type": "string"
          },
          "toolName": {
            "type": "string"
          },
          "args": {},
          "result": {
            "type": "string"
          }
        },
        "required": [
          "state",
          "toolCallId",
          "toolName",
          "result"
        ]
      },
      "Message.Part.SourceUrl": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "source-url"
          },
          "sourceId": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "providerMetadata": {
            "type": "object",
            "additionalProperties": {}
          }
        },
        "required": [
          "type",
          "sourceId",
          "url"
        ]
      },
      "Message.Part.File": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "file"
          },
          "mediaType": {
            "type": "string"
          },
          "filename": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "mediaType",
          "url"
        ]
      },
      "Message.Part.StepStart": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "step-start"
          }
        },
        "required": [
          "type"
        ]
      },
      "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"
        ]
      },
      "Event.message.part.updated": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "message.part.updated"
          },
          "properties": {
            "type": "object",
            "properties": {
              "part": {
                "$ref": "#/components/schemas/Message.Part"
              },
              "sessionID": {
                "type": "string"
              },
              "messageID": {
                "type": "string"
              }
            },
            "required": [
              "part",
              "sessionID",
              "messageID"
            ]
          }
        },
        "required": [
          "type",
          "properties"
        ]
      },
      "Event.session.updated": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "session.updated"
          },
          "properties": {
            "type": "object",
            "properties": {
              "info": {
                "$ref": "#/components/schemas/session.info"
              }
            },
            "required": [
              "info"
            ]
          }
        },
        "required": [
          "type",
          "properties"
        ]
      },
      "session.info": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^ses"
          },
          "parentID": {
            "type": "string",
            "pattern": "^ses"
          },
          "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"
              }
            },
            "required": [
              "created",
              "updated"
            ]
          }
        },
        "required": [
          "id",
          "title",
          "version",
          "time"
        ]
      },
      "Event.session.error": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "session.error"
          },
          "properties": {
            "type": "object",
            "properties": {
              "error": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ProviderAuthError"
                  },
                  {
                    "$ref": "#/components/schemas/UnknownError"
                  }
                ],
                "discriminator": {
                  "propertyName": "name",
                  "mapping": {
                    "ProviderAuthError": "#/components/schemas/ProviderAuthError",
                    "UnknownError": "#/components/schemas/UnknownError"
                  }
                }
              }
            }
          }
        },
        "required": [
          "type",
          "properties"
        ]
      },
      "App.Info": {
        "type": "object",
        "properties": {
          "user": {
            "type": "string"
          },
          "git": {
            "type": "boolean"
          },
          "path": {
            "type": "object",
            "properties": {
              "config": {
                "type": "string"
              },
              "data": {
                "type": "string"
              },
              "root": {
                "type": "string"
              },
              "cwd": {
                "type": "string"
              },
              "state": {
                "type": "string"
              }
            },
            "required": [
              "config",
              "data",
              "root",
              "cwd",
              "state"
            ]
          },
          "time": {
            "type": "object",
            "properties": {
              "initialized": {
                "type": "number"
              }
            }
          }
        },
        "required": [
          "user",
          "git",
          "path",
          "time"
        ]
      },
      "Config.Info": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON schema reference for configuration validation"
          },
          "theme": {
            "type": "string",
            "description": "Theme name to use for the interface"
          },
          "keybinds": {
            "$ref": "#/components/schemas/Config.Keybinds",
            "description": "Custom keybind configurations"
          },
          "autoshare": {
            "type": "boolean",
            "description": "Share newly created sessions automatically"
          },
          "autoupdate": {
            "type": "boolean",
            "description": "Automatically update to the latest version"
          },
          "disabled_providers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Disable providers that are loaded automatically"
          },
          "model": {
            "type": "string",
            "description": "Model to use in the format of provider/model, eg anthropic/claude-2"
          },
          "provider": {
            "type": "object",
            "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",
                  "additionalProperties": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "attachment": {
                        "type": "boolean"
                      },
                      "reasoning": {
                        "type": "boolean"
                      },
                      "temperature": {
                        "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"
                        ]
                      },
                      "id": {
                        "type": "string"
                      }
                    }
                  }
                },
                "options": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "required": [
                "models"
              ]
            },
            "description": "Custom provider configurations and model overrides"
          },
          "mcp": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Config.McpLocal"
                },
                {
                  "$ref": "#/components/schemas/Config.McpRemote"
                }
              ],
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "local": "#/components/schemas/Config.McpLocal",
                  "remote": "#/components/schemas/Config.McpRemote"
                }
              }
            },
            "description": "MCP (Model Context Protocol) server configurations"
          }
        }
      },
      "Config.Keybinds": {
        "type": "object",
        "properties": {
          "leader": {
            "type": "string",
            "description": "Leader key for keybind combinations"
          },
          "help": {
            "type": "string",
            "description": "Show help dialog"
          },
          "editor_open": {
            "type": "string",
            "description": "Open external editor"
          },
          "session_new": {
            "type": "string",
            "description": "Create a new session"
          },
          "session_list": {
            "type": "string",
            "description": "List all sessions"
          },
          "session_share": {
            "type": "string",
            "description": "Share current session"
          },
          "session_interrupt": {
            "type": "string",
            "description": "Interrupt current session"
          },
          "session_compact": {
            "type": "string",
            "description": "Toggle compact mode for session"
          },
          "tool_details": {
            "type": "string",
            "description": "Show tool details"
          },
          "model_list": {
            "type": "string",
            "description": "List available models"
          },
          "theme_list": {
            "type": "string",
            "description": "List available themes"
          },
          "project_init": {
            "type": "string",
            "description": "Initialize project configuration"
          },
          "input_clear": {
            "type": "string",
            "description": "Clear input field"
          },
          "input_paste": {
            "type": "string",
            "description": "Paste from clipboard"
          },
          "input_submit": {
            "type": "string",
            "description": "Submit input"
          },
          "input_newline": {
            "type": "string",
            "description": "Insert newline in input"
          },
          "history_previous": {
            "type": "string",
            "description": "Navigate to previous history item"
          },
          "history_next": {
            "type": "string",
            "description": "Navigate to next history item"
          },
          "messages_page_up": {
            "type": "string",
            "description": "Scroll messages up by one page"
          },
          "messages_page_down": {
            "type": "string",
            "description": "Scroll messages down by one page"
          },
          "messages_half_page_up": {
            "type": "string",
            "description": "Scroll messages up by half page"
          },
          "messages_half_page_down": {
            "type": "string",
            "description": "Scroll messages down by half page"
          },
          "messages_previous": {
            "type": "string",
            "description": "Navigate to previous message"
          },
          "messages_next": {
            "type": "string",
            "description": "Navigate to next message"
          },
          "messages_first": {
            "type": "string",
            "description": "Navigate to first message"
          },
          "messages_last": {
            "type": "string",
            "description": "Navigate to last message"
          },
          "app_exit": {
            "type": "string",
            "description": "Exit the application"
          }
        }
      },
      "Provider.Info": {
        "type": "object",
        "properties": {
          "api": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "env": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "id": {
            "type": "string"
          },
          "npm": {
            "type": "string"
          },
          "models": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Model.Info"
            }
          }
        },
        "required": [
          "name",
          "env",
          "id",
          "models"
        ]
      },
      "Model.Info": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "attachment": {
            "type": "boolean"
          },
          "reasoning": {
            "type": "boolean"
          },
          "temperature": {
            "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"
            ]
          },
          "id": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "attachment",
          "reasoning",
          "temperature",
          "cost",
          "limit",
          "id"
        ]
      },
      "Config.McpLocal": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "local",
            "description": "Type of MCP server connection"
          },
          "command": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Command and arguments to run the MCP server"
          },
          "environment": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment variables to set when running the MCP server"
          }
        },
        "required": [
          "type",
          "command"
        ]
      },
      "Config.McpRemote": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "remote",
            "description": "Type of MCP server connection"
          },
          "url": {
            "type": "string",
            "description": "URL of the remote MCP server"
          }
        },
        "required": [
          "type",
          "url"
        ]
      },
      "Error": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": {}
          }
        },
        "required": [
          "data"
        ]
      },
      "InstallationInfo": {
        "type": "object",
        "properties": {
          "version": {
            "type": "string"
          },
          "latest": {
            "type": "string"
          }
        },
        "required": [
          "version",
          "latest"
        ]
      }
    }
  }
}