{"repo": "aaaaqwq/openclaw-team", "files": {"workspace/references/agi-super-team/skills/key-rotation/scripts/rebuild-env.sh": {"f3f3769d02e636b7fc3aa4bb845009943b252e8f": {"t": 1785745964.309188, "n": 3659, "h": "e3f76fdd5f32f711", "c": "#!/usr/bin/env bash\n# rebuild-env.sh — Rebuild ~/.openclaw/.env from pass vault\n# Usage: bash rebuild-env.sh [--dry-run]\nset -euo pipefail\n\nENV_FILE=\"$HOME/.openclaw/.env\"\nDRY_RUN=\"${1:-}\"\n\necho \"🔑 Rebuilding .env from pass vault...\"\n\n# Define all key mappings: ENV_VAR_NAME=pass_path\ndeclare -A KEY_MAP=(\n # Primary model providers\n [\"ZAI_API_KEY\"]=\"api/zai\"\n [\"XINGSUANCODE_KEY\"]=\"api/xingsuancode\"\n [\"XSC_BACKUP_API_KEY\"]=\"api/xingsuancode\"\n [\"XINGJIABIAPI_KEY\"]=\"api/xingjiabiapi\"\n [\"AIXN_API_KEY\"]=\"api/aixn\"\n [\"XAI_API_KEY\"]=\"api/xai\"\n [\"MOONSHOT_API_KEY\"]=\"api/kimi\"\n [\"MINIMAX_API_KEY\"]=\"api/minimax\"\n [\"WOW_API_KEY\"]=\"api/wow\"\n [\"XINYUAN_API_KEY\"]=\"api/xinyuan\"\n [\"OPENROUTER_API_KEY\"]=\"api/openrouter-vip\"\n [\"GOOGLE_AI_STUDIO_KEY\"]=\"api/google-ai-studio\"\n [\"DEEPSEEK_API_KEY\"]=\"api/deepseek\"\n \n # Search & tools\n [\"BRAVE_API_KEY\"]=\"api/brave\"\n [\"EXA_API_KEY\"]=\"api/exa\"\n [\"PERPLEXITY_API_KEY\"]=\"api/perplexity\"\n [\"TAVILY_API_KEY\"]=\"api/tavily\"\n [\"FIREFRAWL_API_KEY\"]=\"api/firecrawl\"\n \n # Media & services\n [\"KLINGAI_API_KEY\"]=\"api/klingai\"\n [\"NOTION_API_KEY\"]=\"api/notion\"\n \n # GitHub Copilot\n [\"GITHUB_COPILOT_KEY\"]=\"api/github-copilot\"\n [\"GITHUB_COPILOT_AGENTS_KEY\"]=\"api/github-copilot-agents\"\n \n # Feishu\n [\"FEISHU_OPENCLAW_APPID\"]=\"api/feishu-hanxing-appid\"\n [\"FEISHU_OPENCLAW_SECRET\"]=\"api/feishu-hanxing\"\n [\"FEISHU_PERSONAL_APPID\"]=\"api/feishu-personal-appid\"\n [\"FEISHU_PERSONAL_SECRET\"]=\"api/feishu-personal\"\n \n # Telegram bots\n [\"TG_XIAOOPS_BOT\"]=\"api/telegram-xiaoops-bot\"\n [\"TG_XIAOCODE_BOT\"]=\"api/telegram-xiaocode-bot\"\n [\"TG_XIAOQUANT_BOT\"]=\"api/telegram-xiaoquant-bot\"\n [\"TG_XIACONTENT_BOT\"]=\"api/telegram-xiacontent-bot\"\n [\"TG_XIAODATA_BOT\"]=\"api/telegram-xiaodata-bot\"\n [\"TG_XIAOFINANCE_BOT\"]=\"api/telegram-xiaofinance-bot\"\n [\"TG_XIAOMARKET_BOT\"]=\"api/telegram-xiaomarket-bot\"\n [\"TG_XIAOPM_BOT\"]=\"api/telegram-xiaopm-bot\"\n [\"TG_XIAORESEARCH_BOT\"]=\"api/telegram-xiaoresearch-bot\"\n [\"TG_XIAOLAW_BOT\"]=\"api/telegram-xiaolaw-bot\"\n [\"TG_XIAOM_BOT\"]=\"api/telegram-xiaom-bot\"\n)\n\n# Static keys (no pass entry)\ndeclare -A STATIC_KEYS=(\n [\"OLLAMA_API_KEY\"]=\"ollama\"\n)\n\n# Build new .env content\nCONTENT=\"# OpenClaw API Keys — auto-generated from pass vault\\n\"\nCONTENT+=\"# Generated: $(date -Iseconds)\\n\"\nCONTENT+=\"# DO NOT EDIT MANUALLY — run: bash ~/.openclaw/skills/key-rotation/scripts/rebuild-env.sh\\n\\n\"\n\nSUCCESS=0\nFAILED=0\nSKIPPED=0\n\n# Sort keys for consistent output\nfor var in $(echo \"${!KEY_MAP[@]}\" | tr ' ' '\\n' | sort); do\n pass_path=\"${KEY_MAP[$var]}\"\n val=$(pass show \"$pass_path\" 2>/dev/null | head -1) || true\n \n if [[ -n \"$val\" ]]; then\n CONTENT+=\"${var}=${val}\\n\"\n ((SUCCESS++))\n echo \" ✅ $var ← pass:$pass_path\"\n else\n CONTENT+=\"# ${var}= # FAILED: pass show $pass_path returned empty\\n\"\n ((FAILED++))\n echo \" ❌ $var ← pass:$pass_path (empty/missing)\"\n fi\ndone\n\n# Add static keys\nCONTENT+=\"\\n# --- Static keys ---\\n\"\nfor var in $(echo \"${!STATIC_KEYS[@]}\" | tr ' ' '\\n' | sort); do\n CONTENT+=\"${var}=${STATIC_KEYS[$var]}\\n\"\n ((SUCCESS++))\ndone\n\nif [[ \"$DRY_RUN\" == \"--dry-run\" ]]; then\n echo \"\"\n echo \"=== DRY RUN — would write to $ENV_FILE ===\"\n echo -e \"$CONTENT\" | sed 's/=.*/=***REDACTED***/'\nelse\n echo -e \"$CONTENT\" > \"$ENV_FILE\"\n chmod 600 \"$ENV_FILE\"\n echo \"\"\n echo \"✅ Written to $ENV_FILE (chmod 600)\"\nfi\n\necho \"\"\necho \"Summary: $SUCCESS succeeded, $FAILED failed, $SKIPPED skipped\"\n\nif [[ $FAILED -gt 0 ]]; then\n echo \"⚠️ Some keys failed — check pass entries\"\n exit 1\nfi\n"}, "34bd5f44dc70d37a378c6691da009cda09e467c5": {"t": 1785758331.8926463, "n": 3657, "h": "74f278850f2f173f", "c": "#!/usr/bin/env bash\n# rebuild-env.sh — Rebuild ~/.openclaw/.env from pass vault\n# Usage: bash rebuild-env.sh [--dry-run]\nset -euo pipefail\n\nENV_FILE=\"$HOME/.openclaw/.env\"\nDRY_RUN=\"${1:-}\"\n\necho \"🔑 Rebuilding .env from pass vault...\"\n\n# Define all key mappings: ENV_VAR_NAME=pass_path\ndeclare -A KEY_MAP=(\n # Primary model providers\n [\"ZAI_API_KEY\"]=\"api/zai\"\n [\"XINGSUANCODE_KEY\"]=\"api/xingsuancode\"\n [\"XSC_BACKUP_API_KEY\"]=\"api/xingsuancode\"\n [\"XINGJIABIAPI_KEY\"]=\"api/xingjiabiapi\"\n [\"AIXN_API_KEY\"]=\"api/aixn\"\n [\"XAI_API_KEY\"]=\"api/xai\"\n [\"MOONSHOT_API_KEY\"]=\"api/kimi\"\n [\"MINIMAX_API_KEY\"]=\"api/minimax\"\n [\"WOW_API_KEY\"]=\"api/wow\"\n [\"XINYUAN_API_KEY\"]=\"api/xinyuan\"\n [\"OPENROUTER_API_KEY\"]=\"api/openrouter-vip\"\n [\"GOOGLE_AI_STUDIO_KEY\"]=\"api/google-ai-studio\"\n [\"DEEPSEEK_API_KEY\"]=\"api/deepseek\"\n \n # Search & tools\n [\"BRAVE_API_KEY\"]=\"api/brave\"\n [\"EXA_API_KEY\"]=\"api/exa\"\n [\"PERPLEXITY_API_KEY\"]=\"api/perplexity\"\n [\"TAVILY_API_KEY\"]=\"api/tavily\"\n [\"FIREFRAWL_API_KEY\"]=\"api/firecrawl\"\n \n # Media & services\n [\"KLINGAI_API_KEY\"]=\"api/klingai\"\n [\"NOTION_API_KEY\"]=\"api/notion\"\n \n # GitHub Copilot\n [\"GITHUB_COPILOT_KEY\"]=\"api/github-copilot\"\n [\"GITHUB_COPILOT_AGENTS_KEY\"]=\"api/github-copilot-agents\"\n \n # Feishu\n [\"FEISHU_HANXING_APPID\"]=\"api/feishu-hanxing-appid\"\n [\"FEISHU_HANXING_SECRET\"]=\"api/feishu-hanxing\"\n [\"FEISHU_PERSONAL_APPID\"]=\"api/feishu-personal-appid\"\n [\"FEISHU_PERSONAL_SECRET\"]=\"api/feishu-personal\"\n \n # Telegram bots\n [\"TG_XIAOOPS_BOT\"]=\"api/telegram-xiaoops-bot\"\n [\"TG_XIAOCODE_BOT\"]=\"api/telegram-xiaocode-bot\"\n [\"TG_XIAOQUANT_BOT\"]=\"api/telegram-xiaoquant-bot\"\n [\"TG_XIACONTENT_BOT\"]=\"api/telegram-xiacontent-bot\"\n [\"TG_XIAODATA_BOT\"]=\"api/telegram-xiaodata-bot\"\n [\"TG_XIAOFINANCE_BOT\"]=\"api/telegram-xiaofinance-bot\"\n [\"TG_XIAOMARKET_BOT\"]=\"api/telegram-xiaomarket-bot\"\n [\"TG_XIAOPM_BOT\"]=\"api/telegram-xiaopm-bot\"\n [\"TG_XIAORESEARCH_BOT\"]=\"api/telegram-xiaoresearch-bot\"\n [\"TG_XIAOLAW_BOT\"]=\"api/telegram-xiaolaw-bot\"\n [\"TG_XIAOM_BOT\"]=\"api/telegram-xiaom-bot\"\n)\n\n# Static keys (no pass entry)\ndeclare -A STATIC_KEYS=(\n [\"OLLAMA_API_KEY\"]=\"ollama\"\n)\n\n# Build new .env content\nCONTENT=\"# OpenClaw API Keys — auto-generated from pass vault\\n\"\nCONTENT+=\"# Generated: $(date -Iseconds)\\n\"\nCONTENT+=\"# DO NOT EDIT MANUALLY — run: bash ~/.openclaw/skills/key-rotation/scripts/rebuild-env.sh\\n\\n\"\n\nSUCCESS=0\nFAILED=0\nSKIPPED=0\n\n# Sort keys for consistent output\nfor var in $(echo \"${!KEY_MAP[@]}\" | tr ' ' '\\n' | sort); do\n pass_path=\"${KEY_MAP[$var]}\"\n val=$(pass show \"$pass_path\" 2>/dev/null | head -1) || true\n \n if [[ -n \"$val\" ]]; then\n CONTENT+=\"${var}=${val}\\n\"\n ((SUCCESS++))\n echo \" ✅ $var ← pass:$pass_path\"\n else\n CONTENT+=\"# ${var}= # FAILED: pass show $pass_path returned empty\\n\"\n ((FAILED++))\n echo \" ❌ $var ← pass:$pass_path (empty/missing)\"\n fi\ndone\n\n# Add static keys\nCONTENT+=\"\\n# --- Static keys ---\\n\"\nfor var in $(echo \"${!STATIC_KEYS[@]}\" | tr ' ' '\\n' | sort); do\n CONTENT+=\"${var}=${STATIC_KEYS[$var]}\\n\"\n ((SUCCESS++))\ndone\n\nif [[ \"$DRY_RUN\" == \"--dry-run\" ]]; then\n echo \"\"\n echo \"=== DRY RUN — would write to $ENV_FILE ===\"\n echo -e \"$CONTENT\" | sed 's/=.*/=***REDACTED***/'\nelse\n echo -e \"$CONTENT\" > \"$ENV_FILE\"\n chmod 600 \"$ENV_FILE\"\n echo \"\"\n echo \"✅ Written to $ENV_FILE (chmod 600)\"\nfi\n\necho \"\"\necho \"Summary: $SUCCESS succeeded, $FAILED failed, $SKIPPED skipped\"\n\nif [[ $FAILED -gt 0 ]]; then\n echo \"⚠️ Some keys failed — check pass entries\"\n exit 1\nfi\n"}}, "agents/hetu/agent/models.json": {"f3f3769d02e636b7fc3aa4bb845009943b252e8f": {"t": 1785746296.6473897, "n": 10571, "h": "b5feae2c2fbf90b8", "c": "{\n \"providers\": {\n \"deepseek\": {\n \"baseUrl\": \"https://api.deepseek.com\",\n \"api\": \"openai-completions\",\n \"models\": [\n {\n \"id\": \"deepseek-chat\",\n \"name\": \"DeepSeek Chat\",\n \"api\": \"openai-completions\",\n \"reasoning\": false,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.28,\n \"output\": 0.42,\n \"cacheRead\": 0.028,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 131072,\n \"maxTokens\": 8192,\n \"compat\": {\n \"supportsUsageInStreaming\": true\n }\n },\n {\n \"id\": \"deepseek-reasoner\",\n \"name\": \"DeepSeek Reasoner\",\n \"api\": \"openai-completions\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.28,\n \"output\": 0.42,\n \"cacheRead\": 0.028,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 131072,\n \"maxTokens\": 65536,\n \"compat\": {\n \"supportsUsageInStreaming\": true\n }\n }\n ]\n },\n \"codex\": {\n \"baseUrl\": \"https://chatgpt.com/backend-api\",\n \"auth\": \"token\",\n \"api\": \"openai-codex-responses\",\n \"models\": [\n {\n \"id\": \"gpt-5.5\",\n \"name\": \"gpt-5.5\",\n \"api\": \"openai-codex-responses\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 0,\n \"output\": 0,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 272000,\n \"maxTokens\": 128000,\n \"compat\": {\n \"supportsReasoningEffort\": true,\n \"supportsUsageInStreaming\": true\n }\n },\n {\n \"id\": \"gpt-5.4-mini\",\n \"name\": \"GPT-5.4-Mini\",\n \"api\": \"openai-codex-responses\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 0,\n \"output\": 0,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 272000,\n \"maxTokens\": 128000,\n \"compat\": {\n \"supportsReasoningEffort\": true,\n \"supportsUsageInStreaming\": true\n }\n },\n {\n \"id\": \"gpt-5.2\",\n \"name\": \"gpt-5.2\",\n \"api\": \"openai-codex-responses\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 0,\n \"output\": 0,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 272000,\n \"maxTokens\": 128000,\n \"compat\": {\n \"supportsReasoningEffort\": true,\n \"supportsUsageInStreaming\": true\n }\n }\n ]\n },\n \"minimax\": {\n \"baseUrl\": \"https://api.minimaxi.com/anthropic\",\n \"api\": \"anthropic-messages\",\n \"authHeader\": true,\n \"models\": [\n {\n \"id\": \"MiniMax-M2.7\",\n \"name\": \"MiniMax M2.7\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.3,\n \"output\": 1.2,\n \"cacheRead\": 0.06,\n \"cacheWrite\": 0.375\n },\n \"contextWindow\": 204800,\n \"maxTokens\": 131072,\n \"api\": \"anthropic-messages\"\n }\n ]\n },\n \"zai\": {\n \"baseUrl\": \"https://open.bigmodel.cn/api/coding/paas/v4\",\n \"api\": \"openai-completions\",\n \"models\": [\n {\n \"id\": \"glm-5.1\",\n \"name\": \"GLM-5.1\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 1.2,\n \"output\": 4,\n \"cacheRead\": 0.24,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 202800,\n \"maxTokens\": 131100,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-5\",\n \"name\": \"GLM-5\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 1,\n \"output\": 3.2,\n \"cacheRead\": 0.2,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 202800,\n \"maxTokens\": 131100,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-5-turbo\",\n \"name\": \"GLM-5 Turbo\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 1.2,\n \"output\": 4,\n \"cacheRead\": 0.24,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 202800,\n \"maxTokens\": 131100,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-5v-turbo\",\n \"name\": \"GLM-5V Turbo\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 1.2,\n \"output\": 4,\n \"cacheRead\": 0.24,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 202800,\n \"maxTokens\": 131100,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.7\",\n \"name\": \"GLM-4.7\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.6,\n \"output\": 2.2,\n \"cacheRead\": 0.11,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 204800,\n \"maxTokens\": 131072,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.7-flash\",\n \"name\": \"GLM-4.7 Flash\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.07,\n \"output\": 0.4,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 200000,\n \"maxTokens\": 131072,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.7-flashx\",\n \"name\": \"GLM-4.7 FlashX\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.06,\n \"output\": 0.4,\n \"cacheRead\": 0.01,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 200000,\n \"maxTokens\": 128000,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.6\",\n \"name\": \"GLM-4.6\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.6,\n \"output\": 2.2,\n \"cacheRead\": 0.11,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 204800,\n \"maxTokens\": 131072,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.6v\",\n \"name\": \"GLM-4.6V\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 0.3,\n \"output\": 0.9,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 128000,\n \"maxTokens\": 32768,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.5\",\n \"name\": \"GLM-4.5\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.6,\n \"output\": 2.2,\n \"cacheRead\": 0.11,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 131072,\n \"maxTokens\": 98304,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.5-air\",\n \"name\": \"GLM-4.5 Air\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.2,\n \"output\": 1.1,\n \"cacheRead\": 0.03,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 131072,\n \"maxTokens\": 98304,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.5-flash\",\n \"name\": \"GLM-4.5 Flash\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0,\n \"output\": 0,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 131072,\n \"maxTokens\": 98304,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.5v\",\n \"name\": \"GLM-4.5V\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 0.6,\n \"output\": 1.8,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 64000,\n \"maxTokens\": 16384,\n \"api\": \"openai-completions\"\n }\n ]\n },\n \"yiyongai\": {\n \"baseUrl\": \"https://cloud.yiyongai.cn/v1\",\n \"api\": \"openai-completions\",\n \"models\": [\n {\n \"id\": \"claude-opus-4-6\",\n \"name\": \"Claude Opus 4.6\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 15,\n \"output\": 75,\n \"cacheRead\": 1.5,\n \"cacheWrite\": 18.75\n },\n \"contextWindow\": 200000,\n \"maxTokens\": 32768,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"claude-opus-4-7\",\n \"name\": \"Claude Opus 4.7\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 18,\n \"output\": 90,\n \"cacheRead\": 1.8,\n \"cacheWrite\": 22.5\n },\n \"contextWindow\": 200000,\n \"maxTokens\": 32768,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"gpt-5.5\",\n \"name\": \"GPT-5.5\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 20,\n \"output\": 100,\n \"cacheRead\": 2,\n \"cacheWrite\": 25\n },\n \"contextWindow\": 200000,\n \"maxTokens\": 32768,\n \"api\": \"openai-completions\"\n }\n ]\n }\n }\n}\n"}, "34bd5f44dc70d37a378c6691da009cda09e467c5": {"t": 1785758332.5516617, "n": 10571, "h": "b5feae2c2fbf90b8", "c": "{\n \"providers\": {\n \"deepseek\": {\n \"baseUrl\": \"https://api.deepseek.com\",\n \"api\": \"openai-completions\",\n \"models\": [\n {\n \"id\": \"deepseek-chat\",\n \"name\": \"DeepSeek Chat\",\n \"api\": \"openai-completions\",\n \"reasoning\": false,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.28,\n \"output\": 0.42,\n \"cacheRead\": 0.028,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 131072,\n \"maxTokens\": 8192,\n \"compat\": {\n \"supportsUsageInStreaming\": true\n }\n },\n {\n \"id\": \"deepseek-reasoner\",\n \"name\": \"DeepSeek Reasoner\",\n \"api\": \"openai-completions\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.28,\n \"output\": 0.42,\n \"cacheRead\": 0.028,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 131072,\n \"maxTokens\": 65536,\n \"compat\": {\n \"supportsUsageInStreaming\": true\n }\n }\n ]\n },\n \"codex\": {\n \"baseUrl\": \"https://chatgpt.com/backend-api\",\n \"auth\": \"token\",\n \"api\": \"openai-codex-responses\",\n \"models\": [\n {\n \"id\": \"gpt-5.5\",\n \"name\": \"gpt-5.5\",\n \"api\": \"openai-codex-responses\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 0,\n \"output\": 0,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 272000,\n \"maxTokens\": 128000,\n \"compat\": {\n \"supportsReasoningEffort\": true,\n \"supportsUsageInStreaming\": true\n }\n },\n {\n \"id\": \"gpt-5.4-mini\",\n \"name\": \"GPT-5.4-Mini\",\n \"api\": \"openai-codex-responses\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 0,\n \"output\": 0,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 272000,\n \"maxTokens\": 128000,\n \"compat\": {\n \"supportsReasoningEffort\": true,\n \"supportsUsageInStreaming\": true\n }\n },\n {\n \"id\": \"gpt-5.2\",\n \"name\": \"gpt-5.2\",\n \"api\": \"openai-codex-responses\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 0,\n \"output\": 0,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 272000,\n \"maxTokens\": 128000,\n \"compat\": {\n \"supportsReasoningEffort\": true,\n \"supportsUsageInStreaming\": true\n }\n }\n ]\n },\n \"minimax\": {\n \"baseUrl\": \"https://api.minimaxi.com/anthropic\",\n \"api\": \"anthropic-messages\",\n \"authHeader\": true,\n \"models\": [\n {\n \"id\": \"MiniMax-M2.7\",\n \"name\": \"MiniMax M2.7\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.3,\n \"output\": 1.2,\n \"cacheRead\": 0.06,\n \"cacheWrite\": 0.375\n },\n \"contextWindow\": 204800,\n \"maxTokens\": 131072,\n \"api\": \"anthropic-messages\"\n }\n ]\n },\n \"zai\": {\n \"baseUrl\": \"https://open.bigmodel.cn/api/coding/paas/v4\",\n \"api\": \"openai-completions\",\n \"models\": [\n {\n \"id\": \"glm-5.1\",\n \"name\": \"GLM-5.1\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 1.2,\n \"output\": 4,\n \"cacheRead\": 0.24,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 202800,\n \"maxTokens\": 131100,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-5\",\n \"name\": \"GLM-5\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 1,\n \"output\": 3.2,\n \"cacheRead\": 0.2,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 202800,\n \"maxTokens\": 131100,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-5-turbo\",\n \"name\": \"GLM-5 Turbo\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 1.2,\n \"output\": 4,\n \"cacheRead\": 0.24,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 202800,\n \"maxTokens\": 131100,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-5v-turbo\",\n \"name\": \"GLM-5V Turbo\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 1.2,\n \"output\": 4,\n \"cacheRead\": 0.24,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 202800,\n \"maxTokens\": 131100,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.7\",\n \"name\": \"GLM-4.7\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.6,\n \"output\": 2.2,\n \"cacheRead\": 0.11,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 204800,\n \"maxTokens\": 131072,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.7-flash\",\n \"name\": \"GLM-4.7 Flash\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.07,\n \"output\": 0.4,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 200000,\n \"maxTokens\": 131072,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.7-flashx\",\n \"name\": \"GLM-4.7 FlashX\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.06,\n \"output\": 0.4,\n \"cacheRead\": 0.01,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 200000,\n \"maxTokens\": 128000,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.6\",\n \"name\": \"GLM-4.6\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.6,\n \"output\": 2.2,\n \"cacheRead\": 0.11,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 204800,\n \"maxTokens\": 131072,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.6v\",\n \"name\": \"GLM-4.6V\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 0.3,\n \"output\": 0.9,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 128000,\n \"maxTokens\": 32768,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.5\",\n \"name\": \"GLM-4.5\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.6,\n \"output\": 2.2,\n \"cacheRead\": 0.11,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 131072,\n \"maxTokens\": 98304,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.5-air\",\n \"name\": \"GLM-4.5 Air\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0.2,\n \"output\": 1.1,\n \"cacheRead\": 0.03,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 131072,\n \"maxTokens\": 98304,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.5-flash\",\n \"name\": \"GLM-4.5 Flash\",\n \"reasoning\": true,\n \"input\": [\n \"text\"\n ],\n \"cost\": {\n \"input\": 0,\n \"output\": 0,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 131072,\n \"maxTokens\": 98304,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"glm-4.5v\",\n \"name\": \"GLM-4.5V\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 0.6,\n \"output\": 1.8,\n \"cacheRead\": 0,\n \"cacheWrite\": 0\n },\n \"contextWindow\": 64000,\n \"maxTokens\": 16384,\n \"api\": \"openai-completions\"\n }\n ]\n },\n \"yiyongai\": {\n \"baseUrl\": \"https://cloud.yiyongai.cn/v1\",\n \"api\": \"openai-completions\",\n \"models\": [\n {\n \"id\": \"claude-opus-4-6\",\n \"name\": \"Claude Opus 4.6\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 15,\n \"output\": 75,\n \"cacheRead\": 1.5,\n \"cacheWrite\": 18.75\n },\n \"contextWindow\": 200000,\n \"maxTokens\": 32768,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"claude-opus-4-7\",\n \"name\": \"Claude Opus 4.7\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 18,\n \"output\": 90,\n \"cacheRead\": 1.8,\n \"cacheWrite\": 22.5\n },\n \"contextWindow\": 200000,\n \"maxTokens\": 32768,\n \"api\": \"openai-completions\"\n },\n {\n \"id\": \"gpt-5.5\",\n \"name\": \"GPT-5.5\",\n \"reasoning\": true,\n \"input\": [\n \"text\",\n \"image\"\n ],\n \"cost\": {\n \"input\": 20,\n \"output\": 100,\n \"cacheRead\": 2,\n \"cacheWrite\": 25\n },\n \"contextWindow\": 200000,\n \"maxTokens\": 32768,\n \"api\": \"openai-completions\"\n }\n ]\n }\n }\n}\n"}}}}