mirror of
https://github.com/openclaw/openclaw.git
synced 2026-09-28 14:12:28 +08:00
* feat: add contextual plugin help to Ask OpenClaw Punchcard-Session: crisp-summit-lantern-qk * fix(ui): redact URL credentials from plugin Ask drafts Reuse the canonical URL policy in the bounded help-value scan, including serialized map keys. Keep the editable config value intact and prove rejected Save → Ask → Send on desktop and phone. Punchcard-Session: crisp-summit-lantern-qk * test: reuse the complete Custodian context fixture Punchcard-Session: crisp-summit-lantern-qk * refactor(ui): narrow plugin help selection input Accept only the loaded selection facts consumed by the help controller, removing its type dependency on the complete page renderer model. Punchcard-Session: crisp-summit-lantern-qk * perf(ui): keep plugin help preparation off startup Separate synchronous dock state and session ownership from lazy question preparation and session persistence helpers. Register plugin-only English copy with its lazy consumers while preserving source catalog order. Punchcard-Session: crisp-summit-lantern-qk * style: normalize contextual help rebase spacing Punchcard-Session: crisp-summit-lantern-qk * perf(ui): keep attachment media preparation off startup Punchcard-Session: crisp-summit-lantern-qk * test(qwen): fix the clock for default timeout assertions Punchcard-Session: crisp-summit-lantern-qk * test(ui): wait for side-chat opening focus Punchcard-Session: crisp-summit-lantern-qk * chore(pr): deduplicate wrapper dependency inventory Punchcard-Session: crisp-summit-lantern-qk * test(qwen): drop superseded default-clock workaround * feat: group bundled plugin settings by authored manifest metadata Punchcard-Session: crisp-summit-lantern-qk
242 lines
7.9 KiB
JSON
242 lines
7.9 KiB
JSON
{
|
|
"id": "opencode",
|
|
"categories": ["models"],
|
|
"activation": { "onStartup": true },
|
|
"providerCatalogEntry": "./provider-discovery.ts",
|
|
"enabledByDefault": true,
|
|
"providers": ["opencode"],
|
|
"providerEndpoints": [
|
|
{
|
|
"endpointClass": "opencode-native",
|
|
"baseUrls": ["https://opencode.ai/zen", "https://opencode.ai/zen/v1"]
|
|
}
|
|
],
|
|
"providerRequest": {
|
|
"providers": { "opencode": { "family": "opencode" } }
|
|
},
|
|
"modelCatalog": {
|
|
"providers": {
|
|
"opencode": {
|
|
"baseUrl": "https://opencode.ai/zen/v1",
|
|
"api": "openai-completions",
|
|
"models": [
|
|
{
|
|
"id": "claude-opus-5",
|
|
"name": "Claude Opus 5",
|
|
"api": "anthropic-messages",
|
|
"provider": "opencode",
|
|
"baseUrl": "https://opencode.ai/zen",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": { "input": 5, "output": 25, "cacheRead": 0.5, "cacheWrite": 6.25 },
|
|
"contextWindow": 1000000,
|
|
"maxTokens": 128000,
|
|
"compat": {
|
|
"supportsUsageInStreaming": true,
|
|
"supportsReasoningEffort": true,
|
|
"supportedReasoningEfforts": ["low", "medium", "high", "xhigh", "max"],
|
|
"maxTokensField": "max_tokens",
|
|
"codeMode": "capable"
|
|
}
|
|
},
|
|
{
|
|
"id": "gpt-5.6-sol",
|
|
"name": "GPT-5.6 Sol",
|
|
"api": "openai-responses",
|
|
"provider": "opencode",
|
|
"baseUrl": "https://opencode.ai/zen/v1",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": {
|
|
"input": 2,
|
|
"output": 10,
|
|
"cacheRead": 0.2,
|
|
"cacheWrite": 2.5,
|
|
"tieredPricing": [
|
|
{
|
|
"input": 2,
|
|
"output": 10,
|
|
"cacheRead": 0.2,
|
|
"cacheWrite": 2.5,
|
|
"range": [0, 272000]
|
|
},
|
|
{
|
|
"input": 4,
|
|
"output": 15,
|
|
"cacheRead": 0.4,
|
|
"cacheWrite": 5,
|
|
"range": [272000]
|
|
}
|
|
]
|
|
},
|
|
"contextWindow": 1050000,
|
|
"contextTokens": 922000,
|
|
"maxTokens": 128000,
|
|
"compat": {
|
|
"supportsUsageInStreaming": true,
|
|
"supportsReasoningEffort": true,
|
|
"supportedReasoningEfforts": ["none", "low", "medium", "high", "xhigh", "max"],
|
|
"maxTokensField": "max_tokens",
|
|
"codeMode": "capable"
|
|
}
|
|
},
|
|
{
|
|
"id": "gpt-5-nano",
|
|
"name": "GPT-5 Nano",
|
|
"api": "openai-responses",
|
|
"provider": "opencode",
|
|
"baseUrl": "https://opencode.ai/zen/v1",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": { "input": 0.05, "output": 0.4, "cacheRead": 0.005, "cacheWrite": 0 },
|
|
"contextWindow": 400000,
|
|
"contextTokens": 272000,
|
|
"maxTokens": 128000,
|
|
"thinkingLevelMap": { "off": null },
|
|
"compat": {
|
|
"supportsUsageInStreaming": true,
|
|
"supportsReasoningEffort": true,
|
|
"supportedReasoningEfforts": ["minimal", "low", "medium", "high"],
|
|
"maxTokensField": "max_tokens"
|
|
}
|
|
},
|
|
{
|
|
"id": "gemini-3.6-flash",
|
|
"name": "Gemini 3.6 Flash",
|
|
"api": "google-generative-ai",
|
|
"provider": "opencode",
|
|
"baseUrl": "https://opencode.ai/zen/v1",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": { "input": 1.5, "output": 7.5, "cacheRead": 0.15, "cacheWrite": 0 },
|
|
"contextWindow": 1048576,
|
|
"maxTokens": 65536,
|
|
"compat": {
|
|
"codeMode": "capable",
|
|
"supportsUsageInStreaming": true,
|
|
"supportsReasoningEffort": true,
|
|
"supportedReasoningEfforts": ["minimal", "low", "medium", "high"],
|
|
"maxTokensField": "max_tokens"
|
|
}
|
|
},
|
|
{
|
|
"id": "minimax-m3",
|
|
"name": "MiniMax M3",
|
|
"api": "openai-completions",
|
|
"provider": "opencode",
|
|
"baseUrl": "https://opencode.ai/zen/v1",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": { "input": 0.3, "output": 1.2, "cacheRead": 0.06, "cacheWrite": 0 },
|
|
"contextWindow": 512000,
|
|
"maxTokens": 128000,
|
|
"compat": {
|
|
"supportsUsageInStreaming": true,
|
|
"maxTokensField": "max_tokens",
|
|
"supportsDeveloperRole": false,
|
|
"supportsStrictMode": false
|
|
}
|
|
},
|
|
{
|
|
"id": "kimi-k3",
|
|
"name": "Kimi K3",
|
|
"api": "openai-completions",
|
|
"provider": "opencode",
|
|
"baseUrl": "https://opencode.ai/zen/v1",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": { "input": 3, "output": 15, "cacheRead": 0.3, "cacheWrite": 0 },
|
|
"contextWindow": 1048576,
|
|
"maxTokens": 131072,
|
|
"compat": {
|
|
"supportsUsageInStreaming": true,
|
|
"supportsReasoningEffort": true,
|
|
"supportedReasoningEfforts": ["max"],
|
|
"maxTokensField": "max_tokens",
|
|
"supportsDeveloperRole": false,
|
|
"supportsStrictMode": false,
|
|
"codeMode": "capable"
|
|
}
|
|
},
|
|
{
|
|
"id": "big-pickle",
|
|
"name": "Big Pickle",
|
|
"api": "openai-completions",
|
|
"provider": "opencode",
|
|
"baseUrl": "https://opencode.ai/zen/v1",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
|
|
"contextWindow": 200000,
|
|
"contextTokens": 160000,
|
|
"maxTokens": 32000,
|
|
"compat": {
|
|
"supportsUsageInStreaming": true,
|
|
"maxTokensField": "max_tokens",
|
|
"supportsDeveloperRole": false,
|
|
"supportsStrictMode": false
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"discovery": { "opencode": "runtime" }
|
|
},
|
|
"modelPricing": { "providers": { "opencode": { "openCode": { "provider": "opencode" } } } },
|
|
"setup": {
|
|
"providers": [
|
|
{ "id": "opencode", "envVars": ["OPENCODE_API_KEY", "OPENCODE_ZEN_API_KEY"] }
|
|
]
|
|
},
|
|
"providerAuthChoices": [
|
|
{
|
|
"provider": "opencode",
|
|
"method": "api-key",
|
|
"choiceId": "opencode-zen",
|
|
"appGuidedSecret": true,
|
|
"choiceLabel": "OpenCode Zen catalog",
|
|
"groupId": "opencode",
|
|
"groupLabel": "OpenCode",
|
|
"groupHint": "Shared API key infrastructure for Zen + Go",
|
|
"optionKey": "opencodeZenApiKey",
|
|
"cliFlag": "--opencode-zen-api-key",
|
|
"cliOption": "--opencode-zen-api-key <key>",
|
|
"cliDescription": "OpenCode API key (Zen catalog)"
|
|
}
|
|
],
|
|
"contracts": { "mediaUnderstandingProviders": ["opencode"] },
|
|
"mediaUnderstandingProviderMetadata": {
|
|
"opencode": {
|
|
"capabilities": ["image"],
|
|
"defaultModels": { "image": "gpt-5-nano" }
|
|
}
|
|
},
|
|
"configGroups": [
|
|
{
|
|
"id": "native-sessions",
|
|
"title": "Native sessions",
|
|
"order": 10,
|
|
"properties": ["sessionCatalog"]
|
|
}
|
|
],
|
|
"configSchema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"sessionCatalog": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": { "type": "boolean", "default": true }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"uiHints": {
|
|
"sessionCatalog.enabled": {
|
|
"label": "OpenCode Session Catalog",
|
|
"help": "Auto-detect OpenCode sessions on the Gateway and paired nodes, then show them in the sessions sidebar."
|
|
}
|
|
}
|
|
}
|