|
|
@@ -0,0 +1,66 @@
|
|
|
+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()
|
|
|
+})
|