diff --git a/src/plugins/installed-plugin-index-store.test.ts b/src/plugins/installed-plugin-index-store.test.ts index 61af416c615..fb556707a74 100644 --- a/src/plugins/installed-plugin-index-store.test.ts +++ b/src/plugins/installed-plugin-index-store.test.ts @@ -39,6 +39,7 @@ function createIndex(overrides: Partial = {}): InstalledPl rootDir: "/plugins/demo", origin: "global", enabled: true, + syntheticAuthRefs: ["demo"], startup: { sidecar: false, memory: false, diff --git a/src/plugins/installed-plugin-index-store.ts b/src/plugins/installed-plugin-index-store.ts index 0827ca174c9..45edc0201d3 100644 --- a/src/plugins/installed-plugin-index-store.ts +++ b/src/plugins/installed-plugin-index-store.ts @@ -69,6 +69,7 @@ const InstalledPluginIndexRecordSchema = z.object({ origin: z.string(), enabled: z.boolean(), enabledByDefault: z.boolean().optional(), + syntheticAuthRefs: StringArraySchema.optional(), startup: InstalledPluginIndexStartupSchema, compat: z.array(z.string()), }); diff --git a/src/plugins/installed-plugin-index.test.ts b/src/plugins/installed-plugin-index.test.ts index 119bc8bea3c..9d2dff291e2 100644 --- a/src/plugins/installed-plugin-index.test.ts +++ b/src/plugins/installed-plugin-index.test.ts @@ -123,6 +123,7 @@ function createRichPluginFixture(params: { packageVersion?: string } = {}) { providerAuthEnvVars: { demo: ["DEMO_API_KEY"], }, + syntheticAuthRefs: ["demo", "demo-cli"], channelEnvVars: { "demo-chat": ["DEMO_CHAT_TOKEN"], }, @@ -182,6 +183,7 @@ describe("installed plugin index", () => { rootDir: fixture.rootDir, source: path.join(fixture.rootDir, "index.ts"), enabled: true, + syntheticAuthRefs: ["demo", "demo-cli"], packageInstall: { defaultChoice: "npm", npm: { diff --git a/src/plugins/installed-plugin-index.ts b/src/plugins/installed-plugin-index.ts index 4c280e8a9cb..e8f551fda15 100644 --- a/src/plugins/installed-plugin-index.ts +++ b/src/plugins/installed-plugin-index.ts @@ -103,6 +103,7 @@ export type InstalledPluginIndexRecord = { origin: PluginManifestRecord["origin"]; enabled: boolean; enabledByDefault?: boolean; + syntheticAuthRefs?: readonly string[]; startup: InstalledPluginStartupInfo; compat: readonly PluginCompatCode[]; }; @@ -591,6 +592,9 @@ function buildInstalledPluginIndex( startup: buildStartupInfo(record), compat: collectCompatCodes(record), }; + if (record.syntheticAuthRefs && record.syntheticAuthRefs.length > 0) { + indexRecord.syntheticAuthRefs = record.syntheticAuthRefs; + } if (record.format && record.format !== "openclaw") { indexRecord.format = record.format; }