Buckets:
| import { describe, expect, test } from "bun:test" | |
| import type { Agent } from "@opencode-ai/sdk/v2/client" | |
| import { directoryKey, normalizeAgentList } from "./utils" | |
| const agent = (name = "build") => | |
| ({ | |
| name, | |
| mode: "primary", | |
| permission: {}, | |
| options: {}, | |
| }) as Agent | |
| describe("normalizeAgentList", () => { | |
| test("keeps array payloads", () => { | |
| expect(normalizeAgentList([agent("build"), agent("docs")])).toEqual([agent("build"), agent("docs")]) | |
| }) | |
| test("wraps a single agent payload", () => { | |
| expect(normalizeAgentList(agent("docs"))).toEqual([agent("docs")]) | |
| }) | |
| test("extracts agents from keyed objects", () => { | |
| expect( | |
| normalizeAgentList({ | |
| build: agent("build"), | |
| docs: agent("docs"), | |
| }), | |
| ).toEqual([agent("build"), agent("docs")]) | |
| }) | |
| test("drops invalid payloads", () => { | |
| expect(normalizeAgentList({ name: "AbortError" })).toEqual([]) | |
| expect(normalizeAgentList([{ name: "build" }, agent("docs")])).toEqual([agent("docs")]) | |
| }) | |
| }) | |
| describe("directoryKey", () => { | |
| test("normalizes slashes", () => { | |
| expect(String(directoryKey("C:\\Repos\\sst\\opencode"))).toBe("C:/Repos/sst/opencode") | |
| expect(String(directoryKey("C:/Repos/sst/opencode"))).toBe("C:/Repos/sst/opencode") | |
| }) | |
| test("preserves backslashes in posix paths", () => { | |
| expect(String(directoryKey("/tmp/foo\\bar"))).toBe("/tmp/foo\\bar") | |
| }) | |
| test("trims trailing slashes without breaking roots", () => { | |
| expect(String(directoryKey("C:/Repos/sst/opencode/"))).toBe("C:/Repos/sst/opencode") | |
| expect(String(directoryKey("C:/"))).toBe("C:/") | |
| expect(String(directoryKey("/"))).toBe("/") | |
| }) | |
| }) | |
Xet Storage Details
- Size:
- 1.67 kB
- Xet hash:
- 23a5be18a6e68ede5de587e4c2a3a11555d216be1ffd3b87f09ea090e70cdac4
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.