Files
2026-05-12 11:34:16 -04:00

3590 lines
116 KiB
Go

// Package swagger Code generated by swaggo/swag. DO NOT EDIT
package swagger
import "github.com/swaggo/swag"
const docTemplate = `{
"schemes": {{ marshal .Schemes }},
"swagger": "2.0",
"info": {
"description": "{{escape .Description}}",
"title": "{{.Title}}",
"contact": {
"name": "Charm",
"url": "https://charm.sh"
},
"license": {
"name": "MIT",
"url": "https://github.com/charmbracelet/crush/blob/main/LICENSE"
},
"version": "{{.Version}}"
},
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
"/config": {
"get": {
"produces": [
"application/json"
],
"tags": [
"system"
],
"summary": "Get server config",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object"
}
}
}
}
},
"/control": {
"post": {
"consumes": [
"application/json"
],
"tags": [
"system"
],
"summary": "Send server control command",
"parameters": [
{
"description": "Control command (e.g. shutdown)",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.ServerControl"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/health": {
"get": {
"tags": [
"system"
],
"summary": "Health check",
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/version": {
"get": {
"produces": [
"application/json"
],
"tags": [
"system"
],
"summary": "Get server version",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/proto.VersionInfo"
}
}
}
}
},
"/workspaces": {
"get": {
"produces": [
"application/json"
],
"tags": [
"workspaces"
],
"summary": "List workspaces",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/proto.Workspace"
}
}
}
}
},
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"workspaces"
],
"summary": "Create workspace",
"parameters": [
{
"description": "Workspace creation params",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.Workspace"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/proto.Workspace"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"workspaces"
],
"summary": "Get workspace",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/proto.Workspace"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
},
"delete": {
"tags": [
"workspaces"
],
"summary": "Delete workspace",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/agent": {
"get": {
"produces": [
"application/json"
],
"tags": [
"agent"
],
"summary": "Get agent info",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/proto.AgentInfo"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
},
"post": {
"consumes": [
"application/json"
],
"tags": [
"agent"
],
"summary": "Send message to agent",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Agent message",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.AgentMessage"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/agent/default-small-model": {
"get": {
"produces": [
"application/json"
],
"tags": [
"agent"
],
"summary": "Get default small model",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Provider ID",
"name": "provider_id",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/agent/init": {
"post": {
"tags": [
"agent"
],
"summary": "Initialize agent",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/agent/sessions/{sid}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"agent"
],
"summary": "Get agent session",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "sid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/proto.AgentSession"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/agent/sessions/{sid}/cancel": {
"post": {
"tags": [
"agent"
],
"summary": "Cancel agent session",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "sid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/agent/sessions/{sid}/prompts/clear": {
"post": {
"tags": [
"agent"
],
"summary": "Clear prompt queue",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "sid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/agent/sessions/{sid}/prompts/list": {
"get": {
"produces": [
"application/json"
],
"tags": [
"agent"
],
"summary": "List queued prompts",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "sid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/agent/sessions/{sid}/prompts/queued": {
"get": {
"produces": [
"application/json"
],
"tags": [
"agent"
],
"summary": "Get queued prompt status",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "sid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/agent/sessions/{sid}/summarize": {
"post": {
"tags": [
"agent"
],
"summary": "Summarize session",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "sid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/agent/update": {
"post": {
"tags": [
"agent"
],
"summary": "Update agent",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/config": {
"get": {
"produces": [
"application/json"
],
"tags": [
"workspaces"
],
"summary": "Get workspace config",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/config/compact": {
"post": {
"consumes": [
"application/json"
],
"tags": [
"config"
],
"summary": "Set compact mode",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Config compact request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.ConfigCompactRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/config/import-copilot": {
"post": {
"produces": [
"application/json"
],
"tags": [
"config"
],
"summary": "Import Copilot credentials",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/proto.ImportCopilotResponse"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/config/model": {
"post": {
"consumes": [
"application/json"
],
"tags": [
"config"
],
"summary": "Set the preferred model",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Config model request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.ConfigModelRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/config/provider-key": {
"post": {
"consumes": [
"application/json"
],
"tags": [
"config"
],
"summary": "Set provider API key",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Config provider key request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.ConfigProviderKeyRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/config/refresh-oauth": {
"post": {
"consumes": [
"application/json"
],
"tags": [
"config"
],
"summary": "Refresh OAuth token",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Refresh OAuth request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.ConfigRefreshOAuthRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/config/remove": {
"post": {
"consumes": [
"application/json"
],
"tags": [
"config"
],
"summary": "Remove a config field",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Config remove request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.ConfigRemoveRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/config/set": {
"post": {
"consumes": [
"application/json"
],
"tags": [
"config"
],
"summary": "Set a config field",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Config set request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.ConfigSetRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/events": {
"get": {
"produces": [
"text/event-stream"
],
"tags": [
"workspaces"
],
"summary": "Stream workspace events (SSE)",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/filetracker/lastread": {
"get": {
"produces": [
"application/json"
],
"tags": [
"filetracker"
],
"summary": "Get last read time for file",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "session_id",
"in": "query"
},
{
"type": "string",
"description": "File path",
"name": "path",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/filetracker/read": {
"post": {
"consumes": [
"application/json"
],
"tags": [
"filetracker"
],
"summary": "Record file read",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "File tracker read request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.FileTrackerReadRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/lsps": {
"get": {
"produces": [
"application/json"
],
"tags": [
"lsp"
],
"summary": "List LSP clients",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/proto.LSPClientInfo"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/lsps/start": {
"post": {
"consumes": [
"application/json"
],
"tags": [
"lsp"
],
"summary": "Start LSP server",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "LSP start request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.LSPStartRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/lsps/stop": {
"post": {
"tags": [
"lsp"
],
"summary": "Stop all LSP servers",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/lsps/{lsp}/diagnostics": {
"get": {
"produces": [
"application/json"
],
"tags": [
"lsp"
],
"summary": "Get LSP diagnostics",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "LSP client name",
"name": "lsp",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/mcp/get-prompt": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"mcp"
],
"summary": "Get MCP prompt",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "MCP get prompt request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.MCPGetPromptRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/proto.MCPGetPromptResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/mcp/read-resource": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"mcp"
],
"summary": "Read MCP resource",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "MCP read resource request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.MCPReadResourceRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/mcp/refresh-prompts": {
"post": {
"consumes": [
"application/json"
],
"tags": [
"mcp"
],
"summary": "Refresh MCP prompts",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "MCP name request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.MCPNameRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/mcp/refresh-resources": {
"post": {
"consumes": [
"application/json"
],
"tags": [
"mcp"
],
"summary": "Refresh MCP resources",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "MCP name request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.MCPNameRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/mcp/refresh-tools": {
"post": {
"consumes": [
"application/json"
],
"tags": [
"mcp"
],
"summary": "Refresh MCP tools",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "MCP name request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.MCPNameRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/mcp/states": {
"get": {
"produces": [
"application/json"
],
"tags": [
"mcp"
],
"summary": "Get MCP client states",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/proto.MCPClientInfo"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/messages/user": {
"get": {
"produces": [
"application/json"
],
"tags": [
"workspaces"
],
"summary": "Get all user messages for workspace",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/github_com_charmbracelet_crush_internal_proto.Message"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/permissions/grant": {
"post": {
"consumes": [
"application/json"
],
"tags": [
"permissions"
],
"summary": "Grant permission",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Permission grant",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.PermissionGrant"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/permissions/skip": {
"get": {
"produces": [
"application/json"
],
"tags": [
"permissions"
],
"summary": "Get skip permissions status",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/proto.PermissionSkipRequest"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
},
"post": {
"consumes": [
"application/json"
],
"tags": [
"permissions"
],
"summary": "Set skip permissions",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Permission skip request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.PermissionSkipRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/project/init": {
"post": {
"tags": [
"project"
],
"summary": "Mark project as initialized",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/project/init-prompt": {
"get": {
"produces": [
"application/json"
],
"tags": [
"project"
],
"summary": "Get project initialization prompt",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/proto.ProjectInitPromptResponse"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/project/needs-init": {
"get": {
"produces": [
"application/json"
],
"tags": [
"project"
],
"summary": "Check if project needs initialization",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/proto.ProjectNeedsInitResponse"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/providers": {
"get": {
"produces": [
"application/json"
],
"tags": [
"workspaces"
],
"summary": "Get workspace providers",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/sessions": {
"get": {
"produces": [
"application/json"
],
"tags": [
"sessions"
],
"summary": "List sessions",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/proto.Session"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
},
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"sessions"
],
"summary": "Create session",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Session creation params (title)",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.Session"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/proto.Session"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/sessions/{sid}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"sessions"
],
"summary": "Get session",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "sid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/proto.Session"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
},
"put": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"sessions"
],
"summary": "Update session",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "sid",
"in": "path",
"required": true
},
{
"description": "Updated session",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/proto.Session"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/proto.Session"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
},
"delete": {
"tags": [
"sessions"
],
"summary": "Delete session",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "sid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/sessions/{sid}/filetracker/files": {
"get": {
"produces": [
"application/json"
],
"tags": [
"filetracker"
],
"summary": "List tracked files for session",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "sid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/sessions/{sid}/history": {
"get": {
"produces": [
"application/json"
],
"tags": [
"sessions"
],
"summary": "Get session history",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "sid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/proto.File"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/sessions/{sid}/messages": {
"get": {
"produces": [
"application/json"
],
"tags": [
"sessions"
],
"summary": "Get session messages",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "sid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/github_com_charmbracelet_crush_internal_proto.Message"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
},
"/workspaces/{id}/sessions/{sid}/messages/user": {
"get": {
"produces": [
"application/json"
],
"tags": [
"sessions"
],
"summary": "Get user messages for session",
"parameters": [
{
"type": "string",
"description": "Workspace ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Session ID",
"name": "sid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/github_com_charmbracelet_crush_internal_proto.Message"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/proto.Error"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/proto.Error"
}
}
}
}
}
},
"definitions": {
"catwalk.Model": {
"type": "object",
"properties": {
"can_reason": {
"type": "boolean"
},
"context_window": {
"type": "integer"
},
"cost_per_1m_in": {
"type": "number"
},
"cost_per_1m_in_cached": {
"type": "number"
},
"cost_per_1m_out": {
"type": "number"
},
"cost_per_1m_out_cached": {
"type": "number"
},
"default_max_tokens": {
"type": "integer"
},
"default_reasoning_effort": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"options": {
"$ref": "#/definitions/catwalk.ModelOptions"
},
"reasoning_levels": {
"type": "array",
"items": {
"type": "string"
}
},
"supports_attachments": {
"type": "boolean"
}
}
},
"catwalk.ModelOptions": {
"type": "object",
"properties": {
"frequency_penalty": {
"type": "number"
},
"presence_penalty": {
"type": "number"
},
"provider_options": {
"type": "object",
"additionalProperties": {}
},
"temperature": {
"type": "number"
},
"top_k": {
"type": "integer"
},
"top_p": {
"type": "number"
}
}
},
"config.Attribution": {
"type": "object",
"properties": {
"co_authored_by": {
"type": "boolean"
},
"generated_with": {
"type": "boolean"
},
"trailer_style": {
"$ref": "#/definitions/config.TrailerStyle"
}
}
},
"config.Completions": {
"type": "object",
"properties": {
"max_depth": {
"type": "integer"
},
"max_items": {
"type": "integer"
}
}
},
"config.LSPConfig": {
"type": "object",
"properties": {
"args": {
"type": "array",
"items": {
"type": "string"
}
},
"command": {
"type": "string"
},
"disabled": {
"type": "boolean"
},
"env": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"filetypes": {
"type": "array",
"items": {
"type": "string"
}
},
"init_options": {
"type": "object",
"additionalProperties": {}
},
"options": {
"type": "object",
"additionalProperties": {}
},
"root_markers": {
"type": "array",
"items": {
"type": "string"
}
},
"timeout": {
"type": "integer"
}
}
},
"config.LSPs": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/config.LSPConfig"
}
},
"config.MCPConfig": {
"type": "object",
"properties": {
"args": {
"type": "array",
"items": {
"type": "string"
}
},
"command": {
"type": "string"
},
"disabled": {
"type": "boolean"
},
"disabled_tools": {
"type": "array",
"items": {
"type": "string"
}
},
"env": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"headers": {
"description": "TODO: maybe make it possible to get the value from the env",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"timeout": {
"type": "integer"
},
"type": {
"$ref": "#/definitions/config.MCPType"
},
"url": {
"type": "string"
}
}
},
"config.MCPType": {
"type": "string",
"enum": [
"stdio",
"sse",
"http"
],
"x-enum-varnames": [
"MCPStdio",
"MCPSSE",
"MCPHttp"
]
},
"config.MCPs": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/config.MCPConfig"
}
},
"config.Permissions": {
"type": "object",
"properties": {
"allowed_tools": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"config.Scope": {
"type": "integer",
"enum": [
0,
1
],
"x-enum-varnames": [
"ScopeGlobal",
"ScopeWorkspace"
]
},
"config.SelectedModel": {
"type": "object",
"properties": {
"frequency_penalty": {
"type": "number"
},
"max_tokens": {
"description": "Overrides the default model configuration.",
"type": "integer"
},
"model": {
"description": "The model id as used by the provider API.\nRequired.",
"type": "string"
},
"presence_penalty": {
"type": "number"
},
"provider": {
"description": "The model provider, same as the key/id used in the providers config.\nRequired.",
"type": "string"
},
"provider_options": {
"description": "Override provider specific options.",
"type": "object",
"additionalProperties": {}
},
"reasoning_effort": {
"description": "Only used by models that use the openai provider and need this set.",
"type": "string"
},
"temperature": {
"type": "number"
},
"think": {
"description": "Used by anthropic models that can reason to indicate if the model should think.",
"type": "boolean"
},
"top_k": {
"type": "integer"
},
"top_p": {
"type": "number"
}
}
},
"config.SelectedModelType": {
"type": "string",
"enum": [
"large",
"small"
],
"x-enum-varnames": [
"SelectedModelTypeLarge",
"SelectedModelTypeSmall"
]
},
"config.TUIOptions": {
"type": "object",
"properties": {
"compact_mode": {
"type": "boolean"
},
"completions": {
"$ref": "#/definitions/config.Completions"
},
"diff_mode": {
"type": "string"
},
"transparent": {
"type": "boolean"
}
}
},
"config.ToolGrep": {
"type": "object",
"properties": {
"timeout": {
"$ref": "#/definitions/time.Duration"
}
}
},
"config.ToolLs": {
"type": "object",
"properties": {
"max_depth": {
"type": "integer"
},
"max_items": {
"type": "integer"
}
}
},
"config.Tools": {
"type": "object",
"properties": {
"grep": {
"$ref": "#/definitions/config.ToolGrep"
},
"ls": {
"$ref": "#/definitions/config.ToolLs"
}
}
},
"config.TrailerStyle": {
"type": "string",
"enum": [
"none",
"co-authored-by",
"assisted-by"
],
"x-enum-varnames": [
"TrailerStyleNone",
"TrailerStyleCoAuthoredBy",
"TrailerStyleAssistedBy"
]
},
"csync.Map-string-config_ProviderConfig": {
"type": "object"
},
"github_com_charmbracelet_crush_internal_config.Config": {
"type": "object",
"properties": {
"$schema": {
"type": "string"
},
"lsp": {
"$ref": "#/definitions/config.LSPs"
},
"mcp": {
"$ref": "#/definitions/config.MCPs"
},
"models": {
"description": "We currently only support large/small as values here.",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/config.SelectedModel"
}
},
"options": {
"$ref": "#/definitions/github_com_charmbracelet_crush_internal_config.Options"
},
"permissions": {
"$ref": "#/definitions/config.Permissions"
},
"providers": {
"description": "The providers that are configured",
"allOf": [
{
"$ref": "#/definitions/csync.Map-string-config_ProviderConfig"
}
]
},
"recent_models": {
"description": "Recently used models stored in the data directory config.",
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"$ref": "#/definitions/config.SelectedModel"
}
}
},
"tools": {
"$ref": "#/definitions/config.Tools"
}
}
},
"github_com_charmbracelet_crush_internal_config.Options": {
"type": "object",
"properties": {
"attribution": {
"$ref": "#/definitions/config.Attribution"
},
"auto_lsp": {
"type": "boolean"
},
"context_paths": {
"type": "array",
"items": {
"type": "string"
}
},
"data_directory": {
"description": "DataDirectory is where Crush keeps per-project state such as the SQLite database and workspace overrides. Relative paths are resolved against the working directory; absolute paths are used verbatim. After defaulting the stored value is always absolute.",
"type": "string"
},
"debug": {
"type": "boolean"
},
"debug_lsp": {
"type": "boolean"
},
"disable_auto_summarize": {
"type": "boolean"
},
"disable_default_providers": {
"type": "boolean"
},
"disable_metrics": {
"type": "boolean"
},
"disable_notifications": {
"type": "boolean"
},
"disable_provider_auto_update": {
"type": "boolean"
},
"disabled_tools": {
"type": "array",
"items": {
"type": "string"
}
},
"initialize_as": {
"type": "string"
},
"progress": {
"type": "boolean"
},
"skills_paths": {
"type": "array",
"items": {
"type": "string"
}
},
"tui": {
"$ref": "#/definitions/config.TUIOptions"
}
}
},
"github_com_charmbracelet_crush_internal_proto.Message": {
"type": "object",
"properties": {
"created_at": {
"type": "integer"
},
"id": {
"type": "string"
},
"model": {
"type": "string"
},
"parts": {
"type": "array",
"items": {}
},
"provider": {
"type": "string"
},
"role": {
"$ref": "#/definitions/proto.MessageRole"
},
"session_id": {
"type": "string"
},
"updated_at": {
"type": "integer"
}
}
},
"lsp.ServerState": {
"type": "integer",
"enum": [
0,
1,
2,
3,
4,
5
],
"x-enum-varnames": [
"StateUnstarted",
"StateStarting",
"StateReady",
"StateError",
"StateStopped",
"StateDisabled"
]
},
"proto.AgentInfo": {
"type": "object",
"properties": {
"is_busy": {
"type": "boolean"
},
"is_ready": {
"type": "boolean"
},
"model": {
"$ref": "#/definitions/catwalk.Model"
},
"model_cfg": {
"$ref": "#/definitions/config.SelectedModel"
}
}
},
"proto.AgentMessage": {
"type": "object",
"properties": {
"attachments": {
"type": "array",
"items": {
"$ref": "#/definitions/proto.Attachment"
}
},
"prompt": {
"type": "string"
},
"session_id": {
"type": "string"
}
}
},
"proto.AgentSession": {
"type": "object",
"properties": {
"completion_tokens": {
"type": "integer"
},
"cost": {
"type": "number"
},
"created_at": {
"type": "integer"
},
"id": {
"type": "string"
},
"is_busy": {
"type": "boolean"
},
"message_count": {
"type": "integer"
},
"parent_session_id": {
"type": "string"
},
"prompt_tokens": {
"type": "integer"
},
"summary_message_id": {
"type": "string"
},
"title": {
"type": "string"
},
"updated_at": {
"type": "integer"
}
}
},
"proto.Attachment": {
"type": "object",
"properties": {
"content": {
"type": "array",
"items": {
"type": "integer"
}
},
"file_name": {
"type": "string"
},
"file_path": {
"type": "string"
},
"mime_type": {
"type": "string"
}
}
},
"proto.ConfigCompactRequest": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"scope": {
"$ref": "#/definitions/config.Scope"
}
}
},
"proto.ConfigModelRequest": {
"type": "object",
"properties": {
"model": {
"$ref": "#/definitions/config.SelectedModel"
},
"model_type": {
"$ref": "#/definitions/config.SelectedModelType"
},
"scope": {
"$ref": "#/definitions/config.Scope"
}
}
},
"proto.ConfigProviderKeyRequest": {
"type": "object",
"properties": {
"api_key": {},
"provider_id": {
"type": "string"
},
"scope": {
"$ref": "#/definitions/config.Scope"
}
}
},
"proto.ConfigRefreshOAuthRequest": {
"type": "object",
"properties": {
"provider_id": {
"type": "string"
},
"scope": {
"$ref": "#/definitions/config.Scope"
}
}
},
"proto.ConfigRemoveRequest": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"scope": {
"$ref": "#/definitions/config.Scope"
}
}
},
"proto.ConfigSetRequest": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"scope": {
"$ref": "#/definitions/config.Scope"
},
"value": {}
}
},
"proto.Error": {
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
},
"proto.File": {
"type": "object",
"properties": {
"content": {
"type": "string"
},
"created_at": {
"type": "integer"
},
"id": {
"type": "string"
},
"path": {
"type": "string"
},
"session_id": {
"type": "string"
},
"updated_at": {
"type": "integer"
},
"version": {
"type": "integer"
}
}
},
"proto.FileTrackerReadRequest": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"session_id": {
"type": "string"
}
}
},
"proto.ImportCopilotResponse": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"token": {}
}
},
"proto.LSPClientInfo": {
"type": "object",
"properties": {
"connected_at": {
"type": "string"
},
"diagnostic_count": {
"type": "integer"
},
"error": {},
"name": {
"type": "string"
},
"state": {
"$ref": "#/definitions/lsp.ServerState"
}
}
},
"proto.LSPStartRequest": {
"type": "object",
"properties": {
"path": {
"type": "string"
}
}
},
"proto.MCPClientInfo": {
"type": "object",
"properties": {
"connected_at": {
"type": "string"
},
"error": {},
"name": {
"type": "string"
},
"prompt_count": {
"type": "integer"
},
"resource_count": {
"type": "integer"
},
"state": {
"$ref": "#/definitions/proto.MCPState"
},
"tool_count": {
"type": "integer"
}
}
},
"proto.MCPGetPromptRequest": {
"type": "object",
"properties": {
"args": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"client_id": {
"type": "string"
},
"prompt_id": {
"type": "string"
}
}
},
"proto.MCPGetPromptResponse": {
"type": "object",
"properties": {
"prompt": {
"type": "string"
}
}
},
"proto.MCPNameRequest": {
"type": "object",
"properties": {
"name": {
"type": "string"
}
}
},
"proto.MCPReadResourceRequest": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"uri": {
"type": "string"
}
}
},
"proto.MCPState": {
"type": "integer",
"enum": [
0,
1,
2,
3
],
"x-enum-varnames": [
"MCPStateDisabled",
"MCPStateStarting",
"MCPStateConnected",
"MCPStateError"
]
},
"proto.MessageRole": {
"type": "string",
"enum": [
"assistant",
"user",
"system",
"tool"
],
"x-enum-varnames": [
"Assistant",
"User",
"System",
"Tool"
]
},
"proto.PermissionAction": {
"type": "string",
"enum": [
"allow",
"allow_session",
"deny"
],
"x-enum-varnames": [
"PermissionAllow",
"PermissionAllowForSession",
"PermissionDeny"
]
},
"proto.PermissionGrant": {
"type": "object",
"properties": {
"action": {
"$ref": "#/definitions/proto.PermissionAction"
},
"permission": {
"$ref": "#/definitions/proto.PermissionRequest"
}
}
},
"proto.PermissionRequest": {
"type": "object",
"properties": {
"action": {
"type": "string"
},
"description": {
"type": "string"
},
"id": {
"type": "string"
},
"params": {},
"path": {
"type": "string"
},
"session_id": {
"type": "string"
},
"tool_call_id": {
"type": "string"
},
"tool_name": {
"type": "string"
}
}
},
"proto.PermissionSkipRequest": {
"type": "object",
"properties": {
"skip": {
"type": "boolean"
}
}
},
"proto.ProjectInitPromptResponse": {
"type": "object",
"properties": {
"prompt": {
"type": "string"
}
}
},
"proto.ProjectNeedsInitResponse": {
"type": "object",
"properties": {
"needs_init": {
"type": "boolean"
}
}
},
"proto.ServerControl": {
"type": "object",
"properties": {
"command": {
"type": "string"
}
}
},
"proto.Session": {
"type": "object",
"properties": {
"completion_tokens": {
"type": "integer"
},
"cost": {
"type": "number"
},
"created_at": {
"type": "integer"
},
"id": {
"type": "string"
},
"message_count": {
"type": "integer"
},
"parent_session_id": {
"type": "string"
},
"prompt_tokens": {
"type": "integer"
},
"summary_message_id": {
"type": "string"
},
"title": {
"type": "string"
},
"updated_at": {
"type": "integer"
}
}
},
"proto.VersionInfo": {
"type": "object",
"properties": {
"commit": {
"type": "string"
},
"go_version": {
"type": "string"
},
"platform": {
"type": "string"
},
"version": {
"type": "string"
}
}
},
"proto.Workspace": {
"type": "object",
"properties": {
"config": {
"$ref": "#/definitions/github_com_charmbracelet_crush_internal_config.Config"
},
"data_dir": {
"type": "string"
},
"debug": {
"type": "boolean"
},
"env": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"path": {
"type": "string"
},
"version": {
"type": "string"
},
"yolo": {
"type": "boolean"
}
}
},
"time.Duration": {
"type": "integer",
"format": "int64",
"enum": [
-9223372036854775808,
9223372036854775807,
1,
1000,
1000000,
1000000000,
60000000000,
3600000000000
],
"x-enum-varnames": [
"minDuration",
"maxDuration",
"Nanosecond",
"Microsecond",
"Millisecond",
"Second",
"Minute",
"Hour"
]
}
}
}`
// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
Version: "1.0",
Host: "",
BasePath: "/v1",
Schemes: []string{},
Title: "Crush API",
Description: "Crush is a terminal-based AI coding assistant. This API is served over a Unix socket (or Windows named pipe) and provides programmatic access to workspaces, sessions, agents, LSP, MCP, and more.",
InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate,
LeftDelim: "{{",
RightDelim: "}}",
}
func init() {
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}