@skillkit/tui 1.8.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +508 -38
- package/dist/index.js +13626 -2754
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx","../src/App.tsx","../src/state/types.ts","../src/theme/colors.ts","../src/theme/symbols.ts","../src/utils/helpers.ts","../src/components/Sidebar.tsx","../src/components/Splash.tsx","../src/screens/Home.tsx","../src/state/navigation.ts","../src/state/skills.ts","../src/state/agents.ts","../src/state/marketplace.ts","../../../marketplace/sources.json","../src/screens/Browse.tsx","../src/screens/Installed.tsx","../src/screens/Marketplace.tsx","../src/screens/Recommend.tsx","../src/screens/Translate.tsx","../src/components/Header.tsx","../src/screens/Context.tsx","../src/components/Spinner.tsx","../src/screens/Sync.tsx","../src/screens/Memory.tsx","../src/screens/Workflow.tsx","../src/screens/Execute.tsx","../src/components/ProgressBar.tsx","../src/screens/History.tsx","../src/screens/Team.tsx","../src/screens/Plugins.tsx","../src/screens/Methodology.tsx","../src/screens/Plan.tsx","../src/screens/Settings.tsx","../src/screens/Help.tsx","../src/screens/Mesh.tsx","../src/screens/Message.tsx","../src/theme/animations.ts","../src/utils/list.ts","../src/components/AgentGrid.tsx","../src/components/StatsCard.tsx","../src/components/StatusBar.tsx","../src/components/SkillList.tsx","../src/components/SearchInput.tsx","../src/components/FeatureList.tsx"],"sourcesContent":["import { createCliRenderer } from '@opentui/core';\nimport { createRoot } from '@opentui/react';\nimport { App } from './App.js';\n\nlet rootInstance: ReturnType<typeof createRoot> | null = null;\n\nexport function exitTUI(code = 0): void {\n try {\n // Unmount React tree first\n if (rootInstance) {\n try {\n rootInstance.unmount();\n } catch {\n // Ignore unmount errors\n }\n rootInstance = null;\n }\n\n // Restore terminal state: exit alt screen, show cursor, reset attributes, clear\n process.stdout.write('\\x1b[?1049l\\x1b[?25h\\x1b[0m\\x1b[H\\x1b[2J');\n } catch {\n // Ignore write errors\n }\n\n // Use setImmediate to allow any pending operations to complete\n setImmediate(() => process.exit(code));\n}\n\nexport async function startTUI(): Promise<never> {\n // Setup signal handlers for clean exit\n const handleSignal = () => exitTUI(0);\n process.on('SIGINT', handleSignal);\n process.on('SIGTERM', handleSignal);\n\n const renderer = await createCliRenderer({ exitOnCtrlC: false });\n rootInstance = createRoot(renderer);\n rootInstance.render(<App onExit={exitTUI} />);\n return new Promise(() => {});\n}\n\nexport { type Screen } from './state/types.js';\nexport { App } from './App.js';\nexport * from './theme/index.js';\nexport * from './state/index.js';\nexport * from './utils/index.js';\nexport * from './components/index.js';\nexport * from './screens/index.js';\n","import { useState, useCallback, useEffect } from 'react';\nimport { useKeyboard } from '@opentui/react';\nimport { exec } from 'node:child_process';\nimport { type Screen, NAV_KEYS } from './state/types.js';\nimport { Sidebar } from './components/Sidebar.js';\nimport { Splash } from './components/Splash.js';\nimport {\n Home, Browse, Installed, Marketplace, Settings, Recommend,\n Translate, Context, Memory, Team, Plugins, Methodology,\n Plan, Workflow, Execute, History, Sync, Help, Mesh, Message,\n} from './screens/index.js';\n\nconst DOCS_URL = 'https://agenstskills.com/docs';\n\nfunction openUrl(url: string): void {\n const cmd = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open';\n exec(`${cmd} ${url}`);\n}\n\ninterface AppProps {\n onExit?: (code?: number) => void;\n}\n\nexport function App({ onExit }: AppProps = {}) {\n const [showSplash, setShowSplash] = useState(true);\n const [screen, setScreen] = useState<Screen>('home');\n const [dimensions, setDimensions] = useState({\n cols: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n });\n\n useEffect(() => {\n const handleResize = () => {\n setDimensions({\n cols: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n });\n };\n process.stdout.on('resize', handleResize);\n return () => { process.stdout.off('resize', handleResize); };\n }, []);\n\n const { cols, rows } = dimensions;\n const showSidebar = cols >= 60;\n\n const handleNavigate = useCallback((newScreen: Screen) => {\n setScreen(newScreen);\n }, []);\n\n const handleSplashComplete = useCallback(() => {\n setShowSplash(false);\n }, []);\n\n useKeyboard((key: { name?: string; ctrl?: boolean }) => {\n if (showSplash) {\n setShowSplash(false);\n return;\n }\n\n if (key.name === 'q' || (key.ctrl && key.name === 'c')) {\n onExit ? onExit(0) : process.exit(0);\n return;\n }\n\n if (key.name === 'd') {\n openUrl(DOCS_URL);\n return;\n }\n\n const targetScreen = NAV_KEYS[key.name || ''];\n if (targetScreen) {\n setScreen(targetScreen);\n }\n\n if (key.name === 'escape' && screen !== 'home') {\n setScreen('home');\n }\n });\n\n if (showSplash) {\n return <Splash onComplete={handleSplashComplete} duration={3000} />;\n }\n\n const screenProps = {\n onNavigate: handleNavigate,\n cols: cols - (showSidebar ? 20 : 0),\n rows,\n };\n\n const renderScreen = () => {\n switch (screen) {\n case 'home': return <Home {...screenProps} />;\n case 'browse': return <Browse {...screenProps} />;\n case 'installed': return <Installed {...screenProps} />;\n case 'marketplace': return <Marketplace {...screenProps} />;\n case 'settings': return <Settings {...screenProps} />;\n case 'recommend': return <Recommend {...screenProps} />;\n case 'translate': return <Translate {...screenProps} />;\n case 'context': return <Context {...screenProps} />;\n case 'memory': return <Memory {...screenProps} />;\n case 'team': return <Team {...screenProps} />;\n case 'plugins': return <Plugins {...screenProps} />;\n case 'methodology': return <Methodology {...screenProps} />;\n case 'plan': return <Plan {...screenProps} />;\n case 'workflow': return <Workflow {...screenProps} />;\n case 'execute': return <Execute {...screenProps} />;\n case 'history': return <History {...screenProps} />;\n case 'sync': return <Sync {...screenProps} />;\n case 'help': return <Help {...screenProps} />;\n case 'mesh': return <Mesh {...screenProps} />;\n case 'message': return <Message {...screenProps} />;\n default: return <Home {...screenProps} />;\n }\n };\n\n return (\n <box flexDirection=\"row\" height={rows}>\n {showSidebar && <Sidebar screen={screen} onNavigate={handleNavigate} />}\n <box flexDirection=\"column\" flexGrow={1} marginLeft={showSidebar ? 1 : 0} paddingRight={1}>\n {renderScreen()}\n </box>\n </box>\n );\n}\n\nexport { type Screen };\n","export interface SkillItem {\n name: string;\n description?: string;\n source?: string;\n installs?: number;\n enabled?: boolean;\n quality?: number;\n grade?: string;\n warnings?: number;\n}\n\nexport interface RepoInfo {\n source: string;\n name: string;\n}\n\nexport interface FetchedSkill {\n name: string;\n source: string;\n repoName: string;\n description?: string;\n}\n\nexport type Screen =\n | 'home' | 'browse' | 'installed' | 'marketplace' | 'recommend'\n | 'translate' | 'context' | 'memory' | 'team' | 'plugins'\n | 'methodology' | 'plan' | 'workflow' | 'execute' | 'history'\n | 'sync' | 'settings' | 'help' | 'mesh' | 'message';\n\nexport const NAV_KEYS: Record<string, Screen> = {\n h: 'home', m: 'marketplace', b: 'browse', w: 'workflow',\n x: 'execute', y: 'history', r: 'recommend', t: 'translate',\n c: 'context', e: 'memory', i: 'installed', s: 'sync',\n a: 'team', p: 'plugins', o: 'methodology', n: 'plan',\n ',': 'settings', '/': 'help', 'g': 'mesh', 'j': 'message',\n} as const;\n\nexport const STATUS_BAR_SHORTCUTS = 'b browse m market i installed s sync / help q quit';\n\nexport interface ScreenMeta {\n key: string;\n label: string;\n screen: Screen;\n}\n\nexport interface SidebarSection {\n section: string;\n items: ScreenMeta[];\n}\n\nexport const SIDEBAR_NAV: SidebarSection[] = [\n {\n section: 'Discover',\n items: [\n { key: 'h', label: 'Home', screen: 'home' },\n { key: 'b', label: 'Browse', screen: 'browse' },\n { key: 'm', label: 'Market', screen: 'marketplace' },\n { key: 'r', label: 'Recommend', screen: 'recommend' },\n ],\n },\n {\n section: 'Manage',\n items: [\n { key: 'i', label: 'Installed', screen: 'installed' },\n { key: 's', label: 'Sync', screen: 'sync' },\n { key: 't', label: 'Translate', screen: 'translate' },\n ],\n },\n {\n section: 'Execute',\n items: [\n { key: 'w', label: 'Workflows', screen: 'workflow' },\n { key: 'x', label: 'Execute', screen: 'execute' },\n { key: 'n', label: 'Plan', screen: 'plan' },\n ],\n },\n {\n section: 'Team',\n items: [\n { key: 'a', label: 'Team', screen: 'team' },\n { key: 'c', label: 'Context', screen: 'context' },\n { key: 'e', label: 'Memory', screen: 'memory' },\n { key: 'g', label: 'Mesh', screen: 'mesh' },\n { key: 'j', label: 'Messages', screen: 'message' },\n ],\n },\n {\n section: 'More',\n items: [\n { key: 'p', label: 'Plugins', screen: 'plugins' },\n { key: 'o', label: 'Methods', screen: 'methodology' },\n { key: ',', label: 'Settings', screen: 'settings' },\n ],\n },\n];\n","/**\n * Monochromatic color palette for SkillKit TUI\n * Inspired by OpenSync's elegant dark theme\n */\n\nexport const colors = {\n // Base (monochromatic grays)\n background: '#0d0d0d',\n surface: '#1a1a1a',\n surfaceHover: '#262626',\n border: '#333333',\n borderDim: '#1f1f1f',\n\n // Text hierarchy\n text: '#ffffff',\n textSecondary: '#a0a0a0',\n textMuted: '#666666',\n\n // Accent (single brand color - vibrant green)\n accent: '#00ff88',\n accentDim: '#00cc6a',\n\n // Status colors (subtle variations)\n success: '#22c55e',\n warning: '#eab308',\n error: '#ef4444',\n info: '#3b82f6',\n\n // Feature-specific accent colors (for colored keywords)\n sync: '#00d9ff', // cyan\n browse: '#22c55e', // green\n recommend: '#fbbf24', // yellow/gold\n translate: '#a855f7', // purple\n workflow: '#3b82f6', // blue\n team: '#ffffff', // white\n private: '#ef4444', // red\n tag: '#fbbf24', // yellow\n export: '#22c55e', // green\n delete: '#ef4444', // red\n} as const;\n\nexport type ColorName = keyof typeof colors;\nexport type ColorValue = (typeof colors)[ColorName];\n\n/**\n * Get a color value by name\n */\nexport function getColor(name: ColorName): ColorValue {\n return colors[name];\n}\n\n/**\n * Terminal-safe color names for OpenTUI\n * Maps our design system colors to terminal-compatible values\n */\nexport const terminalColors = {\n background: 'black',\n surface: 'black',\n text: 'white',\n textSecondary: 'gray',\n textMuted: 'gray',\n accent: 'green',\n success: 'green',\n warning: 'yellow',\n error: 'red',\n info: 'blue',\n sync: 'cyan',\n browse: 'green',\n recommend: 'yellow',\n translate: 'magenta',\n workflow: 'blue',\n team: 'white',\n border: 'gray',\n} as const;\n","/**\n * Unicode symbols and agent logos for SkillKit TUI\n * Monochromatic design system for terminal display\n */\n\n/**\n * Agent logo definitions with monochromatic icons\n */\nexport interface AgentLogo {\n icon: string;\n name: string;\n company: string;\n}\n\n/**\n * All 32 supported agents with monochromatic Unicode logos\n */\nexport const AGENT_LOGOS: Record<string, AgentLogo> = {\n 'claude-code': { icon: '⟁', name: 'Claude Code', company: 'Anthropic' },\n 'cursor': { icon: '◫', name: 'Cursor', company: 'Anysphere' },\n 'codex': { icon: '◎', name: 'Codex CLI', company: 'OpenAI' },\n 'gemini-cli': { icon: '✦', name: 'Gemini CLI', company: 'Google' },\n 'opencode': { icon: '⬡', name: 'OpenCode', company: 'SST' },\n 'github-copilot': { icon: '◈', name: 'Copilot', company: 'GitHub' },\n 'windsurf': { icon: '≋', name: 'Windsurf', company: 'Codeium' },\n 'droid': { icon: '▣', name: 'Droid', company: 'Factory' },\n 'goose': { icon: '◇', name: 'Goose', company: 'Block' },\n 'amp': { icon: '△', name: 'Amp', company: 'Sourcegraph' },\n 'kilo': { icon: '◉', name: 'Kilo Code', company: '' },\n 'kiro-cli': { icon: '⬢', name: 'Kiro', company: 'AWS' },\n 'roo': { icon: '⊙', name: 'Roo Code', company: '' },\n 'trae': { icon: '◆', name: 'Trae', company: 'ByteDance' },\n 'antigravity': { icon: '⊛', name: 'Antigravity', company: '' },\n 'clawdbot': { icon: '⟐', name: 'Clawdbot', company: '' },\n 'cline': { icon: '⊕', name: 'Cline', company: '' },\n 'codebuddy': { icon: '⊗', name: 'CodeBuddy', company: '' },\n 'commandcode': { icon: '⊘', name: 'CommandCode', company: '' },\n 'continue': { icon: '⊞', name: 'Continue', company: '' },\n 'crush': { icon: '⊟', name: 'Crush', company: '' },\n 'factory': { icon: '⊠', name: 'Factory', company: '' },\n 'mcpjam': { icon: '⊡', name: 'MCPJam', company: '' },\n 'mux': { icon: '⊢', name: 'Mux', company: '' },\n 'neovate': { icon: '⊣', name: 'Neovate', company: '' },\n 'openhands': { icon: '⊤', name: 'OpenHands', company: '' },\n 'pi': { icon: '⊥', name: 'Pi', company: '' },\n 'qoder': { icon: '⊦', name: 'Qoder', company: '' },\n 'qwen': { icon: '⊧', name: 'Qwen', company: 'Alibaba' },\n 'vercel': { icon: '▲', name: 'Vercel', company: 'Vercel' },\n 'zencoder': { icon: '⊩', name: 'Zencoder', company: '' },\n 'universal': { icon: '●', name: 'Universal', company: '' },\n} as const;\n\n/**\n * UI symbols for status and navigation\n */\nexport const symbols = {\n // Navigation\n pointer: '▸',\n pointerInactive: ' ',\n bullet: '●',\n bulletEmpty: '○',\n\n // Status\n success: '✓',\n error: '✗',\n warning: '⚠',\n info: 'ℹ',\n pending: '○',\n active: '●',\n synced: '●',\n\n // Progress\n progressFilled: '█',\n progressEmpty: '░',\n\n // Spinner frames\n spinner: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'] as const,\n\n // Arrows\n arrowUp: '↑',\n arrowDown: '↓',\n arrowLeft: '←',\n arrowRight: '→',\n\n // Decorative\n diamond: '◆',\n diamondEmpty: '◇',\n star: '★',\n starEmpty: '☆',\n\n // Box drawing\n horizontalLine: '─',\n verticalLine: '│',\n topLeft: '┌',\n topRight: '┐',\n bottomLeft: '└',\n bottomRight: '┘',\n\n // Brand\n brandIcon: '◆',\n} as const;\n\nexport type SymbolName = keyof typeof symbols;\n\n/**\n * Get agent logo by agent type ID\n */\nexport function getAgentLogo(agentType: string): AgentLogo | undefined {\n return AGENT_LOGOS[agentType];\n}\n\n/**\n * Get all agent types\n */\nexport function getAgentTypes(): string[] {\n return Object.keys(AGENT_LOGOS);\n}\n\n/**\n * Get formatted agent display string (icon + name)\n */\nexport function formatAgentDisplay(agentType: string): string {\n const logo = AGENT_LOGOS[agentType];\n if (!logo) return agentType;\n return `${logo.icon} ${logo.name}`;\n}\n","/**\n * Helper utilities for agent and skill operations\n */\nimport {\n loadConfig,\n getSearchDirs as coreGetSearchDirs,\n getInstallDir as coreGetInstallDir,\n saveSkillMetadata as coreSaveSkillMetadata,\n} from '@skillkit/core';\nimport { getAdapter } from '@skillkit/agents';\nimport type { AgentType, AgentAdapterInfo, SkillMetadata } from '@skillkit/core';\nimport { readFileSync } from 'node:fs';\nimport { join, dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\n/**\n * Get search directories for skills based on agent type\n * @param agentType - Optional agent type (defaults to configured agent)\n * @returns Array of directories to search for skills\n */\nexport function getSearchDirs(agentType?: AgentType): string[] {\n const type = agentType || loadConfig().agent;\n const adapter = getAdapter(type);\n const adapterInfo: AgentAdapterInfo = {\n type: adapter.type,\n name: adapter.name,\n skillsDir: adapter.skillsDir,\n configFile: adapter.configFile,\n };\n return coreGetSearchDirs(adapterInfo);\n}\n\n/**\n * Get installation directory for skills\n * @param global - Whether to get global or project-local directory\n * @param agentType - Optional agent type (defaults to configured agent)\n * @returns Installation directory path\n */\nexport function getInstallDir(global = false, agentType?: AgentType): string {\n const type = agentType || loadConfig().agent;\n const adapter = getAdapter(type);\n const adapterInfo: AgentAdapterInfo = {\n type: adapter.type,\n name: adapter.name,\n skillsDir: adapter.skillsDir,\n configFile: adapter.configFile,\n };\n return coreGetInstallDir(adapterInfo, global);\n}\n\n/**\n * Save skill metadata to a skill directory\n * @param skillDir - Directory containing the skill\n * @param metadata - Metadata to save\n */\nexport function saveSkillMetadata(\n skillDir: string,\n metadata: SkillMetadata\n): void {\n coreSaveSkillMetadata(skillDir, metadata);\n}\n\n/**\n * Get version from package.json\n * @returns Version string\n */\nexport function getVersion(): string {\n try {\n // Try to read from package.json relative to the built file\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n const packagePath = join(__dirname, '..', '..', 'package.json');\n const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));\n return packageJson.version || '1.0.0';\n } catch {\n return '1.0.0';\n }\n}\n","import { type Screen, SIDEBAR_NAV } from '../state/types.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface SidebarProps {\n screen: Screen;\n onNavigate: (screen: Screen) => void;\n}\n\nexport function Sidebar({ screen }: SidebarProps) {\n const version = getVersion();\n\n return (\n <box flexDirection=\"column\" width={18} paddingRight={1}>\n <text fg={terminalColors.accent}>\n <b>{symbols.brandIcon} skillkit</b>\n </text>\n <text fg={terminalColors.textMuted}>v{version}</text>\n <text> </text>\n\n {SIDEBAR_NAV.map(({ section, items }, idx) => (\n <box key={section} flexDirection=\"column\">\n {idx > 0 && <text> </text>}\n <text fg={terminalColors.textMuted}>\n <i>{section}</i>\n </text>\n {items.map((item) => {\n const active = screen === item.screen;\n return (\n <text key={item.key} fg={active ? terminalColors.accent : terminalColors.text}>\n {active ? <b>{symbols.pointer} {item.label}</b> : <>{symbols.pointerInactive} {item.label}</>}\n </text>\n );\n })}\n </box>\n ))}\n\n <box flexGrow={1} />\n <text fg={terminalColors.textMuted}>{symbols.horizontalLine.repeat(14)}</text>\n <text fg={terminalColors.textMuted}>/ help q quit</text>\n </box>\n );\n}\n","/**\n * Splash Component\n * Cinematic ASCII art intro with elegant animations\n * Premium terminal experience\n */\nimport { useState, useEffect, useMemo, useCallback } from 'react';\nimport { terminalColors } from '../theme/colors.js';\nimport { getVersion } from '../utils/helpers.js';\n\n// Premium ASCII art logo - clean geometric design\nconst LOGO_FRAMES = [\n // Frame 1 - Dots appear\n [\n ' ',\n ' · · · · · · · · · · · · · · · ',\n ' ',\n ],\n // Frame 2 - Lines form\n [\n ' ',\n ' ━━━ ━ ━ ━ ━ ━ ━ ━ ━━━ ',\n ' ',\n ],\n // Frame 3 - Structure emerges\n [\n ' ┌──┐ ┬ ┌─ ┬ ┬ ┬ ┬ ┌─ ┬ ┌─┐ ',\n ' └──┐ │ │ │ │ │ │ │ │ │ ',\n ' └──┘ ┴ └─ ┴ ┴─┘ ┴─┘ ┴ └─ ┴ ┴ ',\n ],\n // Frame 4 - Bold letters\n [\n ' ╔═╗ ╦╔═ ╦ ╦ ╦ ╦╔═ ╦╔╦╗ ',\n ' ╚═╗ ╠╩╗ ║ ║ ║ ╠╩╗ ║ ║ ',\n ' ╚═╝ ╩ ╩ ╩ ╩═╝ ╩═╝ ╩ ╩ ╩ ╩ ',\n ],\n // Frame 5 - Final premium logo\n [\n ' ███████╗██╗ ██╗██╗██╗ ██╗ ██╗ ██╗██╗████████╗',\n ' ██╔════╝██║ ██╔╝██║██║ ██║ ██║ ██╔╝██║╚══██╔══╝',\n ' ███████╗█████╔╝ ██║██║ ██║ █████╔╝ ██║ ██║ ',\n ' ╚════██║██╔═██╗ ██║██║ ██║ ██╔═██╗ ██║ ██║ ',\n ' ███████║██║ ██╗██║███████╗███████╗██║ ██╗██║ ██║ ',\n ' ╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ',\n ],\n];\n\n// Compact logo for smaller terminals\nconst LOGO_SMALL = [\n ' ╔═╗╦╔═╦╦ ╦ ╦╔═╦╔╦╗ ',\n ' ╚═╗╠╩╗║║ ║ ╠╩╗║ ║ ',\n ' ╚═╝╩ ╩╩╩═╝╩═╝╩ ╩╩ ╩ ',\n];\n\n// Elegant spinner frames\nconst SPINNER = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n\n// Progress bar characters\nconst PROGRESS = {\n empty: '░',\n filled: '█',\n head: '▓',\n};\n\n// Loading phases with elegant messaging\nconst PHASES = [\n { message: 'Initializing', detail: 'skill engine' },\n { message: 'Connecting', detail: 'agent network' },\n { message: 'Loading', detail: 'skill manifests' },\n { message: 'Syncing', detail: 'configurations' },\n { message: 'Ready', detail: '' },\n];\n\ninterface SplashProps {\n onComplete: () => void;\n duration?: number;\n}\n\nexport function Splash({ onComplete, duration = 3500 }: SplashProps) {\n const [frame, setFrame] = useState(0);\n const [progress, setProgress] = useState(0);\n const [spinnerFrame, setSpinnerFrame] = useState(0);\n const [phase, setPhase] = useState(0);\n const [fadeIn, setFadeIn] = useState(0);\n const [particles, setParticles] = useState<string[]>([]);\n\n // Cache version to avoid repeated sync file I/O on every render\n const version = useMemo(() => getVersion(), []);\n const cols = process.stdout.columns || 80;\n const rows = process.stdout.rows || 24;\n const useSmallLogo = cols < 70;\n const currentLogo = useSmallLogo ? LOGO_SMALL : (LOGO_FRAMES[Math.min(frame, 4)] || LOGO_FRAMES[4]);\n const maxWidth = Math.max(...currentLogo.map(l => l.length));\n\n // Generate ambient particles - returns fresh randomized string each call\n const generateParticles = useCallback(() => {\n const chars = ['·', '∙', '•', '○', '◦', '◌', '◍', '◎'];\n return Array(cols).fill(0).map(() =>\n Math.random() > 0.97 ? chars[Math.floor(Math.random() * chars.length)] : ' '\n ).join('');\n }, [cols]);\n\n // Logo reveal animation\n useEffect(() => {\n if (frame >= 4) return;\n const timer = setTimeout(() => setFrame(f => f + 1), 200);\n return () => clearTimeout(timer);\n }, [frame]);\n\n // Fade in effect\n useEffect(() => {\n if (fadeIn >= 10) return;\n const timer = setTimeout(() => setFadeIn(f => f + 1), 50);\n return () => clearTimeout(timer);\n }, [fadeIn]);\n\n // Progress animation\n useEffect(() => {\n const interval = setInterval(() => {\n setProgress(p => {\n const newProgress = p + (Math.random() * 3 + 1);\n if (newProgress >= 100) {\n clearInterval(interval);\n return 100;\n }\n return newProgress;\n });\n }, 50);\n return () => clearInterval(interval);\n }, []);\n\n // Phase progression\n useEffect(() => {\n const phaseProgress = progress / 20;\n setPhase(Math.min(Math.floor(phaseProgress), PHASES.length - 1));\n }, [progress]);\n\n // Spinner animation\n useEffect(() => {\n const interval = setInterval(() => {\n setSpinnerFrame(f => (f + 1) % SPINNER.length);\n }, 80);\n return () => clearInterval(interval);\n }, []);\n\n // Particle animation\n useEffect(() => {\n const interval = setInterval(() => {\n setParticles(prev => {\n const newParticles = [...prev];\n if (newParticles.length > 3) newParticles.shift();\n newParticles.push(generateParticles());\n return newParticles;\n });\n }, 150);\n return () => clearInterval(interval);\n }, [generateParticles]);\n\n // Auto-complete\n useEffect(() => {\n const timer = setTimeout(onComplete, duration);\n return () => clearTimeout(timer);\n }, [onComplete, duration]);\n\n const pad = ' '.repeat(Math.max(0, Math.floor((cols - maxWidth) / 2)));\n const progressWidth = Math.max(1, Math.min(40, cols - 20));\n const progressPad = ' '.repeat(Math.max(0, Math.floor((cols - progressWidth) / 2)));\n\n const filledWidth = Math.min(Math.floor((progress / 100) * progressWidth), progressWidth);\n const emptyWidth = Math.max(0, progressWidth - filledWidth - 1);\n const progressBar = PROGRESS.filled.repeat(filledWidth) +\n (filledWidth < progressWidth ? PROGRESS.head : '') +\n PROGRESS.empty.repeat(emptyWidth);\n\n const currentPhase = PHASES[phase];\n\n return (\n <box flexDirection=\"column\" height={rows}>\n {/* Top ambient particles */}\n <text fg={terminalColors.textMuted}>\n {particles[0] || ''}\n </text>\n\n {/* Spacer */}\n <box flexGrow={1} />\n\n {/* Logo */}\n <box flexDirection=\"column\" alignItems=\"center\">\n {currentLogo.map((line, idx) => (\n <text key={idx} fg={frame >= 4 ? terminalColors.accent : terminalColors.textMuted}>\n {frame >= 4 ? <b>{pad}{line}</b> : <>{pad}{line}</>}\n </text>\n ))}\n </box>\n\n {/* Tagline with fade-in */}\n <text> </text>\n {fadeIn > 3 && (\n <text fg={terminalColors.textSecondary}>\n {pad}{' '}universal skills for ai coding agents\n </text>\n )}\n\n {/* Version badge */}\n {fadeIn > 5 && (\n <>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n {pad}{' '}v{version}\n </text>\n </>\n )}\n\n {/* Spacer */}\n <text> </text>\n <text> </text>\n\n {/* Progress section */}\n {fadeIn > 7 && (\n <box flexDirection=\"column\" alignItems=\"center\">\n {/* Status line */}\n <box flexDirection=\"row\">\n <text fg={terminalColors.accent}>\n {progressPad}{SPINNER[spinnerFrame]}{' '}\n </text>\n <text fg={terminalColors.text}>\n <b>{currentPhase.message}</b>\n </text>\n {currentPhase.detail && (\n <text fg={terminalColors.textMuted}>\n {' '}{currentPhase.detail}\n </text>\n )}\n </box>\n\n {/* Progress bar */}\n <text> </text>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>{progressPad}[</text>\n <text fg={terminalColors.accent}>{progressBar}</text>\n <text fg={terminalColors.textMuted}>]</text>\n <text fg={terminalColors.textSecondary}>{' '}{Math.floor(progress)}%</text>\n </box>\n </box>\n )}\n\n {/* Spacer */}\n <box flexGrow={1} />\n\n {/* Bottom hint */}\n <box flexDirection=\"column\" alignItems=\"center\">\n <text fg={terminalColors.textMuted}>\n {progressPad}{' '}press any key to skip\n </text>\n <text> </text>\n {/* Bottom particles */}\n <text fg={terminalColors.textMuted}>\n {particles[1] || ''}\n </text>\n </box>\n </box>\n );\n}\n","import { useState, useEffect, useMemo } from 'react';\nimport { type Screen, loadSkills, TOTAL_AGENTS } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols, AGENT_LOGOS } from '../theme/symbols.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface HomeProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst FEATURES = [\n { key: 'Sync', color: terminalColors.sync, desc: 'share across agents' },\n { key: 'Browse', color: terminalColors.browse, desc: 'discover skills' },\n { key: 'Recommend', color: terminalColors.recommend, desc: 'AI suggestions' },\n { key: 'Translate', color: terminalColors.translate, desc: 'convert formats' },\n { key: 'Workflow', color: terminalColors.workflow, desc: 'automate chains' },\n { key: 'Team', color: terminalColors.text, desc: 'collaborate' },\n];\n\nexport function Home({ cols = 80 }: HomeProps) {\n const [animPhase, setAnimPhase] = useState(0);\n const [stats, setStats] = useState({ skills: 0, agents: TOTAL_AGENTS, synced: 0 });\n const [detectedAgents, setDetectedAgents] = useState<string[]>([]);\n\n const version = getVersion();\n const isCompact = cols < 70;\n const isNarrow = cols < 50;\n const contentWidth = Math.min(cols - 4, 55);\n const line = '─'.repeat(contentWidth);\n\n useEffect(() => {\n if (animPhase >= 5) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n return () => clearTimeout(timer);\n }, [animPhase]);\n\n useEffect(() => {\n const skillsData = loadSkills();\n setStats({\n skills: skillsData.skills.length,\n agents: TOTAL_AGENTS,\n synced: Math.min(skillsData.skills.length, 3),\n });\n setDetectedAgents(['claude-code', 'cursor', 'github-copilot']);\n }, []);\n\n const visibleAgents = useMemo(() => {\n const allAgents = Object.entries(AGENT_LOGOS);\n const perRow = isNarrow || isCompact ? 2 : 3;\n const maxAgents = isNarrow ? 4 : isCompact ? 6 : 9;\n return {\n agents: allAgents.slice(0, maxAgents),\n perRow,\n remaining: allAgents.length - maxAgents,\n };\n }, [isCompact, isNarrow]);\n\n const getAgentWidth = () => {\n if (isNarrow) return 22;\n if (isCompact) return 26;\n return 18;\n };\n\n return (\n <box flexDirection=\"column\" padding={1}>\n {animPhase >= 1 && (\n <box flexDirection=\"column\">\n <box flexDirection=\"row\">\n <text fg={terminalColors.text}>{symbols.brandIcon} skillkit</text>\n <text fg={terminalColors.textMuted}> v{version}</text>\n </box>\n <text fg={terminalColors.textMuted}>universal skills for ai coding agents</text>\n <text> </text>\n </box>\n )}\n\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>{line}</text>\n <text> </text>\n <box flexDirection=\"row\">\n <box width={14}><text fg={terminalColors.accent}>{stats.skills}</text></box>\n <box width={14}><text fg={terminalColors.text}>{stats.agents}</text></box>\n <box width={14}><text fg={terminalColors.text}>{stats.synced}</text></box>\n </box>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted} width={14}>skills</text>\n <text fg={terminalColors.textMuted} width={14}>agents</text>\n <text fg={terminalColors.textMuted} width={14}>synced</text>\n </box>\n <text> </text>\n <text fg={terminalColors.textMuted}>{line}</text>\n <text> </text>\n </box>\n )}\n\n {animPhase >= 3 && (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Works with</text>\n <text> </text>\n {Array(Math.ceil(visibleAgents.agents.length / visibleAgents.perRow))\n .fill(0)\n .map((_, rowIdx) => (\n <box key={rowIdx} flexDirection=\"row\">\n {visibleAgents.agents\n .slice(rowIdx * visibleAgents.perRow, (rowIdx + 1) * visibleAgents.perRow)\n .map(([type, agent]) => {\n const isDetected = detectedAgents.includes(type);\n return (\n <box key={type} width={getAgentWidth()} flexDirection=\"row\">\n <text fg={terminalColors.text}>{agent.icon} {agent.name} </text>\n <text fg={isDetected ? terminalColors.accent : terminalColors.textMuted}>\n {isDetected ? '●' : '○'}\n </text>\n </box>\n );\n })}\n </box>\n ))}\n {visibleAgents.remaining > 0 && (\n <text fg={terminalColors.textMuted}>+{visibleAgents.remaining} more</text>\n )}\n <text> </text>\n <text fg={terminalColors.textMuted}>{line}</text>\n <text> </text>\n </box>\n )}\n\n {animPhase >= 4 && (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Features</text>\n <text> </text>\n {FEATURES.map((feat) => (\n <box key={feat.key} flexDirection=\"row\">\n <text fg={feat.color} width={12}> {feat.key}</text>\n <text fg={terminalColors.textMuted}>{feat.desc}</text>\n </box>\n ))}\n <text> </text>\n </box>\n )}\n\n {animPhase >= 5 && (\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>{line}</text>\n <text fg={terminalColors.textMuted}>\n {isCompact ? 'b browse m market / help q quit' : 'b browse m market i installed / help q quit'}\n </text>\n </box>\n )}\n </box>\n );\n}\n","/**\n * Navigation state management for SkillKit TUI\n */\nimport type { Screen } from './types.js';\nimport { NAV_KEYS } from './types.js';\n\n/**\n * Navigation state\n */\nexport interface NavigationState {\n currentScreen: Screen;\n previousScreen: Screen | null;\n history: Screen[];\n}\n\n/**\n * Create initial navigation state\n */\nexport function createNavigationState(): NavigationState {\n return {\n currentScreen: 'home',\n previousScreen: null,\n history: ['home'],\n };\n}\n\n/**\n * Navigate to a new screen\n */\nexport function navigateTo(state: NavigationState, screen: Screen): NavigationState {\n if (state.currentScreen === screen) return state;\n\n return {\n currentScreen: screen,\n previousScreen: state.currentScreen,\n history: [...state.history, screen],\n };\n}\n\n/**\n * Go back to previous screen (or home)\n */\nexport function goBack(state: NavigationState): NavigationState {\n const previousScreen = state.previousScreen || 'home';\n return {\n currentScreen: previousScreen,\n previousScreen: state.history[state.history.length - 3] || null,\n history: state.history.slice(0, -1),\n };\n}\n\n/**\n * Get screen from key press\n */\nexport function getScreenFromKey(key: string): Screen | undefined {\n return NAV_KEYS[key];\n}\n\n/**\n * Check if a key is a navigation key\n */\nexport function isNavKey(key: string): boolean {\n return key in NAV_KEYS;\n}\n\nexport { NAV_KEYS };\n","/**\n * Skills state management for SkillKit TUI\n */\nimport { findAllSkills, evaluateSkillDirectory, getQualityGrade } from '@skillkit/core';\nimport { rmSync } from 'node:fs';\nimport { resolve, normalize } from 'node:path';\nimport { getSearchDirs } from '../utils/helpers.js';\nimport type { SkillItem } from './types.js';\nimport type { AgentType } from '@skillkit/core';\n\n/**\n * Skills store state\n */\nexport interface SkillsState {\n skills: SkillItem[];\n loading: boolean;\n error: string | null;\n}\n\n/**\n * Create initial skills state\n */\nexport function createSkillsState(): SkillsState {\n return {\n skills: [],\n loading: true,\n error: null,\n };\n}\n\n/**\n * Load installed skills\n * @param agentType - Optional agent type to load skills for\n * @returns Updated skills state\n */\nexport function loadSkills(agentType?: AgentType): SkillsState {\n try {\n const searchDirs = getSearchDirs(agentType);\n const foundSkills = findAllSkills(searchDirs);\n\n const skillItems: SkillItem[] = foundSkills.map((s) => {\n const quality = evaluateSkillDirectory(s.path);\n return {\n name: s.name,\n description: s.description,\n source: s.metadata?.source,\n enabled: s.enabled,\n quality: quality?.overall,\n grade: quality ? getQualityGrade(quality.overall) : undefined,\n warnings: quality?.warnings.length,\n };\n });\n\n return {\n skills: skillItems,\n loading: false,\n error: null,\n };\n } catch (err) {\n return {\n skills: [],\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load skills',\n };\n }\n}\n\n/**\n * Remove a skill by name\n * @param skillName - Name of the skill to remove\n * @param agentType - Optional agent type\n * @returns true if removed, false otherwise\n */\nexport function removeSkill(skillName: string, agentType?: AgentType): boolean {\n try {\n const searchDirs = getSearchDirs(agentType);\n const allSkills = findAllSkills(searchDirs);\n const skill = allSkills.find((s) => s.name === skillName);\n\n if (skill) {\n const normalizedPath = normalize(resolve(skill.path));\n const isWithinSearchDirs = searchDirs.some((dir) => {\n const normalizedDir = normalize(resolve(dir));\n return normalizedPath.startsWith(normalizedDir + '/') || normalizedPath === normalizedDir;\n });\n\n if (!isWithinSearchDirs) {\n return false;\n }\n\n rmSync(skill.path, { recursive: true, force: true });\n return true;\n }\n return false;\n } catch {\n return false;\n }\n}\n\n/**\n * Filter skills by search query\n */\nexport function filterSkills(skills: SkillItem[], query: string): SkillItem[] {\n if (!query.trim()) return skills;\n\n const lowerQuery = query.toLowerCase();\n return skills.filter(\n (s) =>\n s.name.toLowerCase().includes(lowerQuery) ||\n s.description?.toLowerCase().includes(lowerQuery) ||\n s.source?.toLowerCase().includes(lowerQuery)\n );\n}\n","/**\n * Agent state management for SkillKit TUI\n */\nimport { loadConfig } from '@skillkit/core';\nimport { detectAgent, getAdapter, getAllAdapters } from '@skillkit/agents';\nimport type { AgentType } from '@skillkit/core';\n\n/**\n * Agent status information\n */\nexport interface AgentStatus {\n type: AgentType;\n name: string;\n detected: boolean;\n configured: boolean;\n}\n\n/**\n * Agents state\n */\nexport interface AgentsState {\n agents: AgentStatus[];\n currentAgent: AgentType;\n loading: boolean;\n error: string | null;\n}\n\n/**\n * Create initial agents state\n */\nexport function createAgentsState(): AgentsState {\n return {\n agents: [],\n currentAgent: 'universal',\n loading: true,\n error: null,\n };\n}\n\n/**\n * Load all agents with their detection status\n */\nexport async function loadAgents(): Promise<AgentsState> {\n try {\n const config = loadConfig();\n const currentAgent = config.agent || 'universal';\n const detectedAgent = await detectAgent();\n const allAdapters = getAllAdapters();\n\n const agents: AgentStatus[] = allAdapters.map((adapter) => ({\n type: adapter.type,\n name: adapter.name,\n detected: adapter.type === detectedAgent,\n configured: adapter.type === currentAgent,\n }));\n\n return {\n agents,\n currentAgent,\n loading: false,\n error: null,\n };\n } catch (err) {\n return {\n agents: [],\n currentAgent: 'universal',\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load agents',\n };\n }\n}\n\n/**\n * Get count of detected agents\n */\nexport function getDetectedAgentCount(state: AgentsState): number {\n return state.agents.filter((a) => a.detected).length;\n}\n\n/**\n * Get list of detected agents\n */\nexport function getDetectedAgents(state: AgentsState): AgentStatus[] {\n return state.agents.filter((a) => a.detected);\n}\n\n/**\n * Get agent adapter by type\n */\nexport function getAgentAdapter(type: AgentType) {\n return getAdapter(type);\n}\n\n/**\n * Total number of supported agents (derived from adapters)\n */\nexport const TOTAL_AGENTS = getAllAdapters().length;\n","/**\n * Marketplace state management for SkillKit TUI\n */\nimport { detectProvider, loadConfig, extractFrontmatter } from '@skillkit/core';\nimport { readFileSync, existsSync, rmSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { SkillItem, RepoInfo, FetchedSkill } from './types.js';\n\n/**\n * Default repos loaded from marketplace/sources.json (single source of truth)\n * Import at runtime to allow updates without code changes\n */\nimport sourcesData from '../../../../marketplace/sources.json' with { type: 'json' };\n\nexport const DEFAULT_REPOS: RepoInfo[] = sourcesData.sources.map((s: { source: string; name: string }) => ({\n source: s.source,\n name: s.name,\n}));\n\n/**\n * Marketplace state\n */\nexport interface MarketplaceState {\n allSkills: FetchedSkill[];\n filteredSkills: FetchedSkill[];\n loading: boolean;\n error: string | null;\n currentRepo: string | null;\n fetchedRepos: Set<string>;\n failedRepos: string[];\n repos: RepoInfo[];\n}\n\n/**\n * Get marketplace repos from config or use defaults\n */\nexport function getMarketplaceRepos(): RepoInfo[] {\n try {\n const config = loadConfig();\n if (config.marketplaceSources?.length) {\n const configRepos: RepoInfo[] = config.marketplaceSources.map((source) => ({\n source,\n name: source.split('/').pop() || source,\n }));\n const existingSources = new Set(configRepos.map((r) => r.source));\n for (const repo of DEFAULT_REPOS) {\n if (!existingSources.has(repo.source)) {\n configRepos.push(repo);\n }\n }\n return configRepos;\n }\n } catch {\n // Config load failed, use defaults\n }\n return DEFAULT_REPOS;\n}\n\n/**\n * Create initial marketplace state\n */\nexport function createMarketplaceState(): MarketplaceState {\n return {\n allSkills: [],\n filteredSkills: [],\n loading: false,\n error: null,\n currentRepo: null,\n fetchedRepos: new Set(),\n failedRepos: [],\n repos: getMarketplaceRepos(),\n };\n}\n\n/**\n * Try to read skill description from frontmatter\n */\nexport function readSkillDescription(skillPath: string): string | undefined {\n const skillMdPath = join(skillPath, 'SKILL.md');\n if (!existsSync(skillMdPath)) {\n return undefined;\n }\n try {\n const content = readFileSync(skillMdPath, 'utf-8');\n const frontmatter = extractFrontmatter(content);\n if (frontmatter && typeof frontmatter.description === 'string') {\n return frontmatter.description;\n }\n } catch {\n // Failed to read, return undefined\n }\n return undefined;\n}\n\n/**\n * Fetch skills from a single repository\n */\nexport async function fetchRepoSkills(\n source: string,\n repos: RepoInfo[]\n): Promise<{\n skills: FetchedSkill[];\n tempRoot?: string;\n error?: string;\n}> {\n try {\n const provider = detectProvider(source);\n if (!provider) {\n return { skills: [], error: `Could not detect provider for: ${source}` };\n }\n\n const result = await provider.clone(source, '', { depth: 1 });\n\n if (!result.success || !result.discoveredSkills) {\n return { skills: [], error: result.error || 'Failed to fetch skills' };\n }\n\n const repoName = repos.find((r) => r.source === source)?.name || source;\n const skills: FetchedSkill[] = result.discoveredSkills.map((skill) => ({\n name: skill.name,\n source: source,\n repoName: repoName,\n description: readSkillDescription(skill.path),\n }));\n\n return { skills, tempRoot: result.tempRoot };\n } catch (err) {\n return {\n skills: [],\n error: err instanceof Error ? err.message : 'Failed to fetch repository',\n };\n }\n}\n\n/**\n * Clean up temp directory from fetch\n */\nexport function cleanupTempRoot(tempRoot: string): void {\n try {\n rmSync(tempRoot, { recursive: true, force: true });\n } catch {\n // Ignore cleanup errors\n }\n}\n\n/**\n * Filter skills by search query\n */\nexport function filterMarketplaceSkills(\n skills: FetchedSkill[],\n query: string\n): FetchedSkill[] {\n if (!query.trim()) return skills;\n\n const lowerQuery = query.toLowerCase();\n return skills.filter(\n (s) =>\n s.name.toLowerCase().includes(lowerQuery) ||\n s.source.toLowerCase().includes(lowerQuery) ||\n s.repoName.toLowerCase().includes(lowerQuery) ||\n s.description?.toLowerCase().includes(lowerQuery)\n );\n}\n\n/**\n * Convert fetched skills to skill items for display\n */\nexport function toSkillItems(skills: FetchedSkill[]): SkillItem[] {\n return skills.map((s) => ({\n name: s.name,\n description: s.description || s.repoName,\n source: s.source,\n }));\n}\n\n/**\n * Sort skills alphabetically by name\n */\nexport function sortSkillsByName(skills: FetchedSkill[]): FetchedSkill[] {\n return [...skills].sort((a, b) => a.name.localeCompare(b.name));\n}\n","{\n \"$schema\": \"./sources-schema.json\",\n \"version\": 1,\n \"updatedAt\": \"2026-01-26\",\n \"description\": \"Curated skill repository sources - THE SINGLE SOURCE OF TRUTH\",\n \"sources\": [\n { \"source\": \"anthropics/skills\", \"name\": \"Anthropic Official\", \"official\": true },\n { \"source\": \"vercel-labs/agent-skills\", \"name\": \"Vercel Labs\", \"official\": true },\n { \"source\": \"expo/skills\", \"name\": \"Expo / React Native\", \"official\": true },\n { \"source\": \"remotion-dev/skills\", \"name\": \"Remotion Video\", \"official\": true },\n { \"source\": \"supabase/agent-skills\", \"name\": \"Supabase\", \"official\": true },\n { \"source\": \"stripe/ai\", \"name\": \"Stripe Payments\", \"official\": true },\n { \"source\": \"ComposioHQ/awesome-claude-skills\", \"name\": \"Composio Awesome\" },\n { \"source\": \"travisvn/awesome-claude-skills\", \"name\": \"Travis Awesome\" },\n { \"source\": \"mhattingpete/claude-skills-marketplace\", \"name\": \"Skills Marketplace\" },\n { \"source\": \"coreyhaines31/marketingskills\", \"name\": \"Marketing Skills\" },\n { \"source\": \"obra/superpowers\", \"name\": \"Superpowers TDD\" },\n { \"source\": \"softaworks/agent-toolkit\", \"name\": \"Softaworks Toolkit\" },\n { \"source\": \"wshobson/agents\", \"name\": \"Dev Patterns\" },\n { \"source\": \"langgenius/dify\", \"name\": \"Dify Frontend\" },\n { \"source\": \"trailofbits/skills\", \"name\": \"Trail of Bits Security\" },\n { \"source\": \"better-auth/skills\", \"name\": \"Better Auth\" },\n { \"source\": \"onmax/nuxt-skills\", \"name\": \"Nuxt / Vue\" },\n { \"source\": \"hyf0/vue-skills\", \"name\": \"Vue Best Practices\" },\n { \"source\": \"jezweb/claude-skills\", \"name\": \"Cloudflare / TanStack\" },\n { \"source\": \"elysiajs/skills\", \"name\": \"ElysiaJS / Bun\" },\n { \"source\": \"kadajett/agent-nestjs-skills\", \"name\": \"NestJS\" },\n { \"source\": \"callstackincubator/agent-skills\", \"name\": \"React Native\" },\n { \"source\": \"cloudai-x/threejs-skills\", \"name\": \"Three.js\" },\n { \"source\": \"emalorenzo/three-agent-skills\", \"name\": \"Three.js Advanced\" },\n { \"source\": \"dimillian/skills\", \"name\": \"SwiftUI iOS\" },\n { \"source\": \"waynesutton/convexskills\", \"name\": \"Convex Backend\" },\n { \"source\": \"kepano/obsidian-skills\", \"name\": \"Obsidian Notes\" },\n { \"source\": \"jimliu/baoyu-skills\", \"name\": \"Baoyu Tools\" },\n { \"source\": \"giuseppe-trisciuoglio/developer-kit\", \"name\": \"Shadcn / Radix\" },\n { \"source\": \"openrouterteam/agent-skills\", \"name\": \"OpenRouter SDK\" },\n { \"source\": \"intellectronica/agent-skills\", \"name\": \"Context7\" }\n ]\n}\n","import { useState, useEffect, useMemo, useCallback } from 'react';\nimport { useKeyboard } from '@opentui/react';\nimport { type Screen, DEFAULT_REPOS } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface BrowseProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Browse({ onNavigate, cols = 80, rows = 24 }: BrowseProps) {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [searchQuery, setSearchQuery] = useState('');\n const [searchMode, setSearchMode] = useState(false);\n const [animPhase, setAnimPhase] = useState(0);\n\n const isCompact = cols < 60;\n const contentWidth = Math.max(1, Math.min(cols - 4, 60));\n\n // Entrance animation\n useEffect(() => {\n if (animPhase >= 2) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n return () => clearTimeout(timer);\n }, [animPhase]);\n\n const repos = useMemo(() =>\n DEFAULT_REPOS.map((r) => ({\n name: r.name,\n source: r.source,\n })),\n []\n );\n\n const filteredRepos = useMemo(() =>\n searchQuery\n ? repos.filter(\n (r) =>\n r.name.toLowerCase().includes(searchQuery.toLowerCase()) ||\n r.source.toLowerCase().includes(searchQuery.toLowerCase())\n )\n : repos,\n [repos, searchQuery]\n );\n\n const handleKeyNav = useCallback((delta: number) => {\n setSelectedIndex(prev => Math.max(0, Math.min(prev + delta, filteredRepos.length - 1)));\n }, [filteredRepos.length]);\n\n useKeyboard((key: { name?: string; sequence?: string }) => {\n if (searchMode) {\n if (key.name === 'escape') {\n setSearchMode(false);\n } else if (key.name === 'backspace') {\n setSearchQuery(prev => prev.slice(0, -1));\n } else if (key.name === 'return') {\n setSearchMode(false);\n } else if (key.sequence && key.sequence.length === 1 && /[a-zA-Z0-9\\-_.]/.test(key.sequence)) {\n setSearchQuery(prev => prev + key.sequence);\n setSelectedIndex(0);\n }\n return;\n }\n\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.sequence === '/') setSearchMode(true);\n else if (key.name === 'return') {\n const repo = filteredRepos[selectedIndex];\n if (repo) {\n // Open/view the selected repo (navigate to installed to see skills from this repo)\n onNavigate('installed');\n }\n }\n else if (key.name === 'escape') onNavigate('home');\n });\n\n useEffect(() => {\n if (selectedIndex >= filteredRepos.length && filteredRepos.length > 0) {\n setSelectedIndex(filteredRepos.length - 1);\n }\n }, [filteredRepos.length, selectedIndex]);\n\n // Calculate visible repos\n const maxVisible = Math.max(5, rows - 10);\n const startIdx = Math.max(0, Math.min(selectedIndex - Math.floor(maxVisible / 2), filteredRepos.length - maxVisible));\n const visibleRepos = filteredRepos.slice(startIdx, startIdx + maxVisible);\n\n const divider = useMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth)}</text>,\n [contentWidth]\n );\n\n const shortcuts = isCompact\n ? 'j/k nav enter open / search esc back'\n : 'j/k navigate enter open / search esc back';\n\n return (\n <box flexDirection=\"column\" padding={1}>\n {/* Header */}\n {animPhase >= 1 && (\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth}>\n <text fg={terminalColors.browse}>⌕ Browse</text>\n <text fg={terminalColors.textMuted}>{filteredRepos.length} repos</text>\n </box>\n <text fg={terminalColors.textMuted}>explore skill repositories</text>\n <text> </text>\n </box>\n )}\n\n {/* Search */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {divider}\n <text> </text>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>/ </text>\n <text fg={searchQuery ? terminalColors.text : terminalColors.textMuted}>\n {searchQuery || 'type to filter...'}\n </text>\n </box>\n <text> </text>\n {divider}\n <text> </text>\n </box>\n )}\n\n {/* Repository list */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Repositories</text>\n <text> </text>\n\n {filteredRepos.length === 0 ? (\n <text fg={terminalColors.textMuted}>No repositories match your search</text>\n ) : (\n <box flexDirection=\"column\">\n {visibleRepos.map((repo, idx) => {\n const actualIdx = startIdx + idx;\n const selected = actualIdx === selectedIndex;\n const indicator = selected ? '▸' : ' ';\n // Truncate source if needed - clamp to avoid negative slicing\n const maxSourceLen = Math.max(0, contentWidth - repo.name.length - 6);\n const displaySource = maxSourceLen > 3 && repo.source.length > maxSourceLen\n ? repo.source.slice(0, maxSourceLen - 3) + '...'\n : repo.source;\n // Use single text element to avoid rendering overlap issues\n const line = `${indicator}${repo.name} · ${displaySource}`;\n return (\n <text key={repo.source} fg={selected ? terminalColors.accent : terminalColors.text}>\n {line}\n </text>\n );\n })}\n </box>\n )}\n\n {/* Scroll indicator */}\n {filteredRepos.length > maxVisible && (\n <text fg={terminalColors.textMuted}>\n {'\\n'}showing {startIdx + 1}-{Math.min(startIdx + maxVisible, filteredRepos.length)} of {filteredRepos.length}\n </text>\n )}\n <text> </text>\n </box>\n )}\n\n {/* Footer */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {divider}\n <text fg={terminalColors.textMuted}>{shortcuts}</text>\n </box>\n )}\n </box>\n );\n}\n","import { useState, useEffect, useMemo, useCallback } from 'react';\nimport { useKeyboard } from '@opentui/react';\nimport { type Screen, loadSkills, filterSkills } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface InstalledProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst SPINNER = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n\nexport function Installed({ onNavigate, cols = 80, rows = 24 }: InstalledProps) {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [searchQuery, setSearchQuery] = useState('');\n const [searchMode, setSearchMode] = useState(false);\n const [animPhase, setAnimPhase] = useState(0);\n const [spinnerFrame, setSpinnerFrame] = useState(0);\n const [skills, setSkills] = useState<ReturnType<typeof loadSkills>>({\n skills: [],\n loading: true,\n error: null,\n });\n\n const isCompact = cols < 60;\n const contentWidth = Math.max(1, Math.min(cols - 4, 60));\n\n // Entrance animation\n useEffect(() => {\n if (animPhase >= 2) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n return () => clearTimeout(timer);\n }, [animPhase]);\n\n // Loading spinner\n useEffect(() => {\n if (!skills.loading) return;\n const interval = setInterval(() => {\n setSpinnerFrame(f => (f + 1) % SPINNER.length);\n }, 80);\n return () => clearInterval(interval);\n }, [skills.loading]);\n\n // Load skills\n useEffect(() => {\n const data = loadSkills();\n setSkills(data);\n }, []);\n\n const filteredSkills = useMemo(() =>\n filterSkills(skills.skills, searchQuery),\n [skills.skills, searchQuery]\n );\n\n const handleKeyNav = useCallback((delta: number) => {\n setSelectedIndex(prev => Math.max(0, Math.min(prev + delta, filteredSkills.length - 1)));\n }, [filteredSkills.length]);\n\n const handleToggle = useCallback(() => {\n if (filteredSkills.length === 0) return;\n const skill = filteredSkills[selectedIndex];\n if (skill) {\n setSkills(prev => ({\n ...prev,\n skills: prev.skills.map(s =>\n s.name === skill.name ? { ...s, enabled: s.enabled === false } : s\n ),\n }));\n }\n }, [filteredSkills, selectedIndex]);\n\n const handleKeyboard = useCallback((key: { name?: string; sequence?: string }) => {\n if (searchMode) {\n if (key.name === 'escape') {\n setSearchMode(false);\n } else if (key.name === 'backspace') {\n setSearchQuery(prev => prev.slice(0, -1));\n } else if (key.name === 'return') {\n setSearchMode(false);\n } else if (key.sequence && key.sequence.length === 1 && /[a-zA-Z0-9\\-_.]/.test(key.sequence)) {\n setSearchQuery(prev => prev + key.sequence);\n setSelectedIndex(0);\n }\n return;\n }\n\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.sequence === '/') setSearchMode(true);\n else if (key.name === 'return') handleToggle();\n else if (key.name === 'd') handleToggle();\n else if (key.name === 'escape') onNavigate('home');\n }, [searchMode, handleKeyNav, handleToggle, onNavigate]);\n\n useKeyboard(handleKeyboard);\n\n useEffect(() => {\n if (selectedIndex >= filteredSkills.length && filteredSkills.length > 0) {\n setSelectedIndex(filteredSkills.length - 1);\n }\n }, [filteredSkills.length, selectedIndex]);\n\n // Calculate visible items\n const maxVisible = Math.max(5, rows - 10);\n const startIdx = Math.max(0, Math.min(selectedIndex - Math.floor(maxVisible / 2), filteredSkills.length - maxVisible));\n const visibleSkills = filteredSkills.slice(startIdx, startIdx + maxVisible);\n\n const divider = useMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth)}</text>,\n [contentWidth]\n );\n\n // Stats\n const enabledCount = skills.skills.filter(s => s.enabled !== false).length;\n const totalCount = skills.skills.length;\n\n const shortcuts = isCompact\n ? 'j/k nav enter toggle d disable esc back'\n : 'j/k navigate enter toggle d disable esc back';\n\n return (\n <box flexDirection=\"column\" padding={1}>\n {/* Header */}\n {animPhase >= 1 && (\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth}>\n <text fg={terminalColors.success}>✓ Installed</text>\n <text fg={terminalColors.textMuted}>{enabledCount}/{totalCount} active</text>\n </box>\n <text fg={terminalColors.textMuted}>manage your skills</text>\n <text> </text>\n </box>\n )}\n\n {/* Search */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {divider}\n <text> </text>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>/ </text>\n <text fg={searchQuery ? terminalColors.text : terminalColors.textMuted}>\n {searchQuery || 'type to filter...'}\n </text>\n </box>\n <text> </text>\n {divider}\n <text> </text>\n </box>\n )}\n\n {/* Skills list */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {skills.loading ? (\n <box flexDirection=\"row\">\n <text fg={terminalColors.accent}>{SPINNER[spinnerFrame]} </text>\n <text fg={terminalColors.text}>Loading skills...</text>\n </box>\n ) : skills.error ? (\n <box flexDirection=\"column\">\n <text fg={terminalColors.error}>✗ Error loading skills</text>\n <text fg={terminalColors.textMuted}>{skills.error}</text>\n </box>\n ) : filteredSkills.length === 0 ? (\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>\n {skills.skills.length === 0\n ? 'No skills installed yet'\n : 'No skills match your search'}\n </text>\n {skills.skills.length === 0 && (\n <>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Press 'b' to browse or 'm' for marketplace\n </text>\n </>\n )}\n </box>\n ) : (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Skills</text>\n <text> </text>\n {visibleSkills.map((skill, idx) => {\n const actualIdx = startIdx + idx;\n const selected = actualIdx === selectedIndex;\n const indicator = selected ? '▸' : ' ';\n const statusIcon = skill.enabled !== false ? '●' : '○';\n const qualityBadge = skill.grade ? ` [${skill.grade}]` : '';\n const warningIndicator = skill.warnings && skill.warnings > 2 ? ' ⚠' : '';\n const line = `${indicator}${statusIcon} ${skill.name}${qualityBadge}${warningIndicator}`;\n const badgeColor = skill.quality !== undefined\n ? (skill.quality >= 80 ? terminalColors.success : skill.quality >= 60 ? terminalColors.warning : terminalColors.error)\n : terminalColors.text;\n return (\n <text key={skill.name} fg={selected ? terminalColors.accent : badgeColor}>\n {line}\n </text>\n );\n })}\n\n {/* Scroll indicator */}\n {filteredSkills.length > maxVisible && (\n <text fg={terminalColors.textMuted}>\n {'\\n'}showing {startIdx + 1}-{Math.min(startIdx + maxVisible, filteredSkills.length)} of {filteredSkills.length}\n </text>\n )}\n </box>\n )}\n <text> </text>\n </box>\n )}\n\n {/* Footer */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {divider}\n <text fg={terminalColors.textMuted}>{shortcuts}</text>\n </box>\n )}\n </box>\n );\n}\n","import { useState, useEffect, useMemo, useCallback } from 'react';\nimport { useKeyboard } from '@opentui/react';\nimport { type Screen, DEFAULT_REPOS } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface MarketplaceProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst CATEGORIES = [\n { name: 'Development', count: 24 },\n { name: 'Testing', count: 18 },\n { name: 'DevOps', count: 15 },\n { name: 'Security', count: 12 },\n];\n\nexport function Marketplace({ onNavigate, cols = 80, rows = 24 }: MarketplaceProps) {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [animPhase, setAnimPhase] = useState(0);\n\n const isCompact = cols < 60;\n const contentWidth = Math.max(1, Math.min(cols - 4, 60));\n\n // Entrance animation\n useEffect(() => {\n if (animPhase >= 3) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n return () => clearTimeout(timer);\n }, [animPhase]);\n\n // Featured repos\n const featured = useMemo(() =>\n DEFAULT_REPOS.slice(0, 5).map((r, i) => ({\n name: r.name,\n stars: Math.floor(100 - i * 15),\n source: r.source,\n })),\n []\n );\n\n const maxVisible = Math.max(3, Math.floor((rows - 14) / 1));\n const visibleFeatured = featured.slice(0, maxVisible);\n\n const handleKeyNav = useCallback((delta: number) => {\n setSelectedIndex(prev => Math.max(0, Math.min(prev + delta, visibleFeatured.length - 1)));\n }, [visibleFeatured.length]);\n\n const handleInstall = useCallback(() => {\n const item = visibleFeatured[selectedIndex];\n if (item) {\n // Navigate to installed after \"installing\"\n onNavigate('installed');\n }\n }, [selectedIndex, visibleFeatured, onNavigate]);\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleInstall();\n else if (key.name === 'b') onNavigate('browse');\n else if (key.name === 'escape') onNavigate('home');\n });\n\n const divider = useMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth)}</text>,\n [contentWidth]\n );\n\n const shortcuts = isCompact\n ? 'j/k nav enter install b browse esc back'\n : 'j/k navigate enter install b full browse esc back';\n\n return (\n <box flexDirection=\"column\" padding={1}>\n {/* Header */}\n {animPhase >= 1 && (\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth}>\n <text fg={terminalColors.recommend}>★ Marketplace</text>\n <text fg={terminalColors.textMuted}>{DEFAULT_REPOS.length} available</text>\n </box>\n <text fg={terminalColors.textMuted}>discover featured skills</text>\n <text> </text>\n </box>\n )}\n\n {/* Categories */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {divider}\n <text> </text>\n <text fg={terminalColors.text}>Categories</text>\n <text> </text>\n <box flexDirection=\"row\" gap={2}>\n {CATEGORIES.map(cat => (\n <text key={cat.name} fg={terminalColors.textMuted}>\n {cat.name} ({cat.count})\n </text>\n ))}\n </box>\n <text> </text>\n {divider}\n <text> </text>\n </box>\n )}\n\n {/* Featured section */}\n {animPhase >= 3 && (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Featured · <text fg={terminalColors.textMuted}>trending</text></text>\n <text> </text>\n\n {visibleFeatured.map((item, idx) => {\n const selected = idx === selectedIndex;\n const indicator = selected ? '▸' : ' ';\n // Use single text element to avoid rendering overlap\n const line = `${indicator}${item.name} ★${item.stars}`;\n return (\n <text key={item.source} fg={selected ? terminalColors.accent : terminalColors.text}>\n {line}\n </text>\n );\n })}\n\n {featured.length > maxVisible && (\n <text fg={terminalColors.textMuted}>\n {'\\n'}+{featured.length - maxVisible} more\n </text>\n )}\n <text> </text>\n </box>\n )}\n\n {/* Footer */}\n {animPhase >= 3 && (\n <box flexDirection=\"column\">\n {divider}\n <text fg={terminalColors.textMuted}>{shortcuts}</text>\n </box>\n )}\n </box>\n );\n}\n","import { useState, useEffect, useMemo, useCallback } from 'react';\nimport { useKeyboard } from '@opentui/react';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface RecommendProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst SPINNER = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n\nexport function Recommend({ onNavigate, cols = 80, rows = 24 }: RecommendProps) {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [analyzing, setAnalyzing] = useState(true);\n const [spinnerFrame, setSpinnerFrame] = useState(0);\n const [animPhase, setAnimPhase] = useState(0);\n const [analysisProgress, setAnalysisProgress] = useState(0);\n\n const isCompact = cols < 60;\n const contentWidth = Math.max(1, Math.min(cols - 4, 60));\n\n useEffect(() => {\n if (animPhase >= 3) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n return () => clearTimeout(timer);\n }, [animPhase]);\n\n useEffect(() => {\n if (!analyzing) return;\n const interval = setInterval(() => {\n setSpinnerFrame(f => (f + 1) % SPINNER.length);\n }, 80);\n return () => clearInterval(interval);\n }, [analyzing]);\n\n // Simulate analysis\n useEffect(() => {\n if (!analyzing) return;\n const interval = setInterval(() => {\n setAnalysisProgress(p => {\n if (p >= 100) {\n setAnalyzing(false);\n return 100;\n }\n return p + Math.random() * 15 + 5;\n });\n }, 200);\n return () => clearInterval(interval);\n }, [analyzing]);\n\n // Recommendations data (with quality scores)\n const recommendations = useMemo(() => [\n { name: 'tdd-workflow', reason: 'Based on your test files and coverage patterns', confidence: 95, quality: 92, grade: 'A' },\n { name: 'react-patterns', reason: 'Detected React in package.json with hooks usage', confidence: 88, quality: 85, grade: 'B' },\n { name: 'typescript-strict', reason: 'tsconfig.json found with strict mode disabled', confidence: 82, quality: 78, grade: 'C' },\n { name: 'git-workflow', reason: '.git directory with complex branching detected', confidence: 75, quality: 82, grade: 'B' },\n { name: 'api-design', reason: 'REST endpoints found in your codebase', confidence: 68, quality: 71, grade: 'C' },\n { name: 'docker-compose', reason: 'docker-compose.yml detected for orchestration', confidence: 62, quality: 65, grade: 'D' },\n ], []);\n\n const maxVisible = Math.max(3, Math.floor((rows - 10) / 2));\n const visibleRecs = recommendations.slice(0, maxVisible);\n\n const handleKeyNav = useCallback((delta: number) => {\n setSelectedIndex(prev => Math.max(0, Math.min(prev + delta, visibleRecs.length - 1)));\n }, [visibleRecs.length]);\n\n const handleRefresh = useCallback(() => {\n setAnalyzing(true);\n setAnalysisProgress(0);\n setSelectedIndex(0);\n }, []);\n\n const handleInstall = useCallback(() => {\n if (analyzing) return;\n const rec = visibleRecs[selectedIndex];\n if (rec) {\n // Navigate to installed after \"installing\"\n onNavigate('installed');\n }\n }, [analyzing, selectedIndex, visibleRecs, onNavigate]);\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleInstall();\n else if (key.name === 'r') handleRefresh();\n else if (key.name === 'escape') onNavigate('home');\n });\n\n const divider = useMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth)}</text>,\n [contentWidth]\n );\n\n // Confidence color\n const getConfColor = (conf: number) => {\n if (conf >= 80) return terminalColors.success;\n if (conf >= 60) return terminalColors.recommend;\n return terminalColors.textMuted;\n };\n\n const shortcuts = isCompact\n ? 'j/k nav enter install r refresh esc back'\n : 'j/k navigate enter install r refresh esc back';\n\n return (\n <box flexDirection=\"column\" padding={1}>\n {/* Header */}\n {animPhase >= 1 && (\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth}>\n <text fg={terminalColors.recommend}>◎ Recommendations</text>\n <text fg={terminalColors.textMuted}>\n {analyzing ? 'analyzing...' : `${recommendations.length} found`}\n </text>\n </box>\n <text fg={terminalColors.textMuted}>AI skill suggestions</text>\n <text> </text>\n </box>\n )}\n\n {/* Analysis progress */}\n {animPhase >= 2 && analyzing && (\n <box flexDirection=\"column\">\n {divider}\n <text> </text>\n <box flexDirection=\"row\">\n <text fg={terminalColors.accent}>{SPINNER[spinnerFrame]} </text>\n <text fg={terminalColors.text}>Analyzing</text>\n <text fg={terminalColors.textMuted}> your project...</text>\n </box>\n <text> </text>\n {divider}\n <text> </text>\n </box>\n )}\n\n {/* Results summary */}\n {animPhase >= 2 && !analyzing && (\n <box flexDirection=\"column\">\n {divider}\n <text> </text>\n <box flexDirection=\"row\">\n <text fg={terminalColors.success}>✓ </text>\n <text fg={terminalColors.text}>Analysis complete</text>\n <text fg={terminalColors.textMuted}> · found {recommendations.length} matching skills</text>\n </box>\n <text> </text>\n {divider}\n <text> </text>\n </box>\n )}\n\n {/* Recommendations list */}\n {animPhase >= 3 && !analyzing && (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Suggested Skills</text>\n <text> </text>\n\n {visibleRecs.map((rec, idx) => {\n const selected = idx === selectedIndex;\n const indicator = selected ? '▸' : ' ';\n const qualityColor = rec.quality >= 80 ? terminalColors.success : rec.quality >= 60 ? terminalColors.warning : terminalColors.error;\n return (\n <box key={rec.name} flexDirection=\"column\">\n <box flexDirection=\"row\">\n <text fg={terminalColors.text}>{indicator}</text>\n <text fg={selected ? terminalColors.accent : terminalColors.text}>\n {rec.name}\n </text>\n <text fg={getConfColor(rec.confidence)}> {rec.confidence}%</text>\n <text fg={qualityColor}> [{rec.grade}]</text>\n </box>\n <text fg={terminalColors.textMuted}> {rec.reason}</text>\n <text> </text>\n </box>\n );\n })}\n\n {recommendations.length > maxVisible && (\n <text fg={terminalColors.textMuted}>\n +{recommendations.length - maxVisible} more\n </text>\n )}\n <text> </text>\n </box>\n )}\n\n {/* Footer */}\n {animPhase >= 3 && (\n <box flexDirection=\"column\">\n {divider}\n <text fg={terminalColors.textMuted}>{shortcuts}</text>\n </box>\n )}\n </box>\n );\n}\n","/**\n * Translate Screen\n * Skill format conversion with diff view\n */\nimport { useState } from 'react';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { AGENT_LOGOS } from '../theme/symbols.js';\nimport { Header } from '../components/Header.js';\n\ninterface TranslateProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Translate(_props: TranslateProps) {\n const [sourceAgent] = useState('claude-code');\n const [targetAgent] = useState('cursor');\n\n const sourceInfo = AGENT_LOGOS[sourceAgent];\n const targetInfo = AGENT_LOGOS[targetAgent];\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Translate Skills\"\n subtitle=\"Convert skills between agent formats\"\n icon=\"⇄\"\n />\n\n <box flexDirection=\"row\" marginTop={1} marginBottom={1}>\n <box flexDirection=\"column\" width={25}>\n <text fg={terminalColors.textMuted}>Source Agent</text>\n <text fg={terminalColors.accent}>\n <b>{sourceInfo?.icon} {sourceInfo?.name}</b>\n </text>\n </box>\n <text fg={terminalColors.textMuted}> → </text>\n <box flexDirection=\"column\" width={25}>\n <text fg={terminalColors.textMuted}>Target Agent</text>\n <text fg={terminalColors.text}>\n <b>{targetInfo?.icon} {targetInfo?.name}</b>\n </text>\n </box>\n </box>\n\n <text fg={terminalColors.textMuted}>\n {'\\u2500'.repeat(50)}\n </text>\n <text> </text>\n\n <text fg={terminalColors.text}><b>Select a skill to translate:</b></text>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n No skills selected. Press 'i' to view installed skills.\n </text>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Use Tab to switch agents, Enter to translate\n </text>\n </box>\n );\n}\n","/**\n * Header Component\n * Screen header with title and optional badge/count\n */\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\n\ninterface HeaderProps {\n title: string;\n subtitle?: string;\n count?: number;\n badge?: string;\n icon?: string;\n}\n\nexport function Header({ title, subtitle, count, badge, icon }: HeaderProps) {\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\" gap={2}>\n <text fg={terminalColors.text}>\n <b>{icon && `${icon} `}{title}</b>\n </text>\n {count !== undefined && (\n <text fg={terminalColors.textMuted}>({count})</text>\n )}\n {badge && (\n <text fg={terminalColors.accent}>[{badge}]</text>\n )}\n </box>\n {subtitle && (\n <text fg={terminalColors.textSecondary}>{subtitle}</text>\n )}\n </box>\n );\n}\n","/**\n * Context Screen\n * Project context analysis\n */\nimport { useState, useEffect } from 'react';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\n\ninterface ContextProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Context({ onNavigate, cols = 80, rows = 24 }: ContextProps) {\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n const timer = setTimeout(() => setLoading(false), 500);\n return () => clearTimeout(timer);\n }, []);\n\n const contextInfo = [\n { label: 'Working Directory', value: process.cwd() },\n { label: 'Node Version', value: process.version },\n { label: 'Platform', value: process.platform },\n { label: 'Architecture', value: process.arch },\n ];\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Project Context\"\n subtitle=\"Analyze your project environment\"\n icon=\"◉\"\n />\n\n {loading ? (\n <Spinner label=\"Analyzing project context...\" />\n ) : (\n <box flexDirection=\"column\">\n {contextInfo.map((info) => (\n <box key={info.label} flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={20}>\n {info.label}:\n </text>\n <text fg={terminalColors.text}>{info.value}</text>\n </box>\n ))}\n </box>\n )}\n </box>\n );\n}\n","/**\n * Spinner Component\n * Loading indicator with animated frames\n */\nimport { useState, useEffect } from 'react';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\n\ninterface SpinnerProps {\n label?: string;\n color?: keyof typeof terminalColors;\n}\n\nexport function Spinner({ label, color = 'accent' }: SpinnerProps) {\n const [frame, setFrame] = useState(0);\n\n useEffect(() => {\n const interval = setInterval(() => {\n setFrame((f) => (f + 1) % symbols.spinner.length);\n }, 80);\n return () => clearInterval(interval);\n }, []);\n\n return (\n <box flexDirection=\"row\" gap={1}>\n <text fg={terminalColors[color]}>{symbols.spinner[frame]}</text>\n {label && <text fg={terminalColors.text}>{label}</text>}\n </box>\n );\n}\n","/**\n * Sync Screen - Cross-Agent Synchronization\n * Clean monochromatic design\n */\nimport { useState, useEffect, useMemo, useCallback, useRef } from 'react';\nimport { useKeyboard } from '@opentui/react';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { AGENT_LOGOS } from '../theme/symbols.js';\n\ninterface SyncProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst SPINNER = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n\nexport function Sync({ onNavigate, cols = 80, rows = 24 }: SyncProps) {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [syncStatus, setSyncStatus] = useState<'idle' | 'syncing' | 'done'>('idle');\n const [spinnerFrame, setSpinnerFrame] = useState(0);\n const [animPhase, setAnimPhase] = useState(0);\n const syncTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const isCompact = cols < 60;\n const contentWidth = Math.max(1, Math.min(cols - 4, 60));\n\n // Cleanup timeout on unmount\n useEffect(() => {\n return () => {\n if (syncTimeoutRef.current) {\n clearTimeout(syncTimeoutRef.current);\n }\n };\n }, []);\n\n // Entrance animation\n useEffect(() => {\n if (animPhase >= 2) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n return () => clearTimeout(timer);\n }, [animPhase]);\n\n // Spinner animation\n useEffect(() => {\n if (syncStatus !== 'syncing') return;\n const interval = setInterval(() => {\n setSpinnerFrame(f => (f + 1) % SPINNER.length);\n }, 80);\n return () => clearInterval(interval);\n }, [syncStatus]);\n\n // Agents with sync data\n const agents = useMemo(() => {\n const agentTypes = ['claude-code', 'cursor', 'github-copilot', 'codex', 'gemini-cli', 'windsurf'];\n return agentTypes.slice(0, isCompact ? 4 : 6).map((type) => ({\n type,\n ...(AGENT_LOGOS[type] || { name: type, icon: '◇' }),\n synced: type === 'claude-code' || type === 'cursor',\n skillCount: type === 'claude-code' ? 12 : type === 'cursor' ? 8 : 0,\n }));\n }, [isCompact]);\n\n const syncedCount = agents.filter(a => a.synced).length;\n const totalSkills = agents.reduce((sum, a) => sum + a.skillCount, 0);\n\n const handleKeyNav = useCallback((delta: number) => {\n setSelectedIndex(prev => Math.max(0, Math.min(prev + delta, agents.length - 1)));\n }, [agents.length]);\n\n const handleSync = useCallback(() => {\n if (syncStatus === 'syncing') return;\n if (syncTimeoutRef.current) clearTimeout(syncTimeoutRef.current);\n setSyncStatus('syncing');\n syncTimeoutRef.current = setTimeout(() => setSyncStatus('done'), 1500);\n }, [syncStatus]);\n\n const handleSyncAll = useCallback(() => {\n if (syncStatus === 'syncing') return;\n if (syncTimeoutRef.current) clearTimeout(syncTimeoutRef.current);\n setSyncStatus('syncing');\n syncTimeoutRef.current = setTimeout(() => setSyncStatus('done'), 2000);\n }, [syncStatus]);\n\n // Clamp selectedIndex when agents list shrinks\n useEffect(() => {\n setSelectedIndex(prev => Math.max(0, Math.min(prev, agents.length - 1)));\n }, [agents.length]);\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleSync();\n else if (key.name === 'a') handleSyncAll();\n else if (key.name === 'escape') onNavigate('home');\n });\n\n const divider = useMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth)}</text>,\n [contentWidth]\n );\n\n const shortcuts = isCompact\n ? 'j/k nav enter sync a sync all esc back'\n : 'j/k navigate enter sync selected a sync all esc back';\n\n return (\n <box flexDirection=\"column\" padding={1}>\n {/* Header */}\n {animPhase >= 1 && (\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth}>\n <text fg={terminalColors.sync}>⇄ Sync</text>\n <text fg={terminalColors.textMuted}>{syncedCount}/{agents.length} synced</text>\n </box>\n <text fg={terminalColors.textMuted}>share skills across agents</text>\n <text> </text>\n </box>\n )}\n\n {/* Status */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {divider}\n <text> </text>\n {syncStatus === 'syncing' ? (\n <box flexDirection=\"row\">\n <text fg={terminalColors.accent}>{SPINNER[spinnerFrame]} </text>\n <text fg={terminalColors.text}>Syncing skills...</text>\n </box>\n ) : syncStatus === 'done' ? (\n <box flexDirection=\"row\">\n <text fg={terminalColors.success}>✓ </text>\n <text fg={terminalColors.text}>Sync complete</text>\n <text fg={terminalColors.textMuted}> · {totalSkills} skills synced</text>\n </box>\n ) : (\n <box flexDirection=\"row\" gap={3}>\n <text fg={terminalColors.success}>● {syncedCount} synced</text>\n <text fg={terminalColors.textMuted}>○ {agents.length - syncedCount} pending</text>\n </box>\n )}\n <text> </text>\n {divider}\n <text> </text>\n </box>\n )}\n\n {/* Agents list */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Agents</text>\n <text> </text>\n\n {agents.map((agent, idx) => {\n const selected = idx === selectedIndex;\n const indicator = selected ? '▸' : ' ';\n const statusIcon = agent.synced ? '●' : '○';\n const statusColor = agent.synced ? terminalColors.success : terminalColors.textMuted;\n return (\n <box key={agent.type} flexDirection=\"row\">\n <text fg={terminalColors.text}>{indicator}</text>\n <text fg={selected ? terminalColors.accent : terminalColors.text}>\n {agent.icon} {agent.name}\n </text>\n <text fg={statusColor}> {statusIcon}</text>\n <text fg={terminalColors.textMuted}> {agent.skillCount} skills</text>\n </box>\n );\n })}\n <text> </text>\n </box>\n )}\n\n {/* Footer */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {divider}\n <text fg={terminalColors.textMuted}>{shortcuts}</text>\n </box>\n )}\n </box>\n );\n}\n","/**\n * Memory Screen\n * Session memory management\n */\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface MemoryProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Memory({ onNavigate, cols = 80, rows = 24 }: MemoryProps) {\n const memories = [\n { key: 'project-context', size: '2.4 KB', updated: '2 min ago' },\n { key: 'user-preferences', size: '1.1 KB', updated: '5 min ago' },\n { key: 'session-history', size: '4.7 KB', updated: '1 min ago' },\n ];\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Memory\"\n subtitle=\"Manage persistent session memory\"\n count={memories.length}\n icon=\"◎\"\n />\n\n <text fg={terminalColors.text}><b>Stored Memories</b></text>\n <text> </text>\n\n {memories.map((mem, idx) => (\n <box key={mem.key} flexDirection=\"row\" marginBottom={1}>\n <text fg={idx === 0 ? terminalColors.accent : terminalColors.text} width={25}>\n {idx === 0 ? '\\u25B8 ' : ' '}{mem.key}\n </text>\n <text fg={terminalColors.textMuted} width={12}>{mem.size}</text>\n <text fg={terminalColors.textMuted}>{mem.updated}</text>\n </box>\n ))}\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Press Enter to view, 'd' to delete, 'c' to clear all\n </text>\n </box>\n );\n}\n","/**\n * Workflow Screen - Automation Builder\n * Clean monochromatic design\n */\nimport { useState, useEffect, useMemo, useCallback } from 'react';\nimport { useKeyboard } from '@opentui/react';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface WorkflowProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst WORKFLOWS = [\n { name: 'test-and-commit', steps: 3, lastRun: '1 hour ago', status: 'success' as const },\n { name: 'deploy-preview', steps: 5, lastRun: '2 hours ago', status: 'success' as const },\n { name: 'full-ci', steps: 8, lastRun: '1 day ago', status: 'failed' as const },\n { name: 'quick-fix', steps: 2, lastRun: '3 days ago', status: 'pending' as const },\n];\n\nexport function Workflow({ onNavigate, cols = 80, rows = 24 }: WorkflowProps) {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [animPhase, setAnimPhase] = useState(0);\n\n const isCompact = cols < 60;\n const contentWidth = Math.max(1, Math.min(cols - 4, 60));\n\n // Entrance animation\n useEffect(() => {\n if (animPhase >= 2) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n return () => clearTimeout(timer);\n }, [animPhase]);\n\n const successCount = WORKFLOWS.filter(w => w.status === 'success').length;\n const failedCount = WORKFLOWS.filter(w => w.status === 'failed').length;\n\n const handleKeyNav = useCallback((delta: number) => {\n setSelectedIndex(prev => Math.max(0, Math.min(prev + delta, WORKFLOWS.length - 1)));\n }, []);\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'escape') onNavigate('home');\n });\n\n const divider = useMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth)}</text>,\n [contentWidth]\n );\n\n const shortcuts = isCompact\n ? 'j/k nav esc back'\n : 'j/k navigate esc back';\n\n return (\n <box flexDirection=\"column\" padding={1}>\n {/* Header */}\n {animPhase >= 1 && (\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth}>\n <text fg={terminalColors.workflow}>⟳ Workflows</text>\n <text fg={terminalColors.textMuted}>{WORKFLOWS.length} workflows</text>\n </box>\n <text fg={terminalColors.textMuted}>automate skill chains</text>\n <text> </text>\n </box>\n )}\n\n {/* Stats */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {divider}\n <text> </text>\n <box flexDirection=\"row\" gap={3}>\n <text fg={terminalColors.success}>✓ {successCount} passed</text>\n {failedCount > 0 && (\n <text fg={terminalColors.error}>✗ {failedCount} failed</text>\n )}\n </box>\n <text> </text>\n {divider}\n <text> </text>\n </box>\n )}\n\n {/* Workflows list */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Workflows</text>\n <text> </text>\n\n {WORKFLOWS.length === 0 ? (\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>No workflows yet</text>\n </box>\n ) : (\n WORKFLOWS.map((wf, idx) => {\n const selected = idx === selectedIndex;\n const indicator = selected ? '▸' : ' ';\n const statusIcon = wf.status === 'success' ? '✓'\n : wf.status === 'failed' ? '✗' : '○';\n const statusColor = wf.status === 'success' ? terminalColors.success\n : wf.status === 'failed' ? terminalColors.error : terminalColors.textMuted;\n return (\n <box key={wf.name} flexDirection=\"row\">\n <text fg={terminalColors.text}>{indicator}</text>\n <text fg={selected ? terminalColors.accent : terminalColors.text} width={18}>\n {wf.name}\n </text>\n <text fg={statusColor}>{statusIcon} </text>\n <text fg={terminalColors.textMuted}>{wf.steps}s · {wf.lastRun}</text>\n </box>\n );\n })\n )}\n <text> </text>\n </box>\n )}\n\n {/* Footer */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {divider}\n <text fg={terminalColors.textMuted}>{shortcuts}</text>\n </box>\n )}\n </box>\n );\n}\n","/**\n * Execute Screen\n * Live skill execution\n */\nimport { useState } from 'react';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { ProgressBar } from '../components/ProgressBar.js';\n\ninterface ExecuteProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Execute({ onNavigate, cols = 80, rows = 24 }: ExecuteProps) {\n const [executing, setExecuting] = useState(false);\n const [progress, setProgress] = useState(0);\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Execute\"\n subtitle=\"Run skills in real-time\"\n icon=\"▶\"\n />\n\n {executing ? (\n <box flexDirection=\"column\">\n <Spinner label=\"Executing skill...\" />\n <text> </text>\n <ProgressBar progress={progress} width={40} />\n <text> </text>\n <text fg={terminalColors.textMuted}>Press Esc to cancel</text>\n </box>\n ) : (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Select a skill to execute:</text>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n No skills available. Install skills first using 'b' (browse) or 'm' (marketplace).\n </text>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Press Enter to execute, 'i' to view installed skills\n </text>\n </box>\n )}\n </box>\n );\n}\n","/**\n * ProgressBar Component\n * Animated progress bar display\n */\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\n\ninterface ProgressBarProps {\n progress: number; // 0-100\n width?: number;\n showPercentage?: boolean;\n color?: keyof typeof terminalColors;\n}\n\nexport function ProgressBar({\n progress,\n width = 20,\n showPercentage = true,\n color = 'accent',\n}: ProgressBarProps) {\n const clampedProgress = Math.max(0, Math.min(100, progress));\n const filledWidth = Math.round((clampedProgress / 100) * width);\n const emptyWidth = width - filledWidth;\n\n const filled = symbols.progressFilled.repeat(filledWidth);\n const empty = symbols.progressEmpty.repeat(emptyWidth);\n\n return (\n <box flexDirection=\"row\" gap={1}>\n <text>\n <span fg={terminalColors[color]}>{filled}</span>\n <span fg={terminalColors.textMuted}>{empty}</span>\n </text>\n {showPercentage && (\n <text fg={terminalColors.textSecondary}>\n {Math.round(clampedProgress)}%\n </text>\n )}\n </box>\n );\n}\n","/**\n * History Screen\n * Execution history\n */\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface HistoryProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function History({ onNavigate, cols = 80, rows = 24 }: HistoryProps) {\n const history = [\n { skill: 'tdd-workflow', time: '10:32 AM', duration: '2.3s', status: 'success' },\n { skill: 'code-review', time: '10:15 AM', duration: '5.1s', status: 'success' },\n { skill: 'deploy-check', time: '09:45 AM', duration: '8.7s', status: 'failed' },\n { skill: 'lint-fix', time: '09:30 AM', duration: '1.2s', status: 'success' },\n ];\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"History\"\n subtitle=\"View execution history\"\n count={history.length}\n icon=\"◷\"\n />\n\n <text fg={terminalColors.text}><b>Recent Executions</b></text>\n <text> </text>\n\n {history.map((item, idx) => (\n <box key={`${item.skill}-${item.time}`} flexDirection=\"row\" marginBottom={1}>\n <text\n fg={idx === 0 ? terminalColors.accent : terminalColors.text}\n width={18}\n >\n {idx === 0 ? '\\u25B8 ' : ' '}{item.skill}\n </text>\n <text fg={terminalColors.textMuted} width={12}>{item.time}</text>\n <text fg={terminalColors.textMuted} width={10}>{item.duration}</text>\n <text\n fg={item.status === 'success' ? terminalColors.success : terminalColors.error}\n >\n {item.status === 'success' ? '\\u2713 success' : '\\u2717 failed'}\n </text>\n </box>\n ))}\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Press Enter to view details, 'r' to re-run, 'c' to clear\n </text>\n </box>\n );\n}\n","/**\n * Team Screen\n * Team collaboration\n */\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface TeamProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Team({ onNavigate, cols = 80, rows = 24 }: TeamProps) {\n const members = [\n { name: 'You', role: 'Owner', status: 'online', skills: 12 },\n { name: 'Alice', role: 'Admin', status: 'online', skills: 8 },\n { name: 'Bob', role: 'Member', status: 'offline', skills: 5 },\n ];\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Team\"\n subtitle=\"Collaborate with your development team\"\n count={members.length}\n icon=\"◉\"\n />\n\n <text fg={terminalColors.text}><b>Team Members</b></text>\n <text> </text>\n\n {members.map((member, idx) => (\n <box key={member.name} flexDirection=\"row\" marginBottom={1}>\n <text\n fg={idx === 0 ? terminalColors.accent : terminalColors.text}\n width={15}\n >\n {idx === 0 ? '\\u25B8 ' : ' '}{member.name}\n </text>\n <text fg={terminalColors.textMuted} width={10}>{member.role}</text>\n <text\n fg={member.status === 'online' ? terminalColors.success : terminalColors.textMuted}\n width={10}\n >\n {member.status === 'online' ? '\\u25CF online' : '\\u25CB offline'}\n </text>\n <text fg={terminalColors.textMuted}>{member.skills} skills</text>\n </box>\n ))}\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Press 'i' to invite, 's' to share skills\n </text>\n </box>\n );\n}\n","/**\n * Plugins Screen\n * Plugin management\n */\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface PluginsProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Plugins({ onNavigate, cols = 80, rows = 24 }: PluginsProps) {\n const plugins = [\n { name: 'git-hooks', enabled: true, version: '1.2.0' },\n { name: 'ai-suggest', enabled: true, version: '0.9.1' },\n { name: 'metrics', enabled: false, version: '2.0.0' },\n ];\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Plugins\"\n subtitle=\"Extend SkillKit with plugins\"\n count={plugins.length}\n icon=\"◈\"\n />\n\n <text fg={terminalColors.text}><b>Installed Plugins</b></text>\n <text> </text>\n\n {plugins.map((plugin, idx) => (\n <box key={plugin.name} flexDirection=\"row\" marginBottom={1}>\n <text\n fg={idx === 0 ? terminalColors.accent : terminalColors.text}\n width={18}\n >\n {idx === 0 ? '\\u25B8 ' : ' '}{plugin.name}\n </text>\n <text fg={terminalColors.textMuted} width={10}>v{plugin.version}</text>\n <text\n fg={plugin.enabled ? terminalColors.success : terminalColors.textMuted}\n >\n {plugin.enabled ? '\\u25CF enabled' : '\\u25CB disabled'}\n </text>\n </box>\n ))}\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Press Enter to toggle, 'a' to add new, 'u' to update\n </text>\n </box>\n );\n}\n","/**\n * Methodology Screen\n * Development methodology packs\n */\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface MethodologyProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Methodology({ onNavigate, cols = 80, rows = 24 }: MethodologyProps) {\n const methodologies = [\n { name: 'TDD', description: 'Test-Driven Development', skills: 5, active: true },\n { name: 'BDD', description: 'Behavior-Driven Development', skills: 4, active: false },\n { name: 'Clean Code', description: 'SOLID principles', skills: 6, active: false },\n { name: 'Security First', description: 'OWASP guidelines', skills: 8, active: false },\n ];\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Methodologies\"\n subtitle=\"Development methodology skill packs\"\n count={methodologies.length}\n icon=\"◎\"\n />\n\n <text fg={terminalColors.text}><b>Available Packs</b></text>\n <text> </text>\n\n {methodologies.map((meth, idx) => (\n <box key={meth.name} flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\">\n <text\n fg={idx === 0 ? terminalColors.accent : terminalColors.text}\n width={15}\n >\n {idx === 0 ? <b>{'\\u25B8 '}{meth.name}</b> : <>{'\\u25B8 '}{meth.name}</>}\n </text>\n <text fg={terminalColors.textMuted}>{meth.skills} skills</text>\n {meth.active && (\n <text fg={terminalColors.success}> [active]</text>\n )}\n </box>\n <text fg={terminalColors.textMuted}> {meth.description}</text>\n </box>\n ))}\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Press Enter to activate, 'v' to view skills\n </text>\n </box>\n );\n}\n","/**\n * Plan Screen\n * Structured plan execution\n */\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { ProgressBar } from '../components/ProgressBar.js';\n\ninterface PlanProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Plan({ onNavigate, cols = 80, rows = 24 }: PlanProps) {\n const steps = [\n { name: 'Analyze codebase', status: 'done', duration: '2.3s' },\n { name: 'Generate tests', status: 'done', duration: '5.1s' },\n { name: 'Run linter', status: 'running', duration: '-' },\n { name: 'Apply fixes', status: 'pending', duration: '-' },\n { name: 'Verify changes', status: 'pending', duration: '-' },\n ];\n\n const completedSteps = steps.filter((s) => s.status === 'done').length;\n const progress = (completedSteps / steps.length) * 100;\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Plan Execution\"\n subtitle=\"Structured multi-step execution\"\n icon=\"▣\"\n />\n\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.text}>Progress: </text>\n <ProgressBar progress={progress} width={30} />\n </box>\n\n <text fg={terminalColors.text}><b>Steps</b></text>\n <text> </text>\n\n {steps.map((step, idx) => {\n const statusIcon = step.status === 'done' ? '\\u2713' : step.status === 'running' ? '\\u27F3' : '\\u25CB';\n const statusColor =\n step.status === 'done'\n ? terminalColors.success\n : step.status === 'running'\n ? terminalColors.accent\n : terminalColors.textMuted;\n\n return (\n <box key={step.name} flexDirection=\"row\" marginBottom={1}>\n <text fg={statusColor} width={3}>{statusIcon}</text>\n <text fg={step.status === 'pending' ? terminalColors.textMuted : terminalColors.text} width={25}>\n {step.name}\n </text>\n <text fg={terminalColors.textMuted}>{step.duration}</text>\n </box>\n );\n })}\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Press Enter to continue, Esc to cancel\n </text>\n </box>\n );\n}\n","import { useState, useEffect, useMemo, useCallback } from 'react';\nimport { useKeyboard } from '@opentui/react';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface SettingsProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ninterface SettingItem {\n key: string;\n label: string;\n value: string;\n type: 'select' | 'path' | 'toggle';\n}\n\nconst DEFAULT_SETTINGS: SettingItem[] = [\n { key: 'defaultAgent', label: 'Default Agent', value: 'claude-code', type: 'select' },\n { key: 'skillsDir', label: 'Skills Directory', value: '.claude/skills', type: 'path' },\n { key: 'autoSync', label: 'Auto Sync', value: 'enabled', type: 'toggle' },\n { key: 'theme', label: 'Theme', value: 'dark', type: 'select' },\n { key: 'telemetry', label: 'Telemetry', value: 'disabled', type: 'toggle' },\n];\n\nexport function Settings({ onNavigate, cols = 80 }: SettingsProps) {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [settings, setSettings] = useState<SettingItem[]>(DEFAULT_SETTINGS);\n const [animPhase, setAnimPhase] = useState(0);\n\n const isCompact = cols < 60;\n const contentWidth = Math.max(1, Math.min(cols - 4, 60));\n\n useEffect(() => {\n if (animPhase >= 2) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n return () => clearTimeout(timer);\n }, [animPhase]);\n\n const handleKeyNav = useCallback((delta: number) => {\n setSelectedIndex(prev => Math.max(0, Math.min(prev + delta, settings.length - 1)));\n }, [settings.length]);\n\n const handleToggle = useCallback(() => {\n const setting = settings[selectedIndex];\n if (setting?.type === 'toggle') {\n setSettings(prev => prev.map((s, i) =>\n i === selectedIndex ? { ...s, value: s.value === 'enabled' ? 'disabled' : 'enabled' } : s\n ));\n }\n }, [selectedIndex, settings]);\n\n const handleReset = useCallback(() => {\n setSettings(DEFAULT_SETTINGS);\n }, []);\n\n const handleKeyboard = useCallback((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleToggle();\n else if (key.name === 'r') handleReset();\n else if (key.name === 'escape') onNavigate('home');\n }, [handleKeyNav, handleToggle, handleReset, onNavigate]);\n\n useKeyboard(handleKeyboard);\n\n const divider = useMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth)}</text>,\n [contentWidth]\n );\n\n const shortcuts = isCompact\n ? 'j/k nav enter toggle r reset esc back'\n : 'j/k navigate enter toggle r reset defaults esc back';\n\n return (\n <box flexDirection=\"column\" padding={1}>\n {/* Header */}\n {animPhase >= 1 && (\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth}>\n <text fg={terminalColors.text}>⚙ Settings</text>\n <text fg={terminalColors.textMuted}>{settings.length} options</text>\n </box>\n <text fg={terminalColors.textMuted}>configure skillkit</text>\n <text> </text>\n </box>\n )}\n\n {/* Settings list */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {divider}\n <text> </text>\n <text fg={terminalColors.text}>Configuration</text>\n <text> </text>\n\n {settings.map((setting, idx) => {\n const selected = idx === selectedIndex;\n const indicator = selected ? '▸' : ' ';\n const valueColor = setting.type === 'toggle'\n ? (setting.value === 'enabled' ? terminalColors.success : terminalColors.textMuted)\n : terminalColors.textMuted;\n const toggleIcon = setting.type === 'toggle'\n ? (setting.value === 'enabled' ? '● ' : '○ ')\n : '';\n return (\n <box key={setting.key} flexDirection=\"row\">\n <text fg={terminalColors.text}>{indicator}</text>\n <text fg={selected ? terminalColors.accent : terminalColors.text} width={18}>\n {setting.label}\n </text>\n <text fg={valueColor}>{toggleIcon}{setting.value}</text>\n </box>\n );\n })}\n <text> </text>\n </box>\n )}\n\n {/* Config location */}\n {animPhase >= 2 && !isCompact && (\n <box flexDirection=\"column\">\n {divider}\n <text fg={terminalColors.textMuted}>config: ~/.config/skillkit/config.json</text>\n <text> </text>\n </box>\n )}\n\n {/* Footer */}\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {divider}\n <text fg={terminalColors.textMuted}>{shortcuts}</text>\n </box>\n )}\n </box>\n );\n}\n","import { useState, useEffect, useMemo } from 'react';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface HelpProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst SHORTCUTS = [\n { section: 'Navigation', items: [\n { key: 'h', desc: 'Home screen' },\n { key: 'b', desc: 'Browse skills' },\n { key: 'm', desc: 'Marketplace' },\n { key: 'r', desc: 'Recommendations' },\n { key: 'i', desc: 'Installed skills' },\n { key: 's', desc: 'Sync settings' },\n { key: 'f', desc: 'Find skills' },\n ]},\n { section: 'Actions', items: [\n { key: 't', desc: 'Translate skills' },\n { key: 'w', desc: 'Workflows' },\n { key: 'x', desc: 'Execute' },\n { key: 'n', desc: 'Plan' },\n { key: 'v', desc: 'Validate' },\n { key: 'u', desc: 'Publish' },\n ]},\n { section: 'Team & Config', items: [\n { key: 'a', desc: 'Team settings' },\n { key: 'c', desc: 'Context' },\n { key: 'e', desc: 'Memory' },\n { key: 'p', desc: 'Plugins' },\n { key: 'o', desc: 'Methodology' },\n { key: ',', desc: 'Settings' },\n ]},\n { section: 'Global', items: [\n { key: '/', desc: 'This help screen' },\n { key: 'd', desc: 'Open docs' },\n { key: 'esc', desc: 'Go back / Home' },\n { key: 'q', desc: 'Quit application' },\n { key: 'j/k', desc: 'Navigate lists' },\n ]},\n];\n\nfunction ShortcutSection({ section, items, isLast }: { section: string; items: { key: string; desc: string }[]; isLast: boolean }) {\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>{section}</text>\n {items.map((item) => (\n <box key={item.key} flexDirection=\"row\">\n <text fg={terminalColors.accent} width={8}> {item.key}</text>\n <text fg={terminalColors.textMuted}>{item.desc}</text>\n </box>\n ))}\n {!isLast && <text> </text>}\n </box>\n );\n}\n\nexport function Help({ cols = 80 }: HelpProps) {\n const [animPhase, setAnimPhase] = useState(0);\n const isCompact = cols < 60;\n const rawWidth = cols - 4;\n const contentWidth = Math.max(1, Math.min(rawWidth, 60));\n const version = getVersion();\n\n useEffect(() => {\n if (animPhase >= 2) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n return () => clearTimeout(timer);\n }, [animPhase]);\n\n const divider = useMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth)}</text>,\n [contentWidth]\n );\n\n return (\n <box flexDirection=\"column\" padding={1}>\n {animPhase >= 1 && (\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth}>\n <text fg={terminalColors.text}>/ Help</text>\n <text fg={terminalColors.textMuted}>skillkit v{version}</text>\n </box>\n <text fg={terminalColors.textMuted}>keyboard shortcuts and navigation</text>\n <text> </text>\n </box>\n )}\n\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {divider}\n <text> </text>\n {isCompact ? (\n SHORTCUTS.map((s, idx) => (\n <ShortcutSection key={s.section} section={s.section} items={s.items} isLast={idx === SHORTCUTS.length - 1} />\n ))\n ) : (\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" width={Math.floor(contentWidth / 2)}>\n {SHORTCUTS.slice(0, 2).map((s, idx) => (\n <ShortcutSection key={s.section} section={s.section} items={s.items} isLast={idx === 1} />\n ))}\n </box>\n <box flexDirection=\"column\" width={Math.floor(contentWidth / 2)}>\n {SHORTCUTS.slice(2).map((s, idx) => (\n <ShortcutSection key={s.section} section={s.section} items={s.items} isLast={idx === 1} />\n ))}\n </box>\n </box>\n )}\n <text> </text>\n </box>\n )}\n\n {animPhase >= 2 && (\n <box flexDirection=\"column\">\n {divider}\n <text fg={terminalColors.textMuted}>esc back h home q quit</text>\n </box>\n )}\n </box>\n );\n}\n","/**\n * Mesh Screen\n * Mesh network and peer management\n */\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface MeshProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Mesh({ onNavigate, cols = 80, rows = 24 }: MeshProps) {\n const hosts = [\n { name: 'workstation-1', address: '192.168.1.10', status: 'online', peers: 3 },\n { name: 'laptop-dev', address: '192.168.1.15', status: 'online', peers: 2 },\n { name: 'server-main', address: '192.168.1.100', status: 'offline', peers: 0 },\n ];\n\n const securityStatus = {\n initialized: true,\n fingerprint: 'abc123def456',\n trustedPeers: 5,\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Mesh Network\"\n subtitle=\"Multi-machine agent distribution\"\n count={hosts.filter(h => h.status === 'online').length}\n icon=\"◉\"\n />\n\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.text}><b>Security: </b></text>\n <text fg={securityStatus.initialized ? terminalColors.success : terminalColors.warning}>\n {securityStatus.initialized ? '● Initialized' : '○ Not initialized'}\n </text>\n <text fg={terminalColors.textMuted}> Fingerprint: {securityStatus.fingerprint}</text>\n </box>\n\n <text fg={terminalColors.text}><b>Known Hosts</b></text>\n <text> </text>\n\n {hosts.map((host, idx) => (\n <box key={host.name} flexDirection=\"row\" marginBottom={1}>\n <text fg={host.status === 'online' ? terminalColors.success : terminalColors.textMuted} width={3}>\n {host.status === 'online' ? '●' : '○'}\n </text>\n <text fg={idx === 0 ? terminalColors.accent : terminalColors.text} width={20}>\n {idx === 0 ? '\\u25B8 ' : ' '}{host.name}\n </text>\n <text fg={terminalColors.textMuted} width={18}>{host.address}</text>\n <text fg={terminalColors.textMuted}>{host.peers} peers</text>\n </box>\n ))}\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n 'd' discover 'a' add host 'r' remove 's' security 'h' health check\n </text>\n </box>\n );\n}\n","/**\n * Message Screen\n * Inter-agent messaging\n */\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface MessageProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Message({ onNavigate, cols = 80, rows = 24 }: MessageProps) {\n const messages = [\n { id: '1', from: 'claude@laptop', subject: 'Code review completed', time: '2 min ago', unread: true },\n { id: '2', from: 'cursor@workstation', subject: 'Build artifacts ready', time: '15 min ago', unread: true },\n { id: '3', from: 'codex@server', subject: 'Test results', time: '1 hour ago', unread: false },\n ];\n\n const unreadCount = messages.filter(m => m.unread).length;\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Messages\"\n subtitle=\"Inter-agent communication\"\n count={unreadCount}\n icon=\"✉\"\n />\n\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.text}><b>Inbox</b></text>\n <text fg={terminalColors.textMuted}> {unreadCount} unread</text>\n </box>\n\n <text> </text>\n\n {messages.map((msg, idx) => (\n <box key={msg.id} flexDirection=\"row\" marginBottom={1}>\n <text fg={msg.unread ? terminalColors.accent : terminalColors.textMuted} width={3}>\n {msg.unread ? '●' : '○'}\n </text>\n <text fg={idx === 0 ? terminalColors.accent : terminalColors.text} width={22}>\n {idx === 0 ? '\\u25B8 ' : ' '}{msg.from}\n </text>\n <text fg={msg.unread ? terminalColors.text : terminalColors.textMuted} width={30}>\n {msg.subject.slice(0, 28)}\n </text>\n <text fg={terminalColors.textMuted}>{msg.time}</text>\n </box>\n ))}\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Enter to read 'n' new message 'r' reply 'a' archive 's' sent\n </text>\n </box>\n );\n}\n","/**\n * Animation presets for SkillKit TUI\n * Uses OpenTUI's useTimeline for smooth 60fps animations\n */\n\n/**\n * Animation easing functions available in OpenTUI\n */\nexport type EasingFunction =\n | 'linear'\n | 'easeInQuad'\n | 'easeOutQuad'\n | 'easeInOutQuad'\n | 'easeInCubic'\n | 'easeOutCubic'\n | 'easeInOutCubic'\n | 'easeInQuart'\n | 'easeOutQuart'\n | 'easeInOutQuart';\n\n/**\n * Animation preset configuration\n */\nexport interface AnimationPreset {\n duration: number;\n ease: EasingFunction;\n stagger?: number;\n}\n\n/**\n * Predefined animation presets\n */\nexport const animations = {\n /**\n * Staggered fade-in for entrance animations\n * Used on home screen for progressive content reveal\n */\n staggeredFadeIn: {\n duration: 800,\n ease: 'easeOutCubic' as EasingFunction,\n stagger: 100,\n },\n\n /**\n * Logo reveal with scramble effect\n * Used for branding animation on startup\n */\n logoReveal: {\n duration: 600,\n ease: 'easeOutCubic' as EasingFunction,\n },\n\n /**\n * Count-up animation for stats\n * Used in StatsCard component\n */\n countUp: {\n duration: 1200,\n ease: 'easeOutQuart' as EasingFunction,\n },\n\n /**\n * Screen transition animation\n * Used when navigating between screens\n */\n screenTransition: {\n duration: 200,\n ease: 'easeInOutCubic' as EasingFunction,\n },\n\n /**\n * Quick fade for tooltips and hints\n */\n quickFade: {\n duration: 150,\n ease: 'easeOutQuad' as EasingFunction,\n },\n\n /**\n * Pulse animation for active states\n */\n pulse: {\n duration: 1000,\n ease: 'easeInOutQuad' as EasingFunction,\n },\n} as const;\n\n/**\n * Scramble effect characters\n * Used for text reveal animations\n */\nexport const SCRAMBLE_CHARS = '█▓▒░◆◇◈⟁◎✦⬡▣';\n\n/**\n * Scramble animation configuration\n */\nexport interface ScrambleConfig {\n /** Animation duration in ms */\n duration: number;\n /** Progress increment per frame */\n increment: number;\n /** Frame interval in ms */\n interval: number;\n}\n\n/**\n * Default scramble animation config\n */\nexport const DEFAULT_SCRAMBLE_CONFIG: ScrambleConfig = {\n duration: 420,\n increment: 12,\n interval: 35,\n};\n\n/**\n * Generate scrambled text with progressive reveal\n * @param target - The target text to reveal\n * @param progress - Progress percentage (0-100)\n * @param chars - Characters to use for scrambling\n */\nexport function scrambleText(\n target: string,\n progress: number,\n chars: string = SCRAMBLE_CHARS\n): string {\n return target\n .split('\\n')\n .map((line) => {\n return line\n .split('')\n .map((char, i) => {\n if (char === ' ') return char;\n if (progress > (i / line.length) * 100) return char;\n return chars[Math.floor(Math.random() * chars.length)];\n })\n .join('');\n })\n .join('\\n');\n}\n\n/**\n * Calculate staggered delay for an item in a list\n * @param index - Item index\n * @param stagger - Delay between items in ms\n * @returns Delay in ms for this item\n */\nexport function getStaggerDelay(index: number, stagger: number = 100): number {\n return index * stagger;\n}\n","/**\n * List navigation and pagination utilities\n */\n\n/**\n * Calculate visible items for paginated list display\n * Centers the selected item in the visible window\n */\nexport interface PaginationResult {\n /** Starting index in the full list */\n start: number;\n /** Ending index (exclusive) in the full list */\n end: number;\n /** Number of items above the visible window */\n itemsAbove: number;\n /** Number of items below the visible window */\n itemsBelow: number;\n}\n\n/**\n * Calculate pagination for a list with a selected index\n * @param totalItems - Total number of items in the list\n * @param selectedIndex - Currently selected item index\n * @param maxVisible - Maximum number of items to show at once\n * @returns Pagination information\n */\nexport function calculatePagination(\n totalItems: number,\n selectedIndex: number,\n maxVisible: number\n): PaginationResult {\n if (totalItems <= maxVisible) {\n return {\n start: 0,\n end: totalItems,\n itemsAbove: 0,\n itemsBelow: 0,\n };\n }\n\n // Center the selected item in the visible window\n const halfVisible = Math.floor(maxVisible / 2);\n let start = Math.max(0, selectedIndex - halfVisible);\n\n // Ensure we don't go past the end\n if (start + maxVisible > totalItems) {\n start = totalItems - maxVisible;\n }\n\n const end = start + maxVisible;\n\n return {\n start,\n end,\n itemsAbove: start,\n itemsBelow: totalItems - end,\n };\n}\n\n/**\n * Move selection up in a list\n * @param currentIndex - Current selected index\n * @param minIndex - Minimum allowed index (default: 0)\n * @returns New index after moving up\n */\nexport function moveUp(currentIndex: number, minIndex = 0): number {\n return Math.max(minIndex, currentIndex - 1);\n}\n\n/**\n * Move selection down in a list\n * @param currentIndex - Current selected index\n * @param maxIndex - Maximum allowed index\n * @returns New index after moving down\n */\nexport function moveDown(currentIndex: number, maxIndex: number): number {\n return Math.min(maxIndex, currentIndex + 1);\n}\n\n/**\n * Clamp an index within valid bounds\n * @param index - Index to clamp\n * @param listLength - Length of the list\n * @returns Clamped index\n */\nexport function clampIndex(index: number, listLength: number): number {\n if (listLength === 0) return 0;\n return Math.max(0, Math.min(index, listLength - 1));\n}\n\n/**\n * Calculate max visible items based on available rows\n * @param availableRows - Total available rows\n * @param reservedRows - Rows reserved for headers, footers, etc.\n * @param minVisible - Minimum visible items (default: 5)\n * @returns Maximum visible items\n */\nexport function calculateMaxVisible(\n availableRows: number,\n reservedRows: number,\n minVisible = 5\n): number {\n return Math.max(minVisible, availableRows - reservedRows);\n}\n","/**\n * AgentGrid Component\n * Displays monochromatic agent logos in a grid layout\n */\nimport { AGENT_LOGOS, type AgentLogo } from '../theme/symbols.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface AgentGridProps {\n /** Maximum number of agents to display */\n maxVisible?: number;\n /** Show status indicators for detected agents */\n showStatus?: boolean;\n /** Agent types that are detected/active */\n detectedAgents?: string[];\n /** Number of columns in the grid */\n columns?: number;\n}\n\nexport function AgentGrid({\n maxVisible = 12,\n showStatus = true,\n detectedAgents = [],\n columns = 4,\n}: AgentGridProps) {\n const safeColumns = Math.max(1, columns);\n const allAgents = Object.entries(AGENT_LOGOS);\n const visibleAgents = allAgents.slice(0, maxVisible);\n const hiddenCount = allAgents.length - maxVisible;\n\n const rows: [string, AgentLogo][][] = [];\n for (let i = 0; i < visibleAgents.length; i += safeColumns) {\n rows.push(visibleAgents.slice(i, i + safeColumns));\n }\n\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>\n <b>Works with</b>\n </text>\n <text> </text>\n {rows.map((row, rowIndex) => (\n <box key={`row-${rowIndex}`} flexDirection=\"row\">\n {row.map(([agentType, agent]) => {\n const isDetected = detectedAgents.includes(agentType);\n const statusIcon = showStatus ? (isDetected ? '●' : '○') : '';\n const fg = isDetected ? terminalColors.accent : terminalColors.text;\n\n return (\n <box key={agentType} width={18}>\n <text fg={fg}>\n {agent.icon} {agent.name}\n {showStatus && (\n <span fg={isDetected ? terminalColors.success : terminalColors.textMuted}>\n {' '}{statusIcon}\n </span>\n )}\n </text>\n </box>\n );\n })}\n </box>\n ))}\n {hiddenCount > 0 && (\n <text fg={terminalColors.textMuted}>+{hiddenCount} more agents</text>\n )}\n </box>\n );\n}\n","/**\n * StatsCard Component\n * OpenSync-style stats display with optional animations\n */\nimport { useState, useEffect } from 'react';\nimport { terminalColors } from '../theme/colors.js';\nimport { animations } from '../theme/animations.js';\n\ninterface StatItem {\n label: string;\n value: number;\n color?: keyof typeof terminalColors;\n}\n\ninterface StatsCardProps {\n items: StatItem[];\n animated?: boolean;\n}\n\nexport function StatsCard({ items, animated = true }: StatsCardProps) {\n const [displayValues, setDisplayValues] = useState<number[]>(() =>\n animated ? items.map(() => 0) : items.map((item) => item.value)\n );\n const [animComplete, setAnimComplete] = useState(!animated);\n const [prevItemsLength, setPrevItemsLength] = useState(items.length);\n\n useEffect(() => {\n if (items.length !== prevItemsLength) {\n setPrevItemsLength(items.length);\n setDisplayValues(animated ? items.map(() => 0) : items.map((item) => item.value));\n setAnimComplete(!animated);\n }\n }, [items, prevItemsLength, animated]);\n\n useEffect(() => {\n if (!animated || animComplete) return;\n\n const duration = animations.countUp.duration;\n const startTime = Date.now();\n const targetValues = items.map((item) => item.value);\n const frameInterval = 16;\n\n const intervalId = setInterval(() => {\n const elapsed = Date.now() - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const eased = 1 - Math.pow(1 - progress, 4);\n\n const newValues = targetValues.map((target) =>\n Math.round(target * eased)\n );\n\n setDisplayValues(newValues);\n\n if (progress >= 1) {\n clearInterval(intervalId);\n setAnimComplete(true);\n }\n }, frameInterval);\n\n return () => clearInterval(intervalId);\n }, [animated, animComplete, items]);\n\n return (\n <box flexDirection=\"row\" gap={2}>\n {items.map((item, index) => {\n const fg = item.color\n ? terminalColors[item.color]\n : terminalColors.text;\n\n return (\n <box\n key={item.label}\n flexDirection=\"column\"\n alignItems=\"center\"\n padding={2}\n borderStyle=\"single\"\n borderColor={terminalColors.border}\n >\n <text fg={fg}>\n <b>{String(displayValues[index])}</b>\n </text>\n <text fg={terminalColors.textMuted}>{item.label}</text>\n </box>\n );\n })}\n </box>\n );\n}\n","/**\n * StatusBar Component\n * Bottom status bar with keyboard shortcuts\n */\nimport { terminalColors } from '../theme/colors.js';\nimport { STATUS_BAR_SHORTCUTS } from '../state/types.js';\n\ninterface StatusBarProps {\n message?: string;\n messageType?: 'info' | 'success' | 'error' | 'warning';\n shortcuts?: string;\n}\n\nexport function StatusBar({\n message,\n messageType = 'info',\n shortcuts = STATUS_BAR_SHORTCUTS,\n}: StatusBarProps) {\n const messageColors = {\n info: terminalColors.info,\n success: terminalColors.success,\n error: terminalColors.error,\n warning: terminalColors.warning,\n };\n\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>\n {'\\u2500'.repeat(70)}\n </text>\n {message ? (\n <text fg={messageColors[messageType]}>{message}</text>\n ) : (\n <text fg={terminalColors.textMuted}>{shortcuts}</text>\n )}\n </box>\n );\n}\n","/**\n * SkillList Component\n * Paginated list of skills with selection\n */\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\nimport { calculatePagination, type PaginationResult } from '../utils/list.js';\nimport type { SkillItem } from '../state/types.js';\n\ninterface SkillListProps {\n skills: SkillItem[];\n selectedIndex: number;\n maxVisible?: number;\n onSelect?: (skill: SkillItem) => void;\n}\n\nexport function SkillList({\n skills,\n selectedIndex,\n maxVisible = 10,\n onSelect,\n}: SkillListProps) {\n if (skills.length === 0) {\n return (\n <text fg={terminalColors.textMuted}>No skills found</text>\n );\n }\n\n const pagination = calculatePagination(skills.length, selectedIndex, maxVisible);\n const visibleSkills = skills.slice(pagination.start, pagination.end);\n\n return (\n <box flexDirection=\"column\">\n {/* Items above indicator */}\n {pagination.itemsAbove > 0 && (\n <text fg={terminalColors.textMuted}>\n {symbols.arrowUp} {pagination.itemsAbove} more above\n </text>\n )}\n\n {/* Skill list */}\n {visibleSkills.map((skill, idx) => {\n const actualIndex = pagination.start + idx;\n const isSelected = actualIndex === selectedIndex;\n const pointer = isSelected ? symbols.pointer : symbols.pointerInactive;\n const fg = isSelected ? terminalColors.accent : terminalColors.text;\n const statusIcon = skill.enabled ? symbols.active : symbols.pending;\n const descPart = skill.description\n ? ` - ${skill.description.slice(0, 40)}${skill.description.length > 40 ? '...' : ''}`\n : '';\n // Use single text element to avoid rendering overlap\n const line = `${pointer} ${skill.name} ${statusIcon}${descPart}`;\n\n return (\n <text key={skill.name} fg={fg}>\n {isSelected ? <b>{line}</b> : line}\n </text>\n );\n })}\n\n {/* Items below indicator */}\n {pagination.itemsBelow > 0 && (\n <text fg={terminalColors.textMuted}>\n {symbols.arrowDown} {pagination.itemsBelow} more below\n </text>\n )}\n </box>\n );\n}\n","/**\n * SearchInput Component\n * Rounded search input with icon\n */\nimport { terminalColors } from '../theme/colors.js';\n\ninterface SearchInputProps {\n value: string;\n placeholder?: string;\n focused?: boolean;\n onChange?: (value: string) => void;\n}\n\nexport function SearchInput({\n value,\n placeholder = 'Search...',\n focused = false,\n}: SearchInputProps) {\n const display = value || placeholder;\n const textColor = value ? terminalColors.text : terminalColors.textMuted;\n\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>⌕ </text>\n <text fg={textColor}>{display}</text>\n {focused && <text fg={terminalColors.accent}>▏</text>}\n </box>\n );\n}\n","/**\n * FeatureList Component\n * Colored feature keywords with descriptions\n */\nimport { terminalColors } from '../theme/colors.js';\n\ninterface Feature {\n key: string;\n label: string;\n description: string;\n color: keyof typeof terminalColors;\n}\n\nconst FEATURES: Feature[] = [\n { key: 'sync', label: 'Sync', color: 'sync', description: 'share skills across all your coding agents' },\n { key: 'browse', label: 'Browse', color: 'browse', description: 'discover skills from the marketplace' },\n { key: 'recommend', label: 'Recommend', color: 'recommend', description: 'AI-powered skill suggestions for your project' },\n { key: 'translate', label: 'Translate', color: 'translate', description: 'convert skills between agent formats' },\n { key: 'workflow', label: 'Workflow', color: 'workflow', description: 'automate skill execution chains' },\n { key: 'team', label: 'Team', color: 'team', description: 'collaborate with your development team' },\n];\n\ninterface FeatureListProps {\n features?: Feature[];\n}\n\nexport function FeatureList({ features = FEATURES }: FeatureListProps) {\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}><b>Features</b></text>\n <text> </text>\n {features.map((feat) => (\n <box key={feat.key} flexDirection=\"row\">\n <text fg={terminalColors[feat.color]}>\n <b>{' '}{feat.label.padEnd(12)}</b>\n </text>\n <text fg={terminalColors.textMuted}>{feat.description}</text>\n </box>\n ))}\n </box>\n );\n}\n\nexport { FEATURES, type Feature };\n"],"mappings":"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","names":["useState","useCallback","useEffect","useKeyboard","Fragment","jsx","jsxs","useState","useEffect","useMemo","loadConfig","getAdapter","loadConfig","readFileSync","rmSync","join","loadConfig","join","readFileSync","rmSync","jsx","jsxs","useState","useEffect","useMemo","useState","useEffect","useMemo","useCallback","jsx","jsxs","useState","useEffect","useMemo","useCallback","useState","useEffect","useMemo","useCallback","useKeyboard","Fragment","jsx","jsxs","SPINNER","useState","useEffect","useMemo","useCallback","useKeyboard","useState","useEffect","useMemo","useCallback","useKeyboard","jsx","jsxs","useState","useEffect","useMemo","useCallback","useKeyboard","useState","useEffect","useMemo","useCallback","useKeyboard","jsx","jsxs","SPINNER","useState","useEffect","useMemo","useCallback","useKeyboard","useState","jsx","jsxs","jsx","jsxs","useState","useState","useEffect","useState","useEffect","jsx","jsxs","useState","useEffect","jsx","jsxs","useState","useEffect","useState","useEffect","useMemo","useCallback","useKeyboard","jsx","jsxs","SPINNER","useState","useEffect","useMemo","useCallback","useKeyboard","jsx","jsxs","useState","useEffect","useMemo","useCallback","useKeyboard","jsx","jsxs","useState","useEffect","useCallback","useKeyboard","useMemo","useState","jsx","jsxs","jsx","jsxs","useState","jsx","jsxs","jsx","jsxs","jsx","jsxs","Fragment","jsx","jsxs","jsx","jsxs","useState","useEffect","useMemo","useCallback","useKeyboard","jsx","jsxs","useState","useEffect","useCallback","useKeyboard","useMemo","useState","useEffect","useMemo","jsx","jsxs","useState","useEffect","useMemo","jsx","jsxs","jsx","jsxs","jsx","jsxs","useState","useEffect","useCallback","useKeyboard","jsx","jsxs","useState","useEffect","jsx","jsxs","useState","useEffect","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","FEATURES","jsx"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/@opentui+solid@0.1.75_solid-js@1.9.11_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/solid/index.js","../../../node_modules/.pnpm/solid-js@1.9.11/node_modules/solid-js/dist/solid.js","../src/index.tsx","../src/App.tsx","../src/state/types.ts","../src/theme/colors.ts","../src/utils/helpers.ts","../src/components/Splash.tsx","../src/theme/symbols.ts","../src/components/Sidebar.tsx","../src/components/StatusBar.tsx","../src/state/navigation.ts","../src/state/skills.ts","../src/state/agents.ts","../src/state/marketplace.ts","../../../marketplace/sources.json","../src/screens/Home.tsx","../src/components/Header.tsx","../src/components/Spinner.tsx","../src/components/EmptyState.tsx","../src/components/DetailPane.tsx","../src/components/StatusIndicator.tsx","../src/screens/Browse.tsx","../src/screens/Installed.tsx","../src/services/memory.service.ts","../src/services/workflow.service.ts","../src/services/plan.service.ts","../src/services/plugin.service.ts","../src/services/team.service.ts","../src/services/methodology.service.ts","../src/services/recommend.service.ts","../src/services/context.service.ts","../src/services/executor.service.ts","../src/services/translator.service.ts","../src/services/tree.service.ts","../src/screens/Marketplace.tsx","../src/screens/Recommend.tsx","../src/screens/Translate.tsx","../src/screens/Context.tsx","../src/screens/Sync.tsx","../src/screens/Memory.tsx","../src/screens/Workflow.tsx","../src/screens/Execute.tsx","../src/screens/History.tsx","../src/screens/Team.tsx","../src/screens/Plugins.tsx","../src/screens/Methodology.tsx","../src/components/ProgressBar.tsx","../src/screens/Plan.tsx","../src/screens/Settings.tsx","../src/screens/Help.tsx","../src/screens/Mesh.tsx","../src/screens/Message.tsx","../src/theme/animations.ts","../src/utils/list.ts","../src/components/AgentGrid.tsx","../src/components/StatsCard.tsx","../src/components/RightSidebar.tsx","../src/components/BottomStatusBar.tsx","../src/components/SkillList.tsx","../src/components/SearchInput.tsx","../src/components/FeatureList.tsx","../src/components/SelectList.tsx","../src/components/SplitPane.tsx","../src/components/CodeBlock.tsx","../src/components/FormField.tsx","../src/components/ErrorBoundary.tsx","../src/components/Button.tsx","../src/components/Clickable.tsx","../src/components/HoverHighlight.tsx","../src/components/AnimatedText.tsx","../src/components/TabBar.tsx","../src/components/Breadcrumb.tsx"],"sourcesContent":["// @bun\n// index.ts\nimport { CliRenderer, createCliRenderer, engine as engine2 } from \"@opentui/core\";\nimport { createTestRenderer } from \"@opentui/core/testing\";\n\n// src/elements/index.ts\nimport {\n ASCIIFontRenderable,\n BoxRenderable,\n CodeRenderable,\n DiffRenderable,\n InputRenderable as InputRenderable2,\n LineNumberRenderable,\n MarkdownRenderable,\n ScrollBoxRenderable,\n SelectRenderable as SelectRenderable2,\n TabSelectRenderable as TabSelectRenderable2,\n TextareaRenderable,\n TextAttributes,\n TextNodeRenderable as TextNodeRenderable3,\n TextRenderable as TextRenderable3\n} from \"@opentui/core\";\n\n// src/elements/hooks.ts\nimport {\n engine,\n Timeline\n} from \"@opentui/core\";\nimport { createContext, createSignal, onCleanup, onMount, useContext } from \"solid-js\";\nvar RendererContext = createContext();\nvar useRenderer = () => {\n const renderer = useContext(RendererContext);\n if (!renderer) {\n throw new Error(\"No renderer found\");\n }\n return renderer;\n};\nvar onResize = (callback) => {\n const renderer = useRenderer();\n onMount(() => {\n renderer.on(\"resize\", callback);\n });\n onCleanup(() => {\n renderer.off(\"resize\", callback);\n });\n};\nvar useTerminalDimensions = () => {\n const renderer = useRenderer();\n const [terminalDimensions, setTerminalDimensions] = createSignal({ width: renderer.width, height: renderer.height });\n const callback = (width, height) => {\n setTerminalDimensions({ width, height });\n };\n onResize(callback);\n return terminalDimensions;\n};\nvar useKeyboard = (callback, options) => {\n const renderer = useRenderer();\n const keyHandler = renderer.keyInput;\n onMount(() => {\n keyHandler.on(\"keypress\", callback);\n if (options?.release) {\n keyHandler.on(\"keyrelease\", callback);\n }\n });\n onCleanup(() => {\n keyHandler.off(\"keypress\", callback);\n if (options?.release) {\n keyHandler.off(\"keyrelease\", callback);\n }\n });\n};\nvar usePaste = (callback) => {\n const renderer = useRenderer();\n const keyHandler = renderer.keyInput;\n onMount(() => {\n keyHandler.on(\"paste\", callback);\n });\n onCleanup(() => {\n keyHandler.off(\"paste\", callback);\n });\n};\nvar useKeyHandler = useKeyboard;\nvar useSelectionHandler = (callback) => {\n const renderer = useRenderer();\n onMount(() => {\n renderer.on(\"selection\", callback);\n });\n onCleanup(() => {\n renderer.off(\"selection\", callback);\n });\n};\nvar useTimeline = (options = {}) => {\n const timeline = new Timeline(options);\n onMount(() => {\n if (options.autoplay !== false) {\n timeline.play();\n }\n engine.register(timeline);\n });\n onCleanup(() => {\n timeline.pause();\n engine.unregister(timeline);\n });\n return timeline;\n};\n// src/elements/extras.ts\nimport { createEffect, createMemo as createMemo2, getOwner, onCleanup as onCleanup2, runWithOwner, splitProps, untrack as untrack2 } from \"solid-js\";\n\n// src/reconciler.ts\nimport {\n BaseRenderable,\n createTextAttributes,\n InputRenderable,\n InputRenderableEvents,\n isTextNodeRenderable,\n parseColor,\n Renderable,\n RootTextNodeRenderable,\n SelectRenderable,\n SelectRenderableEvents,\n TabSelectRenderable,\n TabSelectRenderableEvents,\n TextNodeRenderable,\n TextRenderable\n} from \"@opentui/core\";\nimport { useContext as useContext2 } from \"solid-js\";\n\n// src/renderer/universal.js\nimport { createRoot, createRenderEffect, createMemo, createComponent, untrack, mergeProps } from \"solid-js\";\nvar memo = (fn) => createMemo(() => fn());\nfunction createRenderer({\n createElement,\n createTextNode,\n createSlotNode,\n isTextNode,\n replaceText,\n insertNode,\n removeNode,\n setProperty,\n getParentNode,\n getFirstChild,\n getNextSibling\n}) {\n function insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial)\n initial = [];\n if (typeof accessor !== \"function\")\n return insertExpression(parent, accessor, initial, marker);\n createRenderEffect((current) => insertExpression(parent, accessor(), current, marker), initial);\n }\n function insertExpression(parent, value, current, marker, unwrapArray) {\n while (typeof current === \"function\")\n current = current();\n if (value === current)\n return current;\n const t = typeof value, multi = marker !== undefined;\n if (t === \"string\" || t === \"number\") {\n if (t === \"number\")\n value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && isTextNode(node)) {\n replaceText(node, value);\n } else\n node = createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n replaceText(getFirstChild(parent), current = value);\n } else {\n cleanChildren(parent, current, marker, createTextNode(value));\n current = value;\n }\n }\n } else if (value == null || t === \"boolean\") {\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\")\n v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n if (normalizeIncomingArray(array, value, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (array.length === 0) {\n const replacement = cleanChildren(parent, current, marker);\n if (multi)\n return current = replacement;\n } else {\n if (Array.isArray(current)) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else\n reconcileArrays(parent, current, array);\n } else if (current == null || current === \"\") {\n appendNodes(parent, array);\n } else {\n reconcileArrays(parent, multi && current || [getFirstChild(parent)], array);\n }\n }\n current = array;\n } else {\n if (Array.isArray(current)) {\n if (multi)\n return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !getFirstChild(parent)) {\n insertNode(parent, value);\n } else\n replaceNode(parent, value, getFirstChild(parent));\n current = value;\n }\n return current;\n }\n function normalizeIncomingArray(normalized, array, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length;i < len; i++) {\n let item = array[i], t;\n if (item == null || item === true || item === false)\n ;\n else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item) || dynamic;\n } else if ((t = typeof item) === \"string\" || t === \"number\") {\n normalized.push(createTextNode(item));\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\")\n item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else\n normalized.push(item);\n }\n return dynamic;\n }\n function reconcileArrays(parentNode, a, b) {\n let bLength = b.length, aEnd = a.length, bEnd = bLength, aStart = 0, bStart = 0, after = getNextSibling(a[aEnd - 1]), map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart] : after;\n while (bStart < bEnd)\n insertNode(parentNode, b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart]))\n removeNode(parentNode, a[aStart]);\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = getNextSibling(a[--aEnd]);\n insertNode(parentNode, b[bStart++], getNextSibling(a[aStart++]));\n insertNode(parentNode, b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map;\n let i = bStart;\n while (i < bEnd)\n map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart, sequence = 1, t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence)\n break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index)\n insertNode(parentNode, b[bStart++], node);\n } else\n replaceNode(parentNode, b[bStart++], a[aStart++]);\n } else\n aStart++;\n } else\n removeNode(parentNode, a[aStart++]);\n }\n }\n }\n function cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) {\n let removed;\n while (removed = getFirstChild(parent))\n removeNode(parent, removed);\n replacement && insertNode(parent, replacement);\n return replacement;\n }\n const node = replacement || createSlotNode();\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1;i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = getParentNode(el) === parent;\n if (!inserted && !i)\n isParent ? replaceNode(parent, node, el) : insertNode(parent, node, marker);\n else\n isParent && removeNode(parent, el);\n } else\n inserted = true;\n }\n } else\n insertNode(parent, node, marker);\n return [node];\n }\n function appendNodes(parent, array, marker) {\n for (let i = 0, len = array.length;i < len; i++)\n insertNode(parent, array[i], marker);\n }\n function replaceNode(parent, newNode, oldNode) {\n insertNode(parent, newNode, oldNode);\n removeNode(parent, oldNode);\n }\n function spreadExpression(node, props, prevProps = {}, skipChildren) {\n props || (props = {});\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => {\n for (const prop in props) {\n if (prop === \"children\" || prop === \"ref\")\n continue;\n const value = props[prop];\n if (value === prevProps[prop])\n continue;\n setProperty(node, prop, value, prevProps[prop]);\n prevProps[prop] = value;\n }\n });\n return prevProps;\n }\n return {\n render(code, element) {\n let disposer;\n createRoot((dispose) => {\n disposer = dispose;\n insert(element, code());\n });\n return disposer;\n },\n insert,\n spread(node, accessor, skipChildren) {\n if (typeof accessor === \"function\") {\n createRenderEffect((current) => spreadExpression(node, accessor(), current, skipChildren));\n } else\n spreadExpression(node, accessor, undefined, skipChildren);\n },\n createElement,\n createTextNode,\n insertNode,\n setProp(node, name, value, prev) {\n setProperty(node, name, value, prev);\n return value;\n },\n mergeProps,\n effect: createRenderEffect,\n memo,\n createComponent,\n use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n }\n };\n}\n\n// src/renderer/index.ts\nimport { mergeProps as mergeProps2 } from \"solid-js\";\nfunction createRenderer2(options) {\n const renderer = createRenderer(options);\n renderer.mergeProps = mergeProps2;\n return renderer;\n}\n\n// src/utils/id-counter.ts\nvar idCounter = new Map;\nfunction getNextId(elementType) {\n if (!idCounter.has(elementType)) {\n idCounter.set(elementType, 0);\n }\n const value = idCounter.get(elementType) + 1;\n idCounter.set(elementType, value);\n return `${elementType}-${value}`;\n}\n\n// src/utils/log.ts\nvar log = (...args) => {\n if (process.env.DEBUG) {\n console.log(\"[Reconciler]\", ...args);\n }\n};\n\n// src/reconciler.ts\nclass TextNode extends TextNodeRenderable {\n static fromString(text, options = {}) {\n const node = new TextNode(options);\n node.add(text);\n return node;\n }\n}\nvar logId = (node) => {\n if (!node)\n return;\n return node.id;\n};\nvar getNodeChildren = (node) => {\n let children;\n if (node instanceof TextRenderable) {\n children = node.getTextChildren();\n } else {\n children = node.getChildren();\n }\n return children;\n};\nfunction _insertNode(parent, node, anchor) {\n log(\"Inserting node:\", logId(node), \"into parent:\", logId(parent), \"with anchor:\", logId(anchor), node instanceof TextNode);\n if (node instanceof SlotRenderable) {\n node.parent = parent;\n node = node.getSlotChild(parent);\n }\n if (anchor && anchor instanceof SlotRenderable) {\n anchor = anchor.getSlotChild(parent);\n }\n if (isTextNodeRenderable(node)) {\n if (!(parent instanceof TextRenderable) && !isTextNodeRenderable(parent)) {\n throw new Error(`Orphan text error: \"${node.toChunks().map((c) => c.text).join(\"\")}\" must have a <text> as a parent: ${parent.id} above ${node.id}`);\n }\n }\n if (!(parent instanceof BaseRenderable)) {\n console.error(\"[INSERT]\", \"Tried to mount a non base renderable\");\n throw new Error(\"Tried to mount a non base renderable\");\n }\n if (!anchor) {\n parent.add(node);\n return;\n }\n const children = getNodeChildren(parent);\n const anchorIndex = children.findIndex((el) => el.id === anchor.id);\n if (anchorIndex === -1) {\n log(\"[INSERT]\", \"Could not find anchor\", logId(parent), logId(anchor), \"[children]\", ...children.map((c) => c.id));\n }\n parent.add(node, anchorIndex);\n}\nfunction _removeNode(parent, node) {\n log(\"Removing node:\", logId(node), \"from parent:\", logId(parent));\n if (node instanceof SlotRenderable) {\n node.parent = null;\n node = node.getSlotChild(parent);\n }\n parent.remove(node.id);\n process.nextTick(() => {\n if (node instanceof BaseRenderable && !node.parent) {\n node.destroyRecursively();\n return;\n }\n });\n}\nfunction _createTextNode(value) {\n log(\"Creating text node:\", value);\n const id = getNextId(\"text-node\");\n if (typeof value === \"number\") {\n value = value.toString();\n }\n return TextNode.fromString(value, { id });\n}\nfunction createSlotNode() {\n const id = getNextId(\"slot-node\");\n log(\"Creating slot node\", id);\n return new SlotRenderable(id);\n}\nfunction _getParentNode(childNode) {\n log(\"Getting parent of node:\", logId(childNode));\n let parent = childNode.parent ?? undefined;\n if (parent instanceof RootTextNodeRenderable) {\n parent = parent.textParent ?? undefined;\n }\n return parent;\n}\nvar {\n render: _render,\n effect,\n memo: memo2,\n createComponent: createComponent2,\n createElement,\n createTextNode,\n insertNode,\n insert,\n spread,\n setProp,\n mergeProps: mergeProps3,\n use\n} = createRenderer2({\n createElement(tagName) {\n log(\"Creating element:\", tagName);\n const id = getNextId(tagName);\n const solidRenderer = useContext2(RendererContext);\n if (!solidRenderer) {\n throw new Error(\"No renderer found\");\n }\n const elements = getComponentCatalogue();\n if (!elements[tagName]) {\n throw new Error(`[Reconciler] Unknown component type: ${tagName}`);\n }\n const element = new elements[tagName](solidRenderer, { id });\n log(\"Element created with id:\", id);\n return element;\n },\n createTextNode: _createTextNode,\n createSlotNode,\n replaceText(textNode, value) {\n log(\"Replacing text:\", value, \"in node:\", logId(textNode));\n if (!(textNode instanceof TextNode))\n return;\n textNode.replace(value, 0);\n },\n setProperty(node, name, value, prev) {\n if (name.startsWith(\"on:\")) {\n const eventName = name.slice(3);\n if (value) {\n node.on(eventName, value);\n }\n if (prev) {\n node.off(eventName, prev);\n }\n return;\n }\n if (isTextNodeRenderable(node)) {\n if (name === \"href\") {\n node.link = { url: value };\n return;\n }\n if (name === \"style\") {\n node.attributes |= createTextAttributes(value);\n node.fg = value.fg ? parseColor(value.fg) : node.fg;\n node.bg = value.bg ? parseColor(value.bg) : node.bg;\n return;\n }\n return;\n }\n switch (name) {\n case \"id\":\n log(\"Id mapped\", node.id, \"=\", value);\n node[name] = value;\n break;\n case \"focused\":\n if (!(node instanceof Renderable))\n return;\n if (value) {\n node.focus();\n } else {\n node.blur();\n }\n break;\n case \"onChange\":\n let event = undefined;\n if (node instanceof SelectRenderable) {\n event = SelectRenderableEvents.SELECTION_CHANGED;\n } else if (node instanceof TabSelectRenderable) {\n event = TabSelectRenderableEvents.SELECTION_CHANGED;\n } else if (node instanceof InputRenderable) {\n event = InputRenderableEvents.CHANGE;\n }\n if (!event)\n break;\n if (value) {\n node.on(event, value);\n }\n if (prev) {\n node.off(event, prev);\n }\n break;\n case \"onInput\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.INPUT, value);\n }\n if (prev) {\n node.off(InputRenderableEvents.INPUT, prev);\n }\n }\n break;\n case \"onSubmit\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.ENTER, value);\n }\n if (prev) {\n node.off(InputRenderableEvents.ENTER, prev);\n }\n } else {\n node[name] = value;\n }\n break;\n case \"onSelect\":\n if (node instanceof SelectRenderable) {\n if (value) {\n node.on(SelectRenderableEvents.ITEM_SELECTED, value);\n }\n if (prev) {\n node.off(SelectRenderableEvents.ITEM_SELECTED, prev);\n }\n } else if (node instanceof TabSelectRenderable) {\n if (value) {\n node.on(TabSelectRenderableEvents.ITEM_SELECTED, value);\n }\n if (prev) {\n node.off(TabSelectRenderableEvents.ITEM_SELECTED, prev);\n }\n }\n break;\n case \"style\":\n for (const prop in value) {\n const propVal = value[prop];\n if (prev !== undefined && propVal === prev[prop])\n continue;\n node[prop] = propVal;\n }\n break;\n case \"text\":\n case \"content\":\n node[name] = typeof value === \"string\" ? value : Array.isArray(value) ? value.join(\"\") : `${value}`;\n break;\n default:\n node[name] = value;\n }\n },\n isTextNode(node) {\n return node instanceof TextNode;\n },\n insertNode: _insertNode,\n removeNode: _removeNode,\n getParentNode: _getParentNode,\n getFirstChild(node) {\n log(\"Getting first child of node:\", logId(node));\n const firstChild = getNodeChildren(node)[0];\n if (!firstChild) {\n log(\"No first child found for node:\", logId(node));\n return;\n }\n log(\"First child found:\", logId(firstChild), \"for node:\", logId(node));\n return firstChild;\n },\n getNextSibling(node) {\n log(\"Getting next sibling of node:\", logId(node));\n const parent = _getParentNode(node);\n if (!parent) {\n log(\"No parent found for node:\", logId(node));\n return;\n }\n const siblings = getNodeChildren(parent);\n const index = siblings.indexOf(node);\n if (index === -1 || index === siblings.length - 1) {\n log(\"No next sibling found for node:\", logId(node));\n return;\n }\n const nextSibling = siblings[index + 1];\n if (!nextSibling) {\n log(\"Next sibling is null for node:\", logId(node));\n return;\n }\n log(\"Next sibling found:\", logId(nextSibling), \"for node:\", logId(node));\n return nextSibling;\n }\n});\n\n// src/elements/extras.ts\nfunction Portal(props) {\n const renderer = useRenderer();\n const marker = createSlotNode(), mount = () => props.mount || renderer.root, owner = getOwner();\n let content;\n createEffect(() => {\n content || (content = runWithOwner(owner, () => createMemo2(() => props.children)));\n const el = mount();\n const container = createElement(\"box\"), renderRoot = container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parent;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.add(container);\n props.ref && props.ref(container);\n onCleanup2(() => el.remove(container.id));\n }, undefined, { render: true });\n return marker;\n}\nfunction createDynamic(component, props) {\n const cached = createMemo2(component);\n return createMemo2(() => {\n const component2 = cached();\n switch (typeof component2) {\n case \"function\":\n return untrack2(() => component2(props));\n case \"string\":\n const el = createElement(component2);\n spread(el, props);\n return el;\n default:\n break;\n }\n });\n}\nfunction Dynamic(props) {\n const [, others] = splitProps(props, [\"component\"]);\n return createDynamic(() => props.component, others);\n}\n// src/elements/slot.ts\nimport { BaseRenderable as BaseRenderable2, isTextNodeRenderable as isTextNodeRenderable2, TextNodeRenderable as TextNodeRenderable2, TextRenderable as TextRenderable2, Yoga } from \"@opentui/core\";\n\nclass SlotBaseRenderable extends BaseRenderable2 {\n constructor(id) {\n super({\n id\n });\n }\n add(obj, index) {\n throw new Error(\"Can't add children on an Slot renderable\");\n }\n getChildren() {\n return [];\n }\n remove(id) {}\n insertBefore(obj, anchor) {\n throw new Error(\"Can't add children on an Slot renderable\");\n }\n getRenderable(id) {\n return;\n }\n getChildrenCount() {\n return 0;\n }\n requestRender() {}\n findDescendantById(id) {\n return;\n }\n}\n\nclass TextSlotRenderable extends TextNodeRenderable2 {\n slotParent;\n destroyed = false;\n constructor(id, parent) {\n super({ id });\n this._visible = false;\n this.slotParent = parent;\n }\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n this.slotParent?.destroy();\n super.destroy();\n }\n}\n\nclass LayoutSlotRenderable extends SlotBaseRenderable {\n yogaNode;\n slotParent;\n destroyed = false;\n constructor(id, parent) {\n super(id);\n this._visible = false;\n this.slotParent = parent;\n this.yogaNode = Yoga.default.Node.create();\n this.yogaNode.setDisplay(Yoga.Display.None);\n }\n getLayoutNode() {\n return this.yogaNode;\n }\n updateFromLayout() {}\n updateLayout() {}\n onRemove() {}\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n super.destroy();\n this.slotParent?.destroy();\n }\n}\n\nclass SlotRenderable extends SlotBaseRenderable {\n layoutNode;\n textNode;\n destroyed = false;\n constructor(id) {\n super(id);\n this._visible = false;\n }\n getSlotChild(parent) {\n if (isTextNodeRenderable2(parent) || parent instanceof TextRenderable2) {\n if (!this.textNode) {\n this.textNode = new TextSlotRenderable(`slot-text-${this.id}`, this);\n }\n return this.textNode;\n }\n if (!this.layoutNode) {\n this.layoutNode = new LayoutSlotRenderable(`slot-layout-${this.id}`, this);\n }\n return this.layoutNode;\n }\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n if (this.layoutNode) {\n this.layoutNode.destroy();\n }\n if (this.textNode) {\n this.textNode.destroy();\n }\n }\n}\n\n// src/elements/index.ts\nclass SpanRenderable extends TextNodeRenderable3 {\n _ctx;\n constructor(_ctx, options) {\n super(options);\n this._ctx = _ctx;\n }\n}\nvar textNodeKeys = [\"span\", \"b\", \"strong\", \"i\", \"em\", \"u\", \"a\"];\n\nclass TextModifierRenderable extends SpanRenderable {\n constructor(options, modifier) {\n super(null, options);\n if (modifier === \"b\" || modifier === \"strong\") {\n this.attributes = (this.attributes || 0) | TextAttributes.BOLD;\n } else if (modifier === \"i\" || modifier === \"em\") {\n this.attributes = (this.attributes || 0) | TextAttributes.ITALIC;\n } else if (modifier === \"u\") {\n this.attributes = (this.attributes || 0) | TextAttributes.UNDERLINE;\n }\n }\n}\n\nclass BoldSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"b\");\n }\n}\n\nclass ItalicSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"i\");\n }\n}\n\nclass UnderlineSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"u\");\n }\n}\n\nclass LineBreakRenderable extends SpanRenderable {\n constructor(_ctx, options) {\n super(null, options);\n this.add();\n }\n add() {\n return super.add(`\n`);\n }\n}\n\nclass LinkRenderable extends SpanRenderable {\n constructor(_ctx, options) {\n const linkOptions = {\n ...options,\n link: { url: options.href }\n };\n super(null, linkOptions);\n }\n}\nvar baseComponents = {\n box: BoxRenderable,\n text: TextRenderable3,\n input: InputRenderable2,\n select: SelectRenderable2,\n textarea: TextareaRenderable,\n ascii_font: ASCIIFontRenderable,\n tab_select: TabSelectRenderable2,\n scrollbox: ScrollBoxRenderable,\n code: CodeRenderable,\n diff: DiffRenderable,\n line_number: LineNumberRenderable,\n markdown: MarkdownRenderable,\n span: SpanRenderable,\n strong: BoldSpanRenderable,\n b: BoldSpanRenderable,\n em: ItalicSpanRenderable,\n i: ItalicSpanRenderable,\n u: UnderlineSpanRenderable,\n br: LineBreakRenderable,\n a: LinkRenderable\n};\nvar componentCatalogue = { ...baseComponents };\nfunction extend(objects) {\n Object.assign(componentCatalogue, objects);\n}\nfunction getComponentCatalogue() {\n return componentCatalogue;\n}\n\n// index.ts\nvar render = async (node, rendererOrConfig = {}) => {\n let isDisposed = false;\n let dispose;\n const renderer = rendererOrConfig instanceof CliRenderer ? rendererOrConfig : await createCliRenderer({\n ...rendererOrConfig,\n onDestroy: () => {\n if (!isDisposed) {\n isDisposed = true;\n dispose();\n }\n rendererOrConfig.onDestroy?.();\n }\n });\n if (rendererOrConfig instanceof CliRenderer) {\n renderer.on(\"destroy\", () => {\n if (!isDisposed) {\n isDisposed = true;\n dispose();\n }\n });\n }\n engine2.attach(renderer);\n dispose = _render(() => createComponent2(RendererContext.Provider, {\n get value() {\n return renderer;\n },\n get children() {\n return createComponent2(node, {});\n }\n }), renderer.root);\n};\nvar testRender = async (node, renderConfig = {}) => {\n let isDisposed = false;\n const testSetup = await createTestRenderer({\n ...renderConfig,\n onDestroy: () => {\n if (!isDisposed) {\n isDisposed = true;\n dispose();\n }\n renderConfig.onDestroy?.();\n }\n });\n engine2.attach(testSetup.renderer);\n const dispose = _render(() => createComponent2(RendererContext.Provider, {\n get value() {\n return testSetup.renderer;\n },\n get children() {\n return createComponent2(node, {});\n }\n }), testSetup.renderer.root);\n return testSetup;\n};\nexport {\n useTimeline,\n useTerminalDimensions,\n useSelectionHandler,\n useRenderer,\n usePaste,\n useKeyboard,\n useKeyHandler,\n use,\n textNodeKeys,\n testRender,\n spread,\n setProp,\n render,\n onResize,\n mergeProps3 as mergeProps,\n memo2 as memo,\n insertNode,\n insert,\n getComponentCatalogue,\n extend,\n effect,\n createTextNode,\n createSlotNode,\n createElement,\n createDynamic,\n createComponent2 as createComponent,\n componentCatalogue,\n baseComponents,\n _render,\n UnderlineSpanRenderable,\n TextSlotRenderable,\n SlotRenderable,\n RendererContext,\n Portal,\n LinkRenderable,\n LineBreakRenderable,\n LayoutSlotRenderable,\n ItalicSpanRenderable,\n Dynamic,\n BoldSpanRenderable\n};\n","let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n maxDeadline = 0,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n maxDeadline = currentTime + maxYieldInterval;\n try {\n const hasMoreWork = scheduledCallback(currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxDeadline;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && shouldYieldToHost()) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined,\n effects: undefined,\n done: false,\n getContextId() {\n return getContextId(this.context.count);\n },\n getNextContextId() {\n return getContextId(this.context.count++);\n }\n};\nfunction getContextId(count) {\n const num = String(count),\n len = num.length - 1;\n return sharedConfig.context.id + (len ? String.fromCharCode(96 + len) : \"\") + num;\n}\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: sharedConfig.getNextContextId(),\n count: 0\n };\n}\n\nconst IS_DEV = false;\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst SUPPORTS_PROXY = typeof Proxy === \"function\";\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (typeof pFetcher === \"function\") {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n } else {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = \"initialValue\" in options,\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = sharedConfig.getNextContextId();\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && sharedConfig.has(id)) initP = sharedConfig.load(id);\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n let error;\n const p = initP !== NO_INIT ? initP : untrack(() => {\n try {\n return fetcher(lookup, {\n value: value(),\n refetching\n });\n } catch (fetcherError) {\n error = fetcherError;\n }\n });\n if (error !== undefined) {\n loadEnd(pr, undefined, castError(error), lookup);\n return;\n } else if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"v\" in p) {\n if (p.s === 1) loadEnd(pr, p.v, undefined, lookup);else loadEnd(pr, undefined, castError(p.v), lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n let owner = Owner;\n if (dynamic) createComputed(() => (owner = Owner, load(false)));else load(false);\n return [read, {\n refetch: info => runWithOwner(owner, () => load(info)),\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, options);\n updateComputation(node);\n setDeferred(() => Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (!ExternalSourceConfig && Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return prevValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let value;\n return Owner && Owner.context && (value = Owner.context[context.id]) !== undefined ? value : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n if (ExternalSourceConfig) {\n const {\n factory: oldFactory,\n untrack: oldUntrack\n } = ExternalSourceConfig;\n ExternalSourceConfig = {\n factory: (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n },\n untrack: fn => oldUntrack(() => untrack(fn))\n };\n } else {\n ExternalSourceConfig = {\n factory,\n untrack\n };\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (IS_DEV) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceConfig && c.fn) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n }\n setHydrateContext();\n }\n if (sharedConfig.effects && (sharedConfig.done || !sharedConfig.count)) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount)) runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n if (Transition && Transition.running && node.pure) {\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, owner && owner.owner || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects) Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer, initalValue = undefined) {\n const [s, set] = createSignal(initalValue, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n newLen = newItems.length,\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [],\n newLen = newItems.length;\n newItems[$TRACK];\n return untrack(() => {\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newLen; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newLen;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (SUPPORTS_PROXY && proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const sourcesMap = {};\n const defined = Object.create(null);\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = sourceKeys.length - 1; i >= 0; i--) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined[key]) {\n defined[key] = desc.get ? {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])\n } : desc.value !== undefined ? desc : undefined;\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) sources.push(desc.get.bind(source));else if (desc.value !== undefined) sources.push(() => desc.value);\n }\n }\n }\n }\n const target = {};\n const definedKeys = Object.keys(defined);\n for (let i = definedKeys.length - 1; i >= 0; i--) {\n const key = definedKeys[i],\n desc = defined[key];\n if (desc && desc.get) Object.defineProperty(target, key, desc);else target[key] = desc ? desc.value : undefined;\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n const len = keys.length;\n if (SUPPORTS_PROXY && $PROXY in props) {\n const blocked = len > 1 ? keys.flat() : keys[0];\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.includes(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.includes(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.includes(k));\n }\n }, propTraps));\n return res;\n }\n const objects = [];\n for (let i = 0; i <= len; i++) {\n objects[i] = {};\n }\n for (const propName of Object.getOwnPropertyNames(props)) {\n let keyIndex = len;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].includes(propName)) {\n keyIndex = i;\n break;\n }\n }\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n isDefaultDesc ? objects[keyIndex][propName] = desc.value : Object.defineProperty(objects[keyIndex], propName, desc);\n }\n return objects;\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n !sharedConfig.done && setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) ? untrack(() => {\n if (IS_DEV) ;\n if (!ctx || sharedConfig.done) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }) : \"\");\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? sharedConfig.getNextContextId() : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const conditionValue = createMemo(() => props.when, undefined, undefined);\n const condition = keyed ? conditionValue : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(keyed ? c : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return conditionValue();\n })) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n const chs = children(() => props.children);\n const switchFunc = createMemo(() => {\n const ch = chs();\n const mps = Array.isArray(ch) ? ch : [ch];\n let func = () => undefined;\n for (let i = 0; i < mps.length; i++) {\n const index = i;\n const mp = mps[i];\n const prevFunc = func;\n const conditionValue = createMemo(() => prevFunc() ? undefined : mp.when, undefined, undefined);\n const condition = mp.keyed ? conditionValue : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n func = () => prevFunc() || (condition() ? [index, conditionValue, mp] : undefined);\n }\n return func;\n });\n return createMemo(() => {\n const sel = switchFunc()();\n if (!sel) return props.fallback;\n const [index, conditionValue, mp] = sel;\n const child = mp.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(mp.keyed ? conditionValue() : () => {\n if (untrack(switchFunc)()?.[0] !== index) throw narrowedError(\"Match\");\n return conditionValue();\n })) : child;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load) err = sharedConfig.load(sharedConfig.getContextId());\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = /* #__PURE__ */createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.getContextId();\n let ref = sharedConfig.load(key);\n if (ref) {\n if (typeof ref !== \"object\" || ref.s !== 1) p = ref;else sharedConfig.gather(key);\n }\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(() => {\n if (sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n }, err => {\n error = err;\n set();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"F\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, catchError, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createCliRenderer } from '@opentui/core';\nimport { render } from '@opentui/solid';\nimport { App } from './App.js';\n\nlet isRunning = true;\nlet renderer: Awaited<ReturnType<typeof createCliRenderer>> | null = null;\n\nexport function exitTUI(code = 0): void {\n if (!isRunning) return;\n isRunning = false;\n\n try {\n if (renderer && 'dispose' in renderer) {\n (renderer as { dispose?: () => void }).dispose?.();\n }\n } catch {}\n\n try {\n process.stdout.write('\\x1b[?1049l\\x1b[?25h\\x1b[0m\\x1b[H\\x1b[2J');\n } catch {}\n\n setImmediate(() => process.exit(code));\n}\n\nexport async function startTUI(): Promise<never> {\n process.on('SIGINT', () => exitTUI(0));\n process.on('SIGTERM', () => exitTUI(0));\n process.on('uncaughtException', (err) => {\n console.error('TUI Error:', err.message);\n exitTUI(1);\n });\n process.on('unhandledRejection', (err) => {\n console.error('TUI Error:', err);\n exitTUI(1);\n });\n\n renderer = await createCliRenderer({\n exitOnCtrlC: false,\n useMouse: true,\n enableMouseMovement: true,\n });\n\n try {\n await render(() => <App onExit={exitTUI} />, renderer);\n } catch (err) {\n console.error('Render failed:', err);\n exitTUI(1);\n }\n\n return new Promise(() => {});\n}\n\nexport { type Screen } from './state/types.js';\nexport { App } from './App.js';\nexport * from './theme/index.js';\nexport * from './state/index.js';\nexport * from './utils/index.js';\nexport * from './components/index.js';\nexport * from './screens/index.js';\n","import { createSignal, createEffect, onCleanup, Show, Switch, Match } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { execFile } from 'node:child_process';\nimport { type Screen, NAV_KEYS } from './state/types.js';\nimport { Splash } from './components/Splash.js';\nimport { Sidebar } from './components/Sidebar.js';\nimport { StatusBar } from './components/StatusBar.js';\nimport {\n Home, Browse, Installed, Marketplace, Settings, Recommend,\n Translate, Context, Memory, Team, Plugins, Methodology,\n Plan, Workflow, Execute, History, Sync, Help, Mesh, Message,\n} from './screens/index.js';\n\nconst DOCS_URL = 'https://agenstskills.com/docs';\n\nfunction openUrl(url: string): void {\n if (process.platform === 'win32') {\n execFile('cmd', ['/c', 'start', '', url]);\n } else {\n const cmd = process.platform === 'darwin' ? 'open' : 'xdg-open';\n execFile(cmd, [url]);\n }\n}\n\ninterface AppProps {\n onExit?: (code?: number) => void;\n}\n\nexport function App(props: AppProps) {\n const [showSplash, setShowSplash] = createSignal(true);\n const [currentScreen, setCurrentScreen] = createSignal<Screen>('home');\n const [showSidebar, setShowSidebar] = createSignal(true);\n const [dimensions, setDimensions] = createSignal({\n cols: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n });\n\n createEffect(() => {\n const handleResize = () => {\n setDimensions({\n cols: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n });\n };\n process.stdout.on('resize', handleResize);\n onCleanup(() => {\n process.stdout.off('resize', handleResize);\n });\n });\n\n const cols = () => dimensions().cols;\n const rows = () => dimensions().rows;\n const sidebarVisible = () => showSidebar() && cols() >= 80;\n const sidebarWidth = () => {\n if (!sidebarVisible()) return 0;\n if (cols() >= 100) return 24;\n return 18;\n };\n const statusBarHeight = 2;\n const contentHeight = () => rows() - statusBarHeight;\n\n const handleNavigate = (newScreen: Screen) => {\n setCurrentScreen(newScreen);\n };\n\n const handleSplashComplete = () => {\n setShowSplash(false);\n };\n\n useKeyboard((key: { name?: string; ctrl?: boolean; sequence?: string }) => {\n if (showSplash()) {\n setShowSplash(false);\n return;\n }\n\n if (key.name === 'q' || (key.ctrl && key.name === 'c')) {\n props.onExit ? props.onExit(0) : process.exit(0);\n return;\n }\n\n if (key.name === 'd') {\n openUrl(DOCS_URL);\n return;\n }\n\n if (key.sequence === '\\\\') {\n setShowSidebar((v) => !v);\n return;\n }\n\n const targetScreen = NAV_KEYS[key.name || ''];\n if (targetScreen) {\n setCurrentScreen(targetScreen);\n }\n\n if (key.name === 'escape' && currentScreen() !== 'home') {\n setCurrentScreen('home');\n }\n });\n\n const screenProps = () => ({\n onNavigate: handleNavigate,\n cols: Math.max(1, cols() - sidebarWidth() - 2),\n rows: Math.max(1, contentHeight() - 1),\n });\n\n return (\n <Show when={!showSplash()} fallback={<Splash onComplete={handleSplashComplete} duration={3000} />}>\n <box flexDirection=\"column\" height={rows()}>\n <box flexDirection=\"row\" height={contentHeight()}>\n <Show when={sidebarVisible()}>\n <Sidebar\n screen={currentScreen()}\n onNavigate={handleNavigate}\n />\n </Show>\n\n <box flexDirection=\"column\" flexGrow={1} paddingX={1}>\n <Switch fallback={<Home {...screenProps()} />}>\n <Match when={currentScreen() === 'home'}><Home {...screenProps()} /></Match>\n <Match when={currentScreen() === 'browse'}><Browse {...screenProps()} /></Match>\n <Match when={currentScreen() === 'installed'}><Installed {...screenProps()} /></Match>\n <Match when={currentScreen() === 'marketplace'}><Marketplace {...screenProps()} /></Match>\n <Match when={currentScreen() === 'settings'}><Settings {...screenProps()} /></Match>\n <Match when={currentScreen() === 'recommend'}><Recommend {...screenProps()} /></Match>\n <Match when={currentScreen() === 'translate'}><Translate {...screenProps()} /></Match>\n <Match when={currentScreen() === 'context'}><Context {...screenProps()} /></Match>\n <Match when={currentScreen() === 'memory'}><Memory {...screenProps()} /></Match>\n <Match when={currentScreen() === 'team'}><Team {...screenProps()} /></Match>\n <Match when={currentScreen() === 'plugins'}><Plugins {...screenProps()} /></Match>\n <Match when={currentScreen() === 'methodology'}><Methodology {...screenProps()} /></Match>\n <Match when={currentScreen() === 'plan'}><Plan {...screenProps()} /></Match>\n <Match when={currentScreen() === 'workflow'}><Workflow {...screenProps()} /></Match>\n <Match when={currentScreen() === 'execute'}><Execute {...screenProps()} /></Match>\n <Match when={currentScreen() === 'history'}><History {...screenProps()} /></Match>\n <Match when={currentScreen() === 'sync'}><Sync {...screenProps()} /></Match>\n <Match when={currentScreen() === 'help'}><Help {...screenProps()} /></Match>\n <Match when={currentScreen() === 'mesh'}><Mesh {...screenProps()} /></Match>\n <Match when={currentScreen() === 'message'}><Message {...screenProps()} /></Match>\n </Switch>\n </box>\n </box>\n\n <StatusBar />\n </box>\n </Show>\n );\n}\n\nexport { type Screen };\n","export interface SkillItem {\n name: string;\n description?: string;\n source?: string;\n installs?: number;\n enabled?: boolean;\n quality?: number;\n grade?: string;\n warnings?: number;\n}\n\nexport interface RepoInfo {\n source: string;\n name: string;\n}\n\nexport interface FetchedSkill {\n name: string;\n source: string;\n repoName: string;\n description?: string;\n}\n\nexport type Screen =\n | 'home' | 'browse' | 'installed' | 'marketplace' | 'recommend'\n | 'translate' | 'context' | 'memory' | 'team' | 'plugins'\n | 'methodology' | 'plan' | 'workflow' | 'execute' | 'history'\n | 'sync' | 'settings' | 'help' | 'mesh' | 'message';\n\nexport const NAV_KEYS: Record<string, Screen> = {\n h: 'home', m: 'marketplace', b: 'browse', w: 'workflow',\n x: 'execute', y: 'history', r: 'recommend', t: 'translate',\n c: 'context', e: 'memory', i: 'installed', s: 'sync',\n a: 'team', p: 'plugins', o: 'methodology', n: 'plan',\n ',': 'settings', '/': 'help', 'g': 'mesh', 'j': 'message',\n} as const;\n\nexport const STATUS_BAR_SHORTCUTS = 'b browse m market i installed s sync / help q quit';\n\nexport interface ScreenMeta {\n key: string;\n label: string;\n screen: Screen;\n}\n\nexport interface SidebarSection {\n section: string;\n items: ScreenMeta[];\n}\n\nexport const SIDEBAR_NAV: SidebarSection[] = [\n {\n section: 'Discover',\n items: [\n { key: 'h', label: 'Home', screen: 'home' },\n { key: 'b', label: 'Browse', screen: 'browse' },\n { key: 'm', label: 'Market', screen: 'marketplace' },\n { key: 'r', label: 'Recommend', screen: 'recommend' },\n ],\n },\n {\n section: 'Manage',\n items: [\n { key: 'i', label: 'Installed', screen: 'installed' },\n { key: 's', label: 'Sync', screen: 'sync' },\n { key: 't', label: 'Translate', screen: 'translate' },\n ],\n },\n {\n section: 'Execute',\n items: [\n { key: 'w', label: 'Workflows', screen: 'workflow' },\n { key: 'x', label: 'Execute', screen: 'execute' },\n { key: 'n', label: 'Plan', screen: 'plan' },\n ],\n },\n {\n section: 'Team',\n items: [\n { key: 'a', label: 'Team', screen: 'team' },\n { key: 'c', label: 'Context', screen: 'context' },\n { key: 'e', label: 'Memory', screen: 'memory' },\n { key: 'g', label: 'Mesh', screen: 'mesh' },\n { key: 'j', label: 'Messages', screen: 'message' },\n ],\n },\n {\n section: 'More',\n items: [\n { key: 'p', label: 'Plugins', screen: 'plugins' },\n { key: 'o', label: 'Methods', screen: 'methodology' },\n { key: ',', label: 'Settings', screen: 'settings' },\n ],\n },\n];\n","/**\n * Monochromatic color palette for SkillKit TUI\n * Inspired by OpenSync's elegant dark theme\n */\n\nexport const colors = {\n // Base (monochromatic grays)\n background: '#0d0d0d',\n surface: '#1a1a1a',\n surfaceHover: '#262626',\n border: '#333333',\n borderDim: '#1f1f1f',\n\n // Text hierarchy\n text: '#ffffff',\n textSecondary: '#a0a0a0',\n textMuted: '#666666',\n\n // Accent (single brand color - vibrant green)\n accent: '#00ff88',\n accentDim: '#00cc6a',\n\n // Status colors (subtle variations)\n success: '#22c55e',\n warning: '#eab308',\n error: '#ef4444',\n info: '#3b82f6',\n\n // Feature-specific accent colors (for colored keywords)\n sync: '#00d9ff', // cyan\n browse: '#22c55e', // green\n recommend: '#fbbf24', // yellow/gold\n translate: '#a855f7', // purple\n workflow: '#3b82f6', // blue\n team: '#ffffff', // white\n private: '#ef4444', // red\n tag: '#fbbf24', // yellow\n export: '#22c55e', // green\n delete: '#ef4444', // red\n} as const;\n\nexport type ColorName = keyof typeof colors;\nexport type ColorValue = (typeof colors)[ColorName];\n\n/**\n * Get a color value by name\n */\nexport function getColor(name: ColorName): ColorValue {\n return colors[name];\n}\n\n/**\n * Terminal-safe color names for OpenTUI\n * Maps our design system colors to terminal-compatible values\n */\nexport const terminalColors = {\n background: 'black',\n surface: 'black',\n text: 'white',\n textSecondary: 'gray',\n textMuted: 'gray',\n accent: 'green',\n success: 'green',\n warning: 'yellow',\n error: 'red',\n info: 'blue',\n sync: 'cyan',\n browse: 'green',\n recommend: 'yellow',\n translate: 'magenta',\n workflow: 'blue',\n team: 'white',\n border: 'gray',\n} as const;\n","/**\n * Helper utilities for agent and skill operations\n */\nimport {\n loadConfig,\n getSearchDirs as coreGetSearchDirs,\n getInstallDir as coreGetInstallDir,\n saveSkillMetadata as coreSaveSkillMetadata,\n} from '@skillkit/core';\nimport { getAdapter } from '@skillkit/agents';\nimport type { AgentType, AgentAdapterInfo, SkillMetadata } from '@skillkit/core';\nimport { readFileSync } from 'node:fs';\nimport { join, dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\n/**\n * Get search directories for skills based on agent type\n * @param agentType - Optional agent type (defaults to configured agent)\n * @returns Array of directories to search for skills\n */\nexport function getSearchDirs(agentType?: AgentType): string[] {\n const type = agentType || loadConfig().agent;\n const adapter = getAdapter(type);\n const adapterInfo: AgentAdapterInfo = {\n type: adapter.type,\n name: adapter.name,\n skillsDir: adapter.skillsDir,\n configFile: adapter.configFile,\n };\n return coreGetSearchDirs(adapterInfo);\n}\n\n/**\n * Get installation directory for skills\n * @param global - Whether to get global or project-local directory\n * @param agentType - Optional agent type (defaults to configured agent)\n * @returns Installation directory path\n */\nexport function getInstallDir(global = false, agentType?: AgentType): string {\n const type = agentType || loadConfig().agent;\n const adapter = getAdapter(type);\n const adapterInfo: AgentAdapterInfo = {\n type: adapter.type,\n name: adapter.name,\n skillsDir: adapter.skillsDir,\n configFile: adapter.configFile,\n };\n return coreGetInstallDir(adapterInfo, global);\n}\n\n/**\n * Save skill metadata to a skill directory\n * @param skillDir - Directory containing the skill\n * @param metadata - Metadata to save\n */\nexport function saveSkillMetadata(\n skillDir: string,\n metadata: SkillMetadata\n): void {\n coreSaveSkillMetadata(skillDir, metadata);\n}\n\n/**\n * Get version from package.json\n * @returns Version string\n */\nexport function getVersion(): string {\n try {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n const paths = [\n join(__dirname, '..', 'package.json'),\n join(__dirname, '..', '..', 'package.json'),\n join(__dirname, '..', '..', '..', 'package.json'),\n ];\n for (const packagePath of paths) {\n try {\n const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));\n if (packageJson.name === '@skillkit/tui' || packageJson.name === 'skillkit') {\n return packageJson.version || '1.8.0';\n }\n } catch {}\n }\n return '1.8.0';\n } catch {\n return '1.8.0';\n }\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { getVersion } from '../utils/helpers.js';\n\nconst LOGO_FRAMES = [\n [\n ' ',\n ' · · · · · · · · · · · · · · · ',\n ' ',\n ],\n [\n ' ',\n ' ━━━ ━ ━ ━ ━ ━ ━ ━ ━━━ ',\n ' ',\n ],\n [\n ' ┌──┐ ┬ ┌─ ┬ ┬ ┬ ┬ ┌─ ┬ ┌─┐ ',\n ' └──┐ │ │ │ │ │ │ │ │ │ ',\n ' └──┘ ┴ └─ ┴ ┴─┘ ┴─┘ ┴ └─ ┴ ┴ ',\n ],\n [\n ' ╔═╗ ╦╔═ ╦ ╦ ╦ ╦╔═ ╦╔╦╗ ',\n ' ╚═╗ ╠╩╗ ║ ║ ║ ╠╩╗ ║ ║ ',\n ' ╚═╝ ╩ ╩ ╩ ╩═╝ ╩═╝ ╩ ╩ ╩ ╩ ',\n ],\n [\n ' ███████╗██╗ ██╗██╗██╗ ██╗ ██╗ ██╗██╗████████╗',\n ' ██╔════╝██║ ██╔╝██║██║ ██║ ██║ ██╔╝██║╚══██╔══╝',\n ' ███████╗█████╔╝ ██║██║ ██║ █████╔╝ ██║ ██║ ',\n ' ╚════██║██╔═██╗ ██║██║ ██║ ██╔═██╗ ██║ ██║ ',\n ' ███████║██║ ██╗██║███████╗███████╗██║ ██╗██║ ██║ ',\n ' ╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ',\n ],\n];\n\nconst LOGO_SMALL = [\n ' ╔═╗╦╔═╦╦ ╦ ╦╔═╦╔╦╗ ',\n ' ╚═╗╠╩╗║║ ║ ╠╩╗║ ║ ',\n ' ╚═╝╩ ╩╩╩═╝╩═╝╩ ╩╩ ╩ ',\n];\n\nconst SPINNER = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n\nconst PROGRESS = {\n empty: '░',\n filled: '█',\n head: '▓',\n};\n\nconst PHASES = [\n { message: 'Initializing', detail: 'skill engine' },\n { message: 'Connecting', detail: 'agent network' },\n { message: 'Loading', detail: 'skill manifests' },\n { message: 'Syncing', detail: 'configurations' },\n { message: 'Ready', detail: '' },\n];\n\ninterface SplashProps {\n onComplete: () => void;\n duration?: number;\n}\n\nexport function Splash(props: SplashProps) {\n const [frame, setFrame] = createSignal(0);\n const [progress, setProgress] = createSignal(0);\n const [spinnerFrame, setSpinnerFrame] = createSignal(0);\n const [phase, setPhase] = createSignal(0);\n const [fadeIn, setFadeIn] = createSignal(0);\n const [particles, setParticles] = createSignal<string[]>([]);\n\n const version = createMemo(() => getVersion());\n const cols = process.stdout.columns || 80;\n const rows = process.stdout.rows || 24;\n const useSmallLogo = cols < 70;\n\n const currentLogo = () => {\n return useSmallLogo ? LOGO_SMALL : (LOGO_FRAMES[Math.min(frame(), 4)] || LOGO_FRAMES[4]);\n };\n\n const maxWidth = () => Math.max(...currentLogo().map((l) => l.length));\n\n const generateParticles = () => {\n const chars = ['·', '∙', '•', '○', '◦', '◌', '◍', '◎'];\n return Array(cols)\n .fill(0)\n .map(() => (Math.random() > 0.97 ? chars[Math.floor(Math.random() * chars.length)] : ' '))\n .join('');\n };\n\n createEffect(() => {\n if (frame() >= 4) return;\n const timer = setTimeout(() => setFrame((f) => f + 1), 200);\n onCleanup(() => clearTimeout(timer));\n });\n\n createEffect(() => {\n if (fadeIn() >= 10) return;\n const timer = setTimeout(() => setFadeIn((f) => f + 1), 50);\n onCleanup(() => clearTimeout(timer));\n });\n\n createEffect(() => {\n const interval = setInterval(() => {\n setProgress((p) => {\n const newProgress = p + (Math.random() * 3 + 1);\n if (newProgress >= 100) {\n clearInterval(interval);\n return 100;\n }\n return newProgress;\n });\n }, 50);\n onCleanup(() => clearInterval(interval));\n });\n\n createEffect(() => {\n const phaseProgress = progress() / 20;\n setPhase(Math.min(Math.floor(phaseProgress), PHASES.length - 1));\n });\n\n createEffect(() => {\n const interval = setInterval(() => {\n setSpinnerFrame((f) => (f + 1) % SPINNER.length);\n }, 80);\n onCleanup(() => clearInterval(interval));\n });\n\n createEffect(() => {\n const interval = setInterval(() => {\n setParticles((prev) => {\n const newParticles = [...prev];\n if (newParticles.length > 3) newParticles.shift();\n newParticles.push(generateParticles());\n return newParticles;\n });\n }, 150);\n onCleanup(() => clearInterval(interval));\n });\n\n createEffect(() => {\n const timer = setTimeout(props.onComplete, props.duration ?? 3500);\n onCleanup(() => clearTimeout(timer));\n });\n\n const pad = () => ' '.repeat(Math.max(0, Math.floor((cols - maxWidth()) / 2)));\n const progressWidth = Math.max(1, Math.min(40, cols - 20));\n const progressPad = ' '.repeat(Math.max(0, Math.floor((cols - progressWidth) / 2)));\n\n const filledWidth = () => Math.min(Math.floor((progress() / 100) * progressWidth), progressWidth);\n const emptyWidth = () => Math.max(0, progressWidth - filledWidth() - 1);\n const progressBar = () =>\n PROGRESS.filled.repeat(filledWidth()) +\n (filledWidth() < progressWidth ? PROGRESS.head : '') +\n PROGRESS.empty.repeat(emptyWidth());\n\n const currentPhase = () => PHASES[phase()];\n\n return (\n <box flexDirection=\"column\" height={rows}>\n <text fg={terminalColors.textMuted}>{particles()[0] || ''}</text>\n\n <box flexGrow={1} />\n\n <box flexDirection=\"column\" alignItems=\"center\">\n <For each={currentLogo()}>\n {(line, idx) => (\n <text fg={frame() >= 4 ? terminalColors.accent : terminalColors.textMuted}>\n {frame() >= 4 ? (\n <b>\n {pad()}\n {line}\n </b>\n ) : (\n <>\n {pad()}\n {line}\n </>\n )}\n </text>\n )}\n </For>\n </box>\n\n <text> </text>\n <Show when={fadeIn() > 3}>\n <text fg={terminalColors.textSecondary}>\n {pad()}\n {' '}universal skills for ai coding agents\n </text>\n </Show>\n\n <Show when={fadeIn() > 5}>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n {pad()}\n {' '}v{version()}\n </text>\n </Show>\n\n <text> </text>\n <text> </text>\n\n <Show when={fadeIn() > 7}>\n <box flexDirection=\"column\" alignItems=\"center\">\n <box flexDirection=\"row\">\n <text fg={terminalColors.accent}>\n {progressPad}\n {SPINNER[spinnerFrame()]}{' '}\n </text>\n <text fg={terminalColors.text}>\n <b>{currentPhase().message}</b>\n </text>\n <Show when={currentPhase().detail}>\n <text fg={terminalColors.textMuted}> {currentPhase().detail}</text>\n </Show>\n </box>\n\n <text> </text>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>{progressPad}[</text>\n <text fg={terminalColors.accent}>{progressBar()}</text>\n <text fg={terminalColors.textMuted}>]</text>\n <text fg={terminalColors.textSecondary}> {Math.floor(progress())}%</text>\n </box>\n </box>\n </Show>\n\n <box flexGrow={1} />\n\n <box flexDirection=\"column\" alignItems=\"center\">\n <text fg={terminalColors.textMuted}>\n {progressPad}\n {' '}press any key to skip\n </text>\n <text> </text>\n <text fg={terminalColors.textMuted}>{particles()[1] || ''}</text>\n </box>\n </box>\n );\n}\n","/**\n * Unicode symbols and agent logos for SkillKit TUI\n * Monochromatic design system for terminal display\n */\n\n/**\n * Agent logo definitions with monochromatic icons\n */\nexport interface AgentLogo {\n icon: string;\n name: string;\n company: string;\n}\n\n/**\n * All 32 supported agents with monochromatic Unicode logos\n */\nexport const AGENT_LOGOS: Record<string, AgentLogo> = {\n 'claude-code': { icon: '⟁', name: 'Claude Code', company: 'Anthropic' },\n 'cursor': { icon: '◫', name: 'Cursor', company: 'Anysphere' },\n 'codex': { icon: '◎', name: 'Codex CLI', company: 'OpenAI' },\n 'gemini-cli': { icon: '✦', name: 'Gemini CLI', company: 'Google' },\n 'opencode': { icon: '⬡', name: 'OpenCode', company: 'SST' },\n 'github-copilot': { icon: '◈', name: 'Copilot', company: 'GitHub' },\n 'windsurf': { icon: '≋', name: 'Windsurf', company: 'Codeium' },\n 'droid': { icon: '▣', name: 'Droid', company: 'Factory' },\n 'goose': { icon: '◇', name: 'Goose', company: 'Block' },\n 'amp': { icon: '△', name: 'Amp', company: 'Sourcegraph' },\n 'kilo': { icon: '◉', name: 'Kilo Code', company: '' },\n 'kiro-cli': { icon: '⬢', name: 'Kiro', company: 'AWS' },\n 'roo': { icon: '⊙', name: 'Roo Code', company: '' },\n 'trae': { icon: '◆', name: 'Trae', company: 'ByteDance' },\n 'antigravity': { icon: '⊛', name: 'Antigravity', company: '' },\n 'clawdbot': { icon: '⟐', name: 'Clawdbot', company: '' },\n 'cline': { icon: '⊕', name: 'Cline', company: '' },\n 'codebuddy': { icon: '⊗', name: 'CodeBuddy', company: '' },\n 'commandcode': { icon: '⊘', name: 'CommandCode', company: '' },\n 'continue': { icon: '⊞', name: 'Continue', company: '' },\n 'crush': { icon: '⊟', name: 'Crush', company: '' },\n 'factory': { icon: '⊠', name: 'Factory', company: '' },\n 'mcpjam': { icon: '⊡', name: 'MCPJam', company: '' },\n 'mux': { icon: '⊢', name: 'Mux', company: '' },\n 'neovate': { icon: '⊣', name: 'Neovate', company: '' },\n 'openhands': { icon: '⊤', name: 'OpenHands', company: '' },\n 'pi': { icon: '⊥', name: 'Pi', company: '' },\n 'qoder': { icon: '⊦', name: 'Qoder', company: '' },\n 'qwen': { icon: '⊧', name: 'Qwen', company: 'Alibaba' },\n 'vercel': { icon: '▲', name: 'Vercel', company: 'Vercel' },\n 'zencoder': { icon: '⊩', name: 'Zencoder', company: '' },\n 'universal': { icon: '●', name: 'Universal', company: '' },\n} as const;\n\n/**\n * UI symbols for status and navigation\n */\nexport const symbols = {\n // Navigation\n pointer: '▸',\n pointerInactive: ' ',\n bullet: '●',\n bulletEmpty: '○',\n\n // Status\n success: '✓',\n error: '✗',\n warning: '⚠',\n info: 'ℹ',\n pending: '○',\n active: '●',\n synced: '●',\n\n // Progress\n progressFilled: '█',\n progressEmpty: '░',\n\n // Spinner frames\n spinner: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'] as const,\n\n // Arrows\n arrowUp: '↑',\n arrowDown: '↓',\n arrowLeft: '←',\n arrowRight: '→',\n\n // Decorative\n diamond: '◆',\n diamondEmpty: '◇',\n star: '★',\n starEmpty: '☆',\n\n // Box drawing\n horizontalLine: '─',\n verticalLine: '│',\n topLeft: '┌',\n topRight: '┐',\n bottomLeft: '└',\n bottomRight: '┘',\n\n // Brand\n brandIcon: '◆',\n} as const;\n\nexport type SymbolName = keyof typeof symbols;\n\n/**\n * Get agent logo by agent type ID\n */\nexport function getAgentLogo(agentType: string): AgentLogo | undefined {\n return AGENT_LOGOS[agentType];\n}\n\n/**\n * Get all agent types\n */\nexport function getAgentTypes(): string[] {\n return Object.keys(AGENT_LOGOS);\n}\n\n/**\n * Get formatted agent display string (icon + name)\n */\nexport function formatAgentDisplay(agentType: string): string {\n const logo = AGENT_LOGOS[agentType];\n if (!logo) return agentType;\n return `${logo.icon} ${logo.name}`;\n}\n","import { For, Show } from 'solid-js';\nimport { type Screen, SIDEBAR_NAV } from '../state/types.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface SidebarProps {\n screen: Screen;\n onNavigate: (screen: Screen) => void;\n}\n\nexport function Sidebar(props: SidebarProps) {\n const version = getVersion();\n\n return (\n <box flexDirection=\"column\" width={18} paddingRight={1}>\n <text fg={terminalColors.accent}>\n <b>{symbols.brandIcon} skillkit</b>\n </text>\n <text fg={terminalColors.textMuted}>v{version}</text>\n <text> </text>\n\n <For each={SIDEBAR_NAV}>\n {(nav, idx) => (\n <box flexDirection=\"column\">\n <Show when={idx() > 0}>\n <text> </text>\n </Show>\n <text fg={terminalColors.textMuted}>\n <i>{nav.section}</i>\n </text>\n <For each={nav.items}>\n {(item) => {\n const active = () => props.screen === item.screen;\n return (\n <text fg={active() ? terminalColors.accent : terminalColors.text}>\n {active() ? (\n <b>\n {symbols.pointer} {item.label}\n </b>\n ) : (\n <>\n {symbols.pointerInactive} {item.label}\n </>\n )}\n </text>\n );\n }}\n </For>\n </box>\n )}\n </For>\n\n <box flexGrow={1} />\n <text fg={terminalColors.textMuted}>{symbols.horizontalLine.repeat(14)}</text>\n <text fg={terminalColors.textMuted}>/ help q quit</text>\n </box>\n );\n}\n","import { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { STATUS_BAR_SHORTCUTS } from '../state/types.js';\n\ninterface StatusBarProps {\n message?: string;\n messageType?: 'info' | 'success' | 'error' | 'warning';\n shortcuts?: string;\n}\n\nexport function StatusBar(props: StatusBarProps) {\n const messageType = () => props.messageType ?? 'info';\n const shortcuts = () => props.shortcuts ?? STATUS_BAR_SHORTCUTS;\n\n const messageColors = {\n info: terminalColors.info,\n success: terminalColors.success,\n error: terminalColors.error,\n warning: terminalColors.warning,\n };\n\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>{'\\u2500'.repeat(70)}</text>\n <Show when={props.message} fallback={<text fg={terminalColors.textMuted}>{shortcuts()}</text>}>\n <text fg={messageColors[messageType()]}>{props.message}</text>\n </Show>\n </box>\n );\n}\n","/**\n * Navigation state management for SkillKit TUI\n */\nimport type { Screen } from './types.js';\nimport { NAV_KEYS } from './types.js';\n\n/**\n * Navigation state\n */\nexport interface NavigationState {\n currentScreen: Screen;\n previousScreen: Screen | null;\n history: Screen[];\n}\n\n/**\n * Create initial navigation state\n */\nexport function createNavigationState(): NavigationState {\n return {\n currentScreen: 'home',\n previousScreen: null,\n history: ['home'],\n };\n}\n\n/**\n * Navigate to a new screen\n */\nexport function navigateTo(state: NavigationState, screen: Screen): NavigationState {\n if (state.currentScreen === screen) return state;\n\n return {\n currentScreen: screen,\n previousScreen: state.currentScreen,\n history: [...state.history, screen],\n };\n}\n\n/**\n * Go back to previous screen (or home)\n */\nexport function goBack(state: NavigationState): NavigationState {\n const previousScreen = state.previousScreen || 'home';\n return {\n currentScreen: previousScreen,\n previousScreen: state.history[state.history.length - 3] || null,\n history: state.history.slice(0, -1),\n };\n}\n\n/**\n * Get screen from key press\n */\nexport function getScreenFromKey(key: string): Screen | undefined {\n return NAV_KEYS[key];\n}\n\n/**\n * Check if a key is a navigation key\n */\nexport function isNavKey(key: string): boolean {\n return key in NAV_KEYS;\n}\n\nexport { NAV_KEYS };\n","/**\n * Skills state management for SkillKit TUI\n */\nimport { findAllSkills, evaluateSkillDirectory, getQualityGrade } from '@skillkit/core';\nimport { rmSync } from 'node:fs';\nimport { resolve, normalize } from 'node:path';\nimport { getSearchDirs } from '../utils/helpers.js';\nimport type { SkillItem } from './types.js';\nimport type { AgentType } from '@skillkit/core';\n\n/**\n * Detailed skill info including path for translation\n */\nexport interface SkillWithDetails {\n name: string;\n description?: string;\n path: string;\n source?: string;\n enabled: boolean;\n}\n\n/**\n * Skills store state\n */\nexport interface SkillsState {\n skills: SkillItem[];\n loading: boolean;\n error: string | null;\n}\n\n/**\n * Create initial skills state\n */\nexport function createSkillsState(): SkillsState {\n return {\n skills: [],\n loading: true,\n error: null,\n };\n}\n\n/**\n * Load installed skills\n * @param agentType - Optional agent type to load skills for\n * @returns Updated skills state\n */\nexport function loadSkills(agentType?: AgentType): SkillsState {\n try {\n const searchDirs = getSearchDirs(agentType);\n const foundSkills = findAllSkills(searchDirs);\n\n const skillItems: SkillItem[] = foundSkills.map((s) => {\n const quality = evaluateSkillDirectory(s.path);\n return {\n name: s.name,\n description: s.description,\n source: s.metadata?.source,\n enabled: s.enabled,\n quality: quality?.overall,\n grade: quality ? getQualityGrade(quality.overall) : undefined,\n warnings: quality?.warnings.length,\n };\n });\n\n return {\n skills: skillItems,\n loading: false,\n error: null,\n };\n } catch (err) {\n return {\n skills: [],\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load skills',\n };\n }\n}\n\n/**\n * Remove a skill by name\n * @param skillName - Name of the skill to remove\n * @param agentType - Optional agent type\n * @returns true if removed, false otherwise\n */\nexport function removeSkill(skillName: string, agentType?: AgentType): boolean {\n try {\n const searchDirs = getSearchDirs(agentType);\n const allSkills = findAllSkills(searchDirs);\n const skill = allSkills.find((s) => s.name === skillName);\n\n if (skill) {\n const normalizedPath = normalize(resolve(skill.path));\n const isWithinSearchDirs = searchDirs.some((dir) => {\n const normalizedDir = normalize(resolve(dir));\n return normalizedPath.startsWith(normalizedDir + '/') || normalizedPath === normalizedDir;\n });\n\n if (!isWithinSearchDirs) {\n return false;\n }\n\n rmSync(skill.path, { recursive: true, force: true });\n return true;\n }\n return false;\n } catch {\n return false;\n }\n}\n\n/**\n * Filter skills by search query\n */\nexport function filterSkills(skills: SkillItem[], query: string): SkillItem[] {\n if (!query.trim()) return skills;\n\n const lowerQuery = query.toLowerCase();\n return skills.filter(\n (s) =>\n s.name.toLowerCase().includes(lowerQuery) ||\n s.description?.toLowerCase().includes(lowerQuery) ||\n s.source?.toLowerCase().includes(lowerQuery)\n );\n}\n\n/**\n * Load skills with full details including path for translation\n * @param agentType - Optional agent type to load skills for\n * @returns Array of skills with path details\n */\nexport function loadSkillsWithDetails(agentType?: AgentType): SkillWithDetails[] {\n try {\n const searchDirs = getSearchDirs(agentType);\n const foundSkills = findAllSkills(searchDirs);\n\n return foundSkills.map((s) => ({\n name: s.name,\n description: s.description,\n path: s.path,\n source: s.metadata?.source,\n enabled: s.enabled,\n }));\n } catch {\n return [];\n }\n}\n","/**\n * Agent state management for SkillKit TUI\n */\nimport { loadConfig } from '@skillkit/core';\nimport { detectAgent, getAdapter, getAllAdapters } from '@skillkit/agents';\nimport type { AgentType } from '@skillkit/core';\n\n/**\n * Agent status information\n */\nexport interface AgentStatus {\n type: AgentType;\n name: string;\n detected: boolean;\n configured: boolean;\n}\n\n/**\n * Agents state\n */\nexport interface AgentsState {\n agents: AgentStatus[];\n currentAgent: AgentType;\n loading: boolean;\n error: string | null;\n}\n\n/**\n * Create initial agents state\n */\nexport function createAgentsState(): AgentsState {\n return {\n agents: [],\n currentAgent: 'universal',\n loading: true,\n error: null,\n };\n}\n\n/**\n * Load all agents with their detection status\n */\nexport async function loadAgents(): Promise<AgentsState> {\n try {\n const config = loadConfig();\n const currentAgent = config.agent || 'universal';\n const detectedAgent = await detectAgent();\n const allAdapters = getAllAdapters();\n\n const agents: AgentStatus[] = allAdapters.map((adapter) => ({\n type: adapter.type,\n name: adapter.name,\n detected: adapter.type === detectedAgent,\n configured: adapter.type === currentAgent,\n }));\n\n return {\n agents,\n currentAgent,\n loading: false,\n error: null,\n };\n } catch (err) {\n return {\n agents: [],\n currentAgent: 'universal',\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load agents',\n };\n }\n}\n\n/**\n * Get count of detected agents\n */\nexport function getDetectedAgentCount(state: AgentsState): number {\n return state.agents.filter((a) => a.detected).length;\n}\n\n/**\n * Get list of detected agents\n */\nexport function getDetectedAgents(state: AgentsState): AgentStatus[] {\n return state.agents.filter((a) => a.detected);\n}\n\n/**\n * Get agent adapter by type\n */\nexport function getAgentAdapter(type: AgentType) {\n return getAdapter(type);\n}\n\n/**\n * Total number of supported agents (derived from adapters)\n */\nexport const TOTAL_AGENTS = getAllAdapters().length;\n","/**\n * Marketplace state management for SkillKit TUI\n */\nimport { detectProvider, loadConfig, extractFrontmatter } from '@skillkit/core';\nimport { readFileSync, existsSync, rmSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { SkillItem, RepoInfo, FetchedSkill } from './types.js';\n\n/**\n * Default repos loaded from marketplace/sources.json (single source of truth)\n * Import at runtime to allow updates without code changes\n */\nimport sourcesData from '../../../../marketplace/sources.json' with { type: 'json' };\n\nexport const DEFAULT_REPOS: RepoInfo[] = sourcesData.sources.map((s: { source: string; name: string }) => ({\n source: s.source,\n name: s.name,\n}));\n\n/**\n * Marketplace state\n */\nexport interface MarketplaceState {\n allSkills: FetchedSkill[];\n filteredSkills: FetchedSkill[];\n loading: boolean;\n error: string | null;\n currentRepo: string | null;\n fetchedRepos: Set<string>;\n failedRepos: string[];\n repos: RepoInfo[];\n}\n\n/**\n * Get marketplace repos from config or use defaults\n */\nexport function getMarketplaceRepos(): RepoInfo[] {\n try {\n const config = loadConfig();\n if (config.marketplaceSources?.length) {\n const configRepos: RepoInfo[] = config.marketplaceSources.map((source) => ({\n source,\n name: source.split('/').pop() || source,\n }));\n const existingSources = new Set(configRepos.map((r) => r.source));\n for (const repo of DEFAULT_REPOS) {\n if (!existingSources.has(repo.source)) {\n configRepos.push(repo);\n }\n }\n return configRepos;\n }\n } catch {\n // Config load failed, use defaults\n }\n return DEFAULT_REPOS;\n}\n\n/**\n * Create initial marketplace state\n */\nexport function createMarketplaceState(): MarketplaceState {\n return {\n allSkills: [],\n filteredSkills: [],\n loading: false,\n error: null,\n currentRepo: null,\n fetchedRepos: new Set(),\n failedRepos: [],\n repos: getMarketplaceRepos(),\n };\n}\n\n/**\n * Try to read skill description from frontmatter\n */\nexport function readSkillDescription(skillPath: string): string | undefined {\n const skillMdPath = join(skillPath, 'SKILL.md');\n if (!existsSync(skillMdPath)) {\n return undefined;\n }\n try {\n const content = readFileSync(skillMdPath, 'utf-8');\n const frontmatter = extractFrontmatter(content);\n if (frontmatter && typeof frontmatter.description === 'string') {\n return frontmatter.description;\n }\n } catch {\n // Failed to read, return undefined\n }\n return undefined;\n}\n\n/**\n * Fetch skills from a single repository\n */\nexport async function fetchRepoSkills(\n source: string,\n repos: RepoInfo[]\n): Promise<{\n skills: FetchedSkill[];\n tempRoot?: string;\n error?: string;\n}> {\n try {\n const provider = detectProvider(source);\n if (!provider) {\n return { skills: [], error: `Could not detect provider for: ${source}` };\n }\n\n const result = await provider.clone(source, '', { depth: 1 });\n\n if (!result.success || !result.discoveredSkills) {\n return { skills: [], error: result.error || 'Failed to fetch skills' };\n }\n\n const repoName = repos.find((r) => r.source === source)?.name || source;\n const skills: FetchedSkill[] = result.discoveredSkills.map((skill) => ({\n name: skill.name,\n source: source,\n repoName: repoName,\n description: readSkillDescription(skill.path),\n }));\n\n return { skills, tempRoot: result.tempRoot };\n } catch (err) {\n return {\n skills: [],\n error: err instanceof Error ? err.message : 'Failed to fetch repository',\n };\n }\n}\n\n/**\n * Clean up temp directory from fetch\n */\nexport function cleanupTempRoot(tempRoot: string): void {\n try {\n rmSync(tempRoot, { recursive: true, force: true });\n } catch {\n // Ignore cleanup errors\n }\n}\n\n/**\n * Filter skills by search query\n */\nexport function filterMarketplaceSkills(\n skills: FetchedSkill[],\n query: string\n): FetchedSkill[] {\n if (!query.trim()) return skills;\n\n const lowerQuery = query.toLowerCase();\n return skills.filter(\n (s) =>\n s.name.toLowerCase().includes(lowerQuery) ||\n s.source.toLowerCase().includes(lowerQuery) ||\n s.repoName.toLowerCase().includes(lowerQuery) ||\n s.description?.toLowerCase().includes(lowerQuery)\n );\n}\n\n/**\n * Convert fetched skills to skill items for display\n */\nexport function toSkillItems(skills: FetchedSkill[]): SkillItem[] {\n return skills.map((s) => ({\n name: s.name,\n description: s.description || s.repoName,\n source: s.source,\n }));\n}\n\n/**\n * Sort skills alphabetically by name\n */\nexport function sortSkillsByName(skills: FetchedSkill[]): FetchedSkill[] {\n return [...skills].sort((a, b) => a.name.localeCompare(b.name));\n}\n","{\n \"$schema\": \"./sources-schema.json\",\n \"version\": 1,\n \"updatedAt\": \"2026-01-26\",\n \"description\": \"Curated skill repository sources - THE SINGLE SOURCE OF TRUTH\",\n \"sources\": [\n { \"source\": \"anthropics/skills\", \"name\": \"Anthropic Official\", \"official\": true },\n { \"source\": \"vercel-labs/agent-skills\", \"name\": \"Vercel Labs\", \"official\": true },\n { \"source\": \"expo/skills\", \"name\": \"Expo / React Native\", \"official\": true },\n { \"source\": \"remotion-dev/skills\", \"name\": \"Remotion Video\", \"official\": true },\n { \"source\": \"supabase/agent-skills\", \"name\": \"Supabase\", \"official\": true },\n { \"source\": \"stripe/ai\", \"name\": \"Stripe Payments\", \"official\": true },\n { \"source\": \"ComposioHQ/awesome-claude-skills\", \"name\": \"Composio Awesome\" },\n { \"source\": \"travisvn/awesome-claude-skills\", \"name\": \"Travis Awesome\" },\n { \"source\": \"mhattingpete/claude-skills-marketplace\", \"name\": \"Skills Marketplace\" },\n { \"source\": \"coreyhaines31/marketingskills\", \"name\": \"Marketing Skills\" },\n { \"source\": \"obra/superpowers\", \"name\": \"Superpowers TDD\" },\n { \"source\": \"softaworks/agent-toolkit\", \"name\": \"Softaworks Toolkit\" },\n { \"source\": \"wshobson/agents\", \"name\": \"Dev Patterns\" },\n { \"source\": \"langgenius/dify\", \"name\": \"Dify Frontend\" },\n { \"source\": \"trailofbits/skills\", \"name\": \"Trail of Bits Security\" },\n { \"source\": \"better-auth/skills\", \"name\": \"Better Auth\" },\n { \"source\": \"onmax/nuxt-skills\", \"name\": \"Nuxt / Vue\" },\n { \"source\": \"hyf0/vue-skills\", \"name\": \"Vue Best Practices\" },\n { \"source\": \"jezweb/claude-skills\", \"name\": \"Cloudflare / TanStack\" },\n { \"source\": \"elysiajs/skills\", \"name\": \"ElysiaJS / Bun\" },\n { \"source\": \"kadajett/agent-nestjs-skills\", \"name\": \"NestJS\" },\n { \"source\": \"callstackincubator/agent-skills\", \"name\": \"React Native\" },\n { \"source\": \"cloudai-x/threejs-skills\", \"name\": \"Three.js\" },\n { \"source\": \"emalorenzo/three-agent-skills\", \"name\": \"Three.js Advanced\" },\n { \"source\": \"dimillian/skills\", \"name\": \"SwiftUI iOS\" },\n { \"source\": \"waynesutton/convexskills\", \"name\": \"Convex Backend\" },\n { \"source\": \"kepano/obsidian-skills\", \"name\": \"Obsidian Notes\" },\n { \"source\": \"jimliu/baoyu-skills\", \"name\": \"Baoyu Tools\" },\n { \"source\": \"giuseppe-trisciuoglio/developer-kit\", \"name\": \"Shadcn / Radix\" },\n { \"source\": \"openrouterteam/agent-skills\", \"name\": \"OpenRouter SDK\" },\n { \"source\": \"intellectronica/agent-skills\", \"name\": \"Context7\" }\n ]\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { type Screen, loadSkills, TOTAL_AGENTS } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols, AGENT_LOGOS } from '../theme/symbols.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface HomeProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst FEATURES = [\n { key: 'Sync', color: terminalColors.sync, desc: 'share across agents' },\n { key: 'Browse', color: terminalColors.browse, desc: 'discover skills' },\n { key: 'Recommend', color: terminalColors.recommend, desc: 'AI suggestions' },\n { key: 'Translate', color: terminalColors.translate, desc: 'convert formats' },\n { key: 'Workflow', color: terminalColors.workflow, desc: 'automate chains' },\n { key: 'Team', color: terminalColors.text, desc: 'collaborate' },\n];\n\nexport function Home(props: HomeProps) {\n const [animPhase, setAnimPhase] = createSignal(0);\n const [stats, setStats] = createSignal({ skills: 0, agents: TOTAL_AGENTS, synced: 0 });\n const [detectedAgents, setDetectedAgents] = createSignal<string[]>([]);\n\n const cols = () => props.cols ?? 80;\n const version = getVersion();\n const isCompact = () => cols() < 70;\n const isNarrow = () => cols() < 50;\n const contentWidth = () => Math.min(cols() - 4, 55);\n const line = () => '─'.repeat(contentWidth());\n\n createEffect(() => {\n if (animPhase() >= 5) return;\n const timer = setTimeout(() => setAnimPhase((p) => p + 1), 100);\n onCleanup(() => clearTimeout(timer));\n });\n\n createEffect(() => {\n const skillsData = loadSkills();\n setStats({\n skills: skillsData.skills.length,\n agents: TOTAL_AGENTS,\n synced: Math.min(skillsData.skills.length, 3),\n });\n setDetectedAgents(['claude-code', 'cursor', 'github-copilot']);\n });\n\n const visibleAgents = createMemo(() => {\n const allAgents = Object.entries(AGENT_LOGOS);\n const perRow = isNarrow() || isCompact() ? 2 : 3;\n const maxAgents = isNarrow() ? 4 : isCompact() ? 6 : 9;\n return {\n agents: allAgents.slice(0, maxAgents),\n perRow,\n remaining: allAgents.length - maxAgents,\n };\n });\n\n const getAgentWidth = () => {\n if (isNarrow()) return 22;\n if (isCompact()) return 26;\n return 18;\n };\n\n const agentRows = createMemo(() => {\n const { agents, perRow } = visibleAgents();\n const rows: typeof agents[] = [];\n for (let i = 0; i < agents.length; i += perRow) {\n rows.push(agents.slice(i, i + perRow));\n }\n return rows;\n });\n\n return (\n <box flexDirection=\"column\" padding={1}>\n <Show when={animPhase() >= 1}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\">\n <text fg={terminalColors.text}>\n {symbols.brandIcon} skillkit\n </text>\n <text fg={terminalColors.textMuted}> v{version}</text>\n </box>\n <text fg={terminalColors.textMuted}>universal skills for ai coding agents</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>{line()}</text>\n <text> </text>\n <box flexDirection=\"row\">\n <box width={14}>\n <text fg={terminalColors.accent}>{stats().skills}</text>\n </box>\n <box width={14}>\n <text fg={terminalColors.text}>{stats().agents}</text>\n </box>\n <box width={14}>\n <text fg={terminalColors.text}>{stats().synced}</text>\n </box>\n </box>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted} width={14}>\n skills\n </text>\n <text fg={terminalColors.textMuted} width={14}>\n agents\n </text>\n <text fg={terminalColors.textMuted} width={14}>\n synced\n </text>\n </box>\n <text> </text>\n <text fg={terminalColors.textMuted}>{line()}</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 3}>\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Works with</text>\n <text> </text>\n <For each={agentRows()}>\n {(row) => (\n <box flexDirection=\"row\">\n <For each={row}>\n {([type, agent]) => {\n const isDetected = () => detectedAgents().includes(type);\n return (\n <box width={getAgentWidth()} flexDirection=\"row\">\n <text fg={terminalColors.text}>\n {agent.icon} {agent.name}{' '}\n </text>\n <text fg={isDetected() ? terminalColors.accent : terminalColors.textMuted}>\n {isDetected() ? '●' : '○'}\n </text>\n </box>\n );\n }}\n </For>\n </box>\n )}\n </For>\n <Show when={visibleAgents().remaining > 0}>\n <text fg={terminalColors.textMuted}>+{visibleAgents().remaining} more</text>\n </Show>\n <text> </text>\n <text fg={terminalColors.textMuted}>{line()}</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 4}>\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Features</text>\n <text> </text>\n <For each={FEATURES}>\n {(feat) => (\n <box flexDirection=\"row\">\n <text fg={feat.color} width={12}>\n {' '}\n {feat.key}\n </text>\n <text fg={terminalColors.textMuted}>{feat.desc}</text>\n </box>\n )}\n </For>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 5}>\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>{line()}</text>\n <text fg={terminalColors.textMuted}>\n {isCompact()\n ? 'b browse m market / help q quit'\n : 'b browse m market i installed / help q quit'}\n </text>\n </box>\n </Show>\n </box>\n );\n}\n","import { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface HeaderProps {\n title: string;\n subtitle?: string;\n count?: number;\n badge?: string;\n icon?: string;\n}\n\nexport function Header(props: HeaderProps) {\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\" gap={2}>\n <text fg={terminalColors.text}>\n <b>\n {props.icon && `${props.icon} `}\n {props.title}\n </b>\n </text>\n <Show when={props.count !== undefined}>\n <text fg={terminalColors.textMuted}>({props.count})</text>\n </Show>\n <Show when={props.badge}>\n <text fg={terminalColors.accent}>[{props.badge}]</text>\n </Show>\n </box>\n <Show when={props.subtitle}>\n <text fg={terminalColors.textSecondary}>{props.subtitle}</text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\n\ninterface SpinnerProps {\n label?: string;\n color?: keyof typeof terminalColors;\n}\n\nexport function Spinner(props: SpinnerProps) {\n const [frame, setFrame] = createSignal(0);\n\n createEffect(() => {\n const interval = setInterval(() => {\n setFrame((f) => (f + 1) % symbols.spinner.length);\n }, 80);\n onCleanup(() => clearInterval(interval));\n });\n\n const color = () => props.color ?? 'accent';\n\n return (\n <box flexDirection=\"row\" gap={1}>\n <text fg={terminalColors[color()]}>{symbols.spinner[frame()]}</text>\n <Show when={props.label}>\n <text fg={terminalColors.text}>{props.label}</text>\n </Show>\n </box>\n );\n}\n","/**\n * EmptyState Component\n * Consistent \"no data\" display\n */\n\nimport { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface EmptyStateProps {\n icon?: string;\n title: string;\n description?: string;\n action?: {\n label: string;\n key?: string;\n };\n compact?: boolean;\n}\n\nexport function EmptyState(props: EmptyStateProps) {\n const compact = () => props.compact ?? false;\n\n return (\n <box flexDirection=\"column\" alignItems=\"center\" paddingY={compact() ? 1 : 3}>\n <Show when={props.icon}>\n <box marginBottom={1}>\n <text fg={terminalColors.textMuted}>\n {props.icon}\n </text>\n </box>\n </Show>\n\n <box marginBottom={1}>\n <text fg={terminalColors.textSecondary}>\n {props.title}\n </text>\n </box>\n\n <Show when={props.description}>\n <text fg={terminalColors.textMuted}>{props.description}</text>\n </Show>\n\n <Show when={props.action}>\n <box marginTop={1}>\n <text fg={terminalColors.textMuted}>\n <Show when={props.action!.key}>\n <text fg={terminalColors.accent}>{props.action!.key}</text>{' '}\n </Show>\n {props.action!.label}\n </text>\n </box>\n </Show>\n </box>\n );\n}\n\ninterface LoadingStateProps {\n message?: string;\n compact?: boolean;\n}\n\nexport function LoadingState(props: LoadingStateProps) {\n const compact = () => props.compact ?? false;\n const message = () => props.message ?? 'Loading...';\n\n return (\n <box flexDirection=\"column\" alignItems=\"center\" paddingY={compact() ? 1 : 3}>\n <text fg={terminalColors.accent}>⟳ {message()}</text>\n </box>\n );\n}\n\ninterface ErrorStateProps {\n title?: string;\n message: string;\n action?: {\n label: string;\n key?: string;\n };\n compact?: boolean;\n}\n\nexport function ErrorState(props: ErrorStateProps) {\n const compact = () => props.compact ?? false;\n const title = () => props.title ?? 'Error';\n\n return (\n <box flexDirection=\"column\" alignItems=\"center\" paddingY={compact() ? 1 : 3}>\n <box marginBottom={1}>\n <text fg={terminalColors.error}>\n ✗ {title()}\n </text>\n </box>\n\n <text fg={terminalColors.textMuted}>{props.message}</text>\n\n <Show when={props.action}>\n <box marginTop={1}>\n <text fg={terminalColors.textMuted}>\n <Show when={props.action!.key}>\n <text fg={terminalColors.accent}>{props.action!.key}</text>{' '}\n </Show>\n {props.action!.label}\n </text>\n </box>\n </Show>\n </box>\n );\n}\n","/**\n * DetailPane Component\n * Right-side detail panel with animated slide-in\n */\n\nimport { Show, For, createSignal, createEffect, onCleanup, type JSX } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport interface DetailField {\n label: string;\n value: string | string[];\n color?: string;\n}\n\ninterface DetailPaneProps {\n title: string;\n subtitle?: string;\n icon?: string;\n fields?: DetailField[];\n content?: string;\n actions?: Array<{ key: string; label: string }>;\n width?: number;\n visible?: boolean;\n onClose?: () => void;\n children?: JSX.Element;\n}\n\nexport function DetailPane(props: DetailPaneProps) {\n const [slideProgress, setSlideProgress] = createSignal(0);\n const width = () => props.width ?? 30;\n const visible = () => props.visible ?? true;\n\n createEffect(() => {\n if (visible()) {\n let frame = 0;\n let timeoutId: ReturnType<typeof setTimeout>;\n const animate = () => {\n frame++;\n const progress = Math.min(frame / 10, 1);\n setSlideProgress(progress);\n if (progress < 1) {\n timeoutId = setTimeout(animate, 16);\n }\n };\n timeoutId = setTimeout(animate, 16);\n onCleanup(() => clearTimeout(timeoutId));\n } else {\n setSlideProgress(0);\n }\n });\n\n const effectiveWidth = () => Math.round(width() * slideProgress());\n\n return (\n <Show when={visible() && slideProgress() > 0}>\n <box\n flexDirection=\"column\"\n width={effectiveWidth()}\n borderStyle=\"round\"\n borderColor={terminalColors.border}\n paddingX={1}\n paddingY={1}\n >\n <box flexDirection=\"row\" marginBottom={1}>\n <Show when={props.icon}>\n <text fg={terminalColors.accent}>{props.icon} </text>\n </Show>\n <text fg={terminalColors.text}>\n <b>{props.title}</b>\n </text>\n <Show when={props.onClose}>\n <box onClick={() => props.onClose?.()}>\n <text fg={terminalColors.textMuted}> [x]</text>\n </box>\n </Show>\n </box>\n\n <Show when={props.subtitle}>\n <box marginBottom={1}>\n <text fg={terminalColors.textMuted}>{props.subtitle}</text>\n </box>\n </Show>\n\n <Show when={props.fields && props.fields.length > 0}>\n <box flexDirection=\"column\" marginBottom={1}>\n <For each={props.fields}>\n {(field) => (\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>{field.label}</text>\n <Show\n when={Array.isArray(field.value)}\n fallback={\n <text fg={field.color || terminalColors.text}>\n {field.value as string}\n </text>\n }\n >\n <For each={field.value as string[]}>\n {(val) => (\n <text fg={field.color || terminalColors.text}>• {val}</text>\n )}\n </For>\n </Show>\n </box>\n )}\n </For>\n </box>\n </Show>\n\n <Show when={props.content}>\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.text}>{props.content}</text>\n </box>\n </Show>\n\n <Show when={props.children}>\n <box flexDirection=\"column\" marginBottom={1}>\n {props.children}\n </box>\n </Show>\n\n <Show when={props.actions && props.actions.length > 0}>\n <text fg={terminalColors.textMuted}>─────</text>\n <For each={props.actions}>\n {(action) => (\n <text fg={terminalColors.textMuted}>\n <text fg={terminalColors.accent}>{action.key}</text> {action.label}\n </text>\n )}\n </For>\n </Show>\n </box>\n </Show>\n );\n}\n","/**\n * StatusIndicator Component\n * Loading/success/error/warning indicator\n */\n\nimport { Show, createSignal, createEffect, onCleanup } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport type StatusType = 'loading' | 'success' | 'error' | 'warning' | 'info' | 'pending';\n\ninterface StatusIndicatorProps {\n status: StatusType;\n label?: string;\n showLabel?: boolean;\n size?: 'sm' | 'md' | 'lg';\n animated?: boolean;\n}\n\nconst STATUS_ICONS: Record<StatusType, string> = {\n loading: '⟳',\n success: '✓',\n error: '✗',\n warning: '⚠',\n info: 'ℹ',\n pending: '○',\n};\n\nconst STATUS_COLORS: Record<StatusType, string> = {\n loading: terminalColors.accent,\n success: terminalColors.success,\n error: terminalColors.error,\n warning: terminalColors.warning,\n info: terminalColors.info,\n pending: terminalColors.textMuted,\n};\n\nconst SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n\nexport function StatusIndicator(props: StatusIndicatorProps) {\n const [spinnerFrame, setSpinnerFrame] = createSignal(0);\n const showLabel = () => props.showLabel ?? true;\n const animated = () => props.animated ?? true;\n\n createEffect(() => {\n if (props.status === 'loading' && animated()) {\n const interval = setInterval(() => {\n setSpinnerFrame((f) => (f + 1) % SPINNER_FRAMES.length);\n }, 80);\n onCleanup(() => clearInterval(interval));\n }\n });\n\n const icon = () => {\n if (props.status === 'loading' && animated()) {\n return SPINNER_FRAMES[spinnerFrame()];\n }\n return STATUS_ICONS[props.status];\n };\n\n const color = () => STATUS_COLORS[props.status];\n\n const defaultLabel = () => {\n switch (props.status) {\n case 'loading':\n return 'Loading...';\n case 'success':\n return 'Success';\n case 'error':\n return 'Error';\n case 'warning':\n return 'Warning';\n case 'info':\n return 'Info';\n case 'pending':\n return 'Pending';\n }\n };\n\n return (\n <box flexDirection=\"row\">\n <text fg={color()}>{icon()}</text>\n <Show when={showLabel()}>\n <text fg={color()}> {props.label ?? defaultLabel()}</text>\n </Show>\n </box>\n );\n}\n\ninterface InlineStatusProps {\n status: StatusType;\n compact?: boolean;\n}\n\nexport function InlineStatus(props: InlineStatusProps) {\n const icon = () => {\n if (props.status === 'loading' || props.status === 'pending') {\n return '○';\n }\n return '●';\n };\n\n return <text fg={STATUS_COLORS[props.status]}>{icon()}</text>;\n}\n\ninterface StatusBadgeProps {\n status: StatusType;\n label: string;\n}\n\nexport function StatusBadge(props: StatusBadgeProps) {\n return (\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>[</text>\n <text fg={STATUS_COLORS[props.status]}>{props.label}</text>\n <text fg={terminalColors.textMuted}>]</text>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport {\n type Screen,\n DEFAULT_REPOS,\n getMarketplaceRepos,\n fetchRepoSkills,\n type FetchedSkill,\n type RepoInfo,\n} from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\n\ninterface BrowseProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ninterface RepoWithSkills extends RepoInfo {\n skills: FetchedSkill[];\n loading: boolean;\n error: string | null;\n}\n\nexport function Browse(props: BrowseProps) {\n const [repos, setRepos] = createSignal<RepoWithSkills[]>([]);\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [searchQuery, setSearchQuery] = createSignal('');\n const [searchMode, setSearchMode] = createSignal(false);\n const [showSkills, setShowSkills] = createSignal(false);\n const [loading, setLoading] = createSignal(true);\n const [error, setError] = createSignal<string | null>(null);\n\n const rows = () => props.rows ?? 24;\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setError(null);\n\n try {\n const marketplaceRepos = getMarketplaceRepos();\n const reposWithState: RepoWithSkills[] = marketplaceRepos.map((repo) => ({\n ...repo,\n skills: [],\n loading: false,\n error: null,\n }));\n setRepos(reposWithState);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load repos');\n }\n\n setLoading(false);\n };\n\n const loadRepoSkills = async (index: number) => {\n const repo = repos()[index];\n if (!repo || repo.skills.length > 0 || repo.loading) return;\n\n setRepos((prev) =>\n prev.map((r, i) => (i === index ? { ...r, loading: true, error: null } : r))\n );\n\n try {\n const result = await fetchRepoSkills(repo.source, DEFAULT_REPOS);\n setRepos((prev) =>\n prev.map((r, i) =>\n i === index\n ? {\n ...r,\n skills: result.skills,\n loading: false,\n error: result.error || null,\n }\n : r\n )\n );\n } catch (err) {\n setRepos((prev) =>\n prev.map((r, i) =>\n i === index\n ? {\n ...r,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to fetch',\n }\n : r\n )\n );\n }\n };\n\n const filteredRepos = createMemo(() => {\n if (!searchQuery()) return repos();\n\n const query = searchQuery().toLowerCase();\n return repos().filter(\n (r) =>\n r.name.toLowerCase().includes(query) ||\n r.source.toLowerCase().includes(query)\n );\n });\n\n const maxVisible = () => Math.max(5, rows() - 12);\n const startIdx = () =>\n Math.max(\n 0,\n Math.min(\n selectedIndex() - Math.floor(maxVisible() / 2),\n filteredRepos().length - maxVisible()\n )\n );\n const visibleRepos = () =>\n filteredRepos().slice(startIdx(), startIdx() + maxVisible());\n\n const handleKeyNav = (delta: number) => {\n const max = filteredRepos().length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n const handleOpenRepo = () => {\n const repo = filteredRepos()[selectedIndex()];\n if (repo) {\n const actualIndex = repos().findIndex(\n (r) => r.source === repo.source && r.name === repo.name\n );\n if (actualIndex !== -1) {\n loadRepoSkills(actualIndex);\n }\n setShowSkills(true);\n }\n };\n\n useKeyboard((key: { name?: string; sequence?: string }) => {\n if (searchMode()) {\n if (key.name === 'escape') {\n setSearchMode(false);\n } else if (key.name === 'backspace') {\n setSearchQuery((prev) => prev.slice(0, -1));\n } else if (key.name === 'return') {\n setSearchMode(false);\n } else if (\n key.sequence &&\n key.sequence.length === 1 &&\n /[a-zA-Z0-9\\-_.]/.test(key.sequence)\n ) {\n setSearchQuery((prev) => prev + key.sequence);\n setSelectedIndex(0);\n }\n return;\n }\n\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.sequence === '/') setSearchMode(true);\n else if (key.name === 'return') handleOpenRepo();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (showSkills()) setShowSkills(false);\n else if (searchQuery()) setSearchQuery('');\n else props.onNavigate('home');\n }\n });\n\n createEffect(() => {\n if (selectedIndex() >= filteredRepos().length && filteredRepos().length > 0) {\n setSelectedIndex(filteredRepos().length - 1);\n }\n });\n\n const selectedRepo = () => {\n const repoList = filteredRepos();\n if (repoList.length === 0) return null;\n return repoList[selectedIndex()];\n };\n\n const repoDetailFields = () => {\n const repo = selectedRepo();\n if (!repo) return [];\n\n return [\n { label: 'Name', value: repo.name },\n { label: 'Source', value: repo.source },\n { label: 'Skills', value: String(repo.skills.length) },\n {\n label: 'Status',\n value: repo.loading ? 'Loading...' : repo.error ? 'Error' : 'Ready',\n },\n ];\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Browse\"\n subtitle=\"Explore skill repositories\"\n icon=\"⌕\"\n count={repos().length}\n />\n\n <Show when={error()}>\n <ErrorState\n message={error()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={loading()}>\n <Spinner label=\"Loading repositories...\" />\n </Show>\n\n <Show when={!loading() && !error()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>/ </text>\n <text\n fg={\n searchQuery() || searchMode()\n ? terminalColors.text\n : terminalColors.textMuted\n }\n >\n {searchQuery() || (searchMode() ? '|' : 'type to filter...')}\n </text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <Show\n when={filteredRepos().length > 0}\n fallback={\n <EmptyState\n icon=\"⌕\"\n title=\"No repositories found\"\n description={\n searchQuery()\n ? 'Try a different search term'\n : 'No repositories configured'\n }\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Repositories</b>{' '}\n <text fg={terminalColors.textMuted}>\n ({filteredRepos().length})\n </text>\n </text>\n <text> </text>\n\n <For each={visibleRepos()}>\n {(repo, idx) => {\n const actualIdx = () => startIdx() + idx();\n const selected = () => actualIdx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {repo.name}\n </text>\n <text fg={terminalColors.textMuted} width={10}>\n {repo.skills.length > 0\n ? `${repo.skills.length} skills`\n : repo.loading\n ? 'loading...'\n : ''}\n </text>\n <Show when={repo.error}>\n <text fg={terminalColors.error}>✗</text>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={filteredRepos().length > maxVisible()}>\n <text fg={terminalColors.textMuted}>\n showing {startIdx() + 1}-\n {Math.min(startIdx() + maxVisible(), filteredRepos().length)} of{' '}\n {filteredRepos().length}\n </text>\n </Show>\n </Show>\n </box>\n\n <Show when={showSkills() && selectedRepo()}>\n <DetailPane\n title={selectedRepo()!.name}\n subtitle={`${selectedRepo()!.skills.length} skills`}\n icon=\"⌕\"\n fields={repoDetailFields()}\n actions={[\n { key: 'Enter', label: 'Install' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={35}\n visible={showSkills()}\n onClose={() => setShowSkills(false)}\n >\n <Show when={selectedRepo()!.loading}>\n <StatusIndicator status=\"loading\" label=\"Loading skills...\" />\n </Show>\n <Show when={selectedRepo()!.skills.length > 0}>\n <text fg={terminalColors.text}>\n <b>Skills:</b>\n </text>\n <For each={selectedRepo()!.skills.slice(0, 5)}>\n {(skill) => (\n <text fg={terminalColors.textSecondary}>• {skill.name}</text>\n )}\n </For>\n <Show when={selectedRepo()!.skills.length > 5}>\n <text fg={terminalColors.textMuted}>\n +{selectedRepo()!.skills.length - 5} more\n </text>\n </Show>\n </Show>\n </DetailPane>\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter open / search r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen, loadSkills, filterSkills } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface InstalledProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst SPINNER = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n\nexport function Installed(props: InstalledProps) {\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [searchQuery, setSearchQuery] = createSignal('');\n const [searchMode, setSearchMode] = createSignal(false);\n const [animPhase, setAnimPhase] = createSignal(0);\n const [spinnerFrame, setSpinnerFrame] = createSignal(0);\n const [skills, setSkills] = createSignal<ReturnType<typeof loadSkills>>({\n skills: [],\n loading: true,\n error: null,\n });\n\n const cols = () => props.cols ?? 80;\n const rows = () => props.rows ?? 24;\n const isCompact = () => cols() < 60;\n const contentWidth = () => Math.max(1, Math.min(cols() - 4, 60));\n\n createEffect(() => {\n if (animPhase() >= 2) return;\n const timer = setTimeout(() => setAnimPhase((p) => p + 1), 100);\n onCleanup(() => clearTimeout(timer));\n });\n\n createEffect(() => {\n if (!skills().loading) return;\n const interval = setInterval(() => {\n setSpinnerFrame((f) => (f + 1) % SPINNER.length);\n }, 80);\n onCleanup(() => clearInterval(interval));\n });\n\n createEffect(() => {\n const data = loadSkills();\n setSkills(data);\n });\n\n const filteredSkills = createMemo(() => filterSkills(skills().skills, searchQuery()));\n\n const handleKeyNav = (delta: number) => {\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, filteredSkills().length - 1)));\n };\n\n const handleToggle = () => {\n if (filteredSkills().length === 0) return;\n const skill = filteredSkills()[selectedIndex()];\n if (skill) {\n setSkills((prev) => ({\n ...prev,\n skills: prev.skills.map((s) => (s.name === skill.name ? { ...s, enabled: s.enabled === false } : s)),\n }));\n }\n };\n\n useKeyboard((key: { name?: string; sequence?: string }) => {\n if (searchMode()) {\n if (key.name === 'escape') {\n setSearchMode(false);\n } else if (key.name === 'backspace') {\n setSearchQuery((prev) => prev.slice(0, -1));\n } else if (key.name === 'return') {\n setSearchMode(false);\n } else if (key.sequence && key.sequence.length === 1 && /[a-zA-Z0-9\\-_.]/.test(key.sequence)) {\n setSearchQuery((prev) => prev + key.sequence);\n setSelectedIndex(0);\n }\n return;\n }\n\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.sequence === '/') setSearchMode(true);\n else if (key.name === 'return') handleToggle();\n else if (key.name === 'd') handleToggle();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n createEffect(() => {\n if (selectedIndex() >= filteredSkills().length && filteredSkills().length > 0) {\n setSelectedIndex(filteredSkills().length - 1);\n }\n });\n\n const maxVisible = () => Math.max(5, rows() - 10);\n const startIdx = () =>\n Math.max(0, Math.min(selectedIndex() - Math.floor(maxVisible() / 2), filteredSkills().length - maxVisible()));\n const visibleSkills = () => filteredSkills().slice(startIdx(), startIdx() + maxVisible());\n\n const divider = () => <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth())}</text>;\n\n const enabledCount = () => skills().skills.filter((s) => s.enabled !== false).length;\n const totalCount = () => skills().skills.length;\n\n const shortcuts = () =>\n isCompact()\n ? 'j/k nav enter toggle d disable esc back'\n : 'j/k navigate enter toggle d disable esc back';\n\n return (\n <box flexDirection=\"column\" padding={1}>\n <Show when={animPhase() >= 1}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth()}>\n <text fg={terminalColors.success}>✓ Installed</text>\n <text fg={terminalColors.textMuted}>\n {enabledCount()}/{totalCount()} active\n </text>\n </box>\n <text fg={terminalColors.textMuted}>manage your skills</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text> </text>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>/ </text>\n <text fg={searchQuery() ? terminalColors.text : terminalColors.textMuted}>\n {searchQuery() || 'type to filter...'}\n </text>\n </box>\n <text> </text>\n {divider()}\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n <Show\n when={!skills().loading}\n fallback={\n <box flexDirection=\"row\">\n <text fg={terminalColors.accent}>{SPINNER[spinnerFrame()]} </text>\n <text fg={terminalColors.text}>Loading skills...</text>\n </box>\n }\n >\n <Show\n when={!skills().error}\n fallback={\n <box flexDirection=\"column\">\n <text fg={terminalColors.error}>✗ Error loading skills</text>\n <text fg={terminalColors.textMuted}>{skills().error}</text>\n </box>\n }\n >\n <Show\n when={filteredSkills().length > 0}\n fallback={\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>\n {skills().skills.length === 0 ? 'No skills installed yet' : 'No skills match your search'}\n </text>\n <Show when={skills().skills.length === 0}>\n <text> </text>\n <text fg={terminalColors.textMuted}>Press 'b' to browse or 'm' for marketplace</text>\n </Show>\n </box>\n }\n >\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Skills</text>\n <text> </text>\n <For each={visibleSkills()}>\n {(skill, idx) => {\n const actualIdx = () => startIdx() + idx();\n const selected = () => actualIdx() === selectedIndex();\n const indicator = () => (selected() ? '▸' : ' ');\n const statusIcon = () => (skill.enabled !== false ? '●' : '○');\n const qualityBadge = () => (skill.grade ? ` [${skill.grade}]` : '');\n const warningIndicator = () => (skill.warnings && skill.warnings > 2 ? ' ⚠' : '');\n const line = () =>\n `${indicator()}${statusIcon()} ${skill.name}${qualityBadge()}${warningIndicator()}`;\n const badgeColor = () =>\n skill.quality !== undefined\n ? skill.quality >= 80\n ? terminalColors.success\n : skill.quality >= 60\n ? terminalColors.warning\n : terminalColors.error\n : terminalColors.text;\n return <text fg={selected() ? terminalColors.accent : badgeColor()}>{line()}</text>;\n }}\n </For>\n\n <Show when={filteredSkills().length > maxVisible()}>\n <text fg={terminalColors.textMuted}>\n {'\\n'}showing {startIdx() + 1}-{Math.min(startIdx() + maxVisible(), filteredSkills().length)} of{' '}\n {filteredSkills().length}\n </text>\n </Show>\n </box>\n </Show>\n </Show>\n </Show>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text fg={terminalColors.textMuted}>{shortcuts()}</text>\n </box>\n </Show>\n </box>\n );\n}\n","export interface MemoryEntry {\n key: string;\n type: 'index' | 'learning' | 'observation';\n size: string;\n updated: string;\n}\n\nexport interface MemoryServiceState {\n entries: MemoryEntry[];\n status: { projectMemoryExists: boolean; globalMemoryExists: boolean } | null;\n paths: { projectMemoryDir: string; globalMemoryDir: string } | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadMemories(): Promise<MemoryServiceState> {\n return {\n entries: [],\n status: { projectMemoryExists: false, globalMemoryExists: true },\n paths: { projectMemoryDir: '.skillkit/memory', globalMemoryDir: '~/.skillkit/memory' },\n loading: false,\n error: null,\n };\n}\n\nexport async function deleteMemoryEntry(_key: string): Promise<boolean> {\n return true;\n}\n\nexport async function clearMemory(_path?: string, _scope?: string): Promise<boolean> {\n return true;\n}\n\nexport async function initializeMemory(): Promise<boolean> {\n return true;\n}\n\nexport const memoryService = {\n loadMemories,\n deleteMemoryEntry,\n clearMemory,\n initializeMemory,\n};\n","export interface WorkflowListItem {\n name: string;\n description: string;\n skills: number;\n waves: number;\n lastRun?: string;\n status: 'ready' | 'running' | 'completed' | 'failed';\n}\n\nexport interface Workflow {\n name: string;\n description?: string;\n waves: WorkflowWave[];\n metadata?: {\n lastRun?: string;\n };\n}\n\nexport interface WorkflowWave {\n name: string;\n skills: string[];\n parallel?: boolean;\n}\n\nexport interface WorkflowResult {\n success: boolean;\n completedWaves: number;\n totalWaves: number;\n errors: string[];\n}\n\nexport interface WorkflowProgress {\n currentWave: number;\n totalWaves: number;\n currentSkill?: string;\n totalSkills?: number;\n completedSkills?: number;\n status: 'running' | 'completed' | 'failed';\n}\n\nexport interface WorkflowServiceState {\n workflows: WorkflowListItem[];\n current: Workflow | null;\n progress: WorkflowProgress | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadWorkflowsList(_projectPath?: string): Promise<WorkflowServiceState> {\n return {\n workflows: [],\n current: null,\n progress: null,\n loading: false,\n error: null,\n };\n}\n\nexport async function loadWorkflow(_name: string, _projectPath?: string): Promise<Workflow | null> {\n return null;\n}\n\nexport async function executeWorkflow(\n _name: string,\n _projectPath?: string,\n _onProgress?: (progress: WorkflowProgress) => void\n): Promise<WorkflowResult | null> {\n return { success: true, completedWaves: 0, totalWaves: 0, errors: [] };\n}\n\nexport async function createNewWorkflow(\n _name: string,\n _description: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function validateWorkflowByName(\n _name: string,\n _projectPath?: string\n): Promise<{ valid: boolean; errors: string[] }> {\n return { valid: true, errors: [] };\n}\n\nexport const workflowService = {\n loadWorkflowsList,\n loadWorkflow,\n executeWorkflow,\n createNewWorkflow,\n validateWorkflowByName,\n};\n","export interface PlanListItem {\n name: string;\n path: string;\n tasks: number;\n status: 'pending' | 'in_progress' | 'completed' | 'failed';\n lastModified?: string;\n}\n\nexport interface StructuredPlan {\n title: string;\n description?: string;\n tasks: PlanTask[];\n}\n\nexport interface PlanTask {\n id: string;\n title: string;\n description?: string;\n status: 'pending' | 'in_progress' | 'completed' | 'failed';\n}\n\nexport interface PlanValidationIssue {\n message: string;\n type?: 'error' | 'warning';\n}\n\nexport interface PlanValidationResult {\n valid: boolean;\n errors: string[];\n warnings: string[];\n issues?: PlanValidationIssue[];\n}\n\nexport interface PlanExecutionResult {\n success: boolean;\n completedTasks: string[];\n failedTasks: string[];\n totalTasks: number;\n errors: string[];\n}\n\nexport type PlanEvent = string;\n\nexport interface PlanServiceState {\n plans: PlanListItem[];\n current: StructuredPlan | null;\n validation: PlanValidationResult | null;\n execution: PlanExecutionResult | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadPlansList(_projectPath?: string): Promise<PlanServiceState> {\n return {\n plans: [],\n current: null,\n validation: null,\n execution: null,\n loading: false,\n error: null,\n };\n}\n\nexport async function loadPlan(_planPath: string): Promise<StructuredPlan | null> {\n return null;\n}\n\nexport async function validatePlan(_plan: StructuredPlan): Promise<PlanValidationResult> {\n return { valid: true, errors: [], warnings: [], issues: [] };\n}\n\nexport async function executePlan(\n _plan: StructuredPlan,\n _projectPath?: string,\n _onEvent?: (event: PlanEvent) => void,\n _dryRun?: boolean\n): Promise<PlanExecutionResult | null> {\n return { success: true, completedTasks: [], failedTasks: [], totalTasks: 0, errors: [] };\n}\n\nexport async function executePlanDryRun(\n plan: StructuredPlan,\n projectPath?: string,\n onEvent?: (event: PlanEvent) => void\n): Promise<PlanExecutionResult | null> {\n return executePlan(plan, projectPath, onEvent, true);\n}\n\nexport async function parsePlanFromContent(_content: string): Promise<StructuredPlan | null> {\n return null;\n}\n\nexport const planService = {\n loadPlansList,\n loadPlan,\n validatePlan,\n executePlan,\n executePlanDryRun,\n parsePlanFromContent,\n};\n","export interface PluginListItem {\n name: string;\n version: string;\n description: string;\n type: 'translator' | 'provider' | 'command' | 'mixed';\n enabled: boolean;\n path?: string;\n}\n\nexport interface PluginServiceState {\n plugins: PluginListItem[];\n manager: unknown | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadPluginsList(_projectPath?: string): Promise<PluginServiceState> {\n return {\n plugins: [],\n manager: null,\n loading: false,\n error: null,\n };\n}\n\nexport async function enablePlugin(_name: string, _manager: unknown): Promise<boolean> {\n return true;\n}\n\nexport async function disablePlugin(_name: string, _manager: unknown): Promise<boolean> {\n return true;\n}\n\nexport async function getPluginInfo(_name: string, _manager: unknown): Promise<unknown> {\n return null;\n}\n\nexport async function installPluginFromPath(\n _pluginPath: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport const pluginService = {\n loadPluginsList,\n enablePlugin,\n disablePlugin,\n getPluginInfo,\n installPluginFromPath,\n};\n","export interface TeamMemberDisplay {\n name: string;\n role: string;\n skills: number;\n lastSync?: string;\n status: 'active' | 'inactive' | 'pending';\n}\n\nexport interface SharedSkillDisplay {\n name: string;\n sharedBy: string;\n sharedAt: string;\n agents: string[];\n}\n\nexport interface TeamConfig {\n name: string;\n teamName?: string;\n members: TeamMember[];\n}\n\nexport interface TeamMember {\n name: string;\n email?: string;\n role?: string;\n sharedSkills?: string[];\n lastSync?: string;\n}\n\nexport interface TeamServiceState {\n config: TeamConfig | null;\n members: TeamMemberDisplay[];\n sharedSkills: SharedSkillDisplay[];\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadTeamConfig(_projectPath?: string): Promise<TeamServiceState> {\n return {\n config: null,\n members: [],\n sharedSkills: [],\n loading: false,\n error: null,\n };\n}\n\nexport async function initializeTeam(\n _teamName: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function addTeamMember(\n _member: { name: string; email?: string; role?: string },\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function removeTeamMember(\n _memberName: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function shareSkill(\n _skillName: string,\n _targetMembers?: string[],\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function createBundle(\n _skills: string[],\n _bundleName: string,\n _projectPath?: string\n): Promise<string | null> {\n return null;\n}\n\nexport async function importSkillBundle(\n _bundlePath: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport const teamService = {\n loadTeamConfig,\n initializeTeam,\n addTeamMember,\n removeTeamMember,\n shareSkill,\n createBundle,\n importSkillBundle,\n};\n","export interface MethodologyPackDisplay {\n name: string;\n description: string;\n version: string;\n skills: number;\n tags: string[];\n installed: boolean;\n status: 'available' | 'installed' | 'synced';\n}\n\nexport interface MethodologyServiceState {\n packs: MethodologyPackDisplay[];\n installedPacks: string[];\n manager: unknown | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadMethodologies(): Promise<MethodologyServiceState> {\n return {\n packs: [],\n installedPacks: [],\n manager: null,\n loading: false,\n error: null,\n };\n}\n\nexport async function installMethodologyPack(_name: string): Promise<boolean> {\n return true;\n}\n\nexport async function uninstallMethodologyPack(_name: string): Promise<boolean> {\n return true;\n}\n\nexport async function syncMethodologyPack(_name: string): Promise<boolean> {\n return true;\n}\n\nexport const methodologyService = {\n loadMethodologies,\n installMethodologyPack,\n uninstallMethodologyPack,\n syncMethodologyPack,\n};\n","export interface RecommendationDisplay {\n name: string;\n description: string;\n score: number;\n reasons: string[];\n source: string;\n tags: string[];\n installCommand?: string;\n treePath?: string[];\n explanation?: {\n matchedBecause: string[];\n relevantFor: string[];\n confidence: 'high' | 'medium' | 'low';\n };\n}\n\nexport interface RecommendationOptions {\n limit?: number;\n minScore?: number;\n categories?: string[];\n refresh?: boolean;\n}\n\nexport interface RecommendServiceState {\n recommendations: RecommendationDisplay[];\n analyzing: boolean;\n loading: boolean;\n error: string | null;\n lastAnalyzed?: string;\n}\n\nexport async function getRecommendations(\n _projectPath?: string,\n _options?: RecommendationOptions\n): Promise<RecommendServiceState> {\n return {\n recommendations: [],\n analyzing: false,\n loading: false,\n error: null,\n lastAnalyzed: new Date().toISOString(),\n };\n}\n\nexport async function analyzeProject(_projectPath?: string): Promise<{\n languages: string[];\n frameworks: string[];\n libraries: string[];\n patterns: string[];\n} | null> {\n return {\n languages: ['TypeScript', 'JavaScript'],\n frameworks: ['Solid.js'],\n libraries: ['@opentui/solid'],\n patterns: [],\n };\n}\n\nexport async function refreshRecommendations(\n projectPath?: string\n): Promise<RecommendServiceState> {\n return getRecommendations(projectPath, { refresh: true });\n}\n\nexport async function getRecommendationsByCategory(\n _category: string,\n projectPath?: string\n): Promise<RecommendationDisplay[]> {\n const result = await getRecommendations(projectPath);\n return result.recommendations;\n}\n\nexport const recommendService = {\n getRecommendations,\n analyzeProject,\n refreshRecommendations,\n getRecommendationsByCategory,\n};\n","export interface ContextDisplay {\n projectName: string;\n rootPath: string;\n languages: string[];\n frameworks: string[];\n libraries: string[];\n patterns: Record<string, unknown>;\n lastUpdated?: string;\n}\n\nexport interface ContextServiceState {\n context: ContextDisplay | null;\n stack: unknown | null;\n loading: boolean;\n analyzing: boolean;\n error: string | null;\n}\n\nexport async function loadProjectContext(): Promise<ContextServiceState> {\n return {\n context: {\n projectName: 'skillkit',\n rootPath: process.cwd(),\n languages: ['TypeScript', 'JavaScript'],\n frameworks: ['Solid.js', 'React'],\n libraries: ['@opentui/solid'],\n patterns: {},\n lastUpdated: new Date().toISOString(),\n },\n stack: null,\n loading: false,\n analyzing: false,\n error: null,\n };\n}\n\nexport async function analyzeProjectContext(): Promise<ContextServiceState> {\n return loadProjectContext();\n}\n\nexport async function refreshContext(): Promise<ContextServiceState> {\n return loadProjectContext();\n}\n\nexport async function exportContext(_path?: string, _format?: string): Promise<boolean> {\n return true;\n}\n\nexport async function getStackTags(): Promise<string[]> {\n return ['typescript', 'solid-js', 'cli'];\n}\n\nexport const contextService = {\n loadProjectContext,\n analyzeProjectContext,\n refreshContext,\n exportContext,\n getStackTags,\n};\n","export type AgentType = string;\n\nexport interface ExecutorServiceState {\n availableAgents: AgentType[];\n selectedAgent: AgentType | null;\n selectedSkill: string | null;\n executing: boolean;\n result: unknown | null;\n error: string | null;\n}\n\nexport interface AgentAvailability {\n agent: AgentType;\n available: boolean;\n version?: string;\n path?: string;\n}\n\nexport async function getAgentAvailability(): Promise<AgentAvailability[]> {\n return [\n { agent: 'claude-code', available: true },\n { agent: 'cursor', available: false },\n { agent: 'codex', available: false },\n ];\n}\n\nexport async function listAvailableAgents(): Promise<AgentType[]> {\n return ['claude-code', 'cursor', 'codex'];\n}\n\nexport async function executeSkill(\n _skillPath: string,\n _agent: AgentType,\n _options?: unknown\n): Promise<{ success: boolean; output?: string; error?: string }> {\n return { success: true, output: 'Executed successfully' };\n}\n\nexport async function executeSkillWithAgent(\n _skillPath: string,\n _agent: AgentType,\n _options?: unknown\n): Promise<{ success: boolean; output?: string; error?: string }> {\n return { success: true, output: 'Executed successfully' };\n}\n\nexport function formatSkillPrompt(_content: string, _agent: AgentType): string {\n return '';\n}\n\nexport function getExecutionInstructions(_skill: string, _agent: AgentType): string {\n return 'Manual execution instructions';\n}\n\nexport const executorService = {\n getAgentAvailability,\n listAvailableAgents,\n executeSkill,\n executeSkillWithAgent,\n formatSkillPrompt,\n getExecutionInstructions,\n};\n","export type AgentType =\n | 'claude-code'\n | 'cursor'\n | 'windsurf'\n | 'github-copilot'\n | 'codex'\n | 'gemini-cli'\n | 'opencode'\n | 'universal'\n | 'antigravity'\n | 'amp'\n | 'clawdbot'\n | 'droid'\n | 'goose'\n | 'kilo'\n | 'kiro-cli'\n | 'roo'\n | 'trae'\n | 'cline'\n | 'codebuddy'\n | 'commandcode'\n | 'continue'\n | 'crush'\n | 'factory'\n | 'mcpjam'\n | 'mux'\n | 'neovate'\n | 'openhands'\n | 'pi'\n | 'qoder'\n | 'qwen'\n | 'vercel'\n | 'zencoder';\n\nexport interface TranslationDisplay {\n sourceFormat: string;\n targetAgent: AgentType;\n success: boolean;\n content: string;\n filename?: string;\n warnings: string[];\n incompatible: string[];\n}\n\nexport interface TranslationOptions {\n sourceFilename?: string;\n preserveMetadata?: boolean;\n}\n\nexport interface CanonicalSkill {\n id: string;\n name: string;\n description?: string;\n content: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface TranslatorServiceState {\n supportedAgents: AgentType[];\n sourceAgent: AgentType | null;\n targetAgent: AgentType | null;\n skill: CanonicalSkill | null;\n result: TranslationDisplay | null;\n loading: boolean;\n error: string | null;\n}\n\nexport function getSupportedAgents(): AgentType[] {\n return [\n 'claude-code',\n 'cursor',\n 'windsurf',\n 'github-copilot',\n 'codex',\n 'gemini-cli',\n 'opencode',\n 'universal',\n ];\n}\n\nexport function checkCanTranslate(_from: AgentType, _to: AgentType): boolean {\n return true;\n}\n\nexport function translate(\n _content: string,\n targetAgent: AgentType,\n options?: TranslationOptions\n): TranslationDisplay {\n return {\n sourceFormat: options?.sourceFilename || 'SKILL.md',\n targetAgent,\n success: true,\n content: '',\n filename: undefined,\n warnings: [],\n incompatible: [],\n };\n}\n\nexport function translateFromFile(\n sourcePath: string,\n targetAgent: AgentType,\n _options?: TranslationOptions\n): TranslationDisplay {\n return {\n sourceFormat: sourcePath,\n targetAgent,\n success: true,\n content: '',\n filename: undefined,\n warnings: [],\n incompatible: [],\n };\n}\n\nexport function parseSkill(_content: string, _filename?: string): CanonicalSkill | null {\n return null;\n}\n\nexport function detectFormat(_content: string, _filename?: string): string | null {\n return 'markdown';\n}\n\nexport function previewTranslation(\n _content: string,\n _targetAgent: AgentType\n): { preview: string; compatible: boolean; issues: string[] } {\n return {\n preview: '',\n compatible: true,\n issues: [],\n };\n}\n\nexport function getAgentFormatInfo(agent: AgentType): {\n extension: string;\n formatName: string;\n description: string;\n} {\n const formatMap: Record<string, { extension: string; formatName: string; description: string }> = {\n 'claude-code': { extension: '.md', formatName: 'SKILL.md', description: 'Claude Code skills format' },\n cursor: { extension: '.mdc', formatName: 'MDC', description: 'Cursor rules format' },\n windsurf: { extension: '.md', formatName: 'Markdown', description: 'Windsurf rules format' },\n 'github-copilot': { extension: '.md', formatName: 'Markdown', description: 'GitHub Copilot instructions' },\n codex: { extension: '.md', formatName: 'Markdown', description: 'Codex instructions' },\n 'gemini-cli': { extension: '.md', formatName: 'Markdown', description: 'Gemini CLI instructions' },\n opencode: { extension: '.md', formatName: 'Markdown', description: 'OpenCode instructions' },\n universal: { extension: '.md', formatName: 'SKILL.md', description: 'Universal skill format' },\n };\n\n return formatMap[agent] || { extension: '.md', formatName: 'Markdown', description: 'Unknown format' };\n}\n\nexport const translatorService = {\n getSupportedAgents,\n checkCanTranslate,\n translate,\n translateFromFile,\n parseSkill,\n detectFormat,\n previewTranslation,\n getAgentFormatInfo,\n};\n","import { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport {\n generateSkillTree,\n loadTree,\n saveTree,\n treeToText,\n loadIndex,\n type SkillTree,\n type TreeNode,\n} from '@skillkit/core';\n\nconst TREE_PATH = join(homedir(), '.skillkit', 'skill-tree.json');\n\nexport interface TreeServiceState {\n tree: SkillTree | null;\n currentNode: TreeNode | null;\n currentPath: string[];\n loading: boolean;\n error: string | null;\n}\n\nexport interface TreeNodeDisplay {\n id: string;\n name: string;\n description?: string;\n skillCount: number;\n childCount: number;\n depth: number;\n isExpanded: boolean;\n isCategory: boolean;\n}\n\nexport async function loadOrGenerateTree(): Promise<TreeServiceState> {\n try {\n let tree = loadTree(TREE_PATH);\n\n if (!tree) {\n const index = loadIndex();\n if (index && index.skills.length > 0) {\n tree = generateSkillTree(index.skills);\n saveTree(tree, TREE_PATH);\n }\n }\n\n if (!tree) {\n return {\n tree: null,\n currentNode: null,\n currentPath: [],\n loading: false,\n error: 'No skill index found. Run \"skillkit recommend --update\" first.',\n };\n }\n\n return {\n tree,\n currentNode: tree.rootNode,\n currentPath: [],\n loading: false,\n error: null,\n };\n } catch (err) {\n return {\n tree: null,\n currentNode: null,\n currentPath: [],\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load tree',\n };\n }\n}\n\nexport function navigateToPath(tree: SkillTree, path: string[]): TreeNode | null {\n let current = tree.rootNode;\n\n for (const segment of path) {\n const child = current.children.find(\n (c) => c.name.toLowerCase() === segment.toLowerCase()\n );\n if (!child) {\n return null;\n }\n current = child;\n }\n\n return current;\n}\n\nexport function getNodeChildren(node: TreeNode): TreeNodeDisplay[] {\n return node.children.map((child) => ({\n id: child.id,\n name: child.name,\n description: child.description,\n skillCount: child.skillCount,\n childCount: child.children.length,\n depth: child.depth,\n isExpanded: false,\n isCategory: child.children.length > 0,\n }));\n}\n\nexport function getNodeSkills(node: TreeNode): string[] {\n return node.skills;\n}\n\nexport function getTreeStats(tree: SkillTree): {\n totalSkills: number;\n totalCategories: number;\n maxDepth: number;\n topCategories: { name: string; count: number }[];\n} {\n const topCategories = tree.rootNode.children\n .sort((a, b) => b.skillCount - a.skillCount)\n .slice(0, 5)\n .map((c) => ({ name: c.name, count: c.skillCount }));\n\n return {\n totalSkills: tree.totalSkills,\n totalCategories: tree.totalCategories,\n maxDepth: tree.maxDepth,\n topCategories,\n };\n}\n\nexport function searchInTree(tree: SkillTree, query: string): TreeNodeDisplay[] {\n const results: TreeNodeDisplay[] = [];\n const queryLower = query.toLowerCase();\n\n const traverse = (node: TreeNode) => {\n const nameMatch = node.name.toLowerCase().includes(queryLower);\n const skillMatch = node.skills.some((s) =>\n s.toLowerCase().includes(queryLower)\n );\n\n if (nameMatch || skillMatch) {\n results.push({\n id: node.id,\n name: node.name,\n description: node.description,\n skillCount: node.skillCount,\n childCount: node.children.length,\n depth: node.depth,\n isExpanded: false,\n isCategory: node.children.length > 0,\n });\n }\n\n for (const child of node.children) {\n traverse(child);\n }\n };\n\n traverse(tree.rootNode);\n return results;\n}\n\nexport function formatTreePath(path: string[]): string {\n if (path.length === 0) return 'Root';\n return path.join(' > ');\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport {\n type Screen,\n DEFAULT_REPOS,\n fetchRepoSkills,\n filterMarketplaceSkills,\n type FetchedSkill,\n} from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport {\n loadOrGenerateTree,\n getNodeChildren,\n getNodeSkills,\n formatTreePath,\n type TreeServiceState,\n type TreeNodeDisplay,\n} from '../services/index.js';\nimport type { TreeNode } from '@skillkit/core';\n\ninterface MarketplaceProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst CATEGORIES = [\n { name: 'Development', tag: 'development' },\n { name: 'Testing', tag: 'testing' },\n { name: 'DevOps', tag: 'devops' },\n { name: 'Security', tag: 'security' },\n { name: 'AI/ML', tag: 'ai' },\n];\n\ntype ViewMode = 'list' | 'tree';\n\nexport function Marketplace(props: MarketplaceProps) {\n const [allSkills, setAllSkills] = createSignal<FetchedSkill[]>([]);\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [selectedCategory, setSelectedCategory] = createSignal<string | null>(null);\n const [searchQuery, setSearchQuery] = createSignal('');\n const [loading, setLoading] = createSignal(true);\n const [error, setError] = createSignal<string | null>(null);\n const [loadedRepos, setLoadedRepos] = createSignal<string[]>([]);\n const [failedRepos, setFailedRepos] = createSignal<string[]>([]);\n\n const [viewMode, setViewMode] = createSignal<ViewMode>('list');\n const [treeState, setTreeState] = createSignal<TreeServiceState | null>(null);\n const [currentPath, setCurrentPath] = createSignal<string[]>([]);\n const [treeItems, setTreeItems] = createSignal<(TreeNodeDisplay | { type: 'skill'; name: string })[]>([]);\n\n const rows = () => props.rows ?? 24;\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setError(null);\n\n const skills: FetchedSkill[] = [];\n const loaded: string[] = [];\n const failed: string[] = [];\n\n for (const repo of DEFAULT_REPOS.slice(0, 5)) {\n try {\n const result = await fetchRepoSkills(repo.source, DEFAULT_REPOS);\n if (result.skills.length > 0) {\n skills.push(...result.skills);\n loaded.push(repo.name);\n } else if (result.error) {\n failed.push(repo.name);\n }\n } catch {\n failed.push(repo.name);\n }\n }\n\n setAllSkills(skills);\n setLoadedRepos(loaded);\n setFailedRepos(failed);\n\n const attemptedCount = DEFAULT_REPOS.slice(0, 5).length;\n if (failed.length === attemptedCount) {\n setError(`Failed to load all repos: ${failed.join(', ')}`);\n } else if (failed.length > 0 && skills.length === 0) {\n setError(`Some repos failed (${failed.join(', ')}) and no skills loaded`);\n }\n\n try {\n const tree = await loadOrGenerateTree();\n setTreeState(tree);\n if (tree.tree && tree.currentNode) {\n updateTreeItems(tree.currentNode);\n }\n } catch (e) {\n console.error('Failed to load skill tree:', e);\n }\n\n setLoading(false);\n };\n\n const updateTreeItems = (node: TreeNode) => {\n const children = getNodeChildren(node);\n const skills = getNodeSkills(node);\n\n const items: (TreeNodeDisplay | { type: 'skill'; name: string })[] = [\n ...children,\n ...skills.map(name => ({ type: 'skill' as const, name })),\n ];\n\n setTreeItems(items);\n setSelectedIndex(0);\n };\n\n const filteredSkills = createMemo(() => {\n let skills = allSkills();\n\n if (selectedCategory()) {\n skills = skills.filter(\n (s) =>\n s.name.toLowerCase().includes(selectedCategory()!.toLowerCase()) ||\n s.description?.toLowerCase().includes(selectedCategory()!.toLowerCase())\n );\n }\n\n if (searchQuery()) {\n skills = filterMarketplaceSkills(skills, searchQuery());\n }\n\n return skills;\n });\n\n createEffect(() => {\n if (viewMode() === 'list') {\n const list = filteredSkills();\n const maxIndex = Math.max(0, list.length - 1);\n setSelectedIndex((prev) => Math.max(0, Math.min(prev, maxIndex)));\n } else {\n const items = treeItems();\n const maxIndex = Math.max(0, items.length - 1);\n setSelectedIndex((prev) => Math.max(0, Math.min(prev, maxIndex)));\n }\n });\n\n const maxVisible = () => Math.max(4, Math.floor((rows() - 14) / 2));\n\n const skillsWindow = createMemo(() => {\n const list = filteredSkills();\n const selected = selectedIndex();\n const visible = maxVisible();\n const total = list.length;\n if (total <= visible) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(visible / 2));\n start = Math.min(start, total - visible);\n return { start, items: list.slice(start, start + visible) };\n });\n\n const treeWindow = createMemo(() => {\n const list = treeItems();\n const selected = selectedIndex();\n const visible = maxVisible();\n const total = list.length;\n if (total <= visible) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(visible / 2));\n start = Math.min(start, total - visible);\n return { start, items: list.slice(start, start + visible) };\n });\n\n const handleKeyNav = (delta: number) => {\n if (viewMode() === 'list') {\n const max = filteredSkills().length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else {\n const max = treeItems().length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n }\n };\n\n const handleInstall = () => {\n const skill = filteredSkills()[selectedIndex()];\n if (skill) {\n props.onNavigate('installed');\n }\n };\n\n const handleTreeEnter = () => {\n const items = treeItems();\n const item = items[selectedIndex()];\n if (!item) return;\n\n if ('type' in item && item.type === 'skill') {\n props.onNavigate('installed');\n } else if ('isCategory' in item && item.isCategory) {\n const state = treeState();\n if (state?.tree) {\n const newPath = [...currentPath(), item.name];\n setCurrentPath(newPath);\n\n let node = state.tree.rootNode;\n for (const segment of newPath) {\n const child = node.children.find(c => c.name === segment);\n if (child) {\n node = child;\n } else {\n setCurrentPath([]);\n updateTreeItems(state.tree.rootNode);\n return;\n }\n }\n updateTreeItems(node);\n }\n }\n };\n\n const handleTreeBack = () => {\n const path = currentPath();\n if (path.length === 0) {\n setViewMode('list');\n return;\n }\n\n const newPath = path.slice(0, -1);\n setCurrentPath(newPath);\n\n const state = treeState();\n if (state?.tree) {\n let node = state.tree.rootNode;\n for (const segment of newPath) {\n const child = node.children.find(c => c.name === segment);\n if (child) {\n node = child;\n }\n }\n updateTreeItems(node);\n }\n };\n\n const handleCategorySelect = (idx: number) => {\n const cat = CATEGORIES[idx];\n if (cat) {\n setSelectedCategory((prev) => (prev === cat.tag ? null : cat.tag));\n setSelectedIndex(0);\n }\n };\n\n const toggleViewMode = () => {\n if (viewMode() === 'list') {\n setViewMode('tree');\n setSelectedIndex(0);\n const state = treeState();\n if (state?.tree) {\n updateTreeItems(state.tree.rootNode);\n }\n } else {\n setViewMode('list');\n setCurrentPath([]);\n setSelectedIndex(0);\n }\n };\n\n useKeyboard((key: { name?: string; sequence?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') {\n if (viewMode() === 'tree') {\n handleTreeEnter();\n } else {\n handleInstall();\n }\n }\n else if (key.name === 'b') props.onNavigate('browse');\n else if (key.name === 'r') loadData();\n else if (key.sequence === 'v') toggleViewMode();\n else if (key.sequence && ['1', '2', '3', '4', '5'].includes(key.sequence)) {\n if (viewMode() === 'list') {\n handleCategorySelect(parseInt(key.sequence) - 1);\n }\n } else if (key.name === 'escape') {\n if (viewMode() === 'tree') {\n handleTreeBack();\n } else if (searchQuery() || selectedCategory()) {\n setSearchQuery('');\n setSelectedCategory(null);\n } else {\n props.onNavigate('home');\n }\n } else if (key.name === 'left' && viewMode() === 'tree') {\n handleTreeBack();\n } else if (key.name === 'right' && viewMode() === 'tree') {\n handleTreeEnter();\n }\n });\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Marketplace\"\n subtitle={viewMode() === 'tree' ? `Tree View: ${formatTreePath(currentPath())}` : 'Discover and install skills'}\n icon={viewMode() === 'tree' ? '🌳' : '★'}\n count={viewMode() === 'tree' ? (treeState()?.tree?.totalSkills ?? 0) : allSkills().length}\n />\n\n <Show when={error()}>\n <ErrorState\n message={error()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={loading()}>\n <box flexDirection=\"column\">\n <Spinner label=\"Loading marketplace skills...\" />\n <Show when={loadedRepos().length > 0}>\n <text fg={terminalColors.textMuted}>\n Loaded: {loadedRepos().join(', ')}\n </text>\n </Show>\n </box>\n </Show>\n\n <Show when={!loading() && !error()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.success}>\n ● {loadedRepos().length} repos\n </text>\n <Show when={failedRepos().length > 0}>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={terminalColors.warning}>\n ○ {failedRepos().length} failed\n </text>\n </Show>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={terminalColors.text}>{allSkills().length} skills</text>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={viewMode() === 'tree' ? terminalColors.accent : terminalColors.textMuted}>\n [v] {viewMode() === 'tree' ? '🌳 Tree' : '📋 List'}\n </text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show when={viewMode() === 'list'}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.text}>Categories: </text>\n <For each={CATEGORIES}>\n {(cat, idx) => (\n <text\n fg={\n selectedCategory() === cat.tag\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n [{idx() + 1}]{cat.name}{' '}\n </text>\n )}\n </For>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show\n when={filteredSkills().length > 0}\n fallback={\n <EmptyState\n icon=\"★\"\n title=\"No skills found\"\n description={\n searchQuery() || selectedCategory()\n ? 'Try a different search or category'\n : 'No skills loaded yet'\n }\n action={{ label: 'Clear Filter', key: 'Esc' }}\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>\n {selectedCategory() ? `${selectedCategory()} Skills` : 'Featured Skills'}\n </b>{' '}\n <text fg={terminalColors.textMuted}>\n ({filteredSkills().length} results)\n </text>\n </text>\n <text> </text>\n\n <Show when={skillsWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {skillsWindow().start} more</text>\n </Show>\n <For each={skillsWindow().items}>\n {(skill, idx) => {\n const originalIndex = () => skillsWindow().start + idx();\n const isSelected = () => originalIndex() === selectedIndex();\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\">\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {isSelected() ? '▸ ' : ' '}\n </text>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {skill.name}\n </text>\n <text fg={terminalColors.textMuted}>\n {skill.repoName}\n </text>\n </box>\n <Show when={skill.description}>\n <text fg={terminalColors.textMuted}>\n {' '}{skill.description?.slice(0, 50)}\n {(skill.description?.length || 0) > 50 ? '...' : ''}\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={skillsWindow().start + maxVisible() < filteredSkills().length}>\n <text fg={terminalColors.textMuted}>\n ▼ {filteredSkills().length - skillsWindow().start - maxVisible()} more\n </text>\n </Show>\n </Show>\n </Show>\n\n <Show when={viewMode() === 'tree'}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.accent}>\n 📁 {currentPath().length === 0 ? 'Root' : currentPath().join(' > ')}\n </text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show\n when={treeItems().length > 0}\n fallback={\n <EmptyState\n icon=\"🌳\"\n title=\"Empty category\"\n description=\"This category has no skills\"\n action={{ label: 'Go Back', key: 'Esc' }}\n />\n }\n >\n <Show when={treeWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {treeWindow().start} more</text>\n </Show>\n <For each={treeWindow().items}>\n {(item, idx) => {\n const originalIndex = () => treeWindow().start + idx();\n const isSelected = () => originalIndex() === selectedIndex();\n const isCategory = () => 'isCategory' in item && item.isCategory;\n const isSkill = () => 'type' in item && item.type === 'skill';\n\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {isSelected() ? '▸ ' : ' '}\n </text>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.textMuted}\n width={3}\n >\n {isCategory() ? '📁' : isSkill() ? '📄' : '📁'}\n </text>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {'name' in item ? item.name : ''}\n </text>\n <Show when={isCategory() && 'skillCount' in item}>\n <text fg={terminalColors.textMuted}>\n ({(item as TreeNodeDisplay).skillCount} skills)\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={treeWindow().start + maxVisible() < treeItems().length}>\n <text fg={terminalColors.textMuted}>\n ▼ {treeItems().length - treeWindow().start - maxVisible()} more\n </text>\n </Show>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <Show when={viewMode() === 'list'}>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter install 1-5 category v tree view r refresh Esc back\n </text>\n </Show>\n <Show when={viewMode() === 'tree'}>\n <text fg={terminalColors.textMuted}>\n j/k ↑↓ navigate Enter/→ open ←/Esc back v list view r refresh\n </text>\n </Show>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport {\n getRecommendations,\n analyzeProject,\n type RecommendServiceState,\n type RecommendationDisplay,\n} from '../services/recommend.service.js';\n\ninterface RecommendProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Recommend(props: RecommendProps) {\n const [state, setState] = createSignal<RecommendServiceState>({\n recommendations: [],\n analyzing: false,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [projectInfo, setProjectInfo] = createSignal<{\n languages: string[];\n frameworks: string[];\n } | null>(null);\n\n const rows = () => props.rows ?? 24;\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, analyzing: true, error: null }));\n\n try {\n const analysis = await analyzeProject();\n if (analysis) {\n setProjectInfo({\n languages: analysis.languages,\n frameworks: analysis.frameworks,\n });\n }\n\n const result = await getRecommendations();\n setState(result);\n\n const maxIndex = Math.max(0, result.recommendations.length - 1);\n setSelectedIndex((prev) => Math.max(0, Math.min(prev, maxIndex)));\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n analyzing: false,\n error: err instanceof Error ? err.message : 'Failed to load recommendations',\n }));\n }\n };\n\n const handleRefresh = async () => {\n loadData();\n };\n\n const handleInstall = () => {\n const recs = state().recommendations;\n if (recs.length === 0) return;\n\n const rec = recs[selectedIndex()];\n if (rec) {\n props.onNavigate('installed');\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().recommendations.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') {\n if (showDetail()) handleInstall();\n else setShowDetail(true);\n } else if (key.name === 'r') handleRefresh();\n else if (key.name === 'escape') {\n if (showDetail()) setShowDetail(false);\n else props.onNavigate('home');\n }\n });\n\n const getScoreColor = (score: number): string => {\n if (score >= 80) return terminalColors.success;\n if (score >= 60) return terminalColors.accent;\n if (score >= 40) return terminalColors.warning;\n return terminalColors.textMuted;\n };\n\n const getGrade = (score: number): string => {\n if (score >= 90) return 'A';\n if (score >= 80) return 'B';\n if (score >= 70) return 'C';\n if (score >= 60) return 'D';\n return 'F';\n };\n\n const selectedRec = () => {\n const recs = state().recommendations;\n if (recs.length === 0) return null;\n return recs[selectedIndex()];\n };\n\n const detailFields = () => {\n const rec = selectedRec();\n if (!rec) return [];\n\n return [\n { label: 'Name', value: rec.name },\n { label: 'Score', value: `${rec.score}%` },\n { label: 'Source', value: rec.source },\n { label: 'Tags', value: rec.tags.join(', ') || 'None' },\n { label: 'Install', value: rec.installCommand || `skillkit install ${rec.name}` },\n ];\n };\n\n const maxVisible = () => Math.max(4, Math.floor((rows() - 12) / 3));\n\n const recsWindow = createMemo(() => {\n const list = state().recommendations;\n const selected = selectedIndex();\n const visible = maxVisible();\n const total = list.length;\n if (total <= visible) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(visible / 2));\n start = Math.min(start, total - visible);\n return { start, items: list.slice(start, start + visible) };\n });\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Recommendations\"\n subtitle=\"AI skill suggestions based on your project\"\n icon=\"✦\"\n count={state().recommendations.length}\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading && state().analyzing}>\n <box flexDirection=\"column\">\n <Spinner label=\"Analyzing your project...\" />\n <Show when={projectInfo()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Detected: {projectInfo()!.languages.slice(0, 3).join(', ')}\n {projectInfo()!.frameworks.length > 0\n ? ` + ${projectInfo()!.frameworks.slice(0, 2).join(', ')}`\n : ''}\n </text>\n </Show>\n </box>\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <Show when={projectInfo()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>Stack: </text>\n <text fg={terminalColors.accent}>\n {[\n ...projectInfo()!.languages.slice(0, 2),\n ...projectInfo()!.frameworks.slice(0, 2),\n ].join(' • ')}\n </text>\n </box>\n </Show>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show\n when={state().recommendations.length > 0}\n fallback={\n <EmptyState\n icon=\"✦\"\n title=\"No recommendations found\"\n description=\"Try refreshing to analyze your project again\"\n action={{ label: 'Refresh', key: 'r' }}\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Suggested Skills</b>\n </text>\n <text> </text>\n\n <Show when={recsWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {recsWindow().start} more</text>\n </Show>\n <For each={recsWindow().items}>\n {(rec, idx) => {\n const originalIndex = () => recsWindow().start + idx();\n const isSelected = () => originalIndex() === selectedIndex();\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\">\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {isSelected() ? '▸ ' : ' '}\n </text>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {rec.name}\n </text>\n <text fg={getScoreColor(rec.score)} width={6}>\n {rec.score}%\n </text>\n <text fg={getScoreColor(rec.score)} width={4}>\n [{getGrade(rec.score)}]\n </text>\n </box>\n <Show when={rec.reasons.length > 0}>\n <text fg={terminalColors.textMuted}>\n {' '}{rec.reasons[0]}\n </text>\n </Show>\n <Show when={rec.description && rec.reasons.length === 0}>\n <text fg={terminalColors.textMuted}>\n {' '}{rec.description.slice(0, 50)}\n {rec.description.length > 50 ? '...' : ''}\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={recsWindow().start + maxVisible() < state().recommendations.length}>\n <text fg={terminalColors.textMuted}>\n ▼ {state().recommendations.length - recsWindow().start - maxVisible()} more\n </text>\n </Show>\n </Show>\n\n <Show when={state().lastAnalyzed}>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Last analyzed: {new Date(state().lastAnalyzed!).toLocaleTimeString()}\n </text>\n </Show>\n </box>\n\n <Show when={showDetail() && selectedRec()}>\n <DetailPane\n title={selectedRec()!.name}\n subtitle={`Score: ${selectedRec()!.score}%`}\n icon=\"✦\"\n fields={detailFields()}\n actions={[\n { key: 'Enter', label: 'Install' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={35}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter details/install r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen, loadSkillsWithDetails, type SkillWithDetails } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { AGENT_LOGOS } from '../theme/symbols.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n getSupportedAgents,\n checkCanTranslate,\n translate,\n previewTranslation,\n getAgentFormatInfo,\n} from '../services/translator.service.js';\nimport type { AgentType } from '@skillkit/core';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\n\ninterface TranslateProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ntype FocusedPane = 'source' | 'target' | 'skills';\n\nfunction readSkillContent(skillPath: string): string | undefined {\n const skillMdPath = join(skillPath, 'SKILL.md');\n if (existsSync(skillMdPath)) {\n return readFileSync(skillMdPath, 'utf-8');\n }\n return undefined;\n}\n\nexport function Translate(props: TranslateProps) {\n const [supportedAgents, setSupportedAgents] = createSignal<AgentType[]>([]);\n const [skills, setSkills] = createSignal<SkillWithDetails[]>([]);\n const [sourceAgentIndex, setSourceAgentIndex] = createSignal(0);\n const [targetAgentIndex, setTargetAgentIndex] = createSignal(1);\n const [selectedSkillIndex, setSelectedSkillIndex] = createSignal(0);\n const [focusedPane, setFocusedPane] = createSignal<FocusedPane>('skills');\n const [translating, setTranslating] = createSignal(false);\n const [preview, setPreview] = createSignal<{\n preview: string;\n compatible: boolean;\n issues: string[];\n } | null>(null);\n const [result, setResult] = createSignal<{\n success: boolean;\n content: string;\n filename?: string;\n } | null>(null);\n const [loading, setLoading] = createSignal(true);\n const [error, setError] = createSignal<string | null>(null);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setError(null);\n\n try {\n const agents = getSupportedAgents();\n setSupportedAgents(agents);\n\n const skillsWithDetails = loadSkillsWithDetails();\n setSkills(skillsWithDetails);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load data');\n }\n\n setLoading(false);\n };\n\n const sourceAgent = () => {\n const agents = supportedAgents();\n if (agents.length === 0) return null;\n return agents[sourceAgentIndex()];\n };\n\n const targetAgent = () => {\n const agents = supportedAgents();\n if (agents.length === 0) return null;\n return agents[targetAgentIndex()];\n };\n\n const selectedSkill = () => {\n const skillList = skills();\n if (skillList.length === 0) return null;\n return skillList[selectedSkillIndex()];\n };\n\n const canDoTranslation = () => {\n const source = sourceAgent();\n const target = targetAgent();\n if (!source || !target) return false;\n return checkCanTranslate(source, target);\n };\n\n const handlePreview = () => {\n const skill = selectedSkill();\n const target = targetAgent();\n if (!skill || !target || !skill.path) {\n setError('No skill path available for preview');\n return;\n }\n\n try {\n const content = readSkillContent(skill.path);\n if (!content) {\n setError('Could not read skill content');\n return;\n }\n\n const previewResult = previewTranslation(content, target);\n setPreview(previewResult);\n setError(null);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Preview failed');\n }\n };\n\n const handleTranslate = async () => {\n const skill = selectedSkill();\n const target = targetAgent();\n if (!skill || !target || !skill.path) {\n setError('No skill path available for translation');\n return;\n }\n\n const content = readSkillContent(skill.path);\n if (!content) {\n setError('Could not read skill content');\n return;\n }\n\n setTranslating(true);\n setResult(null);\n setError(null);\n\n try {\n const translationResult = translate(content, target);\n setResult({\n success: translationResult.success,\n content: translationResult.content,\n filename: translationResult.filename,\n });\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Translation failed');\n } finally {\n setTranslating(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n if (focusedPane() === 'skills') {\n const max = skills().length - 1;\n setSelectedSkillIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else if (focusedPane() === 'source') {\n const max = supportedAgents().length - 1;\n setSourceAgentIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else {\n const max = supportedAgents().length - 1;\n setTargetAgentIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n }\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'tab') {\n setFocusedPane((p) => {\n if (p === 'skills') return 'source';\n if (p === 'source') return 'target';\n return 'skills';\n });\n } else if (key.name === 'p') handlePreview();\n else if (key.name === 'return' || key.name === 't') handleTranslate();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (result() || preview()) {\n setResult(null);\n setPreview(null);\n } else {\n props.onNavigate('home');\n }\n }\n });\n\n const visibleAgents = () => supportedAgents().slice(0, 6);\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Translate Skills\"\n subtitle=\"Convert skills between agent formats\"\n icon=\"⇄\"\n />\n\n <Show when={error()}>\n <ErrorState\n message={error()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={loading()}>\n <Spinner label=\"Loading agents and skills...\" />\n </Show>\n\n <Show when={!loading() && !error()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <box flexDirection=\"column\" width={25}>\n <text\n fg={\n focusedPane() === 'source'\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n Source Agent\n </text>\n <Show when={sourceAgent()}>\n <text fg={terminalColors.accent}>\n <b>\n {AGENT_LOGOS[sourceAgent()!]?.icon || '◇'}{' '}\n {AGENT_LOGOS[sourceAgent()!]?.name || sourceAgent()}\n </b>\n </text>\n <text fg={terminalColors.textMuted}>\n {getAgentFormatInfo(sourceAgent()!).formatName}\n </text>\n </Show>\n </box>\n\n <box flexDirection=\"column\" width={5} justifyContent=\"center\">\n <text fg={terminalColors.textMuted}> → </text>\n </box>\n\n <box flexDirection=\"column\" width={25}>\n <text\n fg={\n focusedPane() === 'target'\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n Target Agent\n </text>\n <Show when={targetAgent()}>\n <text fg={terminalColors.text}>\n <b>\n {AGENT_LOGOS[targetAgent()!]?.icon || '◇'}{' '}\n {AGENT_LOGOS[targetAgent()!]?.name || targetAgent()}\n </b>\n </text>\n <text fg={terminalColors.textMuted}>\n {getAgentFormatInfo(targetAgent()!).formatName}\n </text>\n </Show>\n </box>\n\n <Show when={!canDoTranslation()}>\n <text fg={terminalColors.warning}> ⚠ Incompatible</text>\n </Show>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" width={30}>\n <text\n fg={\n focusedPane() === 'skills'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Select Skill</b>\n </text>\n <text> </text>\n\n <Show\n when={skills().length > 0}\n fallback={\n <EmptyState\n title=\"No skills installed\"\n description=\"Install skills first\"\n action={{ label: 'Browse', key: 'b' }}\n compact\n />\n }\n >\n <For each={skills().slice(0, 6)}>\n {(skill, idx) => {\n const selected = () =>\n focusedPane() === 'skills' && idx() === selectedSkillIndex();\n return (\n <box marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n >\n {selected() ? '▸ ' : ' '}\n {skill.name}\n </text>\n </box>\n );\n }}\n </For>\n <Show when={skills().length > 6}>\n <text fg={terminalColors.textMuted}>+{skills().length - 6} more</text>\n </Show>\n </Show>\n </box>\n\n <box width={2}>\n <text fg={terminalColors.border}>│</text>\n </box>\n\n <box flexDirection=\"column\" width={35}>\n <Show when={focusedPane() !== 'skills'}>\n <text fg={terminalColors.text}>\n <b>{focusedPane() === 'source' ? 'Source' : 'Target'} Agents</b>\n </text>\n <text> </text>\n <For each={visibleAgents()}>\n {(agent, idx) => {\n const isSource = focusedPane() === 'source';\n const selectedIdx = isSource ? sourceAgentIndex() : targetAgentIndex();\n const selected = () => idx() === selectedIdx;\n return (\n <box marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.textSecondary}\n >\n {selected() ? '▸ ' : ' '}\n {AGENT_LOGOS[agent]?.icon || '◇'} {AGENT_LOGOS[agent]?.name || agent}\n </text>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={focusedPane() === 'skills' && selectedSkill()}>\n <text fg={terminalColors.text}>\n <b>Skill Info</b>\n </text>\n <text> </text>\n <text fg={terminalColors.textMuted}>Name: {selectedSkill()!.name}</text>\n <text fg={terminalColors.textMuted}>\n Path: {selectedSkill()!.path ? 'Available' : 'Unknown'}\n </text>\n </Show>\n </box>\n </box>\n\n <Show when={translating()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Translating skill...\" />\n </Show>\n\n <Show when={preview() && !translating()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.text}>\n <b>Preview</b>\n </text>\n <text\n fg={\n preview()!.compatible ? terminalColors.success : terminalColors.warning\n }\n >\n {preview()!.compatible ? '✓ Compatible' : '⚠ Has issues'}\n </text>\n <Show when={preview()!.issues.length > 0}>\n <For each={preview()!.issues.slice(0, 2)}>\n {(issue) => <text fg={terminalColors.warning}>• {issue}</text>}\n </For>\n </Show>\n </Show>\n\n <Show when={result() && !translating()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text\n fg={result()!.success ? terminalColors.success : terminalColors.error}\n >\n {result()!.success ? '✓ Translation complete' : '✗ Translation failed'}\n </text>\n <Show when={result()!.filename}>\n <text fg={terminalColors.textMuted}>Output: {result()!.filename}</text>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n Tab switch pane j/k navigate p preview Enter translate Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadProjectContext,\n analyzeProjectContext,\n refreshContext,\n exportContext,\n getStackTags,\n type ContextServiceState,\n} from '../services/context.service.js';\n\ninterface ContextProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Context(props: ContextProps) {\n const [state, setState] = createSignal<ContextServiceState>({\n context: null,\n stack: null,\n loading: true,\n analyzing: false,\n error: null,\n });\n const [tags, setTags] = createSignal<string[]>([]);\n const [selectedSection, setSelectedSection] = createSignal(0);\n\n const sections = ['Overview', 'Languages', 'Frameworks', 'Libraries', 'Patterns'];\n\n const moveSection = (delta: number) => {\n setSelectedSection((i) =>\n Math.max(0, Math.min(sections.length - 1, i + delta))\n );\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'h' || key.name === 'left') moveSection(-1);\n else if (key.name === 'l' || key.name === 'right') moveSection(1);\n else if (key.name === 'r') handleRefresh();\n else if (key.name === 'e') handleExport();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n let result = await loadProjectContext();\n if (!result.context) {\n result = await analyzeProjectContext();\n }\n setState(result);\n setTags(await getStackTags());\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n analyzing: false,\n error: err instanceof Error ? err.message : 'Failed to load context',\n }));\n }\n };\n\n const handleRefresh = async () => {\n setState((s) => ({ ...s, analyzing: true, error: null }));\n try {\n const result = await refreshContext();\n setState(result);\n setTags(await getStackTags());\n } catch (err) {\n setState((s) => ({\n ...s,\n analyzing: false,\n error: err instanceof Error ? err.message : 'Failed to refresh context',\n }));\n }\n };\n\n const handleExport = async () => {\n try {\n await exportContext(undefined, 'json');\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to export context',\n }));\n }\n };\n\n const currentSection = () => sections[selectedSection()];\n const ctx = () => state().context;\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Project Context\"\n subtitle=\"Analyze your project environment\"\n icon=\"◉\"\n count={tags().length}\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading || state().analyzing}>\n <Spinner\n label={state().analyzing ? 'Analyzing project...' : 'Loading context...'}\n />\n </Show>\n\n <Show when={!state().loading && !state().error && ctx()}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" marginBottom={1}>\n <For each={sections}>\n {(section, idx) => (\n <box marginRight={2}>\n <text\n fg={\n idx() === selectedSection()\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n {idx() === selectedSection() ? '▸ ' : ' '}\n {section}\n </text>\n </box>\n )}\n </For>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show when={currentSection() === 'Overview'}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Project:</text>\n <text fg={terminalColors.text}>{ctx()!.projectName}</text>\n </box>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Path:</text>\n <text fg={terminalColors.textSecondary}>{ctx()!.rootPath}</text>\n </box>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Languages:</text>\n <text fg={terminalColors.accent}>{ctx()!.languages.length}</text>\n </box>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Frameworks:</text>\n <text fg={terminalColors.accent}>{ctx()!.frameworks.length}</text>\n </box>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Libraries:</text>\n <text fg={terminalColors.accent}>{ctx()!.libraries.length}</text>\n </box>\n <Show when={ctx()!.lastUpdated}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Last Updated:</text>\n <text fg={terminalColors.textSecondary}>{ctx()!.lastUpdated}</text>\n </box>\n </Show>\n </box>\n </Show>\n\n <Show when={currentSection() === 'Languages'}>\n <box flexDirection=\"column\">\n <Show\n when={ctx()!.languages.length > 0}\n fallback={<EmptyState title=\"No languages detected\" compact />}\n >\n <For each={ctx()!.languages}>\n {(lang) => (\n <box marginBottom={1}>\n <text fg={terminalColors.text}>\n • {lang}\n </text>\n </box>\n )}\n </For>\n </Show>\n </box>\n </Show>\n\n <Show when={currentSection() === 'Frameworks'}>\n <box flexDirection=\"column\">\n <Show\n when={ctx()!.frameworks.length > 0}\n fallback={<EmptyState title=\"No frameworks detected\" compact />}\n >\n <For each={ctx()!.frameworks}>\n {(fw) => (\n <box marginBottom={1}>\n <text fg={terminalColors.text}>\n • {fw}\n </text>\n </box>\n )}\n </For>\n </Show>\n </box>\n </Show>\n\n <Show when={currentSection() === 'Libraries'}>\n <box flexDirection=\"column\">\n <Show\n when={ctx()!.libraries.length > 0}\n fallback={<EmptyState title=\"No libraries detected\" compact />}\n >\n <For each={ctx()!.libraries.slice(0, 15)}>\n {(lib) => (\n <box marginBottom={1}>\n <text fg={terminalColors.text}>\n • {lib}\n </text>\n </box>\n )}\n </For>\n <Show when={ctx()!.libraries.length > 15}>\n <text fg={terminalColors.textMuted}>\n +{ctx()!.libraries.length - 15} more\n </text>\n </Show>\n </Show>\n </box>\n </Show>\n\n <Show when={currentSection() === 'Patterns'}>\n <box flexDirection=\"column\">\n <Show\n when={Object.keys(ctx()!.patterns).length > 0}\n fallback={<EmptyState title=\"No patterns detected\" compact />}\n >\n <For each={Object.entries(ctx()!.patterns)}>\n {([key, value]) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>{key}:</text>\n <text fg={terminalColors.text}>{String(value)}</text>\n </box>\n )}\n </For>\n </Show>\n </box>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show when={tags().length > 0}>\n <box flexDirection=\"row\" flexWrap=\"wrap\">\n <text fg={terminalColors.textMuted}>Tags: </text>\n <For each={tags().slice(0, 8)}>\n {(tag, idx) => (\n <text fg={terminalColors.textSecondary}>\n {tag}\n {idx() < Math.min(tags().length, 8) - 1 ? ', ' : ''}\n </text>\n )}\n </For>\n <Show when={tags().length > 8}>\n <text fg={terminalColors.textMuted}> +{tags().length - 8}</text>\n </Show>\n </box>\n </Show>\n </box>\n </Show>\n\n <Show when={!state().loading && !state().error && !ctx()}>\n <EmptyState\n icon=\"◉\"\n title=\"No context found\"\n description=\"Run analysis to detect project context\"\n action={{ label: 'Analyze', key: 'r' }}\n />\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n ←/→ sections r refresh e export Esc back\n </text>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen, loadSkills } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { AGENT_LOGOS } from '../theme/symbols.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport { getSupportedAgents } from '../services/translator.service.js';\nimport { getAgentAvailability } from '../services/executor.service.js';\nimport type { AgentType } from '@skillkit/core';\n\ninterface SyncProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ninterface AgentSyncInfo {\n type: AgentType;\n name: string;\n icon: string;\n available: boolean;\n synced: boolean;\n skillCount: number;\n}\n\nexport function Sync(props: SyncProps) {\n const [agents, setAgents] = createSignal<AgentSyncInfo[]>([]);\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [syncStatus, setSyncStatus] = createSignal<'idle' | 'syncing' | 'done' | 'error'>('idle');\n const [syncMessage, setSyncMessage] = createSignal('');\n const [loading, setLoading] = createSignal(true);\n const [error, setError] = createSignal<string | null>(null);\n const [skillCount, setSkillCount] = createSignal(0);\n\n const cols = () => props.cols ?? 80;\n const isCompact = () => cols() < 60;\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setError(null);\n\n try {\n const skillsData = loadSkills();\n setSkillCount(skillsData.skills.length);\n\n const supportedAgents = getSupportedAgents();\n const availability = await getAgentAvailability();\n\n const agentInfos: AgentSyncInfo[] = supportedAgents.slice(0, isCompact() ? 4 : 8).map((agent) => {\n const logo = AGENT_LOGOS[agent];\n const availInfo = availability.find((a) => a.agent === agent);\n\n return {\n type: agent,\n name: logo?.name || agent,\n icon: logo?.icon || '◇',\n available: availInfo?.available || false,\n synced: false,\n skillCount: 0,\n };\n });\n\n setAgents(agentInfos);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load agents');\n }\n\n setLoading(false);\n };\n\n const handleSync = async () => {\n const agentList = agents();\n if (agentList.length === 0) return;\n\n const idx = selectedIndex();\n const agent = agentList[idx];\n if (!agent || !agent.available) return;\n\n const agentName = agent.name;\n const currentSkillCount = skillCount();\n\n setSyncStatus('syncing');\n setSyncMessage(`Syncing to ${agentName}...`);\n\n try {\n await new Promise((resolve) => setTimeout(resolve, 1000));\n\n setAgents((prev) =>\n prev.map((a, i) =>\n i === idx\n ? { ...a, synced: true, skillCount: currentSkillCount }\n : a\n )\n );\n\n setSyncStatus('done');\n setSyncMessage(`Synced ${currentSkillCount} skills to ${agentName}`);\n } catch {\n setSyncStatus('error');\n setSyncMessage('Sync failed');\n }\n };\n\n const handleSyncAll = async () => {\n setSyncStatus('syncing');\n setSyncMessage('Syncing to all available agents...');\n\n try {\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n setAgents((prev) =>\n prev.map((a) =>\n a.available ? { ...a, synced: true, skillCount: skillCount() } : a\n )\n );\n\n const syncedCount = agents().filter((a) => a.available).length;\n setSyncStatus('done');\n setSyncMessage(`Synced to ${syncedCount} agents`);\n } catch {\n setSyncStatus('error');\n setSyncMessage('Sync failed');\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = agents().length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleSync();\n else if (key.name === 'a') handleSyncAll();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n const syncedCount = createMemo(() => agents().filter((a) => a.synced).length);\n const availableCount = createMemo(() => agents().filter((a) => a.available).length);\n const totalSkillsSynced = createMemo(() =>\n agents().reduce((sum, a) => sum + a.skillCount, 0)\n );\n\n const selectedAgent = () => {\n const agentList = agents();\n if (agentList.length === 0) return null;\n return agentList[selectedIndex()];\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Sync\"\n subtitle=\"Share skills across agents\"\n icon=\"⟳\"\n count={agents().length}\n />\n\n <Show when={error()}>\n <ErrorState\n message={error()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={loading()}>\n <Spinner label=\"Loading agents...\" />\n </Show>\n\n <Show when={!loading() && !error()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.success}>● {syncedCount()} synced</text>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={terminalColors.accent}>◎ {availableCount()} available</text>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={terminalColors.text}>{skillCount()} skills to sync</text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show when={syncStatus() === 'syncing'}>\n <StatusIndicator status=\"loading\" label={syncMessage()} />\n <text> </text>\n </Show>\n\n <Show when={syncStatus() === 'done'}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.success}>✓ </text>\n <text fg={terminalColors.text}>{syncMessage()}</text>\n </box>\n </Show>\n\n <Show when={syncStatus() === 'error'}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.error}>✗ </text>\n <text fg={terminalColors.text}>{syncMessage()}</text>\n </box>\n </Show>\n\n <Show\n when={agents().length > 0}\n fallback={\n <EmptyState\n icon=\"⟳\"\n title=\"No agents found\"\n description=\"Install AI coding agents to sync skills\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Agents</b>\n </text>\n <text> </text>\n\n <For each={agents()}>\n {(agent, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={\n selected()\n ? terminalColors.accent\n : agent.available\n ? terminalColors.text\n : terminalColors.textMuted\n }\n width={20}\n >\n {agent.icon} {agent.name}\n </text>\n <text\n fg={\n agent.synced\n ? terminalColors.success\n : agent.available\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n width={3}\n >\n {agent.synced ? '✓' : agent.available ? '○' : '✗'}\n </text>\n <text fg={terminalColors.textMuted} width={12}>\n {agent.skillCount > 0 ? `${agent.skillCount} skills` : ''}\n </text>\n <Show when={!agent.available}>\n <text fg={terminalColors.textMuted}>(unavailable)</text>\n </Show>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={selectedAgent() && !selectedAgent()!.available}>\n <text> </text>\n <text fg={terminalColors.warning}>\n ⚠ {selectedAgent()!.name} is not installed or available\n </text>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter sync selected a sync all r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport {\n loadMemories,\n deleteMemoryEntry,\n clearMemory,\n initializeMemory,\n type MemoryServiceState,\n type MemoryEntry,\n} from '../services/memory.service.js';\n\ninterface MemoryProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Memory(props: MemoryProps) {\n const [state, setState] = createSignal<MemoryServiceState>({\n entries: [],\n status: null,\n paths: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadMemories();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load memories',\n }));\n }\n };\n\n const handleDelete = async () => {\n const entries = state().entries;\n if (entries.length === 0) return;\n\n const entry = entries[selectedIndex()];\n if (!entry) return;\n\n try {\n const success = await deleteMemoryEntry(entry.key);\n if (success) {\n loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to delete entry',\n }));\n }\n };\n\n const handleClearAll = async () => {\n try {\n const success = await clearMemory(undefined, 'all');\n if (success) {\n loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to clear memory',\n }));\n }\n };\n\n const handleInitialize = async () => {\n try {\n const success = await initializeMemory();\n if (success) {\n loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to initialize memory',\n }));\n }\n };\n\n const getTypeIcon = (type: MemoryEntry['type']): string => {\n switch (type) {\n case 'index':\n return '◈';\n case 'learning':\n return '◇';\n case 'observation':\n return '○';\n default:\n return '•';\n }\n };\n\n const selectedEntry = () => {\n const entries = state().entries;\n if (entries.length === 0) return null;\n return entries[selectedIndex()];\n };\n\n const detailFields = () => {\n const entry = selectedEntry();\n if (!entry) return [];\n\n return [\n { label: 'Key', value: entry.key },\n { label: 'Type', value: entry.type },\n { label: 'Size', value: entry.size },\n { label: 'Updated', value: entry.updated },\n ];\n };\n\n useKeyboard((key: { name?: string }) => {\n const entries = state().entries;\n const maxIndex = Math.max(0, entries.length - 1);\n\n if (key.name === 'j' || key.name === 'down') {\n setSelectedIndex((prev) => Math.min(prev + 1, maxIndex));\n } else if (key.name === 'k' || key.name === 'up') {\n setSelectedIndex((prev) => Math.max(prev - 1, 0));\n } else if (key.name === 'return') {\n if (entries.length > 0) {\n setShowDetail(true);\n }\n } else if (key.name === 'd') {\n handleDelete();\n } else if (key.name === 'c') {\n handleClearAll();\n } else if (key.name === 'i') {\n handleInitialize();\n } else if (key.name === 'r') {\n loadData();\n } else if (key.name === 'escape') {\n if (showDetail()) {\n setShowDetail(false);\n } else {\n props.onNavigate('home');\n }\n }\n });\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Memory\"\n subtitle=\"Manage persistent session memory\"\n count={state().entries.length}\n icon=\"◎\"\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading memories...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <Show when={state().status}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>Status: </text>\n <text\n fg={\n state().status?.projectMemoryExists || state().status?.globalMemoryExists\n ? terminalColors.success\n : terminalColors.warning\n }\n >\n {state().status?.projectMemoryExists ? 'Project ✓' : 'Project ✗'}\n </text>\n <text fg={terminalColors.textMuted}> | </text>\n <text\n fg={state().status?.globalMemoryExists ? terminalColors.success : terminalColors.warning}\n >\n {state().status?.globalMemoryExists ? 'Global ✓' : 'Global ✗'}\n </text>\n </box>\n </Show>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show\n when={state().entries.length > 0}\n fallback={\n <EmptyState\n icon=\"◎\"\n title=\"No memories stored\"\n description=\"Memory will be created as you use skills\"\n action={{ label: 'Initialize', key: 'i' }}\n />\n }\n >\n <text fg={terminalColors.text}><b>Stored Memories</b></text>\n <text> </text>\n\n <For each={state().entries}>\n {(mem, idx) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={idx() === selectedIndex() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {idx() === selectedIndex() ? '▸ ' : ' '}\n </text>\n <text\n fg={idx() === selectedIndex() ? terminalColors.accent : terminalColors.text}\n >\n {getTypeIcon(mem.type)}{' '}\n </text>\n <text\n fg={idx() === selectedIndex() ? terminalColors.accent : terminalColors.text}\n width={20}\n >\n {mem.key}\n </text>\n <text fg={terminalColors.textMuted} width={12}>\n {mem.size}\n </text>\n <text fg={terminalColors.textMuted}>{mem.updated}</text>\n </box>\n )}\n </For>\n </Show>\n </box>\n\n <Show when={showDetail() && selectedEntry()}>\n <DetailPane\n title={selectedEntry()!.key}\n icon={getTypeIcon(selectedEntry()!.type)}\n fields={detailFields()}\n actions={[\n { key: 'd', label: 'Delete' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={30}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show when={state().paths}>\n <text fg={terminalColors.textMuted}>\n Project: {state().paths?.projectMemoryDir || 'Not initialized'}\n </text>\n <text fg={terminalColors.textMuted}>\n Global: {state().paths?.globalMemoryDir || 'Not initialized'}\n </text>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter view d delete c clear all i init Esc back\n </text>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadWorkflowsList,\n loadWorkflow,\n executeWorkflow,\n type WorkflowServiceState,\n type WorkflowListItem,\n} from '../services/workflow.service.js';\n\ninterface WorkflowProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Workflow(props: WorkflowProps) {\n const [state, setState] = createSignal<WorkflowServiceState>({\n workflows: [],\n current: null,\n progress: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [executing, setExecuting] = createSignal(false);\n\n const cols = () => props.cols ?? 80;\n const isCompact = () => cols() < 60;\n const contentWidth = () => Math.max(1, Math.min(cols() - 4, 60));\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadWorkflowsList();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load workflows',\n }));\n }\n };\n\n const handleExecute = async () => {\n if (executing()) return;\n\n const workflows = state().workflows;\n if (workflows.length === 0) return;\n\n const workflow = workflows[selectedIndex()];\n if (!workflow) return;\n\n setExecuting(true);\n try {\n const result = await executeWorkflow(workflow.name, undefined, (progress) => {\n setState((s) => ({ ...s, progress }));\n });\n\n if (result) {\n loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Workflow execution failed',\n }));\n } finally {\n setExecuting(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().workflows.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') setShowDetail(true);\n else if (key.name === 'r') loadData();\n else if (key.name === 'x') handleExecute();\n else if (key.name === 'escape') {\n if (showDetail()) setShowDetail(false);\n else props.onNavigate('home');\n }\n });\n\n const successCount = createMemo(\n () => state().workflows.filter((w) => w.status === 'completed').length\n );\n const failedCount = createMemo(\n () => state().workflows.filter((w) => w.status === 'failed').length\n );\n const runningCount = createMemo(\n () => state().workflows.filter((w) => w.status === 'running').length\n );\n\n const selectedWorkflow = () => {\n const workflows = state().workflows;\n if (workflows.length === 0) return null;\n return workflows[selectedIndex()];\n };\n\n const getStatusIcon = (status: WorkflowListItem['status']): string => {\n switch (status) {\n case 'completed':\n return '✓';\n case 'failed':\n return '✗';\n case 'running':\n return '⟳';\n default:\n return '○';\n }\n };\n\n const getStatusColor = (status: WorkflowListItem['status']): string => {\n switch (status) {\n case 'completed':\n return terminalColors.success;\n case 'failed':\n return terminalColors.error;\n case 'running':\n return terminalColors.accent;\n default:\n return terminalColors.textMuted;\n }\n };\n\n const divider = () => '─'.repeat(contentWidth());\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Workflows\"\n subtitle=\"Automate skill chains\"\n icon=\"~\"\n count={state().workflows.length}\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading workflows...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <box flexDirection=\"row\" marginBottom={1}>\n <Show when={successCount() > 0}>\n <text fg={terminalColors.success}>✓ {successCount()} passed</text>\n <text fg={terminalColors.textMuted}> | </text>\n </Show>\n <Show when={failedCount() > 0}>\n <text fg={terminalColors.error}>✗ {failedCount()} failed</text>\n <text fg={terminalColors.textMuted}> | </text>\n </Show>\n <Show when={runningCount() > 0}>\n <text fg={terminalColors.accent}>⟳ {runningCount()} running</text>\n </Show>\n <Show when={successCount() === 0 && failedCount() === 0 && runningCount() === 0}>\n <text fg={terminalColors.textMuted}>No workflows run yet</text>\n </Show>\n </box>\n\n <text fg={terminalColors.textMuted}>{divider()}</text>\n <text> </text>\n\n <Show\n when={state().workflows.length > 0}\n fallback={\n <EmptyState\n icon=\"~\"\n title=\"No workflows found\"\n description=\"Create workflows in .skillkit/workflows/\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Available Workflows</b>\n </text>\n <text> </text>\n\n <For each={state().workflows}>\n {(wf, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={20}\n >\n {wf.name}\n </text>\n <text fg={getStatusColor(wf.status)} width={3}>\n {getStatusIcon(wf.status)}{' '}\n </text>\n <text fg={terminalColors.textMuted} width={8}>\n {wf.skills}s / {wf.waves}w\n </text>\n <Show when={wf.lastRun}>\n <text fg={terminalColors.textMuted}> • {wf.lastRun}</text>\n </Show>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={executing()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Executing workflow...\" />\n <Show when={state().progress}>\n <text fg={terminalColors.textMuted}>\n Wave {state().progress?.currentWave}/{state().progress?.totalWaves} •{' '}\n Skill {state().progress?.currentSkill}/{state().progress?.totalSkills}\n </text>\n </Show>\n </Show>\n </box>\n\n <Show when={showDetail() && selectedWorkflow()}>\n <DetailPane\n title={selectedWorkflow()!.name}\n subtitle={selectedWorkflow()!.description}\n icon=\"~\"\n fields={[\n { label: 'Skills', value: String(selectedWorkflow()!.skills) },\n { label: 'Waves', value: String(selectedWorkflow()!.waves) },\n { label: 'Status', value: selectedWorkflow()!.status },\n {\n label: 'Last Run',\n value: selectedWorkflow()!.lastRun || 'Never',\n },\n ]}\n actions={[\n { key: 'x', label: 'Execute' },\n { key: 'e', label: 'Edit' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={28}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>{divider()}</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter details x execute r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen, loadSkillsWithDetails, type SkillWithDetails } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { ProgressBar } from '../components/ProgressBar.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n getAgentAvailability,\n executeSkillWithAgent,\n listAvailableAgents,\n type AgentAvailability,\n} from '../services/executor.service.js';\nimport type { AgentType } from '@skillkit/core';\n\ninterface ExecuteProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Execute(props: ExecuteProps) {\n const [skills, setSkills] = createSignal<SkillWithDetails[]>([]);\n const [agents, setAgents] = createSignal<AgentAvailability[]>([]);\n const [selectedSkillIndex, setSelectedSkillIndex] = createSignal(0);\n const [selectedAgentIndex, setSelectedAgentIndex] = createSignal(0);\n const [focusedPane, setFocusedPane] = createSignal<'skills' | 'agents'>('skills');\n const [executing, setExecuting] = createSignal(false);\n const [executionResult, setExecutionResult] = createSignal<{\n success: boolean;\n output: string;\n error?: string;\n } | null>(null);\n const [loading, setLoading] = createSignal(true);\n const [loadError, setLoadError] = createSignal<string | null>(null);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setLoadError(null);\n\n try {\n const skillsWithDetails = loadSkillsWithDetails();\n setSkills(skillsWithDetails);\n\n const agentAvailability = await getAgentAvailability();\n setAgents(agentAvailability);\n } catch (err) {\n setLoadError(err instanceof Error ? err.message : 'Failed to load');\n } finally {\n setLoading(false);\n }\n };\n\n const handleExecute = async () => {\n if (executing()) return;\n\n const skillList = skills();\n const agentList = agents();\n\n if (skillList.length === 0 || agentList.length === 0) return;\n\n const skill = skillList[selectedSkillIndex()];\n const agent = agentList[selectedAgentIndex()];\n\n if (!skill || !agent || !agent.available) return;\n\n setExecuting(true);\n setExecutionResult(null);\n\n try {\n const result = await executeSkillWithAgent(\n skill.path,\n agent.agent,\n { timeout: 60000 }\n );\n\n setExecutionResult({\n success: result.success,\n output: result.output || '',\n error: result.error,\n });\n } catch (err) {\n setExecutionResult({\n success: false,\n output: '',\n error: err instanceof Error ? err.message : 'Execution failed',\n });\n } finally {\n setExecuting(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n if (focusedPane() === 'skills') {\n const max = skills().length - 1;\n setSelectedSkillIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else {\n const max = agents().length - 1;\n setSelectedAgentIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n }\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'tab' || key.name === 'l' || key.name === 'right') {\n setFocusedPane((p) => (p === 'skills' ? 'agents' : 'skills'));\n }\n else if (key.name === 'h' || key.name === 'left') {\n setFocusedPane((p) => (p === 'agents' ? 'skills' : 'agents'));\n }\n else if (key.name === 'return' || key.name === 'x') handleExecute();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (executionResult()) setExecutionResult(null);\n else props.onNavigate('home');\n }\n });\n\n const selectedSkill = () => {\n const list = skills();\n if (list.length === 0) return null;\n return list[selectedSkillIndex()];\n };\n\n const selectedAgent = () => {\n const list = agents();\n if (list.length === 0) return null;\n return list[selectedAgentIndex()];\n };\n\n const MAX_VISIBLE = 8;\n\n const skillsWindow = createMemo(() => {\n const list = skills();\n const selected = selectedSkillIndex();\n const total = list.length;\n if (total <= MAX_VISIBLE) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(MAX_VISIBLE / 2));\n start = Math.min(start, total - MAX_VISIBLE);\n return { start, items: list.slice(start, start + MAX_VISIBLE) };\n });\n\n const agentsWindow = createMemo(() => {\n const list = agents();\n const selected = selectedAgentIndex();\n const total = list.length;\n if (total <= MAX_VISIBLE) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(MAX_VISIBLE / 2));\n start = Math.min(start, total - MAX_VISIBLE);\n return { start, items: list.slice(start, start + MAX_VISIBLE) };\n });\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Execute\"\n subtitle=\"Run skills with AI agents\"\n icon=\"▶\"\n />\n\n <Show when={loading()}>\n <Spinner label=\"Loading...\" />\n </Show>\n\n <Show when={loadError()}>\n <ErrorState\n message={loadError()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={!loading() && !loadError()}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" width={30}>\n <text\n fg={\n focusedPane() === 'skills'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Skills</b>\n </text>\n <text> </text>\n\n <Show\n when={skills().length > 0}\n fallback={\n <EmptyState\n title=\"No skills installed\"\n description=\"Browse to install\"\n action={{ label: 'Browse', key: 'b' }}\n compact\n />\n }\n >\n <Show when={skillsWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {skillsWindow().start} more</text>\n </Show>\n <For each={skillsWindow().items}>\n {(skill, idx) => {\n const originalIndex = () => skillsWindow().start + idx();\n const isSelected = () =>\n focusedPane() === 'skills' && originalIndex() === selectedSkillIndex();\n return (\n <box marginBottom={1}>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.textSecondary}\n >\n {isSelected() ? '▸ ' : ' '}\n {skill.name}\n </text>\n </box>\n );\n }}\n </For>\n <Show when={skillsWindow().start + MAX_VISIBLE < skills().length}>\n <text fg={terminalColors.textMuted}> ▼ {skills().length - skillsWindow().start - MAX_VISIBLE} more</text>\n </Show>\n </Show>\n </box>\n\n <box width={2}>\n <text fg={terminalColors.border}>│</text>\n </box>\n\n <box flexDirection=\"column\" width={25}>\n <text\n fg={\n focusedPane() === 'agents'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Agents</b>\n </text>\n <text> </text>\n\n <Show\n when={agents().length > 0}\n fallback={\n <EmptyState\n title=\"No agents found\"\n compact\n />\n }\n >\n <Show when={agentsWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {agentsWindow().start} more</text>\n </Show>\n <For each={agentsWindow().items}>\n {(agent, idx) => {\n const originalIndex = () => agentsWindow().start + idx();\n const isSelected = () =>\n focusedPane() === 'agents' && originalIndex() === selectedAgentIndex();\n const available = agent.available;\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={\n isSelected()\n ? terminalColors.accent\n : available\n ? terminalColors.textSecondary\n : terminalColors.textMuted\n }\n >\n {isSelected() ? '▸ ' : ' '}\n {agent.agent}\n </text>\n <text fg={available ? terminalColors.success : terminalColors.error}>\n {' '}\n {available ? '●' : '○'}\n </text>\n </box>\n );\n }}\n </For>\n <Show when={agentsWindow().start + MAX_VISIBLE < agents().length}>\n <text fg={terminalColors.textMuted}> ▼ {agents().length - agentsWindow().start - MAX_VISIBLE} more</text>\n </Show>\n </Show>\n </box>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show when={selectedSkill() && selectedAgent()}>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>Selected: </text>\n <text fg={terminalColors.accent}>{selectedSkill()!.name}</text>\n <text fg={terminalColors.textMuted}> → </text>\n <text\n fg={\n selectedAgent()!.available\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n {selectedAgent()!.agent}\n </text>\n <Show when={!selectedAgent()!.available}>\n <text fg={terminalColors.warning}> (unavailable)</text>\n </Show>\n </box>\n </Show>\n\n <Show when={executing()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Executing skill...\" />\n </Show>\n\n <Show when={executionResult() && !executing()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text\n fg={\n executionResult()!.success\n ? terminalColors.success\n : terminalColors.error\n }\n >\n {executionResult()!.success ? '✓ Execution completed' : '✗ Execution failed'}\n </text>\n <Show when={executionResult()!.error}>\n <text fg={terminalColors.error}>{executionResult()!.error}</text>\n </Show>\n <Show when={executionResult()!.output}>\n <text fg={terminalColors.textMuted}>\n {executionResult()!.output.slice(0, 200)}\n {executionResult()!.output.length > 200 ? '...' : ''}\n </text>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Tab/←/→ switch pane j/k navigate Enter execute r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { For } from 'solid-js';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface HistoryProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function History(props: HistoryProps) {\n const history = [\n { skill: 'tdd-workflow', time: '10:32 AM', duration: '2.3s', status: 'success' },\n { skill: 'code-review', time: '10:15 AM', duration: '5.1s', status: 'success' },\n { skill: 'deploy-check', time: '09:45 AM', duration: '8.7s', status: 'failed' },\n { skill: 'lint-fix', time: '09:30 AM', duration: '1.2s', status: 'success' },\n ];\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"History\"\n subtitle=\"View execution history\"\n count={history.length}\n icon=\"◷\"\n />\n\n <text fg={terminalColors.text}><b>Recent Executions</b></text>\n <text> </text>\n\n <For each={history}>\n {(item, idx) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={idx() === 0 ? terminalColors.accent : terminalColors.text}\n width={18}\n >\n {idx() === 0 ? '\\u25B8 ' : ' '}{item.skill}\n </text>\n <text fg={terminalColors.textMuted} width={12}>{item.time}</text>\n <text fg={terminalColors.textMuted} width={10}>{item.duration}</text>\n <text\n fg={item.status === 'success' ? terminalColors.success : terminalColors.error}\n >\n {item.status === 'success' ? '\\u2713 success' : '\\u2717 failed'}\n </text>\n </box>\n )}\n </For>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Press Enter to view details, 'r' to re-run, 'c' to clear\n </text>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadTeamConfig,\n initializeTeam,\n shareSkill,\n type TeamServiceState,\n type TeamMemberDisplay,\n type SharedSkillDisplay,\n} from '../services/team.service.js';\n\ninterface TeamProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ntype FocusedPane = 'members' | 'skills';\n\nexport function Team(props: TeamProps) {\n const [state, setState] = createSignal<TeamServiceState>({\n config: null,\n members: [],\n sharedSkills: [],\n loading: true,\n error: null,\n });\n const [focusedPane, setFocusedPane] = createSignal<FocusedPane>('members');\n const [selectedMemberIndex, setSelectedMemberIndex] = createSignal(0);\n const [selectedSkillIndex, setSelectedSkillIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [initializing, setInitializing] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadTeamConfig();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load team',\n }));\n }\n };\n\n const handleInitialize = async () => {\n if (initializing()) return;\n setInitializing(true);\n try {\n const success = await initializeTeam('My Team');\n if (success) {\n await loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to initialize team',\n }));\n } finally {\n setInitializing(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n if (focusedPane() === 'members') {\n const max = state().members.length - 1;\n setSelectedMemberIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else {\n const max = state().sharedSkills.length - 1;\n setSelectedSkillIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n }\n };\n\n useKeyboard((key: { name?: string }) => {\n if (showDetail()) {\n if (key.name === 'escape') {\n setShowDetail(false);\n }\n return;\n }\n\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'tab' || key.name === 'l' || key.name === 'right') {\n setFocusedPane((p) => (p === 'members' ? 'skills' : 'members'));\n } else if (key.name === 'h' || key.name === 'left') {\n setFocusedPane((p) => (p === 'skills' ? 'members' : 'skills'));\n } else if (key.name === 'return') setShowDetail(true);\n else if (key.name === 'i') handleInitialize();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n const getStatusIcon = (status: TeamMemberDisplay['status']): string => {\n switch (status) {\n case 'active':\n return '●';\n case 'inactive':\n return '○';\n case 'pending':\n return '◐';\n default:\n return '○';\n }\n };\n\n const getStatusColor = (status: TeamMemberDisplay['status']): string => {\n switch (status) {\n case 'active':\n return terminalColors.success;\n case 'inactive':\n return terminalColors.textMuted;\n case 'pending':\n return terminalColors.warning;\n default:\n return terminalColors.textMuted;\n }\n };\n\n const selectedMember = () => {\n const members = state().members;\n if (members.length === 0) return null;\n return members[selectedMemberIndex()];\n };\n\n const selectedSharedSkill = () => {\n const skills = state().sharedSkills;\n if (skills.length === 0) return null;\n return skills[selectedSkillIndex()];\n };\n\n const memberDetailFields = () => {\n const member = selectedMember();\n if (!member) return [];\n\n return [\n { label: 'Name', value: member.name },\n { label: 'Role', value: member.role },\n { label: 'Skills', value: String(member.skills) },\n { label: 'Status', value: member.status },\n { label: 'Last Sync', value: member.lastSync || 'Never' },\n ];\n };\n\n const skillDetailFields = () => {\n const skill = selectedSharedSkill();\n if (!skill) return [];\n\n return [\n { label: 'Name', value: skill.name },\n { label: 'Shared By', value: skill.sharedBy },\n { label: 'Shared At', value: skill.sharedAt },\n { label: 'Agents', value: skill.agents.join(', ') || 'All' },\n ];\n };\n\n const activeCount = createMemo(\n () => state().members.filter((m) => m.status === 'active').length\n );\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Team\"\n subtitle=\"Collaborate with your development team\"\n count={state().members.length}\n icon=\"◉\"\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading team...\" />\n </Show>\n\n <Show when={initializing()}>\n <StatusIndicator status=\"loading\" label=\"Initializing team...\" />\n </Show>\n\n <Show when={!state().loading && !state().error && !initializing()}>\n <Show\n when={state().config}\n fallback={\n <EmptyState\n icon=\"◉\"\n title=\"No team configured\"\n description=\"Initialize a team to start collaborating\"\n action={{ label: 'Initialize', key: 'i' }}\n />\n }\n >\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>Team: </text>\n <text fg={terminalColors.accent}>{state().config?.teamName || 'Unnamed'}</text>\n <text fg={terminalColors.textMuted}> • </text>\n <text fg={terminalColors.success}>{activeCount()} active</text>\n <text fg={terminalColors.textMuted}> • </text>\n <text fg={terminalColors.text}>{state().sharedSkills.length} shared skills</text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" width={30}>\n <text\n fg={\n focusedPane() === 'members'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Members</b>\n </text>\n <text> </text>\n\n <Show\n when={state().members.length > 0}\n fallback={\n <EmptyState title=\"No members\" compact />\n }\n >\n <For each={state().members}>\n {(member, idx) => {\n const selected = () =>\n focusedPane() === 'members' && idx() === selectedMemberIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={15}\n >\n {member.name}\n </text>\n <text fg={terminalColors.textMuted} width={8}>\n {member.role}\n </text>\n <text fg={getStatusColor(member.status)}>\n {getStatusIcon(member.status)}\n </text>\n </box>\n );\n }}\n </For>\n </Show>\n </box>\n\n <box width={2}>\n <text fg={terminalColors.border}>│</text>\n </box>\n\n <box flexDirection=\"column\" width={35}>\n <text\n fg={\n focusedPane() === 'skills'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Shared Skills</b>\n </text>\n <text> </text>\n\n <Show\n when={state().sharedSkills.length > 0}\n fallback={\n <EmptyState\n title=\"No shared skills\"\n description=\"Share skills with 's'\"\n compact\n />\n }\n >\n <For each={state().sharedSkills.slice(0, 8)}>\n {(skill, idx) => {\n const selected = () =>\n focusedPane() === 'skills' && idx() === selectedSkillIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={18}\n >\n {skill.name}\n </text>\n <text fg={terminalColors.textMuted}>\n by {skill.sharedBy}\n </text>\n </box>\n );\n }}\n </For>\n <Show when={state().sharedSkills.length > 8}>\n <text fg={terminalColors.textMuted}>\n +{state().sharedSkills.length - 8} more\n </text>\n </Show>\n </Show>\n </box>\n </box>\n\n <Show when={showDetail()}>\n <Show when={focusedPane() === 'members' && selectedMember()}>\n <DetailPane\n title={selectedMember()!.name}\n subtitle={selectedMember()!.role}\n icon=\"◉\"\n fields={memberDetailFields()}\n actions={[\n { key: 's', label: 'Share Skill' },\n { key: 'd', label: 'Remove' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={30}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n <Show when={focusedPane() === 'skills' && selectedSharedSkill()}>\n <DetailPane\n title={selectedSharedSkill()!.name}\n subtitle={`Shared by ${selectedSharedSkill()!.sharedBy}`}\n icon=\"◇\"\n fields={skillDetailFields()}\n actions={[\n { key: 'i', label: 'Install' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={30}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n Tab/←/→ switch pane j/k navigate Enter details i init r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadPluginsList,\n enablePlugin,\n disablePlugin,\n getPluginInfo,\n type PluginServiceState,\n type PluginListItem,\n} from '../services/plugin.service.js';\nimport type { PluginManager, Plugin } from '@skillkit/core';\n\ninterface PluginsProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Plugins(props: PluginsProps) {\n const [state, setState] = createSignal<PluginServiceState>({\n plugins: [],\n manager: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [selectedPlugin, setSelectedPlugin] = createSignal<Plugin | null>(null);\n const [toggling, setToggling] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadPluginsList();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load plugins',\n }));\n }\n };\n\n const handleToggle = async () => {\n const plugins = state().plugins;\n const manager = state().manager;\n if (plugins.length === 0 || !manager) return;\n\n const plugin = plugins[selectedIndex()];\n if (!plugin) return;\n\n setToggling(true);\n\n try {\n if (plugin.enabled) {\n await disablePlugin(plugin.name, manager);\n } else {\n await enablePlugin(plugin.name, manager);\n }\n\n await loadData();\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to toggle plugin',\n }));\n } finally {\n setToggling(false);\n }\n };\n\n const handleShowDetail = async () => {\n const plugins = state().plugins;\n const manager = state().manager;\n if (plugins.length === 0 || !manager) return;\n\n const plugin = plugins[selectedIndex()];\n if (!plugin) return;\n\n try {\n const info = await getPluginInfo(plugin.name, manager);\n setSelectedPlugin(info as Plugin | null);\n setShowDetail(true);\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to load plugin details',\n }));\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().plugins.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleShowDetail();\n else if (key.name === 'space' || key.name === 't') handleToggle();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (showDetail()) setShowDetail(false);\n else props.onNavigate('home');\n }\n });\n\n const getTypeIcon = (type: PluginListItem['type']): string => {\n switch (type) {\n case 'translator':\n return '⇄';\n case 'provider':\n return '◆';\n case 'command':\n return '⌘';\n default:\n return '◈';\n }\n };\n\n const currentPlugin = () => {\n const plugins = state().plugins;\n if (plugins.length === 0) return null;\n return plugins[selectedIndex()];\n };\n\n const detailFields = () => {\n const plugin = selectedPlugin();\n if (!plugin) return [];\n\n const current = currentPlugin();\n return [\n { label: 'Name', value: plugin.metadata.name },\n { label: 'Version', value: plugin.metadata.version },\n { label: 'Description', value: plugin.metadata.description || 'No description' },\n { label: 'Type', value: current?.type || 'unknown' },\n { label: 'Status', value: current?.enabled ? 'Enabled' : 'Disabled' },\n { label: 'Path', value: current?.path || 'N/A' },\n ];\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Plugins\"\n subtitle=\"Extend SkillKit with plugins\"\n count={state().plugins.length}\n icon=\"◈\"\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading plugins...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <Show\n when={state().plugins.length > 0}\n fallback={\n <EmptyState\n icon=\"◈\"\n title=\"No plugins installed\"\n description=\"Install plugins from ~/.skillkit/plugins/\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Installed Plugins</b>\n </text>\n <text> </text>\n\n <For each={state().plugins}>\n {(plugin, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.textSecondary}\n width={3}\n >\n {getTypeIcon(plugin.type)}{' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={20}\n >\n {plugin.name}\n </text>\n <text fg={terminalColors.textMuted} width={10}>\n v{plugin.version}\n </text>\n <text\n fg={\n plugin.enabled\n ? terminalColors.success\n : terminalColors.textMuted\n }\n >\n {plugin.enabled ? '● enabled' : '○ disabled'}\n </text>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={toggling()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Toggling plugin...\" />\n </Show>\n\n <Show when={currentPlugin() && !toggling()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n {currentPlugin()!.description || 'No description available'}\n </text>\n </Show>\n </box>\n\n <Show when={showDetail() && selectedPlugin()}>\n <DetailPane\n title={selectedPlugin()!.metadata.name}\n subtitle={`v${selectedPlugin()!.metadata.version}`}\n icon={getTypeIcon(currentPlugin()?.type || 'mixed')}\n fields={detailFields()}\n actions={[\n {\n key: 't',\n label: currentPlugin()?.enabled ? 'Disable' : 'Enable',\n },\n { key: 'Esc', label: 'Close' },\n ]}\n width={35}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter details Space toggle r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadMethodologies,\n installMethodologyPack,\n uninstallMethodologyPack,\n syncMethodologyPack,\n type MethodologyServiceState,\n type MethodologyPackDisplay,\n} from '../services/methodology.service.js';\n\ninterface MethodologyProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Methodology(props: MethodologyProps) {\n const [state, setState] = createSignal<MethodologyServiceState>({\n packs: [],\n installedPacks: [],\n manager: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [installing, setInstalling] = createSignal(false);\n const [syncing, setSyncing] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadMethodologies();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load methodologies',\n }));\n }\n };\n\n const handleInstall = async () => {\n const packs = state().packs;\n if (packs.length === 0 || installing()) return;\n\n const pack = packs[selectedIndex()];\n if (!pack || pack.installed) return;\n\n setInstalling(true);\n try {\n const result = await installMethodologyPack(pack.name);\n if (result) {\n await loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to install pack',\n }));\n } finally {\n setInstalling(false);\n }\n };\n\n const handleUninstall = async () => {\n const packs = state().packs;\n if (packs.length === 0 || installing()) return;\n\n const pack = packs[selectedIndex()];\n if (!pack || !pack.installed) return;\n\n setInstalling(true);\n try {\n const success = await uninstallMethodologyPack(pack.name);\n if (success) {\n await loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to uninstall pack',\n }));\n } finally {\n setInstalling(false);\n }\n };\n\n const handleSync = async () => {\n const packs = state().packs;\n if (packs.length === 0 || syncing()) return;\n\n const pack = packs[selectedIndex()];\n if (!pack || !pack.installed) return;\n\n setSyncing(true);\n try {\n const result = await syncMethodologyPack(pack.name);\n if (result) {\n await loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to sync pack',\n }));\n } finally {\n setSyncing(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().packs.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') setShowDetail(true);\n else if (key.name === 'i') handleInstall();\n else if (key.name === 'u') handleUninstall();\n else if (key.name === 's') handleSync();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (showDetail()) setShowDetail(false);\n else props.onNavigate('home');\n }\n });\n\n const getStatusIcon = (status: MethodologyPackDisplay['status']): string => {\n switch (status) {\n case 'synced':\n return '✓';\n case 'installed':\n return '●';\n default:\n return '○';\n }\n };\n\n const getStatusColor = (status: MethodologyPackDisplay['status']): string => {\n switch (status) {\n case 'synced':\n return terminalColors.success;\n case 'installed':\n return terminalColors.accent;\n default:\n return terminalColors.textMuted;\n }\n };\n\n const selectedPack = () => {\n const packs = state().packs;\n if (packs.length === 0) return null;\n return packs[selectedIndex()];\n };\n\n const detailFields = () => {\n const pack = selectedPack();\n if (!pack) return [];\n\n return [\n { label: 'Name', value: pack.name },\n { label: 'Version', value: pack.version },\n { label: 'Description', value: pack.description || 'No description' },\n { label: 'Skills', value: String(pack.skills) },\n { label: 'Tags', value: pack.tags.join(', ') || 'None' },\n { label: 'Status', value: pack.status },\n ];\n };\n\n const installedCount = () => state().packs.filter((p) => p.installed).length;\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Methodologies\"\n subtitle=\"Development methodology skill packs\"\n count={state().packs.length}\n icon=\"◎\"\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading methodologies...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>Installed: </text>\n <text fg={terminalColors.success}>{installedCount()}</text>\n <text fg={terminalColors.textMuted}> / </text>\n <text fg={terminalColors.text}>{state().packs.length}</text>\n <text fg={terminalColors.textMuted}> packs</text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show\n when={state().packs.length > 0}\n fallback={\n <EmptyState\n icon=\"◎\"\n title=\"No methodology packs found\"\n description=\"Check .skillkit/methodology/packs/\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Available Packs</b>\n </text>\n <text> </text>\n\n <For each={state().packs}>\n {(pack, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\">\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={20}\n >\n {pack.name}\n </text>\n <text fg={terminalColors.textMuted} width={8}>\n v{pack.version}\n </text>\n <text fg={terminalColors.textMuted} width={10}>\n {pack.skills} skills\n </text>\n <text fg={getStatusColor(pack.status)}>\n {getStatusIcon(pack.status)} {pack.status}\n </text>\n </box>\n <Show when={pack.description}>\n <text fg={terminalColors.textMuted}>\n {' '}{pack.description.slice(0, 45)}\n {pack.description.length > 45 ? '...' : ''}\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={installing()}>\n <text> </text>\n <StatusIndicator\n status=\"loading\"\n label={selectedPack()?.installed ? 'Uninstalling...' : 'Installing...'}\n />\n </Show>\n\n <Show when={syncing()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Syncing to agents...\" />\n </Show>\n </box>\n\n <Show when={showDetail() && selectedPack()}>\n <DetailPane\n title={selectedPack()!.name}\n subtitle={`v${selectedPack()!.version}`}\n icon=\"◎\"\n fields={detailFields()}\n actions={\n selectedPack()!.installed\n ? [\n { key: 's', label: 'Sync' },\n { key: 'u', label: 'Uninstall' },\n { key: 'Esc', label: 'Close' },\n ]\n : [\n { key: 'i', label: 'Install' },\n { key: 'Esc', label: 'Close' },\n ]\n }\n width={35}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter details i install u uninstall s sync r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\n\ninterface ProgressBarProps {\n progress: number;\n width?: number;\n showPercentage?: boolean;\n color?: keyof typeof terminalColors;\n}\n\nexport function ProgressBar(props: ProgressBarProps) {\n const width = () => Math.max(1, Math.round(props.width ?? 20));\n const safeProgress = () => (Number.isFinite(props.progress) ? props.progress : 0);\n const showPercentage = () => props.showPercentage ?? true;\n const color = () => props.color ?? 'accent';\n\n const clampedProgress = () => Math.max(0, Math.min(100, safeProgress()));\n const filledWidth = () => Math.round((clampedProgress() / 100) * width());\n const emptyWidth = () => Math.max(0, width() - filledWidth());\n\n const filled = () => symbols.progressFilled.repeat(filledWidth());\n const empty = () => symbols.progressEmpty.repeat(emptyWidth());\n\n return (\n <box flexDirection=\"row\" gap={1}>\n <text>\n <span fg={terminalColors[color()]}>{filled()}</span>\n <span fg={terminalColors.textMuted}>{empty()}</span>\n </text>\n <Show when={showPercentage()}>\n <text fg={terminalColors.textSecondary}>{Math.round(clampedProgress())}%</text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { ProgressBar } from '../components/ProgressBar.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadPlansList,\n loadPlan,\n validatePlan,\n executePlan,\n executePlanDryRun,\n type PlanServiceState,\n type PlanListItem,\n} from '../services/plan.service.js';\n\ninterface PlanProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Plan(props: PlanProps) {\n const [state, setState] = createSignal<PlanServiceState>({\n plans: [],\n current: null,\n validation: null,\n execution: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [executionProgress, setExecutionProgress] = createSignal(0);\n const [executing, setExecuting] = createSignal(false);\n const [validating, setValidating] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadPlansList();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load plans',\n }));\n }\n };\n\n const handleValidate = async () => {\n const plans = state().plans;\n if (plans.length === 0 || validating()) return;\n\n const planItem = plans[selectedIndex()];\n if (!planItem) return;\n\n setValidating(true);\n try {\n const plan = await loadPlan(planItem.path);\n if (plan) {\n const validation = await validatePlan(plan);\n setState((s) => ({ ...s, current: plan, validation }));\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Validation failed',\n }));\n } finally {\n setValidating(false);\n }\n };\n\n const handleExecute = async (dryRun: boolean = false) => {\n const plans = state().plans;\n if (plans.length === 0 || executing()) return;\n\n const planItem = plans[selectedIndex()];\n if (!planItem) return;\n\n setExecuting(true);\n setExecutionProgress(0);\n\n try {\n const plan = await loadPlan(planItem.path);\n if (!plan) {\n setExecuting(false);\n return;\n }\n\n const executeFn = dryRun ? executePlanDryRun : executePlan;\n let completedCount = 0;\n const totalTasks = plan.tasks?.length || 0;\n const result = await executeFn(plan, undefined, (event) => {\n if (event === 'plan:task_completed') {\n completedCount++;\n setExecutionProgress(totalTasks > 0 ? (completedCount / totalTasks) * 100 : 100);\n }\n });\n\n setState((s) => ({ ...s, execution: result }));\n loadData();\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Execution failed',\n }));\n } finally {\n setExecuting(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().plans.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'v') handleValidate();\n else if (key.name === 'x') handleExecute(false);\n else if (key.name === 'd') handleExecute(true);\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n const getStatusIcon = (status: PlanListItem['status']): string => {\n switch (status) {\n case 'completed':\n return '✓';\n case 'failed':\n return '✗';\n case 'in_progress':\n return '⟳';\n default:\n return '○';\n }\n };\n\n const getStatusColor = (status: PlanListItem['status']): string => {\n switch (status) {\n case 'completed':\n return terminalColors.success;\n case 'failed':\n return terminalColors.error;\n case 'in_progress':\n return terminalColors.accent;\n default:\n return terminalColors.textMuted;\n }\n };\n\n const selectedPlan = () => {\n const plans = state().plans;\n if (plans.length === 0) return null;\n return plans[selectedIndex()];\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Plan Execution\"\n subtitle=\"Structured multi-step execution\"\n icon=\"▣\"\n count={state().plans.length}\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading plans...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <Show\n when={state().plans.length > 0}\n fallback={\n <EmptyState\n icon=\"▣\"\n title=\"No plans found\"\n description=\"Create plans in .skillkit/plans/\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Available Plans</b>\n </text>\n <text> </text>\n\n <For each={state().plans}>\n {(plan, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {plan.name}\n </text>\n <text fg={getStatusColor(plan.status)} width={3}>\n {getStatusIcon(plan.status)}{' '}\n </text>\n <text fg={terminalColors.textMuted} width={10}>\n {plan.tasks} tasks\n </text>\n <Show when={plan.lastModified}>\n <text fg={terminalColors.textMuted}> • {plan.lastModified}</text>\n </Show>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={validating()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Validating plan...\" />\n </Show>\n\n <Show when={state().validation && !validating()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.text}>\n <b>Validation Result</b>\n </text>\n <text\n fg={state().validation!.valid ? terminalColors.success : terminalColors.error}\n >\n {state().validation!.valid ? '✓ Valid' : '✗ Invalid'}\n </text>\n <Show when={state().validation!.issues && state().validation!.issues!.length > 0}>\n <For each={state().validation!.issues!.slice(0, 3)}>\n {(issue) => (\n <text fg={terminalColors.warning}>• {issue.message}</text>\n )}\n </For>\n </Show>\n </Show>\n\n <Show when={executing()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <StatusIndicator status=\"loading\" label=\"Executing plan...\" />\n <box flexDirection=\"row\" marginTop={1}>\n <text fg={terminalColors.text}>Progress: </text>\n <ProgressBar progress={executionProgress()} width={30} />\n </box>\n </Show>\n\n <Show when={state().execution && !executing()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.text}>\n <b>Execution Result</b>\n </text>\n <text\n fg={state().execution!.success ? terminalColors.success : terminalColors.error}\n >\n {state().execution!.success ? '✓ Completed' : '✗ Failed'}\n </text>\n <text fg={terminalColors.textMuted}>\n Completed: {state().execution!.completedTasks.length} | Failed: {state().execution!.failedTasks.length}\n </text>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate v validate x execute d dry-run r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface SettingsProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ninterface SettingItem {\n key: string;\n label: string;\n value: string;\n type: 'select' | 'path' | 'toggle';\n}\n\nconst DEFAULT_SETTINGS: SettingItem[] = [\n { key: 'defaultAgent', label: 'Default Agent', value: 'claude-code', type: 'select' },\n { key: 'skillsDir', label: 'Skills Directory', value: '.claude/skills', type: 'path' },\n { key: 'autoSync', label: 'Auto Sync', value: 'enabled', type: 'toggle' },\n { key: 'theme', label: 'Theme', value: 'dark', type: 'select' },\n { key: 'telemetry', label: 'Telemetry', value: 'disabled', type: 'toggle' },\n];\n\nexport function Settings(props: SettingsProps) {\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [settings, setSettings] = createSignal<SettingItem[]>(DEFAULT_SETTINGS);\n const [animPhase, setAnimPhase] = createSignal(0);\n\n const cols = () => props.cols ?? 80;\n const isCompact = () => cols() < 60;\n const contentWidth = () => Math.max(1, Math.min(cols() - 4, 60));\n\n createEffect(() => {\n if (animPhase() >= 2) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n onCleanup(() => clearTimeout(timer));\n });\n\n const handleKeyNav = (delta: number) => {\n setSelectedIndex(prev => Math.max(0, Math.min(prev + delta, settings().length - 1)));\n };\n\n const handleToggle = () => {\n const setting = settings()[selectedIndex()];\n if (setting?.type === 'toggle') {\n setSettings(prev => prev.map((s, i) =>\n i === selectedIndex() ? { ...s, value: s.value === 'enabled' ? 'disabled' : 'enabled' } : s\n ));\n }\n };\n\n const handleReset = () => {\n setSettings(DEFAULT_SETTINGS);\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleToggle();\n else if (key.name === 'r') handleReset();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n const divider = createMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth())}</text>\n );\n\n const shortcuts = () => isCompact()\n ? 'j/k nav enter toggle r reset esc back'\n : 'j/k navigate enter toggle r reset defaults esc back';\n\n return (\n <box flexDirection=\"column\" padding={1}>\n <Show when={animPhase() >= 1}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth()}>\n <text fg={terminalColors.text}>Settings</text>\n <text fg={terminalColors.textMuted}>{settings().length} options</text>\n </box>\n <text fg={terminalColors.textMuted}>configure skillkit</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text> </text>\n <text fg={terminalColors.text}>Configuration</text>\n <text> </text>\n\n <For each={settings()}>\n {(setting, idx) => {\n const selected = () => idx() === selectedIndex();\n const indicator = () => selected() ? '>' : ' ';\n const valueColor = () => setting.type === 'toggle'\n ? (setting.value === 'enabled' ? terminalColors.success : terminalColors.textMuted)\n : terminalColors.textMuted;\n const toggleIcon = () => setting.type === 'toggle'\n ? (setting.value === 'enabled' ? '* ' : 'o ')\n : '';\n return (\n <box flexDirection=\"row\">\n <text fg={terminalColors.text}>{indicator()}</text>\n <text fg={selected() ? terminalColors.accent : terminalColors.text} width={18}>\n {setting.label}\n </text>\n <text fg={valueColor()}>{toggleIcon()}{setting.value}</text>\n </box>\n );\n }}\n </For>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2 && !isCompact()}>\n <box flexDirection=\"column\">\n {divider()}\n <text fg={terminalColors.textMuted}>config: ~/.config/skillkit/config.json</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text fg={terminalColors.textMuted}>{shortcuts()}</text>\n </box>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface HelpProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst SHORTCUTS = [\n { section: 'Navigation', items: [\n { key: 'h', desc: 'Home screen' },\n { key: 'b', desc: 'Browse skills' },\n { key: 'm', desc: 'Marketplace' },\n { key: 'r', desc: 'Recommendations' },\n { key: 'i', desc: 'Installed skills' },\n { key: 's', desc: 'Sync settings' },\n { key: 'f', desc: 'Find skills' },\n ]},\n { section: 'Actions', items: [\n { key: 't', desc: 'Translate skills' },\n { key: 'w', desc: 'Workflows' },\n { key: 'x', desc: 'Execute' },\n { key: 'n', desc: 'Plan' },\n { key: 'v', desc: 'Validate' },\n { key: 'u', desc: 'Publish' },\n ]},\n { section: 'Team & Config', items: [\n { key: 'a', desc: 'Team settings' },\n { key: 'c', desc: 'Context' },\n { key: 'e', desc: 'Memory' },\n { key: 'p', desc: 'Plugins' },\n { key: 'o', desc: 'Methodology' },\n { key: ',', desc: 'Settings' },\n ]},\n { section: 'Global', items: [\n { key: '/', desc: 'This help screen' },\n { key: 'd', desc: 'Open docs' },\n { key: 'esc', desc: 'Go back / Home' },\n { key: 'q', desc: 'Quit application' },\n { key: 'j/k', desc: 'Navigate lists' },\n ]},\n];\n\ninterface ShortcutSectionProps {\n section: string;\n items: { key: string; desc: string }[];\n isLast: boolean;\n}\n\nfunction ShortcutSection(props: ShortcutSectionProps) {\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>{props.section}</text>\n <For each={props.items}>\n {(item) => (\n <box flexDirection=\"row\">\n <text fg={terminalColors.accent} width={8}> {item.key}</text>\n <text fg={terminalColors.textMuted}>{item.desc}</text>\n </box>\n )}\n </For>\n <Show when={!props.isLast}>\n <text> </text>\n </Show>\n </box>\n );\n}\n\nexport function Help(props: HelpProps) {\n const [animPhase, setAnimPhase] = createSignal(0);\n const cols = () => props.cols ?? 80;\n const isCompact = () => cols() < 60;\n const rawWidth = () => cols() - 4;\n const contentWidth = () => Math.max(1, Math.min(rawWidth(), 60));\n const version = getVersion();\n\n createEffect(() => {\n if (animPhase() >= 2) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n onCleanup(() => clearTimeout(timer));\n });\n\n const divider = createMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth())}</text>\n );\n\n return (\n <box flexDirection=\"column\" padding={1}>\n <Show when={animPhase() >= 1}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth()}>\n <text fg={terminalColors.text}>/ Help</text>\n <text fg={terminalColors.textMuted}>skillkit v{version}</text>\n </box>\n <text fg={terminalColors.textMuted}>keyboard shortcuts and navigation</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text> </text>\n <Show when={isCompact()} fallback={\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" width={Math.floor(contentWidth() / 2)}>\n <For each={SHORTCUTS.slice(0, 2)}>\n {(s, idx) => (\n <ShortcutSection section={s.section} items={s.items} isLast={idx() === 1} />\n )}\n </For>\n </box>\n <box flexDirection=\"column\" width={Math.floor(contentWidth() / 2)}>\n <For each={SHORTCUTS.slice(2)}>\n {(s, idx) => (\n <ShortcutSection section={s.section} items={s.items} isLast={idx() === 1} />\n )}\n </For>\n </box>\n </box>\n }>\n <For each={SHORTCUTS}>\n {(s, idx) => (\n <ShortcutSection section={s.section} items={s.items} isLast={idx() === SHORTCUTS.length - 1} />\n )}\n </For>\n </Show>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text fg={terminalColors.textMuted}>esc back h home q quit</text>\n </box>\n </Show>\n </box>\n );\n}\n","import { For } from 'solid-js';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface MeshProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Mesh(props: MeshProps) {\n const hosts = [\n { name: 'workstation-1', address: '192.168.1.10', status: 'online', peers: 3 },\n { name: 'laptop-dev', address: '192.168.1.15', status: 'online', peers: 2 },\n { name: 'server-main', address: '192.168.1.100', status: 'offline', peers: 0 },\n ];\n\n const securityStatus = {\n initialized: true,\n fingerprint: 'abc123def456',\n trustedPeers: 5,\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Mesh Network\"\n subtitle=\"Multi-machine agent distribution\"\n count={hosts.filter(h => h.status === 'online').length}\n icon=\"◉\"\n />\n\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.text}><b>Security: </b></text>\n <text fg={securityStatus.initialized ? terminalColors.success : terminalColors.warning}>\n {securityStatus.initialized ? '* Initialized' : 'o Not initialized'}\n </text>\n <text fg={terminalColors.textMuted}> Fingerprint: {securityStatus.fingerprint}</text>\n </box>\n\n <text fg={terminalColors.text}><b>Known Hosts</b></text>\n <text> </text>\n\n <For each={hosts}>\n {(host, idx) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={host.status === 'online' ? terminalColors.success : terminalColors.textMuted} width={3}>\n {host.status === 'online' ? '*' : 'o'}\n </text>\n <text fg={idx() === 0 ? terminalColors.accent : terminalColors.text} width={20}>\n {idx() === 0 ? '\\u25B8 ' : ' '}{host.name}\n </text>\n <text fg={terminalColors.textMuted} width={18}>{host.address}</text>\n <text fg={terminalColors.textMuted}>{host.peers} peers</text>\n </box>\n )}\n </For>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n 'd' discover 'a' add host 'r' remove 's' security 'h' health check\n </text>\n </box>\n );\n}\n","import { For } from 'solid-js';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface MessageProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Message(props: MessageProps) {\n const messages = [\n { id: '1', from: 'claude@laptop', subject: 'Code review completed', time: '2 min ago', unread: true },\n { id: '2', from: 'cursor@workstation', subject: 'Build artifacts ready', time: '15 min ago', unread: true },\n { id: '3', from: 'codex@server', subject: 'Test results', time: '1 hour ago', unread: false },\n ];\n\n const unreadCount = messages.filter(m => m.unread).length;\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Messages\"\n subtitle=\"Inter-agent communication\"\n count={unreadCount}\n icon=\"✉\"\n />\n\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.text}><b>Inbox</b></text>\n <text fg={terminalColors.textMuted}> {unreadCount} unread</text>\n </box>\n\n <text> </text>\n\n <For each={messages}>\n {(msg, idx) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={msg.unread ? terminalColors.accent : terminalColors.textMuted} width={3}>\n {msg.unread ? '*' : 'o'}\n </text>\n <text fg={idx() === 0 ? terminalColors.accent : terminalColors.text} width={22}>\n {idx() === 0 ? '\\u25B8 ' : ' '}{msg.from}\n </text>\n <text fg={msg.unread ? terminalColors.text : terminalColors.textMuted} width={30}>\n {msg.subject.slice(0, 28)}\n </text>\n <text fg={terminalColors.textMuted}>{msg.time}</text>\n </box>\n )}\n </For>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Enter to read 'n' new message 'r' reply 'a' archive 's' sent\n </text>\n </box>\n );\n}\n","/**\n * Animation presets for SkillKit TUI\n * Uses OpenTUI's useTimeline for smooth 60fps animations\n */\n\n/**\n * Animation easing functions available in OpenTUI\n */\nexport type EasingFunction =\n | 'linear'\n | 'easeInQuad'\n | 'easeOutQuad'\n | 'easeInOutQuad'\n | 'easeInCubic'\n | 'easeOutCubic'\n | 'easeInOutCubic'\n | 'easeInQuart'\n | 'easeOutQuart'\n | 'easeInOutQuart';\n\n/**\n * Animation preset configuration\n */\nexport interface AnimationPreset {\n duration: number;\n ease: EasingFunction;\n stagger?: number;\n}\n\n/**\n * Predefined animation presets\n */\nexport const animations = {\n /**\n * Staggered fade-in for entrance animations\n * Used on home screen for progressive content reveal\n */\n staggeredFadeIn: {\n duration: 800,\n ease: 'easeOutCubic' as EasingFunction,\n stagger: 100,\n },\n\n /**\n * Logo reveal with scramble effect\n * Used for branding animation on startup\n */\n logoReveal: {\n duration: 600,\n ease: 'easeOutCubic' as EasingFunction,\n },\n\n /**\n * Count-up animation for stats\n * Used in StatsCard component\n */\n countUp: {\n duration: 1200,\n ease: 'easeOutQuart' as EasingFunction,\n },\n\n /**\n * Screen transition animation\n * Used when navigating between screens\n */\n screenTransition: {\n duration: 200,\n ease: 'easeInOutCubic' as EasingFunction,\n },\n\n /**\n * Quick fade for tooltips and hints\n */\n quickFade: {\n duration: 150,\n ease: 'easeOutQuad' as EasingFunction,\n },\n\n /**\n * Pulse animation for active states\n */\n pulse: {\n duration: 1000,\n ease: 'easeInOutQuad' as EasingFunction,\n },\n} as const;\n\n/**\n * Scramble effect characters\n * Used for text reveal animations\n */\nexport const SCRAMBLE_CHARS = '█▓▒░◆◇◈⟁◎✦⬡▣';\n\n/**\n * Scramble animation configuration\n */\nexport interface ScrambleConfig {\n /** Animation duration in ms */\n duration: number;\n /** Progress increment per frame */\n increment: number;\n /** Frame interval in ms */\n interval: number;\n}\n\n/**\n * Default scramble animation config\n */\nexport const DEFAULT_SCRAMBLE_CONFIG: ScrambleConfig = {\n duration: 420,\n increment: 12,\n interval: 35,\n};\n\n/**\n * Generate scrambled text with progressive reveal\n * @param target - The target text to reveal\n * @param progress - Progress percentage (0-100)\n * @param chars - Characters to use for scrambling\n */\nexport function scrambleText(\n target: string,\n progress: number,\n chars: string = SCRAMBLE_CHARS\n): string {\n return target\n .split('\\n')\n .map((line) => {\n return line\n .split('')\n .map((char, i) => {\n if (char === ' ') return char;\n if (progress > (i / line.length) * 100) return char;\n return chars[Math.floor(Math.random() * chars.length)];\n })\n .join('');\n })\n .join('\\n');\n}\n\n/**\n * Calculate staggered delay for an item in a list\n * @param index - Item index\n * @param stagger - Delay between items in ms\n * @returns Delay in ms for this item\n */\nexport function getStaggerDelay(index: number, stagger: number = 100): number {\n return index * stagger;\n}\n\n/**\n * New animation presets (Phase 1.4)\n */\nexport const interactionAnimations = {\n /**\n * Element appearance animation\n */\n fadeIn: {\n duration: 200,\n ease: 'easeOutQuad' as EasingFunction,\n },\n\n /**\n * Element disappear animation\n */\n fadeOut: {\n duration: 150,\n ease: 'easeInQuad' as EasingFunction,\n },\n\n /**\n * Detail pane slide in from right\n */\n slideInRight: {\n duration: 250,\n ease: 'easeOutCubic' as EasingFunction,\n },\n\n /**\n * Detail pane slide out to right\n */\n slideOutRight: {\n duration: 200,\n ease: 'easeInCubic' as EasingFunction,\n },\n\n /**\n * Hover state transition\n */\n hover: {\n duration: 100,\n ease: 'easeOutQuad' as EasingFunction,\n },\n\n /**\n * Button press feedback\n */\n press: {\n duration: 50,\n ease: 'easeOutQuad' as EasingFunction,\n },\n\n /**\n * Typewriter text reveal (per character)\n */\n typewriter: {\n duration: 30,\n ease: 'linear' as EasingFunction,\n },\n} as const;\n\n/**\n * Animation timing constants\n */\nexport const ANIMATION_DURATIONS = {\n instant: 0,\n fast: 100,\n normal: 200,\n slow: 400,\n verySlow: 800,\n} as const;\n\n/**\n * Frame rate constants\n */\nexport const FRAME_RATE = {\n fps60: 1000 / 60,\n fps30: 1000 / 30,\n fps24: 1000 / 24,\n} as const;\n\n/**\n * Spinner frame animations\n */\nexport const SPINNER_FRAMES = {\n braille: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'],\n dots: ['⣾', '⣽', '⣻', '⢿', '⡿', '⣟', '⣯', '⣷'],\n line: ['|', '/', '-', '\\\\'],\n arrow: ['←', '↖', '↑', '↗', '→', '↘', '↓', '↙'],\n bounce: ['⠁', '⠂', '⠄', '⠂'],\n pulse: ['◐', '◓', '◑', '◒'],\n} as const;\n\n/**\n * Progress bar characters\n */\nexport const PROGRESS_CHARS = {\n filled: '█',\n empty: '░',\n partial: ['▏', '▎', '▍', '▌', '▋', '▊', '▉'],\n} as const;\n\n/**\n * Create a spring animation curve\n */\nexport function springCurve(\n progress: number,\n tension: number = 0.5,\n friction: number = 0.5\n): number {\n if (progress <= 0) return 0;\n if (progress >= 1) return 1;\n const p = progress;\n const oscillation = Math.sin(p * Math.PI * (1 + tension * 4));\n const damping = Math.exp(-p * friction * 6);\n return 1 - damping * oscillation * (1 - p);\n}\n\n/**\n * Create a bounce animation curve\n */\nexport function bounceCurve(progress: number): number {\n const n1 = 7.5625;\n const d1 = 2.75;\n let p = progress;\n\n if (p < 1 / d1) {\n return n1 * p * p;\n } else if (p < 2 / d1) {\n return n1 * (p -= 1.5 / d1) * p + 0.75;\n } else if (p < 2.5 / d1) {\n return n1 * (p -= 2.25 / d1) * p + 0.9375;\n } else {\n return n1 * (p -= 2.625 / d1) * p + 0.984375;\n }\n}\n\n/**\n * Interpolate between two values\n */\nexport function lerp(start: number, end: number, progress: number): number {\n return start + (end - start) * progress;\n}\n\n/**\n * Clamp a value between min and max\n */\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n","/**\n * List navigation and pagination utilities\n */\n\n/**\n * Calculate visible items for paginated list display\n * Centers the selected item in the visible window\n */\nexport interface PaginationResult {\n /** Starting index in the full list */\n start: number;\n /** Ending index (exclusive) in the full list */\n end: number;\n /** Number of items above the visible window */\n itemsAbove: number;\n /** Number of items below the visible window */\n itemsBelow: number;\n}\n\n/**\n * Calculate pagination for a list with a selected index\n * @param totalItems - Total number of items in the list\n * @param selectedIndex - Currently selected item index\n * @param maxVisible - Maximum number of items to show at once\n * @returns Pagination information\n */\nexport function calculatePagination(\n totalItems: number,\n selectedIndex: number,\n maxVisible: number\n): PaginationResult {\n if (totalItems <= maxVisible) {\n return {\n start: 0,\n end: totalItems,\n itemsAbove: 0,\n itemsBelow: 0,\n };\n }\n\n // Center the selected item in the visible window\n const halfVisible = Math.floor(maxVisible / 2);\n let start = Math.max(0, selectedIndex - halfVisible);\n\n // Ensure we don't go past the end\n if (start + maxVisible > totalItems) {\n start = totalItems - maxVisible;\n }\n\n const end = start + maxVisible;\n\n return {\n start,\n end,\n itemsAbove: start,\n itemsBelow: totalItems - end,\n };\n}\n\n/**\n * Move selection up in a list\n * @param currentIndex - Current selected index\n * @param minIndex - Minimum allowed index (default: 0)\n * @returns New index after moving up\n */\nexport function moveUp(currentIndex: number, minIndex = 0): number {\n return Math.max(minIndex, currentIndex - 1);\n}\n\n/**\n * Move selection down in a list\n * @param currentIndex - Current selected index\n * @param maxIndex - Maximum allowed index\n * @returns New index after moving down\n */\nexport function moveDown(currentIndex: number, maxIndex: number): number {\n return Math.min(maxIndex, currentIndex + 1);\n}\n\n/**\n * Clamp an index within valid bounds\n * @param index - Index to clamp\n * @param listLength - Length of the list\n * @returns Clamped index\n */\nexport function clampIndex(index: number, listLength: number): number {\n if (listLength === 0) return 0;\n return Math.max(0, Math.min(index, listLength - 1));\n}\n\n/**\n * Calculate max visible items based on available rows\n * @param availableRows - Total available rows\n * @param reservedRows - Rows reserved for headers, footers, etc.\n * @param minVisible - Minimum visible items (default: 5)\n * @returns Maximum visible items\n */\nexport function calculateMaxVisible(\n availableRows: number,\n reservedRows: number,\n minVisible = 5\n): number {\n return Math.max(minVisible, availableRows - reservedRows);\n}\n","import { Show, For, createMemo } from 'solid-js';\nimport { AGENT_LOGOS, type AgentLogo } from '../theme/symbols.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface AgentGridProps {\n maxVisible?: number;\n showStatus?: boolean;\n detectedAgents?: string[];\n columns?: number;\n}\n\nexport function AgentGrid(props: AgentGridProps) {\n const maxVisible = () => props.maxVisible ?? 12;\n const showStatus = () => props.showStatus ?? true;\n const detectedAgents = () => props.detectedAgents ?? [];\n const columns = () => Math.max(1, props.columns ?? 4);\n\n const allAgents = Object.entries(AGENT_LOGOS);\n const visibleAgents = () => allAgents.slice(0, maxVisible());\n const hiddenCount = () => allAgents.length - maxVisible();\n\n const rows = createMemo((): [string, AgentLogo][][] => {\n const result: [string, AgentLogo][][] = [];\n const visible = visibleAgents();\n for (let i = 0; i < visible.length; i += columns()) {\n result.push(visible.slice(i, i + columns()));\n }\n return result;\n });\n\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>\n <b>Works with</b>\n </text>\n <text> </text>\n <For each={rows()}>\n {(row, rowIndex) => (\n <box flexDirection=\"row\">\n <For each={row}>\n {([agentType, agent]) => {\n const isDetected = () => detectedAgents().includes(agentType);\n const statusIcon = () => (showStatus() ? (isDetected() ? '●' : '○') : '');\n const fg = () => (isDetected() ? terminalColors.accent : terminalColors.text);\n\n return (\n <box width={18}>\n <text fg={fg()}>\n {agent.icon} {agent.name}\n <Show when={showStatus()}>\n <span fg={isDetected() ? terminalColors.success : terminalColors.textMuted}>\n {' '}\n {statusIcon()}\n </span>\n </Show>\n </text>\n </box>\n );\n }}\n </For>\n </box>\n )}\n </For>\n <Show when={hiddenCount() > 0}>\n <text fg={terminalColors.textMuted}>+{hiddenCount()} more agents</text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, For } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { animations } from '../theme/animations.js';\n\ninterface StatItem {\n label: string;\n value: number;\n color?: keyof typeof terminalColors;\n}\n\ninterface StatsCardProps {\n items: StatItem[];\n animated?: boolean;\n}\n\nexport function StatsCard(props: StatsCardProps) {\n const animated = () => props.animated ?? true;\n\n const [displayValues, setDisplayValues] = createSignal<number[]>(\n animated() ? props.items.map(() => 0) : props.items.map((item) => item.value)\n );\n const [animComplete, setAnimComplete] = createSignal(!animated());\n\n createEffect(() => {\n const newValues = animated() ? props.items.map(() => 0) : props.items.map((item) => item.value);\n setDisplayValues(newValues);\n setAnimComplete(!animated());\n });\n\n createEffect(() => {\n if (!animated() || animComplete()) return;\n\n const duration = animations.countUp.duration;\n const startTime = Date.now();\n const targetValues = props.items.map((item) => item.value);\n const frameInterval = 16;\n\n const intervalId = setInterval(() => {\n const elapsed = Date.now() - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const eased = 1 - Math.pow(1 - progress, 4);\n\n const newValues = targetValues.map((target) => Math.round(target * eased));\n setDisplayValues(newValues);\n\n if (progress >= 1) {\n clearInterval(intervalId);\n setAnimComplete(true);\n }\n }, frameInterval);\n\n onCleanup(() => clearInterval(intervalId));\n });\n\n return (\n <box flexDirection=\"row\" gap={2}>\n <For each={props.items}>\n {(item, index) => {\n const fg = () => (item.color ? terminalColors[item.color] : terminalColors.text);\n\n return (\n <box\n flexDirection=\"column\"\n alignItems=\"center\"\n padding={2}\n borderStyle=\"single\"\n borderColor={terminalColors.border}\n >\n <text fg={fg()}>\n <b>{String(displayValues()[index()])}</b>\n </text>\n <text fg={terminalColors.textMuted}>{item.label}</text>\n </box>\n );\n }}\n </For>\n </box>\n );\n}\n","import { Show, For, createSignal } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols, AGENT_LOGOS } from '../theme/symbols.js';\n\ninterface RightSidebarProps {\n width: number;\n rows: number;\n}\n\nconst TOP_AGENTS = ['claude-code', 'cursor', 'codex'] as const;\n\nexport function RightSidebar(props: RightSidebarProps) {\n const [sections] = createSignal({\n context: true,\n agents: true,\n tasks: false,\n });\n\n return (\n <box\n flexDirection=\"column\"\n width={props.width}\n borderLeft\n borderColor={terminalColors.border}\n paddingLeft={1}\n >\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.text}>\n {sections().context ? '▼' : '▸'} Context\n </text>\n <Show when={sections().context}>\n <text fg={terminalColors.textSecondary}> Skills: 127</text>\n <text fg={terminalColors.textSecondary}> Agents: 32 (3{symbols.active})</text>\n <text fg={terminalColors.textSecondary}> Workflows: 4</text>\n </Show>\n </box>\n\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.text}>\n {sections().agents ? '▼' : '▸'} Agents (3)\n </text>\n <Show when={sections().agents}>\n <For each={[...TOP_AGENTS]}>\n {(agent) => {\n const logo = AGENT_LOGOS[agent];\n return (\n <text fg={terminalColors.text}>\n {' '}{logo.icon} {logo.name} {symbols.active}\n </text>\n );\n }}\n </For>\n <text fg={terminalColors.textMuted}> +29 more</text>\n </Show>\n </box>\n\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.text}>\n {sections().tasks ? '▼' : '▸'} Tasks (2)\n </text>\n <Show when={sections().tasks}>\n <text fg={terminalColors.textSecondary}> {symbols.pending} Syncing...</text>\n </Show>\n </box>\n\n <box flexGrow={1} />\n </box>\n );\n}\n","import { type Screen } from '../state/types.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface BottomStatusBarProps {\n currentScreen: Screen;\n}\n\nconst SCREEN_LABELS: Record<Screen, string> = {\n home: 'Home',\n browse: 'Browse',\n marketplace: 'Marketplace',\n installed: 'Installed',\n settings: 'Settings',\n recommend: 'Recommend',\n translate: 'Translate',\n context: 'Context',\n memory: 'Memory',\n team: 'Team',\n plugins: 'Plugins',\n methodology: 'Methodology',\n plan: 'Plan',\n workflow: 'Workflow',\n execute: 'Execute',\n history: 'History',\n sync: 'Sync',\n help: 'Help',\n mesh: 'Mesh',\n message: 'Message',\n};\n\nexport function BottomStatusBar(props: BottomStatusBarProps) {\n const version = getVersion();\n\n return (\n <box\n flexDirection=\"row\"\n height={1}\n borderTop\n borderColor={terminalColors.border}\n paddingX={1}\n >\n <text fg={terminalColors.accent}>\n <b>{symbols.brandIcon} skillkit</b> v{version}\n </text>\n <text fg={terminalColors.border}> {symbols.verticalLine} </text>\n <text fg={terminalColors.text}>\n <b>{SCREEN_LABELS[props.currentScreen]}</b>\n </text>\n <text fg={terminalColors.border}> {symbols.verticalLine} </text>\n <text fg={terminalColors.textMuted}>/ cmd h home m market q quit</text>\n </box>\n );\n}\n","import { Show, For } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\nimport { calculatePagination } from '../utils/list.js';\nimport type { SkillItem } from '../state/types.js';\n\ninterface SkillListProps {\n skills: SkillItem[];\n selectedIndex: number;\n maxVisible?: number;\n onSelect?: (skill: SkillItem) => void;\n}\n\nexport function SkillList(props: SkillListProps) {\n const maxVisible = () => props.maxVisible ?? 10;\n\n const pagination = () => calculatePagination(props.skills.length, props.selectedIndex, maxVisible());\n const visibleSkills = () => props.skills.slice(pagination().start, pagination().end);\n\n return (\n <Show when={props.skills.length > 0} fallback={<text fg={terminalColors.textMuted}>No skills found</text>}>\n <box flexDirection=\"column\">\n <Show when={pagination().itemsAbove > 0}>\n <text fg={terminalColors.textMuted}>\n {symbols.arrowUp} {pagination().itemsAbove} more above\n </text>\n </Show>\n\n <For each={visibleSkills()}>\n {(skill, idx) => {\n const actualIndex = () => pagination().start + idx();\n const isSelected = () => actualIndex() === props.selectedIndex;\n const pointer = () => (isSelected() ? symbols.pointer : symbols.pointerInactive);\n const fg = () => (isSelected() ? terminalColors.accent : terminalColors.text);\n const statusIcon = () => (skill.enabled ? symbols.active : symbols.pending);\n const descPart = () =>\n skill.description\n ? ` - ${skill.description.slice(0, 40)}${skill.description.length > 40 ? '...' : ''}`\n : '';\n const line = () => `${pointer()} ${skill.name} ${statusIcon()}${descPart()}`;\n\n return <text fg={fg()}>{isSelected() ? <b>{line()}</b> : line()}</text>;\n }}\n </For>\n\n <Show when={pagination().itemsBelow > 0}>\n <text fg={terminalColors.textMuted}>\n {symbols.arrowDown} {pagination().itemsBelow} more below\n </text>\n </Show>\n </box>\n </Show>\n );\n}\n","import { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface SearchInputProps {\n value: string;\n placeholder?: string;\n focused?: boolean;\n onChange?: (value: string) => void;\n}\n\nexport function SearchInput(props: SearchInputProps) {\n const placeholder = () => props.placeholder ?? 'Search...';\n const focused = () => props.focused ?? false;\n const display = () => props.value || placeholder();\n const textColor = () => (props.value ? terminalColors.text : terminalColors.textMuted);\n\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>⌕ </text>\n <text fg={textColor()}>{display()}</text>\n <Show when={focused()}>\n <text fg={terminalColors.accent}>▏</text>\n </Show>\n </box>\n );\n}\n","import { For } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface Feature {\n key: string;\n label: string;\n description: string;\n color: keyof typeof terminalColors;\n}\n\nconst FEATURES: Feature[] = [\n { key: 'sync', label: 'Sync', color: 'sync', description: 'share skills across all your coding agents' },\n { key: 'browse', label: 'Browse', color: 'browse', description: 'discover skills from the marketplace' },\n { key: 'recommend', label: 'Recommend', color: 'recommend', description: 'AI-powered skill suggestions for your project' },\n { key: 'translate', label: 'Translate', color: 'translate', description: 'convert skills between agent formats' },\n { key: 'workflow', label: 'Workflow', color: 'workflow', description: 'automate skill execution chains' },\n { key: 'team', label: 'Team', color: 'team', description: 'collaborate with your development team' },\n];\n\ninterface FeatureListProps {\n features?: Feature[];\n}\n\nexport function FeatureList(props: FeatureListProps) {\n const features = () => props.features ?? FEATURES;\n\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>\n <b>Features</b>\n </text>\n <text> </text>\n <For each={features()}>\n {(feat) => (\n <box flexDirection=\"row\">\n <text fg={terminalColors[feat.color]}>\n <b>{' '}{feat.label.padEnd(12)}</b>\n </text>\n <text fg={terminalColors.textMuted}>{feat.description}</text>\n </box>\n )}\n </For>\n </box>\n );\n}\n\nexport { FEATURES, type Feature };\n","/**\n * SelectList Component\n * Reusable list with j/k + mouse navigation\n */\n\nimport { For, Show, createMemo } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport interface SelectListItem {\n id: string;\n label: string;\n description?: string;\n icon?: string;\n meta?: string;\n disabled?: boolean;\n}\n\ninterface SelectListProps {\n items: SelectListItem[];\n selectedIndex: number;\n hoveredIndex?: number | null;\n onSelect?: (item: SelectListItem, index: number) => void;\n onHover?: (index: number) => void;\n maxVisible?: number;\n showIndex?: boolean;\n emptyText?: string;\n compact?: boolean;\n}\n\nexport function SelectList(props: SelectListProps) {\n const maxVisible = () => props.maxVisible ?? 10;\n const showIndex = () => props.showIndex ?? false;\n const compact = () => props.compact ?? false;\n\n const scrollOffset = createMemo(() => {\n const selected = props.selectedIndex;\n const visible = maxVisible();\n const total = props.items.length;\n\n if (total <= visible) return 0;\n if (selected < visible / 2) return 0;\n if (selected > total - visible / 2) return total - visible;\n return Math.floor(selected - visible / 2);\n });\n\n const visibleItems = createMemo(() => {\n const offset = scrollOffset();\n return props.items.slice(offset, offset + maxVisible()).map((item, i) => ({\n item,\n originalIndex: offset + i,\n }));\n });\n\n const hasScrollUp = createMemo(() => scrollOffset() > 0);\n const hasScrollDown = createMemo(\n () => scrollOffset() + maxVisible() < props.items.length\n );\n\n const handleItemClick = (item: SelectListItem, index: number) => {\n if (!item.disabled && props.onSelect) {\n props.onSelect(item, index);\n }\n };\n\n const handleItemHover = (index: number) => {\n if (props.onHover) {\n props.onHover(index);\n }\n };\n\n return (\n <box flexDirection=\"column\">\n <Show when={props.items.length === 0}>\n <text fg={terminalColors.textMuted}>{props.emptyText || 'No items'}</text>\n </Show>\n\n <Show when={hasScrollUp()}>\n <text fg={terminalColors.textMuted}> ▲ {scrollOffset()} more</text>\n </Show>\n\n <For each={visibleItems()}>\n {({ item, originalIndex }) => {\n const isSelected = () => originalIndex === props.selectedIndex;\n const isHovered = () => originalIndex === props.hoveredIndex;\n const isDisabled = () => item.disabled ?? false;\n\n const fg = () => {\n if (isDisabled()) return terminalColors.textMuted;\n if (isSelected()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n const prefix = () => {\n if (isSelected()) return '▸ ';\n if (isHovered()) return '▹ ';\n return ' ';\n };\n\n return (\n <box\n flexDirection={compact() ? 'row' : 'column'}\n marginBottom={compact() ? 0 : 1}\n onClick={() => handleItemClick(item, originalIndex)}\n onMouseEnter={() => handleItemHover(originalIndex)}\n >\n <box flexDirection=\"row\">\n <text fg={fg()}>{prefix()}</text>\n <Show when={showIndex()}>\n <text fg={terminalColors.textMuted} width={4}>\n {String(originalIndex + 1).padStart(2, ' ')}.{' '}\n </text>\n </Show>\n <Show when={item.icon}>\n <text fg={fg()}>{item.icon} </text>\n </Show>\n <text fg={fg()}>{item.label}</text>\n <Show when={item.meta}>\n <text fg={terminalColors.textMuted}> ({item.meta})</text>\n </Show>\n </box>\n <Show when={item.description && !compact()}>\n <box marginLeft={2}>\n <text fg={terminalColors.textMuted}>{item.description}</text>\n </box>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={hasScrollDown()}>\n <text fg={terminalColors.textMuted}>\n {' '}▼ {props.items.length - scrollOffset() - maxVisible()} more\n </text>\n </Show>\n </box>\n );\n}\n","/**\n * SplitPane Component\n * Horizontal/vertical split layout\n */\n\nimport { Show, type JSX } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface SplitPaneProps {\n direction?: 'horizontal' | 'vertical';\n primarySize?: number | string;\n secondarySize?: number | string;\n showDivider?: boolean;\n dividerChar?: string;\n primary: JSX.Element;\n secondary?: JSX.Element;\n gap?: number;\n}\n\nexport function SplitPane(props: SplitPaneProps) {\n const direction = () => props.direction ?? 'horizontal';\n const showDivider = () => props.showDivider ?? true;\n const dividerChar = () => props.dividerChar ?? (direction() === 'horizontal' ? '│' : '─');\n const gap = () => props.gap ?? 1;\n\n const flexDir = () => (direction() === 'horizontal' ? 'row' : 'column');\n\n const primaryWidth = () => {\n if (direction() === 'vertical') return undefined;\n if (props.primarySize !== undefined) return props.primarySize;\n return undefined;\n };\n\n const primaryHeight = () => {\n if (direction() === 'horizontal') return undefined;\n if (props.primarySize !== undefined) return props.primarySize;\n return undefined;\n };\n\n const secondaryWidth = () => {\n if (direction() === 'vertical') return undefined;\n if (props.secondarySize !== undefined) return props.secondarySize;\n return undefined;\n };\n\n const secondaryHeight = () => {\n if (direction() === 'horizontal') return undefined;\n if (props.secondarySize !== undefined) return props.secondarySize;\n return undefined;\n };\n\n return (\n <box flexDirection={flexDir()}>\n <box\n width={primaryWidth()}\n height={primaryHeight()}\n flexGrow={primaryWidth() === undefined && primaryHeight() === undefined ? 1 : undefined}\n >\n {props.primary}\n </box>\n\n <Show when={props.secondary && showDivider()}>\n <box\n width={direction() === 'horizontal' ? gap() : undefined}\n height={direction() === 'vertical' ? gap() : undefined}\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <text fg={terminalColors.border}>{dividerChar()}</text>\n </box>\n </Show>\n\n <Show when={props.secondary}>\n <box\n width={secondaryWidth()}\n height={secondaryHeight()}\n flexGrow={secondaryWidth() === undefined && secondaryHeight() === undefined ? 1 : undefined}\n >\n {props.secondary}\n </box>\n </Show>\n </box>\n );\n}\n\ninterface ThreePaneLayoutProps {\n left?: JSX.Element;\n center: JSX.Element;\n right?: JSX.Element;\n leftWidth?: number;\n rightWidth?: number;\n showLeftDivider?: boolean;\n showRightDivider?: boolean;\n}\n\nexport function ThreePaneLayout(props: ThreePaneLayoutProps) {\n const leftWidth = () => props.leftWidth ?? 20;\n const rightWidth = () => props.rightWidth ?? 30;\n\n return (\n <box flexDirection=\"row\" flexGrow={1}>\n <Show when={props.left}>\n <box width={leftWidth()}>{props.left}</box>\n <Show when={props.showLeftDivider !== false}>\n <box width={1}>\n <text fg={terminalColors.border}>│</text>\n </box>\n </Show>\n </Show>\n\n <box flexGrow={1}>{props.center}</box>\n\n <Show when={props.right}>\n <Show when={props.showRightDivider !== false}>\n <box width={1}>\n <text fg={terminalColors.border}>│</text>\n </box>\n </Show>\n <box width={rightWidth()}>{props.right}</box>\n </Show>\n </box>\n );\n}\n","/**\n * CodeBlock Component\n * Basic syntax highlighting for code display\n */\n\nimport { For, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface CodeBlockProps {\n code: string;\n language?: string;\n showLineNumbers?: boolean;\n maxLines?: number;\n highlightLines?: number[];\n title?: string;\n}\n\nconst KEYWORDS = new Set([\n 'const',\n 'let',\n 'var',\n 'function',\n 'return',\n 'if',\n 'else',\n 'for',\n 'while',\n 'import',\n 'export',\n 'from',\n 'class',\n 'extends',\n 'async',\n 'await',\n 'try',\n 'catch',\n 'throw',\n 'new',\n 'this',\n 'true',\n 'false',\n 'null',\n 'undefined',\n 'type',\n 'interface',\n]);\n\nfunction tokenizeLine(line: string): Array<{ type: string; value: string }> {\n const tokens: Array<{ type: string; value: string }> = [];\n let remaining = line;\n\n while (remaining.length > 0) {\n if (remaining.startsWith('//')) {\n tokens.push({ type: 'comment', value: remaining });\n break;\n }\n\n const stringMatch = remaining.match(/^(['\"`])(?:\\\\.|[^\\\\])*?\\1/);\n if (stringMatch) {\n tokens.push({ type: 'string', value: stringMatch[0] });\n remaining = remaining.slice(stringMatch[0].length);\n continue;\n }\n\n const numberMatch = remaining.match(/^\\d+\\.?\\d*/);\n if (numberMatch) {\n tokens.push({ type: 'number', value: numberMatch[0] });\n remaining = remaining.slice(numberMatch[0].length);\n continue;\n }\n\n const wordMatch = remaining.match(/^[a-zA-Z_$][a-zA-Z0-9_$]*/);\n if (wordMatch) {\n const word = wordMatch[0];\n const type = KEYWORDS.has(word) ? 'keyword' : 'identifier';\n tokens.push({ type, value: word });\n remaining = remaining.slice(word.length);\n continue;\n }\n\n const spaceMatch = remaining.match(/^\\s+/);\n if (spaceMatch) {\n tokens.push({ type: 'space', value: spaceMatch[0] });\n remaining = remaining.slice(spaceMatch[0].length);\n continue;\n }\n\n tokens.push({ type: 'punctuation', value: remaining[0] });\n remaining = remaining.slice(1);\n }\n\n return tokens;\n}\n\nfunction getTokenColor(type: string): string {\n switch (type) {\n case 'keyword':\n return terminalColors.accent;\n case 'string':\n return terminalColors.warning;\n case 'number':\n return terminalColors.info;\n case 'comment':\n return terminalColors.textMuted;\n default:\n return terminalColors.text;\n }\n}\n\nexport function CodeBlock(props: CodeBlockProps) {\n const showLineNumbers = () => props.showLineNumbers ?? true;\n const highlightLines = () => new Set(props.highlightLines ?? []);\n\n const lines = () => {\n const allLines = props.code.split('\\n');\n if (props.maxLines && allLines.length > props.maxLines) {\n return allLines.slice(0, props.maxLines);\n }\n return allLines;\n };\n\n const lineNumberWidth = () => String(lines().length).length + 1;\n\n const isTruncated = () => {\n const allLines = props.code.split('\\n');\n return props.maxLines !== undefined && allLines.length > props.maxLines;\n };\n\n return (\n <box flexDirection=\"column\">\n <Show when={props.title}>\n <box marginBottom={1}>\n <text fg={terminalColors.textMuted}>\n {props.title}\n </text>\n </box>\n </Show>\n\n <box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={terminalColors.border}\n paddingX={1}\n >\n <For each={lines()}>\n {(line, index) => {\n const lineNum = index() + 1;\n const isHighlighted = highlightLines().has(lineNum);\n const tokens = tokenizeLine(line);\n\n return (\n <box flexDirection=\"row\">\n <Show when={showLineNumbers()}>\n <text\n fg={isHighlighted ? terminalColors.accent : terminalColors.textMuted}\n width={lineNumberWidth()}\n >\n {isHighlighted ? '▸' : ' '}\n {String(lineNum).padStart(lineNumberWidth() - 1, ' ')}{' '}\n </text>\n </Show>\n <For each={tokens}>\n {(token) => (\n <text fg={isHighlighted ? terminalColors.accent : getTokenColor(token.type)}>\n {token.value}\n </text>\n )}\n </For>\n </box>\n );\n }}\n </For>\n\n <Show when={isTruncated()}>\n <text fg={terminalColors.textMuted}>\n ... {props.code.split('\\n').length - (props.maxLines ?? 0)} more lines\n </text>\n </Show>\n </box>\n </box>\n );\n}\n\ninterface InlineCodeProps {\n children: string;\n}\n\nexport function InlineCode(props: InlineCodeProps) {\n return (\n <text fg={terminalColors.accent}>\n `{props.children}`\n </text>\n );\n}\n","/**\n * FormField Component\n * Input with label and validation\n */\n\nimport { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface FormFieldProps {\n label: string;\n value: string;\n placeholder?: string;\n error?: string;\n hint?: string;\n required?: boolean;\n disabled?: boolean;\n focused?: boolean;\n type?: 'text' | 'password' | 'search';\n width?: number;\n}\n\nexport function FormField(props: FormFieldProps) {\n const type = () => props.type ?? 'text';\n const focused = () => props.focused ?? false;\n const disabled = () => props.disabled ?? false;\n const width = () => props.width ?? 30;\n\n const displayValue = () => {\n if (type() === 'password') {\n return '•'.repeat(props.value.length);\n }\n return props.value;\n };\n\n const borderColor = () => {\n if (props.error) return terminalColors.error;\n if (focused()) return terminalColors.accent;\n if (disabled()) return terminalColors.textMuted;\n return terminalColors.border;\n };\n\n const labelColor = () => {\n if (props.error) return terminalColors.error;\n if (focused()) return terminalColors.accent;\n return terminalColors.textSecondary;\n };\n\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\">\n <text fg={labelColor()}>\n {props.label}\n <Show when={props.required}>\n <text fg={terminalColors.error}>*</text>\n </Show>\n </text>\n </box>\n\n <box\n flexDirection=\"row\"\n width={width()}\n borderStyle=\"round\"\n borderColor={borderColor()}\n paddingX={1}\n >\n <Show when={type() === 'search'}>\n <text fg={terminalColors.textMuted}>/ </text>\n </Show>\n <text fg={disabled() ? terminalColors.textMuted : terminalColors.text}>\n {displayValue() || (\n <text fg={terminalColors.textMuted}>{props.placeholder ?? ''}</text>\n )}\n </text>\n <Show when={focused()}>\n <text fg={terminalColors.accent}>▌</text>\n </Show>\n </box>\n\n <Show when={props.error}>\n <text fg={terminalColors.error}>✗ {props.error}</text>\n </Show>\n\n <Show when={props.hint && !props.error}>\n <text fg={terminalColors.textMuted}>{props.hint}</text>\n </Show>\n </box>\n );\n}\n\ninterface TextAreaFieldProps {\n label: string;\n value: string;\n placeholder?: string;\n error?: string;\n rows?: number;\n width?: number;\n focused?: boolean;\n}\n\nexport function TextAreaField(props: TextAreaFieldProps) {\n const rows = () => props.rows ?? 3;\n const width = () => props.width ?? 40;\n const focused = () => props.focused ?? false;\n\n const lines = () => props.value.split('\\n').slice(0, rows());\n\n const hasContent = () => props.value !== '' && props.value !== undefined;\n\n const borderColor = () => {\n if (props.error) return terminalColors.error;\n if (focused()) return terminalColors.accent;\n return terminalColors.border;\n };\n\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.textSecondary}>{props.label}</text>\n\n <box\n flexDirection=\"column\"\n width={width()}\n height={rows() + 2}\n borderStyle=\"round\"\n borderColor={borderColor()}\n paddingX={1}\n >\n <Show\n when={hasContent()}\n fallback={<text fg={terminalColors.textMuted}>{props.placeholder ?? ''}</text>}\n >\n {lines().map((line) => (\n <text fg={terminalColors.text}>{line}</text>\n ))}\n </Show>\n </box>\n\n <Show when={props.error}>\n <text fg={terminalColors.error}>✗ {props.error}</text>\n </Show>\n </box>\n );\n}\n\ninterface SelectFieldProps {\n label: string;\n value: string;\n options: Array<{ value: string; label: string }>;\n focused?: boolean;\n expanded?: boolean;\n selectedOptionIndex?: number;\n}\n\nexport function SelectField(props: SelectFieldProps) {\n const focused = () => props.focused ?? false;\n const expanded = () => props.expanded ?? false;\n\n const selectedLabel = () => {\n const option = props.options.find((o) => o.value === props.value);\n return option?.label ?? props.value ?? 'Select...';\n };\n\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.textSecondary}>{props.label}</text>\n\n <box\n flexDirection=\"row\"\n borderStyle=\"round\"\n borderColor={focused() ? terminalColors.accent : terminalColors.border}\n paddingX={1}\n >\n <text fg={terminalColors.text}>{selectedLabel()}</text>\n <text fg={terminalColors.textMuted}> {expanded() ? '▲' : '▼'}</text>\n </box>\n\n <Show when={expanded()}>\n <box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={terminalColors.border}\n paddingX={1}\n >\n {props.options.map((option, index) => {\n const isSelected = index === props.selectedOptionIndex;\n return (\n <text\n fg={\n option.value === props.value\n ? terminalColors.accent\n : isSelected\n ? terminalColors.text\n : terminalColors.textSecondary\n }\n >\n {isSelected ? '▸ ' : ' '}\n {option.label}\n </text>\n );\n })}\n </box>\n </Show>\n </box>\n );\n}\n","/**\n * ErrorBoundary Component\n * Catch and display errors gracefully\n */\n\nimport { ErrorBoundary as SolidErrorBoundary, type JSX, Show } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface ErrorBoundaryProps {\n children: JSX.Element;\n fallback?: JSX.Element | ((error: Error, reset: () => void) => JSX.Element);\n onError?: (error: Error) => void;\n}\n\nfunction DefaultErrorFallback(props: { error: Error; reset: () => void }) {\n const errorMessage = () => {\n if (props.error instanceof Error) {\n return props.error.message;\n }\n return String(props.error);\n };\n\n const errorStack = () => {\n if (props.error instanceof Error && props.error.stack) {\n const lines = props.error.stack.split('\\n').slice(1, 4);\n return lines.join('\\n');\n }\n return '';\n };\n\n useKeyboard((key) => {\n if (key.name === 'r') {\n props.reset();\n }\n });\n\n return (\n <box flexDirection=\"column\" paddingY={2} paddingX={1}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.error}>✗ Something went wrong</text>\n </box>\n\n <box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={terminalColors.error}\n paddingX={1}\n paddingY={1}\n >\n <text fg={terminalColors.text}>{errorMessage()}</text>\n\n <Show when={errorStack()}>\n <box marginTop={1}>\n <text fg={terminalColors.textMuted}>\n {errorStack()}\n </text>\n </box>\n </Show>\n </box>\n\n <box marginTop={1}>\n <text fg={terminalColors.textMuted}>\n Press <text fg={terminalColors.accent}>r</text> to retry or{' '}\n <text fg={terminalColors.accent}>Esc</text> to go back\n </text>\n </box>\n </box>\n );\n}\n\nexport function ErrorBoundary(props: ErrorBoundaryProps) {\n let handledErrorRef: Error | null = null;\n\n const fallbackComponent = (error: Error, reset: () => void) => {\n if (props.onError && handledErrorRef !== error) {\n handledErrorRef = error;\n props.onError(error);\n }\n\n const wrappedReset = () => {\n handledErrorRef = null;\n reset();\n };\n\n if (typeof props.fallback === 'function') {\n return props.fallback(error, wrappedReset);\n }\n\n if (props.fallback) {\n return props.fallback;\n }\n\n return <DefaultErrorFallback error={error} reset={wrappedReset} />;\n };\n\n return (\n <SolidErrorBoundary fallback={fallbackComponent}>\n {props.children}\n </SolidErrorBoundary>\n );\n}\n\ninterface TryProps {\n children: JSX.Element;\n catch?: JSX.Element;\n}\n\nexport function Try(props: TryProps) {\n return (\n <ErrorBoundary\n fallback={\n props.catch ?? (\n <text fg={terminalColors.error}>Error loading component</text>\n )\n }\n >\n {props.children}\n </ErrorBoundary>\n );\n}\n","/**\n * Button Component\n * Clickable button with hover/active states\n */\n\nimport { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\ninterface ButtonProps {\n label: string;\n shortcut?: string;\n icon?: string;\n variant?: ButtonVariant;\n size?: ButtonSize;\n disabled?: boolean;\n focused?: boolean;\n pressed?: boolean;\n hovered?: boolean;\n onClick?: () => void;\n}\n\nconst VARIANT_COLORS: Record<\n ButtonVariant,\n { fg: string; bg: string; border: string; hoverFg: string }\n> = {\n primary: {\n fg: terminalColors.text,\n bg: terminalColors.accent,\n border: terminalColors.accent,\n hoverFg: terminalColors.accent,\n },\n secondary: {\n fg: terminalColors.text,\n bg: terminalColors.surface,\n border: terminalColors.border,\n hoverFg: terminalColors.text,\n },\n ghost: {\n fg: terminalColors.textSecondary,\n bg: 'transparent',\n border: 'transparent',\n hoverFg: terminalColors.text,\n },\n danger: {\n fg: terminalColors.text,\n bg: terminalColors.error,\n border: terminalColors.error,\n hoverFg: terminalColors.error,\n },\n};\n\nexport function Button(props: ButtonProps) {\n const variant = () => props.variant ?? 'secondary';\n const size = () => props.size ?? 'md';\n const disabled = () => props.disabled ?? false;\n const focused = () => props.focused ?? false;\n const pressed = () => props.pressed ?? false;\n const hovered = () => props.hovered ?? false;\n\n const colors = () => VARIANT_COLORS[variant()];\n\n const fg = () => {\n if (disabled()) return terminalColors.textMuted;\n if (pressed()) return colors().hoverFg;\n if (hovered() || focused()) return colors().hoverFg;\n return colors().fg;\n };\n\n const borderColor = () => {\n if (disabled()) return terminalColors.textMuted;\n if (focused()) return terminalColors.accent;\n return colors().border;\n };\n\n const paddingX = () => {\n switch (size()) {\n case 'sm':\n return 1;\n case 'lg':\n return 3;\n default:\n return 2;\n }\n };\n\n const brackets = () => {\n if (variant() === 'ghost') return { left: '', right: '' };\n if (pressed()) return { left: '▸', right: '◂' };\n return { left: '[', right: ']' };\n };\n\n const padding = ' '.repeat(paddingX());\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n return (\n <box flexDirection=\"row\" onClick={handleClick}>\n <text fg={borderColor()}>{brackets().left}</text>\n <text fg={fg()}>{padding}</text>\n <Show when={props.icon}>\n <text fg={fg()}>{props.icon} </text>\n </Show>\n <text fg={fg()}>{props.label}</text>\n <Show when={props.shortcut}>\n <text fg={terminalColors.textMuted}> ({props.shortcut})</text>\n </Show>\n <text fg={fg()}>{padding}</text>\n <text fg={borderColor()}>{brackets().right}</text>\n </box>\n );\n}\n\ninterface ButtonGroupProps {\n buttons: Array<{\n id: string;\n label: string;\n shortcut?: string;\n icon?: string;\n variant?: ButtonVariant;\n disabled?: boolean;\n onClick?: () => void;\n }>;\n selectedId?: string;\n focusedId?: string;\n direction?: 'horizontal' | 'vertical';\n gap?: number;\n}\n\nexport function ButtonGroup(props: ButtonGroupProps) {\n const direction = () => props.direction ?? 'horizontal';\n const gap = () => props.gap ?? 2;\n\n return (\n <box flexDirection={direction() === 'horizontal' ? 'row' : 'column'}>\n {props.buttons.map((btn, index) => (\n <box\n marginRight={direction() === 'horizontal' && index < props.buttons.length - 1 ? gap() : 0}\n marginBottom={direction() === 'vertical' && index < props.buttons.length - 1 ? gap() : 0}\n >\n <Button\n label={btn.label}\n shortcut={btn.shortcut}\n icon={btn.icon}\n variant={btn.variant}\n disabled={btn.disabled}\n focused={btn.id === props.focusedId}\n hovered={btn.id === props.selectedId}\n onClick={btn.onClick}\n />\n </box>\n ))}\n </box>\n );\n}\n\ninterface IconButtonProps {\n icon: string;\n label?: string;\n disabled?: boolean;\n focused?: boolean;\n hovered?: boolean;\n onClick?: () => void;\n}\n\nexport function IconButton(props: IconButtonProps) {\n const disabled = () => props.disabled ?? false;\n const focused = () => props.focused ?? false;\n const hovered = () => props.hovered ?? false;\n\n const fg = () => {\n if (disabled()) return terminalColors.textMuted;\n if (focused() || hovered()) return terminalColors.accent;\n return terminalColors.textSecondary;\n };\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n return (\n <box flexDirection=\"row\" onClick={handleClick}>\n <text fg={fg()}>{props.icon}</text>\n <Show when={props.label}>\n <text fg={fg()}> {props.label}</text>\n </Show>\n </box>\n );\n}\n","/**\n * Clickable Component\n * Wrapper to make any element clickable with hover effects\n */\n\nimport { type JSX, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface ClickableProps {\n children: JSX.Element;\n onClick?: () => void;\n onDoubleClick?: () => void;\n onRightClick?: () => void;\n disabled?: boolean;\n hovered?: boolean;\n pressed?: boolean;\n focusable?: boolean;\n focused?: boolean;\n cursor?: string;\n hoverEffect?: 'highlight' | 'underline' | 'pointer' | 'none';\n}\n\nexport function Clickable(props: ClickableProps) {\n const disabled = () => props.disabled ?? false;\n const hovered = () => props.hovered ?? false;\n const focused = () => props.focused ?? false;\n const hoverEffect = () => props.hoverEffect ?? 'highlight';\n\n const showHighlight = () => {\n if (disabled()) return false;\n return hovered() || focused();\n };\n\n const cursor = () => {\n if (disabled()) return '';\n if (hovered()) return props.cursor ?? '▸';\n return '';\n };\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n const handleDoubleClick = () => {\n if (!disabled() && props.onDoubleClick) {\n props.onDoubleClick();\n }\n };\n\n const handleRightClick = () => {\n if (!disabled() && props.onRightClick) {\n props.onRightClick();\n }\n };\n\n const renderContent = () => {\n if (hoverEffect() === 'underline' && showHighlight()) {\n return <text>{props.children}</text>;\n }\n return props.children;\n };\n\n return (\n <box\n flexDirection=\"row\"\n onClick={handleClick}\n onDoubleClick={handleDoubleClick}\n onContextMenu={handleRightClick}\n >\n <Show when={hoverEffect() === 'pointer' && showHighlight()}>\n <text fg={terminalColors.accent}>{cursor()} </text>\n </Show>\n <box\n fg={hoverEffect() === 'highlight' && showHighlight() ? terminalColors.accent : undefined}\n >\n {renderContent()}\n </box>\n </box>\n );\n}\n\ninterface ClickableTextProps {\n children: string;\n onClick?: () => void;\n disabled?: boolean;\n hovered?: boolean;\n color?: string;\n hoverColor?: string;\n underlineOnHover?: boolean;\n}\n\nexport function ClickableText(props: ClickableTextProps) {\n const disabled = () => props.disabled ?? false;\n const hovered = () => props.hovered ?? false;\n const underlineOnHover = () => props.underlineOnHover ?? false;\n\n const color = () => {\n if (disabled()) return terminalColors.textMuted;\n if (hovered()) return props.hoverColor ?? terminalColors.accent;\n return props.color ?? terminalColors.text;\n };\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n return (\n <text fg={color()} onClick={handleClick}>\n {underlineOnHover() && hovered() ? (\n <u>{props.children}</u>\n ) : (\n props.children\n )}\n </text>\n );\n}\n\ninterface ClickableRowProps {\n children: JSX.Element;\n selected?: boolean;\n hovered?: boolean;\n disabled?: boolean;\n showIndicator?: boolean;\n indicatorChar?: string;\n onClick?: () => void;\n}\n\nexport function ClickableRow(props: ClickableRowProps) {\n const selected = () => props.selected ?? false;\n const hovered = () => props.hovered ?? false;\n const disabled = () => props.disabled ?? false;\n const showIndicator = () => props.showIndicator ?? true;\n const indicatorChar = () => props.indicatorChar ?? '▸';\n\n const indicator = () => {\n if (!showIndicator()) return ' ';\n if (selected()) return `${indicatorChar()} `;\n if (hovered()) return '▹ ';\n return ' ';\n };\n\n const fg = () => {\n if (disabled()) return terminalColors.textMuted;\n if (selected()) return terminalColors.accent;\n if (hovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n return (\n <box flexDirection=\"row\" onClick={handleClick}>\n <text fg={fg()}>{indicator()}</text>\n {props.children}\n </box>\n );\n}\n\ninterface InteractiveAreaProps {\n children: JSX.Element;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n onMouseOver?: () => void;\n onMouseOut?: () => void;\n onClick?: () => void;\n onMouseDown?: () => void;\n onMouseUp?: () => void;\n}\n\nexport function InteractiveArea(props: InteractiveAreaProps) {\n return (\n <box\n flexDirection=\"column\"\n width={props.width}\n height={props.height}\n style={{ left: props.x, top: props.y }}\n onMouseEnter={props.onMouseOver}\n onMouseLeave={props.onMouseOut}\n onClick={props.onClick}\n onMouseDown={props.onMouseDown}\n onMouseUp={props.onMouseUp}\n >\n {props.children}\n </box>\n );\n}\n","/**\n * HoverHighlight Component\n * Hover highlight effect for list items and buttons\n * Note: Terminal background colors are limited, so we use text color changes for highlighting\n */\n\nimport { type JSX, Show, createSignal, createEffect } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface HoverHighlightProps {\n children: JSX.Element;\n isHovered?: boolean;\n isSelected?: boolean;\n isDisabled?: boolean;\n highlightColor?: string;\n selectedColor?: string;\n transitionMs?: number;\n}\n\nexport function HoverHighlight(props: HoverHighlightProps) {\n return <box>{props.children}</box>;\n}\n\ninterface HighlightableListItemProps {\n children: JSX.Element;\n index: number;\n selectedIndex?: number;\n hoveredIndex?: number | null;\n showPrefix?: boolean;\n prefixWidth?: number;\n}\n\nexport function HighlightableListItem(props: HighlightableListItemProps) {\n const showPrefix = () => props.showPrefix ?? true;\n const prefixWidth = () => props.prefixWidth ?? 3;\n\n const isSelected = () => props.index === props.selectedIndex;\n const isHovered = () => props.index === props.hoveredIndex;\n\n const prefix = () => {\n if (!showPrefix()) return '';\n if (isSelected()) return '▸ ';\n if (isHovered()) return '▹ ';\n return ' ';\n };\n\n const fg = () => {\n if (isSelected()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n return (\n <box flexDirection=\"row\">\n <Show when={showPrefix()}>\n <text fg={fg()} width={prefixWidth()}>\n {prefix()}\n </text>\n </Show>\n {props.children}\n </box>\n );\n}\n\ninterface FocusRingProps {\n children: JSX.Element;\n isFocused?: boolean;\n ringColor?: string;\n}\n\nexport function FocusRing(props: FocusRingProps) {\n const ringColor = () => props.ringColor ?? terminalColors.accent;\n\n return (\n <box\n borderStyle={props.isFocused ? 'round' : undefined}\n borderColor={props.isFocused ? ringColor() : undefined}\n >\n {props.children}\n </box>\n );\n}\n\ninterface PressEffectProps {\n children: JSX.Element;\n isPressed?: boolean;\n pressColor?: string;\n}\n\nexport function PressEffect(props: PressEffectProps) {\n return <box>{props.children}</box>;\n}\n","/**\n * AnimatedText Component\n * Text with fade/slide animations\n */\n\nimport { Show, createSignal, createEffect, onCleanup } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { scrambleText } from '../theme/animations.js';\n\ninterface AnimatedTextProps {\n text: string;\n animation?: 'fadeIn' | 'typewriter' | 'scramble' | 'countUp' | 'none';\n duration?: number;\n delay?: number;\n color?: string;\n onComplete?: () => void;\n}\n\nexport function AnimatedText(props: AnimatedTextProps) {\n const [progress, setProgress] = createSignal(0);\n const [isComplete, setIsComplete] = createSignal(false);\n\n const animation = () => props.animation ?? 'fadeIn';\n const duration = () => Math.max(1, props.duration ?? 500);\n const delay = () => Math.max(0, props.delay ?? 0);\n const color = () => props.color ?? terminalColors.text;\n\n createEffect(() => {\n const anim = animation();\n const dur = duration();\n const dly = delay();\n\n setProgress(0);\n setIsComplete(false);\n\n if (anim === 'none') {\n setProgress(100);\n setIsComplete(true);\n return;\n }\n\n let delayTimeoutId: ReturnType<typeof setTimeout> | undefined;\n let animationTimeoutId: ReturnType<typeof setTimeout> | undefined;\n let startTime: number | undefined;\n let cancelled = false;\n\n const animate = () => {\n if (cancelled) return;\n\n const now = Date.now();\n if (!startTime) startTime = now;\n const elapsed = now - startTime;\n const p = Math.min((elapsed / dur) * 100, 100);\n\n setProgress(p);\n\n if (p < 100) {\n animationTimeoutId = setTimeout(animate, 16);\n } else {\n setIsComplete(true);\n props.onComplete?.();\n }\n };\n\n if (dly > 0) {\n delayTimeoutId = setTimeout(() => {\n animationTimeoutId = setTimeout(animate, 16);\n }, dly);\n } else {\n animationTimeoutId = setTimeout(animate, 16);\n }\n\n onCleanup(() => {\n cancelled = true;\n if (delayTimeoutId) clearTimeout(delayTimeoutId);\n if (animationTimeoutId) clearTimeout(animationTimeoutId);\n });\n });\n\n const displayText = () => {\n switch (animation()) {\n case 'typewriter': {\n const charCount = Math.floor((progress() / 100) * props.text.length);\n return props.text.slice(0, charCount);\n }\n case 'scramble': {\n return scrambleText(props.text, progress());\n }\n case 'countUp': {\n const num = parseFloat(props.text);\n if (!isNaN(num)) {\n return String(Math.round((progress() / 100) * num));\n }\n return props.text;\n }\n case 'fadeIn':\n case 'none':\n default:\n return props.text;\n }\n };\n\n return (\n <text fg={color()}>\n {displayText()}\n <Show when={animation() === 'typewriter' && !isComplete()}>\n <text fg={terminalColors.accent}>▌</text>\n </Show>\n </text>\n );\n}\n\ninterface CountUpTextProps {\n value: number;\n duration?: number;\n delay?: number;\n prefix?: string;\n suffix?: string;\n color?: string;\n formatter?: (value: number) => string;\n}\n\nexport function CountUpText(props: CountUpTextProps) {\n const [displayValue, setDisplayValue] = createSignal(0);\n const duration = () => Math.max(1, props.duration ?? 1000);\n const delay = () => Math.max(0, props.delay ?? 0);\n const color = () => props.color ?? terminalColors.text;\n const formatter = () => props.formatter ?? ((v: number) => String(Math.round(v)));\n\n createEffect(() => {\n const target = props.value;\n const dur = duration();\n const dly = delay();\n\n setDisplayValue(0);\n\n let delayTimeoutId: ReturnType<typeof setTimeout> | undefined;\n let animationTimeoutId: ReturnType<typeof setTimeout> | undefined;\n let startTime: number | undefined;\n let cancelled = false;\n\n const animate = () => {\n if (cancelled) return;\n\n const now = Date.now();\n if (!startTime) startTime = now;\n const elapsed = now - startTime;\n const progress = Math.min(elapsed / dur, 1);\n const eased = 1 - Math.pow(1 - progress, 4);\n\n setDisplayValue(eased * target);\n\n if (progress < 1) {\n animationTimeoutId = setTimeout(animate, 16);\n }\n };\n\n if (dly > 0) {\n delayTimeoutId = setTimeout(() => {\n animationTimeoutId = setTimeout(animate, 16);\n }, dly);\n } else {\n animationTimeoutId = setTimeout(animate, 16);\n }\n\n onCleanup(() => {\n cancelled = true;\n if (delayTimeoutId) clearTimeout(delayTimeoutId);\n if (animationTimeoutId) clearTimeout(animationTimeoutId);\n });\n });\n\n return (\n <text fg={color()}>\n {props.prefix ?? ''}\n {formatter()(displayValue())}\n {props.suffix ?? ''}\n </text>\n );\n}\n\ninterface BlinkingTextProps {\n text: string;\n interval?: number;\n color?: string;\n blinkColor?: string;\n}\n\nexport function BlinkingText(props: BlinkingTextProps) {\n const [visible, setVisible] = createSignal(true);\n const interval = () => props.interval ?? 500;\n const color = () => props.color ?? terminalColors.text;\n const blinkColor = () => props.blinkColor ?? terminalColors.textMuted;\n\n createEffect(() => {\n const timer = setInterval(() => {\n setVisible((v) => !v);\n }, interval());\n\n onCleanup(() => clearInterval(timer));\n });\n\n return <text fg={visible() ? color() : blinkColor()}>{props.text}</text>;\n}\n\ninterface PulsingTextProps {\n text: string;\n color?: string;\n pulseColor?: string;\n interval?: number;\n}\n\nexport function PulsingText(props: PulsingTextProps) {\n const [phase, setPhase] = createSignal(0);\n const interval = () => props.interval ?? 100;\n const color = () => props.color ?? terminalColors.accent;\n const pulseColor = () => props.pulseColor ?? terminalColors.text;\n\n createEffect(() => {\n const timer = setInterval(() => {\n setPhase((p) => (p + 1) % 20);\n }, interval());\n\n onCleanup(() => clearInterval(timer));\n });\n\n const currentColor = () => {\n const p = phase();\n if (p < 10) return color();\n return pulseColor();\n };\n\n return <text fg={currentColor()}>{props.text}</text>;\n}\n","/**\n * TabBar Component\n * Clickable tab navigation\n */\n\nimport { For, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport interface Tab {\n id: string;\n label: string;\n icon?: string;\n badge?: string | number;\n disabled?: boolean;\n}\n\ninterface TabBarProps {\n tabs: Tab[];\n activeId: string;\n hoveredId?: string | null;\n onSelect?: (id: string) => void;\n variant?: 'default' | 'pills' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n showShortcuts?: boolean;\n}\n\nexport function TabBar(props: TabBarProps) {\n const variant = () => props.variant ?? 'default';\n const size = () => props.size ?? 'md';\n const showShortcuts = () => props.showShortcuts ?? false;\n\n const gap = () => {\n switch (size()) {\n case 'sm':\n return 1;\n case 'lg':\n return 3;\n default:\n return 2;\n }\n };\n\n return (\n <box flexDirection=\"row\">\n <For each={props.tabs}>\n {(tab, index) => {\n const isActive = () => tab.id === props.activeId;\n const isHovered = () => tab.id === props.hoveredId;\n const isDisabled = () => tab.disabled ?? false;\n\n const fg = () => {\n if (isDisabled()) return terminalColors.textMuted;\n if (isActive()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n const decoration = () => {\n if (variant() === 'underline' && isActive()) {\n return '─';\n }\n return '';\n };\n\n const brackets = () => {\n if (variant() === 'pills') {\n if (isActive()) return { left: '[', right: ']' };\n return { left: ' ', right: ' ' };\n }\n return { left: '', right: '' };\n };\n\n const handleClick = () => {\n if (!isDisabled() && props.onSelect) {\n props.onSelect(tab.id);\n }\n };\n\n return (\n <box flexDirection=\"column\" marginRight={index() < props.tabs.length - 1 ? gap() : 0} onClick={handleClick}>\n <box flexDirection=\"row\">\n <text fg={terminalColors.border}>{brackets().left}</text>\n <Show when={tab.icon}>\n <text fg={fg()}>{tab.icon} </text>\n </Show>\n <text fg={fg()}>{tab.label}</text>\n <Show when={tab.badge !== undefined}>\n <text fg={terminalColors.textMuted}> ({tab.badge})</text>\n </Show>\n <Show when={showShortcuts()}>\n <text fg={terminalColors.textMuted}>\n {' '}\n {String(index() + 1)}\n </text>\n </Show>\n <text fg={terminalColors.border}>{brackets().right}</text>\n </box>\n <Show when={variant() === 'underline'}>\n <text fg={isActive() ? terminalColors.accent : 'transparent'}>\n {decoration().repeat(tab.label.length + (tab.icon ? 2 : 0))}\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n </box>\n );\n}\n\ninterface VerticalTabBarProps {\n tabs: Tab[];\n activeId: string;\n hoveredId?: string | null;\n onSelect?: (id: string) => void;\n width?: number;\n}\n\nexport function VerticalTabBar(props: VerticalTabBarProps) {\n const width = () => props.width ?? 20;\n\n return (\n <box flexDirection=\"column\" width={width()}>\n <For each={props.tabs}>\n {(tab) => {\n const isActive = () => tab.id === props.activeId;\n const isHovered = () => tab.id === props.hoveredId;\n const isDisabled = () => tab.disabled ?? false;\n\n const fg = () => {\n if (isDisabled()) return terminalColors.textMuted;\n if (isActive()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n const prefix = () => {\n if (isActive()) return '▸ ';\n if (isHovered()) return '▹ ';\n return ' ';\n };\n\n const handleClick = () => {\n if (!isDisabled() && props.onSelect) {\n props.onSelect(tab.id);\n }\n };\n\n return (\n <box\n flexDirection=\"row\"\n marginBottom={1}\n onClick={handleClick}\n >\n <text fg={fg()}>{prefix()}</text>\n <Show when={tab.icon}>\n <text fg={fg()}>{tab.icon} </text>\n </Show>\n <text fg={fg()}>{tab.label}</text>\n <Show when={tab.badge !== undefined}>\n <text fg={terminalColors.textMuted}> ({tab.badge})</text>\n </Show>\n </box>\n );\n }}\n </For>\n </box>\n );\n}\n","/**\n * Breadcrumb Component\n * Clickable breadcrumb navigation\n */\n\nimport { For, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport interface BreadcrumbItem {\n id: string;\n label: string;\n icon?: string;\n}\n\ninterface BreadcrumbProps {\n items: BreadcrumbItem[];\n separator?: string;\n hoveredId?: string | null;\n onNavigate?: (id: string) => void;\n}\n\nexport function Breadcrumb(props: BreadcrumbProps) {\n const separator = () => props.separator ?? ' / ';\n\n const handleClick = (id: string) => {\n props.onNavigate?.(id);\n };\n\n return (\n <box flexDirection=\"row\">\n <For each={props.items}>\n {(item, index) => {\n const isLast = () => index() === props.items.length - 1;\n const isHovered = () => item.id === props.hoveredId;\n\n const fg = () => {\n if (isLast()) return terminalColors.text;\n if (isHovered()) return terminalColors.accent;\n return terminalColors.textMuted;\n };\n\n return (\n <>\n <box\n flexDirection=\"row\"\n onClick={() => handleClick(item.id)}\n >\n <Show when={item.icon}>\n <text fg={fg()}>{item.icon} </text>\n </Show>\n <text fg={fg()}>\n {isLast() ? <b>{item.label}</b> : item.label}\n </text>\n </box>\n <Show when={!isLast()}>\n <text fg={terminalColors.textMuted}>{separator()}</text>\n </Show>\n </>\n );\n }}\n </For>\n </box>\n );\n}\n\ninterface PathBreadcrumbProps {\n path: string;\n separator?: string;\n maxSegments?: number;\n hoveredSegment?: number | null;\n onNavigate?: (path: string, segmentIndex: number) => void;\n}\n\nexport function PathBreadcrumb(props: PathBreadcrumbProps) {\n const separator = () => props.separator ?? '/';\n const maxSegments = () => props.maxSegments ?? 5;\n\n const segments = () => {\n const parts = props.path.split('/').filter(Boolean);\n if (parts.length <= maxSegments()) {\n return parts;\n }\n return ['...', ...parts.slice(-(maxSegments() - 1))];\n };\n\n const getPathAtIndex = (index: number): string => {\n const parts = props.path.split('/').filter(Boolean);\n const segs = segments();\n let actualIndex: number;\n\n if (segs[0] === '...') {\n const offset = parts.length - (segs.length - 1);\n actualIndex = offset + index - 1;\n } else {\n actualIndex = index;\n }\n\n return '/' + parts.slice(0, actualIndex + 1).join('/');\n };\n\n const handleClick = (segment: string, index: number) => {\n if (segment === '...') return;\n props.onNavigate?.(getPathAtIndex(index), index);\n };\n\n return (\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>{separator()}</text>\n <For each={segments()}>\n {(segment, index) => {\n const isLast = () => index() === segments().length - 1;\n const isHovered = () => index() === props.hoveredSegment;\n const isEllipsis = () => segment === '...';\n\n const fg = () => {\n if (isEllipsis()) return terminalColors.textMuted;\n if (isLast()) return terminalColors.text;\n if (isHovered()) return terminalColors.accent;\n return terminalColors.textMuted;\n };\n\n return (\n <>\n <text\n fg={fg()}\n onClick={() => handleClick(segment, index())}\n >\n {isLast() ? <b>{segment}</b> : segment}\n </text>\n <Show when={!isLast()}>\n <text fg={terminalColors.textMuted}>{separator()}</text>\n </Show>\n </>\n );\n }}\n </For>\n </box>\n );\n}\n\ninterface NavigationTrailProps {\n items: Array<{ screen: string; label: string }>;\n currentIndex: number;\n hoveredIndex?: number | null;\n}\n\nexport function NavigationTrail(props: NavigationTrailProps) {\n return (\n <box flexDirection=\"row\">\n <For each={props.items}>\n {(item, index) => {\n const isCurrent = () => index() === props.currentIndex;\n const isPast = () => index() < props.currentIndex;\n const isHovered = () => index() === props.hoveredIndex;\n\n const fg = () => {\n if (isCurrent()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n if (isPast()) return terminalColors.textSecondary;\n return terminalColors.textMuted;\n };\n\n const indicator = () => {\n if (isCurrent()) return '●';\n if (isPast()) return '○';\n return '○';\n };\n\n return (\n <box flexDirection=\"row\" marginRight={2}>\n <text fg={fg()}>{indicator()} </text>\n <text fg={fg()}>{item.label}</text>\n </box>\n );\n }}\n </For>\n </box>\n );\n}\n"],"mappings":"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","names":["value","children","memo","e","children","i","sources","renderer","renderer","createElement","createTextNode","createSlotNode","insertNode","insert","dispose","renderer","children","dispose","renderer","createCliRenderer","execFile","LOGO_FRAMES","LOGO_SMALL","SPINNER","PROGRESS","empty","filled","head","PHASES","message","detail","Splash","props","frame","setFrame","createSignal","progress","setProgress","spinnerFrame","setSpinnerFrame","phase","setPhase","fadeIn","setFadeIn","particles","setParticles","version","createMemo","getVersion","cols","process","stdout","columns","rows","useSmallLogo","currentLogo","Math","min","maxWidth","max","map","l","length","generateParticles","chars","Array","fill","random","floor","join","createEffect","timer","setTimeout","f","onCleanup","clearTimeout","interval","setInterval","p","newProgress","clearInterval","phaseProgress","prev","newParticles","shift","push","onComplete","duration","pad","repeat","progressWidth","progressPad","filledWidth","emptyWidth","progressBar","currentPhase","_el$","_$createElement","_el$2","_el$3","_el$4","_el$5","_el$13","_el$15","_el$36","_el$37","_el$38","_el$39","_$createTextNode","_el$41","_el$43","_$insertNode","_$setProp","_$insert","_$createComponent","For","each","children","line","idx","_el$44","_c$","_$memo","_el$45","_$effect","_$p","terminalColors","accent","textMuted","Show","when","_el$7","_el$8","textSecondary","_el$0","_el$10","_el$11","_el$17","_el$18","_el$19","_el$20","_el$21","_el$22","_el$25","_el$27","_el$28","_el$29","_el$30","_el$31","_el$33","_el$34","_el$35","_el$23","_el$24","_p$","_v$","_v$2","text","_v$3","_v$4","_v$5","_v$6","e","t","a","o","i","n","undefined","_v$7","_v$8","_v$9","Sidebar","props","version","getVersion","_el$","_$createElement","_el$2","_el$3","_el$4","_$createTextNode","_el$5","_el$6","_el$7","_el$9","_el$0","_el$1","_$insertNode","_$setProp","_$insert","symbols","brandIcon","_$createComponent","For","each","SIDEBAR_NAV","children","nav","idx","_el$11","_el$14","_el$15","Show","when","_el$12","section","items","item","active","screen","_el$16","_c$","_$memo","_el$17","_el$18","pointer","label","pointerInactive","_$effect","_$p","terminalColors","accent","text","textMuted","horizontalLine","repeat","_p$","_v$","_v$2","_v$3","_v$4","e","t","a","o","undefined","StatusBar","props","messageType","shortcuts","STATUS_BAR_SHORTCUTS","messageColors","info","terminalColors","success","error","warning","_el$","_$createElement","_el$2","_$insertNode","_$setProp","_$createTextNode","_$insert","_$createComponent","Show","when","message","fallback","_el$5","_$effect","_$p","textMuted","children","_el$4","loadConfig","getAdapter","loadConfig","readFileSync","rmSync","join","loadConfig","join","readFileSync","rmSync","FEATURES","key","color","terminalColors","sync","desc","browse","recommend","translate","workflow","text","Home","props","animPhase","setAnimPhase","createSignal","stats","setStats","skills","agents","TOTAL_AGENTS","synced","detectedAgents","setDetectedAgents","cols","version","getVersion","isCompact","isNarrow","contentWidth","Math","min","line","repeat","createEffect","timer","setTimeout","p","onCleanup","clearTimeout","skillsData","loadSkills","length","visibleAgents","createMemo","allAgents","Object","entries","AGENT_LOGOS","perRow","maxAgents","slice","remaining","getAgentWidth","agentRows","rows","i","push","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Show","when","children","_el$2","_el$3","_el$4","_el$5","_$createTextNode","_el$6","_el$7","_el$8","_el$0","_$insertNode","symbols","brandIcon","_$effect","_p$","_v$","_v$2","textMuted","_v$3","e","t","a","undefined","_el$10","_el$11","_el$12","_el$14","_el$15","_el$16","_el$17","_el$18","_el$19","_el$20","_el$21","_el$22","_el$24","_el$26","_el$28","_el$30","_el$31","_v$4","_v$5","accent","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","o","n","s","h","_el$33","_el$34","_el$36","_el$41","_el$43","_el$44","For","each","row","_el$56","type","agent","isDetected","includes","_el$57","_el$58","_el$59","_el$60","_el$61","icon","name","_v$14","_v$15","_v$16","_el$38","_el$39","_el$40","_$p","_v$10","_v$11","_el$46","_el$47","_el$49","_el$51","feat","_el$62","_el$63","_el$64","_el$65","_v$17","_v$18","_el$53","_el$54","_el$55","_v$12","_v$13","Header","props","_el$","_$createElement","_el$2","_el$3","_el$4","_$insertNode","_$setProp","_$insert","_c$","_$memo","icon","title","_$createComponent","Show","when","count","undefined","children","_el$5","_el$6","_$createTextNode","_el$7","_$effect","_$p","terminalColors","textMuted","badge","_el$8","_el$9","_el$0","accent","subtitle","_el$1","textSecondary","text","Spinner","props","frame","setFrame","createSignal","createEffect","interval","setInterval","f","symbols","spinner","length","onCleanup","clearInterval","color","_el$","_$createElement","_el$2","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","label","children","_el$3","_$effect","_$p","terminalColors","text","EmptyState","props","compact","_el$","_$createElement","_el$4","_el$5","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","icon","children","_el$2","_el$3","_$effect","_$p","terminalColors","textMuted","title","description","_el$6","action","_el$7","_el$8","key","_el$9","accent","label","_p$","_v$","_v$2","textSecondary","e","t","undefined","LoadingState","message","_el$0","_el$1","_el$10","_$createTextNode","_v$3","_v$4","ErrorState","_el$11","_el$12","_el$13","_el$14","_el$15","_el$16","_el$17","_el$18","_v$5","_v$6","error","_v$7","a","DetailPane","props","slideProgress","setSlideProgress","createSignal","width","visible","createEffect","frame","timeoutId","animate","progress","Math","min","setTimeout","onCleanup","clearTimeout","effectiveWidth","round","_$createComponent","Show","when","_$memo","children","_el$","_$createElement","_el$2","_el$5","_el$6","_$insertNode","_$setProp","_$insert","icon","_el$3","_el$4","_$createTextNode","_$effect","_$p","terminalColors","accent","title","onClose","_el$7","_el$8","textMuted","subtitle","_el$0","_el$1","fields","length","_el$10","For","each","field","_el$16","_el$17","label","Array","isArray","value","fallback","_el$18","color","text","val","_el$19","_el$20","content","_el$11","_el$12","_el$13","actions","_el$14","action","_el$21","_el$22","_el$23","key","_p$","_v$4","_v$5","e","t","undefined","_v$","_v$2","border","_v$3","a","STATUS_ICONS","loading","success","error","warning","info","pending","STATUS_COLORS","terminalColors","accent","textMuted","SPINNER_FRAMES","StatusIndicator","props","spinnerFrame","setSpinnerFrame","createSignal","showLabel","animated","createEffect","status","interval","setInterval","f","length","onCleanup","clearInterval","icon","color","defaultLabel","_el$","_$createElement","_el$2","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","children","_el$3","_el$4","_$createTextNode","label","_$effect","_$p","InlineStatus","_el$5","StatusBadge","_el$6","_el$7","_el$9","_el$0","_p$","_v$","_v$2","_v$3","e","t","a","undefined","Browse","props","repos","setRepos","createSignal","selectedIndex","setSelectedIndex","searchQuery","setSearchQuery","searchMode","setSearchMode","showSkills","setShowSkills","loading","setLoading","error","setError","rows","createEffect","loadData","marketplaceRepos","getMarketplaceRepos","reposWithState","map","repo","skills","err","Error","message","loadRepoSkills","index","length","prev","r","i","result","fetchRepoSkills","source","DEFAULT_REPOS","filteredRepos","createMemo","query","toLowerCase","filter","name","includes","maxVisible","Math","max","startIdx","min","floor","visibleRepos","slice","handleKeyNav","delta","handleOpenRepo","actualIndex","findIndex","useKeyboard","key","sequence","test","onNavigate","selectedRepo","repoList","repoDetailFields","label","value","String","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","compact","Spinner","_$memo","_el$2","_el$3","_el$5","_$insertNode","_$createTextNode","_$effect","_p$","_v$","terminalColors","textMuted","_v$2","text","e","t","undefined","_el$6","_$p","_el$8","_el$0","_el$1","fallback","EmptyState","description","_el$10","_el$11","_el$13","_el$14","_el$15","_el$16","_v$3","_v$4","_el$17","For","each","idx","actualIdx","selected","_el$36","_el$37","_el$38","_el$39","_c$","_el$40","_v$5","accent","_v$6","_v$7","a","_el$19","_el$20","_el$21","_el$22","DetailPane","fields","actions","width","visible","onClose","StatusIndicator","status","_el$24","_el$25","skill","_el$42","_el$43","textSecondary","_el$27","_el$28","_el$29","_el$30","_el$32","_el$34","SPINNER","Installed","props","selectedIndex","setSelectedIndex","createSignal","searchQuery","setSearchQuery","searchMode","setSearchMode","animPhase","setAnimPhase","spinnerFrame","setSpinnerFrame","skills","setSkills","loading","error","cols","rows","isCompact","contentWidth","Math","max","min","createEffect","timer","setTimeout","p","onCleanup","clearTimeout","interval","setInterval","f","length","clearInterval","data","loadSkills","filteredSkills","createMemo","filterSkills","handleKeyNav","delta","prev","handleToggle","skill","map","s","name","enabled","useKeyboard","key","slice","sequence","test","onNavigate","maxVisible","startIdx","floor","visibleSkills","divider","_el$","_$createElement","_$insert","repeat","_$effect","_$p","_$setProp","terminalColors","textMuted","enabledCount","filter","totalCount","shortcuts","_el$2","_$createComponent","Show","when","children","_el$3","_el$4","_el$5","_el$7","_el$8","_$createTextNode","_el$9","_el$0","_el$10","_$insertNode","_p$","_v$","_v$2","success","_v$3","_v$4","e","t","a","o","undefined","_el$12","_el$13","_el$15","_el$16","_el$18","_el$19","_el$21","_v$5","_v$6","text","_el$23","_el$35","fallback","_el$39","_el$40","_el$41","_el$42","_v$7","accent","_v$8","_el$44","_el$45","_el$47","_v$9","_v$0","_el$48","_el$49","_el$50","_el$52","_el$24","_el$25","_el$27","For","each","idx","actualIdx","selected","indicator","statusIcon","qualityBadge","grade","warningIndicator","warnings","line","badgeColor","quality","warning","_el$54","_el$29","_el$30","_el$32","_el$33","_el$37","_el$38","join","getNodeChildren","CATEGORIES","name","tag","Marketplace","props","allSkills","setAllSkills","createSignal","selectedIndex","setSelectedIndex","selectedCategory","setSelectedCategory","searchQuery","setSearchQuery","loading","setLoading","error","setError","loadedRepos","setLoadedRepos","failedRepos","setFailedRepos","viewMode","setViewMode","treeState","setTreeState","currentPath","setCurrentPath","treeItems","setTreeItems","rows","createEffect","loadData","skills","loaded","failed","repo","DEFAULT_REPOS","slice","result","fetchRepoSkills","source","length","push","attemptedCount","join","tree","loadOrGenerateTree","currentNode","updateTreeItems","e","console","node","children","getNodeChildren","getNodeSkills","items","map","type","filteredSkills","createMemo","filter","s","toLowerCase","includes","description","filterMarketplaceSkills","list","maxIndex","Math","max","prev","min","maxVisible","floor","skillsWindow","selected","visible","total","start","treeWindow","handleKeyNav","delta","handleInstall","skill","onNavigate","handleTreeEnter","item","isCategory","state","newPath","rootNode","segment","child","find","c","handleTreeBack","path","handleCategorySelect","idx","cat","toggleViewMode","useKeyboard","key","sequence","parseInt","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","_$memo","formatTreePath","icon","count","totalSkills","Show","when","ErrorState","message","action","label","compact","_el$2","Spinner","_el$3","_el$4","_$createTextNode","_$insertNode","_$effect","_$p","terminalColors","textMuted","_el$5","_el$6","_el$7","_el$8","_el$12","_el$14","_el$15","_el$16","_el$18","_el$19","_el$9","_el$1","_el$10","_el$11","warning","_p$","_v$","success","_v$2","_v$3","text","_v$4","_v$5","accent","t","a","o","i","undefined","_el$20","_el$22","_el$24","_el$25","For","each","_el$66","_el$67","_el$68","_el$69","_el$27","_el$29","fallback","EmptyState","_el$31","_el$32","_el$33","_el$34","_el$35","_el$36","_c$","_v$6","_v$7","_el$37","_el$39","_el$40","_el$41","originalIndex","isSelected","_el$70","_el$71","_el$72","_el$73","_el$74","repoName","_el$75","_el$76","_v$8","_v$9","_v$0","_el$42","_el$43","_el$44","_el$45","_el$46","_el$47","_c$2","_el$48","_el$50","_el$52","_el$53","_el$54","isSkill","_el$77","_el$78","_el$79","_el$80","_c$3","_c$4","_el$81","_el$82","_el$83","skillCount","_v$1","_v$10","_v$11","_el$55","_el$56","_el$57","_el$58","_el$60","_el$62","_el$64","Recommend","props","state","setState","createSignal","recommendations","analyzing","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","projectInfo","setProjectInfo","rows","createEffect","loadData","s","analysis","analyzeProject","languages","frameworks","result","getRecommendations","maxIndex","Math","max","length","prev","min","err","Error","message","handleRefresh","handleInstall","recs","rec","onNavigate","handleKeyNav","delta","useKeyboard","key","name","getScoreColor","score","terminalColors","success","accent","warning","textMuted","getGrade","selectedRec","detailFields","label","value","source","tags","join","installCommand","maxVisible","floor","recsWindow","createMemo","list","selected","visible","total","start","items","slice","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","compact","_$memo","_el$2","Spinner","_el$3","_$insertNode","_$createTextNode","_el$5","_el$6","_c$","_$effect","_$p","_el$7","_el$8","_el$11","_el$13","_el$9","_el$0","_el$10","_p$","_v$","_v$2","e","t","undefined","fallback","EmptyState","description","_el$15","_el$16","text","_el$18","_el$20","_el$21","_el$22","For","each","idx","originalIndex","isSelected","_el$36","_el$37","_el$38","_el$39","_el$40","_el$41","_el$42","_el$43","_el$44","reasons","_el$45","_el$46","_el$47","_el$48","_v$3","_v$4","_v$5","_v$6","a","o","_el$23","_el$24","_el$25","lastAnalyzed","_el$26","_el$28","_el$29","Date","toLocaleTimeString","DetailPane","fields","actions","width","onClose","_el$30","_el$32","_el$34","existsSync","readFileSync","join","readSkillContent","skillPath","skillMdPath","undefined","Translate","props","supportedAgents","setSupportedAgents","createSignal","skills","setSkills","sourceAgentIndex","setSourceAgentIndex","targetAgentIndex","setTargetAgentIndex","selectedSkillIndex","setSelectedSkillIndex","focusedPane","setFocusedPane","translating","setTranslating","preview","setPreview","result","setResult","loading","setLoading","error","setError","createEffect","loadData","agents","getSupportedAgents","skillsWithDetails","loadSkillsWithDetails","err","Error","message","sourceAgent","length","targetAgent","selectedSkill","skillList","canDoTranslation","source","target","checkCanTranslate","handlePreview","skill","path","content","previewResult","previewTranslation","handleTranslate","translationResult","translate","success","filename","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","name","p","onNavigate","visibleAgents","slice","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_el$0","_el$1","_el$11","_el$12","_$insertNode","_$createTextNode","_el$6","_el$7","_el$8","AGENT_LOGOS","_$effect","_$p","terminalColors","accent","_el$9","getAgentFormatInfo","formatName","textMuted","_el$14","_el$15","_el$16","text","_el$17","_el$18","warning","_p$","_v$","_v$2","_v$3","e","t","a","_el$20","_el$22","_el$24","_el$25","_el$26","_el$27","_el$29","_el$34","_el$35","_el$37","fallback","EmptyState","description","For","each","idx","selected","_el$75","_el$76","_el$31","_el$32","_el$33","_el$38","_el$39","_el$40","_el$41","agent","isSource","selectedIdx","_el$77","_el$78","_el$79","textSecondary","_el$43","_el$44","_el$46","_el$48","_el$49","_el$50","_el$51","_v$4","_v$5","border","_el$52","StatusIndicator","status","_el$54","_el$56","_el$58","_el$59","_el$61","compatible","issues","issue","_el$80","_el$81","_el$62","_el$64","_el$66","_el$67","_el$68","_el$69","_el$71","_el$73","Context","props","state","setState","createSignal","context","stack","loading","analyzing","error","tags","setTags","selectedSection","setSelectedSection","sections","moveSection","delta","i","Math","max","min","length","useKeyboard","key","name","handleRefresh","handleExport","onNavigate","createEffect","loadData","s","result","loadProjectContext","analyzeProjectContext","getStackTags","err","Error","message","refreshContext","exportContext","undefined","currentSection","ctx","_el$","_$createElement","_el$49","_el$51","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_el$6","_el$38","_el$40","_el$42","For","each","section","idx","_el$53","_el$54","_$effect","_$p","terminalColors","accent","textMuted","_$createTextNode","_el$8","_el$9","_el$0","_el$10","_el$11","_el$12","_el$14","_el$15","_el$16","_el$18","_el$19","_el$20","_el$22","_el$23","_el$24","_el$26","projectName","rootPath","languages","frameworks","libraries","lastUpdated","_el$27","_el$28","_el$30","_p$","_v$","_v$2","textSecondary","e","t","_v$3","_v$4","text","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_v$10","a","o","n","h","r","d","_el$31","fallback","EmptyState","lang","_el$55","_el$56","_el$57","_el$32","fw","_el$58","_el$59","_el$60","_el$33","slice","lib","_el$61","_el$62","_el$63","_el$34","_el$35","_el$36","_el$37","Object","keys","patterns","entries","value","_el$64","_el$65","_el$66","_el$67","String","_v$13","_v$14","_el$44","_el$45","tag","_el$68","_el$47","_el$48","_v$11","_v$12","description","Sync","props","agents","setAgents","createSignal","selectedIndex","setSelectedIndex","syncStatus","setSyncStatus","syncMessage","setSyncMessage","loading","setLoading","error","setError","skillCount","setSkillCount","cols","isCompact","createEffect","loadData","skillsData","loadSkills","skills","length","supportedAgents","getSupportedAgents","availability","getAgentAvailability","agentInfos","slice","map","agent","logo","AGENT_LOGOS","availInfo","find","a","type","name","icon","available","synced","err","Error","message","handleSync","agentList","idx","agentName","currentSkillCount","Promise","resolve","setTimeout","prev","i","handleSyncAll","syncedCount","filter","handleKeyNav","delta","max","Math","min","useKeyboard","key","onNavigate","createMemo","availableCount","totalSkillsSynced","reduce","sum","selectedAgent","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_$createTextNode","_el$5","_el$6","_el$8","_el$9","_el$0","_el$1","_el$11","_el$12","_$insertNode","_$effect","_p$","_v$","terminalColors","success","_v$2","textMuted","_v$3","accent","_v$4","_v$5","text","e","t","o","undefined","_el$13","_$p","_el$15","StatusIndicator","status","_el$17","_el$19","_el$20","_el$22","_v$6","_v$7","_el$23","_el$24","_el$26","_v$8","_v$9","fallback","EmptyState","description","_el$27","_el$28","_el$30","For","each","selected","_el$43","_el$44","_el$45","_el$46","_el$47","_el$48","_c$","_c$2","_el$49","_v$0","_v$1","_v$10","_v$11","_el$32","_el$34","_el$35","_el$36","warning","_el$37","_el$39","_el$41","Memory","props","state","setState","createSignal","entries","status","paths","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","createEffect","loadData","s","result","loadMemories","err","Error","message","handleDelete","length","entry","success","deleteMemoryEntry","key","handleClearAll","clearMemory","undefined","handleInitialize","initializeMemory","getTypeIcon","type","selectedEntry","detailFields","label","value","size","updated","useKeyboard","maxIndex","Math","max","name","prev","min","onNavigate","_el$","_$createElement","_el$28","_el$30","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","Show","when","children","ErrorState","action","compact","Spinner","_$memo","_el$2","_el$3","_el$1","_el$11","_el$4","_el$5","_el$7","_el$8","_el$0","_$createTextNode","projectMemoryExists","globalMemoryExists","_$effect","_p$","_v$","terminalColors","textMuted","_v$2","warning","_v$3","_v$4","e","t","a","o","fallback","EmptyState","description","_el$13","_el$14","_$p","text","_el$16","For","each","mem","idx","_el$32","_el$33","_el$34","_el$35","_el$36","_el$37","_el$38","_v$5","accent","_v$6","_v$7","_v$8","_v$9","i","DetailPane","fields","actions","width","visible","onClose","_el$18","_el$20","_el$22","_el$24","_el$25","projectMemoryDir","_el$26","_el$27","globalMemoryDir","Workflow","props","state","setState","createSignal","workflows","current","progress","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","executing","setExecuting","cols","isCompact","contentWidth","Math","max","min","createEffect","loadData","s","result","loadWorkflowsList","err","Error","message","handleExecute","length","workflow","executeWorkflow","name","undefined","handleKeyNav","delta","prev","useKeyboard","key","onNavigate","successCount","createMemo","filter","w","status","failedCount","runningCount","selectedWorkflow","getStatusIcon","getStatusColor","terminalColors","success","accent","textMuted","divider","repeat","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_el$18","_el$19","_$insertNode","_el$5","_el$6","_$createTextNode","_el$7","_$effect","_$p","_el$8","_el$0","_el$1","_el$10","_el$11","_el$13","_el$14","_el$15","_el$16","fallback","EmptyState","description","_el$21","_el$22","text","_el$24","For","each","wf","idx","selected","_el$40","_el$41","_el$42","_el$43","_el$44","_el$45","_el$46","_el$47","skills","waves","lastRun","_el$48","_el$49","_p$","_v$","_v$2","_v$3","_v$4","e","t","a","o","_el$26","StatusIndicator","_el$28","_el$29","_el$30","_el$31","_el$34","currentWave","totalWaves","currentSkill","totalSkills","DetailPane","fields","value","String","actions","width","visible","onClose","_el$35","_el$37","_el$38","Execute","props","skills","setSkills","createSignal","agents","setAgents","selectedSkillIndex","setSelectedSkillIndex","selectedAgentIndex","setSelectedAgentIndex","focusedPane","setFocusedPane","executing","setExecuting","executionResult","setExecutionResult","loading","setLoading","loadError","setLoadError","createEffect","loadData","skillsWithDetails","loadSkillsWithDetails","agentAvailability","getAgentAvailability","err","Error","message","handleExecute","skillList","agentList","length","skill","agent","available","result","executeSkillWithAgent","path","timeout","success","output","error","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","name","p","onNavigate","selectedSkill","list","selectedAgent","MAX_VISIBLE","skillsWindow","createMemo","selected","total","start","items","floor","slice","agentsWindow","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","Show","when","children","Spinner","label","ErrorState","action","compact","_$memo","_el$2","_el$3","_el$4","_el$5","_el$7","_el$13","_el$14","_el$16","_el$17","_el$18","_el$20","_$insertNode","_$createTextNode","fallback","EmptyState","description","_el$9","_el$0","_el$1","_$effect","_$p","terminalColors","textMuted","For","each","idx","originalIndex","isSelected","_el$56","_el$57","accent","textSecondary","_el$10","_el$11","_el$12","_el$22","_el$23","_el$24","_el$58","_el$59","_el$60","_el$61","_p$","_v$8","_v$9","e","t","undefined","_el$25","_el$26","_el$27","_v$","text","_v$2","border","_v$3","a","_el$28","_el$30","_el$32","_el$34","_el$35","_el$37","_el$38","_el$40","_el$41","warning","_v$4","_v$5","_v$6","_v$7","o","_el$43","StatusIndicator","status","_el$45","_el$47","_el$49","_el$50","_el$51","_el$52","_el$54","History","props","history","skill","time","duration","status","_el$","_$createElement","_el$2","_el$3","_el$5","_el$7","_el$9","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","length","icon","_$createTextNode","For","each","children","item","idx","_el$1","_el$10","_el$11","_el$12","_el$13","_$effect","_p$","_v$3","terminalColors","accent","text","_v$4","textMuted","_v$5","_v$6","success","error","e","t","a","o","undefined","_v$","_v$2","Team","props","state","setState","createSignal","config","members","sharedSkills","loading","error","focusedPane","setFocusedPane","selectedMemberIndex","setSelectedMemberIndex","selectedSkillIndex","setSelectedSkillIndex","showDetail","setShowDetail","initializing","setInitializing","createEffect","loadData","s","result","loadTeamConfig","err","Error","message","handleInitialize","success","initializeTeam","handleKeyNav","delta","max","length","prev","Math","min","useKeyboard","key","name","p","onNavigate","getStatusIcon","status","getStatusColor","terminalColors","textMuted","warning","selectedMember","selectedSharedSkill","skills","memberDetailFields","member","label","value","role","String","lastSync","skillDetailFields","skill","sharedBy","sharedAt","agents","join","activeCount","createMemo","filter","m","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","Show","when","children","ErrorState","action","compact","Spinner","StatusIndicator","_$memo","fallback","EmptyState","description","_el$2","_el$3","_el$5","_el$6","_el$8","_el$9","_$createTextNode","_el$0","_el$10","_el$11","_$insertNode","teamName","_$effect","_p$","_v$","_v$2","accent","_v$3","_v$4","_v$5","_v$6","text","e","t","a","o","i","n","undefined","_el$12","_$p","_el$14","_el$16","_el$17","_el$18","_el$19","_el$21","_el$23","_el$24","_el$26","_el$27","_el$28","_el$30","For","each","idx","selected","_el$41","_el$42","_el$43","_el$44","_el$45","_v$0","_v$1","_v$10","_v$11","slice","_el$46","_el$47","_el$48","_el$49","_el$50","_v$12","_v$13","_v$14","_el$32","_el$33","_el$34","_v$7","_v$8","border","_v$9","DetailPane","fields","actions","width","visible","onClose","_el$35","_el$37","_el$39","Plugins","props","state","setState","createSignal","plugins","manager","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","selectedPlugin","setSelectedPlugin","toggling","setToggling","createEffect","loadData","s","result","loadPluginsList","err","Error","message","handleToggle","length","plugin","enabled","disablePlugin","name","enablePlugin","handleShowDetail","info","getPluginInfo","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","onNavigate","getTypeIcon","type","currentPlugin","detailFields","current","label","value","metadata","version","description","path","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","Show","when","children","ErrorState","action","compact","Spinner","_$memo","_el$2","_el$3","_$insertNode","fallback","EmptyState","_el$4","_el$5","_$createTextNode","_$effect","_$p","terminalColors","text","_el$7","For","each","idx","selected","_el$22","_el$23","_el$24","_el$25","_el$26","_el$27","_el$28","_el$29","_p$","_v$","accent","_v$2","textSecondary","_v$3","_v$4","textMuted","_v$5","success","e","t","a","o","i","undefined","_el$9","StatusIndicator","status","_el$1","_el$11","_el$13","_el$15","DetailPane","fields","actions","width","visible","onClose","_el$16","_el$18","_el$20","Methodology","props","state","setState","createSignal","packs","installedPacks","manager","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","installing","setInstalling","syncing","setSyncing","createEffect","loadData","s","result","loadMethodologies","err","Error","message","handleInstall","length","pack","installed","installMethodologyPack","name","handleUninstall","success","uninstallMethodologyPack","handleSync","syncMethodologyPack","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","onNavigate","getStatusIcon","status","getStatusColor","terminalColors","accent","textMuted","selectedPack","detailFields","label","value","version","description","String","skills","tags","join","installedCount","filter","p","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","Show","when","children","ErrorState","action","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_el$5","_el$7","_el$8","_el$0","_el$1","_el$11","_el$13","_$insertNode","_$createTextNode","fallback","EmptyState","_el$15","_el$16","_$effect","_$p","text","_el$18","For","each","idx","selected","_el$30","_el$31","_el$32","_el$33","_el$34","_el$35","_el$36","_el$37","_el$38","_el$39","_el$40","_el$41","slice","_p$","_v$7","_v$8","_v$9","_v$0","_v$1","e","t","a","o","i","undefined","_el$20","StatusIndicator","_el$22","DetailPane","fields","actions","width","visible","onClose","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","n","_el$24","_el$26","_el$28","ProgressBar","props","width","Math","max","round","safeProgress","Number","isFinite","progress","showPercentage","color","clampedProgress","min","filledWidth","emptyWidth","filled","symbols","progressFilled","repeat","empty","progressEmpty","_el$","_$createElement","_el$2","_el$3","_el$4","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","children","_el$5","_el$6","_$createTextNode","_$effect","_$p","terminalColors","textSecondary","_p$","_v$","_v$2","textMuted","e","t","undefined","Plan","props","state","setState","createSignal","plans","current","validation","execution","loading","error","selectedIndex","setSelectedIndex","executionProgress","setExecutionProgress","executing","setExecuting","validating","setValidating","createEffect","loadData","s","result","loadPlansList","err","Error","message","handleValidate","length","planItem","plan","loadPlan","path","validatePlan","handleExecute","dryRun","executeFn","executePlanDryRun","executePlan","completedCount","totalTasks","tasks","undefined","event","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","name","onNavigate","getStatusIcon","status","getStatusColor","terminalColors","success","accent","textMuted","selectedPlan","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","fallback","EmptyState","description","_el$2","_el$3","_$insertNode","_$createTextNode","_$effect","_$p","text","_el$5","For","each","idx","selected","_el$39","_el$40","_el$41","_el$42","_el$43","_el$44","_el$45","lastModified","_el$46","_el$47","_p$","_v$","_v$2","_v$3","_v$4","e","t","a","o","_el$7","StatusIndicator","_el$9","_el$1","_el$11","_el$12","_el$14","valid","issues","slice","issue","_el$48","_el$49","warning","_el$15","_el$17","_el$19","_el$20","ProgressBar","progress","width","_el$22","_el$24","_el$26","_el$27","_el$29","_el$30","_el$31","_el$32","completedTasks","failedTasks","_el$33","_el$35","_el$37","DEFAULT_SETTINGS","key","label","value","type","Settings","props","selectedIndex","setSelectedIndex","createSignal","settings","setSettings","animPhase","setAnimPhase","cols","isCompact","contentWidth","Math","max","min","createEffect","timer","setTimeout","p","onCleanup","clearTimeout","handleKeyNav","delta","prev","length","handleToggle","setting","map","s","i","handleReset","useKeyboard","name","onNavigate","divider","createMemo","_el$","_$createElement","_$insert","repeat","_$effect","_$p","_$setProp","terminalColors","textMuted","shortcuts","_el$2","_$createComponent","Show","when","children","_el$3","_el$4","_el$5","_el$7","_el$8","_$createTextNode","_el$9","_el$1","_$insertNode","_p$","_v$","_v$2","text","_v$3","_v$4","e","t","a","o","undefined","_el$11","_el$12","_el$14","_el$16","_el$18","For","each","idx","selected","indicator","valueColor","success","toggleIcon","_el$27","_el$28","_el$29","_el$30","_v$5","_v$6","accent","_v$7","_$memo","_el$20","_el$21","_el$23","_el$25","_el$26","SHORTCUTS","section","items","key","desc","ShortcutSection","props","_el$","_$createElement","_el$2","_$insertNode","_$setProp","_$insert","_$createComponent","For","each","children","item","_el$5","_el$6","_el$7","_$createTextNode","_el$8","_$effect","_p$","_v$","terminalColors","accent","_v$2","textMuted","e","t","undefined","Show","when","isLast","_el$3","_$p","text","Help","animPhase","setAnimPhase","createSignal","cols","isCompact","rawWidth","contentWidth","Math","max","min","version","getVersion","createEffect","timer","setTimeout","p","onCleanup","clearTimeout","divider","createMemo","_el$9","repeat","_el$0","_el$1","_el$10","_el$11","_el$13","_el$14","_el$15","_el$17","_v$3","_v$4","_v$5","_v$6","a","o","_el$19","_el$20","_el$22","fallback","_el$27","_el$28","_el$29","slice","s","idx","_v$7","floor","_v$8","length","_el$24","_el$25","Mesh","props","hosts","name","address","status","peers","securityStatus","initialized","fingerprint","trustedPeers","_el$","_$createElement","_el$2","_el$3","_el$4","_el$6","_el$7","_el$8","_$createTextNode","_el$9","_el$0","_el$10","_el$12","_el$14","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","filter","h","length","icon","For","each","children","host","idx","_el$16","_el$17","_el$18","_el$19","_el$20","_el$21","_$effect","_p$","_v$6","terminalColors","success","textMuted","_v$7","accent","text","_v$8","_v$9","e","t","a","o","undefined","_v$","_v$2","warning","_v$3","_v$4","_v$5","i","Message","props","messages","id","from","subject","time","unread","unreadCount","filter","m","length","_el$","_$createElement","_el$2","_el$3","_el$4","_el$6","_el$7","_$createTextNode","_el$8","_el$9","_el$1","_el$11","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","For","each","children","msg","idx","_el$13","_el$14","_el$15","_el$16","_el$17","slice","_$effect","_p$","_v$4","terminalColors","accent","textMuted","_v$5","text","_v$6","_v$7","e","t","a","o","undefined","_v$","_v$2","_v$3","DOCS_URL","openUrl","url","process","platform","execFile","cmd","App","props","showSplash","setShowSplash","createSignal","currentScreen","setCurrentScreen","showSidebar","setShowSidebar","dimensions","setDimensions","cols","stdout","columns","rows","createEffect","handleResize","on","onCleanup","off","sidebarVisible","sidebarWidth","statusBarHeight","contentHeight","handleNavigate","newScreen","handleSplashComplete","useKeyboard","key","name","ctrl","onExit","exit","sequence","v","targetScreen","NAV_KEYS","screenProps","onNavigate","Math","max","_$createComponent","Show","when","fallback","Splash","onComplete","duration","children","_el$","_$createElement","_el$2","_el$3","_$insertNode","_$setProp","_$insert","Sidebar","screen","Switch","Home","_$mergeProps","Match","Browse","Installed","Marketplace","Settings","Recommend","Translate","Context","Memory","Team","Plugins","Methodology","Plan","Workflow","Execute","History","Sync","Help","Mesh","Message","StatusBar","_$effect","_p$","_v$","_v$2","e","t","undefined","AgentGrid","props","maxVisible","showStatus","detectedAgents","columns","Math","max","allAgents","Object","entries","AGENT_LOGOS","visibleAgents","slice","hiddenCount","length","rows","createMemo","result","visible","i","push","_el$","_$createElement","_el$2","_el$3","_el$5","_$insertNode","_$setProp","_$createTextNode","_$insert","_$createComponent","For","each","children","row","rowIndex","_el$0","agentType","agent","isDetected","includes","statusIcon","fg","terminalColors","accent","text","_el$1","_el$10","_el$11","icon","name","Show","when","_el$12","_el$13","_$effect","_$p","success","textMuted","_el$7","_el$8","_el$9","StatsCard","props","animated","displayValues","setDisplayValues","createSignal","items","map","item","value","animComplete","setAnimComplete","createEffect","newValues","duration","animations","countUp","startTime","Date","now","targetValues","frameInterval","intervalId","setInterval","elapsed","progress","Math","min","eased","pow","target","round","clearInterval","onCleanup","_el$","_$createElement","_$setProp","_$insert","_$createComponent","For","each","children","index","fg","color","terminalColors","text","_el$2","_el$3","_el$4","_el$5","_$insertNode","String","label","_$effect","_p$","_v$","border","_v$2","_v$3","textMuted","e","t","a","undefined","TOP_AGENTS","RightSidebar","props","sections","createSignal","context","agents","tasks","_el$","_$createElement","_el$2","_el$3","_el$4","_$createTextNode","_el$10","_el$11","_el$12","_el$15","_el$16","_el$17","_el$21","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","children","_el$5","_$effect","_$p","terminalColors","textSecondary","_el$7","_el$8","_el$9","symbols","active","_el$0","For","each","agent","logo","AGENT_LOGOS","_el$22","_el$23","_el$24","_el$25","icon","name","text","_el$13","textMuted","_el$18","_el$19","_el$20","pending","_p$","_v$","width","_v$2","border","_v$3","_v$4","_v$5","e","t","a","o","i","undefined","SCREEN_LABELS","home","browse","marketplace","installed","settings","recommend","translate","context","memory","team","plugins","methodology","plan","workflow","execute","history","sync","help","mesh","message","BottomStatusBar","props","version","getVersion","_el$","_$createElement","_el$2","_el$3","_el$4","_$createTextNode","_el$5","_el$6","_el$7","_el$8","_el$9","_el$0","_el$1","_el$10","_el$11","_el$12","_$insertNode","_$setProp","_$insert","symbols","brandIcon","verticalLine","currentScreen","_$effect","_p$","_v$","terminalColors","border","_v$2","accent","_v$3","_v$4","text","_v$5","_v$6","textMuted","e","t","a","o","i","n","undefined","SkillList","props","maxVisible","pagination","calculatePagination","skills","length","selectedIndex","visibleSkills","slice","start","end","_$createComponent","Show","when","fallback","_el$8","_$createElement","_$insertNode","_$createTextNode","_$effect","_$p","_$setProp","terminalColors","textMuted","children","_el$","_$insert","itemsAbove","_el$2","_el$3","_el$4","symbols","arrowUp","For","each","skill","idx","actualIndex","isSelected","pointer","pointerInactive","fg","accent","text","statusIcon","enabled","active","pending","descPart","description","line","name","_el$0","_c$","_$memo","_el$1","itemsBelow","_el$5","_el$6","_el$7","arrowDown","SearchInput","props","placeholder","focused","display","value","textColor","terminalColors","text","textMuted","_el$","_$createElement","_el$2","_el$4","_$insertNode","_$setProp","_$createTextNode","_$insert","_$createComponent","Show","when","children","_el$5","_$effect","_$p","accent","_p$","_v$","_v$2","e","t","undefined","FEATURES","key","label","color","description","FeatureList","props","features","_el$","_$createElement","_el$2","_el$3","_el$5","_$insertNode","_$setProp","_$createTextNode","_$insert","_$createComponent","For","each","children","feat","_el$7","_el$8","_el$9","_el$0","_el$1","padEnd","_$effect","_p$","_v$","terminalColors","_v$2","textMuted","e","t","undefined","_$p","text","SelectList","props","maxVisible","showIndex","compact","scrollOffset","createMemo","selected","selectedIndex","visible","total","items","length","Math","floor","visibleItems","offset","slice","map","item","i","originalIndex","hasScrollUp","hasScrollDown","handleItemClick","index","disabled","onSelect","handleItemHover","onHover","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Show","when","children","_el$2","emptyText","_$effect","_$p","terminalColors","textMuted","_el$3","_el$4","_$createTextNode","_el$5","_$insertNode","For","each","isSelected","isHovered","hoveredIndex","isDisabled","fg","accent","text","textSecondary","prefix","_el$0","_el$1","_el$10","_el$16","_el$11","_el$12","String","padStart","icon","_el$14","_el$15","label","meta","_el$17","_el$18","_el$19","_$memo","description","_el$20","_el$21","_p$","_v$","_v$2","_v$3","_v$4","e","t","a","o","undefined","_el$6","_el$7","_el$9","SplitPane","props","direction","showDivider","dividerChar","gap","flexDir","primaryWidth","undefined","primarySize","primaryHeight","secondaryWidth","secondarySize","secondaryHeight","_el$","_$createElement","_el$2","_$insertNode","_$insert","primary","_$createComponent","Show","when","_$memo","secondary","children","_el$3","_el$4","_$setProp","_$effect","_p$","_v$","_v$2","_v$3","terminalColors","border","e","t","a","_el$5","_v$4","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","o","ThreePaneLayout","leftWidth","rightWidth","_el$6","_el$1","left","_el$7","_$p","showLeftDivider","_el$8","_el$9","_$createTextNode","center","right","showRightDivider","_el$10","_el$11","_el$13","KEYWORDS","Set","tokenizeLine","line","tokens","remaining","length","startsWith","push","type","value","stringMatch","match","slice","numberMatch","wordMatch","word","has","spaceMatch","getTokenColor","terminalColors","accent","warning","info","textMuted","text","CodeBlock","props","showLineNumbers","highlightLines","lines","allLines","code","split","maxLines","lineNumberWidth","String","isTruncated","undefined","_el$","_$createElement","_el$4","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","title","children","_el$2","_el$3","_$effect","_$p","For","each","index","lineNum","isHighlighted","_el$8","_el$9","_el$0","_$createTextNode","padStart","_p$","_v$","_v$2","e","t","token","_el$1","_el$5","_el$6","_el$7","border","InlineCode","_el$10","_el$11","_el$12","FormField","props","type","focused","disabled","width","displayValue","repeat","value","length","borderColor","error","terminalColors","accent","textMuted","border","labelColor","textSecondary","_el$","_$createElement","_el$2","_el$3","_el$6","_el$9","_$insertNode","_$setProp","_$insert","label","_$createComponent","Show","when","required","children","_el$4","_$createTextNode","_$effect","_$p","_el$7","_el$13","placeholder","_el$0","_el$10","_el$11","_$memo","hint","_el$12","_p$","_v$","_v$2","_v$3","_v$4","text","e","t","a","o","undefined","TextAreaField","rows","lines","split","slice","hasContent","_el$14","_el$15","_el$16","fallback","_el$19","map","line","_el$20","_el$17","_el$18","_v$5","_v$6","_v$7","_v$8","SelectField","expanded","selectedLabel","option","options","find","_el$21","_el$22","_el$23","_el$24","_el$25","_el$26","_el$27","index","isSelected","selectedOptionIndex","_el$28","_v$9","_v$0","_v$1","_v$10","DefaultErrorFallback","props","errorMessage","error","Error","message","String","errorStack","stack","lines","split","slice","join","useKeyboard","key","name","reset","_el$","_$createElement","_el$2","_el$3","_el$5","_el$6","_el$9","_el$0","_el$1","_$createTextNode","_el$10","_el$12","_el$14","_el$16","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","children","_el$7","_el$8","_$effect","_$p","terminalColors","textMuted","_p$","_v$","_v$2","_v$3","text","_v$4","_v$5","accent","_v$6","e","t","a","o","i","n","undefined","ErrorBoundary","handledErrorRef","fallbackComponent","onError","wrappedReset","fallback","SolidErrorBoundary","Try","catch","_el$17","VARIANT_COLORS","primary","fg","terminalColors","text","bg","accent","border","hoverFg","secondary","surface","ghost","textSecondary","danger","error","Button","props","variant","size","disabled","focused","pressed","hovered","colors","textMuted","borderColor","paddingX","brackets","left","right","padding","repeat","handleClick","onClick","_el$","_$createElement","_el$2","_el$3","_el$6","_el$0","_el$1","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","icon","children","_el$4","_el$5","_$createTextNode","_$effect","_$p","label","shortcut","_el$7","_el$8","_el$9","_p$","_v$","_v$2","_v$3","_v$4","_v$5","e","t","a","o","i","undefined","ButtonGroup","direction","gap","_el$10","buttons","map","btn","index","_el$11","id","focusedId","selectedId","_v$6","length","_v$7","IconButton","_el$12","_el$13","_el$14","_el$15","Clickable","props","disabled","hovered","focused","hoverEffect","showHighlight","cursor","handleClick","onClick","handleDoubleClick","onDoubleClick","handleRightClick","onRightClick","renderContent","_el$","_$createElement","_$insert","children","_el$2","_el$5","_$insertNode","_$setProp","_$createComponent","Show","when","_$memo","_el$3","_el$4","_$createTextNode","_$effect","_$p","terminalColors","accent","undefined","ClickableText","underlineOnHover","color","textMuted","hoverColor","text","_el$6","_c$","_el$7","ClickableRow","selected","showIndicator","indicatorChar","indicator","fg","textSecondary","_el$8","_el$9","InteractiveArea","_el$0","_p$","_v$","width","_v$2","height","_v$3","left","x","top","y","_v$4","onMouseOver","_v$5","onMouseOut","_v$6","_v$7","onMouseDown","_v$8","onMouseUp","e","t","a","o","i","n","s","h","HoverHighlight","props","_el$","_$createElement","_$insert","children","HighlightableListItem","showPrefix","prefixWidth","isSelected","index","selectedIndex","isHovered","hoveredIndex","prefix","fg","terminalColors","accent","text","textSecondary","_el$2","_$setProp","_$createComponent","Show","when","_el$3","_$effect","_p$","_v$","_v$2","e","t","undefined","FocusRing","ringColor","_el$4","_v$3","isFocused","_v$4","PressEffect","_el$5","AnimatedText","props","progress","setProgress","createSignal","isComplete","setIsComplete","animation","duration","Math","max","delay","color","terminalColors","text","createEffect","anim","dur","dly","delayTimeoutId","animationTimeoutId","startTime","cancelled","animate","now","Date","elapsed","p","min","setTimeout","onComplete","onCleanup","clearTimeout","displayText","charCount","floor","length","slice","scrambleText","num","parseFloat","isNaN","String","round","_el$","_$createElement","_$insert","_$createComponent","Show","when","_$memo","children","_el$2","_$insertNode","_$createTextNode","_$effect","_$p","_$setProp","accent","CountUpText","displayValue","setDisplayValue","formatter","v","target","value","eased","pow","_el$4","prefix","suffix","BlinkingText","visible","setVisible","interval","blinkColor","textMuted","timer","setInterval","clearInterval","_el$5","PulsingText","phase","setPhase","pulseColor","currentColor","_el$6","TabBar","props","variant","size","showShortcuts","gap","_el$","_$createElement","_$setProp","_$insert","_$createComponent","For","each","tabs","children","tab","index","isActive","id","activeId","isHovered","hoveredId","isDisabled","disabled","fg","terminalColors","textMuted","accent","text","textSecondary","decoration","brackets","left","right","handleClick","onSelect","_el$2","_el$3","_el$4","_el$7","_el$11","_$insertNode","Show","when","icon","_el$5","_el$6","_$createTextNode","_$effect","_$p","label","badge","undefined","_el$8","_el$9","_el$0","_el$1","_el$10","String","_el$12","repeat","length","_p$","_v$","_v$2","border","_v$3","_v$4","e","t","a","o","VerticalTabBar","width","_el$13","prefix","_el$14","_el$15","_el$18","_el$16","_el$17","_el$19","_el$20","_el$21","_v$5","_v$6","Breadcrumb","props","separator","handleClick","id","onNavigate","_el$","_$createElement","_$setProp","_$insert","_$createComponent","For","each","items","children","item","index","isLast","length","isHovered","hoveredId","fg","terminalColors","text","accent","textMuted","_el$2","_el$5","_$insertNode","Show","when","icon","_el$3","_el$4","_$createTextNode","_$effect","_$p","_c$","_$memo","_el$7","label","_el$6","PathBreadcrumb","maxSegments","segments","parts","path","split","filter","Boolean","slice","getPathAtIndex","segs","actualIndex","offset","join","segment","_el$8","_el$9","hoveredSegment","isEllipsis","_el$0","_c$2","_el$10","_el$1","NavigationTrail","_el$11","isCurrent","currentIndex","isPast","hoveredIndex","textSecondary","indicator","_el$12","_el$13","_el$14","_el$15","_p$","_v$","_v$2","e","t","undefined","isRunning","renderer","exitTUI","code","dispose","process","stdout","write","setImmediate","exit","startTUI","on","err","console","error","message","createCliRenderer","exitOnCtrlC","useMouse","enableMouseMovement","render","_$createComponent","App","onExit","Promise"]}
|