@skillkit/tui 1.6.4 → 1.8.1

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 CHANGED
@@ -1,265 +1,1214 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as react from 'react';
3
- import { ScoredSkill, ProjectProfile, Learning, Observation, MemoryStatus } from '@skillkit/core';
1
+ import { AgentType, SkillMetadata } from '@skillkit/core';
2
+ import * as _skillkit_agents from '@skillkit/agents';
3
+ import { JSX } from 'solid-js';
4
4
 
5
- type Screen = 'home' | 'browse' | 'installed' | 'sync' | 'settings' | 'recommend' | 'translate' | 'context' | 'workflow' | 'execute' | 'history' | 'marketplace' | 'memory' | 'team' | 'plugins' | 'methodology' | 'plan';
6
- declare function App(): react_jsx_runtime.JSX.Element;
7
-
8
- interface SidebarProps {
5
+ interface SkillItem {
6
+ name: string;
7
+ description?: string;
8
+ source?: string;
9
+ installs?: number;
10
+ enabled?: boolean;
11
+ quality?: number;
12
+ grade?: string;
13
+ warnings?: number;
14
+ }
15
+ interface RepoInfo {
16
+ source: string;
17
+ name: string;
18
+ }
19
+ interface FetchedSkill {
20
+ name: string;
21
+ source: string;
22
+ repoName: string;
23
+ description?: string;
24
+ }
25
+ type Screen = 'home' | 'browse' | 'installed' | 'marketplace' | 'recommend' | 'translate' | 'context' | 'memory' | 'team' | 'plugins' | 'methodology' | 'plan' | 'workflow' | 'execute' | 'history' | 'sync' | 'settings' | 'help' | 'mesh' | 'message';
26
+ declare const NAV_KEYS: Record<string, Screen>;
27
+ declare const STATUS_BAR_SHORTCUTS = "b browse m market i installed s sync / help q quit";
28
+ interface ScreenMeta {
29
+ key: string;
30
+ label: string;
9
31
  screen: Screen;
10
- onNavigate: (screen: Screen) => void;
11
- isCompact?: boolean;
12
32
  }
13
- declare function Sidebar({ screen }: SidebarProps): react_jsx_runtime.JSX.Element;
33
+ interface SidebarSection {
34
+ section: string;
35
+ items: ScreenMeta[];
36
+ }
37
+ declare const SIDEBAR_NAV: SidebarSection[];
38
+
39
+ interface AppProps {
40
+ onExit?: (code?: number) => void;
41
+ }
42
+ declare function App(props: AppProps): any;
43
+
44
+ /**
45
+ * Monochromatic color palette for SkillKit TUI
46
+ * Inspired by OpenSync's elegant dark theme
47
+ */
48
+ declare const colors: {
49
+ readonly background: "#0d0d0d";
50
+ readonly surface: "#1a1a1a";
51
+ readonly surfaceHover: "#262626";
52
+ readonly border: "#333333";
53
+ readonly borderDim: "#1f1f1f";
54
+ readonly text: "#ffffff";
55
+ readonly textSecondary: "#a0a0a0";
56
+ readonly textMuted: "#666666";
57
+ readonly accent: "#00ff88";
58
+ readonly accentDim: "#00cc6a";
59
+ readonly success: "#22c55e";
60
+ readonly warning: "#eab308";
61
+ readonly error: "#ef4444";
62
+ readonly info: "#3b82f6";
63
+ readonly sync: "#00d9ff";
64
+ readonly browse: "#22c55e";
65
+ readonly recommend: "#fbbf24";
66
+ readonly translate: "#a855f7";
67
+ readonly workflow: "#3b82f6";
68
+ readonly team: "#ffffff";
69
+ readonly private: "#ef4444";
70
+ readonly tag: "#fbbf24";
71
+ readonly export: "#22c55e";
72
+ readonly delete: "#ef4444";
73
+ };
74
+ type ColorName = keyof typeof colors;
75
+ type ColorValue = (typeof colors)[ColorName];
76
+ /**
77
+ * Get a color value by name
78
+ */
79
+ declare function getColor(name: ColorName): ColorValue;
80
+ /**
81
+ * Terminal-safe color names for OpenTUI
82
+ * Maps our design system colors to terminal-compatible values
83
+ */
84
+ declare const terminalColors: {
85
+ readonly background: "black";
86
+ readonly surface: "black";
87
+ readonly text: "white";
88
+ readonly textSecondary: "gray";
89
+ readonly textMuted: "gray";
90
+ readonly accent: "green";
91
+ readonly success: "green";
92
+ readonly warning: "yellow";
93
+ readonly error: "red";
94
+ readonly info: "blue";
95
+ readonly sync: "cyan";
96
+ readonly browse: "green";
97
+ readonly recommend: "yellow";
98
+ readonly translate: "magenta";
99
+ readonly workflow: "blue";
100
+ readonly team: "white";
101
+ readonly border: "gray";
102
+ };
103
+
104
+ /**
105
+ * Unicode symbols and agent logos for SkillKit TUI
106
+ * Monochromatic design system for terminal display
107
+ */
108
+ /**
109
+ * Agent logo definitions with monochromatic icons
110
+ */
111
+ interface AgentLogo {
112
+ icon: string;
113
+ name: string;
114
+ company: string;
115
+ }
116
+ /**
117
+ * All 32 supported agents with monochromatic Unicode logos
118
+ */
119
+ declare const AGENT_LOGOS: Record<string, AgentLogo>;
120
+ /**
121
+ * UI symbols for status and navigation
122
+ */
123
+ declare const symbols: {
124
+ readonly pointer: "▸";
125
+ readonly pointerInactive: " ";
126
+ readonly bullet: "●";
127
+ readonly bulletEmpty: "○";
128
+ readonly success: "✓";
129
+ readonly error: "✗";
130
+ readonly warning: "⚠";
131
+ readonly info: "ℹ";
132
+ readonly pending: "○";
133
+ readonly active: "●";
134
+ readonly synced: "●";
135
+ readonly progressFilled: "█";
136
+ readonly progressEmpty: "░";
137
+ readonly spinner: readonly ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
138
+ readonly arrowUp: "↑";
139
+ readonly arrowDown: "↓";
140
+ readonly arrowLeft: "←";
141
+ readonly arrowRight: "→";
142
+ readonly diamond: "◆";
143
+ readonly diamondEmpty: "◇";
144
+ readonly star: "★";
145
+ readonly starEmpty: "☆";
146
+ readonly horizontalLine: "─";
147
+ readonly verticalLine: "│";
148
+ readonly topLeft: "┌";
149
+ readonly topRight: "┐";
150
+ readonly bottomLeft: "└";
151
+ readonly bottomRight: "┘";
152
+ readonly brandIcon: "◆";
153
+ };
154
+ type SymbolName = keyof typeof symbols;
155
+ /**
156
+ * Get agent logo by agent type ID
157
+ */
158
+ declare function getAgentLogo(agentType: string): AgentLogo | undefined;
159
+ /**
160
+ * Get all agent types
161
+ */
162
+ declare function getAgentTypes(): string[];
163
+ /**
164
+ * Get formatted agent display string (icon + name)
165
+ */
166
+ declare function formatAgentDisplay(agentType: string): string;
167
+
168
+ /**
169
+ * Animation presets for SkillKit TUI
170
+ * Uses OpenTUI's useTimeline for smooth 60fps animations
171
+ */
172
+ /**
173
+ * Animation easing functions available in OpenTUI
174
+ */
175
+ type EasingFunction = 'linear' | 'easeInQuad' | 'easeOutQuad' | 'easeInOutQuad' | 'easeInCubic' | 'easeOutCubic' | 'easeInOutCubic' | 'easeInQuart' | 'easeOutQuart' | 'easeInOutQuart';
176
+ /**
177
+ * Animation preset configuration
178
+ */
179
+ interface AnimationPreset {
180
+ duration: number;
181
+ ease: EasingFunction;
182
+ stagger?: number;
183
+ }
184
+ /**
185
+ * Predefined animation presets
186
+ */
187
+ declare const animations: {
188
+ /**
189
+ * Staggered fade-in for entrance animations
190
+ * Used on home screen for progressive content reveal
191
+ */
192
+ readonly staggeredFadeIn: {
193
+ readonly duration: 800;
194
+ readonly ease: EasingFunction;
195
+ readonly stagger: 100;
196
+ };
197
+ /**
198
+ * Logo reveal with scramble effect
199
+ * Used for branding animation on startup
200
+ */
201
+ readonly logoReveal: {
202
+ readonly duration: 600;
203
+ readonly ease: EasingFunction;
204
+ };
205
+ /**
206
+ * Count-up animation for stats
207
+ * Used in StatsCard component
208
+ */
209
+ readonly countUp: {
210
+ readonly duration: 1200;
211
+ readonly ease: EasingFunction;
212
+ };
213
+ /**
214
+ * Screen transition animation
215
+ * Used when navigating between screens
216
+ */
217
+ readonly screenTransition: {
218
+ readonly duration: 200;
219
+ readonly ease: EasingFunction;
220
+ };
221
+ /**
222
+ * Quick fade for tooltips and hints
223
+ */
224
+ readonly quickFade: {
225
+ readonly duration: 150;
226
+ readonly ease: EasingFunction;
227
+ };
228
+ /**
229
+ * Pulse animation for active states
230
+ */
231
+ readonly pulse: {
232
+ readonly duration: 1000;
233
+ readonly ease: EasingFunction;
234
+ };
235
+ };
236
+ /**
237
+ * Scramble effect characters
238
+ * Used for text reveal animations
239
+ */
240
+ declare const SCRAMBLE_CHARS = "\u2588\u2593\u2592\u2591\u25C6\u25C7\u25C8\u27C1\u25CE\u2726\u2B21\u25A3";
241
+ /**
242
+ * Scramble animation configuration
243
+ */
244
+ interface ScrambleConfig {
245
+ /** Animation duration in ms */
246
+ duration: number;
247
+ /** Progress increment per frame */
248
+ increment: number;
249
+ /** Frame interval in ms */
250
+ interval: number;
251
+ }
252
+ /**
253
+ * Default scramble animation config
254
+ */
255
+ declare const DEFAULT_SCRAMBLE_CONFIG: ScrambleConfig;
256
+ /**
257
+ * Generate scrambled text with progressive reveal
258
+ * @param target - The target text to reveal
259
+ * @param progress - Progress percentage (0-100)
260
+ * @param chars - Characters to use for scrambling
261
+ */
262
+ declare function scrambleText(target: string, progress: number, chars?: string): string;
263
+ /**
264
+ * Calculate staggered delay for an item in a list
265
+ * @param index - Item index
266
+ * @param stagger - Delay between items in ms
267
+ * @returns Delay in ms for this item
268
+ */
269
+ declare function getStaggerDelay(index: number, stagger?: number): number;
270
+
271
+ /**
272
+ * Navigation state management for SkillKit TUI
273
+ */
274
+
275
+ /**
276
+ * Navigation state
277
+ */
278
+ interface NavigationState {
279
+ currentScreen: Screen;
280
+ previousScreen: Screen | null;
281
+ history: Screen[];
282
+ }
283
+ /**
284
+ * Create initial navigation state
285
+ */
286
+ declare function createNavigationState(): NavigationState;
287
+ /**
288
+ * Navigate to a new screen
289
+ */
290
+ declare function navigateTo(state: NavigationState, screen: Screen): NavigationState;
291
+ /**
292
+ * Go back to previous screen (or home)
293
+ */
294
+ declare function goBack(state: NavigationState): NavigationState;
295
+ /**
296
+ * Get screen from key press
297
+ */
298
+ declare function getScreenFromKey(key: string): Screen | undefined;
299
+ /**
300
+ * Check if a key is a navigation key
301
+ */
302
+ declare function isNavKey(key: string): boolean;
303
+
304
+ /**
305
+ * Detailed skill info including path for translation
306
+ */
307
+ interface SkillWithDetails {
308
+ name: string;
309
+ description?: string;
310
+ path: string;
311
+ source?: string;
312
+ enabled: boolean;
313
+ }
314
+ /**
315
+ * Skills store state
316
+ */
317
+ interface SkillsState {
318
+ skills: SkillItem[];
319
+ loading: boolean;
320
+ error: string | null;
321
+ }
322
+ /**
323
+ * Create initial skills state
324
+ */
325
+ declare function createSkillsState(): SkillsState;
326
+ /**
327
+ * Load installed skills
328
+ * @param agentType - Optional agent type to load skills for
329
+ * @returns Updated skills state
330
+ */
331
+ declare function loadSkills(agentType?: AgentType): SkillsState;
332
+ /**
333
+ * Remove a skill by name
334
+ * @param skillName - Name of the skill to remove
335
+ * @param agentType - Optional agent type
336
+ * @returns true if removed, false otherwise
337
+ */
338
+ declare function removeSkill(skillName: string, agentType?: AgentType): boolean;
339
+ /**
340
+ * Filter skills by search query
341
+ */
342
+ declare function filterSkills(skills: SkillItem[], query: string): SkillItem[];
343
+ /**
344
+ * Load skills with full details including path for translation
345
+ * @param agentType - Optional agent type to load skills for
346
+ * @returns Array of skills with path details
347
+ */
348
+ declare function loadSkillsWithDetails(agentType?: AgentType): SkillWithDetails[];
349
+
350
+ /**
351
+ * Agent status information
352
+ */
353
+ interface AgentStatus {
354
+ type: AgentType;
355
+ name: string;
356
+ detected: boolean;
357
+ configured: boolean;
358
+ }
359
+ /**
360
+ * Agents state
361
+ */
362
+ interface AgentsState {
363
+ agents: AgentStatus[];
364
+ currentAgent: AgentType;
365
+ loading: boolean;
366
+ error: string | null;
367
+ }
368
+ /**
369
+ * Create initial agents state
370
+ */
371
+ declare function createAgentsState(): AgentsState;
372
+ /**
373
+ * Load all agents with their detection status
374
+ */
375
+ declare function loadAgents(): Promise<AgentsState>;
376
+ /**
377
+ * Get count of detected agents
378
+ */
379
+ declare function getDetectedAgentCount(state: AgentsState): number;
380
+ /**
381
+ * Get list of detected agents
382
+ */
383
+ declare function getDetectedAgents(state: AgentsState): AgentStatus[];
384
+ /**
385
+ * Get agent adapter by type
386
+ */
387
+ declare function getAgentAdapter(type: AgentType): _skillkit_agents.AgentAdapter;
388
+ /**
389
+ * Total number of supported agents (derived from adapters)
390
+ */
391
+ declare const TOTAL_AGENTS: number;
392
+
393
+ declare const DEFAULT_REPOS: RepoInfo[];
394
+ /**
395
+ * Marketplace state
396
+ */
397
+ interface MarketplaceState {
398
+ allSkills: FetchedSkill[];
399
+ filteredSkills: FetchedSkill[];
400
+ loading: boolean;
401
+ error: string | null;
402
+ currentRepo: string | null;
403
+ fetchedRepos: Set<string>;
404
+ failedRepos: string[];
405
+ repos: RepoInfo[];
406
+ }
407
+ /**
408
+ * Get marketplace repos from config or use defaults
409
+ */
410
+ declare function getMarketplaceRepos(): RepoInfo[];
411
+ /**
412
+ * Create initial marketplace state
413
+ */
414
+ declare function createMarketplaceState(): MarketplaceState;
415
+ /**
416
+ * Try to read skill description from frontmatter
417
+ */
418
+ declare function readSkillDescription(skillPath: string): string | undefined;
419
+ /**
420
+ * Fetch skills from a single repository
421
+ */
422
+ declare function fetchRepoSkills(source: string, repos: RepoInfo[]): Promise<{
423
+ skills: FetchedSkill[];
424
+ tempRoot?: string;
425
+ error?: string;
426
+ }>;
427
+ /**
428
+ * Clean up temp directory from fetch
429
+ */
430
+ declare function cleanupTempRoot(tempRoot: string): void;
431
+ /**
432
+ * Filter skills by search query
433
+ */
434
+ declare function filterMarketplaceSkills(skills: FetchedSkill[], query: string): FetchedSkill[];
435
+ /**
436
+ * Convert fetched skills to skill items for display
437
+ */
438
+ declare function toSkillItems(skills: FetchedSkill[]): SkillItem[];
439
+ /**
440
+ * Sort skills alphabetically by name
441
+ */
442
+ declare function sortSkillsByName(skills: FetchedSkill[]): FetchedSkill[];
443
+
444
+ /**
445
+ * Get search directories for skills based on agent type
446
+ * @param agentType - Optional agent type (defaults to configured agent)
447
+ * @returns Array of directories to search for skills
448
+ */
449
+ declare function getSearchDirs(agentType?: AgentType): string[];
450
+ /**
451
+ * Get installation directory for skills
452
+ * @param global - Whether to get global or project-local directory
453
+ * @param agentType - Optional agent type (defaults to configured agent)
454
+ * @returns Installation directory path
455
+ */
456
+ declare function getInstallDir(global?: boolean, agentType?: AgentType): string;
457
+ /**
458
+ * Save skill metadata to a skill directory
459
+ * @param skillDir - Directory containing the skill
460
+ * @param metadata - Metadata to save
461
+ */
462
+ declare function saveSkillMetadata(skillDir: string, metadata: SkillMetadata): void;
463
+ /**
464
+ * Get version from package.json
465
+ * @returns Version string
466
+ */
467
+ declare function getVersion(): string;
468
+
469
+ /**
470
+ * List navigation and pagination utilities
471
+ */
472
+ /**
473
+ * Calculate visible items for paginated list display
474
+ * Centers the selected item in the visible window
475
+ */
476
+ interface PaginationResult {
477
+ /** Starting index in the full list */
478
+ start: number;
479
+ /** Ending index (exclusive) in the full list */
480
+ end: number;
481
+ /** Number of items above the visible window */
482
+ itemsAbove: number;
483
+ /** Number of items below the visible window */
484
+ itemsBelow: number;
485
+ }
486
+ /**
487
+ * Calculate pagination for a list with a selected index
488
+ * @param totalItems - Total number of items in the list
489
+ * @param selectedIndex - Currently selected item index
490
+ * @param maxVisible - Maximum number of items to show at once
491
+ * @returns Pagination information
492
+ */
493
+ declare function calculatePagination(totalItems: number, selectedIndex: number, maxVisible: number): PaginationResult;
494
+ /**
495
+ * Move selection up in a list
496
+ * @param currentIndex - Current selected index
497
+ * @param minIndex - Minimum allowed index (default: 0)
498
+ * @returns New index after moving up
499
+ */
500
+ declare function moveUp(currentIndex: number, minIndex?: number): number;
501
+ /**
502
+ * Move selection down in a list
503
+ * @param currentIndex - Current selected index
504
+ * @param maxIndex - Maximum allowed index
505
+ * @returns New index after moving down
506
+ */
507
+ declare function moveDown(currentIndex: number, maxIndex: number): number;
508
+ /**
509
+ * Clamp an index within valid bounds
510
+ * @param index - Index to clamp
511
+ * @param listLength - Length of the list
512
+ * @returns Clamped index
513
+ */
514
+ declare function clampIndex(index: number, listLength: number): number;
515
+ /**
516
+ * Calculate max visible items based on available rows
517
+ * @param availableRows - Total available rows
518
+ * @param reservedRows - Rows reserved for headers, footers, etc.
519
+ * @param minVisible - Minimum visible items (default: 5)
520
+ * @returns Maximum visible items
521
+ */
522
+ declare function calculateMaxVisible(availableRows: number, reservedRows: number, minVisible?: number): number;
523
+
524
+ interface AgentGridProps {
525
+ maxVisible?: number;
526
+ showStatus?: boolean;
527
+ detectedAgents?: string[];
528
+ columns?: number;
529
+ }
530
+ declare function AgentGrid(props: AgentGridProps): any;
531
+
532
+ interface StatItem {
533
+ label: string;
534
+ value: number;
535
+ color?: keyof typeof terminalColors;
536
+ }
537
+ interface StatsCardProps {
538
+ items: StatItem[];
539
+ animated?: boolean;
540
+ }
541
+ declare function StatsCard(props: StatsCardProps): any;
14
542
 
15
543
  interface HeaderProps {
16
544
  title: string;
17
545
  subtitle?: string;
18
546
  count?: number;
547
+ badge?: string;
548
+ icon?: string;
19
549
  }
20
- declare function Header({ title, subtitle, count }: HeaderProps): react_jsx_runtime.JSX.Element;
550
+ declare function Header(props: HeaderProps): any;
21
551
 
22
- interface SkillItem {
23
- name: string;
24
- description?: string;
25
- source?: string;
26
- installs?: number;
27
- enabled?: boolean;
552
+ interface SidebarProps {
553
+ screen: Screen;
554
+ onNavigate: (screen: Screen) => void;
555
+ }
556
+ declare function Sidebar(props: SidebarProps): any;
557
+
558
+ interface RightSidebarProps {
559
+ width: number;
560
+ rows: number;
28
561
  }
562
+ declare function RightSidebar(props: RightSidebarProps): any;
563
+
564
+ interface BottomStatusBarProps {
565
+ currentScreen: Screen;
566
+ }
567
+ declare function BottomStatusBar(props: BottomStatusBarProps): any;
568
+
569
+ interface StatusBarProps {
570
+ message?: string;
571
+ messageType?: 'info' | 'success' | 'error' | 'warning';
572
+ shortcuts?: string;
573
+ }
574
+ declare function StatusBar(props: StatusBarProps): any;
575
+
29
576
  interface SkillListProps {
30
577
  skills: SkillItem[];
31
578
  selectedIndex: number;
32
- showInstalls?: boolean;
33
- showRank?: boolean;
34
- showSource?: boolean;
35
579
  maxVisible?: number;
580
+ onSelect?: (skill: SkillItem) => void;
36
581
  }
37
- declare function SkillList({ skills, selectedIndex, showInstalls, showRank, showSource, maxVisible, }: SkillListProps): react_jsx_runtime.JSX.Element;
582
+ declare function SkillList(props: SkillListProps): any;
38
583
 
39
- interface Shortcut {
584
+ interface SearchInputProps {
585
+ value: string;
586
+ placeholder?: string;
587
+ focused?: boolean;
588
+ onChange?: (value: string) => void;
589
+ }
590
+ declare function SearchInput(props: SearchInputProps): any;
591
+
592
+ interface SpinnerProps {
593
+ label?: string;
594
+ color?: keyof typeof terminalColors;
595
+ }
596
+ declare function Spinner(props: SpinnerProps): any;
597
+
598
+ interface ProgressBarProps {
599
+ progress: number;
600
+ width?: number;
601
+ showPercentage?: boolean;
602
+ color?: keyof typeof terminalColors;
603
+ }
604
+ declare function ProgressBar(props: ProgressBarProps): any;
605
+
606
+ interface Feature {
40
607
  key: string;
41
608
  label: string;
609
+ description: string;
610
+ color: keyof typeof terminalColors;
42
611
  }
43
- interface StatusBarProps {
44
- shortcuts: Shortcut[];
612
+ declare const FEATURES: Feature[];
613
+ interface FeatureListProps {
614
+ features?: Feature[];
615
+ }
616
+ declare function FeatureList(props: FeatureListProps): any;
617
+
618
+ interface SplashProps {
619
+ onComplete: () => void;
620
+ duration?: number;
621
+ }
622
+ declare function Splash(props: SplashProps): any;
623
+
624
+ /**
625
+ * SelectList Component
626
+ * Reusable list with j/k + mouse navigation
627
+ */
628
+ interface SelectListItem {
629
+ id: string;
630
+ label: string;
631
+ description?: string;
632
+ icon?: string;
633
+ meta?: string;
634
+ disabled?: boolean;
635
+ }
636
+ interface SelectListProps {
637
+ items: SelectListItem[];
638
+ selectedIndex: number;
639
+ hoveredIndex?: number | null;
640
+ onSelect?: (item: SelectListItem, index: number) => void;
641
+ onHover?: (index: number) => void;
642
+ maxVisible?: number;
643
+ showIndex?: boolean;
644
+ emptyText?: string;
645
+ compact?: boolean;
646
+ }
647
+ declare function SelectList(props: SelectListProps): any;
648
+
649
+ /**
650
+ * DetailPane Component
651
+ * Right-side detail panel with animated slide-in
652
+ */
653
+
654
+ interface DetailField {
655
+ label: string;
656
+ value: string | string[];
657
+ color?: string;
658
+ }
659
+ interface DetailPaneProps {
660
+ title: string;
661
+ subtitle?: string;
662
+ icon?: string;
663
+ fields?: DetailField[];
664
+ content?: string;
665
+ actions?: Array<{
666
+ key: string;
667
+ label: string;
668
+ }>;
669
+ width?: number;
670
+ visible?: boolean;
671
+ onClose?: () => void;
672
+ children?: JSX.Element;
673
+ }
674
+ declare function DetailPane(props: DetailPaneProps): any;
675
+
676
+ /**
677
+ * SplitPane Component
678
+ * Horizontal/vertical split layout
679
+ */
680
+
681
+ interface SplitPaneProps {
682
+ direction?: 'horizontal' | 'vertical';
683
+ primarySize?: number | string;
684
+ secondarySize?: number | string;
685
+ showDivider?: boolean;
686
+ dividerChar?: string;
687
+ primary: JSX.Element;
688
+ secondary?: JSX.Element;
689
+ gap?: number;
690
+ }
691
+ declare function SplitPane(props: SplitPaneProps): any;
692
+ interface ThreePaneLayoutProps {
693
+ left?: JSX.Element;
694
+ center: JSX.Element;
695
+ right?: JSX.Element;
696
+ leftWidth?: number;
697
+ rightWidth?: number;
698
+ showLeftDivider?: boolean;
699
+ showRightDivider?: boolean;
700
+ }
701
+ declare function ThreePaneLayout(props: ThreePaneLayoutProps): any;
702
+
703
+ /**
704
+ * EmptyState Component
705
+ * Consistent "no data" display
706
+ */
707
+ interface EmptyStateProps {
708
+ icon?: string;
709
+ title: string;
710
+ description?: string;
711
+ action?: {
712
+ label: string;
713
+ key?: string;
714
+ };
715
+ compact?: boolean;
716
+ }
717
+ declare function EmptyState(props: EmptyStateProps): any;
718
+ interface LoadingStateProps {
45
719
  message?: string;
720
+ compact?: boolean;
46
721
  }
47
- declare function StatusBar({ shortcuts, message }: StatusBarProps): react_jsx_runtime.JSX.Element;
722
+ declare function LoadingState(props: LoadingStateProps): any;
723
+ interface ErrorStateProps {
724
+ title?: string;
725
+ message: string;
726
+ action?: {
727
+ label: string;
728
+ key?: string;
729
+ };
730
+ compact?: boolean;
731
+ }
732
+ declare function ErrorState(props: ErrorStateProps): any;
48
733
 
49
- interface SearchInputProps {
734
+ /**
735
+ * StatusIndicator Component
736
+ * Loading/success/error/warning indicator
737
+ */
738
+ type StatusType = 'loading' | 'success' | 'error' | 'warning' | 'info' | 'pending';
739
+ interface StatusIndicatorProps {
740
+ status: StatusType;
741
+ label?: string;
742
+ showLabel?: boolean;
743
+ size?: 'sm' | 'md' | 'lg';
744
+ animated?: boolean;
745
+ }
746
+ declare function StatusIndicator(props: StatusIndicatorProps): any;
747
+ interface InlineStatusProps {
748
+ status: StatusType;
749
+ compact?: boolean;
750
+ }
751
+ declare function InlineStatus(props: InlineStatusProps): any;
752
+ interface StatusBadgeProps {
753
+ status: StatusType;
754
+ label: string;
755
+ }
756
+ declare function StatusBadge(props: StatusBadgeProps): any;
757
+
758
+ /**
759
+ * CodeBlock Component
760
+ * Basic syntax highlighting for code display
761
+ */
762
+ interface CodeBlockProps {
763
+ code: string;
764
+ language?: string;
765
+ showLineNumbers?: boolean;
766
+ maxLines?: number;
767
+ highlightLines?: number[];
768
+ title?: string;
769
+ }
770
+ declare function CodeBlock(props: CodeBlockProps): any;
771
+ interface InlineCodeProps {
772
+ children: string;
773
+ }
774
+ declare function InlineCode(props: InlineCodeProps): any;
775
+
776
+ /**
777
+ * FormField Component
778
+ * Input with label and validation
779
+ */
780
+ interface FormFieldProps {
781
+ label: string;
782
+ value: string;
783
+ placeholder?: string;
784
+ error?: string;
785
+ hint?: string;
786
+ required?: boolean;
787
+ disabled?: boolean;
788
+ focused?: boolean;
789
+ type?: 'text' | 'password' | 'search';
790
+ width?: number;
791
+ }
792
+ declare function FormField(props: FormFieldProps): any;
793
+ interface TextAreaFieldProps {
794
+ label: string;
50
795
  value: string;
51
- onChange: (value: string) => void;
52
796
  placeholder?: string;
797
+ error?: string;
798
+ rows?: number;
799
+ width?: number;
800
+ focused?: boolean;
801
+ }
802
+ declare function TextAreaField(props: TextAreaFieldProps): any;
803
+ interface SelectFieldProps {
804
+ label: string;
805
+ value: string;
806
+ options: Array<{
807
+ value: string;
808
+ label: string;
809
+ }>;
810
+ focused?: boolean;
811
+ expanded?: boolean;
812
+ selectedOptionIndex?: number;
813
+ }
814
+ declare function SelectField(props: SelectFieldProps): any;
815
+
816
+ /**
817
+ * ErrorBoundary Component
818
+ * Catch and display errors gracefully
819
+ */
820
+
821
+ interface ErrorBoundaryProps {
822
+ children: JSX.Element;
823
+ fallback?: JSX.Element | ((error: Error, reset: () => void) => JSX.Element);
824
+ onError?: (error: Error) => void;
825
+ }
826
+ declare function ErrorBoundary(props: ErrorBoundaryProps): any;
827
+ interface TryProps {
828
+ children: JSX.Element;
829
+ catch?: JSX.Element;
830
+ }
831
+ declare function Try(props: TryProps): any;
832
+
833
+ /**
834
+ * Button Component
835
+ * Clickable button with hover/active states
836
+ */
837
+ type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger';
838
+ type ButtonSize = 'sm' | 'md' | 'lg';
839
+ interface ButtonProps {
840
+ label: string;
841
+ shortcut?: string;
842
+ icon?: string;
843
+ variant?: ButtonVariant;
844
+ size?: ButtonSize;
845
+ disabled?: boolean;
846
+ focused?: boolean;
847
+ pressed?: boolean;
848
+ hovered?: boolean;
849
+ onClick?: () => void;
850
+ }
851
+ declare function Button(props: ButtonProps): any;
852
+ interface ButtonGroupProps {
853
+ buttons: Array<{
854
+ id: string;
855
+ label: string;
856
+ shortcut?: string;
857
+ icon?: string;
858
+ variant?: ButtonVariant;
859
+ disabled?: boolean;
860
+ onClick?: () => void;
861
+ }>;
862
+ selectedId?: string;
863
+ focusedId?: string;
864
+ direction?: 'horizontal' | 'vertical';
865
+ gap?: number;
866
+ }
867
+ declare function ButtonGroup(props: ButtonGroupProps): any;
868
+ interface IconButtonProps {
869
+ icon: string;
870
+ label?: string;
871
+ disabled?: boolean;
872
+ focused?: boolean;
873
+ hovered?: boolean;
874
+ onClick?: () => void;
875
+ }
876
+ declare function IconButton(props: IconButtonProps): any;
877
+
878
+ /**
879
+ * Clickable Component
880
+ * Wrapper to make any element clickable with hover effects
881
+ */
882
+
883
+ interface ClickableProps {
884
+ children: JSX.Element;
885
+ onClick?: () => void;
886
+ onDoubleClick?: () => void;
887
+ onRightClick?: () => void;
888
+ disabled?: boolean;
889
+ hovered?: boolean;
890
+ pressed?: boolean;
891
+ focusable?: boolean;
892
+ focused?: boolean;
893
+ cursor?: string;
894
+ hoverEffect?: 'highlight' | 'underline' | 'pointer' | 'none';
895
+ }
896
+ declare function Clickable(props: ClickableProps): any;
897
+ interface ClickableTextProps {
898
+ children: string;
899
+ onClick?: () => void;
900
+ disabled?: boolean;
901
+ hovered?: boolean;
902
+ color?: string;
903
+ hoverColor?: string;
904
+ underlineOnHover?: boolean;
905
+ }
906
+ declare function ClickableText(props: ClickableTextProps): any;
907
+ interface ClickableRowProps {
908
+ children: JSX.Element;
909
+ selected?: boolean;
910
+ hovered?: boolean;
911
+ disabled?: boolean;
912
+ showIndicator?: boolean;
913
+ indicatorChar?: string;
914
+ onClick?: () => void;
915
+ }
916
+ declare function ClickableRow(props: ClickableRowProps): any;
917
+ interface InteractiveAreaProps {
918
+ children: JSX.Element;
919
+ x?: number;
920
+ y?: number;
921
+ width?: number;
922
+ height?: number;
923
+ onMouseOver?: () => void;
924
+ onMouseOut?: () => void;
925
+ onClick?: () => void;
926
+ onMouseDown?: () => void;
927
+ onMouseUp?: () => void;
928
+ }
929
+ declare function InteractiveArea(props: InteractiveAreaProps): any;
930
+
931
+ /**
932
+ * HoverHighlight Component
933
+ * Hover highlight effect for list items and buttons
934
+ * Note: Terminal background colors are limited, so we use text color changes for highlighting
935
+ */
936
+
937
+ interface HoverHighlightProps {
938
+ children: JSX.Element;
939
+ isHovered?: boolean;
940
+ isSelected?: boolean;
941
+ isDisabled?: boolean;
942
+ highlightColor?: string;
943
+ selectedColor?: string;
944
+ transitionMs?: number;
945
+ }
946
+ declare function HoverHighlight(props: HoverHighlightProps): any;
947
+ interface HighlightableListItemProps {
948
+ children: JSX.Element;
949
+ index: number;
950
+ selectedIndex?: number;
951
+ hoveredIndex?: number | null;
952
+ showPrefix?: boolean;
953
+ prefixWidth?: number;
954
+ }
955
+ declare function HighlightableListItem(props: HighlightableListItemProps): any;
956
+ interface FocusRingProps {
957
+ children: JSX.Element;
53
958
  isFocused?: boolean;
959
+ ringColor?: string;
54
960
  }
55
- declare function SearchInput({ value, onChange, placeholder, isFocused, }: SearchInputProps): react_jsx_runtime.JSX.Element;
961
+ declare function FocusRing(props: FocusRingProps): any;
962
+ interface PressEffectProps {
963
+ children: JSX.Element;
964
+ isPressed?: boolean;
965
+ pressColor?: string;
966
+ }
967
+ declare function PressEffect(props: PressEffectProps): any;
968
+
969
+ /**
970
+ * AnimatedText Component
971
+ * Text with fade/slide animations
972
+ */
973
+ interface AnimatedTextProps {
974
+ text: string;
975
+ animation?: 'fadeIn' | 'typewriter' | 'scramble' | 'countUp' | 'none';
976
+ duration?: number;
977
+ delay?: number;
978
+ color?: string;
979
+ onComplete?: () => void;
980
+ }
981
+ declare function AnimatedText(props: AnimatedTextProps): any;
982
+ interface CountUpTextProps {
983
+ value: number;
984
+ duration?: number;
985
+ delay?: number;
986
+ prefix?: string;
987
+ suffix?: string;
988
+ color?: string;
989
+ formatter?: (value: number) => string;
990
+ }
991
+ declare function CountUpText(props: CountUpTextProps): any;
992
+ interface BlinkingTextProps {
993
+ text: string;
994
+ interval?: number;
995
+ color?: string;
996
+ blinkColor?: string;
997
+ }
998
+ declare function BlinkingText(props: BlinkingTextProps): any;
999
+ interface PulsingTextProps {
1000
+ text: string;
1001
+ color?: string;
1002
+ pulseColor?: string;
1003
+ interval?: number;
1004
+ }
1005
+ declare function PulsingText(props: PulsingTextProps): any;
1006
+
1007
+ /**
1008
+ * TabBar Component
1009
+ * Clickable tab navigation
1010
+ */
1011
+ interface Tab {
1012
+ id: string;
1013
+ label: string;
1014
+ icon?: string;
1015
+ badge?: string | number;
1016
+ disabled?: boolean;
1017
+ }
1018
+ interface TabBarProps {
1019
+ tabs: Tab[];
1020
+ activeId: string;
1021
+ hoveredId?: string | null;
1022
+ onSelect?: (id: string) => void;
1023
+ variant?: 'default' | 'pills' | 'underline';
1024
+ size?: 'sm' | 'md' | 'lg';
1025
+ showShortcuts?: boolean;
1026
+ }
1027
+ declare function TabBar(props: TabBarProps): any;
1028
+ interface VerticalTabBarProps {
1029
+ tabs: Tab[];
1030
+ activeId: string;
1031
+ hoveredId?: string | null;
1032
+ onSelect?: (id: string) => void;
1033
+ width?: number;
1034
+ }
1035
+ declare function VerticalTabBar(props: VerticalTabBarProps): any;
1036
+
1037
+ /**
1038
+ * Breadcrumb Component
1039
+ * Clickable breadcrumb navigation
1040
+ */
1041
+ interface BreadcrumbItem {
1042
+ id: string;
1043
+ label: string;
1044
+ icon?: string;
1045
+ }
1046
+ interface BreadcrumbProps {
1047
+ items: BreadcrumbItem[];
1048
+ separator?: string;
1049
+ hoveredId?: string | null;
1050
+ onNavigate?: (id: string) => void;
1051
+ }
1052
+ declare function Breadcrumb(props: BreadcrumbProps): any;
1053
+ interface PathBreadcrumbProps {
1054
+ path: string;
1055
+ separator?: string;
1056
+ maxSegments?: number;
1057
+ hoveredSegment?: number | null;
1058
+ onNavigate?: (path: string, segmentIndex: number) => void;
1059
+ }
1060
+ declare function PathBreadcrumb(props: PathBreadcrumbProps): any;
1061
+ interface NavigationTrailProps {
1062
+ items: Array<{
1063
+ screen: string;
1064
+ label: string;
1065
+ }>;
1066
+ currentIndex: number;
1067
+ hoveredIndex?: number | null;
1068
+ }
1069
+ declare function NavigationTrail(props: NavigationTrailProps): any;
56
1070
 
57
1071
  interface HomeProps {
58
1072
  onNavigate: (screen: Screen) => void;
59
1073
  cols?: number;
60
1074
  rows?: number;
61
1075
  }
62
- declare function Home({ cols, rows }: HomeProps): react_jsx_runtime.JSX.Element;
1076
+ declare function Home(props: HomeProps): any;
63
1077
 
64
- interface Props$f {
1078
+ interface BrowseProps {
1079
+ onNavigate: (screen: Screen) => void;
65
1080
  cols?: number;
66
1081
  rows?: number;
67
1082
  }
68
- declare function Browse({ rows }: Props$f): react_jsx_runtime.JSX.Element;
1083
+ declare function Browse(props: BrowseProps): any;
69
1084
 
70
- interface Props$e {
1085
+ interface InstalledProps {
1086
+ onNavigate: (screen: Screen) => void;
71
1087
  cols?: number;
72
1088
  rows?: number;
73
1089
  }
74
- declare function Installed({ rows }: Props$e): react_jsx_runtime.JSX.Element;
1090
+ declare function Installed(props: InstalledProps): any;
75
1091
 
76
- interface Props$d {
1092
+ interface MarketplaceProps {
1093
+ onNavigate: (screen: Screen) => void;
77
1094
  cols?: number;
78
1095
  rows?: number;
79
1096
  }
80
- declare function Sync({ rows }: Props$d): react_jsx_runtime.JSX.Element;
1097
+ declare function Marketplace(props: MarketplaceProps): any;
81
1098
 
82
- interface Props$c {
1099
+ interface RecommendProps {
1100
+ onNavigate: (screen: Screen) => void;
83
1101
  cols?: number;
84
1102
  rows?: number;
85
1103
  }
86
- declare function Settings(_props: Props$c): react_jsx_runtime.JSX.Element;
1104
+ declare function Recommend(props: RecommendProps): any;
87
1105
 
88
- interface Props$b {
1106
+ interface TranslateProps {
1107
+ onNavigate: (screen: Screen) => void;
89
1108
  cols?: number;
90
1109
  rows?: number;
91
1110
  }
92
- declare function Recommend({ rows }: Props$b): react_jsx_runtime.JSX.Element;
1111
+ declare function Translate(props: TranslateProps): any;
93
1112
 
94
- interface Props$a {
1113
+ interface ContextProps {
1114
+ onNavigate: (screen: Screen) => void;
95
1115
  cols?: number;
96
1116
  rows?: number;
97
1117
  }
98
- declare function Translate({ rows }: Props$a): react_jsx_runtime.JSX.Element;
1118
+ declare function Context(props: ContextProps): any;
99
1119
 
100
- interface Props$9 {
1120
+ interface SyncProps {
1121
+ onNavigate: (screen: Screen) => void;
101
1122
  cols?: number;
102
1123
  rows?: number;
103
1124
  }
104
- declare function Context({ rows }: Props$9): react_jsx_runtime.JSX.Element;
1125
+ declare function Sync(props: SyncProps): any;
105
1126
 
106
- interface Props$8 {
1127
+ interface MemoryProps {
1128
+ onNavigate: (screen: Screen) => void;
107
1129
  cols?: number;
108
1130
  rows?: number;
109
1131
  }
110
- declare function Memory({ rows }: Props$8): react_jsx_runtime.JSX.Element;
1132
+ declare function Memory(props: MemoryProps): any;
111
1133
 
112
- interface Props$7 {
1134
+ interface WorkflowProps {
1135
+ onNavigate: (screen: Screen) => void;
113
1136
  cols?: number;
114
1137
  rows?: number;
115
1138
  }
116
- declare function Workflow({ rows }: Props$7): react_jsx_runtime.JSX.Element;
1139
+ declare function Workflow(props: WorkflowProps): any;
117
1140
 
118
- interface Props$6 {
1141
+ interface ExecuteProps {
1142
+ onNavigate: (screen: Screen) => void;
119
1143
  cols?: number;
120
1144
  rows?: number;
121
1145
  }
122
- declare function Execute({ rows }: Props$6): react_jsx_runtime.JSX.Element;
1146
+ declare function Execute(props: ExecuteProps): any;
123
1147
 
124
- interface Props$5 {
1148
+ interface HistoryProps {
1149
+ onNavigate: (screen: Screen) => void;
125
1150
  cols?: number;
126
1151
  rows?: number;
127
1152
  }
128
- declare function History({ rows }: Props$5): react_jsx_runtime.JSX.Element;
1153
+ declare function History(props: HistoryProps): any;
129
1154
 
130
- interface Props$4 {
1155
+ interface TeamProps {
1156
+ onNavigate: (screen: Screen) => void;
131
1157
  cols?: number;
132
1158
  rows?: number;
133
1159
  }
134
- declare function Marketplace({ rows }: Props$4): react_jsx_runtime.JSX.Element;
1160
+ declare function Team(props: TeamProps): any;
135
1161
 
136
- interface Props$3 {
1162
+ interface PluginsProps {
1163
+ onNavigate: (screen: Screen) => void;
137
1164
  cols?: number;
138
1165
  rows?: number;
139
1166
  }
140
- declare function Team({ rows }: Props$3): react_jsx_runtime.JSX.Element;
1167
+ declare function Plugins(props: PluginsProps): any;
141
1168
 
142
- interface Props$2 {
1169
+ interface MethodologyProps {
1170
+ onNavigate: (screen: Screen) => void;
143
1171
  cols?: number;
144
1172
  rows?: number;
145
1173
  }
146
- declare function Plugins({ rows }: Props$2): react_jsx_runtime.JSX.Element;
1174
+ declare function Methodology(props: MethodologyProps): any;
147
1175
 
148
- interface Props$1 {
1176
+ interface PlanProps {
1177
+ onNavigate: (screen: Screen) => void;
149
1178
  cols?: number;
150
1179
  rows?: number;
151
1180
  }
152
- declare function Methodology({ rows }: Props$1): react_jsx_runtime.JSX.Element;
1181
+ declare function Plan(props: PlanProps): any;
153
1182
 
154
- interface Props {
1183
+ interface SettingsProps {
1184
+ onNavigate: (screen: Screen) => void;
155
1185
  cols?: number;
156
1186
  rows?: number;
157
1187
  }
158
- declare function Plan({ rows }: Props): react_jsx_runtime.JSX.Element;
1188
+ declare function Settings(props: SettingsProps): any;
159
1189
 
160
- interface UseSkillsResult {
161
- skills: SkillItem[];
162
- loading: boolean;
163
- error: string | null;
164
- refresh: () => void;
165
- remove: (name: string) => Promise<void>;
1190
+ interface HelpProps {
1191
+ onNavigate: (screen: Screen) => void;
1192
+ cols?: number;
1193
+ rows?: number;
166
1194
  }
167
- declare function useSkills(): UseSkillsResult;
1195
+ declare function Help(props: HelpProps): any;
168
1196
 
169
- interface RepoInfo {
170
- source: string;
171
- name: string;
172
- }
173
- interface UseMarketplaceResult {
174
- skills: SkillItem[];
175
- loading: boolean;
176
- error: string | null;
177
- totalCount: number;
178
- repos: RepoInfo[];
179
- currentRepo: string | null;
180
- failedRepos: string[];
181
- refresh: () => void;
182
- search: (query: string) => void;
183
- fetchRepo: (source: string) => Promise<void>;
184
- fetchAllRepos: () => Promise<void>;
185
- }
186
- declare function useMarketplace(): UseMarketplaceResult;
187
-
188
- interface UseKeyboardOptions {
189
- onNavigate?: (screen: Screen) => void;
190
- onSelect?: () => void;
191
- onSearch?: () => void;
192
- onInstall?: () => void;
193
- onBack?: () => void;
194
- onUp?: () => void;
195
- onDown?: () => void;
196
- disabled?: boolean;
1197
+ interface MeshProps {
1198
+ onNavigate: (screen: Screen) => void;
1199
+ cols?: number;
1200
+ rows?: number;
197
1201
  }
198
- declare function useKeyboard(options?: UseKeyboardOptions): void;
199
- declare function useListNavigation(listLength: number, initialIndex?: number): {
200
- selectedIndex: number;
201
- setSelectedIndex: react.Dispatch<react.SetStateAction<number>>;
202
- moveUp: () => void;
203
- moveDown: () => void;
204
- reset: () => void;
205
- };
1202
+ declare function Mesh(props: MeshProps): any;
206
1203
 
207
- interface UseRecommendResult {
208
- recommendations: ScoredSkill[];
209
- profile: ProjectProfile | null;
210
- loading: boolean;
211
- error: string | null;
212
- totalScanned: number;
213
- indexStatus: 'missing' | 'stale' | 'fresh';
214
- refresh: () => void;
215
- updateIndex: () => void;
216
- search: (query: string) => void;
217
- searchResults: ScoredSkill[];
218
- }
219
- declare function useRecommend(projectPath?: string): UseRecommendResult;
220
-
221
- interface UseMemoryResult {
222
- learnings: Learning[];
223
- observations: Observation[];
224
- status: MemoryStatus | null;
225
- loading: boolean;
226
- error: string | null;
227
- isGlobal: boolean;
228
- setIsGlobal: (isGlobal: boolean) => void;
229
- refresh: () => void;
230
- search: (query: string) => Learning[];
231
- deleteLearning: (id: string) => boolean;
232
- deleteObservation: (id: string) => boolean;
1204
+ interface MessageProps {
1205
+ onNavigate: (screen: Screen) => void;
1206
+ cols?: number;
1207
+ rows?: number;
233
1208
  }
234
- declare function useMemory(): UseMemoryResult;
235
-
236
- declare const colors: {
237
- primary: string;
238
- secondary: string;
239
- secondaryDim: string;
240
- success: string;
241
- danger: string;
242
- warning: string;
243
- background: string;
244
- borderDim: string;
245
- };
246
- declare const symbols: {
247
- pointer: string;
248
- bullet: string;
249
- checkboxOn: string;
250
- checkboxOff: string;
251
- check: string;
252
- star: string;
253
- spinner: string[];
254
- arrowUp: string;
255
- arrowDown: string;
256
- success: string;
257
- error: string;
258
- warning: string;
259
- info: string;
260
- };
261
- declare const logo = "\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\n\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u255D\u2588\u2588\u2551\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551 \u2588\u2588\u2551\n\u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\n\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\n";
1209
+ declare function Message(props: MessageProps): any;
262
1210
 
263
- declare function startTUI(): Promise<void>;
1211
+ declare function exitTUI(code?: number): void;
1212
+ declare function startTUI(): Promise<never>;
264
1213
 
265
- export { App, Browse, Context, Execute, Header, History, Home, Installed, Marketplace, Memory, Methodology, Plan, Plugins, Recommend, type Screen, SearchInput, Settings, Sidebar, type SkillItem, SkillList, StatusBar, Sync, Team, Translate, Workflow, colors, logo, startTUI, symbols, useKeyboard, useListNavigation, useMarketplace, useMemory, useRecommend, useSkills };
1214
+ export { AGENT_LOGOS, AgentGrid, type AgentLogo, type AgentStatus, type AgentsState, AnimatedText, type AnimationPreset, App, BlinkingText, BottomStatusBar, Breadcrumb, type BreadcrumbItem, Browse, Button, ButtonGroup, type ButtonSize, type ButtonVariant, Clickable, ClickableRow, ClickableText, CodeBlock, type ColorName, type ColorValue, Context, CountUpText, DEFAULT_REPOS, DEFAULT_SCRAMBLE_CONFIG, type DetailField, DetailPane, type EasingFunction, EmptyState, ErrorBoundary, ErrorState, Execute, FEATURES, type Feature, FeatureList, type FetchedSkill, FocusRing, FormField, Header, Help, HighlightableListItem, History, Home, HoverHighlight, IconButton, InlineCode, InlineStatus, Installed, InteractiveArea, LoadingState, Marketplace, type MarketplaceState, Memory, Mesh, Message, Methodology, NAV_KEYS, type NavigationState, NavigationTrail, type PaginationResult, PathBreadcrumb, Plan, Plugins, PressEffect, ProgressBar, PulsingText, Recommend, type RepoInfo, RightSidebar, SCRAMBLE_CHARS, SIDEBAR_NAV, STATUS_BAR_SHORTCUTS, type ScrambleConfig, type Screen, type ScreenMeta, SearchInput, SelectField, SelectList, type SelectListItem, Settings, Sidebar, type SidebarSection, type SkillItem, SkillList, type SkillWithDetails, type SkillsState, Spinner, Splash, SplitPane, StatsCard, StatusBadge, StatusBar, StatusIndicator, type StatusType, type SymbolName, Sync, TOTAL_AGENTS, type Tab, TabBar, Team, TextAreaField, ThreePaneLayout, Translate, Try, VerticalTabBar, Workflow, animations, calculateMaxVisible, calculatePagination, clampIndex, cleanupTempRoot, colors, createAgentsState, createMarketplaceState, createNavigationState, createSkillsState, exitTUI, fetchRepoSkills, filterMarketplaceSkills, filterSkills, formatAgentDisplay, getAgentAdapter, getAgentLogo, getAgentTypes, getColor, getDetectedAgentCount, getDetectedAgents, getInstallDir, getMarketplaceRepos, getScreenFromKey, getSearchDirs, getStaggerDelay, getVersion, goBack, isNavKey, loadAgents, loadSkills, loadSkillsWithDetails, moveDown, moveUp, navigateTo, readSkillDescription, removeSkill, saveSkillMetadata, scrambleText, sortSkillsByName, startTUI, symbols, terminalColors, toSkillItems };