From 46378dda50323d344196ee3d439fdd271cf0db71 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 18 Aug 2026 11:07:00 -0400 Subject: [PATCH] refactor(core): standardize builtin plugin ids --- packages/core/src/plugin/mcp-codemode-exclusion.ts | 2 +- packages/core/src/plugin/models-dev.ts | 2 +- packages/core/src/plugin/provider/amazon-bedrock.ts | 2 +- .../src/plugin/provider/cloudflare-ai-gateway.ts | 2 +- .../src/plugin/provider/cloudflare-workers-ai.ts | 2 +- packages/core/src/plugin/provider/github-copilot.ts | 2 +- packages/core/src/plugin/provider/google-vertex.ts | 2 +- .../core/src/plugin/provider/openai-compatible.ts | 2 +- packages/core/src/plugin/provider/sap-ai-core.ts | 2 +- .../core/src/plugin/provider/snowflake-cortex.ts | 2 +- packages/core/src/plugin/system-prompt.ts | 2 +- packages/core/test/plugin/models-dev.test.ts | 4 ++-- .../test/plugin/provider-snowflake-cortex.test.ts | 6 +++--- packages/core/test/plugin/system-prompt.test.ts | 12 ++++++------ 14 files changed, 22 insertions(+), 22 deletions(-) diff --git a/packages/core/src/plugin/mcp-codemode-exclusion.ts b/packages/core/src/plugin/mcp-codemode-exclusion.ts index b1b666b9c2..ee040b888c 100644 --- a/packages/core/src/plugin/mcp-codemode-exclusion.ts +++ b/packages/core/src/plugin/mcp-codemode-exclusion.ts @@ -7,7 +7,7 @@ import { Effect } from "effect" const urls = [/^https:\/\/mcp\.cloudflare\.com\/mcp$/, /^https:\/\/executor\.sh\/[^/]+\/mcp$/] export const Plugin = define({ - id: "opencode.mcp.codemode-exclusion", + id: "opencode.mcp.codemode.exclusion", effect: Effect.fn(function* (ctx) { yield* ctx.mcp.transform((draft) => { for (const [, server] of draft.list()) { diff --git a/packages/core/src/plugin/models-dev.ts b/packages/core/src/plugin/models-dev.ts index da141bfa60..4a87a3af3e 100644 --- a/packages/core/src/plugin/models-dev.ts +++ b/packages/core/src/plugin/models-dev.ts @@ -6,7 +6,7 @@ import { ModelsDev } from "../models-dev.js" import { Provider } from "../provider.js" export const ModelsDevPlugin = define({ - id: "opencode.models-dev", + id: "opencode.models.dev", effect: Effect.fn(function* (ctx) { const modelsDev = yield* ModelsDev.Service const bus = yield* Bus.Service diff --git a/packages/core/src/plugin/provider/amazon-bedrock.ts b/packages/core/src/plugin/provider/amazon-bedrock.ts index e8ff4142ae..65c3de5b51 100644 --- a/packages/core/src/plugin/provider/amazon-bedrock.ts +++ b/packages/core/src/plugin/provider/amazon-bedrock.ts @@ -60,7 +60,7 @@ function selectMantleModel(sdk: MantleSDK, modelID: string) { } export const AmazonBedrockPlugin = define({ - id: "opencode.provider.amazon-bedrock", + id: "opencode.provider.amazon.bedrock", effect: Effect.fn(function* (ctx) { yield* ctx.catalog.transform((evt) => { for (const item of evt.provider.list()) { diff --git a/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts b/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts index 491ce64baf..9e5d64a046 100644 --- a/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts +++ b/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts @@ -10,7 +10,7 @@ import { configuredSettings } from "./configured.js" const providerID = Provider.ID.make("cloudflare-ai-gateway") export const CloudflareAIGatewayPlugin = define({ - id: "opencode.provider.cloudflare-ai-gateway", + id: "opencode.provider.cloudflare.ai.gateway", effect: Effect.fn(function* (ctx) { const configured = yield* configuredSettings(providerID) const form = iife(() => { diff --git a/packages/core/src/plugin/provider/cloudflare-workers-ai.ts b/packages/core/src/plugin/provider/cloudflare-workers-ai.ts index e383c52235..f4c2220038 100644 --- a/packages/core/src/plugin/provider/cloudflare-workers-ai.ts +++ b/packages/core/src/plugin/provider/cloudflare-workers-ai.ts @@ -10,7 +10,7 @@ import { configuredSettings } from "./configured.js" const providerID = Provider.ID.make("cloudflare-workers-ai") export const CloudflareWorkersAIPlugin = define({ - id: "opencode.provider.cloudflare-workers-ai", + id: "opencode.provider.cloudflare.workers.ai", effect: Effect.fn(function* (ctx) { const configured = yield* configuredSettings(providerID) const form = iife(() => { diff --git a/packages/core/src/plugin/provider/github-copilot.ts b/packages/core/src/plugin/provider/github-copilot.ts index 7b9245f92d..9b7a0ae88c 100644 --- a/packages/core/src/plugin/provider/github-copilot.ts +++ b/packages/core/src/plugin/provider/github-copilot.ts @@ -146,7 +146,7 @@ const oauth = (app: App.Info) => }) satisfies IntegrationOAuthMethodRegistration export const GithubCopilotPlugin = define({ - id: "opencode.provider.github-copilot", + id: "opencode.provider.github.copilot", effect: Effect.fn(function* (ctx) { const catalog = yield* Catalog.Service const bus = yield* Bus.Service diff --git a/packages/core/src/plugin/provider/google-vertex.ts b/packages/core/src/plugin/provider/google-vertex.ts index d1317ae13d..e91c9b029e 100644 --- a/packages/core/src/plugin/provider/google-vertex.ts +++ b/packages/core/src/plugin/provider/google-vertex.ts @@ -55,7 +55,7 @@ function authFetch(fetchWithRuntimeOptions?: unknown) { } export const GoogleVertexPlugin = define({ - id: "opencode.provider.google-vertex", + id: "opencode.provider.google.vertex", effect: Effect.fn(function* (ctx) { yield* ctx.catalog.transform((evt) => { for (const item of evt.provider.list()) { diff --git a/packages/core/src/plugin/provider/openai-compatible.ts b/packages/core/src/plugin/provider/openai-compatible.ts index fb523a3a24..97fbe965d7 100644 --- a/packages/core/src/plugin/provider/openai-compatible.ts +++ b/packages/core/src/plugin/provider/openai-compatible.ts @@ -2,7 +2,7 @@ import { Effect } from "effect" import { define } from "@opencode-ai/plugin/effect/plugin" export const OpenAICompatiblePlugin = define({ - id: "opencode.provider.openai-compatible", + id: "opencode.provider.openai.compatible", effect: Effect.fn(function* (ctx) { yield* ctx.aisdk.hook( "sdk", diff --git a/packages/core/src/plugin/provider/sap-ai-core.ts b/packages/core/src/plugin/provider/sap-ai-core.ts index 1bee2acb7a..ba9211227c 100644 --- a/packages/core/src/plugin/provider/sap-ai-core.ts +++ b/packages/core/src/plugin/provider/sap-ai-core.ts @@ -6,7 +6,7 @@ import { Provider } from "../../provider.js" import { importModule } from "@opencode-ai/util/runtime-import" export const SapAICorePlugin = define({ - id: "opencode.provider.sap-ai-core", + id: "opencode.provider.sap.ai.core", effect: Effect.fn(function* (ctx) { const npm = yield* Npm.Service yield* ctx.aisdk.hook( diff --git a/packages/core/src/plugin/provider/snowflake-cortex.ts b/packages/core/src/plugin/provider/snowflake-cortex.ts index 871c50fafe..ef83f2da35 100644 --- a/packages/core/src/plugin/provider/snowflake-cortex.ts +++ b/packages/core/src/plugin/provider/snowflake-cortex.ts @@ -65,7 +65,7 @@ export function cortexFetch(upstream: FetchLike = fetch) { } export const SnowflakeCortexPlugin = define({ - id: "opencode.provider.snowflake-cortex", + id: "opencode.provider.snowflake.cortex", effect: Effect.fn(function* (ctx) { yield* ctx.aisdk.hook( "sdk", diff --git a/packages/core/src/plugin/system-prompt.ts b/packages/core/src/plugin/system-prompt.ts index dca093fbe4..585ed88f99 100644 --- a/packages/core/src/plugin/system-prompt.ts +++ b/packages/core/src/plugin/system-prompt.ts @@ -33,7 +33,7 @@ export const Plugins = [OpenAIPlugin, GooglePlugin, AnthropicPlugin, KimiPlugin, function make(id: string, select: (modelID: string) => string | undefined) { return define({ - id: `opencode.system-prompt.${id}`, + id: `opencode.prompt.${id}`, effect: Effect.fn(`SystemPromptPlugin.${id}`)(function* (ctx) { yield* ctx.session.hook("context", (event) => Effect.gen(function* () { diff --git a/packages/core/test/plugin/models-dev.test.ts b/packages/core/test/plugin/models-dev.test.ts index 3fe32a4b84..348ba4d3a8 100644 --- a/packages/core/test/plugin/models-dev.test.ts +++ b/packages/core/test/plugin/models-dev.test.ts @@ -421,8 +421,8 @@ describe("ModelsDevPlugin", () => { expect(yield* integrations.get(Integration.ID.make("google-vertex"))).toBeDefined() expect(yield* integrations.get(Integration.ID.make("azure-cognitive-services"))).toBeUndefined() expect(yield* integrations.get(Integration.ID.make("google-vertex-anthropic"))).toBeUndefined() - expect(ProviderPlugins.map((plugin) => plugin.id)).not.toContain("opencode.provider.azure-cognitive-services") - expect(ProviderPlugins.map((plugin) => plugin.id)).not.toContain("opencode.provider.google-vertex-anthropic") + expect(ProviderPlugins.map((plugin) => plugin.id)).not.toContain("opencode.provider.azure.cognitive.services") + expect(ProviderPlugins.map((plugin) => plugin.id)).not.toContain("opencode.provider.google.vertex.anthropic") }), ) diff --git a/packages/core/test/plugin/provider-snowflake-cortex.test.ts b/packages/core/test/plugin/provider-snowflake-cortex.test.ts index f72c19f90f..3d883eca9b 100644 --- a/packages/core/test/plugin/provider-snowflake-cortex.test.ts +++ b/packages/core/test/plugin/provider-snowflake-cortex.test.ts @@ -43,10 +43,10 @@ function withEnv(vars: Record, effect: () = describe("SnowflakeCortexPlugin", () => { it.effect("is registered in ProviderPlugins before OpenAICompatiblePlugin", () => Effect.sync(() => { - expect(ProviderPlugins.map((item) => item.id)).toContain("opencode.provider.snowflake-cortex") + expect(ProviderPlugins.map((item) => item.id)).toContain("opencode.provider.snowflake.cortex") const ids = ProviderPlugins.map((p) => p.id) - expect(ids.indexOf("opencode.provider.snowflake-cortex")).toBeLessThan( - ids.indexOf("opencode.provider.openai-compatible"), + expect(ids.indexOf("opencode.provider.snowflake.cortex")).toBeLessThan( + ids.indexOf("opencode.provider.openai.compatible"), ) }), ) diff --git a/packages/core/test/plugin/system-prompt.test.ts b/packages/core/test/plugin/system-prompt.test.ts index 028b8414bf..7de4c1d912 100644 --- a/packages/core/test/plugin/system-prompt.test.ts +++ b/packages/core/test/plugin/system-prompt.test.ts @@ -48,12 +48,12 @@ describe("SystemPromptPlugin", () => { test("uses granular IDs with a common prefix", () => { expect(SystemPromptPlugin.Plugins.map((plugin) => plugin.id)).toEqual([ - "opencode.system-prompt.openai", - "opencode.system-prompt.google", - "opencode.system-prompt.anthropic", - "opencode.system-prompt.kimi", - "opencode.system-prompt.arcee", - "opencode.system-prompt.meta", + "opencode.prompt.openai", + "opencode.prompt.google", + "opencode.prompt.anthropic", + "opencode.prompt.kimi", + "opencode.prompt.arcee", + "opencode.prompt.meta", ]) })