import { expect } from "e2e";
import { writeFile } from "node:fs/promises";
import { test, WEB } from "./t3.ts";
const config = process.env.XDG_CONFIG_HOME + "/opencode/opencode.json";
const save = (added: boolean) => writeFile(config, JSON.stringify({provider:{evidence:{npm:"@ai-sdk/openai-compatible",name:"Evidence Provider",options:{baseURL:"http://127.0.0.1:9/v1",apiKey:"synthetic"},models:{baseline:{name:"Evidence Baseline"},...(added?{"reload-proof":{name:"Evidence Reload Proof"}}:{})}}}}));
test("Global OpenCode config edits update the composer catalog", WEB, async ({t3,app,screen,browser})=>{
 await save(false);
 const project = await t3.project("Config demo");
 await t3.thread({project,title:"Config reload",messages:["Ready"]});
 await t3.open();
 await browser.locator("[data-thread-item]").first().tap();
 await browser.locator('[data-chat-provider-model-picker="true"]').first().tap();
 await screen.getByRole("button", "OpenCode", {exact:true}).tap();
 await screen.getByPlaceholder("Search models...").fill("Evidence Baseline");
 await screen.getByText("Evidence Baseline",{exact:true}).first().waitFor({state:"visible",timeout:90000});
 await save(true);
 await screen.getByPlaceholder("Search models...").fill("Evidence Reload Proof");
 await app.screenshot("config-model-added");
 await expect(screen.getByText("Evidence Reload Proof",{exact:true}).first()).toBeVisible({timeout:20000});
 await app.screenshot("config-model-discovered");
 await save(false);
 await expect(screen.getByText("Evidence Reload Proof",{exact:true}).first()).toBeHidden({timeout:20000});
 await app.screenshot("config-model-removed");
});
