crush-schema.json

  1{
  2  "$schema": "http://json-schema.org/draft-07/schema#",
  3  "definitions": {
  4    "agent": {
  5      "description": "Agent configuration",
  6      "properties": {
  7        "maxTokens": {
  8          "description": "Maximum tokens for the agent",
  9          "minimum": 1,
 10          "type": "integer"
 11        },
 12        "model": {
 13          "description": "Model ID for the agent",
 14          "enum": [
 15            "gpt-4.1",
 16            "llama-3.3-70b-versatile",
 17            "azure.gpt-4.1",
 18            "openrouter.gpt-4o",
 19            "openrouter.o1-mini",
 20            "openrouter.claude-3-haiku",
 21            "claude-3-opus",
 22            "gpt-4o",
 23            "gpt-4o-mini",
 24            "o1",
 25            "meta-llama/llama-4-maverick-17b-128e-instruct",
 26            "azure.o3-mini",
 27            "openrouter.gpt-4o-mini",
 28            "openrouter.o1",
 29            "claude-3.5-haiku",
 30            "o4-mini",
 31            "azure.gpt-4.1-mini",
 32            "openrouter.o3",
 33            "grok-3-beta",
 34            "o3-mini",
 35            "qwen-qwq",
 36            "azure.o1",
 37            "openrouter.gemini-2.5-flash",
 38            "openrouter.gemini-2.5",
 39            "o1-mini",
 40            "azure.gpt-4o",
 41            "openrouter.gpt-4.1-mini",
 42            "openrouter.claude-3.5-sonnet",
 43            "openrouter.o3-mini",
 44            "gpt-4.1-mini",
 45            "gpt-4.5-preview",
 46            "gpt-4.1-nano",
 47            "deepseek-r1-distill-llama-70b",
 48            "azure.gpt-4o-mini",
 49            "openrouter.gpt-4.1",
 50            "bedrock.claude-3.7-sonnet",
 51            "claude-3-haiku",
 52            "o3",
 53            "gemini-2.0-flash-lite",
 54            "azure.o3",
 55            "azure.gpt-4.5-preview",
 56            "openrouter.claude-3-opus",
 57            "grok-3-mini-fast-beta",
 58            "claude-4-sonnet",
 59            "azure.o4-mini",
 60            "grok-3-fast-beta",
 61            "claude-3.5-sonnet",
 62            "azure.o1-mini",
 63            "openrouter.claude-3.7-sonnet",
 64            "openrouter.gpt-4.5-preview",
 65            "grok-3-mini-beta",
 66            "claude-3.7-sonnet",
 67            "gemini-2.0-flash",
 68            "openrouter.deepseek-r1-free",
 69            "vertexai.gemini-2.5-flash",
 70            "vertexai.gemini-2.5",
 71            "o1-pro",
 72            "gemini-2.5",
 73            "meta-llama/llama-4-scout-17b-16e-instruct",
 74            "azure.gpt-4.1-nano",
 75            "openrouter.gpt-4.1-nano",
 76            "gemini-2.5-flash",
 77            "openrouter.o4-mini",
 78            "openrouter.claude-3.5-haiku",
 79            "claude-4-opus",
 80            "openrouter.o1-pro"
 81          ],
 82          "type": "string"
 83        },
 84        "reasoningEffort": {
 85          "description": "Reasoning effort for models that support it (OpenAI, Anthropic)",
 86          "enum": [
 87            "low",
 88            "medium",
 89            "high"
 90          ],
 91          "type": "string"
 92        }
 93      },
 94      "required": [
 95        "model"
 96      ],
 97      "type": "object"
 98    }
 99  },
100  "description": "Configuration schema for the Crush application",
101  "properties": {
102    "agents": {
103      "additionalProperties": {
104        "description": "Agent configuration",
105        "properties": {
106          "maxTokens": {
107            "description": "Maximum tokens for the agent",
108            "minimum": 1,
109            "type": "integer"
110          },
111          "model": {
112            "description": "Model ID for the agent",
113            "enum": [
114              "gpt-4.1",
115              "llama-3.3-70b-versatile",
116              "azure.gpt-4.1",
117              "openrouter.gpt-4o",
118              "openrouter.o1-mini",
119              "openrouter.claude-3-haiku",
120              "claude-3-opus",
121              "gpt-4o",
122              "gpt-4o-mini",
123              "o1",
124              "meta-llama/llama-4-maverick-17b-128e-instruct",
125              "azure.o3-mini",
126              "openrouter.gpt-4o-mini",
127              "openrouter.o1",
128              "claude-3.5-haiku",
129              "o4-mini",
130              "azure.gpt-4.1-mini",
131              "openrouter.o3",
132              "grok-3-beta",
133              "o3-mini",
134              "qwen-qwq",
135              "azure.o1",
136              "openrouter.gemini-2.5-flash",
137              "openrouter.gemini-2.5",
138              "o1-mini",
139              "azure.gpt-4o",
140              "openrouter.gpt-4.1-mini",
141              "openrouter.claude-3.5-sonnet",
142              "openrouter.o3-mini",
143              "gpt-4.1-mini",
144              "gpt-4.5-preview",
145              "gpt-4.1-nano",
146              "deepseek-r1-distill-llama-70b",
147              "azure.gpt-4o-mini",
148              "openrouter.gpt-4.1",
149              "bedrock.claude-3.7-sonnet",
150              "claude-3-haiku",
151              "o3",
152              "gemini-2.0-flash-lite",
153              "azure.o3",
154              "azure.gpt-4.5-preview",
155              "openrouter.claude-3-opus",
156              "grok-3-mini-fast-beta",
157              "claude-4-sonnet",
158              "azure.o4-mini",
159              "grok-3-fast-beta",
160              "claude-3.5-sonnet",
161              "azure.o1-mini",
162              "openrouter.claude-3.7-sonnet",
163              "openrouter.gpt-4.5-preview",
164              "grok-3-mini-beta",
165              "claude-3.7-sonnet",
166              "gemini-2.0-flash",
167              "openrouter.deepseek-r1-free",
168              "vertexai.gemini-2.5-flash",
169              "vertexai.gemini-2.5",
170              "o1-pro",
171              "gemini-2.5",
172              "meta-llama/llama-4-scout-17b-16e-instruct",
173              "azure.gpt-4.1-nano",
174              "openrouter.gpt-4.1-nano",
175              "gemini-2.5-flash",
176              "openrouter.o4-mini",
177              "openrouter.claude-3.5-haiku",
178              "claude-4-opus",
179              "openrouter.o1-pro"
180            ],
181            "type": "string"
182          },
183          "reasoningEffort": {
184            "description": "Reasoning effort for models that support it (OpenAI, Anthropic)",
185            "enum": [
186              "low",
187              "medium",
188              "high"
189            ],
190            "type": "string"
191          }
192        },
193        "required": [
194          "model"
195        ],
196        "type": "object"
197      },
198      "description": "Agent configurations",
199      "properties": {
200        "coder": {
201          "$ref": "#/definitions/agent"
202        },
203        "task": {
204          "$ref": "#/definitions/agent"
205        },
206        "title": {
207          "$ref": "#/definitions/agent"
208        }
209      },
210      "type": "object"
211    },
212    "contextPaths": {
213      "default": [
214        ".github/copilot-instructions.md",
215        ".cursorrules",
216        ".cursor/rules/",
217        "CLAUDE.md",
218        "CLAUDE.local.md",
219        "crush.md",
220        "crush.local.md",
221        "Crush.md",
222        "Crush.local.md",
223        "CRUSH.md",
224        "CRUSH.local.md"
225      ],
226      "description": "Context paths for the application",
227      "items": {
228        "type": "string"
229      },
230      "type": "array"
231    },
232    "data": {
233      "description": "Storage configuration",
234      "properties": {
235        "directory": {
236          "default": ".crush",
237          "description": "Directory where application data is stored",
238          "type": "string"
239        }
240      },
241      "required": [
242        "directory"
243      ],
244      "type": "object"
245    },
246    "debug": {
247      "default": false,
248      "description": "Enable debug mode",
249      "type": "boolean"
250    },
251    "debugLSP": {
252      "default": false,
253      "description": "Enable LSP debug mode",
254      "type": "boolean"
255    },
256    "lsp": {
257      "additionalProperties": {
258        "description": "LSP configuration for a language",
259        "properties": {
260          "args": {
261            "description": "Command arguments for the LSP server",
262            "items": {
263              "type": "string"
264            },
265            "type": "array"
266          },
267          "command": {
268            "description": "Command to execute for the LSP server",
269            "type": "string"
270          },
271          "disabled": {
272            "default": false,
273            "description": "Whether the LSP is disabled",
274            "type": "boolean"
275          },
276          "options": {
277            "description": "Additional options for the LSP server",
278            "type": "object"
279          }
280        },
281        "required": [
282          "command"
283        ],
284        "type": "object"
285      },
286      "description": "Language Server Protocol configurations",
287      "type": "object"
288    },
289    "mcpServers": {
290      "additionalProperties": {
291        "description": "MCP server configuration",
292        "properties": {
293          "args": {
294            "description": "Command arguments for the MCP server",
295            "items": {
296              "type": "string"
297            },
298            "type": "array"
299          },
300          "command": {
301            "description": "Command to execute for the MCP server",
302            "type": "string"
303          },
304          "env": {
305            "description": "Environment variables for the MCP server",
306            "items": {
307              "type": "string"
308            },
309            "type": "array"
310          },
311          "headers": {
312            "additionalProperties": {
313              "type": "string"
314            },
315            "description": "HTTP headers for SSE type MCP servers",
316            "type": "object"
317          },
318          "type": {
319            "default": "stdio",
320            "description": "Type of MCP server",
321            "enum": [
322              "stdio",
323              "sse"
324            ],
325            "type": "string"
326          },
327          "url": {
328            "description": "URL for SSE type MCP servers",
329            "type": "string"
330          }
331        },
332        "required": [
333          "command"
334        ],
335        "type": "object"
336      },
337      "description": "Model Control Protocol server configurations",
338      "type": "object"
339    },
340    "providers": {
341      "additionalProperties": {
342        "description": "Provider configuration",
343        "properties": {
344          "apiKey": {
345            "description": "API key for the provider",
346            "type": "string"
347          },
348          "disabled": {
349            "default": false,
350            "description": "Whether the provider is disabled",
351            "type": "boolean"
352          },
353          "provider": {
354            "description": "Provider type",
355            "enum": [
356              "anthropic",
357              "openai",
358              "gemini",
359              "groq",
360              "openrouter",
361              "bedrock",
362              "azure",
363              "vertexai"
364            ],
365            "type": "string"
366          }
367        },
368        "type": "object"
369      },
370      "description": "LLM provider configurations",
371      "type": "object"
372    },
373    "tui": {
374      "description": "Terminal User Interface configuration",
375      "properties": {
376        "theme": {
377          "default": "crush",
378          "description": "TUI theme name",
379          "enum": [
380            "crush",
381            "catppuccin",
382            "dracula",
383            "flexoki",
384            "gruvbox",
385            "monokai",
386            "onedark",
387            "tokyonight",
388            "tron"
389          ],
390          "type": "string"
391        }
392      },
393      "type": "object"
394    },
395    "wd": {
396      "description": "Working directory for the application",
397      "type": "string"
398    }
399  },
400  "title": "Crush Configuration",
401  "type": "object"
402}