import { test, expect } from "bun:test" import path from "path" import { tmpdir } from "../fixture/fixture" import { Instance } from "../../src/project/instance" import { Config } from "../../src/config/config" import { Agent as AgentSvc } from "../../src/agent/agent" import { Color } from "../../src/util/color" test("agent color parsed from project config", async () => { await using tmp = await tmpdir({ init: async (dir) => { await Bun.write( path.join(dir, "opencode.json"), JSON.stringify({ $schema: "https://opencode.ai/config.json", agent: { build: { color: "#FFA500" }, }, }), ) }, }) await Instance.provide({ directory: tmp.path, fn: async () => { const cfg = await Config.get() expect(cfg.agent?.["build"]?.color).toBe("#FFA500") }, }) }) test("Agent.get includes color from config", async () => { await using tmp = await tmpdir({ init: async (dir) => { await Bun.write( path.join(dir, "opencode.json"), JSON.stringify({ $schema: "https://opencode.ai/config.json", agent: { plan: { color: "#A855F7" }, }, }), ) }, }) await Instance.provide({ directory: tmp.path, fn: async () => { const plan = await AgentSvc.get("plan") expect(plan?.color).toBe("#A855F7") }, }) }) test("Color.hexToAnsiBold converts valid hex to ANSI", () => { const result = Color.hexToAnsiBold("#FFA500") expect(result).toBe("\x1b[38;2;255;165;0m\x1b[1m") }) test("Color.hexToAnsiBold returns undefined for invalid hex", () => { expect(Color.hexToAnsiBold(undefined)).toBeUndefined() expect(Color.hexToAnsiBold("")).toBeUndefined() expect(Color.hexToAnsiBold("#FFF")).toBeUndefined() expect(Color.hexToAnsiBold("FFA500")).toBeUndefined() expect(Color.hexToAnsiBold("#GGGGGG")).toBeUndefined() })