openclaw/extensions/chutes/openclaw.plugin.json
Ayaan Zaidi f97823d60c
fix(models): share account connection across setup pages (#148864)
## What Problem This Solves

Connect saves supported accounts from Models and Model Setup without a model request. Registered-page coverage and shared test scaffolding account for most of this diff.

## Why This Change Was Made

Both pages use the existing connection inventory and controller. Connection and agent checks retire stale replies. Full setup retains its explicit verification action.

## User Impact

Supported browser/device sign-ins appear in Connect. Titles retain the selected service. Errors show a neutral summary. Closed Details retain the diagnostic and accumulated provider recovery instructions for Connect and full setup.

## Evidence

[UI captures](https://github.com/openclaw/openclaw/pull/148864#issuecomment-5676200017) cover setup and errors. [Real Radius sign-in](https://github.com/openclaw/openclaw/pull/148864#issuecomment-5676320225) saved one account; 27 models remained visible after reload, with zero observed generation. No live catalog fetch is claimed.

## Compatibility

Existing metadata fields only. Seven packed-runtime cases and 12 reader checks pass. Production growth is 156 lines for shared inventory loading, page wiring and presentation.

## Consumers

Models and Model Setup share the connection controller. Channel login uses registered eligibility.

## Invalidation

Connection and agent changes cancel pending inventory. Completion refreshes the page.

## Tests

136 UI unit tests and 19 browser cases pass. Gateway, provider and package proof remains applicable to unchanged owner code. Type-aware preflight, lint, formatting, UI build and size checks pass. Real Telegram Test Server flows for Radius and Copilot cover repeat, cancel, save and model menus with synthetic provider responses. Each saves one credential and makes zero generation attempts.

![Recovery Details retain the diagnostic and provider instructions](https://github.com/user-attachments/assets/295a6a32-78b7-4484-aaf3-1921d5b1774a)

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-09-15 14:41:10 +05:30

188 lines
4.9 KiB
JSON

{
"id": "chutes",
"categories": ["models"],
"activation": {
"onStartup": false
},
"enabledByDefault": true,
"providers": ["chutes"],
"modelPricing": {
"providers": {
"chutes": { "chutes": { "provider": "chutes" } }
}
},
"providerEndpoints": [
{
"endpointClass": "chutes-native",
"hosts": ["llm.chutes.ai"]
}
],
"providerRequest": {
"providers": {
"chutes": {
"family": "chutes"
}
}
},
"setup": {
"providers": [
{
"id": "chutes",
"envVars": ["CHUTES_API_KEY", "CHUTES_OAUTH_TOKEN"]
}
]
},
"providerAuthChoices": [
{
"provider": "chutes",
"method": "oauth",
"choiceId": "chutes",
"appGuidedAuth": "oauth",
"credentialOnly": true,
"choiceLabel": "Chutes (OAuth)",
"choiceHint": "Browser sign-in",
"groupId": "chutes",
"groupLabel": "Chutes",
"groupHint": "OAuth + API key"
},
{
"provider": "chutes",
"method": "api-key",
"choiceId": "chutes-api-key",
"appGuidedSecret": true,
"choiceLabel": "Chutes API key",
"choiceHint": "Open-source models including Llama, DeepSeek, and more",
"groupId": "chutes",
"groupLabel": "Chutes",
"groupHint": "OAuth + API key",
"optionKey": "chutesApiKey",
"cliFlag": "--chutes-api-key",
"cliOption": "--chutes-api-key <key>",
"cliDescription": "Chutes API key"
}
],
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {}
},
"modelCatalog": {
"modelsDev": {
"chutes": "chutes"
},
"providers": {
"chutes": {
"baseUrl": "https://llm.chutes.ai/v1",
"api": "openai-completions",
"defaultModel": "zai-org/GLM-5.2-TEE",
"models": [
{
"id": "deepseek-ai/DeepSeek-V3.2-TEE",
"name": "deepseek-ai/DeepSeek-V3.2-TEE",
"reasoning": true,
"input": ["text"],
"contextWindow": 131072,
"maxTokens": 65536,
"cost": {
"input": 1,
"output": 1,
"cacheRead": 0.09999999999999998,
"cacheWrite": 0
}
},
{
"id": "moonshotai/Kimi-K2.6-TEE",
"name": "moonshotai/Kimi-K2.6-TEE",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 262144,
"maxTokens": 65535,
"cost": {
"input": 0.58,
"output": 3.4,
"cacheRead": 0.05799999999999998,
"cacheWrite": 0
}
},
{
"id": "moonshotai/Kimi-K2.5-TEE",
"name": "moonshotai/Kimi-K2.5-TEE",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 262144,
"maxTokens": 65535,
"cost": {
"input": 0.44,
"output": 2,
"cacheRead": 0.22,
"cacheWrite": 0
},
"status": "deprecated",
"replacedBy": "moonshotai/Kimi-K2.6-TEE"
},
{
"id": "zai-org/GLM-5.2-TEE",
"name": "zai-org/GLM-5.2-TEE",
"reasoning": true,
"input": ["text"],
"contextWindow": 1048576,
"maxTokens": 65535,
"cost": {
"input": 1.25,
"output": 3.95,
"cacheRead": 0.12499999999999997,
"cacheWrite": 0
}
},
{
"id": "MiniMaxAI/MiniMax-M2.5-TEE",
"name": "MiniMaxAI/MiniMax-M2.5-TEE",
"reasoning": true,
"input": ["text"],
"contextWindow": 196608,
"maxTokens": 65536,
"cost": {
"input": 0.15,
"output": 1.2,
"cacheRead": 0.075,
"cacheWrite": 0
}
},
{
"id": "Qwen/Qwen3.6-27B-TEE",
"name": "Qwen/Qwen3.6-27B-TEE",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 262144,
"maxTokens": 65536,
"cost": {
"input": 0.3,
"output": 2,
"cacheRead": 0.029999999999999992,
"cacheWrite": 0
}
},
{
"id": "Qwen/Qwen3.5-397B-A17B-TEE",
"name": "Qwen/Qwen3.5-397B-A17B-TEE",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 262144,
"maxTokens": 65536,
"cost": {
"input": 0.45,
"output": 3,
"cacheRead": 0.04499999999999999,
"cacheWrite": 0
},
"status": "deprecated",
"replacedBy": "Qwen/Qwen3.6-27B-TEE"
}
]
}
},
"discovery": {
"chutes": "refreshable"
}
}
}