import { emptyPluginConfigSchema, type OpenClawPluginApi } from "openclaw/plugin-sdk/core"; import { applyOpencodeGoConfig } from "../../src/commands/onboard-auth.config-opencode-go.js"; import { OPENCODE_GO_DEFAULT_MODEL_REF } from "../../src/commands/opencode-go-model-default.js"; import { createProviderApiKeyAuthMethod } from "../../src/plugins/provider-api-key-auth.js"; const PROVIDER_ID = "opencode-go"; const opencodeGoPlugin = { id: PROVIDER_ID, name: "OpenCode Go Provider", description: "Bundled OpenCode Go provider plugin", configSchema: emptyPluginConfigSchema(), register(api: OpenClawPluginApi) { api.registerProvider({ id: PROVIDER_ID, label: "OpenCode Go", docsPath: "/providers/models", envVars: ["OPENCODE_API_KEY", "OPENCODE_ZEN_API_KEY"], auth: [ createProviderApiKeyAuthMethod({ providerId: PROVIDER_ID, methodId: "api-key", label: "OpenCode Go catalog", hint: "Shared API key for Zen + Go catalogs", optionKey: "opencodeGoApiKey", flagName: "--opencode-go-api-key", envVar: "OPENCODE_API_KEY", promptMessage: "Enter OpenCode API key", profileIds: ["opencode:default", "opencode-go:default"], defaultModel: OPENCODE_GO_DEFAULT_MODEL_REF, expectedProviders: ["opencode", "opencode-go"], applyConfig: (cfg) => applyOpencodeGoConfig(cfg), noteMessage: [ "OpenCode uses one API key across the Zen and Go catalogs.", "Go focuses on Kimi, GLM, and MiniMax coding models.", "Get your API key at: https://opencode.ai/auth", ].join("\n"), noteTitle: "OpenCode", wizard: { choiceId: "opencode-go", choiceLabel: "OpenCode Go catalog", groupId: "opencode", groupLabel: "OpenCode", groupHint: "Shared API key for Zen + Go catalogs", }, }), ], capabilities: { openAiCompatTurnValidation: false, geminiThoughtSignatureSanitization: true, geminiThoughtSignatureModelHints: ["gemini"], }, isModernModelRef: () => true, }); }, }; export default opencodeGoPlugin;