refactor(core): simplify plugin entrypoint resolution

This commit is contained in:
Dax Raad
2026-07-13 22:45:15 -04:00
parent 5cf24bf185
commit 2a08cd3b96
5 changed files with 35 additions and 72 deletions
@@ -1,13 +0,0 @@
import { Plugin } from "@opencode-ai/plugin/v2"
export default Plugin.define({
id: "folder-plugin",
setup: async (ctx) => {
await ctx.agent.transform((agents) => {
agents.update("folder", (agent) => {
agent.description = "Loaded from plugin folder"
agent.mode = "subagent"
})
})
},
})
+1 -5
View File
@@ -134,7 +134,7 @@ describe("PluginSupervisor config", () => {
),
)
it.live("loads auto-discovered plugin files and packages", () =>
it.live("loads auto-discovered plugin files", () =>
withLocation(
undefined,
Effect.gen(function* () {
@@ -143,9 +143,6 @@ describe("PluginSupervisor config", () => {
expect(yield* agents.get(AgentV2.ID.make("directory"))).toMatchObject({
description: "Loaded from plugin directory",
})
expect(yield* agents.get(AgentV2.ID.make("folder"))).toMatchObject({
description: "Loaded from plugin folder",
})
}),
true,
),
@@ -195,7 +192,6 @@ describe("PluginSupervisor config", () => {
yield* ready()
const agents = yield* AgentV2.Service
expect(yield* agents.get(AgentV2.ID.make("directory"))).toBeUndefined()
expect(yield* agents.get(AgentV2.ID.make("folder"))).toBeUndefined()
}),
true,
),
+12 -4
View File
@@ -41,19 +41,27 @@ describe("Npm.add", () => {
await fs.mkdir(path.join(tmp.path, "fixture-provider"))
await writePackage(path.join(tmp.path, "fixture-provider"), {
name: "fixture-provider",
main: "index.js",
exports: {
".": "./index.js",
"./tui": "./tui.js",
},
})
await Bun.write(path.join(tmp.path, "fixture-provider", "index.js"), "export const fixture = true\n")
await Bun.write(path.join(tmp.path, "fixture-provider", "tui.js"), "export const tui = true\n")
const spec = `fixture-provider@file:${path.join(tmp.path, "fixture-provider")}`
await fs.mkdir(path.join(tmp.path, "cache", "packages", Npm.sanitize(spec)), { recursive: true })
const entry = await Effect.gen(function* () {
const entries = await Effect.gen(function* () {
const npm = yield* Npm.Service
return yield* npm.add(spec)
return {
tui: yield* npm.add(spec, { subpaths: ["tui", ""] }),
fallback: yield* npm.add(spec, { subpaths: ["missing", ""] }),
}
}).pipe(Effect.scoped, Effect.provide(npmLayer(path.join(tmp.path, "cache"))), Effect.runPromise)
expect(entry.entrypoint).toBeDefined()
expect(entries.tui.entrypoint).toEndWith("/tui.js")
expect(entries.fallback.entrypoint).toEndWith("/index.js")
})
})