From 053d47dff3f1ee7e76ed7db986f8700c28b29120 Mon Sep 17 00:00:00 2001 From: Ishaan Gupta Date: Sat, 10 Oct 2026 21:15:16 +0530 Subject: [PATCH 1/2] fix: load the server entry in OpenCode V1 --- package.json | 2 +- src/server.test.ts | 14 ++++++++++++++ src/server.ts | 12 ++++++++---- src/version.ts | 2 +- 4 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 src/server.test.ts diff --git a/package.json b/package.json index f9f3c4e..67b212c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opencode-supermemory", - "version": "2.0.16", + "version": "2.0.17", "description": "OpenCode plugin that gives coding agents persistent memory using Supermemory", "type": "module", "main": "dist/index.js", diff --git a/src/server.test.ts b/src/server.test.ts new file mode 100644 index 0000000..7f9f7db --- /dev/null +++ b/src/server.test.ts @@ -0,0 +1,14 @@ +import { describe, expect, test } from "bun:test"; + +import plugin from "./server.js"; + +describe("server entry", () => { + // OpenCode V1 and OpenCode 2 both resolve the package's ./server export. + test("exposes setup() for OpenCode 2 and server() for OpenCode V1", () => { + expect(plugin.id).toBe("supermemory"); + expect(typeof plugin.setup).toBe("function"); + expect(typeof plugin.server).toBe("function"); + // V1 rejects an object that has both server() and tui(). + expect("tui" in plugin).toBe(false); + }); +}); diff --git a/src/server.ts b/src/server.ts index 45e74fd..468ce1b 100644 --- a/src/server.ts +++ b/src/server.ts @@ -1,15 +1,19 @@ /** - * OpenCode 2 server plugin entry, resolved as `opencode-supermemory/server`. - * The root export stays the OpenCode V1 plugin so both generations can load - * the same package. + * Server plugin entry, resolved as `opencode-supermemory/server` by both + * OpenCode generations. OpenCode 2 reads `id` and `setup()`. OpenCode V1 + * (1.16 and later) also resolves this export and calls `server()`, so the + * default export carries both implementations. */ +import type { Plugin as V1Plugin } from "@opencode-ai/plugin"; import type { Plugin } from "@opencode/plugin"; +import { SupermemoryPlugin } from "./index.js"; import { setupV2 } from "./v2/runtime.js"; -const plugin: Plugin.Plugin = { +const plugin: Plugin.Plugin & { server: V1Plugin } = { id: "supermemory", setup: (context) => setupV2(context), + server: (input, options) => SupermemoryPlugin(input, options), }; export default plugin; diff --git a/src/version.ts b/src/version.ts index 33a1c36..4ee3164 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1,3 +1,3 @@ // AUTO-GENERATED by scripts/sync-version.mjs — do not edit by hand. // Sourced from package.json "version" so the two cannot drift. -export const PLUGIN_VERSION = "2.0.16"; +export const PLUGIN_VERSION = "2.0.17"; From 1d889fa277e4c7582bedee1a3d7d31bf145e23ba Mon Sep 17 00:00:00 2001 From: Ishaan Gupta Date: Sat, 10 Oct 2026 21:22:27 +0530 Subject: [PATCH 2/2] Delete src/server.test.ts --- src/server.test.ts | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 src/server.test.ts diff --git a/src/server.test.ts b/src/server.test.ts deleted file mode 100644 index 7f9f7db..0000000 --- a/src/server.test.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { describe, expect, test } from "bun:test"; - -import plugin from "./server.js"; - -describe("server entry", () => { - // OpenCode V1 and OpenCode 2 both resolve the package's ./server export. - test("exposes setup() for OpenCode 2 and server() for OpenCode V1", () => { - expect(plugin.id).toBe("supermemory"); - expect(typeof plugin.setup).toBe("function"); - expect(typeof plugin.server).toBe("function"); - // V1 rejects an object that has both server() and tui(). - expect("tui" in plugin).toBe(false); - }); -});