@@ -64,7 +64,10 @@
64 "description": "Model configurations for different model types"
64 "description": "Model configurations for different model types"
66 "providers": {
66 "providers": {
67+ "additionalProperties": {
67− "$ref": "#/$defs/Map[string,github.com/charmbracelet/crush/internal/config.ProviderConfig]",
68+ "$ref": "#/$defs/ProviderConfig"
68 "description": "AI provider configurations"
71 "description": "AI provider configurations"
@@ -262,8 +265,88 @@
263 "type": "object"
266 "type": "object"
265− "Map[string,github.com/charmbracelet/crush/internal/config.ProviderConfig]": {
268+ "Model": {
279+ "cost_per_1m_out": {
282+ "cost_per_1m_in_cached": {
285+ "cost_per_1m_out_cached": {
291+ "default_max_tokens": {
297+ "reasoning_levels": {
303+ "default_reasoning_effort": {
306+ "supports_attachments": {
310+ "$ref": "#/$defs/ModelOptions"
313+ "additionalProperties": false,
320+ "cost_per_1m_in_cached",
321+ "cost_per_1m_out_cached",
323+ "default_max_tokens",
325+ "supports_attachments",
266− "properties": {},
330+ "properties": {
340+ "frequency_penalty": {
343+ "presence_penalty": {
346+ "provider_options": {
267 "additionalProperties": false,
350 "additionalProperties": false,
268 "type": "object"
351 "type": "object"
@@ -405,6 +488,89 @@
405 "additionalProperties": false,
488 "additionalProperties": false,
406 "type": "object"
489 "type": "object"
495+ "description": "Unique identifier for the provider",
502+ "description": "Human-readable name for the provider",
510+ "description": "Base URL for the provider's API",
512+ "https://api.openai.com/v1"
525+ "description": "Provider type that determines the API format",
530+ "description": "API key for authentication with the provider",
536+ "$ref": "#/$defs/Token",
537+ "description": "OAuth2 token for authentication with the provider"
541+ "description": "Whether this provider is disabled",
544+ "system_prompt_prefix": {
546+ "description": "Custom prefix to add to system prompts for this provider"
549+ "additionalProperties": {
553+ "description": "Additional HTTP headers to send with requests"
557+ "description": "Additional fields to include in request bodies"
559+ "provider_options": {
561+ "description": "Additional provider-specific options for this provider"
565+ "$ref": "#/$defs/Model"
568+ "description": "List of models available from this provider"
571+ "additionalProperties": false,
408 "SelectedModel": {
574 "SelectedModel": {
409 "properties": {
575 "properties": {
410 "model": {
576 "model": {
@@ -515,6 +681,30 @@
515 "completions"
681 "completions"
699+ "additionalProperties": false,
518 "ToolGrep": {
708 "ToolGrep": {
519 "properties": {
709 "properties": {
520 "timeout": {
710 "timeout": {