{"version":3,"sources":["../../../src/tui/app/index.tsx","../../../src/tui/app/App.tsx","../../../src/tui/app/Sidebar.tsx","../../../src/tui/app/theme.ts","../../../src/tui/app/Statusbar.tsx","../../../src/tui/app/screens/Dashboard.tsx","../../../src/tui/app/screens/Inspect.tsx","../../../src/model/inspector.ts","../../../src/tui/app/screens/Catalog.tsx","../../../src/model/catalog.ts","../../../src/tui/app/screens/Leaderboard.tsx","../../../src/tui/app/screens/ModelDetail.tsx","../../../src/tui/app/screens/Project.tsx","../../../src/model/project.ts","../../../src/tui/app/screens/Playground.tsx"],"sourcesContent":["import React from 'react';\nimport { render } from 'ink';\nimport { App } from './App.js';\n\nexport function runTUI() {\n  render(<App />, { alternateScreen: true, exitOnCtrlC: false });\n}\n","import React, { useState } from 'react';\nimport { Box, Text, useApp, useInput, useStdout } from 'ink';\nimport { Sidebar, type SidebarItem } from './Sidebar.js';\nimport { Statusbar } from './Statusbar.js';\nimport { Dashboard } from './screens/Dashboard.js';\nimport { Inspect } from './screens/Inspect.js';\nimport { Catalog } from './screens/Catalog.js';\nimport { Leaderboard } from './screens/Leaderboard.js';\nimport { ModelDetail } from './screens/ModelDetail.js';\nimport { Project } from './screens/Project.js';\nimport { Playground } from './screens/Playground.js';\nimport { COLORS, SPACING } from './theme.js';\n\nconst SCREENS: SidebarItem[] = [\n  { id: 'dashboard', label: 'Dashboard', icon: '\\u25C6', key: '1' },\n  { id: 'inspect', label: 'Inspect', icon: '\\u2699', key: '2' },\n  { id: 'catalog', label: 'Catalog', icon: '\\u2261', key: '3' },\n  { id: 'leaderboard', label: 'Leaderboard', icon: '\\u265B', key: '4' },\n  { id: 'project', label: 'Project', icon: '\\u2591', key: '5' },\n  { id: 'playground', label: 'Playground', icon: '\\u25B8', key: '6' },\n];\n\nexport function App() {\n  const [activeScreen, setActiveScreen] = useState('dashboard');\n  const [modelDetail, setModelDetail] = useState<string | null>(null);\n  const { exit } = useApp();\n  const { stdout } = useStdout();\n  const width = stdout?.columns ?? 80;\n  const height = stdout?.rows ?? 24;\n\n  useInput((input, key) => {\n    if (input === 'q' && !key.ctrl) {\n      exit();\n      return;\n    }\n    if (input === 'c' && key.ctrl) {\n      exit();\n      return;\n    }\n    const numKey = parseInt(input);\n    if (numKey >= 1 && numKey <= SCREENS.length) {\n      setModelDetail(null);\n      setActiveScreen(SCREENS[numKey - 1].id);\n    }\n    if (key.escape) {\n      setModelDetail(null);\n    }\n  });\n\n  const contentHeight = height - 4;\n  const contentWidth = width - SPACING.sidebarWidth - 4;\n\n  function renderContent() {\n    if (modelDetail) {\n      return (\n        <ModelDetail modelId={modelDetail} onBack={() => setModelDetail(null)} width={contentWidth} height={contentHeight} />\n      );\n    }\n\n    switch (activeScreen) {\n      case 'dashboard':\n        return <Dashboard width={contentWidth} height={contentHeight} onNavigate={setActiveScreen} onSelectModel={setModelDetail} />;\n      case 'inspect':\n        return <Inspect width={contentWidth} height={contentHeight} onNavigate={setActiveScreen} onSelectModel={setModelDetail} />;\n      case 'catalog':\n        return <Catalog width={contentWidth} height={contentHeight} onNavigate={setActiveScreen} onSelectModel={setModelDetail} />;\n      case 'leaderboard':\n        return <Leaderboard width={contentWidth} height={contentHeight} onNavigate={setActiveScreen} onSelectModel={setModelDetail} />;\n      case 'project':\n        return <Project width={contentWidth} height={contentHeight} onNavigate={setActiveScreen} onSelectModel={setModelDetail} />;\n      case 'playground':\n        return <Playground width={contentWidth} height={contentHeight} onNavigate={setActiveScreen} onSelectModel={setModelDetail} />;\n      default:\n        return <Dashboard width={contentWidth} height={contentHeight} onNavigate={setActiveScreen} onSelectModel={setModelDetail} />;\n    }\n  }\n\n  return (\n    <Box flexDirection=\"column\" height={height} width={width}>\n      <Box flexDirection=\"row\" flexGrow={1}>\n        <Box flexDirection=\"column\" width={SPACING.sidebarWidth}>\n          <Box flexDirection=\"row\" flexGrow={1}>\n            <Sidebar\n              items={SCREENS}\n              active={activeScreen}\n              onSelect={setActiveScreen}\n              width={SPACING.sidebarWidth - 1}\n            />\n            <Box flexDirection=\"column\">\n              {Array.from({ length: height - 2 }, (_, i) => (\n                <Text key={`divider-${i}`} color={COLORS.dim}>{'\\u2502'}</Text>\n              ))}\n            </Box>\n          </Box>\n        </Box>\n        <Box flexDirection=\"column\" flexGrow={1} padding={SPACING.padding}>\n          {renderContent()}\n        </Box>\n      </Box>\n      <Statusbar activeScreen={modelDetail ? 'model-detail' : activeScreen} />\n    </Box>\n  );\n}\n","import React from 'react';\nimport { Box, Text } from 'ink';\nimport { COLORS, SPACING } from './theme.js';\n\nexport interface SidebarItem {\n  id: string;\n  label: string;\n  icon: string;\n  key: string;\n}\n\ninterface SidebarProps {\n  items: SidebarItem[];\n  active: string;\n  onSelect: (id: string) => void;\n  width: number;\n}\n\nexport function Sidebar({ items, active, onSelect, width }: SidebarProps) {\n  return (\n    <Box flexDirection=\"column\" width={width}>\n      <Box paddingX={1} marginBottom={0}>\n        <Text bold color={COLORS.primary}>{'┌──────────────────────┐'}</Text>\n      </Box>\n      <Box paddingX={1}>\n        <Text bold color={COLORS.primary}>{'│'}</Text>\n        <Text bold color={COLORS.primary}> SynthCode </Text>\n        <Text bold color={COLORS.primary}>{'│'}</Text>\n      </Box>\n      <Box paddingX={1} marginBottom={1}>\n        <Text bold color={COLORS.primary}>{'└──────────────────────┘'}</Text>\n      </Box>\n      <Box paddingX={1} marginBottom={0}>\n        <Text dimColor color={COLORS.muted}>v1.4.0</Text>\n      </Box>\n      <Box paddingX={1} marginBottom={1}>\n        <Text color={COLORS.dim}>{'─'.repeat(width - 4)}</Text>\n      </Box>\n      {items.map((item) => (\n        <SidebarRow\n          key={item.id}\n          item={item}\n          isActive={active === item.id}\n          onSelect={() => onSelect(item.id)}\n        />\n      ))}\n      <Box marginTop={1} paddingX={1}>\n        <Text color={COLORS.dim}>{'─'.repeat(width - 4)}</Text>\n      </Box>\n      <Box paddingX={1}>\n        <Text dimColor color={COLORS.muted}>{'  q'} quit  {'↑↓'} nav</Text>\n      </Box>\n    </Box>\n  );\n}\n\nfunction SidebarRow({ item, isActive, onSelect }: { item: SidebarItem; isActive: boolean; onSelect: () => void }) {\n  return (\n    <Box paddingX={1}>\n      <Text color={isActive ? COLORS.bg : undefined} backgroundColor={isActive ? COLORS.primary : undefined}>\n        {isActive ? ' ▸ ' : '   '}\n      </Text>\n      <Text color={isActive ? COLORS.primary : COLORS.text} bold={isActive}>\n        {` ${item.icon} ${item.label}`}\n      </Text>\n      <Text dimColor color={COLORS.dim}>{` [${item.key}]`}</Text>\n    </Box>\n  );\n}\n","export const COLORS = {\n  primary: '#64b4ff',\n  secondary: '#a0a078',\n  success: '#50dc78',\n  green: '#50dc78',\n  warning: '#f0c83c',\n  yellow: '#f0c83c',\n  error: '#ff5050',\n  red: '#ff5050',\n  muted: '#64647a',\n  dim: '#464655',\n  bg: '#1a1a2e',\n  surface: '#23233a',\n  text: '#dcdce6',\n  fg: '#dcdce6',\n  accent: '#c792ea',\n  cyan: '#80cbef',\n  teal: '#28b4a0',\n  orange: '#f09628',\n  purple: '#9650c8',\n  barBg: '#232332',\n  barFill: '#64b4ff',\n};\n\nexport const SPACING = {\n  sidebarWidth: 28,\n  padding: 1,\n  gap: 1,\n};\n","import React from 'react';\nimport { Box, Text } from 'ink';\nimport { COLORS } from './theme.js';\n\ninterface StatusbarProps {\n  activeScreen: string;\n}\n\nconst SCREEN_LABELS: Record<string, string> = {\n  dashboard: 'Dashboard',\n  inspect: 'Inspect',\n  catalog: 'Catalog',\n  leaderboard: 'Leaderboard',\n  project: 'Project',\n  playground: 'Playground',\n};\n\nexport function Statusbar({ activeScreen }: StatusbarProps) {\n  const label = SCREEN_LABELS[activeScreen] ?? activeScreen;\n  return (\n    <Box\n      width=\"100%\"\n      paddingX={1}\n      borderStyle=\"single\"\n      borderTop={true}\n      borderBottom={false}\n      borderLeft={false}\n      borderRight={false}\n    >\n      <Text color={COLORS.primary} bold>\n        {`◆ ${label}`}\n      </Text>\n      <Text color={COLORS.dim}>{'  │  '}</Text>\n      <Text dimColor color={COLORS.muted}>\n        SynthCode v1.4.0\n      </Text>\n      <Box flexGrow={1} />\n      <Text dimColor color={COLORS.muted}>\n        {'[1-6] navigate  [q] quit  [esc] back'}\n      </Text>\n    </Box>\n  );\n}\n","import React from 'react';\nimport { Box, Text } from 'ink';\nimport { COLORS } from '../theme.js';\n\ninterface DashboardProps {\n  width: number;\n  height: number;\n  onNavigate?: (screen: string) => void;\n  onSelectModel?: (modelId: string) => void;\n}\n\nexport function Dashboard({ width, height }: DashboardProps) {\n  return (\n    <Box flexDirection=\"column\" flexGrow={1}>\n      <Box flexDirection=\"column\" alignItems=\"center\" marginBottom={1}>\n        <Text bold color={COLORS.primary}>\n          {'  ███████╗███████╗███╗   ██╗████████╗██╗███╗   ██╗███████╗'}\n        </Text>\n        <Text bold color={COLORS.primary}>\n          {'  ██╔════╝██╔════╝████╗  ██║╚══██╔══╝██║████╗  ██║██╔════╝'}\n        </Text>\n        <Text bold color={COLORS.primary}>\n          {'  ███████╗█████╗  ██╔██╗ ██║   ██║   ██║██╔██╗ ██║█████╗  '}\n        </Text>\n        <Text bold color={COLORS.primary}>\n          {'  ╚════██║██╔══╝  ██║╚██╗██║   ██║   ██║██║╚██╗██║██╔══╝  '}\n        </Text>\n        <Text bold color={COLORS.primary}>\n          {'  ███████║███████╗██║ ╚████║   ██║   ██║██║ ╚████║███████╗'}\n        </Text>\n        <Text bold color={COLORS.primary}>\n          {'  ╚══════╝╚══════╝╚═╝  ╚═══╝   ╚═╝   ╚═╝╚═╝  ╚═══╝╚══════╝'}\n        </Text>\n      </Box>\n\n      <Box justifyContent=\"center\" marginBottom={1}>\n        <Text color={COLORS.accent}>{'Synthesize any LLM into a production-grade AI agent'}</Text>\n      </Box>\n\n      <Box justifyContent=\"center\" gap={2} marginBottom={1}>\n        <StatCard label=\"Models\" value=\"30+\" color={COLORS.primary} />\n        <StatCard label=\"Providers\" value=\"4\" color={COLORS.success} />\n        <StatCard label=\"Tools\" value=\"7\" color={COLORS.warning} />\n        <StatCard label=\"Benchmarks\" value=\"5\" color={COLORS.accent} />\n      </Box>\n\n      <Box justifyContent=\"center\" marginBottom={1}>\n        <Text color={COLORS.dim}>{'─'.repeat(Math.min(width - 4, 60))}</Text>\n      </Box>\n\n      <Box flexDirection=\"column\" alignItems=\"center\">\n        <Text bold color={COLORS.text}>{'Quick Start'}</Text>\n        <Box marginBottom={0} />\n        <QuickAction icon=\"◆\" label=\"Dashboard\" desc=\"overview & stats\" keyNum=\"1\" />\n        <QuickAction icon=\"⚙\" label=\"Inspect\" desc=\"machine analysis\" keyNum=\"2\" />\n        <QuickAction icon=\"≡\" label=\"Catalog\" desc=\"browse models\" keyNum=\"3\" />\n        <QuickAction icon=\"♛\" label=\"Leaderboard\" desc=\"model rankings\" keyNum=\"4\" />\n        <QuickAction icon=\"░\" label=\"Project\" desc=\"code analysis\" keyNum=\"5\" />\n        <QuickAction icon=\"▸\" label=\"Playground\" desc=\"agent chat\" keyNum=\"6\" />\n      </Box>\n\n      <Box justifyContent=\"center\" marginTop={1}>\n        <Text dimColor color={COLORS.muted}>{'Press 1-6 to navigate  •  q to quit'}</Text>\n      </Box>\n    </Box>\n  );\n}\n\nfunction StatCard({ label, value, color }: { label: string; value: string; color: string }) {\n  return (\n    <Box flexDirection=\"column\" alignItems=\"center\" width={16} borderStyle=\"round\" paddingX={2} paddingY={0}>\n      <Text bold color={color}>{value}</Text>\n      <Text dimColor color={COLORS.muted}>{label}</Text>\n    </Box>\n  );\n}\n\nfunction QuickAction({ icon, label, desc, keyNum }: { icon: string; label: string; desc: string; keyNum: string }) {\n  return (\n    <Box>\n      <Text color={COLORS.primary}>{`  ${icon} `}</Text>\n      <Text bold color={COLORS.text}>{label}</Text>\n      <Text dimColor color={COLORS.muted}>{` — ${desc}`}</Text>\n      <Text color={COLORS.dim}>{`  [${keyNum}]`}</Text>\n    </Box>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport { Box, Text } from 'ink';\nimport { Spinner } from '@inkjs/ui';\nimport { MachineInspector } from '../../../model/inspector.js';\nimport type { MachineProfile, GPUInfo, ProviderAvailability, InstalledModel } from '../../../model/inspector.js';\nimport { COLORS, SPACING } from '../theme.js';\n\ninterface InspectProps {\n  width: number;\n  height: number;\n  onNavigate?: (screen: string) => void;\n  onSelectModel?: (modelId: string) => void;\n}\n\nfunction Bar({ value, max, width, color, bgColor }: { value: number; max: number; width: number; color: string; bgColor?: string }) {\n  const ratio = Math.min(1, Math.max(0, value / max));\n  const filled = Math.round(width * ratio);\n  const empty = width - filled;\n  return (\n    <Text>\n      <Text color={color}>{'\\u2588'.repeat(filled)}</Text>\n      <Text color={bgColor ?? COLORS.dim}>{'\\u2591'.repeat(empty)}</Text>\n    </Text>\n  );\n}\n\nfunction SystemInfo({ profile }: { profile: MachineProfile }) {\n  const ramUsed = profile.totalRamGB - profile.availableRamGB;\n  const ramPct = profile.totalRamGB > 0 ? Math.round((ramUsed / profile.totalRamGB) * 100) : 0;\n  return (\n    <Box flexDirection=\"column\">\n      <Text bold color={COLORS.primary}>  System</Text>\n      <Box>\n        <Text dimColor color={COLORS.muted}>{'Hostname'.padEnd(14)}</Text>\n        <Text color={COLORS.text}>{profile.hostname}</Text>\n      </Box>\n      <Box>\n        <Text dimColor color={COLORS.muted}>{'Platform'.padEnd(14)}</Text>\n        <Text color={COLORS.text}>{profile.platform}/{profile.arch}</Text>\n      </Box>\n      <Box>\n        <Text dimColor color={COLORS.muted}>{'CPU'.padEnd(14)}</Text>\n        <Text color={COLORS.text}>{profile.cpuModel}</Text>\n      </Box>\n      <Box>\n        <Text dimColor color={COLORS.muted}>{'Cores'.padEnd(14)}</Text>\n        <Text color={COLORS.text}>{profile.cpuCores}</Text>\n      </Box>\n      <Box>\n        <Text dimColor color={COLORS.muted}>{'RAM'.padEnd(14)}</Text>\n        <Text color={COLORS.text}>{profile.totalRamGB.toFixed(1)} GB </Text>\n        <Bar value={ramUsed} max={profile.totalRamGB} width={20} color={ramPct > 80 ? COLORS.error : COLORS.primary} bgColor={COLORS.dim} />\n        <Text color={COLORS.dim}> {profile.availableRamGB.toFixed(1)} GB free ({ramPct}% used)</Text>\n      </Box>\n      {profile.hasMetal && (\n        <Box>\n          <Text dimColor color={COLORS.muted}>{'Metal'.padEnd(14)}</Text>\n          <Text color={COLORS.success}>Supported</Text>\n        </Box>\n      )}\n    </Box>\n  );\n}\n\nfunction GPUInfoSection({ gpus }: { gpus: GPUInfo[] }) {\n  return (\n    <Box flexDirection=\"column\" marginTop={1}>\n      <Text bold color={COLORS.primary}>  Graphics</Text>\n      {gpus.map((gpu, i) => (\n        <Box key={i} flexDirection=\"column\" marginLeft={2}>\n          <Box>\n            <Text color={COLORS.accent}>{'\\u25C6'}</Text>\n            <Text color={COLORS.text}>{' ' + gpu.name + ' '}</Text>\n            {gpu.type === 'apple-silicon' && <Text color={COLORS.success}>(Apple Silicon)</Text>}\n            {gpu.type === 'nvidia' && <Text color={COLORS.warning}>(NVIDIA)</Text>}\n            {gpu.type === 'amd' && <Text color={COLORS.error}>(AMD)</Text>}\n            {gpu.type === 'intel' && <Text color={COLORS.cyan}>(Intel)</Text>}\n          </Box>\n          {gpu.vramGB > 0 && (\n            <Box>\n              <Text dimColor color={COLORS.muted}>{'VRAM'.padEnd(14)}</Text>\n              <Bar value={gpu.vramGB} max={Math.max(gpu.vramGB, 24)} width={16} color={COLORS.warning} bgColor={COLORS.dim} />\n              <Text color={COLORS.warning}> {gpu.vramGB.toFixed(1)} GB</Text>\n            </Box>\n          )}\n        </Box>\n      ))}\n    </Box>\n  );\n}\n\nfunction ProviderRow({ provider }: { provider: ProviderAvailability }) {\n  return (\n    <Box>\n      <Text>{'  '}</Text>\n      {provider.available ? (\n        <Text color={COLORS.success}>{'\\u2713'}</Text>\n      ) : (\n        <Text color={COLORS.error}>{'\\u2717'}</Text>\n      )}\n      <Text>{' '}</Text>\n      <Text color={provider.available ? COLORS.text : COLORS.dim}>{provider.name.padEnd(12)}</Text>\n      {provider.version && <Text dimColor color={COLORS.muted}>{' v' + provider.version}</Text>}\n      {provider.installedModels != null && provider.installedModels > 0 && (\n        <Text dimColor color={COLORS.muted}>{' ' + provider.installedModels + ' models'}</Text>\n      )}\n      {provider.endpoint && <Text dimColor color={COLORS.dim}>{' ' + provider.endpoint}</Text>}\n    </Box>\n  );\n}\n\nfunction ProvidersSection({ providers }: { providers: ProviderAvailability[] }) {\n  return (\n    <Box flexDirection=\"column\" marginTop={1}>\n      <Text bold color={COLORS.primary}>  Providers</Text>\n      {providers.map((p, i) => (\n        <ProviderRow key={i} provider={p} />\n      ))}\n    </Box>\n  );\n}\n\nfunction InstalledModelsSection({ models }: { models: InstalledModel[] }) {\n  return (\n    <Box flexDirection=\"column\" marginTop={1}>\n      <Text bold color={COLORS.primary}>  Installed Models</Text>\n      {models.map((m, i) => (\n        <Box key={i}>\n          <Text dimColor color={COLORS.muted}>{'  \\u2022 '}</Text>\n          <Text color={COLORS.text}>{m.tag}</Text>\n          {m.sizeGB > 0 && <Text color={COLORS.warning}>{' (' + m.sizeGB.toFixed(1) + ' GB)'}</Text>}\n          {m.quantization && <Text dimColor color={COLORS.muted}>{' [' + m.quantization + ']'}</Text>}\n        </Box>\n      ))}\n    </Box>\n  );\n}\n\nexport function Inspect({ width, height }: InspectProps) {\n  const [profile, setProfile] = useState<MachineProfile | null>(null);\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState<string | null>(null);\n\n  useEffect(() => {\n    const inspector = new MachineInspector();\n    inspector.inspect().then((result) => {\n      setProfile(result);\n      setLoading(false);\n    }).catch((err) => {\n      setError(err instanceof Error ? err.message : String(err));\n      setLoading(false);\n    });\n  }, []);\n\n  if (loading) {\n    return (\n      <Box flexDirection=\"column\" padding={SPACING.padding}>\n        <Text bold color={COLORS.primary}>SynthCode Machine Inspector</Text>\n        <Box marginTop={1}>\n          <Spinner label=\"Scanning hardware...\" />\n        </Box>\n      </Box>\n    );\n  }\n\n  if (error) {\n    return (\n      <Box flexDirection=\"column\" padding={SPACING.padding}>\n        <Text bold color={COLORS.error}>{'Error: ' + error}</Text>\n        <Text dimColor color={COLORS.muted}>Press Escape to go back</Text>\n      </Box>\n    );\n  }\n\n  if (!profile) return null;\n\n  return (\n    <Box flexDirection=\"column\" padding={SPACING.padding}>\n      <Box borderStyle=\"round\" borderColor={COLORS.dim} paddingX={SPACING.padding * 2} flexDirection=\"column\">\n        <Text bold color={COLORS.primary}>SynthCode Machine Inspector</Text>\n        <Text dimColor color={COLORS.muted}>{'\\u2500'.repeat(40)}</Text>\n        <SystemInfo profile={profile} />\n        {profile.gpus.length > 0 && <GPUInfoSection gpus={profile.gpus} />}\n        <ProvidersSection providers={profile.providers} />\n        {profile.installedModels.length > 0 && (\n          <InstalledModelsSection models={profile.installedModels} />\n        )}\n        {profile.installedModels.length === 0 && (\n          <Box marginTop={1}>\n            <Text dimColor color={COLORS.dim}>  No models installed</Text>\n          </Box>\n        )}\n      </Box>\n    </Box>\n  );\n}\n","import * as os from \"os\";\nimport { execSync } from \"child_process\";\n\nexport interface GPUInfo {\n  name: string;\n  vramGB: number;\n  type: \"nvidia\" | \"amd\" | \"apple-silicon\" | \"intel\";\n}\n\nexport interface ProviderAvailability {\n  name: string;\n  available: boolean;\n  version?: string;\n  endpoint?: string;\n  installedModels?: number;\n}\n\nexport interface InstalledModel {\n  name: string;\n  tag: string;\n  provider: string;\n  sizeGB: number;\n  quantization?: string;\n}\n\nexport interface MachineProfile {\n  hostname: string;\n  platform: string;\n  arch: string;\n  cpuCores: number;\n  cpuModel: string;\n  totalRamGB: number;\n  availableRamGB: number;\n  gpus: GPUInfo[];\n  hasMetal: boolean;\n  providers: ProviderAvailability[];\n  installedModels: InstalledModel[];\n  scannedAt: number;\n}\n\ntype HardwareInfo = Pick<\n  MachineProfile,\n  | \"hostname\"\n  | \"platform\"\n  | \"arch\"\n  | \"cpuCores\"\n  | \"cpuModel\"\n  | \"totalRamGB\"\n  | \"availableRamGB\"\n  | \"gpus\"\n  | \"hasMetal\"\n>;\n\nconst GB = 1024 * 1024 * 1024;\n\nfunction safeExecSync(command: string): string | null {\n  try {\n    return execSync(command, {\n      encoding: \"utf-8\",\n      timeout: 10000,\n      stdio: [\"pipe\", \"pipe\", \"pipe\"],\n    })\n      .trim();\n  } catch {\n    return null;\n  }\n}\n\nexport class MachineInspector {\n  private cachedProfile: MachineProfile | null = null;\n\n  async inspect(): Promise<MachineProfile> {\n    const hardware = await this.detectHardware();\n    const providers = await this.detectProviders();\n    const installedModels = await this.detectInstalledModels();\n\n    this.cachedProfile = {\n      ...hardware,\n      providers,\n      installedModels,\n      scannedAt: Date.now(),\n    };\n\n    return this.cachedProfile;\n  }\n\n  async detectHardware(): Promise<HardwareInfo> {\n    const cpus = os.cpus();\n    const cpuModel = cpus.length > 0 ? cpus[0].model : \"unknown\";\n    const isAppleSilicon = cpuModel.toLowerCase().includes(\"apple\");\n\n    const gpus: GPUInfo[] = [];\n\n    if (isAppleSilicon) {\n      gpus.push({\n        name: cpuModel,\n        vramGB: parseFloat((os.totalmem() / GB).toFixed(2)),\n        type: \"apple-silicon\",\n      });\n    }\n\n    const nvidiaGpus = this.detectNvidiaGPUs();\n    if (nvidiaGpus) {\n      gpus.push(...nvidiaGpus);\n    }\n\n    const amdGpus = this.detectAmdGPUs();\n    if (amdGpus) {\n      gpus.push(...amdGpus);\n    }\n\n    const intelGpus = this.detectIntelGPUs();\n    if (intelGpus) {\n      gpus.push(...intelGpus);\n    }\n\n    return {\n      hostname: os.hostname(),\n      platform: os.platform() as MachineProfile[\"platform\"],\n      arch: os.arch() as MachineProfile[\"arch\"],\n      cpuCores: cpus.length,\n      cpuModel,\n      totalRamGB: parseFloat((os.totalmem() / GB).toFixed(2)),\n      availableRamGB: parseFloat((os.freemem() / GB).toFixed(2)),\n      gpus,\n      hasMetal: isAppleSilicon,\n    };\n  }\n\n  private detectNvidiaGPUs(): GPUInfo[] | null {\n    const output = safeExecSync(\n      'nvidia-smi --query-gpu=name,memory.total --format=csv,noheader,nounits'\n    );\n    if (!output) return null;\n\n    const gpus: GPUInfo[] = [];\n    const lines = output.split(\"\\n\").filter((l) => l.trim().length > 0);\n\n    for (const line of lines) {\n      const parts = line.split(\",\").map((s) => s.trim());\n      if (parts.length < 2) continue;\n      const name = parts[0];\n      const vramMiB = parseFloat(parts[1]);\n      if (isNaN(vramMiB)) continue;\n      gpus.push({\n        name,\n        vramGB: parseFloat((vramMiB / 1024).toFixed(2)),\n        type: \"nvidia\",\n      });\n    }\n\n    return gpus.length > 0 ? gpus : null;\n  }\n\n  private detectAmdGPUs(): GPUInfo[] | null {\n    const output = safeExecSync(\n      \"rocm-smi --showproductname --csv\"\n    );\n    if (!output) return null;\n\n    const gpus: GPUInfo[] = [];\n    const lines = output.split(\"\\n\").filter((l) => l.trim().length > 0);\n\n    for (const line of lines.slice(1)) {\n      const parts = line.split(\",\").map((s) => s.trim());\n      if (parts.length < 2) continue;\n      const name = parts[1] || parts[0];\n      gpus.push({\n        name,\n        vramGB: 0,\n        type: \"amd\",\n      });\n    }\n\n    const vramOutput = safeExecSync(\n      \"rocm-smi --showmeminfo vram --csv\"\n    );\n    if (vramOutput && gpus.length > 0) {\n      const vramLines = vramOutput.split(\"\\n\").filter((l) => l.trim().length > 0);\n      let gpuIndex = 0;\n      for (const vramLine of vramLines.slice(1)) {\n        const vramParts = vramLine.split(\",\").map((s) => s.trim());\n        if (vramParts.length >= 2) {\n          const totalBytes = parseInt(vramParts[1], 10);\n          if (!isNaN(totalBytes) && gpuIndex < gpus.length) {\n            gpus[gpuIndex].vramGB = parseFloat((totalBytes / GB).toFixed(2));\n            gpuIndex++;\n          }\n        }\n      }\n    }\n\n    return gpus.length > 0 ? gpus : null;\n  }\n\n  private detectIntelGPUs(): GPUInfo[] | null {\n    if (os.platform() !== \"linux\") return null;\n\n    const output = safeExecSync(\"lspci -nn 2>/dev/null | grep -i vga\");\n    if (!output) return null;\n\n    const gpus: GPUInfo[] = [];\n    const lines = output.split(\"\\n\").filter((l) => l.trim().length > 0);\n\n    for (const line of lines) {\n      if (line.toLowerCase().includes(\"intel\")) {\n        const match = line.match(/:\\s*(.+)/);\n        const name = match ? match[1].trim() : \"Intel GPU\";\n        gpus.push({\n          name,\n          vramGB: 0,\n          type: \"intel\",\n        });\n      }\n    }\n\n    return gpus.length > 0 ? gpus : null;\n  }\n\n  async detectProviders(): Promise<ProviderAvailability[]> {\n    const providers: ProviderAvailability[] = [];\n\n    providers.push(await this.detectOllama());\n    providers.push(await this.detectLmStudio());\n    providers.push(await this.detectLlamacpp());\n    providers.push(await this.detectAnthropic());\n    providers.push(await this.detectOpenAI());\n\n    return providers;\n  }\n\n  private async detectOllama(): Promise<ProviderAvailability> {\n    const versionOutput = safeExecSync(\"ollama --version\");\n    let version: string | undefined;\n    if (versionOutput) {\n      const match = versionOutput.match(/[\\d.]+/);\n      version = match ? match[0] : undefined;\n    }\n\n    const isInstalled = versionOutput !== null;\n\n    let installedModels: number | undefined;\n    if (isInstalled) {\n      const models = await this.fetchOllamaModels();\n      installedModels = models.length;\n    }\n\n    return {\n      name: \"ollama\",\n      available: isInstalled,\n      version,\n      endpoint: \"http://localhost:11434\",\n      installedModels,\n    };\n  }\n\n  private async detectLmStudio(): Promise<ProviderAvailability> {\n    let version: string | undefined;\n    const lmsOutput = safeExecSync(\"lms version 2>/dev/null || lmstudio --version 2>/dev/null\");\n    if (lmsOutput) {\n      const match = lmsOutput.match(/[\\d.]+/);\n      version = match ? match[0] : undefined;\n    }\n\n    const serverCheck = safeExecSync(\"curl -s -o /dev/null -w '%{http_code}' http://localhost:1234/v1/models\");\n    const isRunning = serverCheck !== null && serverCheck.includes(\"200\");\n\n    let installedModels: number | undefined;\n    if (isRunning) {\n      const models = await this.fetchLmStudioModels();\n      installedModels = models.length;\n    }\n\n    return {\n      name: \"lmstudio\",\n      available: isRunning || lmsOutput !== null,\n      version,\n      endpoint: \"http://localhost:1234\",\n      installedModels,\n    };\n  }\n\n  private async detectLlamacpp(): Promise<ProviderAvailability> {\n    const output = safeExecSync(\"which llama-cli 2>/dev/null || which main 2>/dev/null || which llama.cpp 2>/dev/null\");\n    return {\n      name: \"llamacpp\",\n      available: output !== null,\n    };\n  }\n\n  private async detectAnthropic(): Promise<ProviderAvailability> {\n    const hasApiKey = !!(\n      process.env.ANTHROPIC_API_KEY && process.env.ANTHROPIC_API_KEY.length > 0\n    );\n\n    const cliOutput = safeExecSync(\"claude --version 2>/dev/null\");\n    let version: string | undefined;\n    if (cliOutput) {\n      const match = cliOutput.match(/[\\d.]+/);\n      version = match ? match[0] : undefined;\n    }\n\n    return {\n      name: \"anthropic\",\n      available: hasApiKey || cliOutput !== null,\n      version,\n      endpoint: \"https://api.anthropic.com\",\n    };\n  }\n\n  private async detectOpenAI(): Promise<ProviderAvailability> {\n    const hasApiKey = !!(\n      process.env.OPENAI_API_KEY && process.env.OPENAI_API_KEY.length > 0\n    );\n\n    const cliOutput = safeExecSync(\"openai --version 2>/dev/null\");\n    let version: string | undefined;\n    if (cliOutput) {\n      const match = cliOutput.match(/[\\d.]+/);\n      version = match ? match[0] : undefined;\n    }\n\n    return {\n      name: \"openai\",\n      available: hasApiKey || cliOutput !== null,\n      version,\n      endpoint: \"https://api.openai.com\",\n    };\n  }\n\n  async detectInstalledModels(): Promise<InstalledModel[]> {\n    const models: InstalledModel[] = [];\n\n    const ollamaModels = await this.fetchOllamaModels();\n    models.push(...ollamaModels);\n\n    const lmStudioModels = await this.fetchLmStudioModels();\n    models.push(...lmStudioModels);\n\n    return models;\n  }\n\n  private async fetchOllamaModels(): Promise<InstalledModel[]> {\n    const output = safeExecSync(\"curl -s http://localhost:11434/api/tags\");\n    if (!output) return [];\n\n    try {\n      const parsed = JSON.parse(output);\n      const models: InstalledModel[] = [];\n\n      if (parsed && Array.isArray(parsed.models)) {\n        for (const model of parsed.models) {\n          const name: string = model.name || model.model || \"unknown\";\n          const sizeBytes: number = model.size || 0;\n          const quant: string | undefined = model.details?.quantization_level;\n\n          models.push({\n            name,\n            tag: name,\n            provider: \"ollama\",\n            sizeGB: parseFloat((sizeBytes / GB).toFixed(2)),\n            quantization: quant,\n          });\n        }\n      }\n\n      return models;\n    } catch {\n      return [];\n    }\n  }\n\n  private async fetchLmStudioModels(): Promise<InstalledModel[]> {\n    const output = safeExecSync(\"curl -s http://localhost:1234/v1/models\");\n    if (!output) return [];\n\n    try {\n      const parsed = JSON.parse(output);\n      const models: InstalledModel[] = [];\n\n      if (parsed && Array.isArray(parsed.data)) {\n        for (const model of parsed.data) {\n          const name: string = model.id || \"unknown\";\n\n          models.push({\n            name,\n            tag: name,\n            provider: \"lmstudio\",\n            sizeGB: 0,\n          });\n        }\n      }\n\n      return models;\n    } catch {\n      return [];\n    }\n  }\n\n  getEffectiveVramGB(): number {\n    if (!this.cachedProfile) return 0;\n\n    const appleSilicon = this.cachedProfile.gpus.find(\n      (g) => g.type === \"apple-silicon\"\n    );\n    if (appleSilicon) {\n      return this.cachedProfile.totalRamGB;\n    }\n\n    return this.cachedProfile.gpus.reduce((sum, gpu) => sum + gpu.vramGB, 0);\n  }\n\n  getEffectiveRamGB(): number {\n    if (!this.cachedProfile) return 0;\n    return this.cachedProfile.availableRamGB;\n  }\n\n  canRunModel(minVramGB: number, minRamGB: number): boolean {\n    return this.getEffectiveVramGB() >= minVramGB && this.getEffectiveRamGB() >= minRamGB;\n  }\n\n  toJSON(): string {\n    const profile = this.cachedProfile;\n    if (!profile) {\n      return JSON.stringify({ error: \"no profile; call inspect() first\" });\n    }\n    return JSON.stringify(profile, null, 2);\n  }\n}\n","import React, { useState, useMemo, useCallback } from 'react';\nimport { Box, Text, useInput } from 'ink';\nimport { TextInput } from '@inkjs/ui';\nimport { MODEL_CATALOG } from '../../../model/catalog.js';\nimport type { CatalogEntry } from '../../../model/catalog.js';\nimport { COLORS, SPACING } from '../theme.js';\n\ninterface CatalogProps {\n  width: number;\n  height: number;\n  onNavigate?: (screen: string) => void;\n  onSelectModel?: (modelId: string) => void;\n}\n\nfunction formatContext(tokens: number): string {\n  if (tokens >= 1048576) return `${(tokens / 1048576).toFixed(0)}M`;\n  if (tokens >= 1024) return `${(tokens / 1024).toFixed(0)}K`;\n  return `${tokens}`;\n}\n\nfunction ArchBadge({ arch }: { arch: string }) {\n  if (arch === 'moe') {\n    return <Text color={COLORS.warning}>{'<MoE>'}</Text>;\n  }\n  return <Text color={COLORS.dim}>dense</Text>;\n}\n\nfunction ToolBadge({ supports }: { supports: boolean }) {\n  if (supports) {\n    return <Text color={COLORS.cyan}>{'\\u2699'}tools</Text>;\n  }\n  return <Text dimColor color={COLORS.dim}>{'\\u2013'}no tools</Text>;\n}\n\nfunction ModelRow({ entry, selected, width }: { entry: CatalogEntry; selected: boolean; width: number }) {\n  const params = entry.parameterSizes.join('/');\n  const activeLabel = entry.activeParams ? ` (${entry.activeParams} active)` : '';\n  const ctxLabel = formatContext(entry.contextWindow);\n  const sizeGB = entry.quantizations.length > 0 ? entry.quantizations[0].sizeGB : 0;\n  const bgColor = selected ? COLORS.primary : undefined;\n\n  return (\n    <Box flexDirection=\"column\">\n      <Box>\n        <Text>{selected ? ' \\u25B6 ' : '   '}</Text>\n        <Text color={selected ? 'black' : COLORS.text} bold={selected} backgroundColor={bgColor}>\n          {entry.name.padEnd(Math.min(30, width - 50))}\n        </Text>\n        <Text>{' '}</Text>\n        <Text color={selected ? 'black' : COLORS.muted} backgroundColor={bgColor}>\n          {params}{activeLabel}\n        </Text>\n        <Text>{' '}</Text>\n        <ArchBadge arch={entry.architecture} />\n        <Text>{' '}</Text>\n        <Text color={selected ? 'black' : COLORS.dim} backgroundColor={bgColor}>\n          {ctxLabel} ctx\n        </Text>\n        {sizeGB > 0 && (\n          <>\n            <Text>{' '}</Text>\n            <Text color={selected ? 'black' : COLORS.warning} backgroundColor={bgColor}>\n              {sizeGB}GB\n            </Text>\n          </>\n        )}\n        <Text>{' '}</Text>\n        <ToolBadge supports={entry.supportsToolUse} />\n      </Box>\n      {selected && (\n        <Box marginLeft={3}>\n          <Text dimColor color={COLORS.muted}>\n            {entry.maker} | {entry.provider} | {entry.recommendedFor.join(', ')}\n          </Text>\n        </Box>\n      )}\n    </Box>\n  );\n}\n\nexport function Catalog({ width, height, onSelectModel }: CatalogProps) {\n  const [filter, setFilter] = useState('');\n  const [selectedIndex, setSelectedIndex] = useState(0);\n  const [filterActive, setFilterActive] = useState(false);\n  const headerHeight = 5;\n  const visibleItems = Math.max(1, height - headerHeight - 2);\n\n  const filtered = useMemo(() => {\n    if (!filter) return MODEL_CATALOG;\n    const lower = filter.toLowerCase();\n    return MODEL_CATALOG.filter(\n      (e) =>\n        e.name.toLowerCase().includes(lower) ||\n        e.family.toLowerCase().includes(lower) ||\n        e.maker.toLowerCase().includes(lower) ||\n        e.id.toLowerCase().includes(lower) ||\n        e.recommendedFor.some((r) => r.toLowerCase().includes(lower)) ||\n        e.ollamaTags.some((t) => t.toLowerCase().includes(lower))\n    );\n  }, [filter]);\n\n  const offset = useMemo(() => {\n    const maxOffset = Math.max(0, filtered.length - visibleItems);\n    const half = Math.floor(visibleItems / 2);\n    const ideal = selectedIndex - half;\n    return Math.max(0, Math.min(maxOffset, ideal));\n  }, [selectedIndex, filtered.length, visibleItems]);\n\n  const visible = useMemo(() => {\n    return filtered.slice(offset, offset + visibleItems);\n  }, [filtered, offset, visibleItems]);\n\n  useInput((input, key) => {\n    if (filterActive) return;\n    if (key.upArrow) {\n      setSelectedIndex((prev) => Math.max(0, prev - 1));\n    } else if (key.downArrow) {\n      setSelectedIndex((prev) => Math.min(filtered.length - 1, prev + 1));\n    } else if (key.return && filtered.length > 0) {\n      onSelectModel?.(filtered[selectedIndex].id);\n    } else if (input === '/') {\n      setFilterActive(true);\n    }\n  });\n\n  const handleFilterSubmit = useCallback(() => {\n    setFilterActive(false);\n    setSelectedIndex(0);\n  }, []);\n\n  return (\n    <Box flexDirection=\"column\" width={width}>\n      <Box borderStyle=\"round\" borderColor={COLORS.dim} flexDirection=\"column\" paddingX={SPACING.padding * 2}>\n        <Box>\n          <Text bold color={COLORS.primary}>Model Catalog</Text>\n          <Text color={COLORS.muted}>{' ' + filtered.length + ' models'}</Text>\n        </Box>\n        {filterActive ? (\n          <Box marginTop={1}>\n            <Text color={COLORS.warning}>Filter: </Text>\n            <TextInput defaultValue={filter} onChange={setFilter} onSubmit={handleFilterSubmit} placeholder=\"type to filter...\" />\n          </Box>\n        ) : (\n          <Box marginTop={1}>\n            {filter ? (\n              <Text color={COLORS.muted}>{'Filtered: '}<Text color={COLORS.text}>{filter}</Text>{' '}<Text dimColor>[ Esc to clear ]</Text></Text>\n            ) : (\n              <Text dimColor color={COLORS.dim}>{'Press / to filter | \\u2191\\u2193 scroll | Enter select'}</Text>\n            )}\n          </Box>\n        )}\n        <Text color={COLORS.dim}>{'\\u2500'.repeat(Math.min(width - 4, 80))}</Text>\n      </Box>\n\n      <Box flexDirection=\"column\">\n        {visible.map((entry, i) => {\n          const globalIndex = i + offset;\n          return (\n            <ModelRow\n              key={entry.id}\n              entry={entry}\n              selected={globalIndex === selectedIndex}\n              width={width}\n            />\n          );\n        })}\n      </Box>\n\n      {filtered.length > visibleItems && (\n        <Box>\n          <Text dimColor color={COLORS.dim}>\n            {'  '}Showing {offset + 1}-{Math.min(offset + visibleItems, filtered.length)} of {filtered.length}\n          </Text>\n        </Box>\n      )}\n    </Box>\n  );\n}\n","import type { ModelInfo } from \"./types.js\";\n\nexport interface CatalogEntry extends ModelInfo {\n  family: string;\n  maker: string;\n  parameterSizes: string[];\n  activeParams?: string;\n  architecture: \"dense\" | \"moe\";\n  quantizations: { name: string; sizeGB: number }[];\n  minVramGB: number;\n  minRamGB: number;\n  benchmarks?: {\n    liveCodeBench?: number;\n    humaneval?: number;\n    mmlu?: number;\n    sweBench?: number;\n    codeforcesElo?: number;\n  };\n  recommendedFor: (\"coding\" | \"reasoning\" | \"chat\" | \"agents\" | \"edge\" | \"fast\" | \"cheap\")[];\n  ollamaTags: string[];\n  ollamaCloud?: boolean;\n  openWeight: boolean;\n  released: string;\n}\n\nexport const MODEL_CATALOG: CatalogEntry[] = [\n  {\n    id: \"gemma4:31b\",\n    name: \"Gemma 4 31B\",\n    family: \"gemma4\",\n    maker: \"Google DeepMind\",\n    provider: \"ollama\",\n    contextWindow: 262144,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: true,\n    supportsThinking: true,\n    parameterSizes: [\"31B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 20 }],\n    minVramGB: 22,\n    minRamGB: 32,\n    benchmarks: { liveCodeBench: 80.0, mmlu: 85.2, sweBench: 52.0, codeforcesElo: 2150 },\n    recommendedFor: [\"coding\", \"reasoning\", \"agents\"],\n    ollamaTags: [\"gemma4:31b\", \"gemma4:latest\"],\n    ollamaCloud: true,\n    openWeight: true,\n    released: \"2026-04\",\n    tags: [\"gemma4\", \"31b\", \"dense\"],\n  },\n  {\n    id: \"gemma4:26b\",\n    name: \"Gemma 4 26B MoE\",\n    family: \"gemma4\",\n    maker: \"Google DeepMind\",\n    provider: \"ollama\",\n    contextWindow: 262144,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: true,\n    supportsThinking: true,\n    parameterSizes: [\"26B\"],\n    activeParams: \"3.8B\",\n    architecture: \"moe\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 18 }],\n    minVramGB: 20,\n    minRamGB: 28,\n    benchmarks: { liveCodeBench: 77.1, mmlu: 82.6, sweBench: 48.0, codeforcesElo: 1718 },\n    recommendedFor: [\"coding\", \"reasoning\", \"agents\", \"fast\"],\n    ollamaTags: [\"gemma4:26b\"],\n    openWeight: true,\n    released: \"2026-04\",\n    tags: [\"gemma4\", \"26b\", \"moe\"],\n  },\n  {\n    id: \"gemma4:e4b\",\n    name: \"Gemma 4 E4B\",\n    family: \"gemma4\",\n    maker: \"Google DeepMind\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: true,\n    supportsThinking: true,\n    parameterSizes: [\"8B\"],\n    activeParams: \"4.5B\",\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 9.6 }],\n    minVramGB: 11,\n    minRamGB: 16,\n    benchmarks: { liveCodeBench: 52.0, mmlu: 69.4, codeforcesElo: 940 },\n    recommendedFor: [\"coding\", \"edge\", \"fast\", \"cheap\"],\n    ollamaTags: [\"gemma4:e4b\"],\n    openWeight: true,\n    released: \"2026-04\",\n    tags: [\"gemma4\", \"e4b\", \"edge\"],\n  },\n  {\n    id: \"gemma4:e2b\",\n    name: \"Gemma 4 E2B\",\n    family: \"gemma4\",\n    maker: \"Google DeepMind\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: true,\n    supportsThinking: true,\n    parameterSizes: [\"5.1B\"],\n    activeParams: \"2.3B\",\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 7.2 }],\n    minVramGB: 8,\n    minRamGB: 12,\n    benchmarks: { liveCodeBench: 44.0, mmlu: 60.0, codeforcesElo: 633 },\n    recommendedFor: [\"edge\", \"fast\", \"cheap\"],\n    ollamaTags: [\"gemma4:e2b\"],\n    openWeight: true,\n    released: \"2026-04\",\n    tags: [\"gemma4\", \"e2b\", \"edge\"],\n  },\n  {\n    id: \"qwen3-coder:30b\",\n    name: \"Qwen3-Coder 30B\",\n    family: \"qwen3-coder\",\n    maker: \"Alibaba\",\n    provider: \"ollama\",\n    contextWindow: 262144,\n    maxOutputTokens: 16384,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: false,\n    parameterSizes: [\"30B\"],\n    activeParams: \"3.3B\",\n    architecture: \"moe\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 19 }],\n    minVramGB: 21,\n    minRamGB: 28,\n    benchmarks: { liveCodeBench: 78.0, humaneval: 90.0, sweBench: 55.0 },\n    recommendedFor: [\"coding\", \"agents\"],\n    ollamaTags: [\"qwen3-coder:30b\", \"qwen3-coder\"],\n    openWeight: true,\n    released: \"2025-10\",\n    tags: [\"qwen3\", \"coder\", \"30b\", \"moe\"],\n  },\n  {\n    id: \"qwen3-coder:480b\",\n    name: \"Qwen3-Coder 480B\",\n    family: \"qwen3-coder\",\n    maker: \"Alibaba\",\n    provider: \"ollama\",\n    contextWindow: 262144,\n    maxOutputTokens: 16384,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: false,\n    parameterSizes: [\"480B\"],\n    architecture: \"moe\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 290 }],\n    minVramGB: 320,\n    minRamGB: 384,\n    recommendedFor: [\"coding\", \"agents\"],\n    ollamaTags: [\"qwen3-coder:480b\"],\n    ollamaCloud: true,\n    openWeight: true,\n    released: \"2025-10\",\n    tags: [\"qwen3\", \"coder\", \"480b\", \"moe\"],\n  },\n  {\n    id: \"qwen3:32b\",\n    name: \"Qwen3 32B\",\n    family: \"qwen3\",\n    maker: \"Alibaba\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: true,\n    parameterSizes: [\"32B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 19 }],\n    minVramGB: 21,\n    minRamGB: 28,\n    benchmarks: { liveCodeBench: 72.0, mmlu: 83.0, sweBench: 45.0 },\n    recommendedFor: [\"coding\", \"reasoning\", \"agents\"],\n    ollamaTags: [\"qwen3:32b\"],\n    openWeight: true,\n    released: \"2025-04\",\n    tags: [\"qwen3\", \"32b\", \"dense\"],\n  },\n  {\n    id: \"qwen3:14b\",\n    name: \"Qwen3 14B\",\n    family: \"qwen3\",\n    maker: \"Alibaba\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: true,\n    parameterSizes: [\"14B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 9 }],\n    minVramGB: 11,\n    minRamGB: 16,\n    benchmarks: { liveCodeBench: 62.0, mmlu: 76.0, sweBench: 35.0 },\n    recommendedFor: [\"coding\", \"reasoning\", \"fast\"],\n    ollamaTags: [\"qwen3:14b\"],\n    openWeight: true,\n    released: \"2025-04\",\n    tags: [\"qwen3\", \"14b\"],\n  },\n  {\n    id: \"qwen3:8b\",\n    name: \"Qwen3 8B\",\n    family: \"qwen3\",\n    maker: \"Alibaba\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: true,\n    parameterSizes: [\"8B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 5 }],\n    minVramGB: 6,\n    minRamGB: 10,\n    benchmarks: { liveCodeBench: 52.0, mmlu: 68.0 },\n    recommendedFor: [\"coding\", \"edge\", \"fast\", \"cheap\"],\n    ollamaTags: [\"qwen3:8b\"],\n    openWeight: true,\n    released: \"2025-04\",\n    tags: [\"qwen3\", \"8b\"],\n  },\n  {\n    id: \"qwen3:4b\",\n    name: \"Qwen3 4B\",\n    family: \"qwen3\",\n    maker: \"Alibaba\",\n    provider: \"ollama\",\n    contextWindow: 32768,\n    maxOutputTokens: 4096,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: true,\n    parameterSizes: [\"4B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 2.5 }],\n    minVramGB: 4,\n    minRamGB: 8,\n    recommendedFor: [\"edge\", \"fast\", \"cheap\"],\n    ollamaTags: [\"qwen3:4b\"],\n    openWeight: true,\n    released: \"2025-04\",\n    tags: [\"qwen3\", \"4b\"],\n  },\n  {\n    id: \"qwen3.5:27b\",\n    name: \"Qwen3.5 27B\",\n    family: \"qwen3.5\",\n    maker: \"Alibaba\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: true,\n    supportsThinking: true,\n    parameterSizes: [\"27B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 16 }],\n    minVramGB: 18,\n    minRamGB: 24,\n    recommendedFor: [\"coding\", \"reasoning\", \"agents\"],\n    ollamaTags: [\"qwen3.5:27b\"],\n    openWeight: true,\n    released: \"2026-03\",\n    tags: [\"qwen3.5\", \"27b\"],\n  },\n  {\n    id: \"deepseek-r1:14b\",\n    name: \"DeepSeek-R1 14B\",\n    family: \"deepseek-r1\",\n    maker: \"DeepSeek\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: false,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: true,\n    parameterSizes: [\"14B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 9 }],\n    minVramGB: 11,\n    minRamGB: 16,\n    benchmarks: { mmlu: 78.0, humaneval: 85.0 },\n    recommendedFor: [\"reasoning\", \"coding\"],\n    ollamaTags: [\"deepseek-r1:14b\"],\n    openWeight: true,\n    released: \"2025-01\",\n    tags: [\"deepseek\", \"r1\", \"14b\"],\n  },\n  {\n    id: \"deepseek-r1:32b\",\n    name: \"DeepSeek-R1 32B\",\n    family: \"deepseek-r1\",\n    maker: \"DeepSeek\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: false,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: true,\n    parameterSizes: [\"32B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 19 }],\n    minVramGB: 21,\n    minRamGB: 28,\n    benchmarks: { mmlu: 84.0, humaneval: 89.0 },\n    recommendedFor: [\"reasoning\", \"coding\"],\n    ollamaTags: [\"deepseek-r1:32b\"],\n    openWeight: true,\n    released: \"2025-01\",\n    tags: [\"deepseek\", \"r1\", \"32b\"],\n  },\n  {\n    id: \"deepseek-r1:70b\",\n    name: \"DeepSeek-R1 70B\",\n    family: \"deepseek-r1\",\n    maker: \"DeepSeek\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: false,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: true,\n    parameterSizes: [\"70B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 40 }],\n    minVramGB: 44,\n    minRamGB: 56,\n    benchmarks: { mmlu: 88.0, humaneval: 92.0 },\n    recommendedFor: [\"reasoning\", \"coding\"],\n    ollamaTags: [\"deepseek-r1:70b\"],\n    openWeight: true,\n    released: \"2025-01\",\n    tags: [\"deepseek\", \"r1\", \"70b\"],\n  },\n  {\n    id: \"devstral-small:24b\",\n    name: \"Devstral Small 2 24B\",\n    family: \"devstral\",\n    maker: \"Mistral AI\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: true,\n    supportsThinking: false,\n    parameterSizes: [\"24B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 14 }],\n    minVramGB: 16,\n    minRamGB: 22,\n    benchmarks: { sweBench: 50.0, liveCodeBench: 70.0 },\n    recommendedFor: [\"coding\", \"agents\"],\n    ollamaTags: [\"devstral-small-2\", \"devstral-small:24b\"],\n    openWeight: true,\n    released: \"2025-06\",\n    tags: [\"devstral\", \"24b\", \"coding\"],\n  },\n  {\n    id: \"glm-4.7-flash\",\n    name: \"GLM-4.7-Flash\",\n    family: \"glm\",\n    maker: \"Z.ai\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: true,\n    parameterSizes: [\"30B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 18 }],\n    minVramGB: 20,\n    minRamGB: 26,\n    benchmarks: { mmlu: 82.0, liveCodeBench: 72.0 },\n    recommendedFor: [\"coding\", \"reasoning\", \"agents\"],\n    ollamaTags: [\"glm-4.7-flash\"],\n    openWeight: true,\n    released: \"2025-08\",\n    tags: [\"glm\", \"30b\"],\n  },\n  {\n    id: \"phi4:14b\",\n    name: \"Phi-4 14B\",\n    family: \"phi\",\n    maker: \"Microsoft\",\n    provider: \"ollama\",\n    contextWindow: 16384,\n    maxOutputTokens: 4096,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: false,\n    parameterSizes: [\"14B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 9 }],\n    minVramGB: 11,\n    minRamGB: 16,\n    benchmarks: { humaneval: 84.0, mmlu: 80.0 },\n    recommendedFor: [\"coding\", \"reasoning\", \"fast\"],\n    ollamaTags: [\"phi4:14b\", \"phi4\"],\n    openWeight: true,\n    released: \"2025-01\",\n    tags: [\"phi\", \"14b\"],\n  },\n  {\n    id: \"phi4-mini:3.8b\",\n    name: \"Phi-4 Mini 3.8B\",\n    family: \"phi\",\n    maker: \"Microsoft\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 4096,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: false,\n    parameterSizes: [\"3.8B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 2.4 }],\n    minVramGB: 4,\n    minRamGB: 8,\n    benchmarks: { humaneval: 72.0, mmlu: 68.0 },\n    recommendedFor: [\"edge\", \"fast\", \"cheap\", \"coding\"],\n    ollamaTags: [\"phi4-mini\"],\n    openWeight: true,\n    released: \"2025-02\",\n    tags: [\"phi\", \"mini\", \"3.8b\"],\n  },\n  {\n    id: \"llama4-scout:17b\",\n    name: \"Llama 4 Scout 17B MoE\",\n    family: \"llama4\",\n    maker: \"Meta\",\n    provider: \"ollama\",\n    contextWindow: 10485760,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: true,\n    supportsThinking: false,\n    parameterSizes: [\"109B\"],\n    activeParams: \"17B\",\n    architecture: \"moe\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 65 }],\n    minVramGB: 72,\n    minRamGB: 88,\n    benchmarks: { mmlu: 84.0, liveCodeBench: 68.0 },\n    recommendedFor: [\"coding\", \"reasoning\", \"agents\"],\n    ollamaTags: [\"llama4-scout\"],\n    openWeight: true,\n    released: \"2025-04\",\n    tags: [\"llama4\", \"scout\", \"moe\"],\n  },\n  {\n    id: \"llama4-maverick:17b\",\n    name: \"Llama 4 Maverick 17B MoE\",\n    family: \"llama4\",\n    maker: \"Meta\",\n    provider: \"ollama\",\n    contextWindow: 1048576,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: true,\n    supportsThinking: false,\n    parameterSizes: [\"400B\"],\n    activeParams: \"17B\",\n    architecture: \"moe\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 240 }],\n    minVramGB: 260,\n    minRamGB: 320,\n    benchmarks: { mmlu: 88.0, liveCodeBench: 75.0 },\n    recommendedFor: [\"reasoning\", \"coding\", \"agents\"],\n    ollamaTags: [\"llama4-maverick\"],\n    openWeight: true,\n    released: \"2025-04\",\n    tags: [\"llama4\", \"maverick\", \"moe\"],\n  },\n  {\n    id: \"mistral-small:24b\",\n    name: \"Mistral Small 24B\",\n    family: \"mistral\",\n    maker: \"Mistral AI\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: false,\n    parameterSizes: [\"24B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 14 }],\n    minVramGB: 16,\n    minRamGB: 22,\n    benchmarks: { mmlu: 78.0, liveCodeBench: 65.0 },\n    recommendedFor: [\"coding\", \"chat\", \"fast\"],\n    ollamaTags: [\"mistral-small:24b\"],\n    openWeight: true,\n    released: \"2025-01\",\n    tags: [\"mistral\", \"24b\"],\n  },\n  {\n    id: \"codestral:22b\",\n    name: \"Codestral 22B\",\n    family: \"codestral\",\n    maker: \"Mistral AI\",\n    provider: \"ollama\",\n    contextWindow: 262144,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: false,\n    parameterSizes: [\"22B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 13 }],\n    minVramGB: 15,\n    minRamGB: 20,\n    benchmarks: { humaneval: 86.0, liveCodeBench: 66.0 },\n    recommendedFor: [\"coding\", \"agents\"],\n    ollamaTags: [\"codestral:22b\", \"codestral\"],\n    openWeight: true,\n    released: \"2025-05\",\n    tags: [\"codestral\", \"22b\", \"coding\"],\n  },\n  {\n    id: \"nemotron-cascade-2:30b\",\n    name: \"Nemotron Cascade 2 30B\",\n    family: \"nemotron\",\n    maker: \"NVIDIA\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: true,\n    parameterSizes: [\"30B\"],\n    activeParams: \"3B\",\n    architecture: \"moe\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 18 }],\n    minVramGB: 20,\n    minRamGB: 26,\n    recommendedFor: [\"reasoning\", \"agents\", \"fast\"],\n    ollamaTags: [\"nemotron-cascade-2\"],\n    openWeight: true,\n    released: \"2026-03\",\n    tags: [\"nemotron\", \"30b\", \"moe\"],\n  },\n  {\n    id: \"lfm2:24b\",\n    name: \"LFM2 24B MoE\",\n    family: \"lfm2\",\n    maker: \"Liquid AI\",\n    provider: \"ollama\",\n    contextWindow: 32768,\n    maxOutputTokens: 4096,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: false,\n    parameterSizes: [\"24B\"],\n    activeParams: \"4B\",\n    architecture: \"moe\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 14 }],\n    minVramGB: 16,\n    minRamGB: 20,\n    recommendedFor: [\"edge\", \"fast\", \"coding\"],\n    ollamaTags: [\"lfm2:24b\", \"lfm2\"],\n    openWeight: true,\n    released: \"2025-09\",\n    tags: [\"lfm2\", \"24b\", \"moe\"],\n  },\n  {\n    id: \"gpt-oss:20b\",\n    name: \"GPT-OSS 20B\",\n    family: \"gpt-oss\",\n    maker: \"OpenAI\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 16384,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: true,\n    parameterSizes: [\"20B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 12 }],\n    minVramGB: 14,\n    minRamGB: 20,\n    recommendedFor: [\"reasoning\", \"coding\", \"agents\"],\n    ollamaTags: [\"gpt-oss:20b\", \"gpt-oss\"],\n    openWeight: true,\n    released: \"2025-08\",\n    tags: [\"gpt-oss\", \"20b\"],\n  },\n  {\n    id: \"gpt-oss:120b\",\n    name: \"GPT-OSS 120B\",\n    family: \"gpt-oss\",\n    maker: \"OpenAI\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 16384,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: true,\n    parameterSizes: [\"120B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 72 }],\n    minVramGB: 80,\n    minRamGB: 96,\n    recommendedFor: [\"reasoning\", \"coding\", \"agents\"],\n    ollamaTags: [\"gpt-oss:120b\"],\n    ollamaCloud: true,\n    openWeight: true,\n    released: \"2025-08\",\n    tags: [\"gpt-oss\", \"120b\"],\n  },\n  {\n    id: \"qwen3:30b-a3b\",\n    name: \"Qwen3 30B-A3B MoE\",\n    family: \"qwen3\",\n    maker: \"Alibaba\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 8192,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: true,\n    parameterSizes: [\"30B\"],\n    activeParams: \"3B\",\n    architecture: \"moe\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 17 }],\n    minVramGB: 19,\n    minRamGB: 24,\n    benchmarks: { liveCodeBench: 65.0, mmlu: 80.0 },\n    recommendedFor: [\"coding\", \"fast\", \"agents\"],\n    ollamaTags: [\"qwen3:30b-a3b\"],\n    openWeight: true,\n    released: \"2025-04\",\n    tags: [\"qwen3\", \"30b\", \"moe\"],\n  },\n  {\n    id: \"ministral-3b\",\n    name: \"Ministral 3B\",\n    family: \"mistral\",\n    maker: \"Mistral AI\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 4096,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: true,\n    supportsThinking: false,\n    parameterSizes: [\"3B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 2 }],\n    minVramGB: 3,\n    minRamGB: 6,\n    recommendedFor: [\"edge\", \"fast\", \"cheap\"],\n    ollamaTags: [\"ministral-3b\"],\n    openWeight: true,\n    released: \"2025-06\",\n    tags: [\"mistral\", \"3b\", \"edge\"],\n  },\n  {\n    id: \"rnj-1:8b\",\n    name: \"Rnj-1 8B\",\n    family: \"rnj\",\n    maker: \"Essential AI\",\n    provider: \"ollama\",\n    contextWindow: 32768,\n    maxOutputTokens: 4096,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: false,\n    parameterSizes: [\"8B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 5 }],\n    minVramGB: 6,\n    minRamGB: 10,\n    recommendedFor: [\"coding\", \"fast\", \"cheap\"],\n    ollamaTags: [\"rnj-1:8b\"],\n    openWeight: true,\n    released: \"2025-09\",\n    tags: [\"rnj\", \"8b\"],\n  },\n  {\n    id: \"olmo-3.1:32b\",\n    name: \"Olmo 3.1 32B\",\n    family: \"olmo\",\n    maker: \"Allen AI\",\n    provider: \"ollama\",\n    contextWindow: 131072,\n    maxOutputTokens: 4096,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: false,\n    supportsThinking: false,\n    parameterSizes: [\"32B\"],\n    architecture: \"dense\",\n    quantizations: [{ name: \"Q4_K_M\", sizeGB: 19 }],\n    minVramGB: 21,\n    minRamGB: 28,\n    recommendedFor: [\"coding\", \"reasoning\"],\n    ollamaTags: [\"olmo-3.1:32b\"],\n    openWeight: true,\n    released: \"2025-10\",\n    tags: [\"olmo\", \"32b\"],\n  },\n  {\n    id: \"claude-sonnet-4-20250514\",\n    name: \"Claude Sonnet 4\",\n    family: \"claude\",\n    maker: \"Anthropic\",\n    provider: \"anthropic\",\n    contextWindow: 200000,\n    maxOutputTokens: 16384,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: true,\n    supportsThinking: true,\n    parameterSizes: [\"proprietary\"],\n    architecture: \"dense\",\n    quantizations: [],\n    minVramGB: 0,\n    minRamGB: 0,\n    benchmarks: { sweBench: 72.0, liveCodeBench: 88.0, mmlu: 90.0 },\n    recommendedFor: [\"coding\", \"reasoning\", \"agents\"],\n    ollamaTags: [],\n    openWeight: false,\n    released: \"2025-05\",\n    tags: [\"claude\", \"sonnet\", \"cloud\"],\n  },\n  {\n    id: \"gpt-4o\",\n    name: \"GPT-4o\",\n    family: \"gpt\",\n    maker: \"OpenAI\",\n    provider: \"openai\",\n    contextWindow: 128000,\n    maxOutputTokens: 16384,\n    supportsToolUse: true,\n    supportsStreaming: true,\n    supportsVision: true,\n    supportsThinking: false,\n    parameterSizes: [\"proprietary\"],\n    architecture: \"dense\",\n    quantizations: [],\n    minVramGB: 0,\n    minRamGB: 0,\n    benchmarks: { sweBench: 65.0, liveCodeBench: 85.0, mmlu: 88.0 },\n    recommendedFor: [\"coding\", \"reasoning\", \"agents\"],\n    ollamaTags: [],\n    openWeight: false,\n    released: \"2024-05\",\n    tags: [\"gpt\", \"4o\", \"cloud\"],\n  },\n];\n","import React, { useState, useMemo } from 'react';\nimport { Box, Text, useInput } from 'ink';\nimport { MODEL_CATALOG } from '../../../model/catalog.js';\nimport type { CatalogEntry } from '../../../model/catalog.js';\nimport { COLORS, SPACING } from '../theme.js';\n\ntype TaskTab = 'Coding' | 'Reasoning' | 'Chat' | 'Agents';\n\ninterface LeaderboardProps {\n  width: number;\n  height: number;\n  onNavigate?: (screen: string) => void;\n  onSelectModel?: (modelId: string) => void;\n}\n\nconst TABS: TaskTab[] = ['Coding', 'Reasoning', 'Chat', 'Agents'];\n\nfunction scoreForTask(entry: CatalogEntry, task: string): number {\n  const bm = entry.benchmarks ?? {};\n  const lc = bm.liveCodeBench ?? 0;\n  const swe = bm.sweBench ?? 0;\n  const he = bm.humaneval ?? 0;\n  const mmlu = bm.mmlu ?? 0;\n  const elo = bm.codeforcesElo ?? 0;\n  const tools = entry.supportsToolUse ? 1 : 0;\n\n  switch (task) {\n    case 'Coding':\n      return lc * 0.5 + swe * 0.3 + he * 0.2;\n    case 'Reasoning':\n      return mmlu * 0.4 + (elo / 2500) * 100 * 0.3 + swe * 0.3;\n    case 'Agents':\n      return swe * 0.5 + lc * 0.3 + tools * 100 * 0.2;\n    case 'Chat':\n      return mmlu * 0.3 + he * 0.2 + lc * 0.3;\n    default:\n      return lc * 0.4 + swe * 0.3 + mmlu * 0.3;\n  }\n}\n\nfunction RankMedal({ rank }: { rank: number }) {\n  if (rank === 1) return <Text bold color={COLORS.warning}>{'\\u2605'} 1st</Text>;\n  if (rank === 2) return <Text bold color={COLORS.secondary}>{'\\u2605'} 2nd</Text>;\n  if (rank === 3) return <Text bold color={COLORS.secondary}>{'\\u2605'} 3rd</Text>;\n  return <Text color={COLORS.muted}>{`#${String(rank).padStart(2)}`}</Text>;\n}\n\nfunction ScoreBar({ value, max, width }: { value: number; max: number; width: number }) {\n  const ratio = max > 0 ? Math.min(1, value / max) : 0;\n  const filled = Math.round(width * ratio);\n  const empty = width - filled;\n  const color = ratio >= 0.8 ? COLORS.success : ratio >= 0.5 ? COLORS.primary : ratio >= 0.3 ? COLORS.warning : COLORS.error;\n  return (\n    <Text>\n      <Text color={color}>{'\\u2588'.repeat(filled)}</Text>\n      <Text color={COLORS.dim}>{'\\u2588'.repeat(empty)}</Text>\n    </Text>\n  );\n}\n\ninterface RankedEntry {\n  entry: CatalogEntry;\n  score: number;\n}\n\nfunction LeaderboardRow({ ranked, rank, maxScore, width }: { ranked: RankedEntry; rank: number; maxScore: number; width: number }) {\n  const e = ranked.entry;\n  const barWidth = Math.max(8, Math.min(20, Math.floor((width - 55) / 2)));\n  const nameWidth = Math.min(26, Math.floor(width / 3));\n  const name = e.name.length > nameWidth ? e.name.slice(0, nameWidth - 1) + '\\u2026' : e.name;\n\n  return (\n    <Box>\n      <Box width={8}>\n        <RankMedal rank={rank} />\n      </Box>\n      <Box width={nameWidth + 2}>\n        <Text color={COLORS.text}>{name}</Text>\n      </Box>\n      <Box width={barWidth + 2}>\n        <ScoreBar value={ranked.score} max={maxScore} width={barWidth} />\n      </Box>\n      <Box width={8}>\n        <Text bold color={COLORS.primary}>{ranked.score.toFixed(1)}</Text>\n      </Box>\n      {e.architecture === 'moe' ? (\n        <Box width={6}>\n          <Text color={COLORS.warning}>MoE</Text>\n        </Box>\n      ) : (\n        <Box width={6}>\n          <Text color={COLORS.dim}>{'    '}</Text>\n        </Box>\n      )}\n      {e.supportsToolUse ? (\n        <Box width={6}>\n          <Text color={COLORS.cyan}>{'\\u2699'}Yes</Text>\n        </Box>\n      ) : (\n        <Box width={6}>\n          <Text color={COLORS.dim}>{'  No'}</Text>\n        </Box>\n      )}\n      {e.quantizations.length > 0 ? (\n        <Box width={8}>\n          <Text color={COLORS.warning}>{e.quantizations[0].sizeGB}G</Text>\n        </Box>\n      ) : (\n        <Box width={8}>\n          <Text color={COLORS.dim}>cloud</Text>\n        </Box>\n      )}\n    </Box>\n  );\n}\n\nexport function Leaderboard({ width, height }: LeaderboardProps) {\n  const [tabIndex, setTabIndex] = useState(0);\n  const activeTab = TABS[tabIndex];\n\n  const ranked = useMemo(() => {\n    return MODEL_CATALOG\n      .map((entry) => ({\n        entry,\n        score: scoreForTask(entry, activeTab),\n      }))\n      .filter((r) => r.score > 0)\n      .sort((a, b) => b.score - a.score);\n  }, [activeTab]);\n\n  const maxScore = ranked.length > 0 ? ranked[0].score : 100;\n  const headerLines = 4;\n  const visibleCount = Math.max(1, height - headerLines - 2);\n  const visible = ranked.slice(0, visibleCount);\n\n  useInput((input, key) => {\n    if (key.leftArrow) {\n      setTabIndex((prev) => (prev - 1 + TABS.length) % TABS.length);\n    } else if (key.rightArrow) {\n      setTabIndex((prev) => (prev + 1) % TABS.length);\n    }\n  });\n\n  return (\n    <Box flexDirection=\"column\" width={width}>\n      <Box borderStyle=\"round\" borderColor={COLORS.dim} flexDirection=\"column\" paddingX={SPACING.padding * 2}>\n        <Text bold color={COLORS.primary}>Model Leaderboard</Text>\n        <Box marginTop={1} flexDirection=\"row\">\n          {TABS.map((tab, i) => (\n            <Box key={tab} marginRight={2}>\n              {i === tabIndex ? (\n                <Box>\n                  <Text bold color={COLORS.primary} backgroundColor={COLORS.dim}>{' '}{tab}{' '}</Text>\n                </Box>\n              ) : (\n                <Text dimColor color={COLORS.muted}>{' '}{tab}{' '}</Text>\n              )}\n            </Box>\n          ))}\n        </Box>\n        <Box marginTop={1}>\n          <Text dimColor color={COLORS.dim}>{'\\u2500'.repeat(Math.min(width - 4, 80))}</Text>\n        </Box>\n      </Box>\n\n      <Box flexDirection=\"column\" marginTop={1}>\n        <Box>\n          <Box width={8}><Text bold color={COLORS.muted}>Rank</Text></Box>\n          <Box width={28}><Text bold color={COLORS.muted}>Model</Text></Box>\n          <Box width={22}><Text bold color={COLORS.muted}>Score</Text></Box>\n          <Box width={8}><Text bold color={COLORS.muted}>Score</Text></Box>\n          <Box width={6}><Text bold color={COLORS.muted}>Arch</Text></Box>\n          <Box width={6}><Text bold color={COLORS.muted}>Tools</Text></Box>\n          <Box width={8}><Text bold color={COLORS.muted}>Size</Text></Box>\n        </Box>\n        <Text color={COLORS.dim}>{'\\u2500'.repeat(Math.min(width - 2, 86))}</Text>\n        {visible.map((r, i) => (\n          <LeaderboardRow\n            key={r.entry.id}\n            ranked={r}\n            rank={i + 1}\n            maxScore={maxScore}\n            width={width}\n          />\n        ))}\n        {ranked.length > visibleCount && (\n          <Box marginTop={1}>\n            <Text dimColor color={COLORS.dim}>{'+ ' + (ranked.length - visibleCount) + ' more models'}</Text>\n          </Box>\n        )}\n      </Box>\n\n      <Box marginTop={1}>\n        <Text dimColor color={COLORS.muted}>{'\\u2190\\u2192'} switch tabs</Text>\n      </Box>\n    </Box>\n  );\n}\n","import React, { useMemo } from 'react';\nimport { Box, Text, useInput } from 'ink';\nimport { MODEL_CATALOG } from '../../../model/catalog.js';\nimport type { CatalogEntry } from '../../../model/catalog.js';\nimport { COLORS, SPACING } from '../theme.js';\n\ninterface ModelDetailProps {\n  modelId: string;\n  onBack: () => void;\n  width?: number;\n  height?: number;\n}\n\nfunction ProgressBar({ value, max, width, color, label }: { value: number; max: number; width: number; color: string; label?: string }) {\n  const ratio = max > 0 ? Math.min(1, Math.max(0, value / max)) : 0;\n  const filled = Math.round(width * ratio);\n  const empty = width - filled;\n  return (\n    <Box>\n      <Text>\n        <Text color={color}>{'\\u2588'.repeat(filled)}</Text>\n        <Text color={COLORS.dim}>{'\\u2588'.repeat(empty)}</Text>\n      </Text>\n      {label && <Text color={COLORS.muted}>{' ' + label}</Text>}\n    </Box>\n  );\n}\n\nfunction DetailRow({ label, children }: { label: string; children: React.ReactNode }) {\n  return (\n    <Box>\n      <Box width={16}>\n        <Text dimColor color={COLORS.muted}>{label.padEnd(14)}</Text>\n      </Box>\n      <Box>{children}</Box>\n    </Box>\n  );\n}\n\nfunction Badge({ text, color }: { text: string; color: string }) {\n  return (\n    <Box marginRight={1}>\n      <Text color={color}>{'<' + text + '>'}</Text>\n    </Box>\n  );\n}\n\nexport function ModelDetail({ modelId, onBack, width = 80 }: ModelDetailProps) {\n  const entry = useMemo(() => {\n    return MODEL_CATALOG.find((e) => e.id === modelId || e.ollamaTags.includes(modelId)) ?? null;\n  }, [modelId]);\n\n  useInput((input, key) => {\n    if (key.escape) onBack();\n    if (input === 'q') onBack();\n  });\n\n  if (!entry) {\n    return (\n      <Box flexDirection=\"column\" padding={SPACING.padding}>\n        <Text bold color={COLORS.error}>{'Model not found: ' + modelId}</Text>\n        <Text dimColor color={COLORS.muted}>Press Escape to go back</Text>\n      </Box>\n    );\n  }\n\n  const maxBench = 100;\n  const barW = Math.min(25, Math.floor((width - 30) / 2));\n\n  return (\n    <Box flexDirection=\"column\" padding={SPACING.padding} width={width}>\n      <Box borderStyle=\"round\" borderColor={COLORS.dim} flexDirection=\"column\" paddingX={SPACING.padding * 2}>\n        <Text bold color={COLORS.primary}>{entry.name}</Text>\n        <Text dimColor color={COLORS.muted}>{entry.maker + ' ' + (entry.openWeight ? '| Open Weight' : '| Proprietary')}</Text>\n        <Text color={COLORS.dim}>{'\\u2500'.repeat(Math.min(width - 6, 76))}</Text>\n\n        <Box marginTop={1} flexDirection=\"column\">\n          <Text bold color={COLORS.primary}>  Identity</Text>\n          <DetailRow label=\"Family\">\n            <Text color={COLORS.text}>{entry.family}</Text>\n          </DetailRow>\n          <DetailRow label=\"Architecture\">\n            {entry.architecture === 'moe' ? (\n              <Badge text=\"MoE\" color={COLORS.secondary} />\n            ) : (\n              <Text color={COLORS.text}>Dense</Text>\n            )}\n            {entry.activeParams && <Text color={COLORS.secondary}>{' (' + entry.activeParams + ' active)'}</Text>}\n          </DetailRow>\n          <DetailRow label=\"Parameters\">\n            <Text color={COLORS.text}>{entry.parameterSizes.join(', ')}</Text>\n          </DetailRow>\n          <DetailRow label=\"Context\">\n            <Text color={COLORS.text}>{formatContext(entry.contextWindow)} tokens</Text>\n          </DetailRow>\n          <DetailRow label=\"Max Output\">\n            <Text color={COLORS.text}>{entry.maxOutputTokens.toLocaleString()} tokens</Text>\n          </DetailRow>\n          <DetailRow label=\"Released\">\n            <Text color={COLORS.text}>{entry.released}</Text>\n          </DetailRow>\n        </Box>\n\n        <Box marginTop={1} flexDirection=\"column\">\n          <Text bold color={COLORS.primary}>  Capabilities</Text>\n          <DetailRow label=\"Tool Use\">\n            {entry.supportsToolUse ? <Text color={COLORS.success}>{'\\u2713'} Yes</Text> : <Text color={COLORS.dim}>{'\\u2717'} No</Text>}\n          </DetailRow>\n          <DetailRow label=\"Streaming\">\n            {entry.supportsStreaming ? <Text color={COLORS.success}>{'\\u2713'} Yes</Text> : <Text color={COLORS.dim}>{'\\u2717'} No</Text>}\n          </DetailRow>\n          <DetailRow label=\"Vision\">\n            {entry.supportsVision ? <Text color={COLORS.success}>{'\\u2713'} Yes</Text> : <Text color={COLORS.dim}>{'\\u2717'} No</Text>}\n          </DetailRow>\n          <DetailRow label=\"Thinking\">\n            {entry.supportsThinking ? <Text color={COLORS.success}>{'\\u2713'} Yes</Text> : <Text color={COLORS.dim}>{'\\u2717'} No</Text>}\n          </DetailRow>\n        </Box>\n\n        <Box marginTop={1} flexDirection=\"column\">\n          <Text bold color={COLORS.primary}>  Hardware Requirements</Text>\n          <Box marginLeft={2}>\n            <DetailRow label=\"Min VRAM\">\n              <ProgressBar value={entry.minVramGB} max={Math.max(entry.minVramGB, 48)} width={barW} color={entry.minVramGB > 32 ? COLORS.error : entry.minVramGB > 16 ? COLORS.warning : COLORS.success} label={`${entry.minVramGB} GB`} />\n            </DetailRow>\n          </Box>\n          <Box marginLeft={2}>\n            <DetailRow label=\"Min RAM\">\n              <ProgressBar value={entry.minRamGB} max={Math.max(entry.minRamGB, 64)} width={barW} color={entry.minRamGB > 32 ? COLORS.error : entry.minRamGB > 16 ? COLORS.warning : COLORS.success} label={`${entry.minRamGB} GB`} />\n            </DetailRow>\n          </Box>\n        </Box>\n\n        {entry.benchmarks && (\n          <Box marginTop={1} flexDirection=\"column\">\n            <Text bold color={COLORS.primary}>  Benchmarks</Text>\n            {entry.benchmarks.liveCodeBench != null && (\n              <Box marginLeft={2}>\n                <DetailRow label=\"LiveCodeBench\">\n                  <ProgressBar value={entry.benchmarks.liveCodeBench} max={maxBench} width={barW} color={COLORS.primary} label={`${entry.benchmarks.liveCodeBench}`} />\n                </DetailRow>\n              </Box>\n            )}\n            {entry.benchmarks.sweBench != null && (\n              <Box marginLeft={2}>\n                <DetailRow label=\"SWE-bench\">\n                  <ProgressBar value={entry.benchmarks.sweBench} max={maxBench} width={barW} color={COLORS.success} label={`${entry.benchmarks.sweBench}`} />\n                </DetailRow>\n              </Box>\n            )}\n            {entry.benchmarks.humaneval != null && (\n              <Box marginLeft={2}>\n                <DetailRow label=\"HumanEval\">\n                  <ProgressBar value={entry.benchmarks.humaneval} max={maxBench} width={barW} color={COLORS.cyan} label={`${entry.benchmarks.humaneval}`} />\n                </DetailRow>\n              </Box>\n            )}\n            {entry.benchmarks.mmlu != null && (\n              <Box marginLeft={2}>\n                <DetailRow label=\"MMLU\">\n                  <ProgressBar value={entry.benchmarks.mmlu} max={maxBench} width={barW} color={COLORS.accent} label={`${entry.benchmarks.mmlu}`} />\n                </DetailRow>\n              </Box>\n            )}\n            {entry.benchmarks.codeforcesElo != null && (\n              <Box marginLeft={2}>\n                <DetailRow label=\"Codeforces\">\n                  <ProgressBar value={entry.benchmarks.codeforcesElo} max={2500} width={barW} color={COLORS.secondary} label={`${entry.benchmarks.codeforcesElo}`} />\n                </DetailRow>\n              </Box>\n            )}\n          </Box>\n        )}\n\n        {entry.recommendedFor.length > 0 && (\n          <Box marginTop={1} flexDirection=\"column\">\n            <Text bold color={COLORS.primary}>  Recommended For</Text>\n            <Box marginLeft={2} flexWrap=\"wrap\">\n              {entry.recommendedFor.map((r) => (\n                <Badge key={r} text={r} color={COLORS.text} />\n              ))}\n            </Box>\n          </Box>\n        )}\n\n        {entry.quantizations.length > 0 && (\n          <Box marginTop={1} flexDirection=\"column\">\n            <Text bold color={COLORS.primary}>  Quantizations</Text>\n            {entry.quantizations.map((q, i) => (\n              <Box key={i} marginLeft={2}>\n                <Text dimColor color={COLORS.muted}>{'\\u2022'} </Text>\n                <Text color={COLORS.text}>{q.name.padEnd(10)}</Text>\n                <Text color={COLORS.warning}>{q.sizeGB + ' GB'}</Text>\n              </Box>\n            ))}\n          </Box>\n        )}\n\n        {entry.ollamaTags.length > 0 && (\n          <Box marginTop={1} flexDirection=\"column\">\n            <Text bold color={COLORS.primary}>  Ollama Tags</Text>\n            {entry.ollamaTags.map((tag, i) => (\n              <Box key={i} marginLeft={2}>\n                <Text dimColor color={COLORS.muted}>{'\\u2192'} </Text>\n                <Text color={COLORS.primary}>{tag}</Text>\n              </Box>\n            ))}\n          </Box>\n        )}\n      </Box>\n\n      <Box marginTop={1}>\n        <Text dimColor color={COLORS.muted}>  Press Escape to go back</Text>\n      </Box>\n    </Box>\n  );\n}\n\nfunction formatContext(tokens: number): string {\n  if (tokens >= 1048576) return `${(tokens / 1048576).toFixed(0)}M`;\n  if (tokens >= 1024) return `${(tokens / 1024).toFixed(0)}K`;\n  return `${tokens}`;\n}\n","import React, { useState, useEffect } from 'react';\nimport { Box, Text } from 'ink';\nimport { Spinner } from '@inkjs/ui';\nimport { ProjectAnalyzer } from '../../../model/project.js';\nimport type { ProjectProfile, LanguageInfo, FrameworkInfo } from '../../../model/project.js';\nimport { COLORS, SPACING } from '../theme.js';\n\ninterface ProjectProps {\n  width: number;\n  height: number;\n  onNavigate?: (screen: string) => void;\n  onSelectModel?: (modelId: string) => void;\n}\n\nfunction ProgressBar({ value, max, width, color }: { value: number; max: number; width: number; color: string }) {\n  const ratio = max > 0 ? Math.min(1, Math.max(0, value / max)) : 0;\n  const filled = Math.round(width * ratio);\n  const empty = width - filled;\n  return (\n    <Text>\n      <Text color={color}>{'\\u2588'.repeat(filled)}</Text>\n      <Text color={COLORS.dim}>{'\\u2588'.repeat(empty)}</Text>\n    </Text>\n  );\n}\n\nconst LANG_COLORS: Record<string, string> = {\n  TypeScript: '#3178c6',\n  JavaScript: '#f7df1e',\n  Python: '#3572A5',\n  Rust: '#dea584',\n  Go: '#00ADD8',\n  Java: '#b07219',\n  'C++': '#f34b7d',\n  C: '#555555',\n  Ruby: '#701516',\n  Swift: '#F05138',\n  'C#': '#178600',\n  HTML: '#e34c26',\n  CSS: '#563d7c',\n  SCSS: '#c6538c',\n  Kotlin: '#A97BFF',\n  Dart: '#00B4AB',\n  Shell: '#89e051',\n  Vue: '#41b883',\n  Svelte: '#ff3e00',\n};\n\nfunction LanguageBar({ lang, maxPct }: { lang: LanguageInfo; maxPct: number }) {\n  const barWidth = Math.min(20, Math.max(8, Math.floor(maxPct / 5)));\n  const color = LANG_COLORS[lang.language] ?? COLORS.primary;\n  return (\n    <Box>\n      <Box width={16}>\n        <Text color={COLORS.text}>{lang.language}</Text>\n      </Box>\n      <Box width={barWidth + 2}>\n        <ProgressBar value={lang.percentage} max={100} width={barWidth} color={color} />\n      </Box>\n      <Text color={COLORS.muted}>{' ' + lang.percentage.toFixed(1) + '%'}</Text>\n      <Text dimColor color={COLORS.dim}>{' (' + lang.fileCount + ' files)'}</Text>\n    </Box>\n  );\n}\n\nconst CATEGORY_COLORS: Record<string, string> = {\n  frontend: COLORS.primary,\n  backend: COLORS.success,\n  fullstack: COLORS.accent,\n  mobile: '#f06498',\n  data: COLORS.warning,\n  infra: COLORS.cyan,\n};\n\nfunction FrameworkBadge({ fw }: { fw: FrameworkInfo }) {\n  const color = CATEGORY_COLORS[fw.category] ?? COLORS.text;\n  return (\n    <Box marginRight={1}>\n      <Text color={color}>{'<' + fw.category + '>'}</Text>\n      <Text color={COLORS.text}>{' ' + fw.name}</Text>\n    </Box>\n  );\n}\n\nfunction ComplexityIndicator({ complexity }: { complexity: ProjectProfile['complexity'] }) {\n  const levels: ProjectProfile['complexity'][] = ['tiny', 'small', 'medium', 'large', 'monorepo'];\n  const idx = levels.indexOf(complexity);\n  const colors = [COLORS.success, COLORS.success, COLORS.warning, COLORS.secondary, COLORS.error];\n  const color = colors[idx] ?? COLORS.muted;\n  return (\n    <Box>\n      {levels.map((level, i) => (\n        <Text key={level}>\n          <Text color={i <= idx ? color : COLORS.dim}>{'\\u2588'}</Text>\n        </Text>\n      ))}\n      <Text color={color}>{' ' + complexity.toUpperCase()}</Text>\n    </Box>\n  );\n}\n\nfunction DetailRow({ label, children }: { label: string; children: React.ReactNode }) {\n  return (\n    <Box>\n      <Box width={18}>\n        <Text dimColor color={COLORS.muted}>{label.padEnd(16)}</Text>\n      </Box>\n      <Box>{children}</Box>\n    </Box>\n  );\n}\n\nexport function Project({ width, height }: ProjectProps) {\n  const [profile, setProfile] = useState<ProjectProfile | null>(null);\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState<string | null>(null);\n\n  useEffect(() => {\n    const analyzer = new ProjectAnalyzer();\n    try {\n      const result = analyzer.analyze(process.cwd());\n      setProfile(result);\n    } catch (err) {\n      setError(err instanceof Error ? err.message : String(err));\n    }\n    setLoading(false);\n  }, []);\n\n  if (loading) {\n    return (\n      <Box flexDirection=\"column\" padding={SPACING.padding}>\n        <Text bold color={COLORS.primary}>SynthCode Project Analyzer</Text>\n        <Box marginTop={1}>\n          <Spinner label=\"Analyzing project...\" />\n        </Box>\n      </Box>\n    );\n  }\n\n  if (error) {\n    return (\n      <Box flexDirection=\"column\" padding={SPACING.padding}>\n        <Text bold color={COLORS.error}>{'Error: ' + error}</Text>\n        <Text dimColor color={COLORS.muted}>Press Escape to go back</Text>\n      </Box>\n    );\n  }\n\n  if (!profile) return null;\n\n  const maxLangPct = profile.languages.length > 0 ? profile.languages[0].percentage : 100;\n\n  return (\n    <Box flexDirection=\"column\" padding={SPACING.padding} width={width}>\n      <Box borderStyle=\"round\" borderColor={COLORS.dim} flexDirection=\"column\" paddingX={SPACING.padding * 2}>\n        <Text bold color={COLORS.primary}>{'Project: ' + profile.name}</Text>\n        <Text dimColor color={COLORS.muted}>{profile.rootDir}</Text>\n        <Text color={COLORS.dim}>{'\\u2500'.repeat(Math.min(width - 6, 76))}</Text>\n\n        <Box marginTop={1} flexDirection=\"column\">\n          <Text bold color={COLORS.primary}>  Overview</Text>\n          <DetailRow label=\"Total Files\">\n            <Text color={COLORS.text}>{profile.totalFiles.toLocaleString()}</Text>\n          </DetailRow>\n          <DetailRow label=\"Lines of Code\">\n            <Text color={COLORS.text}>{profile.totalLinesOfCode.toLocaleString()}</Text>\n          </DetailRow>\n          <DetailRow label=\"Complexity\">\n            <ComplexityIndicator complexity={profile.complexity} />\n          </DetailRow>\n          <DetailRow label=\"TypeScript\">\n            {profile.hasTypeScript ? <Text color={COLORS.success}>Yes</Text> : <Text color={COLORS.dim}>No</Text>}\n          </DetailRow>\n          <DetailRow label=\"Tests\">\n            {profile.hasTests ? <Text color={COLORS.success}>{'\\u2713'} Present</Text> : <Text color={COLORS.warning}>{'\\u2717'} None detected</Text>}\n          </DetailRow>\n          <DetailRow label=\"CI\">\n            {profile.hasCI ? <Text color={COLORS.success}>{'\\u2713'} Configured</Text> : <Text color={COLORS.dim}>Not detected</Text>}\n          </DetailRow>\n          <DetailRow label=\"Docker\">\n            {profile.hasDocker ? <Text color={COLORS.success}>{'\\u2713'} Yes</Text> : <Text color={COLORS.dim}>No</Text>}\n          </DetailRow>\n        </Box>\n\n        {profile.languages.length > 0 && (\n          <Box marginTop={1} flexDirection=\"column\">\n            <Text bold color={COLORS.primary}>  Languages</Text>\n            {profile.languages.slice(0, 10).map((lang) => (\n              <LanguageBar key={lang.language} lang={lang} maxPct={maxLangPct} />\n            ))}\n          </Box>\n        )}\n\n        {profile.frameworks.length > 0 && (\n          <Box marginTop={1} flexDirection=\"column\">\n            <Text bold color={COLORS.primary}>  Frameworks</Text>\n            <Box marginLeft={2} flexWrap=\"wrap\">\n              {profile.frameworks.map((fw, i) => (\n                <FrameworkBadge key={i} fw={fw} />\n              ))}\n            </Box>\n          </Box>\n        )}\n\n        <Box marginTop={1} flexDirection=\"column\">\n          <Text bold color={COLORS.primary}>  Tooling</Text>\n          <DetailRow label=\"Package Manager\">\n            {profile.packageManager ? <Text color={COLORS.text}>{profile.packageManager}</Text> : <Text color={COLORS.dim}>Not detected</Text>}\n          </DetailRow>\n          <DetailRow label=\"Test Framework\">\n            {profile.testFramework ? <Text color={COLORS.text}>{profile.testFramework}</Text> : <Text color={COLORS.dim}>Not detected</Text>}\n          </DetailRow>\n          <DetailRow label=\"Build Tool\">\n            {profile.buildTool ? <Text color={COLORS.text}>{profile.buildTool}</Text> : <Text color={COLORS.dim}>Not detected</Text>}\n          </DetailRow>\n        </Box>\n\n        <Box marginTop={1} flexDirection=\"column\">\n          <Text bold color={COLORS.primary}>  Model Requirements</Text>\n          <DetailRow label=\"Min Context\">\n            <Text color={COLORS.text}>{profile.modelRequirements.minContextTokens.toLocaleString()} tokens</Text>\n          </DetailRow>\n          <DetailRow label=\"Reasoning\">\n            {profile.modelRequirements.reasoningNeeded ? <Text color={COLORS.warning}>Recommended</Text> : <Text color={COLORS.dim}>Not needed</Text>}\n          </DetailRow>\n          <DetailRow label=\"Tool Use\">\n            {profile.modelRequirements.toolUseNeeded ? <Text color={COLORS.success}>Required</Text> : <Text color={COLORS.dim}>Optional</Text>}\n          </DetailRow>\n          <DetailRow label=\"Code Heavy\">\n            {profile.modelRequirements.codeHeavy ? <Text color={COLORS.primary}>Yes</Text> : <Text color={COLORS.dim}>No</Text>}\n          </DetailRow>\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n","import * as fs from \"fs\";\nimport * as path from \"path\";\n\nexport interface ProjectProfile {\n  rootDir: string;\n  name: string;\n  languages: LanguageInfo[];\n  frameworks: FrameworkInfo[];\n  packageManager: string | null;\n  totalFiles: number;\n  totalLinesOfCode: number;\n  testFramework: string | null;\n  buildTool: string | null;\n  complexity: \"tiny\" | \"small\" | \"medium\" | \"large\" | \"monorepo\";\n  hasTypeScript: boolean;\n  hasTests: boolean;\n  hasCI: boolean;\n  hasDocker: boolean;\n  modelRequirements: ModelRequirements;\n}\n\nexport interface LanguageInfo {\n  language: string;\n  fileCount: number;\n  percentage: number;\n}\n\nexport interface FrameworkInfo {\n  name: string;\n  category: \"frontend\" | \"backend\" | \"fullstack\" | \"mobile\" | \"data\" | \"infra\";\n}\n\nexport interface ModelRequirements {\n  minContextTokens: number;\n  reasoningNeeded: boolean;\n  toolUseNeeded: boolean;\n  codeHeavy: boolean;\n}\n\nconst EXTENSION_MAP: Record<string, string> = {\n  \".ts\": \"TypeScript\",\n  \".tsx\": \"TypeScript\",\n  \".js\": \"JavaScript\",\n  \".jsx\": \"JavaScript\",\n  \".mjs\": \"JavaScript\",\n  \".cjs\": \"JavaScript\",\n  \".py\": \"Python\",\n  \".pyi\": \"Python\",\n  \".rs\": \"Rust\",\n  \".go\": \"Go\",\n  \".java\": \"Java\",\n  \".kt\": \"Kotlin\",\n  \".kts\": \"Kotlin\",\n  \".cpp\": \"C++\",\n  \".cc\": \"C++\",\n  \".cxx\": \"C++\",\n  \".c\": \"C\",\n  \".h\": \"C/C++\",\n  \".hpp\": \"C++\",\n  \".rb\": \"Ruby\",\n  \".swift\": \"Swift\",\n  \".scala\": \"Scala\",\n  \".php\": \"PHP\",\n  \".cs\": \"C#\",\n  \".fs\": \"F#\",\n  \".dart\": \"Dart\",\n  \".lua\": \"Lua\",\n  \".r\": \"R\",\n  \".R\": \"R\",\n  \".sql\": \"SQL\",\n  \".sh\": \"Shell\",\n  \".bash\": \"Shell\",\n  \".zsh\": \"Shell\",\n  \".ps1\": \"PowerShell\",\n  \".html\": \"HTML\",\n  \".css\": \"CSS\",\n  \".scss\": \"SCSS\",\n  \".sass\": \"Sass\",\n  \".less\": \"Less\",\n  \".vue\": \"Vue\",\n  \".svelte\": \"Svelte\",\n  \".xml\": \"XML\",\n  \".json\": \"JSON\",\n  \".yaml\": \"YAML\",\n  \".yml\": \"YAML\",\n  \".toml\": \"TOML\",\n  \".md\": \"Markdown\",\n  \".ex\": \"Elixir\",\n  \".exs\": \"Elixir\",\n  \".erl\": \"Erlang\",\n  \".hs\": \"Haskell\",\n  \".ml\": \"OCaml\",\n  \".zig\": \"Zig\",\n  \".nim\": \"Nim\",\n  \".proto\": \"Protocol Buffers\",\n  \".graphql\": \"GraphQL\",\n  \".gql\": \"GraphQL\",\n};\n\nconst SKIP_DIRS = new Set([\n  \"node_modules\",\n  \".git\",\n  \"dist\",\n  \"build\",\n  \"target\",\n  \"__pycache__\",\n  \".next\",\n  \".venv\",\n  \"venv\",\n  \".env\",\n  \".tox\",\n  \".mypy_cache\",\n  \".pytest_cache\",\n  \"coverage\",\n  \".nuxt\",\n  \".output\",\n  \".svelte-kit\",\n  \"vendor\",\n  \"Pods\",\n  \".gradle\",\n  \".idea\",\n  \".vscode\",\n  \"bin\",\n  \"obj\",\n  \".dart_tool\",\n  \".flutter-plugins\",\n]);\n\nconst CODE_EXTENSIONS = new Set([\n  \".ts\", \".tsx\", \".js\", \".jsx\", \".mjs\", \".cjs\",\n  \".py\", \".pyi\",\n  \".rs\",\n  \".go\",\n  \".java\", \".kt\", \".kts\",\n  \".cpp\", \".cc\", \".cxx\", \".c\", \".h\", \".hpp\",\n  \".rb\",\n  \".swift\",\n  \".scala\",\n  \".php\",\n  \".cs\", \".fs\",\n  \".dart\",\n  \".lua\",\n  \".r\", \".R\",\n  \".sh\", \".bash\", \".zsh\", \".ps1\",\n  \".vue\", \".svelte\",\n  \".ex\", \".exs\", \".erl\",\n  \".hs\", \".ml\",\n  \".zig\", \".nim\",\n  \".sql\",\n  \".graphql\", \".gql\",\n  \".proto\",\n  \".scss\", \".sass\", \".less\",\n  \".html\", \".css\",\n]);\n\nconst COMPILED_LANGUAGES = new Set([\"Rust\", \"Go\", \"Java\", \"Kotlin\", \"C++\", \"C\", \"C/C++\", \"Swift\", \"Scala\", \"C#\"]);\n\nconst COMPLEXITY_THRESHOLDS = {\n  tiny: 50,\n  small: 200,\n  medium: 1000,\n  large: 5000,\n} as const;\n\nconst CONTEXT_TOKEN_MAP: Record<string, number> = {\n  tiny: 8192,\n  small: 16384,\n  medium: 32768,\n  large: 65536,\n  monorepo: 131072,\n};\n\nexport class ProjectAnalyzer {\n  analyze(rootDir: string): ProjectProfile {\n    const absoluteRoot = path.resolve(rootDir);\n    const name = path.basename(absoluteRoot);\n\n    const allFiles = this.collectFiles(absoluteRoot);\n    const totalFiles = allFiles.length;\n\n    const languageCounts = this.detectLanguages(allFiles);\n    const languages = this.computeLanguagePercentages(languageCounts, totalFiles);\n\n    const rootFileNames = this.listRootFiles(absoluteRoot);\n    const rootFileContent = this.readRootConfigs(absoluteRoot, rootFileNames);\n\n    const packageManager = this.detectPackageManager(rootFileNames, rootFileContent);\n    const frameworks = this.detectFrameworks(absoluteRoot, rootFileNames, rootFileContent);\n    const testFramework = this.detectTestFramework(absoluteRoot, rootFileNames, rootFileContent);\n    const buildTool = this.detectBuildTool(rootFileNames);\n    const hasCI = this.detectCI(absoluteRoot, rootFileNames);\n    const hasDocker = this.detectDocker(rootFileNames);\n    const hasTests = this.detectHasTests(absoluteRoot, allFiles);\n\n    const hasTypeScript = languageCounts[\"TypeScript\"] !== undefined && languageCounts[\"TypeScript\"] > 0;\n\n    const totalLinesOfCode = this.estimateLinesOfCode(allFiles);\n    const complexity = this.computeComplexity(totalFiles);\n    const modelRequirements = this.computeModelRequirements(\n      complexity,\n      languages,\n      allFiles,\n    );\n\n    return {\n      rootDir: absoluteRoot,\n      name,\n      languages,\n      frameworks,\n      packageManager,\n      totalFiles,\n      totalLinesOfCode,\n      testFramework,\n      buildTool,\n      complexity,\n      hasTypeScript,\n      hasTests,\n      hasCI,\n      hasDocker,\n      modelRequirements,\n    };\n  }\n\n  private collectFiles(rootDir: string): string[] {\n    const files: string[] = [];\n    try {\n      const entries = fs.readdirSync(rootDir, {\n        recursive: true,\n        withFileTypes: false,\n      }) as string[];\n\n      for (const entry of entries) {\n        const fullPath = path.join(rootDir, entry);\n        const relativeParts = entry.split(path.sep);\n        const shouldSkip = relativeParts.some((part) => SKIP_DIRS.has(part));\n        if (shouldSkip) continue;\n\n        try {\n          const stat = fs.statSync(fullPath);\n          if (stat.isFile()) {\n            files.push(fullPath);\n          }\n        } catch {\n          continue;\n        }\n      }\n    } catch {\n      return [];\n    }\n    return files;\n  }\n\n  private listRootFiles(rootDir: string): Set<string> {\n    try {\n      const entries = fs.readdirSync(rootDir, { withFileTypes: true });\n      return new Set(\n        entries.filter((e) => e.isFile() || e.isDirectory()).map((e) => e.name),\n      );\n    } catch {\n      return new Set();\n    }\n  }\n\n  private readRootConfigs(\n    rootDir: string,\n    rootFileNames: Set<string>,\n  ): Map<string, string> {\n    const content = new Map<string, string>();\n\n    const configsToRead = [\n      \"package.json\",\n      \"Cargo.toml\",\n      \"go.mod\",\n      \"requirements.txt\",\n      \"Pipfile\",\n      \"pyproject.toml\",\n      \"Gemfile\",\n    ];\n\n    for (const config of configsToRead) {\n      if (rootFileNames.has(config)) {\n        try {\n          const filePath = path.join(rootDir, config);\n          const data = fs.readFileSync(filePath, \"utf-8\");\n          content.set(config, data);\n        } catch {\n          continue;\n        }\n      }\n    }\n\n    return content;\n  }\n\n  private detectLanguages(\n    files: string[],\n  ): Record<string, number> {\n    const counts: Record<string, number> = {};\n\n    for (const file of files) {\n      const ext = path.extname(file).toLowerCase();\n      const language = EXTENSION_MAP[ext];\n      if (language) {\n        counts[language] = (counts[language] || 0) + 1;\n      }\n    }\n\n    return counts;\n  }\n\n  private computeLanguagePercentages(\n    counts: Record<string, number>,\n    totalFiles: number,\n  ): LanguageInfo[] {\n    if (totalFiles === 0) return [];\n\n    const entries = Object.entries(counts).sort((a, b) => b[1] - a[1]);\n\n    return entries.map(([language, fileCount]) => ({\n      language,\n      fileCount,\n      percentage: Math.round((fileCount / totalFiles) * 10000) / 100,\n    }));\n  }\n\n  private detectPackageManager(\n    rootFileNames: Set<string>,\n    rootFileContent: Map<string, string>,\n  ): string | null {\n    if (rootFileNames.has(\"pnpm-lock.yaml\")) return \"pnpm\";\n    if (rootFileNames.has(\"yarn.lock\")) return \"yarn\";\n    if (rootFileNames.has(\"package-lock.json\")) return \"npm\";\n    if (rootFileNames.has(\"bun.lockb\") || rootFileNames.has(\"bun.lock\")) return \"bun\";\n\n    if (rootFileNames.has(\"package.json\") && !rootFileNames.has(\"package-lock.json\") && !rootFileNames.has(\"yarn.lock\") && !rootFileNames.has(\"pnpm-lock.yaml\")) {\n      return \"npm\";\n    }\n\n    if (rootFileNames.has(\"Cargo.toml\")) return \"cargo\";\n    if (rootFileNames.has(\"go.mod\")) return \"go\";\n    if (rootFileNames.has(\"requirements.txt\") || rootFileNames.has(\"Pipfile\") || rootFileNames.has(\"pyproject.toml\")) {\n      if (rootFileNames.has(\"Pipfile\")) return \"pipenv\";\n      if (rootFileNames.has(\"uv.lock\")) return \"uv\";\n      if (rootFileContent.has(\"pyproject.toml\")) {\n        const content = rootFileContent.get(\"pyproject.toml\")!;\n        if (content.includes(\"poetry\")) return \"poetry\";\n        if (content.includes(\"pdm\")) return \"pdm\";\n      }\n      return \"pip\";\n    }\n    if (rootFileNames.has(\"Gemfile\")) return \"bundler\";\n    if (rootFileNames.has(\"pubspec.yaml\")) return \"pub\";\n    if (rootFileNames.has(\"mix.exs\")) return \"mix\";\n    if (rootFileNames.has(\"composer.json\")) return \"composer\";\n\n    return null;\n  }\n\n  private detectFrameworks(\n    rootDir: string,\n    rootFileNames: Set<string>,\n    rootFileContent: Map<string, string>,\n  ): FrameworkInfo[] {\n    const frameworks: FrameworkInfo[] = [];\n    const seen = new Set<string>();\n\n    const addFramework = (name: string, category: FrameworkInfo[\"category\"]) => {\n      if (!seen.has(name)) {\n        seen.add(name);\n        frameworks.push({ name, category });\n      }\n    };\n\n    if (this.matchesGlob(rootFileNames, \"next.config.\")) {\n      addFramework(\"Next.js\", \"fullstack\");\n    }\n\n    if (this.matchesGlob(rootFileNames, \"nuxt.config.\")) {\n      addFramework(\"Nuxt\", \"fullstack\");\n    }\n\n    if (rootFileNames.has(\"angular.json\")) {\n      addFramework(\"Angular\", \"frontend\");\n    }\n\n    if (this.matchesGlob(rootFileNames, \"vite.config.\")) {\n      if (!seen.has(\"Next.js\")) {\n        addFramework(\"Vite\", \"frontend\");\n      }\n    }\n\n    if (rootFileNames.has(\"svelte.config.js\") || rootFileNames.has(\"svelte.config.ts\")) {\n      addFramework(\"SvelteKit\", \"fullstack\");\n    }\n\n    const pkgJson = rootFileContent.get(\"package.json\");\n    if (pkgJson) {\n      try {\n        const pkg = JSON.parse(pkgJson);\n        const allDeps = {\n          ...(pkg.dependencies || {}),\n          ...(pkg.devDependencies || {}),\n        };\n\n        if (allDeps[\"react\"] || allDeps[\"react-dom\"]) addFramework(\"React\", \"frontend\");\n        if (allDeps[\"vue\"] || allDeps[\"vue2\"]) addFramework(\"Vue\", \"frontend\");\n        if (allDeps[\"svelte\"]) addFramework(\"Svelte\", \"frontend\");\n        if (allDeps[\"@angular/core\"]) addFramework(\"Angular\", \"frontend\");\n        if (allDeps[\"express\"]) addFramework(\"Express\", \"backend\");\n        if (allDeps[\"fastify\"]) addFramework(\"Fastify\", \"backend\");\n        if (allDeps[\"koa\"]) addFramework(\"Koa\", \"backend\");\n        if (allDeps[\"nestjs\"] || allDeps[\"@nestjs/core\"]) addFramework(\"NestJS\", \"backend\");\n        if (allDeps[\"hono\"]) addFramework(\"Hono\", \"backend\");\n        if (allDeps[\"@hono/node-server\"]) addFramework(\"Hono\", \"backend\");\n        if (allDeps[\"hapi\"] || allDeps[\"@hapi/hapi\"]) addFramework(\"Hapi\", \"backend\");\n        if (allDeps[\"electron\"]) addFramework(\"Electron\", \"frontend\");\n        if (allDeps[\"react-native\"] || allDeps[\"expo\"]) addFramework(\"React Native\", \"mobile\");\n        if (allDeps[\"@react-native\"]) addFramework(\"React Native\", \"mobile\");\n        if (allDeps[\"tailwindcss\"]) addFramework(\"Tailwind CSS\", \"frontend\");\n        if (allDeps[\"@trpc/server\"] || allDeps[\"@trpc/client\"]) addFramework(\"tRPC\", \"fullstack\");\n        if (allDeps[\"prisma\"] || allDeps[\"@prisma/client\"]) addFramework(\"Prisma\", \"infra\");\n        if (allDeps[\"drizzle-orm\"]) addFramework(\"Drizzle\", \"infra\");\n        if (allDeps[\"@tanstack/react-query\"]) addFramework(\"TanStack Query\", \"frontend\");\n        if (allDeps[\"redux\"] || allDeps[\"@reduxjs/toolkit\"]) addFramework(\"Redux\", \"frontend\");\n        if (allDeps[\"zustand\"]) addFramework(\"Zustand\", \"frontend\");\n        if (allDeps[\"three\"] || allDeps[\"three.js\"]) addFramework(\"Three.js\", \"frontend\");\n        if (allDeps[\"d3\"] || allDeps[\"d3.js\"]) addFramework(\"D3\", \"data\");\n        if (allDeps[\"@remix-run/react\"] || allDeps[\"remix\"]) addFramework(\"Remix\", \"fullstack\");\n        if (allDeps[\"@astrojs/react\"] || allDeps[\"astro\"]) addFramework(\"Astro\", \"frontend\");\n        if (allDeps[\"gatsby\"]) addFramework(\"Gatsby\", \"frontend\");\n        if (allDeps[\"@storybook/react\"] || allDeps[\"storybook\"]) addFramework(\"Storybook\", \"frontend\");\n        if (allDeps[\"jest\"] || allDeps[\"vitest\"]) { /* handled in test detection */ }\n        if (allDeps[\"express\"] && allDeps[\"react\"]) {\n          // Already added individually\n        }\n      } catch {\n        // Invalid JSON\n      }\n    }\n\n    const cargoToml = rootFileContent.get(\"Cargo.toml\");\n    if (cargoToml) {\n      if (cargoToml.includes(\"actix-web\")) addFramework(\"Actix Web\", \"backend\");\n      if (cargoToml.includes(\"axum\")) addFramework(\"Axum\", \"backend\");\n      if (cargoToml.includes(\"rocket\")) addFramework(\"Rocket\", \"backend\");\n      if (cargoToml.includes(\"warp\")) addFramework(\"Warp\", \"backend\");\n      if (cargoToml.includes(\"tokio\")) addFramework(\"Tokio\", \"backend\");\n      if (cargoToml.includes(\"bevy\")) addFramework(\"Bevy\", \"data\");\n      if (cargoToml.includes(\"leptos\")) addFramework(\"Leptos\", \"fullstack\");\n      if (cargoToml.includes(\"yew\")) addFramework(\"Yew\", \"frontend\");\n      if (cargoToml.includes(\"iced\")) addFramework(\"Iced\", \"frontend\");\n      if (cargoToml.includes(\"diesel\")) addFramework(\"Diesel\", \"infra\");\n      if (cargoToml.includes(\"sqlx\")) addFramework(\"SQLx\", \"infra\");\n      if (cargoToml.includes(\"sea-orm\")) addFramework(\"SeaORM\", \"infra\");\n    }\n\n    const goMod = rootFileContent.get(\"go.mod\");\n    if (goMod) {\n      if (goMod.includes(\"gin-gonic/gin\")) addFramework(\"Gin\", \"backend\");\n      if (goMod.includes(\"labstack/echo\") || goMod.includes(\"echo\")) addFramework(\"Echo\", \"backend\");\n      if (goMod.includes(\"fiber\")) addFramework(\"Fiber\", \"backend\");\n      if (goMod.includes(\"gorilla/mux\")) addFramework(\"Gorilla Mux\", \"backend\");\n      if (goMod.includes(\"chi\")) addFramework(\"Chi\", \"backend\");\n      if (goMod.includes(\"go-kratos\")) addFramework(\"Kratos\", \"backend\");\n      if (goMod.includes(\"gorm.io\")) addFramework(\"GORM\", \"infra\");\n    }\n\n    const requirementsTxt = rootFileContent.get(\"requirements.txt\");\n    const pyprojectToml = rootFileContent.get(\"pyproject.toml\");\n\n    const pythonDeps: string[] = [];\n    if (requirementsTxt) {\n      pythonDeps.push(...requirementsTxt.split(\"\\n\"));\n    }\n    if (pyprojectToml) {\n      pythonDeps.push(...pyprojectToml.split(\"\\n\"));\n    }\n    const pythonDepsStr = pythonDeps.join(\"\\n\").toLowerCase();\n\n    if (pythonDepsStr.includes(\"django\")) addFramework(\"Django\", \"backend\");\n    if (pythonDepsStr.includes(\"flask\")) addFramework(\"Flask\", \"backend\");\n    if (pythonDepsStr.includes(\"fastapi\")) addFramework(\"FastAPI\", \"backend\");\n    if (pythonDepsStr.includes(\"starlette\")) addFramework(\"Starlette\", \"backend\");\n    if (pythonDepsStr.includes(\"pyramid\")) addFramework(\"Pyramid\", \"backend\");\n    if (pythonDepsStr.includes(\"sanic\")) addFramework(\"Sanic\", \"backend\");\n    if (pythonDepsStr.includes(\"celery\")) addFramework(\"Celery\", \"backend\");\n    if (pythonDepsStr.includes(\"scrapy\")) addFramework(\"Scrapy\", \"data\");\n    if (pythonDepsStr.includes(\"pandas\")) addFramework(\"Pandas\", \"data\");\n    if (pythonDepsStr.includes(\"numpy\")) addFramework(\"NumPy\", \"data\");\n    if (pythonDepsStr.includes(\"tensorflow\")) addFramework(\"TensorFlow\", \"data\");\n    if (pythonDepsStr.includes(\"torch\") || pythonDepsStr.includes(\"pytorch\")) addFramework(\"PyTorch\", \"data\");\n    if (pythonDepsStr.includes(\"scikit-learn\") || pythonDepsStr.includes(\"sklearn\")) addFramework(\"scikit-learn\", \"data\");\n    if (pythonDepsStr.includes(\"sqlalchemy\")) addFramework(\"SQLAlchemy\", \"infra\");\n    if (pythonDepsStr.includes(\"flask-restful\") || pythonDepsStr.includes(\"flask-restx\")) addFramework(\"Flask-RESTful\", \"backend\");\n    if (pythonDepsStr.includes(\" Strawberry\")) addFramework(\"Strawberry\", \"backend\");\n\n    const gemfile = rootFileContent.get(\"Gemfile\");\n    if (gemfile) {\n      if (gemfile.includes(\"rails\")) addFramework(\"Ruby on Rails\", \"fullstack\");\n      if (gemfile.includes(\"sinatra\")) addFramework(\"Sinatra\", \"backend\");\n      if (gemfile.includes(\"hanami\")) addFramework(\"Hanami\", \"fullstack\");\n      if (gemfile.includes(\"grape\")) addFramework(\"Grape\", \"backend\");\n      if (gemfile.includes(\"sidekiq\")) addFramework(\"Sidekiq\", \"backend\");\n      if (gemfile.includes(\"rspec\")) { /* test framework */ }\n      if (gemfile.includes(\"activerecord\")) addFramework(\"ActiveRecord\", \"infra\");\n    }\n\n    if (rootFileNames.has(\"pubspec.yaml\")) {\n      addFramework(\"Flutter\", \"mobile\");\n    }\n\n    if (rootFileNames.has(\"mix.exs\")) {\n      addFramework(\"Phoenix\", \"fullstack\");\n    }\n\n    if (rootFileNames.has(\"build.gradle\") || rootFileNames.has(\"build.gradle.kts\") || rootFileNames.has(\"pom.xml\")) {\n      if (rootFileNames.has(\"pom.xml\")) addFramework(\"Maven\", \"infra\");\n      else addFramework(\"Gradle\", \"infra\");\n\n      const springSource = rootFileNames.has(\"pom.xml\")\n        ? this.tryRead(path.join(rootDir, \"pom.xml\"))\n        : this.tryRead(path.join(rootDir, \"build.gradle\")) || this.tryRead(path.join(rootDir, \"build.gradle.kts\"));\n      if (springSource && springSource.includes(\"spring\")) {\n        addFramework(\"Spring\", \"backend\");\n      }\n    }\n\n    if (rootFileNames.has(\"docker-compose.yml\") || rootFileNames.has(\"docker-compose.yaml\")) {\n      addFramework(\"Docker Compose\", \"infra\");\n    }\n\n    if (rootFileNames.has(\"terraform\") || this.hasDir(rootDir, \"terraform\")) {\n      addFramework(\"Terraform\", \"infra\");\n    }\n\n    if (rootFileNames.has(\"serverless.yml\") || rootFileNames.has(\"serverless.yaml\")) {\n      addFramework(\"Serverless\", \"infra\");\n    }\n\n    if (rootFileNames.has(\"sam.yaml\") || rootFileNames.has(\"template.yaml\")) {\n      addFramework(\"AWS SAM\", \"infra\");\n    }\n\n    return frameworks;\n  }\n\n  private detectTestFramework(\n    rootDir: string,\n    rootFileNames: Set<string>,\n    rootFileContent: Map<string, string>,\n  ): string | null {\n    if (this.matchesGlob(rootFileNames, \"vitest.config.\")) return \"Vitest\";\n    if (this.matchesGlob(rootFileNames, \"jest.config.\")) return \"Jest\";\n\n    const pkgJson = rootFileContent.get(\"package.json\");\n    if (pkgJson) {\n      try {\n        const pkg = JSON.parse(pkgJson);\n        const allDeps = {\n          ...(pkg.dependencies || {}),\n          ...(pkg.devDependencies || {}),\n        };\n        if (allDeps[\"vitest\"]) return \"Vitest\";\n        if (allDeps[\"jest\"]) return \"Jest\";\n        if (allDeps[\"mocha\"]) return \"Mocha\";\n        if (allDeps[\"ava\"]) return \"AVA\";\n        if (allDeps[\"cypress\"]) return \"Cypress\";\n        if (allDeps[\"@playwright/test\"]) return \"Playwright\";\n        if (allDeps[\"@testing-library/react\"]) return \"Testing Library\";\n        if (allDeps[\"tap\"]) return \"tap\";\n        if (allDeps[\"uvu\"]) return \"UVU\";\n        if (allDeps[\"buster\"]) return \"Buster\";\n      } catch {\n        // Invalid JSON\n      }\n    }\n\n    if (rootFileNames.has(\"pytest.ini\") || rootFileNames.has(\"conftest.py\")) return \"pytest\";\n    const pyproject = rootFileContent.get(\"pyproject.toml\");\n    if (pyproject && (pyproject.includes(\"pytest\") || pyproject.includes(\"[tool.pytest\"))) return \"pytest\";\n\n    const cargoToml = rootFileContent.get(\"Cargo.toml\");\n    if (cargoToml && cargoToml.includes(\"[dev-dependencies]\")) return \"cargo test\";\n\n    if (rootFileNames.has(\"go.mod\")) {\n      const goTestDir = path.join(rootDir, \"..._test.go\");\n      try {\n        const testFiles = fs.readdirSync(rootDir, { recursive: true }) as string[];\n        if (testFiles.some((f) => typeof f === \"string\" && f.endsWith(\"_test.go\"))) {\n          return \"go test\";\n        }\n      } catch {\n        // ignore\n      }\n    }\n\n    const gemfile = rootFileContent.get(\"Gemfile\");\n    if (gemfile && gemfile.includes(\"rspec\")) return \"RSpec\";\n\n    if (rootFileNames.has(\"Makefile\")) {\n      const makefile = this.tryRead(path.join(rootDir, \"Makefile\"));\n      if (makefile && makefile.includes(\"test\")) return \"make test\";\n    }\n\n    return null;\n  }\n\n  private detectBuildTool(rootFileNames: Set<string>): string | null {\n    if (rootFileNames.has(\"tsconfig.json\")) return \"tsc\";\n    if (this.matchesGlob(rootFileNames, \"webpack.config.\")) return \"webpack\";\n    if (this.matchesGlob(rootFileNames, \"vite.config.\")) return \"vite\";\n    if (this.matchesGlob(rootFileNames, \"rollup.config.\")) return \"rollup\";\n    if (this.matchesGlob(rootFileNames, \"esbuild.\") || rootFileNames.has(\"esbuild.js\") || rootFileNames.has(\"esbuild.ts\") || rootFileNames.has(\"esbuild.mjs\")) return \"esbuild\";\n    if (rootFileNames.has(\"turbo.json\")) return \"Turborepo\";\n    if (this.matchesGlob(rootFileNames, \"parcelrc\") || this.matchesGlob(rootFileNames, \".parcelrc\")) return \"Parcel\";\n    if (rootFileNames.has(\"Gruntfile.js\") || rootFileNames.has(\"Gruntfile.ts\")) return \"Grunt\";\n    if (rootFileNames.has(\"Gulpfile.js\") || rootFileNames.has(\"Gulpfile.ts\") || rootFileNames.has(\"Gulpfile.mjs\")) return \"Gulp\";\n    if (rootFileNames.has(\"Makefile\")) return \"make\";\n    if (rootFileNames.has(\"CMakeLists.txt\")) return \"CMake\";\n    if (rootFileNames.has(\"Cargo.toml\")) return \"cargo\";\n    if (rootFileNames.has(\"build.gradle\") || rootFileNames.has(\"build.gradle.kts\")) return \"Gradle\";\n    if (rootFileNames.has(\"pom.xml\")) return \"Maven\";\n    if (rootFileNames.has(\"build.sbt\")) return \"sbt\";\n    if (rootFileNames.has(\"justfile\") || rootFileNames.has(\"Justfile\")) return \"just\";\n    if (rootFileNames.has(\"Taskfile.yml\") || rootFileNames.has(\"Taskfile.yaml\")) return \"Task\";\n    if (rootFileNames.has(\"bazel\") || rootFileNames.has(\"WORKSPACE\") || rootFileNames.has(\"WORKSPACE.bazel\")) return \"Bazel\";\n    if (rootFileNames.has(\"BUCK\") || rootFileNames.has(\".buckconfig\")) return \"Buck\";\n    if (rootFileNames.has(\"meson.build\")) return \"Meson\";\n    if (rootFileNames.has(\"build.zig\")) return \"Zig Build\";\n\n    return null;\n  }\n\n  private detectCI(rootDir: string, rootFileNames: Set<string>): boolean {\n    if (rootFileNames.has(\".github\")) {\n      const workflowsDir = path.join(rootDir, \".github\", \"workflows\");\n      try {\n        const stat = fs.statSync(workflowsDir);\n        if (stat.isDirectory()) {\n          const files = fs.readdirSync(workflowsDir);\n          if (files.length > 0) return true;\n        }\n      } catch {\n        // .github exists but no workflows\n      }\n    }\n\n    // Re-check by trying to read .github/workflows directly\n    try {\n      const workflowsDir = path.join(rootDir, \".github\", \"workflows\");\n      const files = fs.readdirSync(workflowsDir);\n      if (files.length > 0) return true;\n    } catch {\n      // doesn't exist\n    }\n\n    if (rootFileNames.has(\".gitlab-ci.yml\")) return true;\n    if (rootFileNames.has(\"Jenkinsfile\")) return true;\n    if (rootFileNames.has(\".circleci\") || rootFileNames.has(\".circleci\")) {\n      try {\n        const configPath = path.join(rootDir, \".circleci\", \"config.yml\");\n        if (fs.existsSync(configPath)) return true;\n      } catch {\n        // ignore\n      }\n    }\n    if (rootFileNames.has(\".travis.yml\")) return true;\n    if (rootFileNames.has(\"azure-pipelines.yml\") || rootFileNames.has(\"azure-pipelines.yaml\")) return true;\n    if (rootFileNames.has(\"bitbucket-pipelines.yml\")) return true;\n    if (rootFileNames.has(\"cloudbuild.yaml\") || rootFileNames.has(\"cloudbuild.yml\")) return true;\n    if (rootFileNames.has(\"buildkite.yml\") || rootFileNames.has(\"buildkite.yaml\")) return true;\n\n    return false;\n  }\n\n  private detectDocker(rootFileNames: Set<string>): boolean {\n    if (rootFileNames.has(\"Dockerfile\")) return true;\n    if (this.matchesGlob(rootFileNames, \"docker-compose.\")) return true;\n    if (rootFileNames.has(\"Dockerfile.dev\") || rootFileNames.has(\"Dockerfile.prod\")) return true;\n    if (rootFileNames.has(\".dockerignore\")) return true;\n\n    return false;\n  }\n\n  private detectHasTests(rootDir: string, allFiles: string[]): boolean {\n    for (const file of allFiles) {\n      const base = path.basename(file);\n      if (\n        base.includes(\".test.\") ||\n        base.includes(\".spec.\") ||\n        base.includes(\"_test.\") ||\n        base.includes(\"_spec.\") ||\n        base.includes(\"Test.\") ||\n        base.startsWith(\"test_\") ||\n        base.startsWith(\"tests/\")\n      ) {\n        return true;\n      }\n    }\n\n    const testDirs = [\"test\", \"tests\", \"__tests__\", \"spec\", \"specs\", \"testing\"];\n    try {\n      const rootEntries = fs.readdirSync(rootDir, { withFileTypes: true });\n      for (const entry of rootEntries) {\n        if (entry.isDirectory() && testDirs.includes(entry.name)) {\n          return true;\n        }\n      }\n    } catch {\n      // ignore\n    }\n\n    return false;\n  }\n\n  private estimateLinesOfCode(files: string[]): number {\n    if (files.length === 0) return 0;\n\n    const codeFiles = files.filter((f) => {\n      const ext = path.extname(f).toLowerCase();\n      return CODE_EXTENSIONS.has(ext);\n    });\n\n    if (codeFiles.length === 0) return 0;\n\n    const sortedBySize = codeFiles\n      .map((f) => {\n        try {\n          return { file: f, size: fs.statSync(f).size };\n        } catch {\n          return { file: f, size: 0 };\n        }\n      })\n      .filter((entry) => entry.size > 0)\n      .sort((a, b) => b.size - a.size);\n\n    const sampleSize = Math.min(sortedBySize.length, 100);\n    const sampleFiles = sortedBySize.slice(0, sampleSize);\n\n    let sampledLines = 0;\n    let sampledBytes = 0;\n\n    for (const entry of sampleFiles) {\n      try {\n        const content = fs.readFileSync(entry.file, \"utf-8\");\n        const lines = content.split(\"\\n\").length;\n        sampledLines += lines;\n        sampledBytes += entry.size;\n      } catch {\n        continue;\n      }\n    }\n\n    if (sampledBytes === 0) return 0;\n\n    const avgLinesPerByte = sampledLines / sampledBytes;\n\n    let totalBytes = 0;\n    for (const entry of sortedBySize) {\n      totalBytes += entry.size;\n    }\n\n    return Math.round(avgLinesPerByte * totalBytes);\n  }\n\n  private computeComplexity(totalFiles: number): ProjectProfile[\"complexity\"] {\n    if (totalFiles < COMPLEXITY_THRESHOLDS.tiny) return \"tiny\";\n    if (totalFiles < COMPLEXITY_THRESHOLDS.small) return \"small\";\n    if (totalFiles < COMPLEXITY_THRESHOLDS.medium) return \"medium\";\n    if (totalFiles < COMPLEXITY_THRESHOLDS.large) return \"large\";\n    return \"monorepo\";\n  }\n\n  private computeModelRequirements(\n    complexity: ProjectProfile[\"complexity\"],\n    languages: LanguageInfo[],\n    allFiles: string[],\n  ): ModelRequirements {\n    const minContextTokens = CONTEXT_TOKEN_MAP[complexity];\n\n    const hasCompiledLanguage = languages.some(\n      (l) => COMPILED_LANGUAGES.has(l.language),\n    );\n\n    let codeFileCount = 0;\n    for (const file of allFiles) {\n      const ext = path.extname(file).toLowerCase();\n      if (CODE_EXTENSIONS.has(ext)) codeFileCount++;\n    }\n    const codeRatio = allFiles.length > 0 ? codeFileCount / allFiles.length : 0;\n\n    return {\n      minContextTokens,\n      reasoningNeeded: hasCompiledLanguage,\n      toolUseNeeded: true,\n      codeHeavy: codeRatio > 0.6,\n    };\n  }\n\n  private matchesGlob(fileNames: Set<string>, prefix: string): boolean {\n    for (const name of fileNames) {\n      if (name.startsWith(prefix)) return true;\n    }\n    return false;\n  }\n\n  private tryRead(filePath: string): string | null {\n    try {\n      return fs.readFileSync(filePath, \"utf-8\");\n    } catch {\n      return null;\n    }\n  }\n\n  private hasDir(rootDir: string, name: string): boolean {\n    try {\n      const stat = fs.statSync(path.join(rootDir, name));\n      return stat.isDirectory();\n    } catch {\n      return false;\n    }\n  }\n}\n","import React, { useState, useCallback } from 'react';\nimport { Box, Text, useApp } from 'ink';\nimport { TextInput } from '@inkjs/ui';\nimport { COLORS } from '../theme.js';\n\ninterface Message {\n  role: 'user' | 'assistant' | 'system';\n  content: string;\n  timestamp: Date;\n}\n\ninterface PlaygroundProps {\n  width: number;\n  height: number;\n  onNavigate?: (screen: string) => void;\n  onSelectModel?: (modelId: string) => void;\n}\n\nexport function Playground({ width, height }: PlaygroundProps) {\n  const { exit } = useApp();\n  const [messages, setMessages] = useState<Message[]>([\n    {\n      role: 'system',\n      content: 'Welcome to SynthCode Playground. Type a message to chat with the AI agent.',\n      timestamp: new Date(),\n    },\n    {\n      role: 'assistant',\n      content: 'Connect a provider to start chatting. Use --ollama, --anthropic, or --google flags.',\n      timestamp: new Date(),\n    },\n  ]);\n  const [isLoading, setIsLoading] = useState(false);\n  const [model, setModel] = useState('qwen3:32b');\n\n  const topBarHeight = 1;\n  const inputBarHeight = 3;\n  const messageAreaHeight = Math.max(3, height - topBarHeight - inputBarHeight);\n  const maxContentWidth = Math.max(20, width - 6);\n  const visibleMessages = messages.slice(-messageAreaHeight);\n\n  const wrapContent = useCallback((content: string, maxLen: number) => {\n    const lines: string[] = [];\n    for (let i = 0; i < content.length; i += maxLen) {\n      lines.push(content.slice(i, i + maxLen));\n    }\n    return lines.length > 0 ? lines : [''];\n  }, []);\n\n  const formatTime = useCallback((d: Date) => {\n    return d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\n  }, []);\n\n  const handleSend = useCallback((value: string) => {\n    const trimmed = value.trim();\n    if (!trimmed) return;\n\n    if (trimmed === '/clear') {\n      setMessages([]);\n      return;\n    }\n\n    if (trimmed.startsWith('/model ')) {\n      const newModel = trimmed.slice(7).trim();\n      if (newModel) {\n        setModel(newModel);\n        setMessages(prev => [\n          ...prev,\n          { role: 'system' as const, content: `Model switched to ${newModel}`, timestamp: new Date() },\n        ]);\n      }\n      return;\n    }\n\n    if (trimmed === '/quit') {\n      exit();\n      return;\n    }\n\n    const userContent = trimmed;\n    setMessages(prev => [\n      ...prev,\n      { role: 'user' as const, content: userContent, timestamp: new Date() },\n    ]);\n    setIsLoading(true);\n\n    setTimeout(() => {\n      setMessages(prev => [\n        ...prev,\n        {\n          role: 'assistant' as const,\n          content: `[Simulated] Connect a provider (Ollama, Anthropic, OpenAI) to get real responses. Your message: \"${userContent}\"`,\n          timestamp: new Date(),\n        },\n      ]);\n      setIsLoading(false);\n    }, 800 + Math.random() * 1200);\n  }, [exit]);\n\n  return (\n    <Box flexDirection=\"column\" width={width} height={height}>\n      <Box width={width} justifyContent=\"space-between\" paddingX={1}>\n        <Text bold color={COLORS.accent}>\n          Agent Playground\n        </Text>\n        <Text color={COLORS.muted}>\n          {'Model: '}{model}{' | /clear /model /quit'}\n        </Text>\n      </Box>\n\n      <Box flexDirection=\"column\" width={width} height={messageAreaHeight} paddingX={1}>\n        {visibleMessages.map((msg, i) => {\n          if (msg.role === 'system') {\n            return (\n              <Box key={i} justifyContent=\"center\" width={width - 2}>\n                <Text color={COLORS.warning}>{msg.content}</Text>\n              </Box>\n            );\n          }\n\n          if (msg.role === 'user') {\n            const wrapped = wrapContent(msg.content, maxContentWidth);\n            return (\n              <Box key={i} flexDirection=\"column\" alignItems=\"flex-end\" width={width - 2}>\n                {wrapped.map((line, j) => (\n                  <Text key={j} color={COLORS.cyan}>\n                    {line}\n                  </Text>\n                ))}\n                <Text dimColor>{formatTime(msg.timestamp)}</Text>\n              </Box>\n            );\n          }\n\n          return (\n            <Box key={i} flexDirection=\"column\" width={width - 2}>\n              <Text color={COLORS.text}>{msg.content}</Text>\n              <Text dimColor>{formatTime(msg.timestamp)}</Text>\n            </Box>\n          );\n        })}\n        {isLoading && (\n          <Box paddingLeft={2}>\n            <Text color={COLORS.muted} italic>\n              thinking...\n            </Text>\n          </Box>\n        )}\n      </Box>\n\n      <Box width={width} paddingX={1} borderStyle=\"single\" borderColor={COLORS.dim}>\n        <Text color={COLORS.cyan} bold>\n          {'> '}\n        </Text>\n        <Box flexGrow={1}>\n          <TextInput\n            onSubmit={handleSend}\n            placeholder=\"Type a message...\"\n            isDisabled={isLoading}\n          />\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n"],"mappings":"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","names":["import_ink","import_react","import_ink","import_ink","import_jsx_runtime","import_ink","import_jsx_runtime","import_ink","cpus","import_jsx_runtime","import_react","import_ink","import_ui","import_jsx_runtime","arch","import_react","import_ink","import_jsx_runtime","import_react","import_ink","import_jsx_runtime","formatContext","import_react","import_ink","import_ui","import_jsx_runtime","ProgressBar","DetailRow","import_react","import_ink","import_ui","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime"]}