mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-27 21:07:01 -06:00
110eb787a1
* fix(github-copilot): preserve catalog thinking efforts in requests Unify discovered and bundled capability mapping with the provider thinking policy. Preserve supported xhigh/max Responses efforts and map minimal to the supported low minimum, while respecting explicit account opt-outs and transport limits. Fixes #107792 Co-authored-by: Pluviobyte <Pluviobyte@users.noreply.github.com> * fix(github-copilot): resolve nullable thinking policy transport Accept the public policy API context and resolve missing transports before enforcing Claude and Gemini effort restrictions. Cover undefined and null API values without changing explicit Responses routes. * refactor(github-copilot): normalize manifest models as one catalog Use the canonical batch model provider builder after the single-row helper was removed on main. Preserve model transport and compatibility decoration without a legacy API shim. * refactor(github-copilot): decorate owned catalog rows in place Keep the normalized manifest batch as the sole owner of runtime rows and apply transport metadata directly, avoiding redundant row copies. --------- Co-authored-by: Peter Steinberger <steipete@gmail.com> Co-authored-by: Pluviobyte <Pluviobyte@users.noreply.github.com>
302 lines
11 KiB
JSON
302 lines
11 KiB
JSON
{
|
|
"id": "github-copilot",
|
|
"activation": {
|
|
"onStartup": false
|
|
},
|
|
"enabledByDefault": true,
|
|
"providers": ["github-copilot"],
|
|
"providerEndpoints": [
|
|
{
|
|
"endpointClass": "github-copilot-native",
|
|
"hostSuffixes": [".githubcopilot.com"]
|
|
}
|
|
],
|
|
"providerRequest": {
|
|
"providers": {
|
|
"github-copilot": {
|
|
"family": "github-copilot"
|
|
}
|
|
}
|
|
},
|
|
"modelCatalog": {
|
|
"providers": {
|
|
"github-copilot": {
|
|
"baseUrl": "https://api.individual.githubcopilot.com",
|
|
"api": "openai-responses",
|
|
"models": [
|
|
{
|
|
"id": "claude-fable-5",
|
|
"name": "Claude Fable 5",
|
|
"api": "anthropic-messages",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1000000,
|
|
"maxTokens": 128000,
|
|
"cost": { "input": 10, "output": 50, "cacheRead": 1, "cacheWrite": 12.5 },
|
|
"compat": { "codeMode": "capable" }
|
|
},
|
|
{
|
|
"id": "claude-opus-5",
|
|
"name": "Claude Opus 5",
|
|
"api": "anthropic-messages",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1000000,
|
|
"maxTokens": 128000,
|
|
"cost": { "input": 5, "output": 25, "cacheRead": 0.5, "cacheWrite": 6.25 },
|
|
"compat": {
|
|
"codeMode": "capable",
|
|
"supportsReasoningEffort": true,
|
|
"supportedReasoningEfforts": ["low", "medium", "high", "xhigh", "max"]
|
|
}
|
|
},
|
|
{
|
|
"id": "claude-sonnet-5",
|
|
"name": "Claude Sonnet 5",
|
|
"api": "anthropic-messages",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1000000,
|
|
"maxTokens": 128000,
|
|
"cost": { "input": 2, "output": 10, "cacheRead": 0.2, "cacheWrite": 2.5 },
|
|
"compat": { "codeMode": "capable" }
|
|
},
|
|
{
|
|
"id": "claude-haiku-4.5",
|
|
"name": "Claude Haiku 4.5",
|
|
"api": "anthropic-messages",
|
|
"input": ["text", "image"],
|
|
"contextWindow": 200000,
|
|
"maxTokens": 64000,
|
|
"cost": { "input": 1, "output": 5, "cacheRead": 0.1, "cacheWrite": 1.25 }
|
|
},
|
|
{
|
|
"id": "claude-opus-4.8",
|
|
"name": "Claude Opus 4.8",
|
|
"api": "anthropic-messages",
|
|
"status": "deprecated",
|
|
"replacedBy": "claude-opus-5",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1000000,
|
|
"maxTokens": 128000,
|
|
"cost": { "input": 5, "output": 25, "cacheRead": 0.5, "cacheWrite": 6.25 }
|
|
},
|
|
{
|
|
"id": "claude-sonnet-4.6",
|
|
"name": "Claude Sonnet 4.6",
|
|
"api": "anthropic-messages",
|
|
"status": "deprecated",
|
|
"replacedBy": "claude-sonnet-5",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1000000,
|
|
"maxTokens": 128000,
|
|
"cost": { "input": 3, "output": 15, "cacheRead": 0.3, "cacheWrite": 3.75 }
|
|
},
|
|
{
|
|
"id": "gemini-3.6-flash",
|
|
"name": "Gemini 3.6 Flash",
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1048576,
|
|
"maxTokens": 65536,
|
|
"cost": { "input": 1.5, "output": 7.5, "cacheRead": 0.15, "cacheWrite": 0 }
|
|
},
|
|
{
|
|
"id": "gemini-3.1-pro-preview",
|
|
"name": "Gemini 3.1 Pro Preview",
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1048576,
|
|
"maxTokens": 65536,
|
|
"cost": { "input": 2, "output": 12, "cacheRead": 0.2, "cacheWrite": 0 }
|
|
},
|
|
{
|
|
"id": "gemini-3.5-flash",
|
|
"name": "Gemini 3.5 Flash",
|
|
"status": "deprecated",
|
|
"replacedBy": "gemini-3.6-flash",
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1048576,
|
|
"maxTokens": 65536,
|
|
"cost": { "input": 1.5, "output": 9, "cacheRead": 0.15, "cacheWrite": 0 }
|
|
},
|
|
{
|
|
"id": "gemini-2.5-pro",
|
|
"name": "Gemini 2.5 Pro",
|
|
"status": "deprecated",
|
|
"replacedBy": "gemini-3.1-pro-preview",
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1048576,
|
|
"maxTokens": 65536,
|
|
"cost": { "input": 1.25, "output": 10, "cacheRead": 0.125, "cacheWrite": 0 }
|
|
},
|
|
{
|
|
"id": "gpt-5.6-sol",
|
|
"name": "GPT-5.6 Sol",
|
|
"reasoning": true,
|
|
"thinkingLevelMap": { "minimal": "low", "xhigh": "xhigh", "max": "max" },
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1050000,
|
|
"contextTokens": 922000,
|
|
"maxTokens": 128000,
|
|
"cost": { "input": 5, "output": 30, "cacheRead": 0.5, "cacheWrite": 0 },
|
|
"compat": { "codeMode": "capable", "supportedReasoningEfforts": ["none", "low", "medium", "high", "xhigh", "max"] }
|
|
},
|
|
{
|
|
"id": "gpt-5.6-terra",
|
|
"name": "GPT-5.6 Terra",
|
|
"reasoning": true,
|
|
"thinkingLevelMap": { "minimal": "low", "xhigh": "xhigh", "max": "max" },
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1050000,
|
|
"contextTokens": 922000,
|
|
"maxTokens": 128000,
|
|
"cost": { "input": 2.5, "output": 15, "cacheRead": 0.25, "cacheWrite": 0 },
|
|
"compat": { "codeMode": "capable", "supportedReasoningEfforts": ["none", "low", "medium", "high", "xhigh", "max"] }
|
|
},
|
|
{
|
|
"id": "gpt-5.6-luna",
|
|
"name": "GPT-5.6 Luna",
|
|
"reasoning": true,
|
|
"thinkingLevelMap": { "minimal": "low", "xhigh": "xhigh", "max": "max" },
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1050000,
|
|
"contextTokens": 922000,
|
|
"maxTokens": 128000,
|
|
"cost": { "input": 1, "output": 6, "cacheRead": 0.1, "cacheWrite": 0 },
|
|
"compat": { "codeMode": "capable", "supportedReasoningEfforts": ["none", "low", "medium", "high", "xhigh", "max"] }
|
|
},
|
|
{
|
|
"id": "gpt-5.3-codex",
|
|
"name": "GPT-5.3-Codex",
|
|
"reasoning": true,
|
|
"thinkingLevelMap": { "minimal": "low", "xhigh": "xhigh", "max": null },
|
|
"compat": { "supportedReasoningEfforts": ["low", "medium", "high", "xhigh"] },
|
|
"input": ["text", "image"],
|
|
"contextWindow": 400000,
|
|
"contextTokens": 272000,
|
|
"maxTokens": 128000,
|
|
"cost": { "input": 1.75, "output": 14, "cacheRead": 0.175, "cacheWrite": 0 }
|
|
},
|
|
{
|
|
"id": "gpt-5.4",
|
|
"name": "GPT-5.4",
|
|
"status": "deprecated",
|
|
"replacedBy": "gpt-5.6-terra",
|
|
"reasoning": true,
|
|
"thinkingLevelMap": { "minimal": "low", "xhigh": "xhigh", "max": null },
|
|
"compat": { "supportedReasoningEfforts": ["none", "low", "medium", "high", "xhigh"] },
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1050000,
|
|
"maxTokens": 128000,
|
|
"cost": { "input": 2.5, "output": 15, "cacheRead": 0.25, "cacheWrite": 0 }
|
|
},
|
|
{
|
|
"id": "gpt-5.5",
|
|
"name": "GPT-5.5",
|
|
"status": "deprecated",
|
|
"replacedBy": "gpt-5.6-sol",
|
|
"reasoning": true,
|
|
"thinkingLevelMap": { "minimal": "low", "xhigh": "xhigh", "max": null },
|
|
"input": ["text", "image"],
|
|
"contextWindow": 1050000,
|
|
"contextTokens": 272000,
|
|
"maxTokens": 128000,
|
|
"cost": { "input": 5, "output": 30, "cacheRead": 0.5, "cacheWrite": 0 },
|
|
"compat": { "codeMode": "capable", "supportedReasoningEfforts": ["none", "low", "medium", "high", "xhigh"] }
|
|
},
|
|
{
|
|
"id": "gpt-5.4-mini",
|
|
"name": "GPT-5.4 mini",
|
|
"status": "deprecated",
|
|
"replacedBy": "gpt-5.6-luna",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"contextWindow": 400000,
|
|
"contextTokens": 272000,
|
|
"maxTokens": 128000,
|
|
"cost": { "input": 0.75, "output": 4.5, "cacheRead": 0.075, "cacheWrite": 0 }
|
|
},
|
|
{
|
|
"id": "raptor-mini",
|
|
"name": "Raptor mini",
|
|
"input": ["text"],
|
|
"contextWindow": 128000,
|
|
"maxTokens": 8192,
|
|
"cost": { "input": 0.25, "output": 2, "cacheRead": 0.025, "cacheWrite": 0 }
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"discovery": {
|
|
"github-copilot": "refreshable"
|
|
}
|
|
},
|
|
"contracts": {
|
|
"embeddingProviders": ["github-copilot"],
|
|
"usageProviders": ["github-copilot"]
|
|
},
|
|
"setup": {
|
|
"providers": [
|
|
{
|
|
"id": "github-copilot",
|
|
"envVars": ["COPILOT_GITHUB_TOKEN", "GH_TOKEN", "GITHUB_TOKEN"]
|
|
}
|
|
]
|
|
},
|
|
"providerAuthChoices": [
|
|
{
|
|
"provider": "github-copilot",
|
|
"method": "device",
|
|
"choiceId": "github-copilot",
|
|
"appGuidedAuth": "device-code",
|
|
"appGuidedSecret": true,
|
|
"choiceLabel": "GitHub Copilot",
|
|
"choiceHint": "Device login with your GitHub account",
|
|
"assistantPriority": 1,
|
|
"groupId": "copilot",
|
|
"groupLabel": "Copilot",
|
|
"groupHint": "GitHub, GitHub Enterprise + Local Proxy",
|
|
"optionKey": "githubCopilotToken",
|
|
"cliFlag": "--github-copilot-token",
|
|
"cliOption": "--github-copilot-token <token>",
|
|
"cliDescription": "GitHub Copilot OAuth token"
|
|
},
|
|
{
|
|
"provider": "github-copilot",
|
|
"method": "device-enterprise",
|
|
"choiceId": "github-copilot-enterprise",
|
|
"appGuidedAuth": "device-code",
|
|
"choiceLabel": "GitHub Copilot (Enterprise / data residency)",
|
|
"choiceHint": "Device login against your GitHub Enterprise (*.ghe.com) tenant",
|
|
"assistantPriority": 2,
|
|
"groupId": "copilot",
|
|
"groupLabel": "Copilot",
|
|
"groupHint": "GitHub, GitHub Enterprise + Local Proxy"
|
|
}
|
|
],
|
|
"configSchema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"discovery": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": { "type": "boolean" }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"uiHints": {
|
|
"discovery": {
|
|
"label": "Model Discovery",
|
|
"help": "Plugin-owned controls for GitHub Copilot model auto-discovery."
|
|
},
|
|
"discovery.enabled": {
|
|
"label": "Enable Discovery",
|
|
"help": "When false, OpenClaw keeps the GitHub Copilot plugin available but skips implicit startup discovery from ambient Copilot credentials."
|
|
}
|
|
}
|
|
}
|