/// import type React from 'react'; import codexPng from '../assets/icon-codex.png'; /** Claude icon โ€” extracted from apps/marketing/public/assets/icon-claude.svg */ export const ClaudeIcon: React.FC<{ className?: string }> = ({ className = 'w-4 h-4' }) => ( ); /** Codex icon โ€” PNG from apps/marketing/public/assets/icon-codex.png */ export const CodexIcon: React.FC<{ className?: string }> = ({ className = 'w-4 h-4' }) => ( ); /** * Pi icon: the pi.dev logo (https://pi.dev/logo.svg), the same file as * apps/marketing/public/assets/icon-pi.svg. It keeps its own three colours in * every theme; the viewBox crops pi.dev's 800-unit canvas to the mark plus an * even margin so it sits level with the other marks. */ export const PiIcon: React.FC<{ className?: string }> = ({ className = 'w-4 h-4' }) => ( ); /** OpenCode icon โ€” extracted from apps/marketing/public/assets/icon-opencode-dark.svg */ export const OpenCodeIcon: React.FC<{ className?: string }> = ({ className = 'w-4 h-4' }) => ( ); /** Generic fallback icon for unknown providers */ const GenericProviderIcon: React.FC<{ className?: string }> = ({ className = 'w-4 h-4' }) => ( ); /** "Ask this session": a speech bubble, since the answer comes from the agent session itself. */ const SessionIcon: React.FC<{ className?: string }> = ({ className = 'w-4 h-4' }) => ( ); /** Provider metadata: maps provider type name to display label and icon component. */ export const PROVIDER_META: Record }> = { 'claude-agent-sdk': { label: 'Claude', icon: ClaudeIcon }, 'codex-sdk': { label: 'Codex', icon: CodexIcon }, 'pi-sdk': { label: 'Pi', icon: PiIcon }, 'opencode-sdk': { label: 'OpenCode', icon: OpenCodeIcon }, 'session-bridge': { label: 'Ask this session', icon: SessionIcon }, }; /** * Get provider metadata, with fallback for unknown providers. A server-sent * `label` (e.g. "Ask this session ยท Pi") overrides the name lookup. */ export function getProviderMeta(providerName: string, label?: string): { label: string; icon: React.FC<{ className?: string }> } { const meta = PROVIDER_META[providerName] ?? { label: providerName, icon: GenericProviderIcon }; return label ? { ...meta, label } : meta; }