From 539097debcb55eb071f2adc85e42010852e0987e Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sat, 26 Sep 2026 20:34:30 +0200 Subject: [PATCH] fix(usage): declare the Paseo requirement on internal usage-source plugins A manifest without requirements.paseo targets Paseo before 0.8, so the daemon refused to start eight of the nine usage sources. --- .../plugins/claude-usage-source/paseo-plugin.json | 2 +- .../plugins/codex-usage-source/paseo-plugin.json | 2 +- .../plugins/copilot-usage-source/paseo-plugin.json | 2 +- .../plugins/cursor-usage-source/paseo-plugin.json | 2 +- .../plugins/grok-usage-source/paseo-plugin.json | 2 +- .../plugins/kimi-usage-source/paseo-plugin.json | 2 +- .../plugins/minimax-usage-source/paseo-plugin.json | 2 +- .../src/plugins/zai-usage-source/paseo-plugin.json | 2 +- .../src/server/plugins/internal-boundary.test.ts | 14 ++++++++++++++ 9 files changed, 22 insertions(+), 8 deletions(-) diff --git a/packages/server/src/plugins/claude-usage-source/paseo-plugin.json b/packages/server/src/plugins/claude-usage-source/paseo-plugin.json index 1e2c89dca0..f4e639a515 100644 --- a/packages/server/src/plugins/claude-usage-source/paseo-plugin.json +++ b/packages/server/src/plugins/claude-usage-source/paseo-plugin.json @@ -1 +1 @@ -{ "id": "claude-usage-source" } +{ "id": "claude-usage-source", "requirements": { "paseo": ">=0.9.2" } } diff --git a/packages/server/src/plugins/codex-usage-source/paseo-plugin.json b/packages/server/src/plugins/codex-usage-source/paseo-plugin.json index 6fe9779596..64470099fb 100644 --- a/packages/server/src/plugins/codex-usage-source/paseo-plugin.json +++ b/packages/server/src/plugins/codex-usage-source/paseo-plugin.json @@ -1 +1 @@ -{ "id": "codex-usage-source" } +{ "id": "codex-usage-source", "requirements": { "paseo": ">=0.9.2" } } diff --git a/packages/server/src/plugins/copilot-usage-source/paseo-plugin.json b/packages/server/src/plugins/copilot-usage-source/paseo-plugin.json index 306f1a467a..ab6addf629 100644 --- a/packages/server/src/plugins/copilot-usage-source/paseo-plugin.json +++ b/packages/server/src/plugins/copilot-usage-source/paseo-plugin.json @@ -1 +1 @@ -{ "id": "copilot-usage-source" } +{ "id": "copilot-usage-source", "requirements": { "paseo": ">=0.9.2" } } diff --git a/packages/server/src/plugins/cursor-usage-source/paseo-plugin.json b/packages/server/src/plugins/cursor-usage-source/paseo-plugin.json index 5265bb7985..311fd28ee4 100644 --- a/packages/server/src/plugins/cursor-usage-source/paseo-plugin.json +++ b/packages/server/src/plugins/cursor-usage-source/paseo-plugin.json @@ -1 +1 @@ -{ "id": "cursor-usage-source" } +{ "id": "cursor-usage-source", "requirements": { "paseo": ">=0.9.2" } } diff --git a/packages/server/src/plugins/grok-usage-source/paseo-plugin.json b/packages/server/src/plugins/grok-usage-source/paseo-plugin.json index 0954ded8d4..2fbdcc5f14 100644 --- a/packages/server/src/plugins/grok-usage-source/paseo-plugin.json +++ b/packages/server/src/plugins/grok-usage-source/paseo-plugin.json @@ -1 +1 @@ -{ "id": "grok-usage-source" } +{ "id": "grok-usage-source", "requirements": { "paseo": ">=0.9.2" } } diff --git a/packages/server/src/plugins/kimi-usage-source/paseo-plugin.json b/packages/server/src/plugins/kimi-usage-source/paseo-plugin.json index 1944cc1841..c81434ce3b 100644 --- a/packages/server/src/plugins/kimi-usage-source/paseo-plugin.json +++ b/packages/server/src/plugins/kimi-usage-source/paseo-plugin.json @@ -1 +1 @@ -{ "id": "kimi-usage-source" } +{ "id": "kimi-usage-source", "requirements": { "paseo": ">=0.9.2" } } diff --git a/packages/server/src/plugins/minimax-usage-source/paseo-plugin.json b/packages/server/src/plugins/minimax-usage-source/paseo-plugin.json index 0037a04482..61ecc81c8c 100644 --- a/packages/server/src/plugins/minimax-usage-source/paseo-plugin.json +++ b/packages/server/src/plugins/minimax-usage-source/paseo-plugin.json @@ -1 +1 @@ -{ "id": "minimax-usage-source" } +{ "id": "minimax-usage-source", "requirements": { "paseo": ">=0.9.2" } } diff --git a/packages/server/src/plugins/zai-usage-source/paseo-plugin.json b/packages/server/src/plugins/zai-usage-source/paseo-plugin.json index 2d98c4cced..4b65f4a4e3 100644 --- a/packages/server/src/plugins/zai-usage-source/paseo-plugin.json +++ b/packages/server/src/plugins/zai-usage-source/paseo-plugin.json @@ -1 +1 @@ -{ "id": "zai-usage-source" } +{ "id": "zai-usage-source", "requirements": { "paseo": ">=0.9.2" } } diff --git a/packages/server/src/server/plugins/internal-boundary.test.ts b/packages/server/src/server/plugins/internal-boundary.test.ts index cfd0eaea48..62b29d9fc8 100644 --- a/packages/server/src/server/plugins/internal-boundary.test.ts +++ b/packages/server/src/server/plugins/internal-boundary.test.ts @@ -4,8 +4,12 @@ import { tmpdir } from "node:os"; import path from "node:path"; import { fileURLToPath } from "node:url"; import { expect, test } from "vitest"; +import { assertPluginCompatibility } from "@getpaseo/protocol/plugin-requirements"; +import { INTERNAL_PLUGINS } from "../../plugins/index.js"; +import { resolveDaemonVersion } from "../daemon-version.js"; import { createPluginImportReader } from "./compiler-imports.js"; import { compilePlugin, SERVER_HOST_MODULES } from "./compiler.js"; +import { readPluginManifest } from "./manifest.js"; const root = fileURLToPath(new URL("../../plugins/", import.meta.url)); const fixture = fileURLToPath(new URL("./test-fixtures/internal-seam/", import.meta.url)); @@ -60,3 +64,13 @@ test("internal plugin boundary rejects daemon imports with the file and specifie await rm(directory, { recursive: true, force: true }); } }); + +test("every internal plugin manifest is compatible with the daemon that ships it", async () => { + const version = resolveDaemonVersion(import.meta.url); + for (const plugin of INTERNAL_PLUGINS) { + const manifest = await readPluginManifest(plugin.directory); + expect(() => + assertPluginCompatibility({ ...manifest, version, runtime: "daemon" }), + ).not.toThrow(); + } +});