diff --git a/packages/client/src/promise/generated/types.ts b/packages/client/src/promise/generated/types.ts index 966ec22cc0..a08c7b3246 100644 --- a/packages/client/src/promise/generated/types.ts +++ b/packages/client/src/promise/generated/types.ts @@ -8,6 +8,8 @@ export type ModelRef = { id: string; providerID: string; variant?: string } export type ProviderSettings = { [x: string]: JsonValue } +export type AgentColor = string + export type PermissionV2Effect = "allow" | "deny" | "ask" export type PluginInfo = { id: string } @@ -2003,7 +2005,7 @@ export type AgentInfo = { description?: string mode: "subagent" | "primary" | "all" hidden: boolean - color?: string + color?: AgentColor steps?: number permissions: PermissionV2Ruleset } diff --git a/packages/schema/src/agent.ts b/packages/schema/src/agent.ts index 399e9e9131..8001a2967e 100644 --- a/packages/schema/src/agent.ts +++ b/packages/schema/src/agent.ts @@ -16,9 +16,7 @@ export type ID = typeof ID.Type export const Name = Schema.String.pipe(Schema.brand("Agent.Name")) export type Name = typeof Name.Type -export const Color = Schema.String.annotate({ identifier: "Agent.Color" }).check( - Schema.isPattern(/^#[0-9a-fA-F]{6}$/), -) +export const Color = Schema.String.annotate({ identifier: "Agent.Color" }) export type Color = typeof Color.Type export interface Info extends Schema.Schema.Type {} diff --git a/packages/schema/test/agent.test.ts b/packages/schema/test/agent.test.ts new file mode 100644 index 0000000000..30535ebaec --- /dev/null +++ b/packages/schema/test/agent.test.ts @@ -0,0 +1,10 @@ +import { expect, test } from "bun:test" +import { Schema } from "effect" +import { Agent } from "../src/agent.js" + +test("Agent.Color preserves configured colors at the public boundary", () => { + const encode = Schema.encodeSync(Agent.Color) + + expect(encode("info")).toBe("info") + expect(encode("custom-color")).toBe("custom-color") +})