fix(plugins): read the mem0 CLI key and ignore unexpanded host placeholders
The Python plugin core and the opencode, pi and deepseek plugins now fall back to the key `mem0 init` saves in ~/.mem0/config.json, so a configured CLI is enough to authenticate. The Python core also stops using or caching a literal ${api_key} left behind when a host (Cursor) does not expand its plugin variables, which is what kept asking for auth after the key was set.
Fixes #7346
This commit is contained in:
@@ -102,6 +102,16 @@ describe("resolveApiKey", () => {
|
||||
expect(resolveApiKey({}, dir)).toBe("m0-later");
|
||||
});
|
||||
|
||||
test("falls back to the key mem0 init saved", () => {
|
||||
const dir = home();
|
||||
mkdirSync(join(dir, ".mem0"));
|
||||
writeFileSync(join(dir, ".mem0", "config.json"), JSON.stringify({platform: {api_key: "m0-cli-key"}}));
|
||||
expect(resolveApiKey({}, dir)).toBe("m0-cli-key");
|
||||
|
||||
writeFileSync(join(dir, ".zshrc"), "export MEM0_API_KEY=m0-from-profile\n");
|
||||
expect(resolveApiKey({}, dir)).toBe("m0-from-profile");
|
||||
});
|
||||
|
||||
test("ignores unsupported files and invalid assignments", () => {
|
||||
const dir = home();
|
||||
writeFileSync(join(dir, ".env"), "MEM0_API_KEY=unsupported\n");
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import {readFileSync} from "fs";
|
||||
import {homedir} from "os";
|
||||
import {join} from "path";
|
||||
import {mem0CliApiKey} from "../agent-plugin-core/typescript/src/credentials.ts";
|
||||
|
||||
const PROFILE_FILES = [".zshrc", ".bashrc", ".zprofile", ".bash_profile", ".profile"];
|
||||
|
||||
@@ -26,5 +27,5 @@ export function resolveApiKey(env: NodeJS.ProcessEnv = process.env, homeDir = ho
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
return mem0CliApiKey(homeDir);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user