| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- const defaults: Record<string, string> = {
- ask: "var(--icon-agent-ask-base)",
- build: "var(--icon-agent-build-base)",
- docs: "var(--icon-agent-docs-base)",
- plan: "var(--icon-agent-plan-base)",
- }
- const palette = [
- "var(--icon-agent-ask-base)",
- "var(--icon-agent-build-base)",
- "var(--icon-agent-docs-base)",
- "var(--icon-agent-plan-base)",
- "var(--syntax-info)",
- "var(--syntax-success)",
- "var(--syntax-warning)",
- "var(--syntax-property)",
- "var(--syntax-constant)",
- "var(--text-diff-add-base)",
- "var(--text-diff-delete-base)",
- "var(--icon-warning-base)",
- ]
- function tone(name: string) {
- let hash = 0
- for (const char of name) hash = (hash * 31 + char.charCodeAt(0)) >>> 0
- return palette[hash % palette.length]
- }
- export function agentColor(name: string, custom?: string) {
- if (custom) return custom
- return defaults[name] ?? defaults[name.toLowerCase()] ?? tone(name.toLowerCase())
- }
- export function messageAgentColor(
- list: readonly { role: string; agent?: string }[] | undefined,
- agents: readonly { name: string; color?: string }[],
- ) {
- if (!list) return undefined
- for (let i = list.length - 1; i >= 0; i--) {
- const item = list[i]
- if (item.role !== "user" || !item.agent) continue
- return agentColor(item.agent, agents.find((agent) => agent.name === item.agent)?.color)
- }
- }
|