1 line
3.3 KiB
JSON
1 line
3.3 KiB
JSON
{"repo": "3022667993/xianfeng", "files": {"external/openclaw/extensions/opencode-go/provider-catalog.ts": {"61f54b9774a50c0aaf2ac60a104ffed80decdb79": {"t": 1785596396.1509054, "n": 3048, "h": "5237ac6ad8716f4f", "c": "import type { ModelCatalogEntry } from \"openclaw/plugin-sdk/agent-runtime\";\nimport type { ProviderRuntimeModel } from \"openclaw/plugin-sdk/plugin-entry\";\nimport { normalizeModelCompat } from \"openclaw/plugin-sdk/provider-model-shared\";\n\nconst PROVIDER_ID = \"opencode-go\";\n\nconst OPENCODE_GO_OPENAI_BASE_URL = \"https://opencode.ai/zen/go/v1\";\nconst OPENCODE_GO_ANTHROPIC_BASE_URL = \"https://opencode.ai/zen/go\";\n\nconst OPENCODE_GO_SUPPLEMENTAL_MODELS = (\n [\n {\n id: \"deepseek-v4-pro\",\n name: \"DeepSeek V4 Pro\",\n api: \"openai-completions\",\n provider: PROVIDER_ID,\n baseUrl: OPENCODE_GO_OPENAI_BASE_URL,\n reasoning: true,\n input: [\"text\"],\n cost: {\n input: 1.74,\n output: 3.48,\n cacheRead: 0.145,\n cacheWrite: 0,\n },\n contextWindow: 1_000_000,\n maxTokens: 384_000,\n compat: {\n supportsUsageInStreaming: true,\n supportsReasoningEffort: true,\n maxTokensField: \"max_tokens\",\n },\n },\n {\n id: \"deepseek-v4-flash\",\n name: \"DeepSeek V4 Flash\",\n api: \"openai-completions\",\n provider: PROVIDER_ID,\n baseUrl: OPENCODE_GO_OPENAI_BASE_URL,\n reasoning: true,\n input: [\"text\"],\n cost: {\n input: 0.14,\n output: 0.28,\n cacheRead: 0.028,\n cacheWrite: 0,\n },\n contextWindow: 1_000_000,\n maxTokens: 384_000,\n compat: {\n supportsUsageInStreaming: true,\n supportsReasoningEffort: true,\n maxTokensField: \"max_tokens\",\n },\n },\n ] satisfies ProviderRuntimeModel[]\n).map((model) => normalizeModelCompat(model));\n\nexport function listOpencodeGoSupplementalModelCatalogEntries(): ModelCatalogEntry[] {\n return OPENCODE_GO_SUPPLEMENTAL_MODELS.map((model) => ({\n provider: model.provider,\n id: model.id,\n name: model.name,\n reasoning: model.reasoning,\n input: model.input,\n contextWindow: model.contextWindow,\n }));\n}\n\nexport function resolveOpencodeGoSupplementalModel(\n modelId: string,\n): ProviderRuntimeModel | undefined {\n const normalizedModelId = modelId.trim().toLowerCase();\n return OPENCODE_GO_SUPPLEMENTAL_MODELS.find((model) => model.id === normalizedModelId);\n}\n\nfunction normalizeBaseUrl(baseUrl: string | undefined): string {\n return (baseUrl ?? \"\").trim().replace(/\\/+$/, \"\");\n}\n\nexport function normalizeOpencodeGoBaseUrl(params: {\n api?: string | null;\n baseUrl?: string;\n}): string | undefined {\n const normalized = normalizeBaseUrl(params.baseUrl);\n if (!normalized) {\n return undefined;\n }\n if (normalized === OPENCODE_GO_OPENAI_BASE_URL) {\n return OPENCODE_GO_OPENAI_BASE_URL;\n }\n if (normalized === OPENCODE_GO_ANTHROPIC_BASE_URL) {\n return OPENCODE_GO_ANTHROPIC_BASE_URL;\n }\n if (normalized === \"https://opencode.ai/go\") {\n return OPENCODE_GO_ANTHROPIC_BASE_URL;\n }\n if (normalized === \"https://opencode.ai/go/v1\") {\n return params.api === \"anthropic-messages\"\n ? OPENCODE_GO_ANTHROPIC_BASE_URL\n : OPENCODE_GO_OPENAI_BASE_URL;\n }\n return undefined;\n}\n"}}}} |