on main help sign in
chore: auto-update files
de04fc2Charm
internal/agent/hyper/provider.json+1−1
@@ -1 +1 @@
1−{"name":"Charm Hyper","id":"hyper","api_endpoint":"https://hyper.charm.land/api/v1/fantasy","type":"hyper","default_large_model_id":"claude-opus-4-5","default_small_model_id":"claude-haiku-4-5","models":[{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5","cost_per_1m_in":1,"cost_per_1m_out":5,"cost_per_1m_in_cached":1.25,"cost_per_1m_out_cached":0.1,"context_window":200000,"default_max_tokens":64000,"can_reason":true,"supports_attachments":true,"options":{}},{"id":"claude-opus-4-5","name":"Claude Opus 4.5","cost_per_1m_in":5,"cost_per_1m_out":25,"cost_per_1m_in_cached":6.25,"cost_per_1m_out_cached":0.5,"context_window":200000,"default_max_tokens":64000,"can_reason":true,"supports_attachments":true,"options":{}},{"id":"claude-opus-4-6","name":"Claude Opus 4.6","cost_per_1m_in":5,"cost_per_1m_out":25,"cost_per_1m_in_cached":6.25,"cost_per_1m_out_cached":0.5,"context_window":1000000,"default_max_tokens":126000,"can_reason":true,"reasoning_levels":["low","medium","high","max"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}},{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5","cost_per_1m_in":3,"cost_per_1m_out":15,"cost_per_1m_in_cached":3.75,"cost_per_1m_out_cached":0.3,"context_window":200000,"default_max_tokens":64000,"can_reason":true,"supports_attachments":true,"options":{}},{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","cost_per_1m_in":3,"cost_per_1m_out":15,"cost_per_1m_in_cached":3.75,"cost_per_1m_out_cached":0.3,"context_window":1000000,"default_max_tokens":64000,"can_reason":true,"reasoning_levels":["low","medium","high","max"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}},{"id":"gemini-3-flash","name":"Gemini 3 Flash","cost_per_1m_in":0.5,"cost_per_1m_out":3,"cost_per_1m_in_cached":0.05,"cost_per_1m_out_cached":0,"context_window":1000000,"default_max_tokens":8000,"can_reason":true,"reasoning_levels":["low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}},{"id":"gemini-3-pro-preview","name":"Gemini 3 Pro","cost_per_1m_in":2,"cost_per_1m_out":12,"cost_per_1m_in_cached":0.2,"cost_per_1m_out_cached":0,"context_window":1000000,"default_max_tokens":8000,"can_reason":true,"reasoning_levels":["low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}},{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro","cost_per_1m_in":2,"cost_per_1m_out":12,"cost_per_1m_in_cached":0.2,"cost_per_1m_out_cached":0,"context_window":1000000,"default_max_tokens":8000,"can_reason":true,"reasoning_levels":["low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}},{"id":"glm-4.7","name":"GLM-4.7","cost_per_1m_in":0.6,"cost_per_1m_out":2.2,"cost_per_1m_in_cached":0,"cost_per_1m_out_cached":0,"context_window":200000,"default_max_tokens":8000,"can_reason":true,"reasoning_levels":["low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":false,"options":{}},{"id":"glm-4.7-flashx","name":"GLM-4.7 Flash","cost_per_1m_in":0.06,"cost_per_1m_out":0.4,"cost_per_1m_in_cached":0.01,"cost_per_1m_out_cached":0,"context_window":200000,"default_max_tokens":8000,"can_reason":true,"reasoning_levels":["low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":false,"options":{}},{"id":"glm-5","name":"GLM-5","cost_per_1m_in":1,"cost_per_1m_out":3.2,"cost_per_1m_in_cached":0.2,"cost_per_1m_out_cached":0,"context_window":202800,"default_max_tokens":8000,"can_reason":true,"reasoning_levels":["low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":false,"options":{}},{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","cost_per_1m_in":1.25,"cost_per_1m_out":10,"cost_per_1m_in_cached":0.125,"cost_per_1m_out_cached":0.125,"context_window":400000,"default_max_tokens":128000,"can_reason":true,"reasoning_levels":["minimal","low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}},{"id":"gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","cost_per_1m_in":1.25,"cost_per_1m_out":10,"cost_per_1m_in_cached":0.125,"cost_per_1m_out_cached":0.125,"context_window":400000,"default_max_tokens":128000,"can_reason":true,"reasoning_levels":["minimal","low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}},{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 Codex Mini","cost_per_1m_in":0.25,"cost_per_1m_out":2,"cost_per_1m_in_cached":0.025,"cost_per_1m_out_cached":0.025,"context_window":400000,"default_max_tokens":128000,"can_reason":true,"reasoning_levels":["low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}},{"id":"gpt-5.2","name":"GPT-5.2","cost_per_1m_in":1.75,"cost_per_1m_out":14,"cost_per_1m_in_cached":0.175,"cost_per_1m_out_cached":0.175,"context_window":400000,"default_max_tokens":128000,"can_reason":true,"reasoning_levels":["minimal","low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}},{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","cost_per_1m_in":1.75,"cost_per_1m_out":14,"cost_per_1m_in_cached":0.175,"cost_per_1m_out_cached":0.175,"context_window":400000,"default_max_tokens":128000,"can_reason":true,"reasoning_levels":["minimal","low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}},{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","cost_per_1m_in":1.75,"cost_per_1m_out":14,"cost_per_1m_in_cached":0.175,"cost_per_1m_out_cached":0.175,"context_window":400000,"default_max_tokens":128000,"can_reason":true,"reasoning_levels":["minimal","low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}},{"id":"gpt-5.4","name":"GPT-5.4","cost_per_1m_in":2.5,"cost_per_1m_out":15,"cost_per_1m_in_cached":0.25,"cost_per_1m_out_cached":0,"context_window":1050000,"default_max_tokens":128000,"can_reason":true,"reasoning_levels":["low","medium","high","xhigh"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}},{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","cost_per_1m_in":30,"cost_per_1m_out":180,"cost_per_1m_in_cached":0,"cost_per_1m_out_cached":0,"context_window":1050000,"default_max_tokens":128000,"can_reason":true,"reasoning_levels":["medium","high","xhigh"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}},{"id":"grok-4.20","name":"Grok 4.20","cost_per_1m_in":2,"cost_per_1m_out":6,"cost_per_1m_in_cached":0,"cost_per_1m_out_cached":0.2,"context_window":200000,"default_max_tokens":20000,"can_reason":true,"supports_attachments":true,"options":{}},{"id":"grok-code-fast-1","name":"Grok Code Fast","cost_per_1m_in":0.2,"cost_per_1m_out":1.5,"cost_per_1m_in_cached":0,"cost_per_1m_out_cached":0.02,"context_window":131072,"default_max_tokens":13107,"can_reason":true,"supports_attachments":false,"options":{}},{"id":"kimi-k2-0905","name":"Kimi K2","cost_per_1m_in":0.6,"cost_per_1m_out":2.5,"cost_per_1m_in_cached":0.15,"cost_per_1m_out_cached":0,"context_window":256000,"default_max_tokens":8000,"can_reason":false,"supports_attachments":false,"options":{}},{"id":"kimi-k2.5","name":"Kimi K2.5","cost_per_1m_in":0.6,"cost_per_1m_out":3,"cost_per_1m_in_cached":0.1,"cost_per_1m_out_cached":0,"context_window":262114,"default_max_tokens":8000,"can_reason":true,"reasoning_levels":["low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":true,"options":{}}]}
1+{"name":"Charm Hyper","id":"hyper","api_endpoint":"https://hyper.charm.land/api/v1/fantasy","type":"hyper","default_large_model_id":"kimi-k2.5","default_small_model_id":"gpt-oss-120b","models":[{"id":"kimi-k2.5","name":"Kimi-K2.5","cost_per_1m_in":0.55,"cost_per_1m_out":3,"cost_per_1m_in_cached":0.275,"cost_per_1m_out_cached":1.1,"context_window":262144,"default_max_tokens":26214,"can_reason":true,"reasoning_levels":["low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":false,"options":{}},{"id":"glm-5","name":"GLM-5","cost_per_1m_in":1,"cost_per_1m_out":3,"cost_per_1m_in_cached":0.5,"cost_per_1m_out_cached":0,"context_window":202752,"default_max_tokens":20275,"can_reason":true,"reasoning_levels":["low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":false,"options":{}},{"id":"gpt-oss-120b","name":"gpt-oss-120b","cost_per_1m_in":0.02,"cost_per_1m_out":0.1,"cost_per_1m_in_cached":0.01,"cost_per_1m_out_cached":0.04,"context_window":131072,"default_max_tokens":13107,"can_reason":true,"reasoning_levels":["low","medium","high"],"default_reasoning_effort":"medium","supports_attachments":false,"options":{}}]}
schema.json+3−193
@@ -64,10 +64,7 @@
64 "description": "Model configurations for different model types"
64 "description": "Model configurations for different model types"
65 },
65 },
66 "providers": {
66 "providers": {
67− "additionalProperties": {
68− "$ref": "#/$defs/ProviderConfig"
67+ "$ref": "#/$defs/Map[string,github.com/charmbracelet/crush/internal/config.ProviderConfig]",
69− },
70− "type": "object",
71 "description": "AI provider configurations"
68 "description": "AI provider configurations"
72 },
69 },
73 "mcp": {
70 "mcp": {
@@ -265,88 +262,8 @@
265 },
262 },
266 "type": "object"
263 "type": "object"
267 },
264 },
268− "Model": {
265+ "Map[string,github.com/charmbracelet/crush/internal/config.ProviderConfig]": {
269− "properties": {
270− "id": {
271− "type": "string"
272− },
273− "name": {
274− "type": "string"
275− },
276− "cost_per_1m_in": {
277− "type": "number"
278− },
279− "cost_per_1m_out": {
280− "type": "number"
281− },
282− "cost_per_1m_in_cached": {
283− "type": "number"
284− },
285− "cost_per_1m_out_cached": {
286− "type": "number"
287− },
288− "context_window": {
289− "type": "integer"
290− },
291− "default_max_tokens": {
292− "type": "integer"
293− },
294− "can_reason": {
295− "type": "boolean"
296− },
297− "reasoning_levels": {
298− "items": {
299− "type": "string"
300− },
301− "type": "array"
302− },
303− "default_reasoning_effort": {
304− "type": "string"
305− },
306− "supports_attachments": {
307− "type": "boolean"
308− },
309− "options": {
310− "$ref": "#/$defs/ModelOptions"
311− }
312− },
313− "additionalProperties": false,
314− "type": "object",
315− "required": [
316− "id",
317− "name",
318− "cost_per_1m_in",
319− "cost_per_1m_out",
320− "cost_per_1m_in_cached",
321− "cost_per_1m_out_cached",
322− "context_window",
323− "default_max_tokens",
324− "can_reason",
325− "supports_attachments",
326− "options"
327− ]
328− },
329− "ModelOptions": {
330− "properties": {
266+ "properties": {},
331− "temperature": {
332− "type": "number"
333− },
334− "top_p": {
335− "type": "number"
336− },
337− "top_k": {
338− "type": "integer"
339− },
340− "frequency_penalty": {
341− "type": "number"
342− },
343− "presence_penalty": {
344− "type": "number"
345− },
346− "provider_options": {
347− "type": "object"
348− }
349− },
350 "additionalProperties": false,
267 "additionalProperties": false,
351 "type": "object"
268 "type": "object"
352 },
269 },
@@ -478,89 +395,6 @@
478 "additionalProperties": false,
395 "additionalProperties": false,
479 "type": "object"
396 "type": "object"
480 },
397 },
481− "ProviderConfig": {
482− "properties": {
483− "id": {
484− "type": "string",
485− "description": "Unique identifier for the provider",
486− "examples": [
487− "openai"
488− ]
489− },
490− "name": {
491− "type": "string",
492− "description": "Human-readable name for the provider",
493− "examples": [
494− "OpenAI"
495− ]
496− },
497− "base_url": {
498− "type": "string",
499− "format": "uri",
500− "description": "Base URL for the provider's API",
501− "examples": [
502− "https://api.openai.com/v1"
503− ]
504− },
505− "type": {
506− "type": "string",
507− "enum": [
508− "openai",
509− "openai-compat",
510− "anthropic",
511− "gemini",
512− "azure",
513− "vertexai"
514− ],
515− "description": "Provider type that determines the API format",
516− "default": "openai"
517− },
518− "api_key": {
519− "type": "string",
520− "description": "API key for authentication with the provider",
521− "examples": [
522− "$OPENAI_API_KEY"
523− ]
524− },
525− "oauth": {
526− "$ref": "#/$defs/Token",
527− "description": "OAuth2 token for authentication with the provider"
528− },
529− "disable": {
530− "type": "boolean",
531− "description": "Whether this provider is disabled",
532− "default": false
533− },
534− "system_prompt_prefix": {
535− "type": "string",
536− "description": "Custom prefix to add to system prompts for this provider"
537− },
538− "extra_headers": {
539− "additionalProperties": {
540− "type": "string"
541− },
542− "type": "object",
543− "description": "Additional HTTP headers to send with requests"
544− },
545− "extra_body": {
546− "type": "object",
547− "description": "Additional fields to include in request bodies"
548− },
549− "provider_options": {
550− "type": "object",
551− "description": "Additional provider-specific options for this provider"
552− },
553− "models": {
554− "items": {
555− "$ref": "#/$defs/Model"
556− },
557− "type": "array",
558− "description": "List of models available from this provider"
559− }
560− },
561− "additionalProperties": false,
562− "type": "object"
563− },
564 "SelectedModel": {
398 "SelectedModel": {
565 "properties": {
399 "properties": {
566 "model": {
400 "model": {
@@ -671,30 +505,6 @@
671 "completions"
505 "completions"
672 ]
506 ]
673 },
507 },
674− "Token": {
675− "properties": {
676− "access_token": {
677− "type": "string"
678− },
679− "refresh_token": {
680− "type": "string"
681− },
682− "expires_in": {
683− "type": "integer"
684− },
685− "expires_at": {
686− "type": "integer"
687− }
688− },
689− "additionalProperties": false,
690− "type": "object",
691− "required": [
692− "access_token",
693− "refresh_token",
694− "expires_in",
695− "expires_at"
696− ]
697− },
698 "ToolGrep": {
508 "ToolGrep": {
699 "properties": {
509 "properties": {
700 "timeout": {
510 "timeout": {