mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-04 16:40:22 +00:00
refactor(plugins): move remaining channel and provider ownership out of src
This commit is contained in:
43
extensions/github-copilot/models-defaults.ts
Normal file
43
extensions/github-copilot/models-defaults.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import type { ModelDefinitionConfig } from "openclaw/plugin-sdk/provider-models";
|
||||
|
||||
const DEFAULT_CONTEXT_WINDOW = 128_000;
|
||||
const DEFAULT_MAX_TOKENS = 8192;
|
||||
|
||||
// Copilot model ids vary by plan/org and can change.
|
||||
// We keep this list intentionally broad; if a model isn't available Copilot will
|
||||
// return an error and users can remove it from their config.
|
||||
const DEFAULT_MODEL_IDS = [
|
||||
"claude-sonnet-4.6",
|
||||
"claude-sonnet-4.5",
|
||||
"gpt-4o",
|
||||
"gpt-4.1",
|
||||
"gpt-4.1-mini",
|
||||
"gpt-4.1-nano",
|
||||
"o1",
|
||||
"o1-mini",
|
||||
"o3-mini",
|
||||
] as const;
|
||||
|
||||
export function getDefaultCopilotModelIds(): string[] {
|
||||
return [...DEFAULT_MODEL_IDS];
|
||||
}
|
||||
|
||||
export function buildCopilotModelDefinition(modelId: string): ModelDefinitionConfig {
|
||||
const id = modelId.trim();
|
||||
if (!id) {
|
||||
throw new Error("Model id required");
|
||||
}
|
||||
return {
|
||||
id,
|
||||
name: id,
|
||||
// pi-coding-agent's registry schema doesn't know about a "github-copilot" API.
|
||||
// We use OpenAI-compatible responses API, while keeping the provider id as
|
||||
// "github-copilot" (pi-ai uses that to attach Copilot-specific headers).
|
||||
api: "openai-responses",
|
||||
reasoning: false,
|
||||
input: ["text", "image"],
|
||||
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
||||
contextWindow: DEFAULT_CONTEXT_WINDOW,
|
||||
maxTokens: DEFAULT_MAX_TOKENS,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user