fix: prevent subagent keychain migration churn (#869)

Co-authored-by: Letta <noreply@letta.com>
This commit is contained in:
Charles Packer
2026-02-08 22:26:47 -08:00
committed by GitHub
parent 3f7e3f2020
commit 44827bdb8e
3 changed files with 102 additions and 33 deletions

View File

@@ -785,6 +785,42 @@ describe("Settings Manager - Edge Cases", () => {
// ============================================================================
describe("Settings Manager - Agents Array Migration", () => {
const originalSubagentRole = process.env.LETTA_CODE_AGENT_ROLE;
afterEach(() => {
if (originalSubagentRole === undefined) {
delete process.env.LETTA_CODE_AGENT_ROLE;
} else {
process.env.LETTA_CODE_AGENT_ROLE = originalSubagentRole;
}
});
test.skipIf(!keychainAvailablePrecompute)(
"Subagent process skips token migration to secrets",
async () => {
const { writeFile, mkdir } = await import("../utils/fs.js");
const settingsDir = join(testHomeDir, ".letta");
await mkdir(settingsDir, { recursive: true });
await writeFile(
join(settingsDir, "settings.json"),
JSON.stringify({
refreshToken: "rt-subagent-should-stay",
env: {
LETTA_API_KEY: "sk-subagent-should-stay",
},
}),
);
process.env.LETTA_CODE_AGENT_ROLE = "subagent";
await settingsManager.initialize();
const settings = settingsManager.getSettings();
expect(settings.refreshToken).toBe("rt-subagent-should-stay");
expect(settings.env?.LETTA_API_KEY).toBe("sk-subagent-should-stay");
},
);
test("Migrates from pinnedAgents (oldest legacy format)", async () => {
// Setup: Write old format to disk
const { writeFile, mkdir } = await import("../utils/fs.js");